Und es funktioniert tatsächlich.

Vielen Dank für eure Hilfe

Jetz weiß ich wie ich Werte verändern kann und eigene Routinen einbauen kann.
Noch ne Frage:
Ich lese immer wieder in Tutorials "db", was genau bedeutet das?
Soo,
also ich hab nun meine Werte und würde sie jetzt gerne in die StatusBar einbauen.
Hab dazu
diesen Thread gefunden.
Wie funktioniert das also, wenn die HP in der oberen Zeile neben "Mario" und MP genau darunter stehen soll? (Sternenpunkte und Yoshi Coins sollen also weg)
Funktioniert das dann auch mit Werten mit Hundertern?
Sry dass ich diese dummen Fragen stelle D:
Okay, ich werds gleich mal versuchen, vorher aber nochmal...:
Code
org $008F7E ;Write Coins
JSL MaxMP ;
NOP #2 ;
org $098020 ;Freespace
MaxMP:
STA $0F14 ;\Restore Hacked Bytes
STX $0F13 ;/
LDA $70036F ;Load Max MP from RAM
PHX ;X on Stack
JSL $00974C ;Hex -> Dec Routine
STA $7EE0F1+1 ;|Draw firsts
STX $7EE0F1 ;|draw tenths
PLX ;/X from Stack
RTL ;
Ob das so richtig ist?
Angezeigt wird jedenfalls nix in der Status Bar. (Übrigens, wenn ich die Counter in Status Effect lösche, startet das Spiel nicht, Musik läuft aber Bildschirm bleibt schwarz)
Was ich mich auch frage ist, ob das
CodeSTA $7EE0F1+1 ;|Draw firsts
STX $7EE0F1 ;|draw tenths
überhaupt richtig ist.
So sieht ja das Bild mit den Adressen aus

