Add VWF code
This commit is contained in:
parent
9f97303106
commit
47ccb76f95
Binary file not shown.
After Width: | Height: | Size: 448 B |
|
@ -0,0 +1,180 @@
|
||||||
|
m2_customcodes:
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// void parse(int code, char* parserAddress, WINDOW* window)
|
||||||
|
// In:
|
||||||
|
// r0: code
|
||||||
|
// r1: parser address
|
||||||
|
// r2: window
|
||||||
|
// Out:
|
||||||
|
// r0: control code length (0 if not matched)
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
.parse:
|
||||||
|
print "m2-customcodes.parse: $",pc
|
||||||
|
|
||||||
|
push {r1-r6,lr}
|
||||||
|
mov r6,#0
|
||||||
|
ldr r3,=#m2_custom_wram
|
||||||
|
add r3,r3,#4
|
||||||
|
mov r4,r0
|
||||||
|
|
||||||
|
// Get the window number
|
||||||
|
mov r0,r2
|
||||||
|
bl m2_vwf.get_window_number
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
// 60 FF XX: Add XX pixels to the renderer
|
||||||
|
cmp r4,#0x60
|
||||||
|
bne +
|
||||||
|
mov r6,#3
|
||||||
|
|
||||||
|
// Get the current X offset
|
||||||
|
ldrb r4,[r3,r0]
|
||||||
|
|
||||||
|
// Get the current X tile
|
||||||
|
mov r5,#0x2A
|
||||||
|
ldrb r5,[r2,r5]
|
||||||
|
|
||||||
|
lsl r5,r5,#3
|
||||||
|
add r4,r4,r5 // Current X location (in pixels)
|
||||||
|
|
||||||
|
// Get the value to add
|
||||||
|
ldrb r5,[r1,#2] // Control code parameter
|
||||||
|
add r4,r4,r5 // New X location
|
||||||
|
|
||||||
|
// Store the pixel offset of the new location
|
||||||
|
.store_x:
|
||||||
|
lsl r5,r4,#29
|
||||||
|
lsr r5,r5,#29
|
||||||
|
strb r5,[r3,r0]
|
||||||
|
|
||||||
|
// Store the X tile of the new location
|
||||||
|
lsr r4,r4,#3
|
||||||
|
mov r5,#0x2A
|
||||||
|
strb r4,[r2,r5]
|
||||||
|
b .parse_end
|
||||||
|
|
||||||
|
+
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
// 5F FF XX: Set the X value of the renderer
|
||||||
|
cmp r4,#0x5F
|
||||||
|
bne +
|
||||||
|
mov r6,#3
|
||||||
|
|
||||||
|
// Get the new X value
|
||||||
|
ldrb r4,[r1,#2]
|
||||||
|
b .store_x
|
||||||
|
|
||||||
|
+
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
.parse_end:
|
||||||
|
mov r0,r6
|
||||||
|
pop {r1-r6,pc}
|
||||||
|
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// void check_main(byte code, char* parserAddress, WINDOW* window)
|
||||||
|
// In:
|
||||||
|
// r0: code
|
||||||
|
// r7: parser address
|
||||||
|
// r5: window
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
.check_main:
|
||||||
|
|
||||||
|
push {r1-r3,lr}
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
mov r1,r7
|
||||||
|
mov r2,r5
|
||||||
|
bl .parse
|
||||||
|
cmp r0,#0
|
||||||
|
bne +
|
||||||
|
mov r0,#2
|
||||||
|
+
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
// Clobbered code
|
||||||
|
ldr r3,[r6,#0]
|
||||||
|
add r3,r3,r0
|
||||||
|
mov r0,r3
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
pop {r1-r3,pc}
|
||||||
|
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// void check_status(char* parserAddress, WINDOW* window)
|
||||||
|
// In:
|
||||||
|
// r2: parser address
|
||||||
|
// r4: window
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
.check_status:
|
||||||
|
push {lr}
|
||||||
|
ldrb r0,[r2,#0]
|
||||||
|
cmp r0,#1
|
||||||
|
bne +
|
||||||
|
|
||||||
|
pop {r0}
|
||||||
|
mov lr,r0
|
||||||
|
ldr r0,=#0x80C90A9
|
||||||
|
bx r0
|
||||||
|
|
||||||
|
+
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
push {r0-r2}
|
||||||
|
mov r1,r2
|
||||||
|
mov r2,r4
|
||||||
|
bl .parse
|
||||||
|
mov r7,r0
|
||||||
|
cmp r0,#0
|
||||||
|
pop {r0-r2}
|
||||||
|
bne +
|
||||||
|
|
||||||
|
// It wasn't one of our codes, so let the game continue checking
|
||||||
|
pop {r7}
|
||||||
|
mov lr,r7
|
||||||
|
ldr r7,=#0x80C90CD
|
||||||
|
bx r7
|
||||||
|
+
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
mov r0,r12
|
||||||
|
add r0,r0,r7
|
||||||
|
str r0,[r4,#0x14]
|
||||||
|
pop {r7}
|
||||||
|
mov lr,r7
|
||||||
|
ldr r7,=#0x80C904D
|
||||||
|
bx r7
|
||||||
|
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
// void check_selection_menu(char* parserAddress, WINDOW* window)
|
||||||
|
// In:
|
||||||
|
// r3: parser address
|
||||||
|
// r4: window
|
||||||
|
//==============================================================================
|
||||||
|
|
||||||
|
.check_selection_menu:
|
||||||
|
|
||||||
|
push {r0-r2,lr}
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
ldrb r0,[r3,#0]
|
||||||
|
mov r1,r3
|
||||||
|
mov r2,r4
|
||||||
|
bl .parse
|
||||||
|
cmp r0,#0
|
||||||
|
bne +
|
||||||
|
mov r0,#2
|
||||||
|
+
|
||||||
|
add r3,r3,r0
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
pop {r0-r2,pc}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,172 @@
|
||||||
|
// Status window: level
|
||||||
|
org $80C0BB8
|
||||||
|
mov r3,#6
|
||||||
|
mul r3,r4
|
||||||
|
mov r2,#56
|
||||||
|
sub r2,r2,r3
|
||||||
|
|
||||||
|
org $80C0BC6
|
||||||
|
mov r3,#8
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: max HP
|
||||||
|
org $80C0C10
|
||||||
|
mov r5,#6
|
||||||
|
mul r4,r5
|
||||||
|
mov r5,#147
|
||||||
|
sub r4,r5,r4
|
||||||
|
|
||||||
|
org $80C0C20
|
||||||
|
mov r3,#56
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: current HP
|
||||||
|
org $80C0C6C
|
||||||
|
mov r5,#6
|
||||||
|
mul r4,r5
|
||||||
|
mov r5,#120
|
||||||
|
sub r4,r5,r4
|
||||||
|
|
||||||
|
org $80C0C7C
|
||||||
|
mov r3,#56
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: max PP
|
||||||
|
org $80C0CC8
|
||||||
|
mov r0,#6
|
||||||
|
mul r4,r0
|
||||||
|
mov r0,#147
|
||||||
|
sub r4,r0,r4
|
||||||
|
|
||||||
|
org $80C0CD8
|
||||||
|
mov r3,#72
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: current PP
|
||||||
|
org $80C0D24
|
||||||
|
mov r5,#6
|
||||||
|
mul r4,r5
|
||||||
|
mov r5,#120
|
||||||
|
|
||||||
|
org $80C0D30
|
||||||
|
sub r2,r5,r4
|
||||||
|
mov r3,#72
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: total exp
|
||||||
|
org $80C0D82
|
||||||
|
mov r1,#6
|
||||||
|
mul r4,r1
|
||||||
|
mov r1,#147
|
||||||
|
sub r4,r1,r4
|
||||||
|
|
||||||
|
org $80C0D92
|
||||||
|
mov r3,#88
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: exp to next level
|
||||||
|
org $80C0E02
|
||||||
|
mov r3,#6
|
||||||
|
mul r4,r3
|
||||||
|
mov r3,#61
|
||||||
|
sub r4,r3,r4
|
||||||
|
|
||||||
|
org $80C0E12
|
||||||
|
mov r3,#104
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: offense
|
||||||
|
org $80C0E90
|
||||||
|
mov r6,#6
|
||||||
|
mul r4,r6
|
||||||
|
mov r6,#225
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C0EA0
|
||||||
|
mov r3,#8
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: defense
|
||||||
|
org $80C0EEA
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C0EF8
|
||||||
|
mov r3,#24
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: speed
|
||||||
|
org $80C0F42
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C0F50
|
||||||
|
mov r3,#40
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: guts
|
||||||
|
org $80C0F9A
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C0FA8
|
||||||
|
mov r3,#56
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: vitality
|
||||||
|
org $80C0FF2
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C1000
|
||||||
|
mov r3,#72
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: IQ
|
||||||
|
org $80C104A
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C1058
|
||||||
|
mov r3,#88
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: Luck
|
||||||
|
org $80C10A2
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r6,r6,r4
|
||||||
|
|
||||||
|
org $80C10B0
|
||||||
|
mov r3,#104
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: Press A for PSI info
|
||||||
|
org $80C10F2
|
||||||
|
mov r2,#44
|
||||||
|
mov r3,#120
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
org $80C0BB4; bl m2_formatting.status_clear
|
||||||
|
org $80C0C0C; nop; nop // spaces
|
||||||
|
org $80C0C68; nop; nop // spaces
|
||||||
|
org $80C0CC4; nop; nop // spaces
|
||||||
|
org $80C0D20; nop; nop // spaces
|
||||||
|
org $80C0D7E; nop; nop // spaces
|
||||||
|
org $80C0DFE; nop; nop // spaces
|
||||||
|
org $80C06F0; nop; nop // ?
|
||||||
|
org $80C0E8C; nop; nop // spaces
|
||||||
|
org $80C0EE6; nop; nop // spaces
|
||||||
|
org $80C0F3E; nop; nop // spaces
|
||||||
|
org $80C0F96; nop; nop // spaces
|
||||||
|
org $80C0FEE; nop; nop // spaces
|
||||||
|
org $80C1046; nop; nop // spaces
|
||||||
|
org $80C109E; nop; nop // spaces
|
||||||
|
org $80C1112; nop; nop
|
||||||
|
org $80C11AC; nop; nop
|
||||||
|
org $80C11D2; nop; nop
|
|
@ -0,0 +1,170 @@
|
||||||
|
// Status window: level
|
||||||
|
org $80C139C
|
||||||
|
mov r3,#6
|
||||||
|
mul r3,r4
|
||||||
|
mov r2,#56
|
||||||
|
sub r2,r2,r3
|
||||||
|
|
||||||
|
org $80C13AA
|
||||||
|
mov r3,#8
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: max HP
|
||||||
|
org $80C13F6
|
||||||
|
mov r5,#6
|
||||||
|
mul r4,r5
|
||||||
|
mov r5,#147
|
||||||
|
sub r4,r5,r4
|
||||||
|
|
||||||
|
org $80C1406
|
||||||
|
mov r3,#56
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: current HP
|
||||||
|
org $80C1452
|
||||||
|
mov r5,#6
|
||||||
|
mul r4,r5
|
||||||
|
mov r5,#120
|
||||||
|
sub r4,r5,r4
|
||||||
|
|
||||||
|
org $80C1462
|
||||||
|
mov r3,#56
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: max PP
|
||||||
|
org $80C14AE
|
||||||
|
mov r0,#6
|
||||||
|
mul r4,r0
|
||||||
|
mov r0,#147
|
||||||
|
sub r4,r0,r4
|
||||||
|
org $80C14BE
|
||||||
|
mov r3,#72
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: current PP
|
||||||
|
org $80C150A
|
||||||
|
mov r3,#6
|
||||||
|
mul r4,r3
|
||||||
|
mov r3,#120
|
||||||
|
|
||||||
|
org $80C1516
|
||||||
|
sub r2,r3,r4
|
||||||
|
mov r3,#72
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: total exp
|
||||||
|
org $80C156A
|
||||||
|
mov r1,#6
|
||||||
|
mul r4,r1
|
||||||
|
mov r1,#147
|
||||||
|
sub r4,r1,r4
|
||||||
|
|
||||||
|
org $80C157A
|
||||||
|
mov r3,#88
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: exp to next level
|
||||||
|
org $80C15EC
|
||||||
|
mov r0,#6
|
||||||
|
mul r4,r0
|
||||||
|
mov r0,#61
|
||||||
|
sub r4,r0,r4
|
||||||
|
|
||||||
|
org $80C15FC
|
||||||
|
mov r3,#104
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: offense
|
||||||
|
org $80C167C
|
||||||
|
mov r6,#6
|
||||||
|
mul r4,r6
|
||||||
|
mov r6,#225
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C168C
|
||||||
|
mov r3,#8
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: defense
|
||||||
|
org $80C16D6
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C16E4
|
||||||
|
mov r3,#24
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: speed
|
||||||
|
org $80C172E
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C173C
|
||||||
|
mov r3,#40
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: guts
|
||||||
|
org $80C1786
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C1794
|
||||||
|
mov r3,#56
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: vitality
|
||||||
|
org $80C17DE
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C17EC
|
||||||
|
mov r3,#72
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: IQ
|
||||||
|
org $80C1836
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r4,r6,r4
|
||||||
|
|
||||||
|
org $80C1844
|
||||||
|
mov r3,#88
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: Luck
|
||||||
|
org $80C188E
|
||||||
|
mov r2,#6
|
||||||
|
mul r4,r2
|
||||||
|
sub r6,r6,r4
|
||||||
|
|
||||||
|
org $80C189C
|
||||||
|
mov r3,#104
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
// Status window: Press A for PSI info
|
||||||
|
org $80C18DA
|
||||||
|
mov r2,#44
|
||||||
|
mov r3,#120
|
||||||
|
bl m2_formatting.status1
|
||||||
|
|
||||||
|
org $80C1398; bl m2_formatting.status_clear
|
||||||
|
org $80C13F2; nop; nop // spaces
|
||||||
|
org $80C144E; nop; nop // spaces
|
||||||
|
org $80C14AA; nop; nop // spaces
|
||||||
|
org $80C1506; nop; nop // spaces
|
||||||
|
org $80C1566; nop; nop // spaces
|
||||||
|
org $80C15E8; nop; nop // spaces
|
||||||
|
org $80C162A; nop; nop // ?
|
||||||
|
org $80C1678; nop; nop // spaces
|
||||||
|
org $80C16D2; nop; nop // spaces
|
||||||
|
org $80C172A; nop; nop // spaces
|
||||||
|
org $80C17DA; nop; nop // spaces
|
||||||
|
org $80C1832; nop; nop // spaces
|
||||||
|
org $80C188A; nop; nop // spaces
|
||||||
|
org $80C1782; nop; nop
|
||||||
|
org $80C11AC; nop; nop
|
||||||
|
org $80C11D2; nop; nop
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in New Issue