Beiträge von Wischmop

geschrieben am 04.09.2012 15:28:24 in Allgemeine Hex- und ASM-Fragen
( Link )
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?
geschrieben am 08.09.2012 9:01:22 in Die deutsche Skype SMW Konfi!
( Link )
funkyboy300
geschrieben am 08.09.2012 10:36:10 in Allgemeine Hex- und ASM-Fragen
( Link )
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)
geschrieben am 08.09.2012 14:08:42 in Allgemeine Hex- und ASM-Fragen
( Link )
Funktioniert das dann auch mit Werten mit Hundertern?
Sry dass ich diese dummen Fragen stelle D:
geschrieben am 09.09.2012 8:58:29 in Allgemeine Hex- und ASM-Fragen
( Link )
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
Code
STA $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.
geschrieben am 09.09.2012 9:41:29 in Allgemeine Hex- und ASM-Fragen
( Link )
Ich hatte im Code sogar Labels, hab nur vergessen sie wieder einzufügen xD
Zitat
Zumindest hast du jeweils ein E zu viel.

Naja aber wie krieg ich denn die genaue Position?
Deswegen dieses E, oder nicht?

Zitat
Aber 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...
geschrieben am 09.09.2012 10:29:34 in Allgemeine Hex- und ASM-Fragen
( Link )
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.
geschrieben am 09.09.2012 10:47:15 in Allgemeine Hex- und ASM-Fragen
( Link )
Dann werd ich erstmal nur den RAM verwenden.

Spoiler anzeigen
Code
header
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.
geschrieben am 09.09.2012 11:59:58 in Allgemeine Hex- und ASM-Fragen
( Link )
Freespace war richtig, hab aber mal ne andere Adresse genommen.
Code
header
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)
geschrieben am 09.09.2012 12:29:47 in Allgemeine Hex- und ASM-Fragen
( Link )
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.
geschrieben am 09.09.2012 12:53:16 in Allgemeine Hex- und ASM-Fragen
( Link )
Funktioniert jetzt auch x)
Vielen Dank für eure Hilfe,
ich denk mal den Rest sollte ich jetzt auch so hinkriegen.