Weil ich hab keine Ahnung was ich da eigentlich eingeben muss xD
Die Max MP soll unten links da wo E und F sind stehen.
Ich hatte im Code sogar Labels, hab nur vergessen sie wieder einzufügen xD
ZitatZumindest hast du jeweils ein E zu viel.
Naja aber wie krieg ich denn die genaue Position?
Deswegen dieses E, oder nicht?
ZitatAber was ist mit LDA $70036F? Willst du tatsächlich den SRAM dafür benutzen?
Naja SRAM wird ja direkt gespeichert, also wieso nicht. Es sei denn es hat nen gravierenden Nachteil...
Aber mindestens die Max Werte muss ich in den SRAM packen, sonst sind die Werte bei jedem Spielstart auf die Initialwerte gesetzt was nicht sein soll.
Dann werd ich erstmal nur den RAM verwenden.
Spoiler anzeigenCodeheader
lorom
;-----------------------------------------------------------------------
!MaxHP = $700366
!MaxMP = $70036F
!HPRAM = $7E0F42
!MPRAM = $7E0DA1
org $009E35 ;Routine for Powerups at Gamestart
JSL Initialization ;
NOP #1 ;
org $098000 ;Freespace
Initialization: ;Replace with Routine which gives HP and MP Start Values
STZ $19 ;\Restore Hacked Bytes
STZ $0DC2 ;/
LDA #50 ;\Current HP
STA !HPRAM ;/
LDA #50 ;\Maximum HP
STA !MaxHP ;/
LDA #10 ;\Current MP
STA !MPRAM ;/
LDA #10 ;\Maximum MP
STA !MaxMP ;/
RTL
;------------------------------------------------------------------------
org $008F7E ;write Coins
JSL DrawMP ;
NOP #2 ;
org $098020 ;Freespace
DrawMP:
STA $0F14 ;\Restore Hacked Bytes
STX $0F13 ;/
LDA !MPRAM ;|Load MP from RAM
PHX ;|X on Stack
JSL $00974C ;|Hex -> Dec Routine
STA $7E0F1B+1 ;|Draw firsts
STX $7E0F1B ;|draw tenths
PLX ;/X from Stack
RTL ;
;------------------------------------------------------------------------
org $008F7E ;Write Coins
JSL MaxMP ;
NOP #2 ;
org $098030 ;Freespace
MaxMP:
STA $0F14 ;\Restore Hacked Bytes
STX $0F13 ;/
LDA !MaxMP ;Load Max MP from RAM
PHX ;X on Stack
JSL $00974C ;Hex -> Dec Routine
STA $7E0F1E+1 ;|Draw firsts
STX $7E0F1E ;|draw tenths
PLX ;/X from Stack
RTL ;
;------------------------------------------------------------------------
org $008F7E ;Write Coins
JSL drawHP ;
NOP #2 ;
org $098040 ;Freespace
drawHP:
STA $0F14 ;\Restore Hacked Bytes
STX $0F13 ;/
LDA !HPRAM ;
JSL $00974C ; Hex -> Dec Routine
STA $7E0EFE+2 ;draw ones
TXA ; X->A
JSL $00974C ; Hex -> Dec Routine
STA $7E0EE2+1 ;draw tenths
STX $7E0EE2 ;draw hundeds
RTL ;
;------------------------------------------------------------------------
org $008F7E ;Write Coins
JSL MaxHP ;
NOP #2 ;
org $098050 ;Freespace
MaxHP:
STA $0F14 ;\Restore Hacked Bytes
STX $0F13 ;/
LDA $MaxHP ;
JSL $00974C ; Hex -> Dec Routine
STA $7E0EF2+2 ;draw ones
TXA ; X->A
JSL $00974C ; Hex -> Dec Routine
STA $7E0EF2+1 ;draw tenths
STX $7E0EF2 ;draw hundeds
RTL ;
;------------------------------------------------------------------------
Das ist jetzt mein gesamter Patch.
Zwischenzeitlich hat er mal die Current MP angezeigt, aber hab dann den Freespace angepasst und jetzt gehts nicht mehr.
Freespace war richtig, hab aber mal ne andere Adresse genommen.
Codeheader
lorom
;-----------------------------------------------------------------------
!MaxHP = $700366
!MaxMP = $70036F
!HPRAM = $7E0F42
!MPRAM = $7E0DA1
!Freespace = $090200
org $009E35 ;Routine for Powerups at Gamestart
JSL Initialization
NOP #1
org $008F7E ;write Coins
JSL Statusbar ;
NOP #2
org !Freespace ;Freespace
;------------------------------------------------------------------------
Initialization: ;Replace with Routine which gives HP and MP Start Values
STZ $19 ;\Restore Hacked Bytes
STZ $0DC2 ;/
LDA #50 ;\Current HP
STA !HPRAM ;/
LDA #50 ;\Maximum HP
STA !MaxHP ;/
LDA #10 ;\Current MP
STA !MPRAM ;/
LDA #10 ;\Maximum MP
STA !MaxMP ;/
RTL
;------------------------------------------------------------------------
Statusbar:
STA $0F14 ;\Restore Hacked Bytes
STX $0F13 ;/
LDA !MPRAM ;Load MP from RAM
PHX ;X on Stack
JSL $00974C ;Hex -> Dec Routine
STA $7E0F1B+1 ;Draw firsts
STX $7E0F1B ;draw tenths
PLX ;X from Stack
LDA !MaxMP ;Load Max MP from RAM
PHX ;X on Stack
JSL $00974C ;Hex -> Dec Routine
STA $7E0F1E+1 ;Draw firsts
STX $7E0F1E ;draw tenths
PLX ;X from Stack
LDA !HPRAM ;Load HP from RAM
JSL $00974C ;Hex -> Dec Routine
STA $7E0EFE+2 ;draw ones
TXA ;X->A
JSL $00974C ;Hex -> Dec Routine
STA $7E0EE2+1 ;draw tenths
STX $7E0EE2 ;draw hundeds
LDA !MaxHP ;Load Max HP from RAM
JSL $00974C ;Hex -> Dec Routine
STA $7E0EF2+2 ;draw ones
TXA ;X->A
JSL $00974C ;Hex -> Dec Routine
STA $7E0EF2+1 ;draw tenths
STX $7E0EF2 ;draw hundeds
RTL
;------------------------------------------------------------------------
Jetzt crasht es allerdings beim Spielstart.(Klick auf 1 Player Game)
HUch, tatsächlich

Hab jetzt soweit noch 2 Probleme.
1. Die großen Bonusstars sind noch da und scheinen den Wert der Max MP anzunehmen (stehen nämlich auf 10)
Da ich wie gesagt Status Effect nicht benutzen kann (weils zu einem Schwarzbildschirm führt), muss ich nach ner Routine suchen die die Bonus Stars anzeigt, aber ich finde keine.
2. Die Current HP zeigen nur eine 0. (wahrscheinlich von der 50?,der wert ist laut Debugger aber richtig auf 50)
wie das mit den Max HP aussieht weiß ich nicht, die werden wohl von den nicht anwesenden Yoshi Coins und den Bonusstars verdeckt, auch hier finde ich keine Routine die die Yoshi Coins anzeigt.
Funktioniert jetzt auch x)
Vielen Dank für eure Hilfe,
ich denk mal den Rest sollte ich jetzt auch so hinkriegen.