Die folgende Routine ist meine erste (größtenteils) selbsterstellte, also seid bitte gnädig
Code
- .text
- .align 2
- .thumb
- .thumb_func
- main:
- ldr r1, [r2] @von hier
- ldrb r2,[r1,#4]
- add r2,#0x32
- lsl r2,r2,#0x18
- lsr r2,r2,#0x18
- push {r0-r3}
- ldr r0, =(0x0203B140)
- ldr r0, [r0]
- ldr r2, =(0x3290)
- add r0, r0, r2
- mov r1, #0 @bis hier fremder Code
- bl gettypebranch
- cmp r1, #A
- beq getprocentfirebranch
- cmp r0, #1
- beq black
- bls red
- bhi blue
- black:
- ldr r6, .Schwarzschrift
- b end
- red:
- ldr r6, .Rotschrift
- b end
- blue:
- ldr r6, .Blauschrift
- end:
- pop {r0-r3}
- ldr r1, =(0x081371D8+1)
- bx r1
- gettypebranch:
- ldr r1, =(0x02024284) @PID
- ldr r4, =(0x02024284) @PID
- ldr r2, =(0x02024288) @TID
- xor r4, r2
- mod r3,r1,#24
- cmp r3,#6
- bls abranch
- cmp r3,#12
- bls bbranch
- cmp r3,#18
- bls cbranch
- cmp r3,#24
- b dbranch
- mov r6,#0x82546C4 @Startoffset Pokemondaten
- sub r5,r5,#1
- mov r7,#28
- mul r5,r5,r7
- add r5,r5,r6
- add r5,r5,#6
- ldrb r1,r5
- bx lr
- abranch:
- ldrh r5, =(0x020242A4) @Offset für a der Spezies
- xor r5, r4
- bbranch:
- ldrh r5, =(0x020242B0) @Offset für b der Spezies
- xor r5, r4
- cbranch:
- ldrh r5, =(0x020242BC) @Offset für c der Spezies
- xor r5, r4
- dbranch:
- ldrh r5, =(0x020242C8) @Offset für d der Spezies
- xor r5, r4
- getprocentbranch:
- ldr r0, .variable
- lsl r3, r0, #2
- add r3, r3, r0
- add r3, r3, #215
- add r3, r3, #255
- mov r2, r3
- mov r3, r2
- mul r3, r0
- ldr r2, .L3
- mov ip, r2
- mov r1, r0
- add r3, r3, ip
- mov r0, r1
- mul r0, r3
- ldr r3, .L3+4
- mov ip, r3
- add r0, r0, ip
- lsr r0,r0, #24
- mov r4, #1
- lsr r4, r4, #3
- sub r0,r0,r4
- bx lr
- .align 2
- .L3:
- .word 120000
- .word 7300000
- .variable: .word 0x020370B8 @enthält den wert der Variable 0x8000
- .Schwarzschrift: .word 0x08465068 @ BRPD enthält: 00 0E 0A 00
- .Rotschrift: .word 0x08900000 @ Soll enthalten: 00 01 0A 00
- .Blauschrift: .word 0x08900010 @ Soll enthalten: 00 07 0A 00
- @@ 00 49 08 47 XX XX XX XX an x1371D0 für Angriff
Bei dem Versuch den Code zu kompilieren, kam die Fehlermeldung, die xor Befehle und der mod Befehl wären "bad instructions". Dass der mod Befehl vllt. nicht klappt habe ich mir gedacht, aber was ist denn an den exklusiven oder Befehlen falsch?
Zum Code: Die Routine soll abhängig von der variable 0x8000 und je nach Typ des Pokemons die Farbe des Statuswertes ändern (blau für gesteigerten ATK Wert, Rot für geschwächten). Ich bin mir sicher, dass der Code voller Fehler ist, wem was auffällt bitte sagen, denn aus Fehlern lernt man bekanntlich am besten