Merge master into sync-script
This commit is contained in:
File diff suppressed because it is too large
Load Diff
+51
-48
@@ -1,4 +1,6 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "constants/misc_constants.inc"
|
||||
.include "constants/version.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
@@ -8,8 +10,8 @@
|
||||
|
||||
.arm
|
||||
|
||||
Start: @ 8000000
|
||||
b Init
|
||||
_start: @ 8000000
|
||||
b start_vector
|
||||
|
||||
.include "asm/rom_header.inc"
|
||||
|
||||
@@ -32,33 +34,33 @@ GPIOPortReadEnable: @ 80000C8
|
||||
|
||||
@ 80000D0
|
||||
|
||||
@ TODO: figure out what this data is
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
.4byte 0xFFFFFFFF
|
||||
@ 8000100
|
||||
.global CartIdent
|
||||
CartIdent:
|
||||
.4byte GAME_VERSION
|
||||
.4byte GAME_LANGUAGE
|
||||
.game_name:
|
||||
.ifdef FIRERED
|
||||
.4byte 4
|
||||
.4byte 2
|
||||
.ascii "pokemon red version"
|
||||
.space 13
|
||||
.else
|
||||
.ifdef LEAFGREEN
|
||||
.4byte 5
|
||||
.4byte 2
|
||||
.ascii "pokemon green version"
|
||||
.space 11
|
||||
.endif
|
||||
.endif
|
||||
.space .game_name+0x20-.
|
||||
.4byte gMonFrontPicTable
|
||||
.4byte gMonBackPicTable
|
||||
.4byte gMonPaletteTable
|
||||
@@ -118,32 +120,32 @@ GPIOPortReadEnable: @ 80000C8
|
||||
|
||||
.arm
|
||||
.align 2, 0
|
||||
.global Init
|
||||
Init:
|
||||
.global start_vector
|
||||
start_vector:
|
||||
mov r0, PSR_IRQ_MODE
|
||||
msr cpsr_cf, r0
|
||||
ldr sp, sp_irq
|
||||
mov r0, PSR_SYS_MODE
|
||||
msr cpsr_cf, r0
|
||||
ldr sp, sp_sys
|
||||
ldr sp, sp_usr
|
||||
ldr r1, =INTR_VECTOR
|
||||
adr r0, IntrMain
|
||||
adr r0, intr_main
|
||||
str r0, [r1]
|
||||
ldr r1, =AgbMain
|
||||
mov lr, pc
|
||||
bx r1
|
||||
b Init
|
||||
b start_vector
|
||||
|
||||
.align 2, 0
|
||||
sp_sys: .word IWRAM_END - 0x1C0
|
||||
sp_usr: .word IWRAM_END - 0x1C0
|
||||
sp_irq: .word IWRAM_END - 0x60
|
||||
|
||||
.pool
|
||||
|
||||
.arm
|
||||
.align 2, 0
|
||||
.global IntrMain
|
||||
IntrMain:
|
||||
.global intr_main
|
||||
intr_main:
|
||||
mov r3, REG_BASE
|
||||
add r3, r3, 0x200
|
||||
ldr r2, [r3, OFFSET_REG_IE - 0x200]
|
||||
@@ -155,56 +157,57 @@ IntrMain:
|
||||
and r1, r2, r2, lsr 16
|
||||
mov r12, 0
|
||||
ands r0, r1, INTR_FLAG_VCOUNT
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
mov r0, 0x1
|
||||
strh r0, [r3, OFFSET_REG_IME - 0x200]
|
||||
ands r0, r1, INTR_FLAG_SERIAL
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_TIMER3
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_HBLANK
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_VBLANK
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_TIMER0
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_TIMER1
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_TIMER2
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_DMA0
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_DMA1
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_DMA2
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_DMA3
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_KEYPAD
|
||||
bne IntrMain_FoundIntr
|
||||
bne jump_intr
|
||||
add r12, r12, 0x4
|
||||
ands r0, r1, INTR_FLAG_GAMEPAK
|
||||
strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200]
|
||||
bne . @ spin
|
||||
IntrMain_FoundIntr:
|
||||
loop:
|
||||
bne loop @ spin
|
||||
jump_intr:
|
||||
strh r0, [r3, OFFSET_REG_IF - 0x200]
|
||||
bic r2, r2, r0
|
||||
ldr r0, =gRfuState
|
||||
ldr r0, =gSTWIStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xA]
|
||||
mov r1, 0x8
|
||||
mov r1, INTR_FLAG_TIMER0
|
||||
mov r0, r1, lsl r0
|
||||
orr r0, r0, INTR_FLAG_GAMEPAK
|
||||
orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK
|
||||
@@ -218,9 +221,9 @@ IntrMain_FoundIntr:
|
||||
add r1, r1, r12
|
||||
ldr r0, [r1]
|
||||
stmdb sp!, {lr}
|
||||
adr lr, IntrMain_RetAddr
|
||||
adr lr, intr_return
|
||||
bx r0
|
||||
IntrMain_RetAddr:
|
||||
intr_return:
|
||||
ldmia sp!, {lr}
|
||||
mrs r3, cpsr
|
||||
bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
|
||||
|
||||
-6697
File diff suppressed because it is too large
Load Diff
+27
-27
@@ -9,7 +9,7 @@
|
||||
IntrSIO32: @ 81DFC50
|
||||
mov r12, sp
|
||||
stmdb sp!, {r11,r12,lr,pc}
|
||||
ldr r3, _081DFCB0 @ =gRfuState
|
||||
ldr r3, _081DFCB0 @ =gSTWIStatus
|
||||
ldr r0, [r3]
|
||||
ldr r2, [r0]
|
||||
sub r11, r12, 0x4
|
||||
@@ -19,7 +19,7 @@ IntrSIO32: @ 81DFC50
|
||||
cmp r0, 0
|
||||
ldmdbeq r11, {r11,sp,lr}
|
||||
bxeq lr
|
||||
bl sub_81E05AC
|
||||
bl Callback_Dummy_ID
|
||||
ldmdb r11, {r11,sp,lr}
|
||||
bx lr
|
||||
_081DFC8C:
|
||||
@@ -34,7 +34,7 @@ _081DFCA4:
|
||||
ldmdb r11, {r11,sp,lr}
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_081DFCB0: .4byte gRfuState
|
||||
_081DFCB0: .4byte gSTWIStatus
|
||||
arm_func_end IntrSIO32
|
||||
|
||||
arm_func_start sio32intr_clock_master
|
||||
@@ -45,7 +45,7 @@ sio32intr_clock_master: @ 81DFCB4
|
||||
sub r11, r12, 0x4
|
||||
bl STWI_set_timer_in_RAM
|
||||
mov r4, 0x120
|
||||
ldr r2, _081DFF28 @ =gRfuState
|
||||
ldr r2, _081DFF28 @ =gSTWIStatus
|
||||
add r4, r4, 0x4000000
|
||||
ldr lr, [r4]
|
||||
ldr r12, [r2]
|
||||
@@ -205,10 +205,10 @@ _081DFEFC:
|
||||
beq _081DFF3C
|
||||
ldrh r1, [r0, 0x12]
|
||||
ldrb r0, [r0, 0x6]
|
||||
bl sub_81E05A4
|
||||
bl Callback_Dummy_M
|
||||
b _081DFF3C
|
||||
.align 2, 0
|
||||
_081DFF28: .4byte gRfuState
|
||||
_081DFF28: .4byte gSTWIStatus
|
||||
_081DFF2C:
|
||||
add r3, r5, 0x3
|
||||
strh r3, [r4]
|
||||
@@ -223,7 +223,7 @@ _081DFF3C:
|
||||
sio32intr_clock_slave: @ 81DFF44
|
||||
mov r12, sp
|
||||
stmdb sp!, {r4-r6,r11,r12,lr,pc}
|
||||
ldr r4, _081E02F0 @ =gRfuState
|
||||
ldr r4, _081E02F0 @ =gSTWIStatus
|
||||
mov r0, 0x64
|
||||
ldr r3, [r4]
|
||||
mov r6, 0
|
||||
@@ -424,7 +424,7 @@ _081E01D0:
|
||||
beq _081E0348
|
||||
mov r0, 0x1EC
|
||||
add r0, r0, 0x2
|
||||
bl sub_81E05A8
|
||||
bl Callback_Dummy_S
|
||||
b _081E0348
|
||||
_081E0244:
|
||||
mov r3, 0x120
|
||||
@@ -446,7 +446,7 @@ _081E0244:
|
||||
ldrb r0, [r0, 0x6]
|
||||
mov r1, r2
|
||||
orr r0, r0, r3, lsl 8
|
||||
bl sub_81E05A8
|
||||
bl Callback_Dummy_S
|
||||
b _081E0348
|
||||
_081E0298:
|
||||
mov r3, 0x208
|
||||
@@ -473,7 +473,7 @@ _081E02E0:
|
||||
bhi _081E02E0
|
||||
b _081E031C
|
||||
.align 2, 0
|
||||
_081E02F0: .4byte gRfuState
|
||||
_081E02F0: .4byte gSTWIStatus
|
||||
_081E02F4: .4byte 0x996601ee
|
||||
_081E02F8:
|
||||
mov r2, 0xFF00
|
||||
@@ -510,7 +510,7 @@ handshake_wait: @ 81E0350
|
||||
mov r1, 0x128
|
||||
add r1, r1, 0x4000000
|
||||
mov r0, r0, lsl 16
|
||||
ldr r2, _081E03B4 @ =gRfuState
|
||||
ldr r2, _081E03B4 @ =gSTWIStatus
|
||||
sub r11, r12, 0x4
|
||||
mov lr, r0, lsr 14
|
||||
ldr r12, [r2]
|
||||
@@ -533,7 +533,7 @@ _081E03A0:
|
||||
ldmdb r11, {r11,sp,lr}
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_081E03B4: .4byte gRfuState
|
||||
_081E03B4: .4byte gSTWIStatus
|
||||
arm_func_end handshake_wait
|
||||
|
||||
arm_func_start STWI_set_timer_in_RAM
|
||||
@@ -544,7 +544,7 @@ STWI_set_timer_in_RAM: @ 81E03B8
|
||||
add r1, r1, 0x4000000
|
||||
mov r3, 0
|
||||
sub r11, r12, 0x4
|
||||
ldr r12, _081E0470 @ =gRfuState
|
||||
ldr r12, _081E0470 @ =gSTWIStatus
|
||||
and lr, r0, 0xFF
|
||||
ldr r2, [r12]
|
||||
cmp lr, 0x50
|
||||
@@ -589,7 +589,7 @@ _081E0458:
|
||||
mov r3, 0x3
|
||||
b _081E0488
|
||||
.align 2, 0
|
||||
_081E0470: .4byte gRfuState
|
||||
_081E0470: .4byte gSTWIStatus
|
||||
_081E0474:
|
||||
mvn r3, 0x850
|
||||
sub r3, r3, 0x2
|
||||
@@ -621,7 +621,7 @@ STWI_stop_timer_in_RAM: @ 81E04C8
|
||||
mov r12, sp
|
||||
stmdb sp!, {r11,r12,lr,pc}
|
||||
mov r1, 0x100
|
||||
ldr lr, _081E0514 @ =gRfuState
|
||||
ldr lr, _081E0514 @ =gSTWIStatus
|
||||
add r0, r1, 0x4000000
|
||||
ldr r2, [lr]
|
||||
sub r11, r12, 0x4
|
||||
@@ -638,14 +638,14 @@ STWI_stop_timer_in_RAM: @ 81E04C8
|
||||
ldmdb r11, {r11,sp,lr}
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_081E0514: .4byte gRfuState
|
||||
_081E0514: .4byte gSTWIStatus
|
||||
arm_func_end STWI_stop_timer_in_RAM
|
||||
|
||||
arm_func_start STWI_init_slave
|
||||
STWI_init_slave: @ 81E0518
|
||||
mov r12, sp
|
||||
stmdb sp!, {r11,r12,lr,pc}
|
||||
ldr r0, _081E05A0 @ =gRfuState
|
||||
ldr r0, _081E05A0 @ =gSTWIStatus
|
||||
ldr r2, [r0]
|
||||
mov r3, 0x5
|
||||
str r3, [r2]
|
||||
@@ -678,20 +678,20 @@ STWI_init_slave: @ 81E0518
|
||||
ldmdb r11, {r11,sp,lr}
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_081E05A0: .4byte gRfuState
|
||||
_081E05A0: .4byte gSTWIStatus
|
||||
arm_func_end STWI_init_slave
|
||||
|
||||
arm_func_start sub_81E05A4
|
||||
sub_81E05A4: @ 81E05A4
|
||||
arm_func_start Callback_Dummy_M
|
||||
Callback_Dummy_M: @ 81E05A4
|
||||
bx r2
|
||||
arm_func_end sub_81E05A4
|
||||
arm_func_end Callback_Dummy_M
|
||||
|
||||
arm_func_start sub_81E05A8
|
||||
sub_81E05A8: @ 81E05A8
|
||||
arm_func_start Callback_Dummy_S
|
||||
Callback_Dummy_S: @ 81E05A8
|
||||
bx r1
|
||||
arm_func_end sub_81E05A8
|
||||
arm_func_end Callback_Dummy_S
|
||||
|
||||
arm_func_start sub_81E05AC
|
||||
sub_81E05AC: @ 81E05AC
|
||||
arm_func_start Callback_Dummy_ID
|
||||
Callback_Dummy_ID: @ 81E05AC
|
||||
bx r0
|
||||
arm_func_end sub_81E05AC
|
||||
arm_func_end Callback_Dummy_ID
|
||||
|
||||
-1560
File diff suppressed because it is too large
Load Diff
+67
-67
@@ -50,7 +50,7 @@ rfu_REQ_sendData_wrapper: @ 80FD3F0
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
ldr r0, _080FD410 @ =gUnknown_3007460
|
||||
ldr r0, _080FD410 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
@@ -63,7 +63,7 @@ rfu_REQ_sendData_wrapper: @ 80FD3F0
|
||||
movs r2, 0x1
|
||||
b _080FD420
|
||||
.align 2, 0
|
||||
_080FD410: .4byte gUnknown_3007460
|
||||
_080FD410: .4byte gRfuLinkStatus
|
||||
_080FD414: .4byte gUnknown_3005E10
|
||||
_080FD418:
|
||||
ldr r0, _080FD42C @ =gUnknown_3005E10
|
||||
@@ -383,7 +383,7 @@ _080FD648:
|
||||
_080FD664: .4byte gUnknown_3005E10
|
||||
_080FD668:
|
||||
movs r2, 0
|
||||
ldr r0, _080FD6B4 @ =gUnknown_3007460
|
||||
ldr r0, _080FD6B4 @ =gRfuLinkStatus
|
||||
ldr r1, [r0]
|
||||
ldrb r3, [r1, 0x8]
|
||||
ldr r5, _080FD6B8 @ =gUnknown_3005E10
|
||||
@@ -422,7 +422,7 @@ _080FD6A2:
|
||||
movs r0, 0x3
|
||||
b _080FD6E8
|
||||
.align 2, 0
|
||||
_080FD6B4: .4byte gUnknown_3007460
|
||||
_080FD6B4: .4byte gRfuLinkStatus
|
||||
_080FD6B8: .4byte gUnknown_3005E10
|
||||
_080FD6BC:
|
||||
ldrb r0, [r5, 0x4]
|
||||
@@ -476,7 +476,7 @@ sub_80FD6F4: @ 80FD6F4
|
||||
bics r0, r1
|
||||
strb r0, [r3]
|
||||
movs r4, 0
|
||||
ldr r7, _080FD75C @ =gUnknown_3007460
|
||||
ldr r7, _080FD75C @ =gRfuLinkStatus
|
||||
movs r5, 0x1
|
||||
adds r3, 0x4
|
||||
movs r2, 0
|
||||
@@ -514,7 +514,7 @@ _080FD750:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FD758: .4byte gUnknown_3005E10
|
||||
_080FD75C: .4byte gUnknown_3007460
|
||||
_080FD75C: .4byte gRfuLinkStatus
|
||||
thumb_func_end sub_80FD6F4
|
||||
|
||||
thumb_func_start sub_80FD760
|
||||
@@ -601,7 +601,7 @@ _080FD80A:
|
||||
strb r0, [r5, 0x4]
|
||||
ldrb r0, [r5, 0x12]
|
||||
strb r0, [r5, 0x5]
|
||||
ldr r4, _080FD82C @ =gUnknown_3007460
|
||||
ldr r4, _080FD82C @ =gRfuLinkStatus
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x3]
|
||||
bl sub_80FE818
|
||||
@@ -613,7 +613,7 @@ _080FD80A:
|
||||
bl sub_80FE7F0
|
||||
b _080FD84A
|
||||
.align 2, 0
|
||||
_080FD82C: .4byte gUnknown_3007460
|
||||
_080FD82C: .4byte gRfuLinkStatus
|
||||
_080FD830:
|
||||
movs r0, 0x12
|
||||
strb r0, [r5, 0x4]
|
||||
@@ -653,7 +653,7 @@ sub_80FD850: @ 80FD850
|
||||
mov r1, sp
|
||||
adds r2, r5, 0
|
||||
adds r3, r4, 0
|
||||
bl sub_81E13F0
|
||||
bl rfu_REQBN_watchLink
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
adds r7, r4, 0
|
||||
@@ -743,7 +743,7 @@ _080FD90A:
|
||||
_080FD91E:
|
||||
bl sub_80FEAF4
|
||||
_080FD922:
|
||||
ldr r0, _080FDA0C @ =gUnknown_3007460
|
||||
ldr r0, _080FDA0C @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
@@ -866,7 +866,7 @@ _080FD9FC:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080FDA0C: .4byte gUnknown_3007460
|
||||
_080FDA0C: .4byte gRfuLinkStatus
|
||||
_080FDA10: .4byte gUnknown_3005E10
|
||||
thumb_func_end sub_80FD850
|
||||
|
||||
@@ -1025,7 +1025,7 @@ _080FDB5C:
|
||||
.align 2, 0
|
||||
_080FDB70: .4byte gUnknown_3005E10
|
||||
_080FDB74:
|
||||
bl sub_81E0CAC
|
||||
bl rfu_REQ_startSearchChild
|
||||
b _080FDBDA
|
||||
_080FDB7A:
|
||||
bl rfu_REQ_pollSearchChild
|
||||
@@ -1056,13 +1056,13 @@ _080FDBAE:
|
||||
bl rfu_REQ_endConnectParent
|
||||
b _080FDBDA
|
||||
_080FDBB4:
|
||||
ldr r0, _080FDBC0 @ =gUnknown_3007460
|
||||
ldr r0, _080FDBC0 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x3]
|
||||
bl rfu_REQ_CHILD_startConnectRecovery
|
||||
b _080FDBDA
|
||||
.align 2, 0
|
||||
_080FDBC0: .4byte gUnknown_3007460
|
||||
_080FDBC0: .4byte gRfuLinkStatus
|
||||
_080FDBC4:
|
||||
bl rfu_REQ_CHILD_pollConnectRecovery
|
||||
b _080FDBDA
|
||||
@@ -1089,7 +1089,7 @@ _080FDBE4:
|
||||
bhi _080FDBF4
|
||||
b _080FDA5A
|
||||
_080FDBF4:
|
||||
ldr r0, _080FDC24 @ =gUnknown_3007460
|
||||
ldr r0, _080FDC24 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
@@ -1110,7 +1110,7 @@ _080FDC1A:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FDC20: .4byte gUnknown_3005E10
|
||||
_080FDC24: .4byte gUnknown_3007460
|
||||
_080FDC24: .4byte gRfuLinkStatus
|
||||
thumb_func_end sub_80FDA30
|
||||
|
||||
thumb_func_start sub_80FDC28
|
||||
@@ -1387,7 +1387,7 @@ _080FDE64:
|
||||
ldrh r0, [r4, 0x1A]
|
||||
cmp r0, 0x1
|
||||
beq _080FDE8A
|
||||
ldr r0, _080FDEB0 @ =gUnknown_3007460
|
||||
ldr r0, _080FDEB0 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x8]
|
||||
cmp r0, 0x4
|
||||
@@ -1419,7 +1419,7 @@ _080FDEA0:
|
||||
b _080FE16E
|
||||
.align 2, 0
|
||||
_080FDEAC: .4byte gUnknown_3005E10
|
||||
_080FDEB0: .4byte gUnknown_3007460
|
||||
_080FDEB0: .4byte gRfuLinkStatus
|
||||
_080FDEB4:
|
||||
cmp r6, 0
|
||||
beq _080FDEBA
|
||||
@@ -1563,7 +1563,7 @@ _080FDFB4:
|
||||
beq _080FDFBA
|
||||
b _080FE16E
|
||||
_080FDFBA:
|
||||
ldr r2, _080FDFFC @ =gUnknown_3007460
|
||||
ldr r2, _080FDFFC @ =gRfuLinkStatus
|
||||
ldr r3, [r2]
|
||||
ldrb r0, [r3, 0x3]
|
||||
movs r1, 0
|
||||
@@ -1600,7 +1600,7 @@ _080FDFEC:
|
||||
beq _080FDFDC
|
||||
b _080FE16E
|
||||
.align 2, 0
|
||||
_080FDFFC: .4byte gUnknown_3007460
|
||||
_080FDFFC: .4byte gRfuLinkStatus
|
||||
_080FE000:
|
||||
cmp r6, 0
|
||||
bne _080FE01E
|
||||
@@ -1670,7 +1670,7 @@ _080FE078:
|
||||
ldr r4, _080FE0B4 @ =gUnknown_3005E10
|
||||
strb r6, [r4, 0x5]
|
||||
strb r6, [r4, 0x4]
|
||||
ldr r0, _080FE0B8 @ =gUnknown_3007460
|
||||
ldr r0, _080FE0B8 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x3]
|
||||
bl sub_80FE818
|
||||
@@ -1697,7 +1697,7 @@ _080FE08C:
|
||||
b _080FE16E
|
||||
.align 2, 0
|
||||
_080FE0B4: .4byte gUnknown_3005E10
|
||||
_080FE0B8: .4byte gUnknown_3007460
|
||||
_080FE0B8: .4byte gRfuLinkStatus
|
||||
_080FE0BC:
|
||||
cmp r6, 0
|
||||
bne _080FE16E
|
||||
@@ -1758,7 +1758,7 @@ _080FE0E8:
|
||||
strb r7, [r5, 0x5]
|
||||
strb r7, [r5, 0x4]
|
||||
bl sub_80FEAF4
|
||||
ldr r0, _080FE158 @ =gUnknown_3007460
|
||||
ldr r0, _080FE158 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x2]
|
||||
ldrb r0, [r0, 0x3]
|
||||
@@ -1772,7 +1772,7 @@ _080FE0E8:
|
||||
bl sub_80FE7F0
|
||||
b _080FE16E
|
||||
.align 2, 0
|
||||
_080FE158: .4byte gUnknown_3007460
|
||||
_080FE158: .4byte gRfuLinkStatus
|
||||
_080FE15C:
|
||||
cmp r6, 0
|
||||
bne _080FE16E
|
||||
@@ -1811,7 +1811,7 @@ _080FE194:
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FE1CA
|
||||
ldr r4, _080FE1E0 @ =gUnknown_3007460
|
||||
ldr r4, _080FE1E0 @ =gRfuLinkStatus
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
@@ -1839,7 +1839,7 @@ _080FE1D2:
|
||||
_080FE1DC:
|
||||
b _080FE322
|
||||
.align 2, 0
|
||||
_080FE1E0: .4byte gUnknown_3007460
|
||||
_080FE1E0: .4byte gRfuLinkStatus
|
||||
_080FE1E4:
|
||||
mov r0, r8
|
||||
cmp r0, 0x30
|
||||
@@ -1906,7 +1906,7 @@ _080FE24E:
|
||||
strb r0, [r3]
|
||||
movs r3, 0
|
||||
adds r7, r1, 0
|
||||
ldr r2, _080FE2AC @ =gUnknown_3007460
|
||||
ldr r2, _080FE2AC @ =gRfuLinkStatus
|
||||
mov r1, sp
|
||||
movs r5, 0x1
|
||||
adds r4, r7, 0
|
||||
@@ -1947,7 +1947,7 @@ _080FE27A:
|
||||
b _080FE2C2
|
||||
.align 2, 0
|
||||
_080FE2A8: .4byte gUnknown_3005E10
|
||||
_080FE2AC: .4byte gUnknown_3007460
|
||||
_080FE2AC: .4byte gRfuLinkStatus
|
||||
_080FE2B0:
|
||||
ldrb r0, [r7, 0x4]
|
||||
subs r0, 0x6
|
||||
@@ -1980,7 +1980,7 @@ _080FE2D6:
|
||||
b _080FE322
|
||||
_080FE2E6:
|
||||
bl sub_80FE6F0
|
||||
ldr r0, _080FE300 @ =gUnknown_3007460
|
||||
ldr r0, _080FE300 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0xFF
|
||||
@@ -1990,7 +1990,7 @@ _080FE2E6:
|
||||
bl sub_80FE7F0
|
||||
b _080FE322
|
||||
.align 2, 0
|
||||
_080FE300: .4byte gUnknown_3007460
|
||||
_080FE300: .4byte gRfuLinkStatus
|
||||
_080FE304:
|
||||
cmp r6, 0
|
||||
bne _080FE326
|
||||
@@ -2018,7 +2018,7 @@ _080FE326:
|
||||
ldrb r0, [r7, 0x7]
|
||||
cmp r0, 0x4
|
||||
bne _080FE358
|
||||
ldr r2, _080FE354 @ =gUnknown_3007460
|
||||
ldr r2, _080FE354 @ =gRfuLinkStatus
|
||||
ldr r1, [r2]
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
@@ -2030,7 +2030,7 @@ _080FE326:
|
||||
b _080FE388
|
||||
.align 2, 0
|
||||
_080FE350: .4byte gUnknown_3005E10
|
||||
_080FE354: .4byte gUnknown_3007460
|
||||
_080FE354: .4byte gRfuLinkStatus
|
||||
_080FE358:
|
||||
movs r1, 0
|
||||
mov r3, r8
|
||||
@@ -2075,7 +2075,7 @@ sub_80FE394: @ 80FE394
|
||||
strb r0, [r4, 0xE]
|
||||
movs r0, 0x1
|
||||
strb r0, [r4, 0xF]
|
||||
ldr r0, _080FE3CC @ =gUnknown_3007460
|
||||
ldr r0, _080FE3CC @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r5, [r0]
|
||||
cmp r5, 0
|
||||
@@ -2091,7 +2091,7 @@ sub_80FE394: @ 80FE394
|
||||
b _080FE40C
|
||||
.align 2, 0
|
||||
_080FE3C8: .4byte gUnknown_3005E10
|
||||
_080FE3CC: .4byte gUnknown_3007460
|
||||
_080FE3CC: .4byte gRfuLinkStatus
|
||||
_080FE3D0:
|
||||
mov r0, sp
|
||||
bl rfu_UNI_PARENT_getDRAC_ACK
|
||||
@@ -2148,7 +2148,7 @@ sub_80FE418: @ 80FE418
|
||||
bls _080FE436
|
||||
b _080FE62A
|
||||
_080FE436:
|
||||
ldr r0, _080FE4A0 @ =gUnknown_3007460
|
||||
ldr r0, _080FE4A0 @ =gRfuLinkStatus
|
||||
ldr r2, [r0]
|
||||
ldrb r1, [r2, 0x2]
|
||||
ldrb r0, [r3, 0xC]
|
||||
@@ -2201,7 +2201,7 @@ _080FE46C:
|
||||
b _080FE574
|
||||
.align 2, 0
|
||||
_080FE49C: .4byte gUnknown_3005E10
|
||||
_080FE4A0: .4byte gUnknown_3007460
|
||||
_080FE4A0: .4byte gRfuLinkStatus
|
||||
_080FE4A4:
|
||||
ldrb r1, [r7]
|
||||
adds r0, r4, 0
|
||||
@@ -2224,7 +2224,7 @@ _080FE4BE:
|
||||
mov r10, r2
|
||||
cmp r0, 0
|
||||
beq _080FE574
|
||||
ldr r0, _080FE518 @ =gUnknown_3007450
|
||||
ldr r0, _080FE518 @ =gRfuSlotStatusNI
|
||||
lsls r1, r6, 2
|
||||
adds r1, r0
|
||||
ldr r1, [r1]
|
||||
@@ -2242,7 +2242,7 @@ _080FE4BE:
|
||||
ldr r0, _080FE51C @ =0x0000ffff
|
||||
cmp r2, r0
|
||||
beq _080FE508
|
||||
ldr r0, _080FE520 @ =gUnknown_3007460
|
||||
ldr r0, _080FE520 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
lsls r1, r6, 5
|
||||
adds r0, r1
|
||||
@@ -2264,9 +2264,9 @@ _080FE508:
|
||||
orrs r5, r0
|
||||
b _080FE53C
|
||||
.align 2, 0
|
||||
_080FE518: .4byte gUnknown_3007450
|
||||
_080FE518: .4byte gRfuSlotStatusNI
|
||||
_080FE51C: .4byte 0x0000ffff
|
||||
_080FE520: .4byte gUnknown_3007460
|
||||
_080FE520: .4byte gRfuLinkStatus
|
||||
_080FE524:
|
||||
lsls r1, r6, 1
|
||||
adds r0, r3, 0
|
||||
@@ -2331,7 +2331,7 @@ _080FE592:
|
||||
cmp r0, 0
|
||||
beq _080FE5CE
|
||||
movs r5, 0x1
|
||||
ldr r0, _080FE600 @ =gUnknown_3007460
|
||||
ldr r0, _080FE600 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x6]
|
||||
cmp r0, 0
|
||||
@@ -2378,7 +2378,7 @@ _080FE5CE:
|
||||
.align 2, 0
|
||||
_080FE5F8: .4byte 0x0000ffff
|
||||
_080FE5FC: .4byte gUnknown_3005E10
|
||||
_080FE600: .4byte gUnknown_3007460
|
||||
_080FE600: .4byte gRfuLinkStatus
|
||||
_080FE604:
|
||||
cmp r0, 0x2
|
||||
bne _080FE610
|
||||
@@ -2435,7 +2435,7 @@ sub_80FE63C: @ 80FE63C
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
beq _080FE676
|
||||
ldr r1, _080FE6E8 @ =gUnknown_3007450
|
||||
ldr r1, _080FE6E8 @ =gRfuSlotStatusNI
|
||||
ldrb r0, [r4, 0x10]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
@@ -2481,7 +2481,7 @@ _080FE6B6:
|
||||
bne _080FE6DA
|
||||
strb r4, [r5, 0x5]
|
||||
strb r4, [r5, 0x4]
|
||||
ldr r0, _080FE6EC @ =gUnknown_3007460
|
||||
ldr r0, _080FE6EC @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x2]
|
||||
ldrb r0, [r0, 0x3]
|
||||
@@ -2498,8 +2498,8 @@ _080FE6DA:
|
||||
.align 2, 0
|
||||
_080FE6E0: .4byte 0x04000208
|
||||
_080FE6E4: .4byte gUnknown_3005E10
|
||||
_080FE6E8: .4byte gUnknown_3007450
|
||||
_080FE6EC: .4byte gUnknown_3007460
|
||||
_080FE6E8: .4byte gRfuSlotStatusNI
|
||||
_080FE6EC: .4byte gRfuLinkStatus
|
||||
thumb_func_end sub_80FE63C
|
||||
|
||||
thumb_func_start sub_80FE6F0
|
||||
@@ -2509,7 +2509,7 @@ sub_80FE6F0: @ 80FE6F0
|
||||
ldrb r0, [r5, 0x4]
|
||||
cmp r0, 0xF
|
||||
bne _080FE73C
|
||||
ldr r1, _080FE748 @ =gUnknown_3007450
|
||||
ldr r1, _080FE748 @ =gRfuSlotStatusNI
|
||||
ldrb r2, [r5, 0x10]
|
||||
lsls r0, r2, 2
|
||||
adds r0, r1
|
||||
@@ -2546,7 +2546,7 @@ _080FE73C:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FE744: .4byte gUnknown_3005E10
|
||||
_080FE748: .4byte gUnknown_3007450
|
||||
_080FE748: .4byte gRfuSlotStatusNI
|
||||
thumb_func_end sub_80FE6F0
|
||||
|
||||
thumb_func_start sub_80FE74C
|
||||
@@ -2585,7 +2585,7 @@ sub_80FE778: @ 80FE778
|
||||
push {r5-r7}
|
||||
movs r6, 0
|
||||
movs r5, 0
|
||||
ldr r1, _080FE7E4 @ =gUnknown_3007460
|
||||
ldr r1, _080FE7E4 @ =gRfuLinkStatus
|
||||
ldr r0, [r1]
|
||||
ldrb r0, [r0, 0x8]
|
||||
cmp r6, r0
|
||||
@@ -2638,7 +2638,7 @@ _080FE7D4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080FE7E4: .4byte gUnknown_3007460
|
||||
_080FE7E4: .4byte gRfuLinkStatus
|
||||
_080FE7E8: .4byte gUnknown_3005E10
|
||||
_080FE7EC: .4byte 0x0000ffff
|
||||
thumb_func_end sub_80FE778
|
||||
@@ -2690,14 +2690,14 @@ sub_80FE83C: @ 80FE83C
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
ldr r0, _080FE908 @ =gUnknown_3007460
|
||||
ldr r0, _080FE908 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _080FE884
|
||||
movs r4, 0
|
||||
_080FE84E:
|
||||
ldr r1, _080FE90C @ =gUnknown_3007450
|
||||
ldr r1, _080FE90C @ =gRfuSlotStatusNI
|
||||
lsls r0, r4, 2
|
||||
adds r0, r1
|
||||
ldr r2, [r0]
|
||||
@@ -2725,14 +2725,14 @@ _080FE87A:
|
||||
cmp r4, 0x3
|
||||
bls _080FE84E
|
||||
_080FE884:
|
||||
ldr r0, _080FE908 @ =gUnknown_3007460
|
||||
ldr r0, _080FE908 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x5]
|
||||
cmp r0, 0
|
||||
beq _080FE8C2
|
||||
movs r4, 0
|
||||
_080FE890:
|
||||
ldr r1, _080FE90C @ =gUnknown_3007450
|
||||
ldr r1, _080FE90C @ =gRfuSlotStatusNI
|
||||
lsls r0, r4, 2
|
||||
adds r0, r1
|
||||
ldr r2, [r0]
|
||||
@@ -2758,7 +2758,7 @@ _080FE8B8:
|
||||
cmp r4, 0x3
|
||||
bls _080FE890
|
||||
_080FE8C2:
|
||||
ldr r0, _080FE908 @ =gUnknown_3007460
|
||||
ldr r0, _080FE908 @ =gRfuLinkStatus
|
||||
ldr r3, [r0]
|
||||
ldrb r2, [r3, 0x6]
|
||||
cmp r2, 0
|
||||
@@ -2768,7 +2768,7 @@ _080FE8C2:
|
||||
ands r0, r2
|
||||
strb r0, [r3, 0x6]
|
||||
movs r4, 0
|
||||
ldr r7, _080FE910 @ =gUnknown_3007440
|
||||
ldr r7, _080FE910 @ =gRfuSlotStatusUNI
|
||||
ldr r6, _080FE914 @ =0x00008024
|
||||
_080FE8DA:
|
||||
lsls r0, r4, 2
|
||||
@@ -2796,9 +2796,9 @@ _080FE900:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FE908: .4byte gUnknown_3007460
|
||||
_080FE90C: .4byte gUnknown_3007450
|
||||
_080FE910: .4byte gUnknown_3007440
|
||||
_080FE908: .4byte gRfuLinkStatus
|
||||
_080FE90C: .4byte gRfuSlotStatusNI
|
||||
_080FE910: .4byte gRfuSlotStatusUNI
|
||||
_080FE914: .4byte 0x00008024
|
||||
thumb_func_end sub_80FE83C
|
||||
|
||||
@@ -2814,14 +2814,14 @@ sub_80FE918: @ 80FE918
|
||||
ldrh r0, [r0, 0x18]
|
||||
cmp r0, 0
|
||||
beq _080FE9F4
|
||||
ldr r0, _080FEA08 @ =gUnknown_3007460
|
||||
ldr r0, _080FEA08 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x4]
|
||||
cmp r0, 0
|
||||
beq _080FE9B8
|
||||
movs r6, 0
|
||||
_080FE938:
|
||||
ldr r3, _080FEA0C @ =gUnknown_3007450
|
||||
ldr r3, _080FEA0C @ =gRfuSlotStatusNI
|
||||
lsls r2, r6, 2
|
||||
adds r0, r2, r3
|
||||
ldr r0, [r0]
|
||||
@@ -2889,14 +2889,14 @@ _080FE9AE:
|
||||
cmp r6, 0x3
|
||||
bls _080FE938
|
||||
_080FE9B8:
|
||||
ldr r0, _080FEA08 @ =gUnknown_3007460
|
||||
ldr r0, _080FEA08 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x5]
|
||||
cmp r0, 0
|
||||
beq _080FE9F4
|
||||
movs r6, 0
|
||||
_080FE9C4:
|
||||
ldr r1, _080FEA0C @ =gUnknown_3007450
|
||||
ldr r1, _080FEA0C @ =gRfuSlotStatusNI
|
||||
lsls r0, r6, 2
|
||||
adds r0, r1
|
||||
ldr r2, [r0]
|
||||
@@ -2931,8 +2931,8 @@ _080FE9F4:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FEA04: .4byte gUnknown_3005E10
|
||||
_080FEA08: .4byte gUnknown_3007460
|
||||
_080FEA0C: .4byte gUnknown_3007450
|
||||
_080FEA08: .4byte gRfuLinkStatus
|
||||
_080FEA0C: .4byte gRfuSlotStatusNI
|
||||
thumb_func_end sub_80FE918
|
||||
|
||||
thumb_func_start sub_80FEA10
|
||||
@@ -3002,7 +3002,7 @@ sub_80FEA78: @ 80FEA78
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 16
|
||||
ldr r0, _080FEA94 @ =gUnknown_3007460
|
||||
ldr r0, _080FEA94 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x4]
|
||||
ldrb r0, [r0, 0x5]
|
||||
@@ -3014,7 +3014,7 @@ sub_80FEA78: @ 80FEA78
|
||||
movs r0, 0
|
||||
b _080FEAAC
|
||||
.align 2, 0
|
||||
_080FEA94: .4byte gUnknown_3007460
|
||||
_080FEA94: .4byte gRfuLinkStatus
|
||||
_080FEA98: .4byte gUnknown_3005E10
|
||||
_080FEA9C:
|
||||
ldr r1, _080FEAB0 @ =gUnknown_3005E10
|
||||
|
||||
+66
-66
@@ -132,12 +132,12 @@ _080F86F0: .4byte 0x04000208
|
||||
thumb_func_start sub_80F86F4
|
||||
sub_80F86F4: @ 80F86F4
|
||||
push {r4,lr}
|
||||
ldr r0, _080F8728 @ =gUnknown_3001190
|
||||
ldr r0, _080F8728 @ =gRfuAPIBuffer
|
||||
ldr r1, _080F872C @ =0x00000e64
|
||||
ldr r4, _080F8730 @ =gIntrTable + 0x4
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x1
|
||||
bl sub_81E05B0
|
||||
bl rfu_initializeAPI
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
cmp r1, 0
|
||||
@@ -155,7 +155,7 @@ _080F8722:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F8728: .4byte gUnknown_3001190
|
||||
_080F8728: .4byte gRfuAPIBuffer
|
||||
_080F872C: .4byte 0x00000e64
|
||||
_080F8730: .4byte gIntrTable + 0x4
|
||||
_080F8734: .4byte gLinkType
|
||||
@@ -871,7 +871,7 @@ _080F8D2A:
|
||||
bge _080F8D2A
|
||||
bl rfu_REQ_recvData
|
||||
bl rfu_waitREQComplete
|
||||
ldr r1, _080F8D94 @ =gUnknown_3007440
|
||||
ldr r1, _080F8D94 @ =gRfuSlotStatusUNI
|
||||
ldr r3, _080F8D90 @ =gUnknown_3005450
|
||||
ldr r0, _080F8D98 @ =0x000008f6
|
||||
adds r4, r3, r0
|
||||
@@ -911,7 +911,7 @@ _080F8D84:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F8D90: .4byte gUnknown_3005450
|
||||
_080F8D94: .4byte gUnknown_3007440
|
||||
_080F8D94: .4byte gRfuSlotStatusUNI
|
||||
_080F8D98: .4byte 0x000008f6
|
||||
_080F8D9C: .4byte 0x00000988
|
||||
_080F8DA0: .4byte 0x000008f7
|
||||
@@ -1074,7 +1074,7 @@ sub_80F8ECC: @ 80F8ECC
|
||||
ldrh r0, [r4, 0x4]
|
||||
cmp r0, 0x7
|
||||
bne _080F8F08
|
||||
ldr r0, _080F8F00 @ =gUnknown_3007460
|
||||
ldr r0, _080F8F00 @ =gRfuLinkStatus
|
||||
ldr r1, [r0]
|
||||
ldr r2, _080F8F04 @ =0x000008f5
|
||||
adds r0, r4, r2
|
||||
@@ -1093,7 +1093,7 @@ sub_80F8ECC: @ 80F8ECC
|
||||
b _080F8F0A
|
||||
.align 2, 0
|
||||
_080F8EFC: .4byte gUnknown_3005450
|
||||
_080F8F00: .4byte gUnknown_3007460
|
||||
_080F8F00: .4byte gRfuLinkStatus
|
||||
_080F8F04: .4byte 0x000008f5
|
||||
_080F8F08:
|
||||
movs r0, 0
|
||||
@@ -1363,7 +1363,7 @@ _080F90D8: .4byte 0x000008f2
|
||||
thumb_func_start IsRfuRecvQueueEmpty
|
||||
IsRfuRecvQueueEmpty: @ 80F90DC
|
||||
push {r4,lr}
|
||||
ldr r0, _080F90EC @ =gUnknown_3007460
|
||||
ldr r0, _080F90EC @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x6]
|
||||
cmp r0, 0
|
||||
@@ -1372,7 +1372,7 @@ _080F90E8:
|
||||
movs r0, 0
|
||||
b _080F9110
|
||||
.align 2, 0
|
||||
_080F90EC: .4byte gUnknown_3007460
|
||||
_080F90EC: .4byte gRfuLinkStatus
|
||||
_080F90F0:
|
||||
movs r3, 0
|
||||
ldr r4, _080F9118 @ =gRecvCmds
|
||||
@@ -1422,7 +1422,7 @@ _080F913C:
|
||||
strb r0, [r1]
|
||||
ldr r0, _080F919C @ =0x0000099a
|
||||
adds r1, r6, r0
|
||||
ldr r0, _080F91A0 @ =gUnknown_3007460
|
||||
ldr r0, _080F91A0 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r1]
|
||||
ldrb r0, [r0, 0x2]
|
||||
@@ -1460,7 +1460,7 @@ _080F913C:
|
||||
.align 2, 0
|
||||
_080F9198: .4byte 0x00000993
|
||||
_080F919C: .4byte 0x0000099a
|
||||
_080F91A0: .4byte gUnknown_3007460
|
||||
_080F91A0: .4byte gRfuLinkStatus
|
||||
_080F91A4: .4byte 0x00000994
|
||||
_080F91A8: .4byte 0x0000099b
|
||||
_080F91AC: .4byte 0x0000099c
|
||||
@@ -1815,7 +1815,7 @@ _080F947E:
|
||||
adds r0, r6, r1
|
||||
ldrb r0, [r0]
|
||||
adds r1, r0, 0
|
||||
ldr r0, _080F94A0 @ =gUnknown_3007460
|
||||
ldr r0, _080F94A0 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x6]
|
||||
cmp r0, 0
|
||||
@@ -1826,7 +1826,7 @@ _080F947E:
|
||||
.align 2, 0
|
||||
_080F9498: .4byte 0x00000994
|
||||
_080F949C: .4byte gUnknown_3005450
|
||||
_080F94A0: .4byte gUnknown_3007460
|
||||
_080F94A0: .4byte gRfuLinkStatus
|
||||
_080F94A4:
|
||||
movs r0, 0
|
||||
b _080F94AA
|
||||
@@ -1950,7 +1950,7 @@ _080F9538:
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080F95E4
|
||||
ldr r0, _080F964C @ =gUnknown_3007460
|
||||
ldr r0, _080F964C @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x2]
|
||||
ldrb r0, [r0, 0x3]
|
||||
@@ -2042,7 +2042,7 @@ _080F963C: .4byte gRecvCmds
|
||||
_080F9640: .4byte gUnknown_3005E10
|
||||
_080F9644: .4byte gUnknown_3005450
|
||||
_080F9648: .4byte 0x0000099c
|
||||
_080F964C: .4byte gUnknown_3007460
|
||||
_080F964C: .4byte gRfuLinkStatus
|
||||
_080F9650: .4byte gReceivedRemoteLinkPlayers
|
||||
_080F9654: .4byte 0x00000988
|
||||
_080F9658: .4byte gSendCmd
|
||||
@@ -2435,7 +2435,7 @@ _080F9902:
|
||||
beq _080F9914
|
||||
b _080F9C40
|
||||
_080F9914:
|
||||
ldr r0, _080F9944 @ =gUnknown_3007460
|
||||
ldr r0, _080F9944 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
mov r6, r8
|
||||
@@ -2458,7 +2458,7 @@ _080F9924:
|
||||
.align 2, 0
|
||||
_080F993C: .4byte gUnknown_3005450
|
||||
_080F9940: .4byte gReceivedRemoteLinkPlayers
|
||||
_080F9944: .4byte gUnknown_3007460
|
||||
_080F9944: .4byte gRfuLinkStatus
|
||||
_080F9948: .4byte gRecvCmds + 2
|
||||
_080F994C: .4byte gRecvCmds + 4
|
||||
_080F9950: .4byte gUnknown_3005DD6
|
||||
@@ -2688,7 +2688,7 @@ _080F9B00:
|
||||
ldr r0, _080F9B54 @ =gRecvCmds + 2
|
||||
adds r4, r5, r0
|
||||
ldrh r1, [r4]
|
||||
ldr r0, _080F9B58 @ =gUnknown_3007460
|
||||
ldr r0, _080F9B58 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x2]
|
||||
ands r1, r0
|
||||
@@ -2715,7 +2715,7 @@ _080F9B38:
|
||||
_080F9B4C: .4byte gUnknown_3005450
|
||||
_080F9B50: .4byte gReceivedRemoteLinkPlayers
|
||||
_080F9B54: .4byte gRecvCmds + 2
|
||||
_080F9B58: .4byte gUnknown_3007460
|
||||
_080F9B58: .4byte gRfuLinkStatus
|
||||
_080F9B5C: .4byte gRecvCmds + 4
|
||||
_080F9B60: .4byte 0x0000099c
|
||||
_080F9B64: .4byte gRecvCmds
|
||||
@@ -3502,7 +3502,7 @@ _080FA13C: .4byte gUnknown_3005450
|
||||
thumb_func_start sub_80FA140
|
||||
sub_80FA140: @ 80FA140
|
||||
push {lr}
|
||||
ldr r0, _080FA15C @ =gUnknown_3007460
|
||||
ldr r0, _080FA15C @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r1, [r0, 0x2]
|
||||
ldrb r0, [r0, 0x3]
|
||||
@@ -3513,7 +3513,7 @@ sub_80FA140: @ 80FA140
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FA15C: .4byte gUnknown_3007460
|
||||
_080FA15C: .4byte gRfuLinkStatus
|
||||
thumb_func_end sub_80FA140
|
||||
|
||||
thumb_func_start sub_80FA160
|
||||
@@ -3552,7 +3552,7 @@ sub_80FA190: @ 80FA190
|
||||
adds r1, r2, r0
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r0, _080FA1BC @ =gUnknown_3007460
|
||||
ldr r0, _080FA1BC @ =gRfuLinkStatus
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1, 0x2]
|
||||
ldrb r1, [r1, 0x3]
|
||||
@@ -3565,7 +3565,7 @@ sub_80FA190: @ 80FA190
|
||||
.align 2, 0
|
||||
_080FA1B4: .4byte gUnknown_3005450
|
||||
_080FA1B8: .4byte 0x0000099c
|
||||
_080FA1BC: .4byte gUnknown_3007460
|
||||
_080FA1BC: .4byte gRfuLinkStatus
|
||||
_080FA1C0: .4byte 0x0000099b
|
||||
thumb_func_end sub_80FA190
|
||||
|
||||
@@ -4065,7 +4065,7 @@ _080FA53A:
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bls _080FA5C2
|
||||
ldr r1, _080FA5A0 @ =gUnknown_3007450
|
||||
ldr r1, _080FA5A0 @ =gRfuSlotStatusNI
|
||||
lsls r0, r5, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
@@ -4103,7 +4103,7 @@ _080FA55E:
|
||||
_080FA594: .4byte gUnknown_3005450
|
||||
_080FA598: .4byte 0x000008f6
|
||||
_080FA59C: .4byte 0x00000989
|
||||
_080FA5A0: .4byte gUnknown_3007450
|
||||
_080FA5A0: .4byte gRfuSlotStatusNI
|
||||
_080FA5A4: .4byte 0x0000098d
|
||||
_080FA5A8:
|
||||
mov r2, r8
|
||||
@@ -4300,7 +4300,7 @@ sub_80FA6FC: @ 80FA6FC
|
||||
movs r0, 0x2
|
||||
b _080FA732
|
||||
_080FA718:
|
||||
ldr r1, _080FA72C @ =gUnknown_3007450
|
||||
ldr r1, _080FA72C @ =gRfuSlotStatusNI
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
@@ -4310,7 +4310,7 @@ _080FA718:
|
||||
movs r0, 0
|
||||
b _080FA732
|
||||
.align 2, 0
|
||||
_080FA72C: .4byte gUnknown_3007450
|
||||
_080FA72C: .4byte gRfuSlotStatusNI
|
||||
_080FA730:
|
||||
movs r0, 0x1
|
||||
_080FA732:
|
||||
@@ -4327,7 +4327,7 @@ sub_80FA738: @ 80FA738
|
||||
ldr r1, _080FA780 @ =0x0000098d
|
||||
adds r5, r0, r1
|
||||
_080FA746:
|
||||
ldr r1, _080FA784 @ =gUnknown_3007450
|
||||
ldr r1, _080FA784 @ =gRfuSlotStatusNI
|
||||
lsls r0, r4, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
@@ -4358,7 +4358,7 @@ _080FA770:
|
||||
.align 2, 0
|
||||
_080FA77C: .4byte gUnknown_3005450
|
||||
_080FA780: .4byte 0x0000098d
|
||||
_080FA784: .4byte gUnknown_3007450
|
||||
_080FA784: .4byte gRfuSlotStatusNI
|
||||
thumb_func_end sub_80FA738
|
||||
|
||||
thumb_func_start sub_80FA788
|
||||
@@ -4371,7 +4371,7 @@ sub_80FA788: @ 80FA788
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x8
|
||||
bne _080FA7C2
|
||||
ldr r2, _080FA808 @ =gUnknown_3007450
|
||||
ldr r2, _080FA808 @ =gRfuSlotStatusNI
|
||||
ldr r0, _080FA80C @ =0x000008f6
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
@@ -4393,7 +4393,7 @@ _080FA7BA:
|
||||
movs r0, 0x4
|
||||
bl rfu_clearSlot
|
||||
_080FA7C2:
|
||||
ldr r2, _080FA808 @ =gUnknown_3007450
|
||||
ldr r2, _080FA808 @ =gRfuSlotStatusNI
|
||||
ldr r5, _080FA800 @ =gUnknown_3005450
|
||||
ldr r0, _080FA80C @ =0x000008f6
|
||||
adds r1, r5, r0
|
||||
@@ -4425,7 +4425,7 @@ _080FA7E6:
|
||||
.align 2, 0
|
||||
_080FA800: .4byte gUnknown_3005450
|
||||
_080FA804: .4byte 0x0000093d
|
||||
_080FA808: .4byte gUnknown_3007450
|
||||
_080FA808: .4byte gRfuSlotStatusNI
|
||||
_080FA80C: .4byte 0x000008f6
|
||||
_080FA810: .4byte 0x0000093e
|
||||
_080FA814:
|
||||
@@ -5772,7 +5772,7 @@ _080FB21E:
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080FB286
|
||||
ldr r0, _080FB274 @ =gUnknown_3007460
|
||||
ldr r0, _080FB274 @ =gRfuLinkStatus
|
||||
lsls r1, r5, 5
|
||||
adds r1, 0x14
|
||||
ldr r0, [r0]
|
||||
@@ -5803,7 +5803,7 @@ _080FB21E:
|
||||
_080FB268: .4byte gUnknown_3005E10
|
||||
_080FB26C: .4byte gUnknown_3005450
|
||||
_080FB270: .4byte 0x0000098d
|
||||
_080FB274: .4byte gUnknown_3007460
|
||||
_080FB274: .4byte gRfuLinkStatus
|
||||
_080FB278: .4byte 0x00000989
|
||||
_080FB27C:
|
||||
mov r0, r8
|
||||
@@ -6216,7 +6216,7 @@ sub_80FB5A0: @ 80FB5A0
|
||||
movs r3, 0
|
||||
movs r2, 0
|
||||
movs r4, 0x1
|
||||
ldr r6, _080FB5E8 @ =gUnknown_3007460
|
||||
ldr r6, _080FB5E8 @ =gRfuLinkStatus
|
||||
movs r7, 0x7F
|
||||
_080FB5AE:
|
||||
adds r0, r5, 0
|
||||
@@ -6249,7 +6249,7 @@ _080FB5D4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080FB5E8: .4byte gUnknown_3007460
|
||||
_080FB5E8: .4byte gRfuLinkStatus
|
||||
thumb_func_end sub_80FB5A0
|
||||
|
||||
thumb_func_start sub_80FB5EC
|
||||
@@ -6601,7 +6601,7 @@ _080FB894:
|
||||
adds r1, 0xF0
|
||||
movs r0, 0x3
|
||||
strb r0, [r1]
|
||||
ldr r0, _080FB8B8 @ =gUnknown_3007460
|
||||
ldr r0, _080FB8B8 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
@@ -6615,7 +6615,7 @@ _080FB8AA:
|
||||
b _080FB9C0
|
||||
.align 2, 0
|
||||
_080FB8B4: .4byte gUnknown_3005450
|
||||
_080FB8B8: .4byte gUnknown_3007460
|
||||
_080FB8B8: .4byte gRfuLinkStatus
|
||||
_080FB8BC: .4byte 0x000008f4
|
||||
_080FB8C0:
|
||||
ldr r0, _080FB900 @ =gUnknown_3005450
|
||||
@@ -6674,7 +6674,7 @@ _080FB916:
|
||||
movs r0, 0
|
||||
bl sub_80FD760
|
||||
_080FB934:
|
||||
ldr r0, _080FB96C @ =gUnknown_3007460
|
||||
ldr r0, _080FB96C @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0xFF
|
||||
@@ -6700,7 +6700,7 @@ _080FB95A:
|
||||
.align 2, 0
|
||||
_080FB964: .4byte 0x0000099c
|
||||
_080FB968: .4byte gReceivedRemoteLinkPlayers
|
||||
_080FB96C: .4byte gUnknown_3007460
|
||||
_080FB96C: .4byte gRfuLinkStatus
|
||||
_080FB970: .4byte gUnknown_3005E10
|
||||
_080FB974: .4byte sub_80F8B34
|
||||
_080FB978: .4byte gUnknown_3005450
|
||||
@@ -7108,7 +7108,7 @@ sub_80FBC70: @ 80FBC70
|
||||
movs r0, 0xFF
|
||||
mov r9, r0
|
||||
movs r7, 0
|
||||
ldr r1, _080FBCF4 @ =gUnknown_3007460
|
||||
ldr r1, _080FBCF4 @ =gRfuLinkStatus
|
||||
mov r8, r1
|
||||
_080FBC8E:
|
||||
lsls r4, r7, 5
|
||||
@@ -7162,7 +7162,7 @@ _080FBCE2:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080FBCF4: .4byte gUnknown_3007460
|
||||
_080FBCF4: .4byte gRfuLinkStatus
|
||||
thumb_func_end sub_80FBC70
|
||||
|
||||
thumb_func_start sub_80FBCF8
|
||||
@@ -7391,7 +7391,7 @@ sub_80FBE80: @ 80FBE80
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0xFF
|
||||
beq _080FBF18
|
||||
ldr r0, _080FBEDC @ =gUnknown_3007460
|
||||
ldr r0, _080FBEDC @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
lsls r1, r2, 5
|
||||
adds r0, r1
|
||||
@@ -7408,7 +7408,7 @@ sub_80FBE80: @ 80FBE80
|
||||
b _080FBF10
|
||||
.align 2, 0
|
||||
_080FBED8: .4byte gTasks+0x8
|
||||
_080FBEDC: .4byte gUnknown_3007460
|
||||
_080FBEDC: .4byte gRfuLinkStatus
|
||||
_080FBEE0: .4byte gUnknown_3005450
|
||||
_080FBEE4: .4byte 0x000008f5
|
||||
_080FBEE8:
|
||||
@@ -7638,7 +7638,7 @@ _080FC070:
|
||||
beq _080FC108
|
||||
movs r1, 0xA
|
||||
ldrsh r0, [r4, r1]
|
||||
ldr r7, _080FC0F4 @ =gUnknown_3007460
|
||||
ldr r7, _080FC0F4 @ =gRfuLinkStatus
|
||||
lsls r4, r2, 5
|
||||
adds r2, r4, 0
|
||||
adds r2, 0x14
|
||||
@@ -7670,7 +7670,7 @@ _080FC0E4: .4byte gTasks
|
||||
_080FC0E8: .4byte 0x00000985
|
||||
_080FC0EC: .4byte gUnknown_3005E10
|
||||
_080FC0F0: .4byte 0x00000119
|
||||
_080FC0F4: .4byte gUnknown_3007460
|
||||
_080FC0F4: .4byte gRfuLinkStatus
|
||||
_080FC0F8:
|
||||
movs r1, 0xE0
|
||||
lsls r1, 7
|
||||
@@ -7845,7 +7845,7 @@ sub_80FC228: @ 80FC228
|
||||
movs r2, 0x13
|
||||
movs r3, 0x2
|
||||
bl nullsub_88
|
||||
ldr r4, _080FC2F8 @ =gUnknown_3007460
|
||||
ldr r4, _080FC2F8 @ =gRfuLinkStatus
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x2]
|
||||
movs r1, 0x14
|
||||
@@ -7934,7 +7934,7 @@ _080FC2CE:
|
||||
bl nullsub_87
|
||||
b _080FC436
|
||||
.align 2, 0
|
||||
_080FC2F8: .4byte gUnknown_3007460
|
||||
_080FC2F8: .4byte gRfuLinkStatus
|
||||
_080FC2FC: .4byte gUnknown_3005450
|
||||
_080FC300: .4byte gUnknown_843EE64
|
||||
_080FC304:
|
||||
@@ -7969,7 +7969,7 @@ _080FC318:
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
ble _080FC318
|
||||
ldr r5, _080FC394 @ =gUnknown_3007460
|
||||
ldr r5, _080FC394 @ =gRfuLinkStatus
|
||||
ldr r1, [r5]
|
||||
ldr r4, _080FC398 @ =gUnknown_3005450
|
||||
ldr r0, _080FC39C @ =0x000008f6
|
||||
@@ -8004,12 +8004,12 @@ _080FC318:
|
||||
.align 2, 0
|
||||
_080FC38C: .4byte gUnknown_843EE47
|
||||
_080FC390: .4byte gUnknown_843EE57
|
||||
_080FC394: .4byte gUnknown_3007460
|
||||
_080FC394: .4byte gRfuLinkStatus
|
||||
_080FC398: .4byte gUnknown_3005450
|
||||
_080FC39C: .4byte 0x000008f6
|
||||
_080FC3A0:
|
||||
movs r6, 0
|
||||
ldr r1, _080FC440 @ =gUnknown_3007460
|
||||
ldr r1, _080FC440 @ =gRfuLinkStatus
|
||||
ldr r0, [r1]
|
||||
ldrb r0, [r0, 0x8]
|
||||
cmp r6, r0
|
||||
@@ -8088,7 +8088,7 @@ _080FC436:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FC440: .4byte gUnknown_3007460
|
||||
_080FC440: .4byte gRfuLinkStatus
|
||||
_080FC444: .4byte gUnknown_843EE47
|
||||
_080FC448: .4byte gUnknown_843EE57
|
||||
thumb_func_end sub_80FC228
|
||||
@@ -9032,7 +9032,7 @@ sub_80FCADC: @ 80FCADC
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
movs r6, 0
|
||||
ldr r0, _080FCB04 @ =gUnknown_3007460
|
||||
ldr r0, _080FCB04 @ =gRfuLinkStatus
|
||||
ldr r4, [r0]
|
||||
ldrb r2, [r4, 0x2]
|
||||
ldrb r1, [r4]
|
||||
@@ -9048,7 +9048,7 @@ sub_80FCADC: @ 80FCADC
|
||||
ldrb r0, [r4, 0xA]
|
||||
b _080FCB4C
|
||||
.align 2, 0
|
||||
_080FCB04: .4byte gUnknown_3007460
|
||||
_080FCB04: .4byte gRfuLinkStatus
|
||||
_080FCB08:
|
||||
adds r0, r6, 0x1
|
||||
lsls r0, 24
|
||||
@@ -9234,7 +9234,7 @@ sub_80FCC3C: @ 80FCC3C
|
||||
bne _080FCC98
|
||||
movs r0, 0x1
|
||||
mov r9, r0
|
||||
ldr r6, _080FCC94 @ =gUnknown_3007460
|
||||
ldr r6, _080FCC94 @ =gRfuLinkStatus
|
||||
ldr r0, [r6]
|
||||
lsls r4, r5, 5
|
||||
adds r0, r4
|
||||
@@ -9261,11 +9261,11 @@ _080FCC78:
|
||||
b _080FCCE4
|
||||
.align 2, 0
|
||||
_080FCC90: .4byte gUnknown_3005E10
|
||||
_080FCC94: .4byte gUnknown_3007460
|
||||
_080FCC94: .4byte gRfuLinkStatus
|
||||
_080FCC98:
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
ldr r6, _080FCCCC @ =gUnknown_3007460
|
||||
ldr r6, _080FCCCC @ =gRfuLinkStatus
|
||||
ldr r0, [r6]
|
||||
lsls r4, r5, 5
|
||||
adds r0, r4
|
||||
@@ -9288,7 +9288,7 @@ _080FCCB0:
|
||||
bl memcpy
|
||||
b _080FCCE4
|
||||
.align 2, 0
|
||||
_080FCCCC: .4byte gUnknown_3007460
|
||||
_080FCCCC: .4byte gRfuLinkStatus
|
||||
_080FCCD0:
|
||||
adds r0, r7, 0
|
||||
movs r1, 0
|
||||
@@ -9315,7 +9315,7 @@ sub_80FCCF4: @ 80FCCF4
|
||||
adds r5, r1, 0
|
||||
lsls r2, 24
|
||||
movs r7, 0
|
||||
ldr r6, _080FCD2C @ =gUnknown_3007460
|
||||
ldr r6, _080FCD2C @ =gRfuLinkStatus
|
||||
ldr r0, [r6]
|
||||
lsrs r4, r2, 19
|
||||
adds r2, r0, r4
|
||||
@@ -9337,7 +9337,7 @@ sub_80FCCF4: @ 80FCCF4
|
||||
movs r7, 0x1
|
||||
b _080FCD48
|
||||
.align 2, 0
|
||||
_080FCD2C: .4byte gUnknown_3007460
|
||||
_080FCD2C: .4byte gRfuLinkStatus
|
||||
_080FCD30: .4byte 0x00007f7d
|
||||
_080FCD34:
|
||||
adds r0, r3, 0
|
||||
@@ -9388,7 +9388,7 @@ CreateWirelessStatusIndicatorSprite: @ 80FCD74
|
||||
movs r3, 0xE7
|
||||
movs r2, 0x8
|
||||
_080FCD8A:
|
||||
ldr r0, _080FCDCC @ =gUnknown_3007460
|
||||
ldr r0, _080FCDCC @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
@@ -9420,7 +9420,7 @@ _080FCD8A:
|
||||
strb r5, [r0]
|
||||
b _080FCE2A
|
||||
.align 2, 0
|
||||
_080FCDCC: .4byte gUnknown_3007460
|
||||
_080FCDCC: .4byte gRfuLinkStatus
|
||||
_080FCDD0: .4byte gUnknown_843F284
|
||||
_080FCDD4: .4byte gSprites
|
||||
_080FCDD8: .4byte 0x00001234
|
||||
@@ -9551,7 +9551,7 @@ _080FCEE0: .4byte gUnknown_203ACE4
|
||||
thumb_func_start sub_80FCEE4
|
||||
sub_80FCEE4: @ 80FCEE4
|
||||
push {r4,lr}
|
||||
ldr r1, _080FCF04 @ =gUnknown_3007460
|
||||
ldr r1, _080FCF04 @ =gRfuLinkStatus
|
||||
ldr r0, [r1]
|
||||
ldrb r2, [r0, 0x2]
|
||||
movs r3, 0
|
||||
@@ -9567,7 +9567,7 @@ _080FCEF0:
|
||||
ldrb r0, [r0]
|
||||
b _080FCF16
|
||||
.align 2, 0
|
||||
_080FCF04: .4byte gUnknown_3007460
|
||||
_080FCF04: .4byte gRfuLinkStatus
|
||||
_080FCF08:
|
||||
lsrs r2, 1
|
||||
adds r0, r3, 0x1
|
||||
@@ -9626,7 +9626,7 @@ _080FCF5C:
|
||||
adds r6, r2, 0
|
||||
movs r5, 0xFF
|
||||
movs r4, 0
|
||||
ldr r0, _080FCF84 @ =gUnknown_3007460
|
||||
ldr r0, _080FCF84 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
@@ -9641,7 +9641,7 @@ _080FCF5C:
|
||||
_080FCF78: .4byte gUnknown_203ACE4
|
||||
_080FCF7C: .4byte gSprites
|
||||
_080FCF80: .4byte 0x00001234
|
||||
_080FCF84: .4byte gUnknown_3007460
|
||||
_080FCF84: .4byte gRfuLinkStatus
|
||||
_080FCF88:
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
|
||||
+2
-2
@@ -10493,7 +10493,7 @@ _0811AFF8:
|
||||
_0811AFFA:
|
||||
cmp r4, 0x3
|
||||
bgt _0811B030
|
||||
ldr r0, _0811B044 @ =gUnknown_3007460
|
||||
ldr r0, _0811B044 @ =gRfuLinkStatus
|
||||
ldr r0, [r0]
|
||||
lsls r1, r4, 5
|
||||
adds r0, r1
|
||||
@@ -10526,7 +10526,7 @@ _0811B030:
|
||||
bl StringCopy
|
||||
b _0811B080
|
||||
.align 2, 0
|
||||
_0811B044: .4byte gUnknown_3007460
|
||||
_0811B044: .4byte gRfuLinkStatus
|
||||
_0811B048: .4byte gSpeciesNames
|
||||
_0811B04C: .4byte gUnknown_8457DB8
|
||||
_0811B050:
|
||||
|
||||
@@ -1,477 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80A0A48
|
||||
sub_80A0A48: @ 80A0A48
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r3, r2, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
lsls r5, 16
|
||||
lsrs r5, 16
|
||||
lsls r3, 24
|
||||
lsrs r3, 24
|
||||
ldr r0, _080A0A6C @ =sub_80A0B0C
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_80A0AC0
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0A6C: .4byte sub_80A0B0C
|
||||
thumb_func_end sub_80A0A48
|
||||
|
||||
thumb_func_start sub_80A0A70
|
||||
sub_80A0A70: @ 80A0A70
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r3, r2, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
lsls r5, 16
|
||||
lsrs r5, 16
|
||||
lsls r3, 24
|
||||
lsrs r3, 24
|
||||
ldr r0, _080A0A94 @ =sub_80A0C78
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_80A0AC0
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0A94: .4byte sub_80A0C78
|
||||
thumb_func_end sub_80A0A70
|
||||
|
||||
thumb_func_start sub_80A0A98
|
||||
sub_80A0A98: @ 80A0A98
|
||||
push {lr}
|
||||
ldr r0, _080A0AA8 @ =sub_80A0B0C
|
||||
bl FuncIsActiveTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080A0AA8: .4byte sub_80A0B0C
|
||||
thumb_func_end sub_80A0A98
|
||||
|
||||
thumb_func_start sub_80A0AAC
|
||||
sub_80A0AAC: @ 80A0AAC
|
||||
push {lr}
|
||||
ldr r0, _080A0ABC @ =sub_80A0C78
|
||||
bl FuncIsActiveTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080A0ABC: .4byte sub_80A0C78
|
||||
thumb_func_end sub_80A0AAC
|
||||
|
||||
thumb_func_start sub_80A0AC0
|
||||
sub_80A0AC0: @ 80A0AC0
|
||||
push {r4,r5,lr}
|
||||
lsls r1, 16
|
||||
lsrs r4, r1, 16
|
||||
adds r5, r4, 0
|
||||
lsls r3, 24
|
||||
lsrs r3, 24
|
||||
adds r1, r3, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r2, r0, 0
|
||||
ldr r1, _080A0B08 @ =gTasks
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0, r1
|
||||
movs r0, 0
|
||||
strh r0, [r1, 0x8]
|
||||
movs r0, 0x10
|
||||
cmp r4, 0
|
||||
beq _080A0AEE
|
||||
adds r0, r4, 0
|
||||
_080A0AEE:
|
||||
strh r0, [r1, 0xA]
|
||||
movs r0, 0x14
|
||||
cmp r5, 0
|
||||
beq _080A0AF8
|
||||
adds r0, r5, 0
|
||||
_080A0AF8:
|
||||
strh r0, [r1, 0xC]
|
||||
ldr r1, [r1]
|
||||
adds r0, r2, 0
|
||||
bl _call_via_r1
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0B08: .4byte gTasks
|
||||
thumb_func_end sub_80A0AC0
|
||||
|
||||
thumb_func_start sub_80A0B0C
|
||||
sub_80A0B0C: @ 80A0B0C
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
ldr r1, _080A0B30 @ =gTasks
|
||||
adds r4, r0, r1
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x1
|
||||
beq _080A0B8C
|
||||
cmp r0, 0x1
|
||||
bgt _080A0B34
|
||||
cmp r0, 0
|
||||
beq _080A0B3E
|
||||
b _080A0C5A
|
||||
.align 2, 0
|
||||
_080A0B30: .4byte gTasks
|
||||
_080A0B34:
|
||||
cmp r0, 0x2
|
||||
beq _080A0BAE
|
||||
cmp r0, 0x3
|
||||
beq _080A0C10
|
||||
b _080A0C5A
|
||||
_080A0B3E:
|
||||
movs r0, 0x78
|
||||
strh r0, [r4, 0xE]
|
||||
strh r0, [r4, 0x10]
|
||||
movs r0, 0x50
|
||||
strh r0, [r4, 0x12]
|
||||
movs r0, 0x51
|
||||
strh r0, [r4, 0x14]
|
||||
movs r1, 0x80
|
||||
lsls r1, 6
|
||||
movs r0, 0
|
||||
bl SetGpuRegBits
|
||||
ldrh r1, [r4, 0xE]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x10]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x40
|
||||
bl SetGpuReg
|
||||
ldrh r1, [r4, 0x12]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x14]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x44
|
||||
bl SetGpuReg
|
||||
movs r0, 0x48
|
||||
movs r1, 0x3F
|
||||
bl SetGpuReg
|
||||
movs r0, 0x4A
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
b _080A0C6A
|
||||
_080A0B8C:
|
||||
movs r0, 0x50
|
||||
bl GetGpuReg
|
||||
strh r0, [r4, 0x16]
|
||||
movs r0, 0x54
|
||||
bl GetGpuReg
|
||||
strh r0, [r4, 0x18]
|
||||
movs r0, 0x50
|
||||
movs r1, 0xBF
|
||||
bl SetGpuReg
|
||||
movs r0, 0x54
|
||||
movs r1, 0x10
|
||||
bl SetGpuReg
|
||||
b _080A0C6A
|
||||
_080A0BAE:
|
||||
ldrh r0, [r4, 0xE]
|
||||
ldrh r1, [r4, 0xA]
|
||||
subs r0, r1
|
||||
movs r5, 0
|
||||
strh r0, [r4, 0xE]
|
||||
ldrh r2, [r4, 0x10]
|
||||
adds r1, r2
|
||||
strh r1, [r4, 0x10]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
ble _080A0BCC
|
||||
lsls r0, r1, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xEF
|
||||
ble _080A0BF2
|
||||
_080A0BCC:
|
||||
strh r5, [r4, 0xE]
|
||||
movs r0, 0xF0
|
||||
strh r0, [r4, 0x10]
|
||||
movs r0, 0x54
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
ldrh r1, [r4, 0x16]
|
||||
movs r0, 0x50
|
||||
bl SetGpuReg
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl BlendPalettes
|
||||
ldr r0, _080A0C0C @ =gPlttBufferFaded
|
||||
strh r5, [r0]
|
||||
_080A0BF2:
|
||||
ldrh r1, [r4, 0xE]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x10]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x40
|
||||
bl SetGpuReg
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
b _080A0C54
|
||||
.align 2, 0
|
||||
_080A0C0C: .4byte gPlttBufferFaded
|
||||
_080A0C10:
|
||||
ldrh r0, [r4, 0x12]
|
||||
ldrh r1, [r4, 0xC]
|
||||
subs r0, r1
|
||||
strh r0, [r4, 0x12]
|
||||
ldrh r2, [r4, 0x14]
|
||||
adds r1, r2
|
||||
strh r1, [r4, 0x14]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
ble _080A0C2C
|
||||
lsls r0, r1, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x9F
|
||||
ble _080A0C3E
|
||||
_080A0C2C:
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x12]
|
||||
movs r0, 0xA0
|
||||
strh r0, [r4, 0x14]
|
||||
movs r1, 0x80
|
||||
lsls r1, 6
|
||||
movs r0, 0
|
||||
bl ClearGpuRegBits
|
||||
_080A0C3E:
|
||||
ldrh r1, [r4, 0x12]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x14]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x44
|
||||
bl SetGpuReg
|
||||
movs r1, 0x12
|
||||
ldrsh r0, [r4, r1]
|
||||
_080A0C54:
|
||||
cmp r0, 0
|
||||
bne _080A0C70
|
||||
b _080A0C6A
|
||||
_080A0C5A:
|
||||
ldrh r1, [r4, 0x16]
|
||||
movs r0, 0x50
|
||||
bl SetGpuReg
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
b _080A0C70
|
||||
_080A0C6A:
|
||||
ldrh r0, [r4, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x8]
|
||||
_080A0C70:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A0B0C
|
||||
|
||||
thumb_func_start sub_80A0C78
|
||||
sub_80A0C78: @ 80A0C78
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
ldr r1, _080A0C9C @ =gTasks
|
||||
adds r4, r0, r1
|
||||
movs r0, 0x8
|
||||
ldrsh r1, [r4, r0]
|
||||
cmp r1, 0x1
|
||||
beq _080A0CB4
|
||||
cmp r1, 0x1
|
||||
bgt _080A0CA0
|
||||
cmp r1, 0
|
||||
beq _080A0CAA
|
||||
b _080A0DA8
|
||||
.align 2, 0
|
||||
_080A0C9C: .4byte gTasks
|
||||
_080A0CA0:
|
||||
cmp r1, 0x2
|
||||
beq _080A0D02
|
||||
cmp r1, 0x3
|
||||
beq _080A0D54
|
||||
b _080A0DA8
|
||||
_080A0CAA:
|
||||
ldr r0, _080A0CB0 @ =gPlttBufferFaded
|
||||
strh r1, [r0]
|
||||
b _080A0DCA
|
||||
.align 2, 0
|
||||
_080A0CB0: .4byte gPlttBufferFaded
|
||||
_080A0CB4:
|
||||
movs r1, 0
|
||||
strh r1, [r4, 0xE]
|
||||
movs r0, 0xF0
|
||||
strh r0, [r4, 0x10]
|
||||
strh r1, [r4, 0x12]
|
||||
movs r0, 0xA0
|
||||
strh r0, [r4, 0x14]
|
||||
movs r1, 0x80
|
||||
lsls r1, 6
|
||||
movs r0, 0
|
||||
bl SetGpuRegBits
|
||||
ldrh r1, [r4, 0xE]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x10]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x40
|
||||
bl SetGpuReg
|
||||
ldrh r1, [r4, 0x12]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x14]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x44
|
||||
bl SetGpuReg
|
||||
movs r0, 0x48
|
||||
movs r1, 0x3F
|
||||
bl SetGpuReg
|
||||
movs r0, 0x4A
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
b _080A0DCA
|
||||
_080A0D02:
|
||||
ldrh r0, [r4, 0xC]
|
||||
ldrh r2, [r4, 0x12]
|
||||
adds r1, r0, r2
|
||||
strh r1, [r4, 0x12]
|
||||
ldrh r2, [r4, 0x14]
|
||||
subs r0, r2, r0
|
||||
strh r0, [r4, 0x14]
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
cmp r1, 0x4F
|
||||
bgt _080A0D20
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x51
|
||||
bgt _080A0D38
|
||||
_080A0D20:
|
||||
movs r0, 0x50
|
||||
strh r0, [r4, 0x12]
|
||||
movs r0, 0x51
|
||||
strh r0, [r4, 0x14]
|
||||
movs r0, 0x50
|
||||
movs r1, 0xBF
|
||||
bl SetGpuReg
|
||||
movs r0, 0x54
|
||||
movs r1, 0x10
|
||||
bl SetGpuReg
|
||||
_080A0D38:
|
||||
ldrh r1, [r4, 0x12]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x14]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x44
|
||||
bl SetGpuReg
|
||||
movs r1, 0x12
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x50
|
||||
bne _080A0DD0
|
||||
b _080A0DCA
|
||||
_080A0D54:
|
||||
ldrh r0, [r4, 0xA]
|
||||
ldrh r2, [r4, 0xE]
|
||||
adds r1, r0, r2
|
||||
strh r1, [r4, 0xE]
|
||||
ldrh r2, [r4, 0x10]
|
||||
subs r0, r2, r0
|
||||
strh r0, [r4, 0x10]
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
cmp r1, 0x77
|
||||
bgt _080A0D72
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x78
|
||||
bgt _080A0D88
|
||||
_080A0D72:
|
||||
movs r0, 0x78
|
||||
strh r0, [r4, 0xE]
|
||||
strh r0, [r4, 0x10]
|
||||
subs r0, 0x79
|
||||
movs r1, 0x10
|
||||
movs r2, 0
|
||||
bl BlendPalettes
|
||||
ldr r1, _080A0DA4 @ =gPlttBufferFaded
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
_080A0D88:
|
||||
ldrh r1, [r4, 0xE]
|
||||
lsls r1, 8
|
||||
ldrh r0, [r4, 0x10]
|
||||
orrs r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
movs r0, 0x40
|
||||
bl SetGpuReg
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x78
|
||||
bne _080A0DD0
|
||||
b _080A0DCA
|
||||
.align 2, 0
|
||||
_080A0DA4: .4byte gPlttBufferFaded
|
||||
_080A0DA8:
|
||||
movs r1, 0x80
|
||||
lsls r1, 6
|
||||
movs r0, 0
|
||||
bl ClearGpuRegBits
|
||||
movs r0, 0x54
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
movs r0, 0x50
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
b _080A0DD0
|
||||
_080A0DCA:
|
||||
ldrh r0, [r4, 0x8]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x8]
|
||||
_080A0DD0:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A0C78
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -5755,7 +5755,7 @@ sub_8137578: @ 8137578
|
||||
bl GetNature
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
ldr r1, _081375F0 @ =gNatureNames
|
||||
ldr r1, _081375F0 @ =gNatureNamePointers
|
||||
lsls r0, r6, 2
|
||||
adds r0, r1
|
||||
ldr r1, [r0]
|
||||
@@ -5796,7 +5796,7 @@ _081375B2:
|
||||
.align 2, 0
|
||||
_081375E8: .4byte gUnknown_203B140
|
||||
_081375EC: .4byte 0x00003290
|
||||
_081375F0: .4byte gNatureNames
|
||||
_081375F0: .4byte gNatureNamePointers
|
||||
_081375F4:
|
||||
ldr r0, [r7]
|
||||
ldr r1, _08137614 @ =0x00003024
|
||||
@@ -5952,7 +5952,7 @@ sub_8137724: @ 8137724
|
||||
bl GetNature
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
ldr r1, _081377A8 @ =gNatureNames
|
||||
ldr r1, _081377A8 @ =gNatureNamePointers
|
||||
lsls r0, r6, 2
|
||||
adds r0, r1
|
||||
ldr r1, [r0]
|
||||
@@ -5997,7 +5997,7 @@ _08137790:
|
||||
.align 2, 0
|
||||
_081377A0: .4byte gUnknown_203B140
|
||||
_081377A4: .4byte 0x00003290
|
||||
_081377A8: .4byte gNatureNames
|
||||
_081377A8: .4byte gNatureNamePointers
|
||||
_081377AC:
|
||||
cmp r5, 0xFF
|
||||
bne _081377D0
|
||||
|
||||
-13825
File diff suppressed because it is too large
Load Diff
@@ -1,535 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start HealPlayerParty
|
||||
HealPlayerParty: @ 80A0058
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r0, _080A0114 @ =gPlayerPartyCount
|
||||
ldrb r0, [r0]
|
||||
cmp r8, r0
|
||||
bcs _080A0104
|
||||
ldr r1, _080A0118 @ =gPlayerParty
|
||||
mov r10, r1
|
||||
mov r6, sp
|
||||
_080A0076:
|
||||
movs r0, 0x64
|
||||
mov r4, r8
|
||||
muls r4, r0
|
||||
add r4, r10
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x3A
|
||||
bl GetMonData
|
||||
lsls r1, r0, 16
|
||||
strb r0, [r6]
|
||||
lsrs r1, 24
|
||||
strb r1, [r6, 0x1]
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x39
|
||||
mov r2, sp
|
||||
bl SetMonData
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x15
|
||||
bl GetMonData
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
movs r5, 0
|
||||
movs r1, 0x1
|
||||
add r1, r8
|
||||
mov r9, r1
|
||||
_080A00AC:
|
||||
adds r1, r5, 0
|
||||
adds r1, 0xD
|
||||
adds r0, r4, 0
|
||||
bl GetMonData
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
adds r1, r7, 0
|
||||
adds r2, r5, 0
|
||||
bl CalculatePPWithBonus
|
||||
strb r0, [r6]
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x11
|
||||
adds r0, r4, 0
|
||||
mov r2, sp
|
||||
bl SetMonData
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r5, 0x3
|
||||
bls _080A00AC
|
||||
movs r0, 0
|
||||
strb r0, [r6]
|
||||
strb r0, [r6, 0x1]
|
||||
strb r0, [r6, 0x2]
|
||||
strb r0, [r6, 0x3]
|
||||
movs r1, 0x64
|
||||
mov r0, r8
|
||||
muls r0, r1
|
||||
add r0, r10
|
||||
movs r1, 0x37
|
||||
mov r2, sp
|
||||
bl SetMonData
|
||||
mov r1, r9
|
||||
lsls r0, r1, 24
|
||||
lsrs r0, 24
|
||||
mov r8, r0
|
||||
ldr r0, _080A0114 @ =gPlayerPartyCount
|
||||
ldrb r0, [r0]
|
||||
cmp r8, r0
|
||||
bcc _080A0076
|
||||
_080A0104:
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0114: .4byte gPlayerPartyCount
|
||||
_080A0118: .4byte gPlayerParty
|
||||
thumb_func_end HealPlayerParty
|
||||
|
||||
thumb_func_start ScriptGiveMon
|
||||
ScriptGiveMon: @ 80A011C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x14
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r5, r2, 0
|
||||
lsls r6, 16
|
||||
lsrs r6, 16
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
lsls r5, 16
|
||||
lsrs r0, r5, 16
|
||||
mov r8, r0
|
||||
movs r0, 0x64
|
||||
bl AllocZeroed
|
||||
adds r7, r0, 0
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
str r0, [sp, 0x4]
|
||||
str r0, [sp, 0x8]
|
||||
str r0, [sp, 0xC]
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0x20
|
||||
bl CreateMon
|
||||
add r0, sp, 0x10
|
||||
mov r1, r8
|
||||
strb r1, [r0]
|
||||
lsrs r5, 24
|
||||
strb r5, [r0, 0x1]
|
||||
adds r0, r7, 0
|
||||
movs r1, 0xC
|
||||
add r2, sp, 0x10
|
||||
bl SetMonData
|
||||
adds r0, r7, 0
|
||||
bl GiveMonToPlayer
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
adds r0, r6, 0
|
||||
bl SpeciesToNationalPokedexNum
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
cmp r4, 0x1
|
||||
bgt _080A0196
|
||||
cmp r4, 0
|
||||
blt _080A0196
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x2
|
||||
bl GetSetPokedexFlag
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x3
|
||||
bl GetSetPokedexFlag
|
||||
_080A0196:
|
||||
adds r0, r7, 0
|
||||
bl Free
|
||||
adds r0, r4, 0
|
||||
add sp, 0x14
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end ScriptGiveMon
|
||||
|
||||
thumb_func_start ScriptGiveEgg
|
||||
ScriptGiveEgg: @ 80A01AC
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
adds r4, r0, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
movs r0, 0x64
|
||||
bl AllocZeroed
|
||||
adds r5, r0, 0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x1
|
||||
bl CreateEgg
|
||||
movs r1, 0x1
|
||||
mov r0, sp
|
||||
strb r1, [r0]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x2D
|
||||
mov r2, sp
|
||||
bl SetMonData
|
||||
adds r0, r5, 0
|
||||
bl GiveMonToPlayer
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r5, 0
|
||||
bl Free
|
||||
adds r0, r4, 0
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end ScriptGiveEgg
|
||||
|
||||
thumb_func_start HasEnoughMonsForDoubleBattle
|
||||
HasEnoughMonsForDoubleBattle: @ 80A01F4
|
||||
push {lr}
|
||||
bl GetMonsStateToDoubles
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0x1
|
||||
beq _080A0210
|
||||
cmp r1, 0x1
|
||||
bgt _080A020C
|
||||
cmp r1, 0
|
||||
beq _080A0210
|
||||
b _080A0214
|
||||
_080A020C:
|
||||
cmp r1, 0x2
|
||||
bne _080A0214
|
||||
_080A0210:
|
||||
ldr r0, _080A0218 @ =gSpecialVar_Result
|
||||
strh r1, [r0]
|
||||
_080A0214:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0218: .4byte gSpecialVar_Result
|
||||
thumb_func_end HasEnoughMonsForDoubleBattle
|
||||
|
||||
thumb_func_start CheckPartyMonHasHeldItem
|
||||
CheckPartyMonHasHeldItem: @ 80A021C
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 16
|
||||
lsrs r6, r0, 16
|
||||
movs r5, 0
|
||||
movs r7, 0xCE
|
||||
lsls r7, 1
|
||||
_080A0228:
|
||||
movs r0, 0x64
|
||||
adds r1, r5, 0
|
||||
muls r1, r0
|
||||
ldr r0, _080A0258 @ =gPlayerParty
|
||||
adds r4, r1, r0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x41
|
||||
bl GetMonData
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0
|
||||
beq _080A025C
|
||||
cmp r0, r7
|
||||
beq _080A025C
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xC
|
||||
bl GetMonData
|
||||
cmp r0, r6
|
||||
bne _080A025C
|
||||
movs r0, 0x1
|
||||
b _080A0264
|
||||
.align 2, 0
|
||||
_080A0258: .4byte gPlayerParty
|
||||
_080A025C:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x5
|
||||
ble _080A0228
|
||||
movs r0, 0
|
||||
_080A0264:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end CheckPartyMonHasHeldItem
|
||||
|
||||
thumb_func_start GetNameOfEnigmaBerryInPlayerParty
|
||||
GetNameOfEnigmaBerryInPlayerParty: @ 80A026C
|
||||
push {r4,lr}
|
||||
movs r0, 0xAF
|
||||
bl CheckPartyMonHasHeldItem
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0x1
|
||||
bne _080A028E
|
||||
movs r0, 0xAF
|
||||
bl ItemIdToBerryType
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, _080A0298 @ =gStringVar1
|
||||
bl GetBerryNameByBerryType
|
||||
_080A028E:
|
||||
adds r0, r4, 0
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080A0298: .4byte gStringVar1
|
||||
thumb_func_end GetNameOfEnigmaBerryInPlayerParty
|
||||
|
||||
thumb_func_start CreateScriptedWildMon
|
||||
CreateScriptedWildMon: @ 80A029C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x14
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
lsls r7, r2, 16
|
||||
lsrs r6, r7, 16
|
||||
bl ZeroEnemyPartyMons
|
||||
ldr r0, _080A02F8 @ =gEnemyParty
|
||||
mov r8, r0
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
str r0, [sp, 0x4]
|
||||
str r0, [sp, 0x8]
|
||||
str r0, [sp, 0xC]
|
||||
mov r0, r8
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
movs r3, 0x20
|
||||
bl CreateMon
|
||||
cmp r6, 0
|
||||
beq _080A02EA
|
||||
add r0, sp, 0x10
|
||||
strb r6, [r0]
|
||||
adds r1, r0, 0
|
||||
lsrs r0, r7, 24
|
||||
strb r0, [r1, 0x1]
|
||||
mov r0, r8
|
||||
movs r1, 0xC
|
||||
add r2, sp, 0x10
|
||||
bl SetMonData
|
||||
_080A02EA:
|
||||
add sp, 0x14
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A02F8: .4byte gEnemyParty
|
||||
thumb_func_end CreateScriptedWildMon
|
||||
|
||||
thumb_func_start ScriptSetMonMoveSlot
|
||||
ScriptSetMonMoveSlot: @ 80A02FC
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
lsls r1, 16
|
||||
lsrs r4, r1, 16
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
cmp r3, 0x6
|
||||
bls _080A0318
|
||||
ldr r0, _080A032C @ =gPlayerPartyCount
|
||||
ldrb r0, [r0]
|
||||
subs r0, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
_080A0318:
|
||||
movs r0, 0x64
|
||||
muls r0, r3
|
||||
ldr r1, _080A0330 @ =gPlayerParty
|
||||
adds r0, r1
|
||||
adds r1, r4, 0
|
||||
bl SetMonMoveSlot
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A032C: .4byte gPlayerPartyCount
|
||||
_080A0330: .4byte gPlayerParty
|
||||
thumb_func_end ScriptSetMonMoveSlot
|
||||
|
||||
thumb_func_start ChooseHalfPartyForBattle
|
||||
ChooseHalfPartyForBattle: @ 80A0334
|
||||
push {lr}
|
||||
ldr r1, _080A0348 @ =gMain
|
||||
ldr r0, _080A034C @ =sub_80A0350
|
||||
str r0, [r1, 0x8]
|
||||
movs r0, 0
|
||||
bl InitChooseHalfPartyForBattle
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0348: .4byte gMain
|
||||
_080A034C: .4byte sub_80A0350
|
||||
thumb_func_end ChooseHalfPartyForBattle
|
||||
|
||||
thumb_func_start sub_80A0350
|
||||
sub_80A0350: @ 80A0350
|
||||
push {lr}
|
||||
ldr r0, _080A0360 @ =gSelectedOrderFromParty
|
||||
ldrb r1, [r0]
|
||||
cmp r1, 0
|
||||
bne _080A0368
|
||||
ldr r0, _080A0364 @ =gSpecialVar_Result
|
||||
strh r1, [r0]
|
||||
b _080A036E
|
||||
.align 2, 0
|
||||
_080A0360: .4byte gSelectedOrderFromParty
|
||||
_080A0364: .4byte gSpecialVar_Result
|
||||
_080A0368:
|
||||
ldr r1, _080A0378 @ =gSpecialVar_Result
|
||||
movs r0, 0x1
|
||||
strh r0, [r1]
|
||||
_080A036E:
|
||||
ldr r0, _080A037C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
|
||||
bl SetMainCallback2
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0378: .4byte gSpecialVar_Result
|
||||
_080A037C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
|
||||
thumb_func_end sub_80A0350
|
||||
|
||||
thumb_func_start ChooseBattleTowerPlayerParty
|
||||
ChooseBattleTowerPlayerParty: @ 80A0380
|
||||
push {lr}
|
||||
ldr r1, _080A0394 @ =gMain
|
||||
ldr r0, _080A0398 @ =sub_80A039C
|
||||
str r0, [r1, 0x8]
|
||||
movs r0, 0x1
|
||||
bl InitChooseHalfPartyForBattle
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0394: .4byte gMain
|
||||
_080A0398: .4byte sub_80A039C
|
||||
thumb_func_end ChooseBattleTowerPlayerParty
|
||||
|
||||
thumb_func_start sub_80A039C
|
||||
sub_80A039C: @ 80A039C
|
||||
push {r4,lr}
|
||||
ldr r0, _080A03B0 @ =gSelectedOrderFromParty
|
||||
ldrb r4, [r0]
|
||||
cmp r4, 0
|
||||
bne _080A03B8
|
||||
bl LoadPlayerParty
|
||||
ldr r0, _080A03B4 @ =gSpecialVar_Result
|
||||
strh r4, [r0]
|
||||
b _080A03C2
|
||||
.align 2, 0
|
||||
_080A03B0: .4byte gSelectedOrderFromParty
|
||||
_080A03B4: .4byte gSpecialVar_Result
|
||||
_080A03B8:
|
||||
bl ReducePlayerPartyToThree
|
||||
ldr r1, _080A03D0 @ =gSpecialVar_Result
|
||||
movs r0, 0x1
|
||||
strh r0, [r1]
|
||||
_080A03C2:
|
||||
ldr r0, _080A03D4 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
|
||||
bl SetMainCallback2
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A03D0: .4byte gSpecialVar_Result
|
||||
_080A03D4: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
|
||||
thumb_func_end sub_80A039C
|
||||
|
||||
thumb_func_start ReducePlayerPartyToThree
|
||||
ReducePlayerPartyToThree: @ 80A03D8
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x4
|
||||
movs r0, 0x96
|
||||
lsls r0, 1
|
||||
bl AllocZeroed
|
||||
adds r7, r0, 0
|
||||
movs r5, 0
|
||||
movs r0, 0x64
|
||||
mov r8, r0
|
||||
ldr r6, _080A0454 @ =gPlayerParty
|
||||
adds r4, r7, 0
|
||||
_080A03F4:
|
||||
ldr r0, _080A0458 @ =gSelectedOrderFromParty
|
||||
adds r1, r5, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _080A040E
|
||||
subs r0, 0x1
|
||||
mov r1, r8
|
||||
muls r1, r0
|
||||
adds r1, r6
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x64
|
||||
bl memcpy
|
||||
_080A040E:
|
||||
adds r4, 0x64
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x2
|
||||
ble _080A03F4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
ldr r4, _080A0454 @ =gPlayerParty
|
||||
ldr r2, _080A045C @ =0x05000096
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl CpuSet
|
||||
adds r5, r7, 0
|
||||
adds r6, r7, 0
|
||||
adds r6, 0xC8
|
||||
_080A042C:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x64
|
||||
bl memcpy
|
||||
adds r5, 0x64
|
||||
adds r4, 0x64
|
||||
cmp r5, r6
|
||||
ble _080A042C
|
||||
bl CalculatePlayerPartyCount
|
||||
adds r0, r7, 0
|
||||
bl Free
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A0454: .4byte gPlayerParty
|
||||
_080A0458: .4byte gSelectedOrderFromParty
|
||||
_080A045C: .4byte 0x05000096
|
||||
thumb_func_end ReducePlayerPartyToThree
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -1,422 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start Special_ChooseMonFromParty
|
||||
Special_ChooseMonFromParty: @ 80BF8FC
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
bl ScriptContext2_Enable
|
||||
ldr r0, _080BF934 @ =sub_80BF97C
|
||||
movs r1, 0xA
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080BF938 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
movs r2, 0
|
||||
movs r0, 0x3
|
||||
strh r0, [r1, 0x8]
|
||||
subs r0, 0x4
|
||||
str r2, [sp]
|
||||
movs r1, 0
|
||||
movs r3, 0x10
|
||||
bl BeginNormalPaletteFade
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BF934: .4byte sub_80BF97C
|
||||
_080BF938: .4byte gTasks
|
||||
thumb_func_end Special_ChooseMonFromParty
|
||||
|
||||
thumb_func_start SelectMoveTutorMon
|
||||
SelectMoveTutorMon: @ 80BF93C
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
bl ScriptContext2_Enable
|
||||
ldr r0, _080BF974 @ =sub_80BF97C
|
||||
movs r1, 0xA
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080BF978 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
movs r2, 0
|
||||
movs r0, 0x7
|
||||
strh r0, [r1, 0x8]
|
||||
subs r0, 0x8
|
||||
str r2, [sp]
|
||||
movs r1, 0
|
||||
movs r3, 0x10
|
||||
bl BeginNormalPaletteFade
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BF974: .4byte sub_80BF97C
|
||||
_080BF978: .4byte gTasks
|
||||
thumb_func_end SelectMoveTutorMon
|
||||
|
||||
thumb_func_start sub_80BF97C
|
||||
sub_80BF97C: @ 80BF97C
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r2, _080BF9B4 @ =gPaletteFade
|
||||
ldrb r1, [r2, 0x7]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080BF9AC
|
||||
ldrb r0, [r2, 0x8]
|
||||
movs r1, 0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r2, 0x8]
|
||||
ldr r1, _080BF9B8 @ =gTasks
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r0, r1
|
||||
ldrb r0, [r0, 0x8]
|
||||
bl ChoosePartyMonByMenuType
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
_080BF9AC:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BF9B4: .4byte gPaletteFade
|
||||
_080BF9B8: .4byte gTasks
|
||||
thumb_func_end sub_80BF97C
|
||||
|
||||
thumb_func_start SelectMove
|
||||
SelectMove: @ 80BF9BC
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _080BF9F0 @ =gPlayerParty
|
||||
ldr r1, _080BF9F4 @ =gSpecialVar_0x8004
|
||||
ldrb r1, [r1]
|
||||
ldr r2, _080BF9F8 @ =gPlayerPartyCount
|
||||
ldrb r2, [r2]
|
||||
subs r2, 0x1
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r3, _080BF9FC @ =CB2_ReturnToField
|
||||
movs r4, 0
|
||||
str r4, [sp]
|
||||
bl ShowSelectMovePokemonSummaryScreen
|
||||
movs r0, 0x3
|
||||
bl sub_8138B38
|
||||
ldr r1, _080BFA00 @ =gFieldCallback
|
||||
ldr r0, _080BFA04 @ =FieldCallback_ReturnToEventScript2
|
||||
str r0, [r1]
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BF9F0: .4byte gPlayerParty
|
||||
_080BF9F4: .4byte gSpecialVar_0x8004
|
||||
_080BF9F8: .4byte gPlayerPartyCount
|
||||
_080BF9FC: .4byte CB2_ReturnToField
|
||||
_080BFA00: .4byte gFieldCallback
|
||||
_080BFA04: .4byte FieldCallback_ReturnToEventScript2
|
||||
thumb_func_end SelectMove
|
||||
|
||||
thumb_func_start ScrSpecial_CountPokemonMoves
|
||||
ScrSpecial_CountPokemonMoves: @ 80BFA08
|
||||
push {r4,r5,lr}
|
||||
ldr r1, _080BFA44 @ =gSpecialVar_Result
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
movs r4, 0
|
||||
adds r5, r1, 0
|
||||
_080BFA14:
|
||||
ldr r0, _080BFA48 @ =gSpecialVar_0x8004
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x64
|
||||
muls r0, r1
|
||||
ldr r1, _080BFA4C @ =gPlayerParty
|
||||
adds r0, r1
|
||||
adds r1, r4, 0
|
||||
adds r1, 0xD
|
||||
bl GetMonData
|
||||
cmp r0, 0
|
||||
beq _080BFA32
|
||||
ldrh r0, [r5]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5]
|
||||
_080BFA32:
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
cmp r4, 0x3
|
||||
bls _080BFA14
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BFA44: .4byte gSpecialVar_Result
|
||||
_080BFA48: .4byte gSpecialVar_0x8004
|
||||
_080BFA4C: .4byte gPlayerParty
|
||||
thumb_func_end ScrSpecial_CountPokemonMoves
|
||||
|
||||
thumb_func_start ScrSpecial_GetPokemonNicknameAndMoveName
|
||||
ScrSpecial_GetPokemonNicknameAndMoveName: @ 80BFA50
|
||||
push {r4,r5,lr}
|
||||
ldr r0, _080BFA90 @ =gSpecialVar_0x8004
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x64
|
||||
adds r5, r1, 0
|
||||
muls r5, r0
|
||||
ldr r0, _080BFA94 @ =gPlayerParty
|
||||
adds r5, r0
|
||||
ldr r0, _080BFA98 @ =gSpecialVar_0x8005
|
||||
ldrh r1, [r0]
|
||||
adds r1, 0xD
|
||||
adds r0, r5, 0
|
||||
bl GetMonData
|
||||
adds r4, r0, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
ldr r1, _080BFA9C @ =gStringVar1
|
||||
adds r0, r5, 0
|
||||
bl GetMonNickname
|
||||
ldr r0, _080BFAA0 @ =gStringVar2
|
||||
movs r1, 0xD
|
||||
muls r1, r4
|
||||
ldr r2, _080BFAA4 @ =gMoveNames
|
||||
adds r1, r2
|
||||
bl StringCopy
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BFA90: .4byte gSpecialVar_0x8004
|
||||
_080BFA94: .4byte gPlayerParty
|
||||
_080BFA98: .4byte gSpecialVar_0x8005
|
||||
_080BFA9C: .4byte gStringVar1
|
||||
_080BFAA0: .4byte gStringVar2
|
||||
_080BFAA4: .4byte gMoveNames
|
||||
thumb_func_end ScrSpecial_GetPokemonNicknameAndMoveName
|
||||
|
||||
thumb_func_start sub_80BFAA8
|
||||
sub_80BFAA8: @ 80BFAA8
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x20
|
||||
mov r8, r0
|
||||
adds r5, r1, 0
|
||||
adds r4, r2, 0
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r5, 0
|
||||
adds r0, 0xD
|
||||
str r0, [sp, 0x8]
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x8]
|
||||
bl GetMonData
|
||||
mov r1, sp
|
||||
adds r1, 0x2
|
||||
str r1, [sp, 0x14]
|
||||
strh r0, [r1]
|
||||
adds r3, r4, 0
|
||||
adds r3, 0xD
|
||||
str r3, [sp, 0xC]
|
||||
mov r0, r8
|
||||
adds r1, r3, 0
|
||||
bl GetMonData
|
||||
mov r1, sp
|
||||
strh r0, [r1]
|
||||
adds r7, r5, 0
|
||||
adds r7, 0x11
|
||||
str r7, [sp, 0x10]
|
||||
mov r0, r8
|
||||
adds r1, r7, 0
|
||||
bl GetMonData
|
||||
mov r1, sp
|
||||
adds r1, 0x5
|
||||
str r1, [sp, 0x18]
|
||||
strb r0, [r1]
|
||||
adds r3, r4, 0
|
||||
adds r3, 0x11
|
||||
str r3, [sp, 0x1C]
|
||||
mov r0, r8
|
||||
adds r1, r3, 0
|
||||
bl GetMonData
|
||||
add r7, sp, 0x4
|
||||
mov r10, r7
|
||||
strb r0, [r7]
|
||||
mov r0, r8
|
||||
movs r1, 0x15
|
||||
bl GetMonData
|
||||
mov r6, sp
|
||||
adds r6, 0x6
|
||||
strb r0, [r6]
|
||||
ldr r1, _080BFBA4 @ =gPPUpGetMask
|
||||
adds r0, r5, r1
|
||||
ldrb r0, [r0]
|
||||
mov r9, r0
|
||||
ldrb r0, [r6]
|
||||
adds r2, r0, 0
|
||||
mov r3, r9
|
||||
ands r2, r3
|
||||
lsls r5, 1
|
||||
asrs r2, r5
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
adds r1, r4, r1
|
||||
ldrb r3, [r1]
|
||||
adds r1, r0, 0
|
||||
ands r1, r3
|
||||
lsls r4, 1
|
||||
asrs r1, r4
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
mov r7, r9
|
||||
bics r0, r7
|
||||
strb r0, [r6]
|
||||
ldrb r0, [r6]
|
||||
bics r0, r3
|
||||
strb r0, [r6]
|
||||
lsls r2, r4
|
||||
lsls r1, r5
|
||||
adds r2, r1
|
||||
ldrb r0, [r6]
|
||||
orrs r0, r2
|
||||
strb r0, [r6]
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x8]
|
||||
mov r2, sp
|
||||
bl SetMonData
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0xC]
|
||||
ldr r2, [sp, 0x14]
|
||||
bl SetMonData
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x10]
|
||||
mov r2, r10
|
||||
bl SetMonData
|
||||
mov r0, r8
|
||||
ldr r1, [sp, 0x1C]
|
||||
ldr r2, [sp, 0x18]
|
||||
bl SetMonData
|
||||
mov r0, r8
|
||||
movs r1, 0x15
|
||||
adds r2, r6, 0
|
||||
bl SetMonData
|
||||
add sp, 0x20
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BFBA4: .4byte gPPUpGetMask
|
||||
thumb_func_end sub_80BFAA8
|
||||
|
||||
thumb_func_start DeleteMonMove
|
||||
DeleteMonMove: @ 80BFBA8
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
ldr r0, _080BFC08 @ =gSpecialVar_0x8004
|
||||
mov r8, r0
|
||||
ldrh r0, [r0]
|
||||
movs r6, 0x64
|
||||
muls r0, r6
|
||||
ldr r5, _080BFC0C @ =gPlayerParty
|
||||
adds r0, r5
|
||||
ldr r4, _080BFC10 @ =gSpecialVar_0x8005
|
||||
ldrb r2, [r4]
|
||||
movs r1, 0
|
||||
bl SetMonMoveSlot
|
||||
mov r1, r8
|
||||
ldrh r0, [r1]
|
||||
muls r0, r6
|
||||
adds r0, r5
|
||||
ldrb r1, [r4]
|
||||
bl RemoveMonPPBonus
|
||||
ldrh r4, [r4]
|
||||
cmp r4, 0x2
|
||||
bhi _080BFBFC
|
||||
_080BFBDA:
|
||||
ldr r0, _080BFC08 @ =gSpecialVar_0x8004
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x64
|
||||
muls r0, r1
|
||||
ldr r1, _080BFC0C @ =gPlayerParty
|
||||
adds r0, r1
|
||||
lsls r1, r4, 24
|
||||
lsrs r1, 24
|
||||
adds r4, 0x1
|
||||
lsls r2, r4, 24
|
||||
lsrs r2, 24
|
||||
bl sub_80BFAA8
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
cmp r4, 0x2
|
||||
bls _080BFBDA
|
||||
_080BFBFC:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BFC08: .4byte gSpecialVar_0x8004
|
||||
_080BFC0C: .4byte gPlayerParty
|
||||
_080BFC10: .4byte gSpecialVar_0x8005
|
||||
thumb_func_end DeleteMonMove
|
||||
|
||||
thumb_func_start IsSelectedMonEgg
|
||||
IsSelectedMonEgg: @ 80BFC14
|
||||
push {lr}
|
||||
ldr r0, _080BFC38 @ =gSpecialVar_0x8004
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x64
|
||||
muls r0, r1
|
||||
ldr r1, _080BFC3C @ =gPlayerParty
|
||||
adds r0, r1
|
||||
movs r1, 0x2D
|
||||
bl GetMonData
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
beq _080BFC44
|
||||
ldr r1, _080BFC40 @ =gSpecialVar_Result
|
||||
movs r0, 0x1
|
||||
strh r0, [r1]
|
||||
b _080BFC48
|
||||
.align 2, 0
|
||||
_080BFC38: .4byte gSpecialVar_0x8004
|
||||
_080BFC3C: .4byte gPlayerParty
|
||||
_080BFC40: .4byte gSpecialVar_Result
|
||||
_080BFC44:
|
||||
ldr r0, _080BFC4C @ =gSpecialVar_Result
|
||||
strh r1, [r0]
|
||||
_080BFC48:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080BFC4C: .4byte gSpecialVar_Result
|
||||
thumb_func_end IsSelectedMonEgg
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -16,7 +16,7 @@ Init:
|
||||
msr cpsr_cf, r0
|
||||
ldr sp, sp_sys
|
||||
ldr r1, =INTR_VECTOR
|
||||
ldr r0, =IntrMain
|
||||
ldr r0, =intr_main
|
||||
str r0, [r1]
|
||||
ldr r1, =AgbMain + 1
|
||||
mov lr, pc
|
||||
@@ -32,8 +32,8 @@ sp_irq: .word IWRAM_END - 0x60
|
||||
|
||||
.arm
|
||||
.align 2, 0
|
||||
.global IntrMain
|
||||
IntrMain: @ 0x2010048
|
||||
.global intr_main
|
||||
intr_main: @ 0x2010048
|
||||
mov ip, REG_BASE
|
||||
add r3, ip, OFFSET_REG_IE
|
||||
ldr r2, [r3]
|
||||
@@ -79,4 +79,4 @@ _020100DC:
|
||||
ldr r0, [r1]
|
||||
bx r0
|
||||
.pool
|
||||
.size IntrMain, .-IntrMain
|
||||
.size intr_main, .-intr_main
|
||||
|
||||
@@ -17,7 +17,7 @@ u32 gGameVersion;
|
||||
|
||||
EWRAM_DATA u8 gSharedMem[0x8000] = {};
|
||||
|
||||
void IntrMain(void);
|
||||
void intr_main(void);
|
||||
void ReadKeys(void);
|
||||
void dummy_intr_0(void);
|
||||
void dummy_intr_1(void);
|
||||
@@ -62,7 +62,7 @@ void AgbMain(void)
|
||||
{
|
||||
RegisterRamReset(0x1E);
|
||||
DmaCopy32(3, gIntrFuncPointers, gIntrTable, sizeof gIntrFuncPointers);
|
||||
DmaCopy32(3, IntrMain, gIntrVector, sizeof(gIntrVector));
|
||||
DmaCopy32(3, intr_main, gIntrVector, sizeof(gIntrVector));
|
||||
INTR_VECTOR = gIntrVector;
|
||||
REG_IE = INTR_FLAG_VBLANK;
|
||||
if (*RomHeaderMagic == 0x96 && *(u32 *)RomHeaderGameCode == *(u32 *)gBerryFixGameCode)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
gCanvasColumnStart
|
||||
gCanvasPixels
|
||||
gCanvasRowEnd
|
||||
gCanvasHeight
|
||||
gCanvasColumnEnd
|
||||
gCanvasRowStart
|
||||
gCanvasMonPersonality
|
||||
gCanvasWidth
|
||||
gCanvasPalette
|
||||
gCanvasPaletteStart
|
||||
@@ -0,0 +1,5 @@
|
||||
gRfuSlotStatusUNI
|
||||
gRfuSlotStatusNI
|
||||
gRfuLinkStatus
|
||||
gRfuStatic
|
||||
gRfuFixed
|
||||
@@ -0,0 +1 @@
|
||||
gRfuSIO32Id
|
||||
@@ -0,0 +1 @@
|
||||
gSTWIStatus
|
||||
+3
-89
@@ -1,91 +1,5 @@
|
||||
.ifdef SAPPHIRE
|
||||
.equiv GAME_VERSION, 1
|
||||
.ifdef FIRERED
|
||||
.equiv GAME_VERSION, 4
|
||||
.else
|
||||
.equiv GAME_VERSION, 2
|
||||
.endif
|
||||
|
||||
.ifdef SAPPHIRE
|
||||
.set BGM_EVIL_TEAM, BGM_AQA_0
|
||||
.set BGM_GOOD_TEAM, BGM_MGM0
|
||||
.else
|
||||
.set BGM_EVIL_TEAM, BGM_MGM0
|
||||
.set BGM_GOOD_TEAM, BGM_AQA_0
|
||||
.endc
|
||||
|
||||
.ifdef SAPPHIRE
|
||||
.set ITEM_RED_OR_BLUE_ORB, ITEM_BLUE_ORB
|
||||
.else
|
||||
.set ITEM_RED_OR_BLUE_ORB, ITEM_RED_ORB
|
||||
.endif
|
||||
|
||||
.ifdef SAPPHIRE
|
||||
.set SPECIES_GROUDON_OR_KYOGRE, SPECIES_KYOGRE
|
||||
.else
|
||||
.set SPECIES_GROUDON_OR_KYOGRE, SPECIES_GROUDON
|
||||
.endif
|
||||
|
||||
.ifdef SAPPHIRE
|
||||
.set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIOS
|
||||
.else
|
||||
.set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIAS
|
||||
.endif
|
||||
|
||||
.ifdef SAPPHIRE
|
||||
.set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_9
|
||||
.set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_15
|
||||
.set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_19
|
||||
.set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_20
|
||||
.set OPPONENT_514, OPPONENT_HECTOR_1
|
||||
.set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_MATT_2
|
||||
.set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_13
|
||||
.set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_1
|
||||
.set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_2
|
||||
.set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_3
|
||||
.set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_26
|
||||
.set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_MATT_1
|
||||
.set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_4
|
||||
.set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_27
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_5
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_6
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_SHELLY_2
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_7
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_ARCHIE_2
|
||||
.set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_ARCHIE_3
|
||||
.set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_22
|
||||
.set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_23
|
||||
.set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_24
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_16
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_25
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_17
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_18
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_SHELLY_1
|
||||
.else
|
||||
.set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_36
|
||||
.set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_42
|
||||
.set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_46
|
||||
.set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_47
|
||||
.set OPPONENT_514, OPPONENT_HECTOR_2
|
||||
.set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_TABITHA_2
|
||||
.set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_40
|
||||
.set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_28
|
||||
.set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_29
|
||||
.set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_30
|
||||
.set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_53
|
||||
.set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_TABITHA_1
|
||||
.set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_31
|
||||
.set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_54
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_32
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_33
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_COURTNEY_2
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_34
|
||||
.set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_MAXIE_2
|
||||
.set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_MAXIE_3
|
||||
.set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_49
|
||||
.set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_50
|
||||
.set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_51
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_43
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_52
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_44
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_45
|
||||
.set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_COURTNEY_1
|
||||
.equiv GAME_VERSION, 5
|
||||
.endif
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/trainer_classes.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/maps.h"
|
||||
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2, 0
|
||||
|
||||
gUnknown_8260270:: @ 8260270
|
||||
.4byte 0xc0004000, 0x00000400
|
||||
|
||||
gUnknown_8260278:: @ 8260278
|
||||
spr_template 55039, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55040, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_82602A8:: @ 82602A8
|
||||
spr_template 55041, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
spr_template 55042, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_82602D8:: @ 82602D8
|
||||
spr_template 55051, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_82602F0::
|
||||
.4byte 0x40004000, 0x00000400
|
||||
|
||||
gUnknown_82602F8:: @ 82602F8
|
||||
spr_template 55044, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
|
||||
spr_template 55045, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
|
||||
spr_template 55046, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
|
||||
spr_template 55047, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
|
||||
|
||||
gUnknown_8260358::
|
||||
subsprite 240, 0, 1, 0x0000, 64x32
|
||||
subsprite 48, 0, 1, 0x0020, 32x32
|
||||
subsprite 240, 32, 1, 0x0030, 32x8
|
||||
subsprite 16, 32, 1, 0x0034, 32x8
|
||||
subsprite 48, 32, 1, 0x0038, 32x8
|
||||
|
||||
gUnknown_826036C::
|
||||
subsprite 240, 0, 1, 0x0040, 64x32
|
||||
subsprite 48, 0, 1, 0x0060, 32x32
|
||||
subsprite 240, 32, 1, 0x0070, 32x8
|
||||
subsprite 16, 32, 1, 0x0074, 32x8
|
||||
subsprite 48, 32, 1, 0x0078, 32x8
|
||||
|
||||
gUnknown_8260380::
|
||||
subsprite 240, 0, 1, 0x0000, 64x32
|
||||
subsprite 48, 0, 1, 0x0020, 32x32
|
||||
|
||||
gUnknown_8260388::
|
||||
subsprite 240, 0, 1, 0x0000, 64x32
|
||||
subsprite 48, 0, 1, 0x0020, 32x32
|
||||
|
||||
gUnknown_8260390::
|
||||
subsprite 240, 0, 1, 0x0000, 32x8
|
||||
subsprite 16, 0, 1, 0x0004, 32x8
|
||||
|
||||
gUnknown_8260398::
|
||||
subsprite 240, 0, 1, 0x0000, 32x8
|
||||
subsprite 16, 0, 1, 0x0004, 32x8
|
||||
subsprite 224, 0, 1, 0x0008, 8x8
|
||||
|
||||
gUnknown_82603A4::
|
||||
.4byte 5, gUnknown_8260358
|
||||
.4byte 2, gUnknown_8260380
|
||||
.4byte 5, gUnknown_826036C
|
||||
.4byte 2, gUnknown_8260388
|
||||
|
||||
gUnknown_82603C4:: @ 82603C4
|
||||
.4byte 2, gUnknown_8260390
|
||||
.4byte 3, gUnknown_8260398
|
||||
|
||||
gUnknown_82603D4::
|
||||
subsprite 160, 0, 1, 0x0000, 32x8
|
||||
subsprite 192, 0, 1, 0x0004, 32x8
|
||||
subsprite 224, 0, 1, 0x0008, 32x8
|
||||
subsprite 0, 0, 1, 0x000c, 32x8
|
||||
|
||||
gUnknown_82603E4::
|
||||
subsprite 160, 0, 1, 0x0000, 32x8
|
||||
subsprite 192, 0, 1, 0x0004, 32x8
|
||||
subsprite 224, 0, 1, 0x0008, 32x8
|
||||
subsprite 0, 0, 1, 0x0008, 32x8
|
||||
subsprite 32, 0, 1, 0x0008, 32x8
|
||||
subsprite 64, 0, 1, 0x000c, 32x8
|
||||
|
||||
gUnknown_82603FC:: @ 82603FC
|
||||
.4byte 4, gUnknown_82603D4
|
||||
|
||||
gUnknown_8260404:: @ 8260404
|
||||
.4byte 6, gUnknown_82603E4
|
||||
|
||||
gUnknown_26040C::
|
||||
.incbin "graphics/battle_interface/unk_826404C.4bpp"
|
||||
|
||||
gUnknown_826046C:: @ 826046C
|
||||
obj_tiles gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55052
|
||||
obj_tiles gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55053
|
||||
|
||||
gUnknown_826047C:: @ 826047C
|
||||
obj_pal gBattleInterface_BallStatusBarPal, 55056
|
||||
obj_pal gBattleInterface_BallStatusBarPal, 55057
|
||||
|
||||
gUnknown_826048C:: @ 826048C
|
||||
obj_pal gBattleInterface_BallDisplayPal, 55058
|
||||
obj_pal gBattleInterface_BallDisplayPal, 55059
|
||||
|
||||
gUnknown_826049C:: @ 826049C
|
||||
obj_tiles gUnknown_8D12404, 0x0080, 55060
|
||||
obj_tiles gUnknown_8D12404, 0x0080, 55061
|
||||
|
||||
gUnknown_82604AC::
|
||||
.4byte 0xc0004000, 0x00000400
|
||||
|
||||
gUnknown_82604B4::
|
||||
.4byte 0x00000000, 0x00000400
|
||||
|
||||
gUnknown_82604BC:: @ 82604BC
|
||||
spr_template 55052, 55056, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBar
|
||||
spr_template 55053, 55057, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBar
|
||||
|
||||
gUnknown_82604EC:: @ 82604EC
|
||||
spr_template 55060, 55058, gUnknown_82604B4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBallsOnBattleStart
|
||||
spr_template 55061, 55059, gUnknown_82604B4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBallsOnBattleStart
|
||||
|
||||
gUnknown_826051C:: @ 826051C
|
||||
.string "{LV_2}$", 16
|
||||
|
||||
gUnknown_826052C:: @ 826052C
|
||||
.string "{COLOR 01}{HIGHLIGHT 02}", 20
|
||||
|
||||
gUnknown_8260540:: @ 8260540
|
||||
.string "/$"
|
||||
|
||||
gUnknown_8260542:: @ 8260542
|
||||
.string "{COLOR 01}{HIGHLIGHT 00}", 20
|
||||
|
||||
gUnknown_8260556:: @ 8260556
|
||||
.string "{HIGHLIGHT 02}$"
|
||||
|
||||
gUnknown_826055A:: @ 826055A
|
||||
.2byte RGB(24, 12, 24)
|
||||
.2byte RGB(23, 23, 3)
|
||||
.2byte RGB(20, 20, 17)
|
||||
.2byte RGB(17, 22, 28)
|
||||
.2byte RGB(28, 14, 10)
|
||||
|
||||
gUnknown_8260564:: @ 8260564
|
||||
.byte 0, 0, 0, 8, 2, 0
|
||||
.2byte 0x0000
|
||||
@ {
|
||||
@ .bg = 0,
|
||||
@ .tilemapLeft = 0,
|
||||
@ .tilemapTop = 0,
|
||||
@ .width = 8,
|
||||
@ .height = 2,
|
||||
@ .paletteNum = 0,
|
||||
@ .baseBlock = 0x0000
|
||||
@ }
|
||||
@@ -1,28 +0,0 @@
|
||||
.section .rodata
|
||||
|
||||
.set VERSION_MAJOR, 1
|
||||
.set VERSION_MINOR, 0
|
||||
.set VERSION_REVISION, 24
|
||||
|
||||
.align 2
|
||||
_Str_RfuHeader::
|
||||
.byte 2, 14, 0, 10, 9, 5, 7, 2
|
||||
.byte 0, 15, 1, 3, 3, 0, 31, 0
|
||||
.byte 3, 22, 18, 14, 13, 9, 11, 3
|
||||
.byte 15, 15, 1, 3, 3, 0, 0x7f, 0
|
||||
|
||||
.ascii "RFU_V"
|
||||
.byte VERSION_MAJOR + 0x30
|
||||
.byte VERSION_MINOR + 0x30
|
||||
.byte (VERSION_REVISION / 10) + 0x30
|
||||
.byte (VERSION_REVISION % 10) + 0x30
|
||||
.byte 0
|
||||
|
||||
.align 2
|
||||
_Str_RFU_MBOOT::
|
||||
.asciz "RFU-MBOOT"
|
||||
|
||||
.align 2
|
||||
_Str_Sio32ID::
|
||||
.asciz "NINTENDOSio32ID_030820"
|
||||
|
||||
@@ -16,19 +16,19 @@ EventScript_16D8B0:: @ 816D8B0
|
||||
waitstate
|
||||
compare VAR_0x8004, 6
|
||||
goto_if_ge EventScript_16D941
|
||||
special IsSelectedMonEgg
|
||||
special Special_IsSelectedMonEgg
|
||||
compare VAR_RESULT, 1
|
||||
goto_if_eq EventScript_16D937
|
||||
special ScrSpecial_CountPokemonMoves
|
||||
special Special_GetNumMovesSelectedMonHas
|
||||
compare VAR_RESULT, 1
|
||||
goto_if_eq EventScript_16D92A
|
||||
msgbox gUnknown_8199445
|
||||
fadescreen FADE_TO_BLACK
|
||||
special SelectMove
|
||||
special Special_SelectMove
|
||||
fadescreen FADE_FROM_BLACK
|
||||
compare VAR_0x8005, 4
|
||||
goto_if_eq EventScript_16D8B0
|
||||
special ScrSpecial_GetPokemonNicknameAndMoveName
|
||||
special Special_BufferMoveDeleterNicknameAndMove
|
||||
msgbox gUnknown_8199485, MSGBOX_YESNO
|
||||
compare VAR_RESULT, YES
|
||||
goto_if_eq EventScript_16D919
|
||||
@@ -36,7 +36,7 @@ EventScript_16D8B0:: @ 816D8B0
|
||||
end
|
||||
|
||||
EventScript_16D919:: @ 816D919
|
||||
special DeleteMonMove
|
||||
special Special_MoveDeleterForgetMove
|
||||
playfanfare MUS_ME_WASURE
|
||||
waitfanfare
|
||||
msgbox gUnknown_81994B1
|
||||
@@ -44,7 +44,7 @@ EventScript_16D919:: @ 816D919
|
||||
end
|
||||
|
||||
EventScript_16D92A:: @ 816D92A
|
||||
special ScrSpecial_GetPokemonNicknameAndMoveName
|
||||
special Special_BufferMoveDeleterNicknameAndMove
|
||||
msgbox gUnknown_8199465
|
||||
release
|
||||
end
|
||||
|
||||
@@ -48,11 +48,11 @@ EventScript_1716A5:: @ 81716A5
|
||||
|
||||
EventScript_1716BE:: @ 81716BE
|
||||
msgbox gUnknown_81A2CC3
|
||||
special SelectMoveTutorMon
|
||||
special Special_SelectMoveTutorMon
|
||||
waitstate
|
||||
compare VAR_0x8004, 6
|
||||
goto_if_ge EventScript_17179E
|
||||
special IsSelectedMonEgg
|
||||
special Special_IsSelectedMonEgg
|
||||
compare VAR_RESULT, 1
|
||||
goto_if_eq EventScript_171790
|
||||
compare VAR_0x8005, 0
|
||||
|
||||
@@ -266,7 +266,7 @@ gUnknown_8463E57:: @ 8463E57
|
||||
.string "QUIRKY$"
|
||||
|
||||
.align 2
|
||||
gNatureNames:: @ 8463E60 dataptr
|
||||
gNatureNamePointers:: @ 8463E60 dataptr
|
||||
.4byte gUnknown_8463DBC
|
||||
.4byte gUnknown_8463DC2
|
||||
.4byte gUnknown_8463DC9
|
||||
|
||||
-4370
File diff suppressed because it is too large
Load Diff
+6
-6
@@ -227,11 +227,11 @@ gSpecials:: @ 815FD60
|
||||
def_special Special_GetElevatorFloor
|
||||
def_special nullsub_75
|
||||
def_special nullsub_75
|
||||
def_special SelectMoveTutorMon
|
||||
def_special SelectMove
|
||||
def_special DeleteMonMove
|
||||
def_special ScrSpecial_GetPokemonNicknameAndMoveName
|
||||
def_special ScrSpecial_CountPokemonMoves
|
||||
def_special Special_SelectMoveTutorMon
|
||||
def_special Special_SelectMove
|
||||
def_special Special_MoveDeleterForgetMove
|
||||
def_special Special_BufferMoveDeleterNicknameAndMove
|
||||
def_special Special_GetNumMovesSelectedMonHas
|
||||
def_special DisplayMoveTutorMenu
|
||||
def_special nullsub_75
|
||||
def_special nullsub_75
|
||||
@@ -336,7 +336,7 @@ gSpecials:: @ 815FD60
|
||||
def_special nullsub_75
|
||||
def_special nullsub_75
|
||||
def_special Special_GetSpeciesOfPartySlot_x8004
|
||||
def_special IsSelectedMonEgg
|
||||
def_special Special_IsSelectedMonEgg
|
||||
def_special nullsub_75
|
||||
def_special nullsub_75
|
||||
def_special LoadPlayerBag
|
||||
|
||||
+28
-47
@@ -2524,161 +2524,142 @@ gUnknown_8418E77:: @ 8418E77
|
||||
gUnknown_8418E8A:: @ 8418E8A
|
||||
.string "$"
|
||||
|
||||
gUnknown_8418E8B:: @ 8418E8B
|
||||
gText_RegionMap_Space:: @ 8418E8B
|
||||
.string " $"
|
||||
|
||||
gUnknown_8418E8D:: @ 8418E8D
|
||||
gText_RegionMap_AButtonGuide:: @ 8418E8D
|
||||
.string "{A_BUTTON}GUIDE$"
|
||||
|
||||
gUnknown_8418E95:: @ 8418E95
|
||||
gText_RegionMap_AButtonCancel:: @ 8418E95
|
||||
.string "{A_BUTTON}CANCEL$"
|
||||
|
||||
gUnknown_8418E9E:: @ 8418E9E
|
||||
gText_RegionMap_AButtonCancel2:: @ 8418E9E
|
||||
.string "{A_BUTTON}CANCEL$"
|
||||
|
||||
gUnknown_8418EA7:: @ 8418EA7
|
||||
gText_RegionMap_AButtonSwitch:: @ 8418EA7
|
||||
.string "{A_BUTTON}SWITCH$"
|
||||
|
||||
gUnknown_8418EB0:: @ 8418EB0
|
||||
gText_RegionMap_AButtonOK:: @ 8418EB0
|
||||
.string "{A_BUTTON}OK$"
|
||||
|
||||
gUnknown_8418EB5:: @ 8418EB5
|
||||
gText_RegionMap_DPadMove:: @ 8418EB5
|
||||
.string "{DPAD_ANY}MOVE$"
|
||||
|
||||
gUnknown_8418EBC:: @ 8418EBC
|
||||
gText_RegionMap_UpDownPick:: @ 8418EBC
|
||||
.string "{DPAD_UPDOWN}PICK$"
|
||||
|
||||
gUnknown_8418EC3:: @ 8418EC3
|
||||
gText_RegionMap_NoData:: @ 8418EC3
|
||||
.string "No data$"
|
||||
|
||||
gUnknown_8418ECB:: @ 8418ECB
|
||||
@ Viridian Forest
|
||||
gText_RegionMap_AreaDesc_ViridianForest::
|
||||
.string "A deep and sprawling forest that\n"
|
||||
.string "extends around VIRIDIAN CITY.\n"
|
||||
.string "A natural maze, many people\n"
|
||||
.string "become lost inside.$"
|
||||
|
||||
gUnknown_8418F3A:: @ 8418F3A
|
||||
@ Mt. Moon
|
||||
gText_RegionMap_AreaDesc_MtMoon::
|
||||
.string "A mystical mountain that is known\n"
|
||||
.string "for its frequent meteor falls.\n"
|
||||
.string "The shards of stars that fall\n"
|
||||
.string "here are known as MOON STONES.$"
|
||||
|
||||
gUnknown_8418FB8:: @ 8418FB8
|
||||
@ Diglett's Cave
|
||||
gText_RegionMap_AreaDesc_DiglettsCave::
|
||||
.string "A seemingly plain tunnel that was\n"
|
||||
.string "dug by wild DIGLETT.\n"
|
||||
.string "It is famous for connecting\n"
|
||||
.string "ROUTES 2 and 11.$"
|
||||
|
||||
gUnknown_841901C:: @ 841901C
|
||||
@ Victory Road
|
||||
gText_RegionMap_AreaDesc_VictoryRoad::
|
||||
.string "A tunnel situated on ROUTE 23.\n"
|
||||
.string "It earned its name because it\n"
|
||||
.string "must be traveled by all TRAINERS\n"
|
||||
.string "aiming for the top.$"
|
||||
|
||||
gUnknown_841908E:: @ 841908E
|
||||
@ Pokémon Mansion
|
||||
gText_RegionMap_AreaDesc_PokemonMansion::
|
||||
.string "A decrepit, burned-down mansion\n"
|
||||
.string "on CINNABAR ISLAND.\n"
|
||||
.string "It got its name because a famous\n"
|
||||
.string "POKéMON researcher lived there.$"
|
||||
|
||||
gUnknown_8419103:: @ 8419103
|
||||
@ Safari Zone
|
||||
gText_RegionMap_AreaDesc_SafariZone::
|
||||
.string "An amusement park outside FUCHSIA\n"
|
||||
.string "CITY where many rare POKéMON can\n"
|
||||
.string "be observed in the wild.\n"
|
||||
.string "Catch them in a popular game!$"
|
||||
|
||||
gUnknown_841917D:: @ 841917D
|
||||
@ Rock Tunnel
|
||||
gText_RegionMap_AreaDesc_RockTunnel::
|
||||
.string "A naturally formed underground\n"
|
||||
.string "tunnel. Because it has not been\n"
|
||||
.string "developed, it is inky dark inside.\n"
|
||||
.string "A light is needed to get through.$"
|
||||
|
||||
gUnknown_8419201:: @ 8419201
|
||||
@ Seafoam Islands
|
||||
gText_RegionMap_AreaDesc_SeafoamIslands::
|
||||
.string "A pair of islands that is situated\n"
|
||||
.string "on ROUTE 20.\n"
|
||||
.string "The two islands are shaped the\n"
|
||||
.string "same, as if they were twins.$"
|
||||
|
||||
gUnknown_841926D:: @ 841926D
|
||||
@ Pokémon Tower
|
||||
gText_RegionMap_AreaDesc_PokemonTower::
|
||||
.string "A tower that houses the graves of\n"
|
||||
.string "countless POKéMON.\n"
|
||||
.string "Many people visit it daily to pay\n"
|
||||
.string "their respects to the fallen.$"
|
||||
|
||||
gUnknown_84192E2:: @ 84192E2
|
||||
@ Cerulean Cave
|
||||
gText_RegionMap_AreaDesc_CeruleanCave::
|
||||
.string "A mysterious cave that is filled\n"
|
||||
.string "with terribly tough POKéMON.\n"
|
||||
.string "It is so dangerous, the POKéMON\n"
|
||||
.string "LEAGUE is in charge of it.$"
|
||||
|
||||
gUnknown_841935B:: @ 841935B
|
||||
@ Power Plant
|
||||
gText_RegionMap_AreaDesc_PowerPlant::
|
||||
.string "A power plant that was abandoned\n"
|
||||
.string "years ago, though some of the\n"
|
||||
.string "machines still work. It is infested\n"
|
||||
.string "with electric POKéMON.$"
|
||||
|
||||
gUnknown_84193D5:: @ 84193D5
|
||||
@ Mt. Ember
|
||||
gText_RegionMap_AreaDesc_MtEmber::
|
||||
.string "Supposedly an inactive volcano.\n"
|
||||
.string "However, there are persistent\n"
|
||||
.string "reports that the peak blazes\n"
|
||||
.string "with fire at night.$"
|
||||
|
||||
gUnknown_8419444:: @ 8419444
|
||||
@ Berry Forest
|
||||
gText_RegionMap_AreaDesc_BerryForest::
|
||||
.string "A forest on a small islet off the\n"
|
||||
.string "coast of THREE ISLAND. BERRIES\n"
|
||||
.string "grow wildly in profusion, quickly\n"
|
||||
.string "replenishing those that fall off.$"
|
||||
|
||||
gUnknown_84194C9:: @ 84194C9
|
||||
@ Icefall Cave
|
||||
gText_RegionMap_AreaDesc_IcefallCave::
|
||||
.string "A cave which is covered by water\n"
|
||||
.string "and ice on FOUR ISLAND.\n"
|
||||
.string "It seems like the end of the cave\n"
|
||||
.string "is connected to the ocean.$"
|
||||
|
||||
gUnknown_841953F:: @ 841953F
|
||||
@ Lost Cave
|
||||
gText_RegionMap_AreaDesc_LostCave::
|
||||
.string "A bewildering cave off the coast\n"
|
||||
.string "of RESORT GORGEOUS.\n"
|
||||
.string "Some curious thrill seekers have\n"
|
||||
.string "never emerged from it.$"
|
||||
|
||||
gUnknown_84195AC:: @ 84195AC
|
||||
@ Tanoby Ruins
|
||||
gText_RegionMap_AreaDesc_TanobyRuins::
|
||||
.string "An ancient ruin that is rumored to\n"
|
||||
.string "be home to a peculiar POKéMON.\n"
|
||||
.string "However, so far, the POKéMON\n"
|
||||
.string "remains an unconfirmed rumor.$"
|
||||
|
||||
gUnknown_8419629:: @ 8419629
|
||||
@ Altering Cave
|
||||
gText_RegionMap_AreaDesc_AlteringCave::
|
||||
.string "This island has been known by this\n"
|
||||
.string "name since the distant past.\n"
|
||||
.string "No one today knows where it got\n"
|
||||
.string "this name, however.$"
|
||||
|
||||
gUnknown_841969D:: @ 841969D
|
||||
@ Pattern Bush
|
||||
gText_RegionMap_AreaDesc_PatternBush::
|
||||
.string "A lush and bush-like area. \n"
|
||||
.string "In it are patterns where no grass\n"
|
||||
.string "grows. Some study it in the belief\n"
|
||||
.string "that a secret is concealed.$"
|
||||
|
||||
gUnknown_841971A:: @ 841971A
|
||||
@ Dotted Hole
|
||||
gText_RegionMap_AreaDesc_DottedHole::
|
||||
.string "A mysterious, just-discovered\n"
|
||||
.string "ruin from an ancient time.\n"
|
||||
.string "It got its name from the six dots\n"
|
||||
|
||||
@@ -1,327 +0,0 @@
|
||||
gMapSecName_PalletTown::
|
||||
.string "PALLET TOWN$"
|
||||
|
||||
gMapSecName_ViridianCity::
|
||||
.string "VIRIDIAN CITY$"
|
||||
|
||||
gMapSecName_PewterCity::
|
||||
.string "PEWTER CITY$"
|
||||
|
||||
gMapSecName_CeruleanCity::
|
||||
.string "CERULEAN CITY$"
|
||||
|
||||
gMapSecName_LavenderTown::
|
||||
.string "LAVENDER TOWN$"
|
||||
|
||||
gMapSecName_VermilionCity::
|
||||
.string "VERMILION CITY$"
|
||||
|
||||
gMapSecName_CeladonCity::
|
||||
.string "CELADON CITY$"
|
||||
|
||||
gMapSecName_FuchsiaCity::
|
||||
.string "FUCHSIA CITY$"
|
||||
|
||||
gMapSecName_CinnabarIsland::
|
||||
.string "CINNABAR ISLAND$"
|
||||
|
||||
gMapSecName_IndigoPlateau::
|
||||
.string "INDIGO PLATEAU$"
|
||||
|
||||
gMapSecName_SaffronCity::
|
||||
.string "SAFFRON CITY$"
|
||||
|
||||
gMapSecName_Route4::
|
||||
.string "ROUTE 4$"
|
||||
|
||||
gMapSecName_Route10::
|
||||
.string "ROUTE 10$"
|
||||
|
||||
gMapSecName_Route1::
|
||||
.string "ROUTE 1$"
|
||||
|
||||
gMapSecName_Route2::
|
||||
.string "ROUTE 2$"
|
||||
|
||||
gMapSecName_Route3::
|
||||
.string "ROUTE 3$"
|
||||
|
||||
gMapSecName_Route4_2::
|
||||
.string "ROUTE 4$"
|
||||
|
||||
gMapSecName_Route5::
|
||||
.string "ROUTE 5$"
|
||||
|
||||
gMapSecName_Route6::
|
||||
.string "ROUTE 6$"
|
||||
|
||||
gMapSecName_Route7::
|
||||
.string "ROUTE 7$"
|
||||
|
||||
gMapSecName_Route8::
|
||||
.string "ROUTE 8$"
|
||||
|
||||
gMapSecName_Route9::
|
||||
.string "ROUTE 9$"
|
||||
|
||||
gMapSecName_Route10_2::
|
||||
.string "ROUTE 10$"
|
||||
|
||||
gMapSecName_Route11::
|
||||
.string "ROUTE 11$"
|
||||
|
||||
gMapSecName_Route12::
|
||||
.string "ROUTE 12$"
|
||||
|
||||
gMapSecName_Route13::
|
||||
.string "ROUTE 13$"
|
||||
|
||||
gMapSecName_Route14::
|
||||
.string "ROUTE 14$"
|
||||
|
||||
gMapSecName_Route15::
|
||||
.string "ROUTE 15$"
|
||||
|
||||
gMapSecName_Route16::
|
||||
.string "ROUTE 16$"
|
||||
|
||||
gMapSecName_Route17::
|
||||
.string "ROUTE 17$"
|
||||
|
||||
gMapSecName_Route18::
|
||||
.string "ROUTE 18$"
|
||||
|
||||
gMapSecName_Route19::
|
||||
.string "ROUTE 19$"
|
||||
|
||||
gMapSecName_Route20::
|
||||
.string "ROUTE 20$"
|
||||
|
||||
gMapSecName_Route21::
|
||||
.string "ROUTE 21$"
|
||||
|
||||
gMapSecName_Route22::
|
||||
.string "ROUTE 22$"
|
||||
|
||||
gMapSecName_Route23::
|
||||
.string "ROUTE 23$"
|
||||
|
||||
gMapSecName_Route24::
|
||||
.string "ROUTE 24$"
|
||||
|
||||
gMapSecName_Route25::
|
||||
.string "ROUTE 25$"
|
||||
|
||||
gMapSecName_ViridianForest::
|
||||
.string "VIRIDIAN FOREST$"
|
||||
|
||||
gMapSecName_MtMoon::
|
||||
.string "MT. MOON$"
|
||||
|
||||
gMapSecName_SSAnne::
|
||||
.string "S.S. ANNE$"
|
||||
|
||||
gMapSecName_UndergroundPath::
|
||||
.string "UNDERGROUND PATH$"
|
||||
|
||||
gMapSecName_UndergroundPath_2::
|
||||
.string "UNDERGROUND PATH$"
|
||||
|
||||
gMapSecName_DiglettsCave::
|
||||
.string "DIGLETT'S CAVE$"
|
||||
|
||||
gMapSecName_VictoryRoad::
|
||||
.string "VICTORY ROAD$"
|
||||
|
||||
gMapSecName_RocketHideout::
|
||||
.string "ROCKET HIDEOUT$"
|
||||
|
||||
gMapSecName_SilphCo::
|
||||
.string "SILPH CO.$"
|
||||
|
||||
gMapSecName_PokemonMansion::
|
||||
.string "POKéMON MANSION$"
|
||||
|
||||
gMapSecName_SafariZone::
|
||||
.string "SAFARI ZONE$"
|
||||
|
||||
gMapSecName_PokemonLeague::
|
||||
.string "POKéMON LEAGUE$"
|
||||
|
||||
gMapSecName_RockTunnel::
|
||||
.string "ROCK TUNNEL$"
|
||||
|
||||
gMapSecName_SeafoamIslands::
|
||||
.string "SEAFOAM ISLANDS$"
|
||||
|
||||
gMapSecName_PokemonTower::
|
||||
.string "POKéMON TOWER$"
|
||||
|
||||
gMapSecName_CeruleanCave::
|
||||
.string "CERULEAN CAVE$"
|
||||
|
||||
gMapSecName_PowerPlant::
|
||||
.string "POWER PLANT$"
|
||||
|
||||
gMapSecName_OneIsland::
|
||||
.string "ONE ISLAND$"
|
||||
|
||||
gMapSecName_TwoIsland::
|
||||
.string "TWO ISLAND$"
|
||||
|
||||
gMapSecName_ThreeIsland::
|
||||
.string "THREE ISLAND$"
|
||||
|
||||
gMapSecName_FourIsland::
|
||||
.string "FOUR ISLAND$"
|
||||
|
||||
gMapSecName_FiveIsland::
|
||||
.string "FIVE ISLAND$"
|
||||
|
||||
gMapSecName_SevenIsland::
|
||||
.string "SEVEN ISLAND$"
|
||||
|
||||
gMapSecName_SixIsland::
|
||||
.string "SIX ISLAND$"
|
||||
|
||||
gMapSecName_KindleRoad::
|
||||
.string "KINDLE ROAD$"
|
||||
|
||||
gMapSecName_TreasureBeach::
|
||||
.string "TREASURE BEACH$"
|
||||
|
||||
gMapSecName_CapeBrink::
|
||||
.string "CAPE BRINK$"
|
||||
|
||||
gMapSecName_BondBridge::
|
||||
.string "BOND BRIDGE$"
|
||||
|
||||
gMapSecName_ThreeIslePort::
|
||||
.string "THREE ISLE PORT$"
|
||||
|
||||
gMapSecName_SeviiIsle6::
|
||||
.string "SEVII ISLE 6$"
|
||||
|
||||
gMapSecName_SeviiIsle7::
|
||||
.string "SEVII ISLE 7$"
|
||||
|
||||
gMapSecName_SeviiIsle8::
|
||||
.string "SEVII ISLE 8$"
|
||||
|
||||
gMapSecName_SeviiIsle9::
|
||||
.string "SEVII ISLE 9$"
|
||||
|
||||
gMapSecName_ResortGorgeous::
|
||||
.string "RESORT GORGEOUS$"
|
||||
|
||||
gMapSecName_WaterLabyrinth::
|
||||
.string "WATER LABYRINTH$"
|
||||
|
||||
gMapSecName_FiveIsleMeadow::
|
||||
.string "FIVE ISLE MEADOW$"
|
||||
|
||||
gMapSecName_MemorialPillar::
|
||||
.string "MEMORIAL PILLAR$"
|
||||
|
||||
gMapSecName_OutcastIsland::
|
||||
.string "OUTCAST ISLAND$"
|
||||
|
||||
gMapSecName_GreenPath::
|
||||
.string "GREEN PATH$"
|
||||
|
||||
gMapSecName_WaterPath::
|
||||
.string "WATER PATH$"
|
||||
|
||||
gMapSecName_RuinValley::
|
||||
.string "RUIN VALLEY$"
|
||||
|
||||
gMapSecName_TrainerTower::
|
||||
.string "TRAINER TOWER$"
|
||||
|
||||
gMapSecName_CanyonEntrance::
|
||||
.string "CANYON ENTRANCE$"
|
||||
|
||||
gMapSecName_SevaultCanyon::
|
||||
.string "SEVAULT CANYON$"
|
||||
|
||||
gMapSecName_TanobyRuins::
|
||||
.string "TANOBY RUINS$"
|
||||
|
||||
gMapSecName_SeviiIsle22::
|
||||
.string "SEVII ISLE 22$"
|
||||
|
||||
gMapSecName_SeviiIsle23::
|
||||
.string "SEVII ISLE 23$"
|
||||
|
||||
gMapSecName_SeviiIsle24::
|
||||
.string "SEVII ISLE 24$"
|
||||
|
||||
gMapSecName_NavelRock::
|
||||
.string "NAVEL ROCK$"
|
||||
|
||||
gMapSecName_MtEmber::
|
||||
.string "MT. EMBER$"
|
||||
|
||||
gMapSecName_BerryForest::
|
||||
.string "BERRY FOREST$"
|
||||
|
||||
gMapSecName_IcefallCave::
|
||||
.string "ICEFALL CAVE$"
|
||||
|
||||
gMapSecName_RocketWarehouse::
|
||||
.string "ROCKET WAREHOUSE$"
|
||||
|
||||
gMapSecName_TrainerTower_2::
|
||||
.string "TRAINER TOWER$"
|
||||
|
||||
gMapSecName_DottedHole::
|
||||
.string "DOTTED HOLE$"
|
||||
|
||||
gMapSecName_LostCave::
|
||||
.string "LOST CAVE$"
|
||||
|
||||
gMapSecName_PatternBush::
|
||||
.string "PATTERN BUSH$"
|
||||
|
||||
gMapSecName_AlteringCave::
|
||||
.string "ALTERING CAVE$"
|
||||
|
||||
gMapSecName_TanobyChambers::
|
||||
.string "TANOBY CHAMBERS$"
|
||||
|
||||
gMapSecName_ThreeIslePath::
|
||||
.string "THREE ISLE PATH$"
|
||||
|
||||
gMapSecName_TanobyKey::
|
||||
.string "TANOBY KEY$"
|
||||
|
||||
gMapSecName_BirthIsland::
|
||||
.string "BIRTH ISLAND$"
|
||||
|
||||
gMapSecName_MoneanChamber::
|
||||
.string "MONEAN CHAMBER$"
|
||||
|
||||
gMapSecName_LiptooChamber::
|
||||
.string "LIPTOO CHAMBER$"
|
||||
|
||||
gMapSecName_WeepthChamber::
|
||||
.string "WEEPTH CHAMBER$"
|
||||
|
||||
gMapSecName_DilfordChamber::
|
||||
.string "DILFORD CHAMBER$"
|
||||
|
||||
gMapSecName_ScufibChamber::
|
||||
.string "SCUFIB CHAMBER$"
|
||||
|
||||
gMapSecName_RixyChamber::
|
||||
.string "RIXY CHAMBER$"
|
||||
|
||||
gMapSecName_ViapoisChamber::
|
||||
.string "VIAPOIS CHAMBER$"
|
||||
|
||||
gMapSecName_EmberSpa::
|
||||
.string "EMBER SPA$"
|
||||
|
||||
gMapSecName_CeladonDept::
|
||||
.string "CELADON DEPT.$"
|
||||
|
||||
@@ -79,8 +79,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
|
||||
s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
|
||||
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
|
||||
u8 GetHPBarLevel(s16 hp, s16 maxhp);
|
||||
void sub_80496C0(u8 spriteId, struct Pokemon *mon);
|
||||
void sub_804981C(u8 spriteId, u8);
|
||||
void UpdateNickInHealthbox(u8 spriteId, struct Pokemon *mon);
|
||||
void TryAddPokeballIconToHealthbox(u8 spriteId, u8);
|
||||
s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
|
||||
|
||||
#endif // GUARD_BATTLE_INTERFACE_H
|
||||
|
||||
@@ -248,4 +248,7 @@ extern const u8 gUnknown_83FE85C[];
|
||||
extern const u8 gUnknown_83FE860[];
|
||||
extern const u8 gUnknown_83FE864[];
|
||||
|
||||
extern const u8 gText_SafariBalls[];
|
||||
extern const u8 gText_HighlightRed_Left[];
|
||||
|
||||
#endif // GUARD_BATTLE_MESSAGE_H
|
||||
|
||||
@@ -89,6 +89,9 @@
|
||||
#define MAPSEC_SKY_PILLAR 0x55
|
||||
#define MAPSEC_SECRET_BASE 0x56
|
||||
#define MAPSEC_DYNAMIC 0x57
|
||||
|
||||
#define MAPSECS_KANTO 0x58
|
||||
|
||||
#define MAPSEC_PALLET_TOWN 0x58
|
||||
#define MAPSEC_VIRIDIAN_CITY 0x59
|
||||
#define MAPSEC_PEWTER_CITY 0x5A
|
||||
@@ -144,6 +147,9 @@
|
||||
#define MAPSEC_POKEMON_TOWER 0x8C
|
||||
#define MAPSEC_CERULEAN_CAVE 0x8D
|
||||
#define MAPSEC_POWER_PLANT 0x8E
|
||||
|
||||
#define MAPSECS_SEVII_123 0x8F
|
||||
|
||||
#define MAPSEC_ONE_ISLAND 0x8F
|
||||
#define MAPSEC_TWO_ISLAND 0x90
|
||||
#define MAPSEC_THREE_ISLAND 0x91
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef GUARD_CONSTANTS_TRADE_H
|
||||
#ifndef GUARD_CONSTANTS_TRADE_H
|
||||
#define GUARD_CONSTANTS_TRADE_H
|
||||
|
||||
// TODO: document trade.c and trade_scene.c with corresponding macros
|
||||
@@ -115,4 +115,4 @@
|
||||
#define CANT_REGISTER_MON 1
|
||||
#define CANT_REGISTER_EGG 2
|
||||
|
||||
#endif //GUARD_CONSTANTS_TRADE_H
|
||||
#endif // GUARD_CONSTANTS_TRADE_H
|
||||
|
||||
@@ -23,5 +23,6 @@ void sub_80853CC(u8 a0);
|
||||
void sub_8083598(u8 a0);
|
||||
void sub_8083A5C(struct Sprite * sprite, u8 spriteId);
|
||||
u8 sub_8083970(u16 species, s16 x, s16 y, bool8 unused);
|
||||
void sub_80842C8(void);
|
||||
|
||||
#endif //GUARD_FIELD_EFFECTS_H
|
||||
|
||||
@@ -137,6 +137,8 @@
|
||||
#define REG_OFFSET_DMA3CNT_H 0xde
|
||||
|
||||
#define REG_OFFSET_TMCNT 0x100
|
||||
#define REG_OFFSET_TMCNT_L 0x100
|
||||
#define REG_OFFSET_TMCNT_H 0x102
|
||||
#define REG_OFFSET_TM0CNT 0x100
|
||||
#define REG_OFFSET_TM0CNT_L 0x100
|
||||
#define REG_OFFSET_TM0CNT_H 0x102
|
||||
@@ -298,6 +300,8 @@
|
||||
#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H)
|
||||
|
||||
#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT)
|
||||
#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L)
|
||||
#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H)
|
||||
#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT)
|
||||
#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L)
|
||||
#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H)
|
||||
@@ -457,7 +461,9 @@
|
||||
#define REG_DMA3CNT_L (*(vu16 *)REG_ADDR_DMA3CNT_L)
|
||||
#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H)
|
||||
|
||||
#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4)))
|
||||
#define REG_TMCNT(n) (*(vu32 *)(REG_ADDR_TMCNT + ((n) * 4)))
|
||||
#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4)))
|
||||
#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4)))
|
||||
#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT)
|
||||
#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L)
|
||||
#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H)
|
||||
|
||||
+11
-1
@@ -105,7 +105,7 @@
|
||||
} \
|
||||
}
|
||||
|
||||
#define DmaClearLarge(dmaNum, dest, size, block, bit) \
|
||||
#define DmaClearLarge(dmaNum, dest, size, block, bit) \
|
||||
{ \
|
||||
u32 _size = size; \
|
||||
while (1) \
|
||||
@@ -170,4 +170,14 @@
|
||||
#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
|
||||
#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
|
||||
|
||||
#define IntrEnable(flags) \
|
||||
{ \
|
||||
u16 imeTemp; \
|
||||
\
|
||||
imeTemp = REG_IME; \
|
||||
REG_IME = 0; \
|
||||
REG_IE |= flags; \
|
||||
REG_IME = imeTemp; \
|
||||
}
|
||||
|
||||
#endif // GUARD_GBA_MACRO_H
|
||||
|
||||
@@ -45,4 +45,6 @@ void RLUnCompVram(const void *src, void *dest);
|
||||
|
||||
int MultiBoot(struct MultiBootParam *mp);
|
||||
|
||||
s32 Div(s32 num, s32 denom);
|
||||
|
||||
#endif // GUARD_GBA_SYSCALL_H
|
||||
|
||||
@@ -4854,4 +4854,11 @@ extern const u32 gFireRedTrainerCard_Gfx[];
|
||||
extern const u16 gEmeraldTrainerCard_Pal[];
|
||||
extern const u32 gEmeraldTrainerCard_Gfx[];
|
||||
|
||||
// battle_interface
|
||||
extern const u32 gFile_graphics_battle_interface_ball_status_bar_sheet[];
|
||||
extern const u8 gHealthboxElementsGfxTable[][32];
|
||||
extern const u16 gBattleInterface_BallStatusBarPal[];
|
||||
extern const u16 gBattleInterface_BallDisplayPal[];
|
||||
extern const u16 gUnknown_8D12404[];
|
||||
|
||||
#endif //GUARD_GRAPHICS_H
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
#ifndef GUARD_IMAGE_PROCESSING_EFFECTS_H
|
||||
#define GUARD_IMAGE_PROCESSING_EFFECTS_H
|
||||
|
||||
enum
|
||||
{
|
||||
IMAGE_EFFECT_POINTILLISM = 2,
|
||||
IMAGE_EFFECT_GRAYSCALE_LIGHT = 6,
|
||||
IMAGE_EFFECT_BLUR = 8,
|
||||
IMAGE_EFFECT_OUTLINE_COLORED = 9,
|
||||
IMAGE_EFFECT_INVERT_BLACK_WHITE = 10,
|
||||
IMAGE_EFFECT_THICK_BLACK_WHITE = 11,
|
||||
IMAGE_EFFECT_SHIMMER = 13,
|
||||
IMAGE_EFFECT_OUTLINE = 30,
|
||||
IMAGE_EFFECT_INVERT = 31,
|
||||
IMAGE_EFFECT_BLUR_RIGHT = 32,
|
||||
IMAGE_EFFECT_BLUR_DOWN = 33,
|
||||
IMAGE_EFFECT_CHARCOAL = 36,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
QUANTIZE_EFFECT_STANDARD,
|
||||
QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS,
|
||||
QUANTIZE_EFFECT_PRIMARY_COLORS,
|
||||
QUANTIZE_EFFECT_GRAYSCALE,
|
||||
QUANTIZE_EFFECT_GRAYSCALE_SMALL,
|
||||
QUANTIZE_EFFECT_BLACK_WHITE,
|
||||
};
|
||||
|
||||
struct ImageProcessingContext
|
||||
{
|
||||
u8 effect;
|
||||
void *canvasPixels;
|
||||
u16 *canvasPalette;
|
||||
u8 fillerC[0x4];
|
||||
void *dest;
|
||||
u16 quantizeEffect;
|
||||
u16 var_16;
|
||||
u8 paletteStart;
|
||||
u8 columnStart;
|
||||
u8 rowStart;
|
||||
u8 columnEnd;
|
||||
u8 rowEnd;
|
||||
u8 canvasWidth;
|
||||
u8 canvasHeight;
|
||||
u8 personality;
|
||||
};
|
||||
|
||||
void ApplyImageProcessingEffects(struct ImageProcessingContext *);
|
||||
void ApplyImageProcessingQuantization(struct ImageProcessingContext *);
|
||||
void ConvertImageProcessingToGBA(struct ImageProcessingContext *);
|
||||
|
||||
#endif
|
||||
@@ -2,5 +2,6 @@
|
||||
#define GUARD_INTRO_H
|
||||
|
||||
void sub_80EC864(void);
|
||||
void c2_copyright_1(void);
|
||||
|
||||
#endif //GUARD_INTRO_H
|
||||
|
||||
+603
-187
@@ -1,58 +1,309 @@
|
||||
#ifndef GUARD_LIBRFU_H
|
||||
#define GUARD_LIBRFU_H
|
||||
|
||||
#include "global.h"
|
||||
#include "main.h"
|
||||
|
||||
enum
|
||||
/* TODOs:
|
||||
* - split files
|
||||
* - documentation
|
||||
* - decompile librfu_intr.s once arm support is back again
|
||||
(for internal structs not documented in SDK)
|
||||
* - check if any field needs to be volatile
|
||||
* - check if field names make sense
|
||||
*/
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
//
|
||||
// Restrictions When Using RFU
|
||||
//
|
||||
// --------------------------------------------------------------------------
|
||||
/*
|
||||
The following restrictions apply when using RFU.
|
||||
|
||||
<Restrictions for Direct Sound>
|
||||
(a) The timer for Sound DMA uses only 0
|
||||
(b) The prescaler for the timer count for the Sound DMA uses 59.5 ns.
|
||||
(c) The sound sampling rate is Max36.314KHz.
|
||||
|
||||
<Restrictions for H-DMA or DMA started with V-Blank>
|
||||
These types of DMA can be operated on a maximum CPU cycle of 42 cycles.
|
||||
Calculate the number of the transferable DMA count based on this 42 cycles and the access cycles of the destination and source.
|
||||
For example, if both the CPU internal RAM --> VRAM have a one cycle access, then a 21 count DMA can occur.
|
||||
|
||||
|
||||
If RFU is used outside of these restrictions, problems, such as the loss of data caused by the failure of the AGB, as a clock slave,
|
||||
to notify that data has been received from the RFU, will occur.
|
||||
When this problem occurs, the REQ callback will send a REQ_commandID=ID_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA_REQ notification.
|
||||
(When using Link Manager, the LMAN call back will send a LMAN_msg=LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA notification.)
|
||||
|
||||
*/
|
||||
|
||||
// REQ-COMMAND (STWI) ID CODE LIST
|
||||
|
||||
// REQ Command ID returned by the REQ callback
|
||||
#define ID_RESET_REQ 0x0010
|
||||
#define ID_LINK_STATUS_REQ 0x0011
|
||||
#define ID_VERSION_STATUS_REQ 0x0012 // not defined in SDK header
|
||||
#define ID_SYSTEM_STATUS_REQ 0x0013
|
||||
#define ID_SLOT_STATUS_REQ 0x0014 // not defined in SDK header
|
||||
#define ID_CONFIG_STATUS_REQ 0x0015 // not defined in SDK header
|
||||
#define ID_GAME_CONFIG_REQ 0x0016
|
||||
#define ID_SYSTEM_CONFIG_REQ 0x0017
|
||||
#define ID_SC_START_REQ 0x0019
|
||||
#define ID_SC_POLL_REQ 0x001a
|
||||
#define ID_SC_END_REQ 0x001b
|
||||
#define ID_SP_START_REQ 0x001c
|
||||
#define ID_SP_POLL_REQ 0x001d
|
||||
#define ID_SP_END_REQ 0x001e
|
||||
#define ID_CP_START_REQ 0x001f
|
||||
#define ID_CP_POLL_REQ 0x0020
|
||||
#define ID_CP_END_REQ 0x0021
|
||||
#define ID_DATA_TX_REQ 0x0024
|
||||
#define ID_DATA_TX_AND_CHANGE_REQ 0x0025
|
||||
#define ID_DATA_RX_REQ 0x0026
|
||||
#define ID_MS_CHANGE_REQ 0x0027 // When returned by the REQ callback, this ID indicates that execution of rfu_REQ_changeMasterSlave has finished.
|
||||
// This ID is returned by both the REQ callback and the MSC callback.
|
||||
// When returned by the MSC callback, this is notification that after the AGB has been made into the clock slave, the MC_Timer expired and the RFU returned the AGB to be the clock master.
|
||||
#define ID_DISCONNECT_REQ 0x0030
|
||||
#define ID_TEST_MODE_REQ 0x0031 // not defined in SDK header
|
||||
#define ID_CPR_START_REQ 0x0032
|
||||
#define ID_CPR_POLL_REQ 0x0033
|
||||
#define ID_CPR_END_REQ 0x0034
|
||||
#define ID_UNK35_REQ 0x0035 // not defined in SDK header
|
||||
#define ID_RESUME_RETRANSMIT_AND_CHANGE_REQ 0x0037
|
||||
#define ID_STOP_MODE_REQ 0x003d
|
||||
#define ID_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA_REQ 0x00ff // When the AGB is the clock slave, the RFU generates an informational notice, and an automatically started DMA, such as HDMA, is generated at the instant the AGB is being returned as the clock master. This ID is notified by a REQ callback when the exchange of this information (REQ command) fails.
|
||||
|
||||
// REQ Command ID returned by the MSC callback
|
||||
#define ID_DISCONNECTED_AND_CHANGE_REQ 0x0029
|
||||
#define ID_DATA_READY_AND_CHANGE_REQ 0x0028
|
||||
#define ID_DRAC_REQ_WITH_ACK_FLAG 0x0128
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
//
|
||||
// Data Definitions
|
||||
//
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#define RFU_ID 0x00008001 // ID number of AGB-RFU device: ID returned by execution of rfu_REQBN_softReset_and_checkID.
|
||||
|
||||
#define RFU_MBOOT_DOWNLOADER_SERIAL_NO 0x0000 // The game serial number of the multi-boot downloader (programs that boot without a Game Pak)
|
||||
|
||||
#define RFU_API_BUFF_SIZE_RAM 0x0e8c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in RAM)
|
||||
#define RFU_API_BUFF_SIZE_ROM 0x052c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in ROM)
|
||||
|
||||
#define RFU_CHILD_MAX 4 // Maximum number of slaves that can be connected to one parent device
|
||||
|
||||
#define RFU_GAME_NAME_LENGTH 13 // Possible length of game name set by rfu_REQB_configGameData
|
||||
#define RFU_USER_NAME_LENGTH 8 // Possible length of user name set by rfu_REQB_configGameData
|
||||
|
||||
#define RFU_H_DMA_MAX_CPU_CYCLE 42 // Maximum number of CPU cycles for H-DMA or DMA that starts with V-Blank that can operate when using RFU
|
||||
|
||||
// Value to determine the level of the icon that displays the link strength of the wireless status (value of rfuLinkStatus->strength[0-3])
|
||||
#define RFU_LINK_ICON_LEVEL4_MAX 255 // 90% -100% (If the value is betwen 229 and 255, the icon level is 4)
|
||||
#define RFU_LINK_ICON_LEVEL4_MIN 229
|
||||
#define RFU_LINK_ICON_LEVEL3_MAX 228 // 50% - 89% (If the value is betwen 127 and 228, the icon level is 3)
|
||||
#define RFU_LINK_ICON_LEVEL3_MIN 127
|
||||
#define RFU_LINK_ICON_LEVEL2_MAX 126 // 10% - 49% (If the value is betwen 25 and 126, the icon level is 2)
|
||||
#define RFU_LINK_ICON_LEVEL2_MIN 25
|
||||
#define RFU_LINK_ICON_LEVEL1_MAX 24 // 0% - 9% (If the value is betwen 0 and 24, the icon level is 1)
|
||||
#define RFU_LINK_ICON_LEVEL1_MIN 0
|
||||
|
||||
|
||||
// *******************************************************
|
||||
// Definition Data for Arguments Used in Library Functions
|
||||
// *******************************************************
|
||||
// Specified by u16 mbootFlag in rfu_REQ_configGameData
|
||||
#define RFU_MBOOT_FLAG 0x01 // Enabling this flag, allows connection to a multi-boot program.
|
||||
|
||||
// AvailSlot (number of slots available for connection) used in u16 availSlotFlag in rfu_REQ_configSystem
|
||||
#define AVAIL_SLOT4 0x0000
|
||||
#define AVAIL_SLOT3 0x0001
|
||||
#define AVAIL_SLOT2 0x0002
|
||||
#define AVAIL_SLOT1 0x0003
|
||||
|
||||
// u8 connTypeFlag specified by rfu_setRecvBuffer
|
||||
#define TYPE_UNI 0x10 // UNI-type
|
||||
#define TYPE_NI 0x20 // NI-type
|
||||
|
||||
// u8 connTypeFlag specified by rfu_clearSlot
|
||||
#define TYPE_UNI_SEND 0x01 // UNI-type send
|
||||
#define TYPE_UNI_RECV 0x02 // UNI-type receive
|
||||
#define TYPE_NI_SEND 0x04 // NI-type send
|
||||
#define TYPE_NI_RECV 0x08 // NI-type receive
|
||||
|
||||
// *******************************************************
|
||||
// Definition Data Returned by Return Values for Library Functions
|
||||
// *******************************************************
|
||||
|
||||
// The function doesn't have return value.
|
||||
// Value of u8 *status for rfu_REQ_pollConnectParent (Connection Trial Status)
|
||||
// #define CP_STATUS_DONE 0x00 // Connection successful
|
||||
// #define CP_STATUS_IN_PROCESS 0x01 // Connecting
|
||||
// #define CP_STATUS_SLOT_CLOSED 0x02 // Parent device is not in connection mode with child device
|
||||
// #define CP_STATUS_DISCONNECTED 0x03 // Disconnected by parent device while connecting
|
||||
// #define CP_STATUS_UNKNOWN 0xff // Cannot read status due to REQ-API execution error
|
||||
|
||||
// The function doesn't exist.
|
||||
// Value of u8 *status argument for rfu_REQ_pollRecoveryConnect (Link Restore Status)
|
||||
// #define RC_STATUS_DONE 0x00 // Connection restore successful
|
||||
// #define RC_STATUS_FAILED 0x01 // Connection restore failure (meaningless to try anymore)
|
||||
// #define RC_STATUS_SEARCHING_PARENT 0x02 // Searching for parent device
|
||||
// #define RC_STATUS_UNKNOWN 0xff // Cannot read status due to REQ-API execution error
|
||||
|
||||
// Value of u8 *linkLossReason argument for rfu_REQBN_watchLink (Reason for Link Loss)
|
||||
#define REASON_DISCONNECTED 0x00 // State of complete disconnection with rfuLL_disconnect and no possibility of restoring the link (can detect only child device)
|
||||
#define REASON_LINK_LOSS 0x01 // State of link loss that allows for the possibility for the link to be restored
|
||||
|
||||
|
||||
// *******************************************************
|
||||
// Definition Data Returned with Return Values for Library Functions
|
||||
// *******************************************************
|
||||
|
||||
// Value returned by rfu_getMasterSlave
|
||||
#define AGB_CLK_SLAVE 0 // AGB clock slave
|
||||
#define AGB_CLK_MASTER 1 // AGB clock master
|
||||
|
||||
// *******************************************************
|
||||
// Error Code Group for Library Functions
|
||||
// *******************************************************
|
||||
|
||||
// Error codes returned by u16 REQ_result with a REQ callback when a REQ-API function is executed
|
||||
#define ERR_REQ_CMD 0x0000
|
||||
#define ERR_REQ_CMD_CLOCK_DRIFT (ERR_REQ_CMD | 0x0001) // Clock drift occurs when a REQ command is sent
|
||||
#define ERR_REQ_CMD_SENDING (ERR_REQ_CMD | 0x0002) // The next command cannot be issued because a REQ command is being sent
|
||||
#define ERR_REQ_CMD_ACK_REJECTION (ERR_REQ_CMD | 0x0003) // The REQ command was refused when issued
|
||||
#define ERR_REQ_CMD_CLOCK_SLAVE (ERR_REQ_CMD | 0x0004) // Issuing the REQ command was attempted but failed because the AGB is the clock slave
|
||||
#define ERR_REQ_CMD_IME_DISABLE (ERR_REQ_CMD | 0x0006) // Issuing the REQ command was attempted but failed because the IME register is 0
|
||||
|
||||
#define ERR_PID_NOT_FOUND 0x0100 // The specified PID does not exist in the gRfuLinkStatus->partner[0-3].id list
|
||||
|
||||
// Error code returned by the return value of rfu_initializeAPI
|
||||
#define ERR_RFU_API_BUFF_SIZE 0x0001
|
||||
#define ERR_RFU_API_BUFF_ADR 0x0002
|
||||
|
||||
// Error codes returned by return values for rfu_REQBN_softReset_and_checkID
|
||||
#define ERR_ID_CHECK_IME_DISABLE 0xffffffff // ID check could not be executed because REG_IME=0 when executing rfu_REQBN_softReset_and_checkID
|
||||
|
||||
// Error codes returned by rfu_getConnectParentStatus and rfu_CHILD_getConnectRecoveryStatus
|
||||
#define ERR_REQ_CMD_ID (ERR_REQ_CMD | 0x0010) // A required REQ command was not executed within this function execution
|
||||
|
||||
// Error codes returned by rfu_NI_setSendData, rfu_UNI_setSendData, and rfu_NI_CHILD_setSendGameName
|
||||
#define ERR_MODE 0x0300
|
||||
#define ERR_MODE_NOT_PARENT (ERR_MODE | 0x0000) // not in SDK
|
||||
#define ERR_MODE_NOT_CONNECTED (ERR_MODE | 0x0001) // RFU is not in connection mode (parent or child)
|
||||
|
||||
#define ERR_SLOT 0x0400
|
||||
#define ERR_SLOT_NO (ERR_SLOT | 0x0000) // The specified slot number is not right
|
||||
#define ERR_SLOT_NOT_CONNECTED (ERR_SLOT | 0x0001) // The specified slot is not connected
|
||||
#define ERR_SLOT_BUSY (ERR_SLOT | 0x0002) // The specified slot is already communicating
|
||||
#define ERR_SLOT_NOT_SENDING (ERR_SLOT | 0x0003) // The specified slot is not currently sending (Note: This is returned by rfu_UNI_re_setSendData)
|
||||
#define ERR_SLOT_TARGET (ERR_SLOT | 0x0004) // The specified target slot is not right
|
||||
|
||||
#define ERR_SUBFRAME_SIZE 0x0500 // The specified subframe size is either larger than the remaining communication frame size or smaller than the link layer subframe header size
|
||||
|
||||
// Error code returned by rfu_clearSlot, rfu_setRecvBuffer, and rfu_changeSendTarget
|
||||
#define ERR_COMM_TYPE 0x0600 // The specified communication format is not right
|
||||
|
||||
// Error code returned by rfu_REQ_recvData (when receiving NI-type or UNI-type data)
|
||||
#define ERR_DATA_RECV 0x0700 // Error notification is issued in the following format.
|
||||
// "ERR_DATA_RECV | (slot number issuing error with 0x0010<<UNI) | (slot number issuing error with 0x0001<<NI)"
|
||||
// The actual error code is stored in gRfuSlotStatusNI or gRfuSlotStatusUNI[x]->recv.errorCode.
|
||||
|
||||
// Error code during NI-type communication (code entered into gRfuSlotStatusNI[x]->recv.errorCode)
|
||||
#define ERR_RECV_BUFF_OVER (ERR_DATA_RECV | 0x0001) // The receive data size is larger than the receive buffer (Note: This error is used for both NI and UNI)
|
||||
#define ERR_RECV_REPLY_SUBFRAME_SIZE (ERR_DATA_RECV | 0x0002) // All frames are already in use by other communications, and a subframe for reception response could not be secured
|
||||
|
||||
// Error code during UNI-type communication (code entered into gRfuSlotStatusUNI[x]->recv.errorCode)
|
||||
#define ERR_RECV_DATA_OVERWRITED (ERR_DATA_RECV | 0x0008) // Received new data when gRfuSlotStatusUNI[x]->recv.newDataFlag=1
|
||||
|
||||
// not in SDK header
|
||||
#define ERR_RECV_UNK (ERR_DATA_RECV | 0x0001 | 0x0008)
|
||||
|
||||
// *******************************************************
|
||||
// Definition Data Used by Global Variables in the Library
|
||||
// *******************************************************
|
||||
|
||||
// gRfuLinkStatus-------------------------------------------
|
||||
// Connection status (refer to gRfuLinkStatus->parentChild)
|
||||
#define MODE_NEUTRAL 0xff // Initialization
|
||||
#define MODE_CHILD 0x00 // Child
|
||||
#define MODE_PARENT 0x01 // Parent
|
||||
|
||||
|
||||
// gRfuSlotStatusNI,UNI-----------------------------------
|
||||
// Definition data for NI-(Numbered Information) and UNI-(Un-Numbered Information) type communication
|
||||
|
||||
// Definition data common to NI- and UNI-type communication
|
||||
#define LLF_P_SIZE 87 // Maximum link layer communication frame size for the Parent (Maximum number of bytes per transmission)
|
||||
#define LLF_C_SIZE 16 // " " for the Child
|
||||
#define LLSF_P_HEADER_SIZE 3 // Header size used by one link layer subframe (NI or UNI frame) for the Parent
|
||||
#define LLSF_C_HEADER_SIZE 2 // " " for the Child
|
||||
|
||||
// Link Layer Communication Code
|
||||
#define LCOM_NULL 0x0000
|
||||
#define LCOM_NI_START 0x0001
|
||||
#define LCOM_NI 0x0002
|
||||
#define LCOM_NI_END 0x0003
|
||||
#define LCOM_UNI 0x0004
|
||||
|
||||
// Flag for Slot Status Data
|
||||
#define SLOT_BUSY_FLAG 0x8000 // Slot in use
|
||||
#define SLOT_SEND_FLAG 0x0020 // Send
|
||||
#define SLOT_RECV_FLAG 0x0040 // Receive
|
||||
|
||||
// NI- and UNI-type shared slot stand-by data (same state as gRfuSlotStatusNI[x]->send or ->recv.state or gRfuSlotStatusUNI)
|
||||
#define SLOT_STATE_READY 0x0000 // Slot initialization
|
||||
|
||||
// Status data for NI-type communication (gRfuSlotStatusNI[x]->send or ->recv.state)
|
||||
#define SLOT_STATE_SEND_START (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI_START) // Start transmission
|
||||
#define SLOT_STATE_SENDING (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI) // Transmitting
|
||||
#define SLOT_STATE_SEND_LAST (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI_END) // Verify transmission end
|
||||
#define SLOT_STATE_SEND_NULL (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NULL) // Send NULL subframe to notify end of transmission
|
||||
#define SLOT_STATE_SEND_SUCCESS ( SLOT_SEND_FLAG | 0x006) // Transmission successful
|
||||
#define SLOT_STATE_SEND_FAILED ( SLOT_SEND_FLAG | 0x007) // Transmission failed
|
||||
// Distinction of slot where transmission succeeded/failed compares gRfuSlotStatusNI[x]->send.bmSlot and same bmSlot_org
|
||||
#define SLOT_STATE_RECV_START (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI_START) // Start reception
|
||||
#define SLOT_STATE_RECEIVING (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI) // Receiving
|
||||
#define SLOT_STATE_RECV_LAST (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI_END) // Verify reception end
|
||||
#define SLOT_STATE_RECV_SUCCESS ( SLOT_RECV_FLAG | 0x006) // Reception successful
|
||||
#define SLOT_STATE_RECV_FAILED ( SLOT_RECV_FLAG | 0x007) // Reception failed
|
||||
#define SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN (SLOT_RECV_FLAG | 0x008) // The data was received successful, but because the end of the communication was incomplete, whether the transmission side status is successful or failed is unknown
|
||||
#define SLOT_STATE_RECV_IGNORE ( SLOT_RECV_FLAG | 0x009) // Ignore reception (refer to gRfuSlotStatusNI[x]->recv.errorCode for reason for ignoring)
|
||||
|
||||
// Status data for UNI-type communication (refer to gRfuSlotStatusUNI[x]->send.state)
|
||||
#define SLOT_STATE_SEND_UNI (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_UNI) // Transmitting
|
||||
|
||||
// TODO: move the 2 structs to some other header as they're declared by GF
|
||||
struct UnkLinkRfuStruct_02022B14Substruct
|
||||
{
|
||||
RFU_RESET = 0x10,
|
||||
RFU_LINK_STATUS,
|
||||
RFU_VERSION_STATUS,
|
||||
RFU_SYSTEM_STATUS,
|
||||
RFU_SLOT_STATUS,
|
||||
RFU_CONFIG_STATUS,
|
||||
RFU_GAME_CONFIG,
|
||||
RFU_SYSTEM_CONFIG,
|
||||
RFU_UNK18,
|
||||
RFU_SC_START,
|
||||
RFU_SC_POLLING,
|
||||
RFU_SC_END,
|
||||
RFU_SP_START,
|
||||
RFU_SP_POLLING,
|
||||
RFU_SP_END,
|
||||
RFU_CP_START,
|
||||
RFU_CP_POLLING,
|
||||
RFU_CP_END,
|
||||
RFU_UNK22,
|
||||
RFU_UNK23,
|
||||
RFU_DATA_TX,
|
||||
RFU_DATA_TX_AND_CHANGE,
|
||||
RFU_DATA_RX,
|
||||
RFU_MS_CHANGE,
|
||||
RFU_DATA_READY_AND_CHANGE,
|
||||
RFU_DISCONNECTED_AND_CHANGE,
|
||||
RFU_UNK2A,
|
||||
RFU_UNK2B,
|
||||
RFU_UNK2C,
|
||||
RFU_UNK2D,
|
||||
RFU_UNK2E,
|
||||
RFU_UNK2F,
|
||||
RFU_DISCONNECT,
|
||||
RFU_TEST_MODE,
|
||||
RFU_CPR_START,
|
||||
RFU_CPR_POLLING,
|
||||
RFU_CPR_END,
|
||||
RFU_UNK35,
|
||||
RFU_UNK36,
|
||||
RFU_RESUME_RETRANSMIT_AND_CHANGE,
|
||||
RFU_UNK38,
|
||||
RFU_UNK39,
|
||||
RFU_UNK3A,
|
||||
RFU_UNK3B,
|
||||
RFU_UNK3C,
|
||||
RFU_STOP_MODE, //3D
|
||||
u16 unk_00_0:4;
|
||||
u16 unk_00_4:1;
|
||||
u16 unk_00_5:1;
|
||||
u16 unk_00_6:1;
|
||||
u16 isChampion:1;
|
||||
u16 hasNationalDex:1;
|
||||
u16 gameClear:1;
|
||||
u16 unk_01_2:4;
|
||||
u16 unk_01_6:2;
|
||||
u8 playerTrainerId[2];
|
||||
};
|
||||
|
||||
struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14
|
||||
{
|
||||
struct UnkLinkRfuStruct_02022B14Substruct unk_00;
|
||||
u8 unk_04[4];
|
||||
u16 species:10;
|
||||
u16 type:6;
|
||||
u8 unk_0a_0:7;
|
||||
u8 unk_0a_7:1;
|
||||
u8 playerGender:1;
|
||||
u8 level:7;
|
||||
u8 unk_0c;
|
||||
};
|
||||
|
||||
// the following structs are not documented in SDK
|
||||
struct RfuPacket8
|
||||
{
|
||||
u8 data[0x74];
|
||||
@@ -70,199 +321,364 @@ union RfuPacket
|
||||
struct RfuPacket8 rfuPacket8;
|
||||
};
|
||||
|
||||
struct UnkLinkRfuStruct_02022B14Substruct
|
||||
struct STWIStatus
|
||||
{
|
||||
u16 unk_00_0:4;
|
||||
u16 unk_00_4:1;
|
||||
u16 unk_00_5:1;
|
||||
u16 unk_00_6:1;
|
||||
u16 unk_00_7:1;
|
||||
u16 unk_01_0:1;
|
||||
u16 unk_01_1:1;
|
||||
u16 unk_01_2:4;
|
||||
u16 unk_01_6:2;
|
||||
u8 playerTrainerId[2];
|
||||
};
|
||||
|
||||
struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14
|
||||
{
|
||||
struct UnkLinkRfuStruct_02022B14Substruct unk_00;
|
||||
u8 unk_04[4];
|
||||
u16 species:10;
|
||||
u16 type:6;
|
||||
u8 unk_0a_0:7;
|
||||
u8 unk_0a_7:1;
|
||||
u8 playerGender:1;
|
||||
u8 unk_0b_1:7;
|
||||
u8 unk_0c;
|
||||
};
|
||||
|
||||
struct RfuStruct
|
||||
{
|
||||
vs32 unk_0;
|
||||
u8 txParams;
|
||||
u8 unk_5;
|
||||
u8 activeCommand;
|
||||
u8 unk_7;
|
||||
u8 unk_8;
|
||||
u8 unk_9;
|
||||
vs32 state;
|
||||
u8 reqLength;
|
||||
u8 reqNext;
|
||||
u8 reqActiveCommand;
|
||||
u8 ackLength;
|
||||
u8 ackNext;
|
||||
u8 ackActiveCommand;
|
||||
u8 timerSelect;
|
||||
u8 unk_b;
|
||||
int timerState;
|
||||
u32 timerState; // this field is s32 in emerald
|
||||
vu8 timerActive;
|
||||
u8 unk_11;
|
||||
vu16 unk_12;
|
||||
vu16 error;
|
||||
vu8 msMode;
|
||||
u8 unk_15;
|
||||
u8 recoveryCount;
|
||||
u8 unk_16;
|
||||
u8 unk_17;
|
||||
void (*callbackM)();
|
||||
void (*callbackS)();
|
||||
u32 callbackID;
|
||||
union RfuPacket * txPacket;
|
||||
union RfuPacket * rxPacket;
|
||||
void (*callbackS)(u16);
|
||||
void (*unk_20)(void);
|
||||
union RfuPacket *txPacket;
|
||||
union RfuPacket *rxPacket;
|
||||
vu8 unk_2c;
|
||||
u8 padding[3];
|
||||
};
|
||||
|
||||
// This struct is used as u8 array in SDK.
|
||||
struct RfuIntrStruct
|
||||
{
|
||||
u8 rxPacketAlloc[0x74];
|
||||
u8 txPacketAlloc[0x74];
|
||||
u8 block1[0x960];
|
||||
u8 block2[0x30];
|
||||
union RfuPacket rxPacketAlloc;
|
||||
union RfuPacket txPacketAlloc;
|
||||
u8 block1[0x960]; // size of librfu_intr.s binary
|
||||
struct STWIStatus block2;
|
||||
};
|
||||
|
||||
struct RfuUnk1
|
||||
// Data Structure for Transmitting UNI-Type Data
|
||||
struct UNISend
|
||||
{
|
||||
u16 unk_0;
|
||||
u8 unk_2;
|
||||
u8 unk_3;
|
||||
u8 fill_4[14];
|
||||
u8 unk_12;
|
||||
u32 unk_14;
|
||||
u32 unk_18;
|
||||
struct RfuIntrStruct unk_1c;
|
||||
u16 state; // Slot communication state (SLOT_STATE_READY, SLOT_STATE_SEND_UNI)
|
||||
u8 dataReadyFlag; // Flag indicating transmission data is prepared (0: data sent; 1: transmission data ready)
|
||||
// Set with rfu_UNI_re_setSendData or rfu_UNI_readySendData, cleared when data is sent with rfu_REQ_sendData.
|
||||
u8 bmSlot; // Expresses transmission destination slot as bits
|
||||
u16 payloadSize; // Payload size of 1 transmission. "size" specified by rfu_UNI_setSendData or rfu_UNI_re_setSendData is used.
|
||||
const void *src; // Beginning address of transmission data
|
||||
};
|
||||
|
||||
struct RfuUnk2
|
||||
// Data Structure for Receiving UNI Data
|
||||
struct UNIRecv
|
||||
{
|
||||
u16 unk_0;
|
||||
u16 unk_2;
|
||||
u8 fill_4[0x16];
|
||||
u8 unk_1a;
|
||||
u8 fill_1b[0x19];
|
||||
u16 unk_34;
|
||||
u16 unk_36;
|
||||
u8 fill_38[0x16];
|
||||
u8 unk_4e;
|
||||
u8 fill_4f[0x12];
|
||||
u8 unk_61;
|
||||
u8 fill_62[6];
|
||||
void *unk_68;
|
||||
void *unk_6c;
|
||||
u8 unk_70[0x70];
|
||||
u16 state; // Slot communication state (SLOT_STATE_READY, SLOT_STATE_RECEIVING, SLOT_STATE_RECV_IGNORE)
|
||||
u16 errorCode; // Error code during reception
|
||||
u16 dataSize; // Size of receive data
|
||||
u8 newDataFlag; // Flag indicating whether receive data has newly arrived (0: no newly arrived data; 1: newly arrived data)
|
||||
// The flag is cleared with rfu_UNI_clearRecvNewDataFlag; it is set when data is received with rfu_REQ_recvData.
|
||||
u8 dataBlockFlag; // Flag for unreferenced receive data overwrite block (default is 0 Note: not used)
|
||||
};
|
||||
|
||||
struct RfuUnk3
|
||||
// Slot Status Data Structure for UNI-Type Communication
|
||||
struct RfuSlotStatusUNI
|
||||
{
|
||||
u32 unk_0;
|
||||
u32 unk_4;
|
||||
u8 unk_8[0xD4];
|
||||
u32 unk_dc;
|
||||
struct UNISend send; // Transmission Status
|
||||
struct UNIRecv recv; // Reception Status
|
||||
void *recvBuffer; // Reception Buffer Address
|
||||
u32 recvBufferSize; // Reception Buffer Size
|
||||
};
|
||||
|
||||
struct RfuUnk5Sub
|
||||
#define WINDOW_COUNT 4
|
||||
|
||||
struct NIComm
|
||||
{
|
||||
u16 unk_00;
|
||||
u8 unk_02;
|
||||
u16 unk_04;
|
||||
struct UnkLinkRfuStruct_02022B14 unk_06;
|
||||
u8 fill_13[1];
|
||||
u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
u16 state; // Communication state of slot
|
||||
u16 failCounter; // Count of failed transmissions/receptions (Count is increased when transmission/reception of data does not succeed within 1PF=16.7 ms)
|
||||
const u8 *now_p[WINDOW_COUNT]; // Address of current send/receive (The data is divided into WINDOW_COUNT blocks and sent in payloadSize units.)
|
||||
// remainSize is u32 in SDK. This is a hack to match ASM
|
||||
s32 remainSize; // Size of remaining communication data
|
||||
u16 errorCode; // Error code
|
||||
u8 bmSlot; // Expresses the current communication slot in bits
|
||||
// (When sending from the Master, because multiple slaves can be specified with bmSlot, communications are terminated based on the failCounter for each child device)
|
||||
// Parameters used inside the Library
|
||||
u8 recvAckFlag[WINDOW_COUNT];
|
||||
u8 ack;
|
||||
u8 phase;
|
||||
u8 n[WINDOW_COUNT];
|
||||
// Parameters indicating the current communication content
|
||||
const void *src; // Start address transmission data (valid only for transmitting device)
|
||||
u8 bmSlotOrg; // Expresses the communication source slot at the beginning of the transmission in bits (valid only for transmitting device)
|
||||
u8 dataType; // Transmission/reception data type (0: User data; 1: Game identification information)
|
||||
u16 payloadSize; // Payload size for one transmission
|
||||
u32 dataSize; // Size of transmission/reception data
|
||||
// Calculated by subtracting link layer header size from subFrameSize specified by the rfu_NI_setSendData function
|
||||
};
|
||||
|
||||
struct RfuUnk5
|
||||
struct RfuSlotStatusNI
|
||||
{
|
||||
u8 unk_00;
|
||||
u8 unk_01;
|
||||
u8 unk_02;
|
||||
u8 unk_03;
|
||||
u8 unk_04;
|
||||
u8 unk_05;
|
||||
u8 unk_06;
|
||||
u8 unk_07;
|
||||
u8 unk_08;
|
||||
u8 filler_09[1];
|
||||
u8 unk_0a[4];
|
||||
u8 filler_0e[6];
|
||||
struct RfuUnk5Sub unk_14[4];
|
||||
struct NIComm send; // Transmission Status
|
||||
struct NIComm recv; // Reception Status
|
||||
void *recvBuffer; // Reception Buffer Address
|
||||
u32 recvBufferSize; // Reception Buffer Size
|
||||
};
|
||||
|
||||
extern struct RfuStruct * gRfuState;
|
||||
// Game Identification Information Data Structure
|
||||
struct RfuTgtData
|
||||
{
|
||||
u16 id; // ID of parent candidate ID of connection partner
|
||||
u8 slot; // Slot number where parent candidate can enter Connection slot number
|
||||
u8 mbootFlag; // Flag to indicate whether or not the parent candidate Flag to indicate whether or not the connection partner
|
||||
// is multiboot program for download is multiboot program for download
|
||||
u16 serialNo; // Game serial number of parent candidate Game serial number of connection partner
|
||||
u8 gname[RFU_GAME_NAME_LENGTH + 2]; // Game name of parent candidate Game name of connection partner
|
||||
u8 uname[RFU_USER_NAME_LENGTH + 1]; // User name for parent candidate User name for connection partner
|
||||
};
|
||||
|
||||
extern struct RfuUnk5 * gUnknown_3007460;
|
||||
extern u32 *gUnknown_3007464;
|
||||
extern struct RfuUnk3 * gUnknown_3007468;
|
||||
extern struct RfuUnk2 * gUnknown_3007450[4];
|
||||
extern struct RfuUnk1 * gUnknown_3007440[4];
|
||||
extern struct {
|
||||
struct RfuLinkStatus
|
||||
{
|
||||
u8 parentChild; // Connection status (0x01:MODE_PARENT 0x00:MODE_CHILD 0xff:MODE_NEUTRAL)
|
||||
u8 connCount; // Number of connections
|
||||
u8 connSlotFlag; // Flag to indicate in bits the connection slot (0x01<<Connection slot number)
|
||||
u8 linkLossSlotFlag; // Flag to indicate in bits the slot where the link loss was generated (")
|
||||
u8 sendSlotNIFlag; // Flag to indicate in bits the slot where NI-type send is occurring (")
|
||||
u8 recvSlotNIFlag; // Flag to indicate in bits the slot where NI-type receive is occurring (")
|
||||
u8 sendSlotUNIFlag; // Flag to indicate in bits the slot where UNI-type send is occurring (")
|
||||
u8 getNameFlag; // Parent: Flag to indicate whether or not game identification information was obtained from the child connected to this slot (")
|
||||
// Child: Flag to indicate whether or not game identification information was sent to the parent connected to this slot (")
|
||||
u8 findParentCount; // Number of parent candidates discovered with rfu_REQ_xxxSearchParent, valid only with a child device
|
||||
u8 watchInterval; // Link monitor execution interval (16.7 ms unit AGB picture frame)
|
||||
u8 strength[RFU_CHILD_MAX]; // Link strength value (0x00 - 0xff; 0x00 is link loss. Updates with rfu_REQBN_watchLink)
|
||||
vu8 LLFReadyFlag; // Indicates whether the link layer frame to send next has be constructed (Flag is on when calling rfu_constructLLFrame, flag is cleared when sending by rfu_REQ_sendData.)
|
||||
u8 remainLLFrameSizeParent; // Remaining size of the link layer communication frame for the parent device
|
||||
u8 remainLLFrameSizeChild[RFU_CHILD_MAX]; // Remaining size of the link layer communication frame for each slot for child device
|
||||
struct RfuTgtData partner[RFU_CHILD_MAX]; // Parent, Child: When there is a connection, the matrix element corresponding to the number of the connected slot
|
||||
// stores the game identification information for the connection partner.
|
||||
// Child: Stores the game identification information for the parent candidate discovered when executing rfu_REQ_xxxxSearchParent.
|
||||
struct RfuTgtData my; // The device's own game identification information (unrelated to the element slot value)
|
||||
};
|
||||
|
||||
// the following structs are not documented in SDK
|
||||
struct RfuFixed
|
||||
{
|
||||
void (*reqCallback)(u16, u16);
|
||||
void (*fastCopyPtr)(const u8 **, u8 **, s32);
|
||||
u16 fastCopyBuffer[24];
|
||||
u32 fastCopyBuffer2[12];
|
||||
u32 LLFBuffer[29];
|
||||
struct RfuIntrStruct *STWIBuffer;
|
||||
};
|
||||
|
||||
struct RfuStatic
|
||||
{
|
||||
u8 flags;
|
||||
u8 NIEndRecvFlag;
|
||||
u8 recvRenewalFlag;
|
||||
u8 commExistFlag;
|
||||
u8 recvErrorFlag;
|
||||
u8 recoveryBmSlot;
|
||||
u8 nowWatchInterval;
|
||||
u8 nullFrameCount;
|
||||
u8 emberCount;
|
||||
u8 SCStartFlag;
|
||||
u8 linkEmergencyFlag[4];
|
||||
u8 lsFixedCount[4];
|
||||
u16 cidBak[4];
|
||||
u16 unk_1a;
|
||||
u16 reqResult;
|
||||
u16 tryPid;
|
||||
u16 watchdogTimer;
|
||||
u32 totalPacketSize;
|
||||
};
|
||||
|
||||
struct RfuSIO32Id
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u8 fill6[4];
|
||||
u16 unk6;
|
||||
u16 unk8; // unused
|
||||
u16 unkA;
|
||||
} gUnknown_3007470;
|
||||
};
|
||||
|
||||
extern void rfu_STC_clearAPIVariables(void);
|
||||
struct RfuAPIBuffer
|
||||
{
|
||||
struct RfuLinkStatus linkStatus;
|
||||
struct RfuStatic static_;
|
||||
struct RfuFixed fixed;
|
||||
struct RfuSlotStatusNI NI[RFU_CHILD_MAX];
|
||||
struct RfuSlotStatusUNI UNI[RFU_CHILD_MAX];
|
||||
struct RfuIntrStruct intr;
|
||||
};
|
||||
|
||||
void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
|
||||
void rfu_REQ_stopMode(void);
|
||||
void rfu_waitREQComplete(void);
|
||||
extern struct STWIStatus *gSTWIStatus;
|
||||
extern struct RfuLinkStatus *gRfuLinkStatus;
|
||||
extern struct RfuStatic *gRfuStatic;
|
||||
extern struct RfuFixed *gRfuFixed;
|
||||
extern struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX];
|
||||
extern struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX];
|
||||
extern struct RfuSIO32Id gRfuSIO32Id;
|
||||
|
||||
// librfu_s32id
|
||||
s32 AgbRFU_checkID(u8);
|
||||
|
||||
// Arguments with "bm..." specify slots of the form (0x01 << slot number) that are the object of a function operation.
|
||||
|
||||
// librfu_rfu
|
||||
// API Initialization and Initial Settings
|
||||
// API Initialization
|
||||
u16 rfu_initializeAPI(struct RfuAPIBuffer *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p, bool8 copyInterruptToRam);
|
||||
// Set Timer Interrupt
|
||||
void rfu_setTimerInterrupt(u8 timerNo, IntrFunc *timerIntrTable_p);
|
||||
// Resident Function called from within a V-Blank Interrupt
|
||||
u16 rfu_syncVBlank(void);
|
||||
// Specify REQ Callback function
|
||||
void rfu_setREQCallback(void (*callback)(u16 reqCommandId, u16 reqResult));
|
||||
// REQ-API Execution Completion Wait
|
||||
u16 rfu_waitREQComplete(void);
|
||||
|
||||
// RFU Initialization and Initial Settings
|
||||
// RFU Startup and ID Check (Forced RFU reset occurs simultaneously)
|
||||
u32 rfu_REQBN_softReset_and_checkID(void);
|
||||
void rfu_REQ_sendData(u8);
|
||||
void rfu_setMSCCallback(void (*func)(u16));
|
||||
void rfu_setREQCallback(void (*func)(u16, u16));
|
||||
bool8 rfu_getMasterSlave(void);
|
||||
void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3);
|
||||
bool16 rfu_syncVBlank(void);
|
||||
// RFU Reset
|
||||
void rfu_REQ_reset(void);
|
||||
void rfu_REQ_configSystem(u16, u8, u8);
|
||||
void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *);
|
||||
// Set RFU to Stop Mode (Power Down)
|
||||
void rfu_REQ_stopMode(void);
|
||||
// RFU Hardware Settings
|
||||
void rfu_REQ_configSystem(u16 availSlotFlag, u8 maxMFrame, u8 mcTimer);
|
||||
// Game Identification Information Configuration
|
||||
void rfu_REQ_configGameData(u8 mbootFlag, u16 serialNo, const u8 *gname, const u8 *uname);
|
||||
|
||||
// RFU Connection Process
|
||||
// Operate as parent device; search for and connect to child device
|
||||
void rfu_REQ_startSearchChild(void);
|
||||
void rfu_REQ_pollSearchChild(void);
|
||||
void rfu_REQ_endSearchChild(void);
|
||||
// Operate as child device; search for parent device
|
||||
void rfu_REQ_startSearchParent(void);
|
||||
void rfu_REQ_pollSearchParent(void);
|
||||
void rfu_REQ_endSearchParent(void);
|
||||
void rfu_REQ_startConnectParent(u16);
|
||||
// Operate as child device; connect to specified parent device
|
||||
void rfu_REQ_startConnectParent(u16 pid);
|
||||
void rfu_REQ_pollConnectParent(void);
|
||||
void rfu_REQ_endConnectParent(void);
|
||||
void rfu_REQ_CHILD_startConnectRecovery(u8);
|
||||
u16 rfu_getConnectParentStatus(u8 *status,u8 *connectSlotNo);
|
||||
// Restore link from child device
|
||||
void rfu_REQ_CHILD_startConnectRecovery(u8 bmRecoverySlot);
|
||||
void rfu_REQ_CHILD_pollConnectRecovery(void);
|
||||
void rfu_REQ_CHILD_endConnectRecovery(void);
|
||||
u16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
|
||||
|
||||
// RFU Link Management
|
||||
// Link Monitoring
|
||||
u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason, u8 *parentBmLinkRecoverySlot);
|
||||
// Link Disconnect
|
||||
void rfu_REQ_disconnect(u8 bmDisconnectSlot);
|
||||
|
||||
// Relation of clock between AGB and RFU
|
||||
// Switch to AGB clock slave
|
||||
void rfu_REQ_changeMasterSlave(void);
|
||||
void rfu_REQ_RFUStatus(void);
|
||||
void rfu_getRFUStatus(u8 *status);
|
||||
u8 *rfu_getSTWIRecvBuffer(void);
|
||||
u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1);
|
||||
void rfu_clearSlot(u8 a0, u8 a1);
|
||||
// Acquire either the master or slave clock from the current AGB-RFU
|
||||
bool8 rfu_getMasterSlave(void);
|
||||
|
||||
// Communication Configuration
|
||||
// MSC Callback Configuration
|
||||
void rfu_setMSCCallback(void (*callback)(u16 reqCommandId));
|
||||
// Shared by NI- and UNI-type communications
|
||||
// Clear Communication Status
|
||||
void rfu_clearAllSlot(void);
|
||||
bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
|
||||
bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1);
|
||||
bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0);
|
||||
void rfu_REQ_disconnect(u8 who);
|
||||
void rfu_changeSendTarget(u8 a0, u8 who, u8 a2);
|
||||
void rfu_NI_stopReceivingData(u8 who);
|
||||
u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam);
|
||||
void rfu_setTimerInterrupt(u8 which, IntrFunc *intr);
|
||||
void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3);
|
||||
bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size);
|
||||
void rfu_REQ_recvData(void);
|
||||
void rfu_UNI_readySendData(u8 a0);
|
||||
void rfu_UNI_clearRecvNewDataFlag(u8 a0);
|
||||
u16 rfu_clearSlot(u8 connTypeFlag, u8 slotStatusIndex);
|
||||
// Set Receive Buffer
|
||||
u16 rfu_setRecvBuffer(u8 connType, u8 slotNo, void *buffer, u32 buffSize);
|
||||
|
||||
// Receive/Send Data
|
||||
// UNI-type communication
|
||||
// Set transmission data
|
||||
u16 rfu_UNI_setSendData(u8 bmSendSlot, const void *src, u8 size);
|
||||
// Enable transmission data
|
||||
void rfu_UNI_readySendData(u8 slotStatusIndex);
|
||||
// Change address or size of transmission data and enable transmission data
|
||||
u16 rfu_UNI_changeAndReadySendData(u8 slotStatusIndex, const void *src, u8 size);
|
||||
// Used only by parent device. At the beginning of a MSC Callback that received notification that the data transmission completed, an ACK flag is obtained.
|
||||
u16 rfu_UNI_PARENT_getDRAC_ACK(u8 *ackFlag);
|
||||
// Clear the flag that indicates newly arrived reception data
|
||||
void rfu_UNI_clearRecvNewDataFlag(u8 slotStatusIndex);
|
||||
// NI-type Communication
|
||||
// Set transmission data
|
||||
u16 rfu_NI_setSendData(u8 bmSendSlot, u8 subFrameSize, const void *src, u32 size);
|
||||
// Used only by child device. After establishing connection at the RFU level, configure transmission of child device game identification information in order to authenticate connection
|
||||
u16 rfu_NI_CHILD_setSendGameName(u8 slotNo, u8 subFrameSize);
|
||||
// Stop the NI data currently being received
|
||||
u16 rfu_NI_stopReceivingData(u8 slotStatusIndex);
|
||||
// Shared by NI- and UNI-type communications
|
||||
// Narrow transmission targets for transmission data.
|
||||
u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot);
|
||||
|
||||
// Functions for sending/receiving data to RFU
|
||||
// Data transmission
|
||||
void rfu_REQ_sendData(u8 clockChangeFlag);
|
||||
// Used only by parent device. Resend previous sent data (packet)
|
||||
void rfu_REQ_PARENT_resumeRetransmitAndChange(void);
|
||||
void rfu_NI_setSendData(u8, u8, const void *, u32);
|
||||
// Read receive data
|
||||
void rfu_REQ_recvData(void);
|
||||
|
||||
// For Multi-boot
|
||||
// Inherits the information about the link established by the downloader just after the program downloaded with multiboot starts up.
|
||||
u16 rfu_MBOOT_CHILD_inheritanceLinkStatus(void);
|
||||
|
||||
// For Debug
|
||||
// Obtain address of the SWTI-layer receive buffer
|
||||
struct RfuIntrStruct *rfu_getSTWIRecvBuffer(void);
|
||||
// Obtain RFU state
|
||||
void rfu_REQ_RFUStatus(void);
|
||||
u16 rfu_getRFUStatus(u8 *rfuState);
|
||||
// Using RFU, generate noise (jamming radio waves) for other RFUs
|
||||
void rfu_REQ_noise(void);
|
||||
|
||||
// librfu_intr
|
||||
void IntrSIO32(void);
|
||||
|
||||
// librfu_stwi
|
||||
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
|
||||
void STWI_set_MS_mode(u8 mode);
|
||||
void STWI_init_Callback_M(void);
|
||||
void STWI_init_Callback_S(void);
|
||||
void STWI_set_Callback_M(void *callbackM);
|
||||
void STWI_set_Callback_S(void (*callbackS)(u16));
|
||||
void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect);
|
||||
void AgbRFU_SoftReset(void);
|
||||
void STWI_set_Callback_ID(void (*func)(void));
|
||||
u16 STWI_read_status(u8 index);
|
||||
u16 STWI_poll_CommandEnd(void);
|
||||
void STWI_send_DataRxREQ(void);
|
||||
void STWI_send_MS_ChangeREQ(void);
|
||||
void STWI_send_StopModeREQ(void);
|
||||
void STWI_send_SystemStatusREQ(void);
|
||||
void STWI_send_GameConfigREQ(const u8 *unk1, const u8 *data);
|
||||
void STWI_send_ResetREQ(void);
|
||||
void STWI_send_LinkStatusREQ(void);
|
||||
void STWI_send_VersionStatusREQ(void);
|
||||
void STWI_send_SlotStatusREQ(void);
|
||||
void STWI_send_ConfigStatusREQ(void);
|
||||
void STWI_send_ResumeRetransmitAndChangeREQ(void);
|
||||
void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3);
|
||||
void STWI_send_SC_StartREQ(void);
|
||||
void STWI_send_SC_PollingREQ(void);
|
||||
void STWI_send_SC_EndREQ(void);
|
||||
void STWI_send_SP_StartREQ(void);
|
||||
void STWI_send_SP_PollingREQ(void);
|
||||
void STWI_send_SP_EndREQ(void);
|
||||
void STWI_send_CP_StartREQ(u16 unk1);
|
||||
void STWI_send_CP_PollingREQ(void);
|
||||
void STWI_send_CP_EndREQ(void);
|
||||
void STWI_send_DataTxREQ(const void *in, u8 size);
|
||||
void STWI_send_DataTxAndChangeREQ(const void *in, u8 size);
|
||||
void STWI_send_DataReadyAndChangeREQ(u8 unk);
|
||||
void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1);
|
||||
void STWI_send_DisconnectREQ(u8 unk);
|
||||
void STWI_send_TestModeREQ(u8 unk0, u8 unk1);
|
||||
void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2);
|
||||
void STWI_send_CPR_PollingREQ(void);
|
||||
void STWI_send_CPR_EndREQ(void);
|
||||
|
||||
#endif // GUARD_LIBRFU_H
|
||||
|
||||
@@ -259,5 +259,7 @@ void sub_80FA42C(void);
|
||||
void sub_800B284(struct LinkPlayer * linkPlayer);
|
||||
bool8 IsWirelessAdapterConnected(void);
|
||||
bool8 sub_800A474(u8 a0);
|
||||
void LinkVSync(void);
|
||||
bool8 HandleLinkConnection(void);
|
||||
|
||||
#endif // GUARD_LINK_H
|
||||
|
||||
@@ -46,6 +46,8 @@ void sub_80FBB20(void);
|
||||
bool8 sub_80FA484(bool32 a0);
|
||||
void var_800D_set_xB(void);
|
||||
struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void);
|
||||
void sub_80FCF34(void);
|
||||
void InitRFU(void);
|
||||
|
||||
#include "mevent_server.h"
|
||||
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include "global.h"
|
||||
|
||||
extern bool32 gFlashMemoryPresent;
|
||||
extern struct SaveBlock1 gSaveBlock1;
|
||||
extern struct SaveBlock2 gSaveBlock2;
|
||||
|
||||
void ClearSav2(void);
|
||||
void ClearSav1(void);
|
||||
|
||||
@@ -9,6 +9,7 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE1;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE2;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE3;
|
||||
extern struct SoundInfo gSoundInfo;
|
||||
|
||||
void m4aSoundVSync(void);
|
||||
void m4aSoundVSyncOn(void);
|
||||
|
||||
@@ -49,5 +49,6 @@ void sub_80F85BC(u16 a0);
|
||||
u16 sub_80F856C(u8 id);
|
||||
bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime);
|
||||
bool32 sub_80F83B0(void);
|
||||
const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec);
|
||||
|
||||
#endif //GUARD_MAP_PREVIEW_SCREEN_H
|
||||
|
||||
@@ -149,5 +149,8 @@ void sub_8055778(int);
|
||||
void sub_8055738(u8 loc);
|
||||
|
||||
void sub_8056078(void *, void *);
|
||||
void sub_805546C(u8 a0);
|
||||
bool32 sub_80582E0(void);
|
||||
bool32 sub_8058274(void);
|
||||
|
||||
#endif //GUARD_OVERWORLD_H
|
||||
|
||||
@@ -509,6 +509,7 @@ extern const u16 *const gLevelUpLearnsets[];
|
||||
extern const u8 gFacilityClassToPicIndex[];
|
||||
extern const u8 gFacilityClassToTrainerClass[];
|
||||
extern const struct SpriteTemplate gUnknown_825DEF0[];
|
||||
extern const u8 gPPUpGetMask[];
|
||||
|
||||
void ZeroBoxMonData(struct BoxPokemon *boxMon);
|
||||
void ZeroMonData(struct Pokemon *mon);
|
||||
|
||||
@@ -34,5 +34,6 @@ enum PokemonSummaryScreenPage
|
||||
|
||||
s32 GetLastViewedMonIndex(void);
|
||||
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
|
||||
void sub_8138B38(u8);
|
||||
|
||||
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
|
||||
|
||||
+15
-67
@@ -24,77 +24,25 @@ enum {
|
||||
MAPSECTYPE_CITY_CANTFLY,
|
||||
};
|
||||
|
||||
struct RegionMap {
|
||||
/*0x000*/ u16 mapSecId;
|
||||
/*0x002*/ u8 iconDrawType;
|
||||
/*0x003*/ u8 posWithinMapSec;
|
||||
/*0x004*/ u8 mapSecName[0x14];
|
||||
/*0x018*/ u8 (*inputCallback)(void);
|
||||
/*0x01c*/ struct Sprite *cursorSprite;
|
||||
/*0x020*/ struct Sprite *playerIconSprite;
|
||||
/*0x024*/ s32 bg2x;
|
||||
/*0x028*/ s32 bg2y;
|
||||
/*0x02c*/ u32 bg2pa;
|
||||
/*0x034*/ u32 bg2pc;
|
||||
/*0x030*/ u32 bg2pb;
|
||||
/*0x038*/ u32 bg2pd;
|
||||
/*0x03c*/ s32 unk_03c;
|
||||
/*0x040*/ s32 unk_040;
|
||||
/*0x044*/ s32 unk_044;
|
||||
/*0x048*/ s32 unk_048;
|
||||
/*0x04c*/ s32 unk_04c;
|
||||
/*0x050*/ s32 unk_050;
|
||||
/*0x054*/ u16 cursorPosX;
|
||||
/*0x056*/ u16 cursorPosY;
|
||||
/*0x058*/ u16 cursorTileTag;
|
||||
/*0x05a*/ u16 cursorPaletteTag;
|
||||
/*0x05c*/ s16 scrollX;
|
||||
/*0x05e*/ s16 scrollY;
|
||||
/*0x060*/ s16 unk_060;
|
||||
/*0x062*/ s16 unk_062;
|
||||
/*0x064*/ u16 zoomedCursorPosX;
|
||||
/*0x066*/ u16 zoomedCursorPosY;
|
||||
/*0x068*/ s16 zoomedCursorDeltaY;
|
||||
/*0x06a*/ s16 zoomedCursorDeltaX;
|
||||
/*0x06c*/ u16 zoomedCursorMovementFrameCounter;
|
||||
/*0x06e*/ u16 unk_06e;
|
||||
/*0x070*/ u16 playerIconTileTag;
|
||||
/*0x072*/ u16 playerIconPaletteTag;
|
||||
/*0x074*/ u16 playerIconSpritePosX;
|
||||
/*0x076*/ u16 playerIconSpritePosY;
|
||||
/*0x078*/ bool8 zoomed;
|
||||
/*0x079*/ u8 initStep;
|
||||
/*0x07a*/ s8 cursorMovementFrameCounter;
|
||||
/*0x07b*/ s8 cursorDeltaX;
|
||||
/*0x07c*/ s8 cursorDeltaY;
|
||||
/*0x07d*/ bool8 needUpdateVideoRegs;
|
||||
/*0x07e*/ bool8 blinkPlayerIcon;
|
||||
/*0x07f*/ bool8 playerIsInCave;
|
||||
/*0x080*/ u8 bgNum;
|
||||
/*0x081*/ u8 charBaseIdx;
|
||||
/*0x082*/ u8 mapBaseIdx;
|
||||
/*0x083*/ bool8 bgManaged;
|
||||
/*0x084*/ u8 filler_084[0x100];
|
||||
/*0x184*/ u8 cursorSmallImage[0x100];
|
||||
/*0x284*/ u8 cursorLargeImage[0x600];
|
||||
}; // size = 0x884
|
||||
enum {
|
||||
MAPPERM_0,
|
||||
MAPPERM_1,
|
||||
MAPPERM_2,
|
||||
MAPPERM_3
|
||||
};
|
||||
|
||||
enum {
|
||||
REGIONMAP_KANTO,
|
||||
REGIONMAP_SEVII123,
|
||||
REGIONMAP_SEVII45,
|
||||
REGIONMAP_SEVII67
|
||||
};
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed);
|
||||
bool8 sub_8122DB0(void);
|
||||
void UpdateRegionMapVideoRegs(void);
|
||||
void InitRegionMap(struct RegionMap *regionMap, u8 argument);
|
||||
u8 sub_81230AC(void);
|
||||
bool8 sub_8123514(void);
|
||||
void FreeRegionMapIconResources(void);
|
||||
u16 GetRegionMapSectionIdAt(u16 x, u16 y);
|
||||
void CreateRegionMapPlayerIcon(u16 x, u16 y);
|
||||
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
|
||||
u8 *GetMapName(u8 *, u16, u16);
|
||||
bool32 sub_8124668(u8 mapSecId);
|
||||
void GetMapNameGeneric(u8 *, u8);
|
||||
u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill);
|
||||
u8 *GetMapNameGeneric(u8 *dest, u16 mapsec);
|
||||
void sub_80BFF50(u8 a0, void (*a1)(void));
|
||||
void MCB2_FlyMap(void);
|
||||
|
||||
|
||||
@@ -2,5 +2,7 @@
|
||||
#define GUARD_SAVE_FAILED_SCREEN_H
|
||||
|
||||
extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
|
||||
void sub_80F50F4(void);
|
||||
bool32 sub_80F5118(void);
|
||||
|
||||
#endif //GUARD_SAVE_FAILED_SCREEN_H
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#ifndef GUARD_SCRIPTPOKE80F8_H
|
||||
#define GUARD_SCRIPTPOKE80F8_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void ShowContestWinner(void);
|
||||
u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
|
||||
u8 ScriptGiveEgg(u16);
|
||||
void CreateScriptedWildMon(u16, u8, u16);
|
||||
void ScriptSetMonMoveSlot(u8, u16, u8);
|
||||
|
||||
#endif
|
||||
@@ -1,8 +0,0 @@
|
||||
#ifndef GUARD_SCRIPTPOKE81B9_H
|
||||
#define GUARD_SCRIPTPOKE81B9_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void sub_81B9404(void);
|
||||
|
||||
#endif
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
|
||||
#define GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
|
||||
#ifndef GUARD_SCRIPT_POKEMON_UTIL_H
|
||||
#define GUARD_SCRIPT_POKEMON_UTIL_H
|
||||
|
||||
bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3);
|
||||
bool8 ScriptGiveEgg(u16 species);
|
||||
void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot);
|
||||
void HealPlayerParty(void);
|
||||
void ReducePlayerPartyToThree(void);
|
||||
void CreateScriptedWildMon(u16 species, u8 level, u16 item);
|
||||
|
||||
#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
|
||||
#endif //GUARD_SCRIPT_POKEMON_UTIL_H
|
||||
@@ -1003,4 +1003,34 @@ extern const u8 gText_UnionRoomTradesBattles[];
|
||||
extern const u8 gText_LinkBattles[];
|
||||
extern const u8 gText_LinkCableBattles[];
|
||||
|
||||
// region_map
|
||||
extern const u8 gText_RegionMap_DPadMove[];
|
||||
extern const u8 gText_RegionMap_Space[];
|
||||
extern const u8 gText_RegionMap_AButtonGuide[];
|
||||
extern const u8 gText_RegionMap_AButtonCancel[];
|
||||
extern const u8 gText_RegionMap_AButtonCancel2[];
|
||||
extern const u8 gText_RegionMap_AButtonSwitch[];
|
||||
extern const u8 gText_RegionMap_AButtonOK[];
|
||||
extern const u8 gText_RegionMap_UpDownPick[];
|
||||
extern const u8 gText_RegionMap_NoData[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_ViridianForest[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_MtMoon[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_DiglettsCave[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_VictoryRoad[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_PokemonMansion[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_SafariZone[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_RockTunnel[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_SeafoamIslands[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_PokemonTower[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_CeruleanCave[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_PowerPlant[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_MtEmber[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_BerryForest[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_IcefallCave[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_LostCave[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_TanobyRuins[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_AlteringCave[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_PatternBush[];
|
||||
extern const u8 gText_RegionMap_AreaDesc_DottedHole[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
||||
+1
-2
@@ -250,12 +250,11 @@ u16 RenderText(struct TextPrinter *textPrinter);
|
||||
s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
|
||||
s32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
|
||||
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
|
||||
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str);
|
||||
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7);
|
||||
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
|
||||
u8 GetKeypadIconTileOffset(u8 keypadIconId);
|
||||
u8 GetKeypadIconWidth(u8 keypadIconId);
|
||||
u8 GetKeypadIconHeight(u8 keypadIconId);
|
||||
void SetDefaultFontsPointer(void);
|
||||
u8 GetFontAttribute(u8 fontId, u8 attributeId);
|
||||
u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension);
|
||||
void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese);
|
||||
|
||||
+14
-12
@@ -1,5 +1,3 @@
|
||||
ENTRY(Start)
|
||||
|
||||
gNumMusicPlayers = 4;
|
||||
gMaxLines = 0;
|
||||
|
||||
@@ -81,7 +79,7 @@ SECTIONS {
|
||||
src/util.o(.text);
|
||||
src/blend_palette.o(.text);
|
||||
src/daycare.o(.text);
|
||||
asm/battle_interface.o(.text);
|
||||
src/battle_interface.o(.text);
|
||||
asm/smokescreen.o(.text);
|
||||
src/pokeball.o(.text);
|
||||
src/load_save.o(.text);
|
||||
@@ -147,10 +145,10 @@ SECTIONS {
|
||||
src/script_menu.o(.text);
|
||||
asm/naming_screen.o(.text);
|
||||
src/money.o(.text);
|
||||
asm/script_pokemon_util_80A0058.o(.text);
|
||||
src/script_pokemon_util.o(.text);
|
||||
src/field_poison.o(.text);
|
||||
src/pokemon_size_record.o(.text);
|
||||
asm/pc_screen_effect.o(.text);
|
||||
src/pc_screen_effect.o(.text);
|
||||
src/fldeff_poison.o(.text);
|
||||
src/fldeff_berrytree.o(.text);
|
||||
src/field_special_scene.o(.text);
|
||||
@@ -180,9 +178,10 @@ SECTIONS {
|
||||
src/mon_markings.o(.text);
|
||||
src/mail.o(.text);
|
||||
src/menu_helpers.o(.text);
|
||||
asm/script_pokemon_util_80BF8FC.o(.text);
|
||||
src/party_menu_specials.o(.text);
|
||||
src/heal_location.o(.text);
|
||||
asm/region_map.o(.text);
|
||||
src/region_map.o(.text);
|
||||
src/image_processing_effects.o(.text);
|
||||
src/battle_ai_script_commands.o(.text);
|
||||
src/fldeff_rocksmash.o(.text);
|
||||
src/fldeff_dig.o(.text);
|
||||
@@ -318,9 +317,10 @@ SECTIONS {
|
||||
src/agb_flash_1m.o(.text);
|
||||
src/agb_flash_mx.o(.text);
|
||||
src/agb_flash_le.o(.text);
|
||||
asm/librfu_stwi.o(.text);
|
||||
src/librfu_stwi.o(.text);
|
||||
asm/librfu_intr.o(.text);
|
||||
asm/librfu.o(.text);
|
||||
src/librfu_rfu.o(.text);
|
||||
src/librfu_sio32id.o(.text);
|
||||
src/isagbprn.o(.text);
|
||||
asm/libagbsyscall.o(.text);
|
||||
*libgcc.a:_call_via_rX.o(.text);
|
||||
@@ -405,7 +405,7 @@ SECTIONS {
|
||||
src/util.o(.rodata);
|
||||
src/daycare.o(.rodata);
|
||||
src/battle_gfx_sfx_util.o(.rodata);
|
||||
data/battle_interface.o(.rodata);
|
||||
src/battle_interface.o(.rodata);
|
||||
src/pokeball.o(.rodata);
|
||||
src/trade.o(.rodata);
|
||||
src/trade_scene.o(.rodata);
|
||||
@@ -479,7 +479,8 @@ SECTIONS {
|
||||
src/mon_markings.o(.rodata);
|
||||
src/mail.o(.rodata);
|
||||
src/heal_location.o(.rodata);
|
||||
data/region_map.o(.rodata);
|
||||
src/region_map.o(.rodata);
|
||||
src/image_processing_effects.o(.rodata);
|
||||
src/battle_ai_script_commands.o(.rodata);
|
||||
data/fldeff_flash.o(.rodata);
|
||||
src/field_specials.o(.rodata);
|
||||
@@ -939,7 +940,8 @@ SECTIONS {
|
||||
src/agb_flash_1m.o(.rodata);
|
||||
src/agb_flash_mx.o(.rodata);
|
||||
src/agb_flash_le.o(.rodata);
|
||||
data/librfu_rodata.o(.rodata);
|
||||
src/librfu_rfu.o(.rodata);
|
||||
src/librfu_sio32id.o(.rodata);
|
||||
src/isagbprn.o(.rodata);
|
||||
*libgcc.a:_divdi3.o(.rodata);
|
||||
*libgcc.a:_udivdi3.o(.rodata);
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void))
|
||||
return 1;
|
||||
|
||||
sTimerNum = timerNum;
|
||||
sTimerReg = ®_TMCNT(sTimerNum);
|
||||
sTimerReg = ®_TMCNT_L(sTimerNum);
|
||||
*intrFunc = FlashTimerIntr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -687,8 +687,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform)
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]);
|
||||
SetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_NICKNAME, gSpeciesNames[targetSpecies]);
|
||||
sub_80496C0(gHealthboxSpriteIds[battlerAtk], &gEnemyParty[gBattlerPartyIndexes[battlerAtk]]);
|
||||
sub_804981C(gHealthboxSpriteIds[battlerAtk], 1);
|
||||
UpdateNickInHealthbox(gHealthboxSpriteIds[battlerAtk], &gEnemyParty[gBattlerPartyIndexes[battlerAtk]]);
|
||||
TryAddPokeballIconToHealthbox(gHealthboxSpriteIds[battlerAtk], 1);
|
||||
}
|
||||
else if (notTransform)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1254,7 +1254,7 @@ const u8 *const gUnknown_83FE7F4[] = {
|
||||
sText_Speed
|
||||
};
|
||||
|
||||
const u8 gUnknown_83FE80C[] = _("{HIGHLIGHT 2}SAFARI BALLS"); //
|
||||
const u8 gText_SafariBalls[] = _("{HIGHLIGHT 2}SAFARI BALLS"); //
|
||||
const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: ");
|
||||
const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}");
|
||||
const u8 gText_Sleep[] = _("sleep");
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
#include "safari_zone.h"
|
||||
#include "quest_log.h"
|
||||
#include "script.h"
|
||||
#include "script_pokemon_util_80A0058.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
#include "event_data.h"
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@
|
||||
#include "new_game.h"
|
||||
#include "save.h"
|
||||
#include "item.h"
|
||||
#include "script_pokemon_util_80A0058.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
const u8 gMapSecName_PalletTown[] = _("PALLET TOWN");
|
||||
const u8 gMapSecName_ViridianCity[] = _("VIRIDIAN CITY");
|
||||
const u8 gMapSecName_PewterCity[] = _("PEWTER CITY");
|
||||
const u8 gMapSecName_CeruleanCity[] = _("CERULEAN CITY");
|
||||
const u8 gMapSecName_LavenderTown[] = _("LAVENDER TOWN");
|
||||
const u8 gMapSecName_VermilionCity[] = _("VERMILION CITY");
|
||||
const u8 gMapSecName_CeladonCity[] = _("CELADON CITY");
|
||||
const u8 gMapSecName_FuchsiaCity[] = _("FUCHSIA CITY");
|
||||
const u8 gMapSecName_CinnabarIsland[] = _("CINNABAR ISLAND");
|
||||
const u8 gMapSecName_IndigoPlateau[] = _("INDIGO PLATEAU");
|
||||
const u8 gMapSecName_SaffronCity[] = _("SAFFRON CITY");
|
||||
const u8 gMapSecName_Route4[] = _("ROUTE 4");
|
||||
const u8 gMapSecName_Route10[] = _("ROUTE 10");
|
||||
const u8 gMapSecName_Route1[] = _("ROUTE 1");
|
||||
const u8 gMapSecName_Route2[] = _("ROUTE 2");
|
||||
const u8 gMapSecName_Route3[] = _("ROUTE 3");
|
||||
const u8 gMapSecName_Route4_2[] = _("ROUTE 4");
|
||||
const u8 gMapSecName_Route5[] = _("ROUTE 5");
|
||||
const u8 gMapSecName_Route6[] = _("ROUTE 6");
|
||||
const u8 gMapSecName_Route7[] = _("ROUTE 7");
|
||||
const u8 gMapSecName_Route8[] = _("ROUTE 8");
|
||||
const u8 gMapSecName_Route9[] = _("ROUTE 9");
|
||||
const u8 gMapSecName_Route10_2[] = _("ROUTE 10");
|
||||
const u8 gMapSecName_Route11[] = _("ROUTE 11");
|
||||
const u8 gMapSecName_Route12[] = _("ROUTE 12");
|
||||
const u8 gMapSecName_Route13[] = _("ROUTE 13");
|
||||
const u8 gMapSecName_Route14[] = _("ROUTE 14");
|
||||
const u8 gMapSecName_Route15[] = _("ROUTE 15");
|
||||
const u8 gMapSecName_Route16[] = _("ROUTE 16");
|
||||
const u8 gMapSecName_Route17[] = _("ROUTE 17");
|
||||
const u8 gMapSecName_Route18[] = _("ROUTE 18");
|
||||
const u8 gMapSecName_Route19[] = _("ROUTE 19");
|
||||
const u8 gMapSecName_Route20[] = _("ROUTE 20");
|
||||
const u8 gMapSecName_Route21[] = _("ROUTE 21");
|
||||
const u8 gMapSecName_Route22[] = _("ROUTE 22");
|
||||
const u8 gMapSecName_Route23[] = _("ROUTE 23");
|
||||
const u8 gMapSecName_Route24[] = _("ROUTE 24");
|
||||
const u8 gMapSecName_Route25[] = _("ROUTE 25");
|
||||
const u8 gMapSecName_ViridianForest[] = _("VIRIDIAN FOREST");
|
||||
const u8 gMapSecName_MtMoon[] = _("MT. MOON");
|
||||
const u8 gMapSecName_SSAnne[] = _("S.S. ANNE");
|
||||
const u8 gMapSecName_UndergroundPath[] = _("UNDERGROUND PATH");
|
||||
const u8 gMapSecName_UndergroundPath_2[] = _("UNDERGROUND PATH");
|
||||
const u8 gMapSecName_DiglettsCave[] = _("DIGLETT'S CAVE");
|
||||
const u8 gMapSecName_VictoryRoad[] = _("VICTORY ROAD");
|
||||
const u8 gMapSecName_RocketHideout[] = _("ROCKET HIDEOUT");
|
||||
const u8 gMapSecName_SilphCo[] = _("SILPH CO.");
|
||||
const u8 gMapSecName_PokemonMansion[] = _("POKéMON MANSION");
|
||||
const u8 gMapSecName_SafariZone[] = _("SAFARI ZONE");
|
||||
const u8 gMapSecName_PokemonLeague[] = _("POKéMON LEAGUE");
|
||||
const u8 gMapSecName_RockTunnel[] = _("ROCK TUNNEL");
|
||||
const u8 gMapSecName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
|
||||
const u8 gMapSecName_PokemonTower[] = _("POKéMON TOWER");
|
||||
const u8 gMapSecName_CeruleanCave[] = _("CERULEAN CAVE");
|
||||
const u8 gMapSecName_PowerPlant[] = _("POWER PLANT");
|
||||
const u8 gMapSecName_OneIsland[] = _("ONE ISLAND");
|
||||
const u8 gMapSecName_TwoIsland[] = _("TWO ISLAND");
|
||||
const u8 gMapSecName_ThreeIsland[] = _("THREE ISLAND");
|
||||
const u8 gMapSecName_FourIsland[] = _("FOUR ISLAND");
|
||||
const u8 gMapSecName_FiveIsland[] = _("FIVE ISLAND");
|
||||
const u8 gMapSecName_SevenIsland[] = _("SEVEN ISLAND");
|
||||
const u8 gMapSecName_SixIsland[] = _("SIX ISLAND");
|
||||
const u8 gMapSecName_KindleRoad[] = _("KINDLE ROAD");
|
||||
const u8 gMapSecName_TreasureBeach[] = _("TREASURE BEACH");
|
||||
const u8 gMapSecName_CapeBrink[] = _("CAPE BRINK");
|
||||
const u8 gMapSecName_BondBridge[] = _("BOND BRIDGE");
|
||||
const u8 gMapSecName_ThreeIslePort[] = _("THREE ISLE PORT");
|
||||
const u8 gMapSecName_SeviiIsle6[] = _("SEVII ISLE 6");
|
||||
const u8 gMapSecName_SeviiIsle7[] = _("SEVII ISLE 7");
|
||||
const u8 gMapSecName_SeviiIsle8[] = _("SEVII ISLE 8");
|
||||
const u8 gMapSecName_SeviiIsle9[] = _("SEVII ISLE 9");
|
||||
const u8 gMapSecName_ResortGorgeous[] = _("RESORT GORGEOUS");
|
||||
const u8 gMapSecName_WaterLabyrinth[] = _("WATER LABYRINTH");
|
||||
const u8 gMapSecName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
|
||||
const u8 gMapSecName_MemorialPillar[] = _("MEMORIAL PILLAR");
|
||||
const u8 gMapSecName_OutcastIsland[] = _("OUTCAST ISLAND");
|
||||
const u8 gMapSecName_GreenPath[] = _("GREEN PATH");
|
||||
const u8 gMapSecName_WaterPath[] = _("WATER PATH");
|
||||
const u8 gMapSecName_RuinValley[] = _("RUIN VALLEY");
|
||||
const u8 gMapSecName_TrainerTower[] = _("TRAINER TOWER");
|
||||
const u8 gMapSecName_CanyonEntrance[] = _("CANYON ENTRANCE");
|
||||
const u8 gMapSecName_SevaultCanyon[] = _("SEVAULT CANYON");
|
||||
const u8 gMapSecName_TanobyRuins[] = _("TANOBY RUINS");
|
||||
const u8 gMapSecName_SeviiIsle22[] = _("SEVII ISLE 22");
|
||||
const u8 gMapSecName_SeviiIsle23[] = _("SEVII ISLE 23");
|
||||
const u8 gMapSecName_SeviiIsle24[] = _("SEVII ISLE 24");
|
||||
const u8 gMapSecName_NavelRock[] = _("NAVEL ROCK");
|
||||
const u8 gMapSecName_MtEmber[] = _("MT. EMBER");
|
||||
const u8 gMapSecName_BerryForest[] = _("BERRY FOREST");
|
||||
const u8 gMapSecName_IcefallCave[] = _("ICEFALL CAVE");
|
||||
const u8 gMapSecName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
|
||||
const u8 gMapSecName_TrainerTower_2[] = _("TRAINER TOWER");
|
||||
const u8 gMapSecName_DottedHole[] = _("DOTTED HOLE");
|
||||
const u8 gMapSecName_LostCave[] = _("LOST CAVE");
|
||||
const u8 gMapSecName_PatternBush[] = _("PATTERN BUSH");
|
||||
const u8 gMapSecName_AlteringCave[] = _("ALTERING CAVE");
|
||||
const u8 gMapSecName_TanobyChambers[] = _("TANOBY CHAMBERS");
|
||||
const u8 gMapSecName_ThreeIslePath[] = _("THREE ISLE PATH");
|
||||
const u8 gMapSecName_TanobyKey[] = _("TANOBY KEY");
|
||||
const u8 gMapSecName_BirthIsland[] = _("BIRTH ISLAND");
|
||||
const u8 gMapSecName_MoneanChamber[] = _("MONEAN CHAMBER");
|
||||
const u8 gMapSecName_LiptooChamber[] = _("LIPTOO CHAMBER");
|
||||
const u8 gMapSecName_WeepthChamber[] = _("WEEPTH CHAMBER");
|
||||
const u8 gMapSecName_DilfordChamber[] = _("DILFORD CHAMBER");
|
||||
const u8 gMapSecName_ScufibChamber[] = _("SCUFIB CHAMBER");
|
||||
const u8 gMapSecName_RixyChamber[] = _("RIXY CHAMBER");
|
||||
const u8 gMapSecName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
|
||||
const u8 gMapSecName_EmberSpa[] = _("EMBER SPA");
|
||||
const u8 gMapSecName_CeladonDept[] = _("CELADON DEPT.");
|
||||
File diff suppressed because it is too large
Load Diff
+2222
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,164 @@
|
||||
#include "librfu.h"
|
||||
|
||||
static void Sio32IDIntr(void);
|
||||
static void Sio32IDInit(void);
|
||||
static s32 Sio32IDMain(void);
|
||||
|
||||
struct RfuSIO32Id gRfuSIO32Id;
|
||||
|
||||
static const u16 Sio32ConnectionData[] = { 0x494e, 0x544e, 0x4e45, 0x4f44 }; // NINTENDO
|
||||
static const char Sio32IDLib_Var[] = "Sio32ID_030820";
|
||||
|
||||
s32 AgbRFU_checkID(u8 r5)
|
||||
{
|
||||
u16 r8;
|
||||
vu16 *r4;
|
||||
s32 r6;
|
||||
|
||||
if (REG_IME == 0)
|
||||
return -1;
|
||||
r8 = REG_IE;
|
||||
gSTWIStatus->state = 10;
|
||||
STWI_set_Callback_ID(Sio32IDIntr);
|
||||
Sio32IDInit();
|
||||
r4 = ®_TMCNT_L(gSTWIStatus->timerSelect);
|
||||
r5 *= 8;
|
||||
while (--r5 != 0xFF)
|
||||
{
|
||||
r6 = Sio32IDMain();
|
||||
if (r6 != 0)
|
||||
break;
|
||||
r4[1] = 0;
|
||||
r4[0] = 0;
|
||||
r4[1] = TIMER_1024CLK | TIMER_ENABLE;
|
||||
while (r4[0] < 32)
|
||||
;
|
||||
r4[1] = 0;
|
||||
r4[0] = 0;
|
||||
}
|
||||
REG_IME = 0;
|
||||
REG_IE = r8;
|
||||
REG_IME = 1;
|
||||
gSTWIStatus->state = 0;
|
||||
STWI_set_Callback_ID(NULL);
|
||||
return r6;
|
||||
}
|
||||
|
||||
static void Sio32IDInit(void)
|
||||
{
|
||||
REG_IME = 0;
|
||||
REG_IE &= ~((8 << gSTWIStatus->timerSelect) | INTR_FLAG_SERIAL);
|
||||
REG_IME = 1;
|
||||
REG_RCNT = 0;
|
||||
REG_SIOCNT = SIO_32BIT_MODE;
|
||||
REG_SIOCNT |= SIO_INTR_ENABLE | SIO_ENABLE;
|
||||
CpuFill32(0, &gRfuSIO32Id, sizeof(struct RfuSIO32Id));
|
||||
REG_IF = INTR_FLAG_SERIAL;
|
||||
}
|
||||
|
||||
static s32 Sio32IDMain(void)
|
||||
{
|
||||
u8 r12;
|
||||
|
||||
switch (r12 = gRfuSIO32Id.unk1)
|
||||
{
|
||||
case 0:
|
||||
gRfuSIO32Id.unk0 = 1;
|
||||
REG_SIOCNT |= SIO_38400_BPS;
|
||||
REG_IME = r12;
|
||||
REG_IE |= INTR_FLAG_SERIAL;
|
||||
REG_IME = 1;
|
||||
gRfuSIO32Id.unk1 = 1;
|
||||
*(vu8 *)®_SIOCNT |= SIO_ENABLE;
|
||||
break;
|
||||
case 1:
|
||||
if (gRfuSIO32Id.unkA == 0)
|
||||
{
|
||||
if (gRfuSIO32Id.unk0 == 1)
|
||||
{
|
||||
if (gRfuSIO32Id.unk2 == 0)
|
||||
{
|
||||
REG_IME = gRfuSIO32Id.unk2;
|
||||
REG_SIOCNT |= SIO_ENABLE;
|
||||
REG_IME = r12;
|
||||
}
|
||||
}
|
||||
else if (gRfuSIO32Id.unk4 != 0x8001 && !gRfuSIO32Id.unk2)
|
||||
{
|
||||
REG_IME = gRfuSIO32Id.unk2;
|
||||
REG_IE &= ~INTR_FLAG_SERIAL;
|
||||
REG_IME = r12;
|
||||
REG_SIOCNT = gRfuSIO32Id.unk2;
|
||||
REG_SIOCNT = SIO_32BIT_MODE;
|
||||
REG_IF = INTR_FLAG_SERIAL;
|
||||
REG_SIOCNT |= SIO_INTR_ENABLE | SIO_ENABLE;
|
||||
REG_IME = gRfuSIO32Id.unk2;
|
||||
REG_IE |= INTR_FLAG_SERIAL;
|
||||
REG_IME = r12;
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
gRfuSIO32Id.unk1 = 2;
|
||||
// fallthrough
|
||||
}
|
||||
default:
|
||||
return gRfuSIO32Id.unkA;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void Sio32IDIntr(void)
|
||||
{
|
||||
u32 r5;
|
||||
u16 r0;
|
||||
#ifndef NONMATCHING
|
||||
register u32 r1 asm("r1");
|
||||
register u16 r0_ asm("r0");
|
||||
#else
|
||||
u32 r1;
|
||||
u16 r0_;
|
||||
#endif
|
||||
|
||||
r5 = REG_SIODATA32;
|
||||
if (gRfuSIO32Id.unk0 != 1)
|
||||
REG_SIOCNT |= SIO_ENABLE;
|
||||
r1 = 16 * gRfuSIO32Id.unk0; // to handle side effect of inline asm
|
||||
r1 = (r5 << r1) >> 16;
|
||||
r5 = (r5 << 16 * (1 - gRfuSIO32Id.unk0)) >> 16;
|
||||
if (gRfuSIO32Id.unkA == 0)
|
||||
{
|
||||
if (r1 == gRfuSIO32Id.unk6)
|
||||
{
|
||||
if (gRfuSIO32Id.unk2 > 3)
|
||||
{
|
||||
gRfuSIO32Id.unkA = r5;
|
||||
}
|
||||
else if (r1 == (u16)~gRfuSIO32Id.unk4)
|
||||
{
|
||||
r0_ = ~gRfuSIO32Id.unk6;
|
||||
if (r5 == r0_)
|
||||
++gRfuSIO32Id.unk2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gRfuSIO32Id.unk2 = gRfuSIO32Id.unkA;
|
||||
}
|
||||
}
|
||||
if (gRfuSIO32Id.unk2 < 4)
|
||||
gRfuSIO32Id.unk4 = *(gRfuSIO32Id.unk2 + Sio32ConnectionData);
|
||||
else
|
||||
gRfuSIO32Id.unk4 = 0x8001;
|
||||
gRfuSIO32Id.unk6 = ~r5;
|
||||
REG_SIODATA32 = (gRfuSIO32Id.unk4 << 16 * (1 - gRfuSIO32Id.unk0))
|
||||
+ (gRfuSIO32Id.unk6 << 16 * gRfuSIO32Id.unk0);
|
||||
if (gRfuSIO32Id.unk0 == 1 && (gRfuSIO32Id.unk2 || r5 == 0x494E))
|
||||
{
|
||||
for (r0 = 0; r0 < 600; ++r0)
|
||||
;
|
||||
if (gRfuSIO32Id.unkA == 0)
|
||||
REG_SIOCNT |= SIO_ENABLE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,647 @@
|
||||
#include "librfu.h"
|
||||
|
||||
static void STWI_intr_timer(void);
|
||||
static u16 STWI_init(u8 request);
|
||||
static s32 STWI_start_Command(void);
|
||||
static void STWI_set_timer(u8 unk);
|
||||
static void STWI_stop_timer(void);
|
||||
static s32 STWI_restart_Command(void);
|
||||
static s32 STWI_reset_ClockCounter(void);
|
||||
|
||||
struct STWIStatus *gSTWIStatus;
|
||||
|
||||
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam)
|
||||
{
|
||||
// If we're copying our interrupt into RAM, DMA it to block1 and use
|
||||
// block2 for our STWIStatus, otherwise block1 holds the STWIStatus.
|
||||
// interrupt usually is a pointer to gIntrTable[1]
|
||||
if (copyInterruptToRam == TRUE)
|
||||
{
|
||||
*interrupt = (IntrFunc)interruptStruct->block1;
|
||||
DmaCopy16(3, &IntrSIO32, interruptStruct->block1, sizeof(interruptStruct->block1));
|
||||
gSTWIStatus = &interruptStruct->block2;
|
||||
}
|
||||
else
|
||||
{
|
||||
*interrupt = IntrSIO32;
|
||||
gSTWIStatus = (struct STWIStatus *)interruptStruct->block1;
|
||||
}
|
||||
gSTWIStatus->rxPacket = &interruptStruct->rxPacketAlloc;
|
||||
gSTWIStatus->txPacket = &interruptStruct->txPacketAlloc;
|
||||
gSTWIStatus->msMode = 1;
|
||||
gSTWIStatus->state = 0;
|
||||
gSTWIStatus->reqLength = 0;
|
||||
gSTWIStatus->reqNext = 0;
|
||||
gSTWIStatus->ackLength = 0;
|
||||
gSTWIStatus->ackNext = 0;
|
||||
gSTWIStatus->ackActiveCommand = 0;
|
||||
gSTWIStatus->timerState = 0;
|
||||
gSTWIStatus->timerActive = 0;
|
||||
gSTWIStatus->error = 0;
|
||||
gSTWIStatus->recoveryCount = 0;
|
||||
gSTWIStatus->unk_2c = 0;
|
||||
REG_RCNT = 0x100; // TODO: mystery bit?
|
||||
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
|
||||
STWI_init_Callback_M();
|
||||
STWI_init_Callback_S();
|
||||
IntrEnable(INTR_FLAG_SERIAL);
|
||||
}
|
||||
|
||||
void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect)
|
||||
{
|
||||
*interrupt = STWI_intr_timer;
|
||||
gSTWIStatus->timerSelect = timerSelect;
|
||||
IntrEnable(INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect);
|
||||
}
|
||||
|
||||
void AgbRFU_SoftReset(void)
|
||||
{
|
||||
vu16 *timerL;
|
||||
vu16 *timerH;
|
||||
|
||||
REG_RCNT = 0x8000;
|
||||
REG_RCNT = 0x80A0; // all these bits are undocumented
|
||||
timerL = ®_TMCNT_L(gSTWIStatus->timerSelect);
|
||||
timerH = ®_TMCNT_H(gSTWIStatus->timerSelect);
|
||||
*timerH = 0;
|
||||
*timerL = 0;
|
||||
*timerH = TIMER_ENABLE | TIMER_1024CLK;
|
||||
while (*timerL <= 0x11)
|
||||
REG_RCNT = 0x80A2;
|
||||
*timerH = 3;
|
||||
REG_RCNT = 0x80A0;
|
||||
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
|
||||
gSTWIStatus->state = 0;
|
||||
gSTWIStatus->reqLength = 0;
|
||||
gSTWIStatus->reqNext = 0;
|
||||
gSTWIStatus->reqActiveCommand = 0;
|
||||
gSTWIStatus->ackLength = 0;
|
||||
gSTWIStatus->ackNext = 0;
|
||||
gSTWIStatus->ackActiveCommand = 0;
|
||||
gSTWIStatus->timerState = 0;
|
||||
gSTWIStatus->timerActive = 0;
|
||||
gSTWIStatus->error = 0;
|
||||
gSTWIStatus->msMode = 1;
|
||||
gSTWIStatus->recoveryCount = 0;
|
||||
gSTWIStatus->unk_2c = 0;
|
||||
}
|
||||
|
||||
void STWI_set_MS_mode(u8 mode)
|
||||
{
|
||||
gSTWIStatus->msMode = mode;
|
||||
}
|
||||
|
||||
u16 STWI_read_status(u8 index)
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case 0:
|
||||
return gSTWIStatus->error;
|
||||
case 1:
|
||||
return gSTWIStatus->msMode;
|
||||
case 2:
|
||||
return gSTWIStatus->state;
|
||||
case 3:
|
||||
return gSTWIStatus->reqActiveCommand;
|
||||
default:
|
||||
return 0xFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_init_Callback_M(void)
|
||||
{
|
||||
STWI_set_Callback_M(NULL);
|
||||
}
|
||||
|
||||
void STWI_init_Callback_S(void)
|
||||
{
|
||||
STWI_set_Callback_S(NULL);
|
||||
}
|
||||
|
||||
// The callback can take 2 or 3 arguments.
|
||||
void STWI_set_Callback_M(void *callbackM)
|
||||
{
|
||||
gSTWIStatus->callbackM = callbackM;
|
||||
}
|
||||
|
||||
void STWI_set_Callback_S(void (*callbackS)(u16))
|
||||
{
|
||||
gSTWIStatus->callbackS = callbackS;
|
||||
}
|
||||
|
||||
void STWI_set_Callback_ID(void (*func)(void)) // name in SDK, but is actually setting a function pointer
|
||||
{
|
||||
gSTWIStatus->unk_20 = func;
|
||||
}
|
||||
|
||||
u16 STWI_poll_CommandEnd(void)
|
||||
{
|
||||
while (gSTWIStatus->unk_2c == TRUE)
|
||||
;
|
||||
return gSTWIStatus->error;
|
||||
}
|
||||
|
||||
void STWI_send_ResetREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_RESET_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_LinkStatusREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_LINK_STATUS_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_VersionStatusREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_VERSION_STATUS_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SystemStatusREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SYSTEM_STATUS_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SlotStatusREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SLOT_STATUS_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_ConfigStatusREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_CONFIG_STATUS_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_GameConfigREQ(const u8 *unk1, const u8 *data)
|
||||
{
|
||||
u8 *packetBytes;
|
||||
s32 i;
|
||||
|
||||
if (!STWI_init(ID_GAME_CONFIG_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 6;
|
||||
// TODO: what is unk1
|
||||
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
|
||||
packetBytes += sizeof(u32);
|
||||
*(u16 *)packetBytes = *(u16 *)unk1;
|
||||
packetBytes += sizeof(u16);
|
||||
unk1 += sizeof(u16);
|
||||
for (i = 0; i < 14; ++i)
|
||||
{
|
||||
*packetBytes = *unk1;
|
||||
++packetBytes;
|
||||
++unk1;
|
||||
}
|
||||
for (i = 0; i < 8; ++i)
|
||||
{
|
||||
*packetBytes = *data;
|
||||
++packetBytes;
|
||||
++data;
|
||||
}
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3)
|
||||
{
|
||||
if (!STWI_init(ID_SYSTEM_CONFIG_REQ))
|
||||
{
|
||||
u8 *packetBytes;
|
||||
|
||||
gSTWIStatus->reqLength = 1;
|
||||
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
|
||||
packetBytes += sizeof(u32);
|
||||
*packetBytes++ = unk3;
|
||||
*packetBytes++ = unk2;
|
||||
*(u16*)packetBytes = unk1;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SC_StartREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SC_START_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SC_PollingREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SC_POLL_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SC_EndREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SC_END_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SP_StartREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SP_START_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SP_PollingREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SP_POLL_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_SP_EndREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_SP_END_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_CP_StartREQ(u16 unk1)
|
||||
{
|
||||
if (!STWI_init(ID_CP_START_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 1;
|
||||
gSTWIStatus->txPacket->rfuPacket32.data[0] = unk1;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_CP_PollingREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_CP_POLL_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_CP_EndREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_CP_END_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_DataTxREQ(const void *in, u8 size)
|
||||
{
|
||||
if (!STWI_init(ID_DATA_TX_REQ))
|
||||
{
|
||||
u8 reqLength = (size / sizeof(u32));
|
||||
if (size & (sizeof(u32) - 1))
|
||||
reqLength += 1;
|
||||
gSTWIStatus->reqLength = reqLength;
|
||||
CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32));
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_DataTxAndChangeREQ(const void *in, u8 size)
|
||||
{
|
||||
if (!STWI_init(ID_DATA_TX_AND_CHANGE_REQ))
|
||||
{
|
||||
u8 reqLength = (size / sizeof(u32));
|
||||
if (size & (sizeof(u32) - 1))
|
||||
reqLength += 1;
|
||||
gSTWIStatus->reqLength = reqLength;
|
||||
CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32));
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_DataRxREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_DATA_RX_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_MS_ChangeREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_MS_CHANGE_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_DataReadyAndChangeREQ(u8 unk)
|
||||
{
|
||||
if (!STWI_init(ID_DATA_READY_AND_CHANGE_REQ))
|
||||
{
|
||||
if (!unk)
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 *packetBytes;
|
||||
|
||||
gSTWIStatus->reqLength = 1;
|
||||
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
|
||||
packetBytes += sizeof(u32);
|
||||
*packetBytes++ = unk;
|
||||
*packetBytes++ = 0;
|
||||
*packetBytes++ = 0;
|
||||
*packetBytes = 0;
|
||||
}
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1)
|
||||
{
|
||||
if (!STWI_init(ID_DISCONNECTED_AND_CHANGE_REQ))
|
||||
{
|
||||
u8 *packetBytes;
|
||||
|
||||
gSTWIStatus->reqLength = 1;
|
||||
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
|
||||
packetBytes += sizeof(u32);
|
||||
*packetBytes++ = unk0;
|
||||
*packetBytes++ = unk1;
|
||||
*packetBytes++ = 0;
|
||||
*packetBytes = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_ResumeRetransmitAndChangeREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_RESUME_RETRANSMIT_AND_CHANGE_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_DisconnectREQ(u8 unk)
|
||||
{
|
||||
if (!STWI_init(ID_DISCONNECT_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 1;
|
||||
gSTWIStatus->txPacket->rfuPacket32.data[0] = unk;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_TestModeREQ(u8 unk0, u8 unk1)
|
||||
{
|
||||
if (!STWI_init(ID_TEST_MODE_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 1;
|
||||
gSTWIStatus->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8);
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2)
|
||||
{
|
||||
u32 *packetData;
|
||||
u32 arg1;
|
||||
|
||||
if (!STWI_init(ID_CPR_START_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 2;
|
||||
arg1 = unk1 | (unk0 << 16);
|
||||
packetData = gSTWIStatus->txPacket->rfuPacket32.data;
|
||||
packetData[0] = arg1;
|
||||
packetData[1] = unk2;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_CPR_PollingREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_CPR_POLL_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_CPR_EndREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_CPR_END_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
void STWI_send_StopModeREQ(void)
|
||||
{
|
||||
if (!STWI_init(ID_STOP_MODE_REQ))
|
||||
{
|
||||
gSTWIStatus->reqLength = 0;
|
||||
STWI_start_Command();
|
||||
}
|
||||
}
|
||||
|
||||
static void STWI_intr_timer(void)
|
||||
{
|
||||
switch (gSTWIStatus->timerState)
|
||||
{
|
||||
// TODO: Make an enum for these
|
||||
case 2:
|
||||
gSTWIStatus->timerActive = 1;
|
||||
STWI_set_timer(50);
|
||||
break;
|
||||
case 1:
|
||||
case 4:
|
||||
STWI_stop_timer();
|
||||
STWI_restart_Command();
|
||||
break;
|
||||
case 3:
|
||||
gSTWIStatus->timerActive = 1;
|
||||
STWI_stop_timer();
|
||||
STWI_reset_ClockCounter();
|
||||
if (gSTWIStatus->callbackM != NULL)
|
||||
gSTWIStatus->callbackM(255, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void STWI_set_timer(u8 unk)
|
||||
{
|
||||
vu16 *timerL;
|
||||
vu16 *timerH;
|
||||
|
||||
timerL = ®_TMCNT_L(gSTWIStatus->timerSelect);
|
||||
timerH = ®_TMCNT_H(gSTWIStatus->timerSelect);
|
||||
REG_IME = 0;
|
||||
switch (unk)
|
||||
{
|
||||
case 50:
|
||||
*timerL = 0xFCCB;
|
||||
gSTWIStatus->timerState = 1;
|
||||
break;
|
||||
case 80:
|
||||
*timerL = 0xFAE0;
|
||||
gSTWIStatus->timerState = 2;
|
||||
break;
|
||||
case 100:
|
||||
*timerL = 0xF996;
|
||||
gSTWIStatus->timerState = 3;
|
||||
break;
|
||||
case 130:
|
||||
*timerL = 0xF7AD;
|
||||
gSTWIStatus->timerState = 4;
|
||||
break;
|
||||
}
|
||||
*timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK;
|
||||
REG_IF = INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect;
|
||||
REG_IME = 1;
|
||||
}
|
||||
|
||||
static void STWI_stop_timer(void)
|
||||
{
|
||||
gSTWIStatus->timerState = 0;
|
||||
REG_TMCNT_L(gSTWIStatus->timerSelect) = 0;
|
||||
REG_TMCNT_H(gSTWIStatus->timerSelect) = 0;
|
||||
}
|
||||
|
||||
static u16 STWI_init(u8 request)
|
||||
{
|
||||
if (!REG_IME)
|
||||
{
|
||||
gSTWIStatus->error = ERR_REQ_CMD_IME_DISABLE;
|
||||
if (gSTWIStatus->callbackM != NULL)
|
||||
gSTWIStatus->callbackM(request, gSTWIStatus->error);
|
||||
return TRUE;
|
||||
}
|
||||
else if (gSTWIStatus->unk_2c == TRUE)
|
||||
{
|
||||
gSTWIStatus->error = ERR_REQ_CMD_SENDING;
|
||||
gSTWIStatus->unk_2c = FALSE;
|
||||
if (gSTWIStatus->callbackM != NULL)
|
||||
gSTWIStatus->callbackM(request, gSTWIStatus->error);
|
||||
return TRUE;
|
||||
}
|
||||
else if(!gSTWIStatus->msMode)
|
||||
{
|
||||
gSTWIStatus->error = ERR_REQ_CMD_CLOCK_SLAVE;
|
||||
if (gSTWIStatus->callbackM != NULL)
|
||||
gSTWIStatus->callbackM(request, gSTWIStatus->error, gSTWIStatus);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSTWIStatus->unk_2c = TRUE;
|
||||
gSTWIStatus->reqActiveCommand = request;
|
||||
gSTWIStatus->state = 0;
|
||||
gSTWIStatus->reqLength = 0;
|
||||
gSTWIStatus->reqNext = 0;
|
||||
gSTWIStatus->ackLength = 0;
|
||||
gSTWIStatus->ackNext = 0;
|
||||
gSTWIStatus->ackActiveCommand = 0;
|
||||
gSTWIStatus->timerState = 0;
|
||||
gSTWIStatus->timerActive = 0;
|
||||
gSTWIStatus->error = 0;
|
||||
gSTWIStatus->recoveryCount = 0;
|
||||
REG_RCNT = 0x100;
|
||||
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static s32 STWI_start_Command(void)
|
||||
{
|
||||
u16 imeTemp;
|
||||
|
||||
// equivalent to gSTWIStatus->txPacket->rfuPacket32.command,
|
||||
// but the cast here is required to avoid register issue
|
||||
*(u32 *)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->reqLength << 8) | gSTWIStatus->reqActiveCommand;
|
||||
REG_SIODATA32 = gSTWIStatus->txPacket->rfuPacket32.command;
|
||||
gSTWIStatus->state = 0;
|
||||
gSTWIStatus->reqNext = 1;
|
||||
imeTemp = REG_IME;
|
||||
REG_IME = 0;
|
||||
REG_IE |= (INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect);
|
||||
REG_IE |= INTR_FLAG_SERIAL;
|
||||
REG_IME = imeTemp;
|
||||
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 STWI_restart_Command(void)
|
||||
{
|
||||
if (gSTWIStatus->recoveryCount <= 1)
|
||||
{
|
||||
++gSTWIStatus->recoveryCount;
|
||||
STWI_start_Command();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSTWIStatus->reqActiveCommand == ID_MS_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_DATA_TX_AND_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_UNK35_REQ || gSTWIStatus->reqActiveCommand == ID_RESUME_RETRANSMIT_AND_CHANGE_REQ)
|
||||
{
|
||||
gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT;
|
||||
gSTWIStatus->unk_2c = 0;
|
||||
if (gSTWIStatus->callbackM != NULL)
|
||||
gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error);
|
||||
}
|
||||
else
|
||||
{
|
||||
gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT;
|
||||
gSTWIStatus->unk_2c = 0;
|
||||
if (gSTWIStatus->callbackM != NULL)
|
||||
gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error);
|
||||
gSTWIStatus->state = 4; // TODO: what's 4
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static s32 STWI_reset_ClockCounter(void)
|
||||
{
|
||||
gSTWIStatus->state = 5; // TODO: what is 5
|
||||
gSTWIStatus->reqLength = 0;
|
||||
gSTWIStatus->reqNext = 0;
|
||||
REG_SIODATA32 = (1 << 31);
|
||||
REG_SIOCNT = 0;
|
||||
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
|
||||
REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F;
|
||||
return 0;
|
||||
}
|
||||
+19
-42
@@ -1,4 +1,9 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "load_save.h"
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "random.h"
|
||||
@@ -6,48 +11,20 @@
|
||||
#include "gba/flash_internal.h"
|
||||
#include "battle.h"
|
||||
#include "help_system.h"
|
||||
#include "sound.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "malloc.h"
|
||||
#include "overworld.h"
|
||||
#include "sprite.h"
|
||||
#include "play_time.h"
|
||||
#include "pokemon.h"
|
||||
#include "intro.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "save_failed_screen.h"
|
||||
#include "battle.h"
|
||||
|
||||
extern u16 GetGpuReg(u8);
|
||||
extern void SetGpuReg(u8, u16);
|
||||
extern void RFUVSync(void);
|
||||
extern void LinkVSync(void);
|
||||
extern void sub_80FCF34(void);
|
||||
extern void LinkVSync(void);
|
||||
extern void InitGpuRegManager(void);
|
||||
extern void InitRFU(void);
|
||||
extern void CheckForFlashMemory(void);
|
||||
extern void InitMapMusic(void);
|
||||
extern void ResetBgs(void);
|
||||
extern void SetDefaultFontsPointer(void);
|
||||
extern void InitHeap(void *heapStart, u32 heapSize); // malloc.h
|
||||
extern void rfu_REQ_stopMode(void);
|
||||
extern void rfu_waitREQComplete(void);
|
||||
extern bool32 sub_80582E0(void);
|
||||
extern bool32 sub_8058274(void);
|
||||
extern void ClearSpriteCopyRequests(void);
|
||||
extern void PlayTimeCounter_Update(void);
|
||||
extern void MapMusicMain(void);
|
||||
extern void EnableInterrupts(u16);
|
||||
extern void sub_800DD28(void);
|
||||
extern u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
|
||||
extern void ScanlineEffect_Stop(void);
|
||||
extern void sub_80F50F4(void);
|
||||
extern bool32 sub_80F5118(void);
|
||||
|
||||
extern struct SoundInfo gSoundInfo;
|
||||
extern u32 gFlashMemoryPresent;
|
||||
extern u32 IntrMain[];
|
||||
extern u8 gHeap[];
|
||||
extern struct SaveBlock1 gSaveBlock1;
|
||||
extern struct SaveBlock2 gSaveBlock2;
|
||||
extern struct PokemonStorage gPokemonStorage;
|
||||
extern u32 gBattleTypeFlags;
|
||||
extern u8 gUnknown_03002748;
|
||||
extern u32 *gUnknown_0203CF5C;
|
||||
|
||||
void Timer3Intr(void);
|
||||
bool8 HandleLinkConnection(void);
|
||||
void c2_copyright_1(void);
|
||||
extern u32 intr_main[];
|
||||
|
||||
static void VBlankIntr(void);
|
||||
static void HBlankIntr(void);
|
||||
@@ -313,7 +290,7 @@ void InitIntrHandlers(void)
|
||||
for (i = 0; i < INTR_COUNT; i++)
|
||||
gIntrTable[i] = gIntrTableTemplate[i];
|
||||
|
||||
DmaCopy32(3, IntrMain, IntrMain_Buffer, sizeof(IntrMain_Buffer));
|
||||
DmaCopy32(3, intr_main, IntrMain_Buffer, sizeof(IntrMain_Buffer));
|
||||
|
||||
INTR_VECTOR = IntrMain_Buffer;
|
||||
|
||||
|
||||
@@ -552,7 +552,7 @@ static void sub_80F83D0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
const struct MapPreviewScreen * sub_80F8544(u8 mapsec)
|
||||
const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec)
|
||||
{
|
||||
u8 idx;
|
||||
|
||||
|
||||
+1
-1
@@ -4201,7 +4201,7 @@ static void sub_8124BB0(struct Pokemon *mon, u8 fieldMove)
|
||||
Free(ptr);
|
||||
}
|
||||
|
||||
void sub_8124C1C(const u8 *healLocCtrlData) // TODO: confirm the type of data chunk at 0x83F2EE0
|
||||
void sub_8124C1C(const u8 *healLocCtrlData)
|
||||
{
|
||||
const struct MapHeader *mapHeader;
|
||||
struct FieldMoveWarpParams *ptr2;
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "global.h"
|
||||
#include "data.h"
|
||||
#include "script.h"
|
||||
#include "overworld.h"
|
||||
#include "battle.h"
|
||||
#include "palette.h"
|
||||
#include "pokemon.h"
|
||||
#include "party_menu.h"
|
||||
#include "field_fadetransition.h"
|
||||
#include "pokemon_summary_screen.h"
|
||||
#include "event_data.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
static void sub_80BF97C(u8 taskId);
|
||||
|
||||
void Special_ChooseMonFromParty(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
taskId = CreateTask(sub_80BF97C, 10);
|
||||
gTasks[taskId].data[0] = PARTY_MENU_TYPE_CHOOSE_MON;
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
|
||||
}
|
||||
|
||||
void Special_SelectMoveTutorMon(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
taskId = CreateTask(sub_80BF97C, 10);
|
||||
gTasks[taskId].data[0] = PARTY_MENU_TYPE_MOVE_RELEARNER;
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
|
||||
}
|
||||
|
||||
static void sub_80BF97C(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gPaletteFade.bufferTransferDisabled = TRUE;
|
||||
ChoosePartyMonByMenuType((u8)gTasks[taskId].data[0]);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void Special_SelectMove(void)
|
||||
{
|
||||
ShowSelectMovePokemonSummaryScreen(gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField, 0);
|
||||
sub_8138B38(3);
|
||||
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||
}
|
||||
|
||||
void Special_GetNumMovesSelectedMonHas(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
gSpecialVar_Result = 0;
|
||||
for (i = 0; i < MAX_MON_MOVES; ++i)
|
||||
if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i) != MOVE_NONE)
|
||||
++gSpecialVar_Result;
|
||||
}
|
||||
|
||||
void Special_BufferMoveDeleterNicknameAndMove(void)
|
||||
{
|
||||
struct Pokemon *mon = &gPlayerParty[gSpecialVar_0x8004];
|
||||
u16 move = GetMonData(mon, MON_DATA_MOVE1 + gSpecialVar_0x8005);
|
||||
|
||||
GetMonNickname(mon, gStringVar1);
|
||||
StringCopy(gStringVar2, gMoveNames[move]);
|
||||
}
|
||||
|
||||
static void ShiftMoveSlot(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
|
||||
{
|
||||
u16 move1 = GetMonData(mon, MON_DATA_MOVE1 + slotTo);
|
||||
u16 move0 = GetMonData(mon, MON_DATA_MOVE1 + slotFrom);
|
||||
u8 pp1 = GetMonData(mon, MON_DATA_PP1 + slotTo);
|
||||
u8 pp0 = GetMonData(mon, MON_DATA_PP1 + slotFrom);
|
||||
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
|
||||
u8 ppBonusMask1 = gPPUpGetMask[slotTo];
|
||||
u8 ppBonusMove1 = (ppBonuses & ppBonusMask1) >> (slotTo * 2);
|
||||
u8 ppBonusMask2 = gPPUpGetMask[slotFrom];
|
||||
u8 ppBonusMove2 = (ppBonuses & ppBonusMask2) >> (slotFrom * 2);
|
||||
|
||||
ppBonuses &= ~ppBonusMask1;
|
||||
ppBonuses &= ~ppBonusMask2;
|
||||
ppBonuses |= (ppBonusMove1 << (slotFrom * 2)) + (ppBonusMove2 << (slotTo * 2));
|
||||
SetMonData(mon, MON_DATA_MOVE1 + slotTo, &move0);
|
||||
SetMonData(mon, MON_DATA_MOVE1 + slotFrom, &move1);
|
||||
SetMonData(mon, MON_DATA_PP1 + slotTo, &pp0);
|
||||
SetMonData(mon, MON_DATA_PP1 + slotFrom, &pp1);
|
||||
SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
|
||||
}
|
||||
|
||||
void Special_MoveDeleterForgetMove(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], MOVE_NONE, gSpecialVar_0x8005);
|
||||
RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
|
||||
for (i = gSpecialVar_0x8005; i < MAX_MON_MOVES - 1; ++i)
|
||||
ShiftMoveSlot(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
|
||||
}
|
||||
|
||||
void Special_IsSelectedMonEgg(void)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_IS_EGG))
|
||||
gSpecialVar_Result = TRUE;
|
||||
else
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
#include "global.h"
|
||||
#include "task.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "palette.h"
|
||||
|
||||
static void sub_80A0AC0(TaskFunc func, u16 a2, UNUSED u16 a3, u8 priority);
|
||||
static void sub_80A0B0C(u8 taskId);
|
||||
static void sub_80A0C78(u8 taskId);
|
||||
|
||||
void sub_80A0A48(u16 a1, u16 a2, u8 a3)
|
||||
{
|
||||
sub_80A0AC0(sub_80A0B0C, a1, a2, a3);
|
||||
}
|
||||
|
||||
void sub_80A0A70(u16 a1, u16 a2, u8 a3)
|
||||
{
|
||||
sub_80A0AC0(sub_80A0C78, a1, a2, a3);
|
||||
}
|
||||
|
||||
bool8 sub_80A0A98(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_80A0B0C);
|
||||
}
|
||||
|
||||
bool8 sub_80A0AAC(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_80A0C78);
|
||||
}
|
||||
|
||||
static void sub_80A0AC0(TaskFunc func, u16 a2, UNUSED u16 a3, u8 priority)
|
||||
{
|
||||
u8 taskId = CreateTask(func, priority);
|
||||
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = a2 == 0 ? 16 : a2;
|
||||
gTasks[taskId].data[2] = a2 == 0 ? 20 : a2;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A0B0C(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[3] = 120;
|
||||
task->data[4] = 120;
|
||||
task->data[5] = 80;
|
||||
task->data[6] = 81;
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0);
|
||||
break;
|
||||
case 1:
|
||||
task->data[7] = GetGpuReg(REG_OFFSET_BLDCNT);
|
||||
task->data[8] = GetGpuReg(REG_OFFSET_BLDY);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 16);
|
||||
break;
|
||||
case 2:
|
||||
task->data[3] -= task->data[1];
|
||||
task->data[4] += task->data[1];
|
||||
if (task->data[3] <= 0 || task->data[4] >= DISPLAY_WIDTH)
|
||||
{
|
||||
task->data[3] = 0;
|
||||
task->data[4] = DISPLAY_WIDTH;
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
|
||||
BlendPalettes(0xFFFFFFFF, 0, RGB_BLACK);
|
||||
gPlttBufferFaded[0] = 0;
|
||||
}
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
|
||||
if (task->data[3])
|
||||
return;
|
||||
break;
|
||||
case 3:
|
||||
task->data[5] -= task->data[2];
|
||||
task->data[6] += task->data[2];
|
||||
if (task->data[5] <= 0 || task->data[6] >= DISPLAY_HEIGHT)
|
||||
{
|
||||
task->data[5] = 0;
|
||||
task->data[6] = DISPLAY_HEIGHT;
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
|
||||
}
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
|
||||
if (task->data[5])
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
|
||||
DestroyTask(taskId);
|
||||
return;
|
||||
}
|
||||
++task->data[0];
|
||||
}
|
||||
|
||||
static void sub_80A0C78(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
gPlttBufferFaded[0] = 0;
|
||||
break;
|
||||
case 1:
|
||||
task->data[3] = 0;
|
||||
task->data[4] = DISPLAY_WIDTH;
|
||||
task->data[5] = 0;
|
||||
task->data[6] = DISPLAY_HEIGHT;
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0);
|
||||
break;
|
||||
case 2:
|
||||
task->data[5] += task->data[2];
|
||||
task->data[6] -= task->data[2];
|
||||
if (task->data[5] >= 80 || task->data[6] <= 81)
|
||||
{
|
||||
task->data[5] = 80;
|
||||
task->data[6] = 81;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 16);
|
||||
}
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
|
||||
if (task->data[5] != 80)
|
||||
return;
|
||||
break;
|
||||
case 3:
|
||||
task->data[3] += task->data[1];
|
||||
task->data[4] -= task->data[1];
|
||||
if (task->data[3] >= 120 || task->data[4] <= 120)
|
||||
{
|
||||
task->data[3] = 120;
|
||||
task->data[4] = 120;
|
||||
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
|
||||
gPlttBufferFaded[0] = 0;
|
||||
}
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
|
||||
if (task->data[3] != 120)
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
DestroyTask(taskId);
|
||||
return;
|
||||
}
|
||||
++task->data[0];
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "script_pokemon_util_80A0058.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "event_data.h"
|
||||
#include "credits.h"
|
||||
#include "overworld.h"
|
||||
|
||||
+2
-2
@@ -3119,7 +3119,7 @@ static const u16 *sub_8113FBC(const u16 *a0)
|
||||
StringCopy(gStringVar1, ItemId_GetName(r5[0]));
|
||||
if (r5[0] == ITEM_ESCAPE_ROPE)
|
||||
{
|
||||
GetMapNameGeneric(gStringVar2, r5[2]);
|
||||
GetMapNameGeneric(gStringVar2, (u8)r5[2]);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6);
|
||||
}
|
||||
else if (r5[1] != 0xFFFF)
|
||||
@@ -4373,7 +4373,7 @@ static u16 *sub_81157DC(u16 *a0, const u16 *a1)
|
||||
static const u16 *sub_8115800(const u16 *a0)
|
||||
{
|
||||
const u16 *r4 = sub_8113E88(42, a0);
|
||||
GetMapNameGeneric(gStringVar1, r4[0]);
|
||||
GetMapNameGeneric(gStringVar1, (u8)r4[0]);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_841B064);
|
||||
return r4 + 1;
|
||||
}
|
||||
|
||||
+4399
File diff suppressed because it is too large
Load Diff
+1
-2
@@ -27,14 +27,13 @@
|
||||
#include "data.h"
|
||||
#include "field_specials.h"
|
||||
#include "constants/items.h"
|
||||
#include "script_pokemon_util_80A0058.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "party_menu.h"
|
||||
#include "money.h"
|
||||
#include "coins.h"
|
||||
#include "battle_setup.h"
|
||||
#include "shop.h"
|
||||
#include "script_pokemon_80F8.h"
|
||||
#include "slot_machine.h"
|
||||
#include "field_effect.h"
|
||||
#include "fieldmap.h"
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "berry.h"
|
||||
#include "daycare.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "load_save.h"
|
||||
#include "malloc.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
#include "pokedex.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/pokemon.h"
|
||||
|
||||
static void CB2_ReturnFromChooseHalfParty(void);
|
||||
static void CB2_ReturnFromChooseBattleTowerParty(void);
|
||||
|
||||
void HealPlayerParty(void)
|
||||
{
|
||||
u8 i, j;
|
||||
u8 ppBonuses;
|
||||
u8 arg[4];
|
||||
|
||||
// restore HP.
|
||||
for(i = 0; i < gPlayerPartyCount; i++)
|
||||
{
|
||||
u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
|
||||
arg[0] = maxHP;
|
||||
arg[1] = maxHP >> 8;
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_HP, arg);
|
||||
ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES);
|
||||
|
||||
// restore PP.
|
||||
for(j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j);
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg);
|
||||
}
|
||||
|
||||
// since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData.
|
||||
arg[0] = 0;
|
||||
arg[1] = 0;
|
||||
arg[2] = 0;
|
||||
arg[3] = 0;
|
||||
SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg);
|
||||
}
|
||||
}
|
||||
|
||||
u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
|
||||
{
|
||||
u16 nationalDexNum;
|
||||
int sentToPc;
|
||||
u8 heldItem[2];
|
||||
struct Pokemon *mon = AllocZeroed(sizeof(struct Pokemon));
|
||||
|
||||
CreateMon(mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
|
||||
heldItem[0] = item;
|
||||
heldItem[1] = item >> 8;
|
||||
SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
|
||||
sentToPc = GiveMonToPlayer(mon);
|
||||
nationalDexNum = SpeciesToNationalPokedexNum(species);
|
||||
|
||||
switch(sentToPc)
|
||||
{
|
||||
case MON_GIVEN_TO_PARTY:
|
||||
case MON_GIVEN_TO_PC:
|
||||
GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN);
|
||||
GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT);
|
||||
break;
|
||||
}
|
||||
|
||||
Free(mon);
|
||||
return sentToPc;
|
||||
}
|
||||
|
||||
u8 ScriptGiveEgg(u16 species)
|
||||
{
|
||||
struct Pokemon *mon = AllocZeroed(sizeof(struct Pokemon));
|
||||
bool8 isEgg;
|
||||
bool8 sentToPc;
|
||||
|
||||
CreateEgg(mon, species, TRUE);
|
||||
isEgg = TRUE;
|
||||
SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
|
||||
|
||||
sentToPc = GiveMonToPlayer(mon);
|
||||
Free(mon);
|
||||
return sentToPc;
|
||||
}
|
||||
|
||||
void HasEnoughMonsForDoubleBattle(void)
|
||||
{
|
||||
switch (GetMonsStateToDoubles())
|
||||
{
|
||||
case PLAYER_HAS_TWO_USABLE_MONS:
|
||||
gSpecialVar_Result = PLAYER_HAS_TWO_USABLE_MONS;
|
||||
break;
|
||||
case PLAYER_HAS_ONE_MON:
|
||||
gSpecialVar_Result = PLAYER_HAS_ONE_MON;
|
||||
break;
|
||||
case PLAYER_HAS_ONE_USABLE_MON:
|
||||
gSpecialVar_Result = PLAYER_HAS_ONE_USABLE_MON;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 CheckPartyMonHasHeldItem(u16 item)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
|
||||
if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 GetNameOfEnigmaBerryInPlayerParty(void)
|
||||
{
|
||||
bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY);
|
||||
if (hasItem == TRUE)
|
||||
GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1);
|
||||
|
||||
return hasItem;
|
||||
}
|
||||
|
||||
void CreateScriptedWildMon(u16 species, u8 level, u16 item)
|
||||
{
|
||||
u8 heldItem[2];
|
||||
|
||||
ZeroEnemyPartyMons();
|
||||
CreateMon(&gEnemyParty[0], species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
|
||||
if (item)
|
||||
{
|
||||
heldItem[0] = item;
|
||||
heldItem[1] = item >> 8;
|
||||
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
|
||||
{
|
||||
if (monIndex > PARTY_SIZE)
|
||||
monIndex = gPlayerPartyCount - 1;
|
||||
|
||||
SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
|
||||
}
|
||||
|
||||
// Note: When control returns to the event script, gSpecialVar_Result will be
|
||||
// TRUE if the party selection was successful.
|
||||
void ChooseHalfPartyForBattle(void)
|
||||
{
|
||||
gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
|
||||
// VarSet(VAR_FRONTIER_FACILITY, FACILITY_MULTI_OR_EREADER);
|
||||
InitChooseHalfPartyForBattle(0);
|
||||
}
|
||||
|
||||
static void CB2_ReturnFromChooseHalfParty(void)
|
||||
{
|
||||
switch (gSelectedOrderFromParty[0])
|
||||
{
|
||||
case 0:
|
||||
gSpecialVar_Result = FALSE;
|
||||
break;
|
||||
default:
|
||||
gSpecialVar_Result = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
void ChooseBattleTowerPlayerParty(void)
|
||||
{
|
||||
gMain.savedCallback = CB2_ReturnFromChooseBattleTowerParty;
|
||||
InitChooseHalfPartyForBattle(1);
|
||||
}
|
||||
|
||||
static void CB2_ReturnFromChooseBattleTowerParty(void)
|
||||
{
|
||||
switch (gSelectedOrderFromParty[0])
|
||||
{
|
||||
case 0:
|
||||
LoadPlayerParty();
|
||||
gSpecialVar_Result = FALSE;
|
||||
break;
|
||||
default:
|
||||
ReducePlayerPartyToThree();
|
||||
gSpecialVar_Result = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
void ReducePlayerPartyToThree(void)
|
||||
{
|
||||
struct Pokemon * party = AllocZeroed(3 * sizeof(struct Pokemon));
|
||||
int i;
|
||||
|
||||
// copy the selected pokemon according to the order.
|
||||
for (i = 0; i < 3; i++)
|
||||
if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop
|
||||
party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal
|
||||
|
||||
CpuFill32(0, gPlayerParty, sizeof gPlayerParty);
|
||||
|
||||
// overwrite the first 3 with the order copied to.
|
||||
for (i = 0; i < 3; i++)
|
||||
gPlayerParty[i] = party[i];
|
||||
|
||||
CalculatePlayerPartyCount();
|
||||
Free(party);
|
||||
}
|
||||
+1
-1
@@ -1180,7 +1180,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
|
||||
return width;
|
||||
}
|
||||
|
||||
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
|
||||
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7)
|
||||
{
|
||||
u8 shadowColor;
|
||||
u8 *strLocal;
|
||||
|
||||
+5
-5
@@ -2765,10 +2765,10 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
|
||||
|
||||
int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet)
|
||||
{
|
||||
u8 r9 = a0.unk_01_0;
|
||||
u8 r4 = a0.unk_00_7;
|
||||
u8 r10 = a1.unk_01_0;
|
||||
u8 r0 = a1.unk_00_7;
|
||||
u8 r9 = a0.hasNationalDex;
|
||||
u8 r4 = a0.isChampion;
|
||||
u8 r10 = a1.hasNationalDex;
|
||||
u8 r0 = a1.isChampion;
|
||||
u8 r1 = a1.unk_01_2;
|
||||
u8 r2;
|
||||
|
||||
@@ -2845,7 +2845,7 @@ int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, str
|
||||
|
||||
int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3)
|
||||
{
|
||||
u8 canTradeEggAndNational = a0.unk_01_0;
|
||||
u8 canTradeEggAndNational = a0.hasNationalDex;
|
||||
|
||||
if (IsDeoxysOrMewUntradable(a2, a3))
|
||||
{
|
||||
|
||||
+31
-321
@@ -637,7 +637,6 @@ void sub_810C444(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
bool8 sub_810C4EC(void)
|
||||
{
|
||||
if (CheckBagHasItem(ITEM_VS_SEEKER, 1) == TRUE)
|
||||
@@ -648,18 +647,18 @@ bool8 sub_810C4EC(void)
|
||||
|
||||
if (FlagGet(FLAG_SYS_VS_SEEKER_CHARGING) == TRUE)
|
||||
{
|
||||
u16 x;
|
||||
do {
|
||||
x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
|
||||
} while (0);
|
||||
u8 x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
|
||||
u32 r4 = 0xFF;
|
||||
|
||||
if (x < 100)
|
||||
{
|
||||
x++;
|
||||
gSaveBlock1Ptr->trainerRematchStepCounter = ((u16)(x << 8)) | (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF);
|
||||
#ifndef NONMATCHING // fool the compiler that r4 has been changed
|
||||
asm("":"=r"(r4));
|
||||
#endif
|
||||
gSaveBlock1Ptr->trainerRematchStepCounter = (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) | (x << 8);
|
||||
}
|
||||
do {
|
||||
x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
|
||||
} while (0);
|
||||
x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & r4;
|
||||
if (x == 100)
|
||||
{
|
||||
FlagClear(FLAG_SYS_VS_SEEKER_CHARGING);
|
||||
@@ -671,80 +670,6 @@ bool8 sub_810C4EC(void)
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
bool8 sub_810C4EC(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmovs r0, 0xB5\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tbl CheckBagHasItem\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _0810C516\n"
|
||||
"\tldr r0, _0810C568 @ =gSaveBlock1Ptr\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tmovs r2, 0xC7\n"
|
||||
"\tlsls r2, 3\n"
|
||||
"\tadds r1, r0, r2\n"
|
||||
"\tldrh r2, [r1]\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tcmp r0, 0x63\n"
|
||||
"\tbhi _0810C516\n"
|
||||
"\tadds r0, r2, 0x1\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"_0810C516:\n"
|
||||
"\tldr r7, _0810C56C @ =0x00000801\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tbl FlagGet\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _0810C570\n"
|
||||
"\tldr r6, _0810C568 @ =gSaveBlock1Ptr\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tmovs r5, 0xC7\n"
|
||||
"\tlsls r5, 3\n"
|
||||
"\tadds r3, r0, r5\n"
|
||||
"\tldrh r2, [r3]\n"
|
||||
"\tlsrs r1, r2, 8\n"
|
||||
"\tmovs r4, 0xFF\n"
|
||||
"\tcmp r1, 0x63\n"
|
||||
"\tbhi _0810C548\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tmovs r0, 0xFF\n"
|
||||
"\tands r0, r2\n"
|
||||
"\tlsrs r1, 16\n"
|
||||
"\torrs r0, r1\n"
|
||||
"\tstrh r0, [r3]\n"
|
||||
"_0810C548:\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldrh r0, [r0]\n"
|
||||
"\tlsrs r0, 8\n"
|
||||
"\tands r0, r4\n"
|
||||
"\tcmp r0, 0x64\n"
|
||||
"\tbne _0810C570\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tbl FlagClear\n"
|
||||
"\tbl sub_810C640\n"
|
||||
"\tbl sub_810D0D0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tb _0810C572\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0810C568: .4byte gSaveBlock1Ptr\n"
|
||||
"_0810C56C: .4byte 0x00000801\n"
|
||||
"_0810C570:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"_0810C572:\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_810C578(void)
|
||||
{
|
||||
@@ -920,13 +845,17 @@ u8 CanUseVsSeeker(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Nonmatching due to register roulette
|
||||
#ifdef NONMATCHING
|
||||
static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
||||
{
|
||||
u16 r8 = 0;
|
||||
u8 sp0 = 0;
|
||||
s32 vsSeekerIdx;
|
||||
u8 *r2;
|
||||
#ifndef NONMATCHING
|
||||
register u32 r3 asm("r3");
|
||||
register s32 r0_ asm("r0");
|
||||
asm("":::"r10", "r8", "r6", "r4");
|
||||
#endif
|
||||
|
||||
for (vsSeekerIdx = 0; sVsSeeker->trainerInfo[vsSeekerIdx].localId != 0xFF; vsSeekerIdx++)
|
||||
{
|
||||
@@ -936,6 +865,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
||||
if (!HasTrainerBeenFought(r8))
|
||||
{
|
||||
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], gUnknown_8453F60);
|
||||
sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx += 0;
|
||||
sVsSeeker->trainerHasNotYetBeenFought = 1;
|
||||
}
|
||||
else
|
||||
@@ -944,7 +874,15 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
||||
if (r7 == 0)
|
||||
{
|
||||
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch);
|
||||
#ifdef NONMATCHING
|
||||
sVsSeeker->trainerDoesNotWantRematch = 1;
|
||||
#else
|
||||
r2 = (u8 *)sVsSeeker;
|
||||
r3 = 0x431;
|
||||
asm("":::"r1");
|
||||
r2 = &r2[r3];
|
||||
*(r2) |= 2;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -957,7 +895,15 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
||||
if (rval < 30)
|
||||
{
|
||||
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch);
|
||||
#ifdef NONMATCHING
|
||||
sVsSeeker->trainerDoesNotWantRematch = 1;
|
||||
#else
|
||||
r2 = (u8 *)sVsSeeker;
|
||||
r0_ = 0x431;
|
||||
asm("":::"r1");
|
||||
r2 = &r2[r0_];
|
||||
*(r2) |= 2;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -985,242 +931,6 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x8\n"
|
||||
"\tstr r0, [sp, 0x4]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tmov r0, sp\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmov r9, r2\n"
|
||||
"\tldr r4, _0810CA14 @ =sVsSeeker\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldrb r0, [r0, 0x6]\n"
|
||||
"\tcmp r0, 0xFF\n"
|
||||
"\tbne _0810C9D0\n"
|
||||
"\tb _0810CB2C\n"
|
||||
"_0810C9D0:\n"
|
||||
"\tadds r6, r4, 0\n"
|
||||
"\tmovs r3, 0x86\n"
|
||||
"\tlsls r3, 3\n"
|
||||
"\tmov r10, r3\n"
|
||||
"\tmovs r5, 0\n"
|
||||
"_0810C9DA:\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tbl IsTrainerVisibleOnScreen\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbeq _0810C9EC\n"
|
||||
"\tb _0810CB18\n"
|
||||
"_0810C9EC:\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldrh r0, [r0, 0x4]\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tbl HasTrainerBeenFought\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0810CA20\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldr r1, _0810CA18 @ =gUnknown_8453F60\n"
|
||||
"\tbl StartTrainerObjectMovementScript\n"
|
||||
"\tldr r2, [r6]\n"
|
||||
"\tldr r0, _0810CA1C @ =0x00000431\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tb _0810CB14\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0810CA14: .4byte sVsSeeker\n"
|
||||
"_0810CA18: .4byte gUnknown_8453F60\n"
|
||||
"_0810CA1C: .4byte 0x00000431\n"
|
||||
"_0810CA20:\n"
|
||||
"\tldr r0, [sp, 0x4]\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tmov r2, sp\n"
|
||||
"\tbl GetNextAvailableRematchTrainer\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r7, r0, 24\n"
|
||||
"\tcmp r7, 0\n"
|
||||
"\tbne _0810CA50\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldr r1, _0810CA48 @ =sMovementScript_TrainerNoRematch\n"
|
||||
"\tbl StartTrainerObjectMovementScript\n"
|
||||
"\tldr r2, [r6]\n"
|
||||
"\tldr r3, _0810CA4C @ =0x00000431\n"
|
||||
"\tadds r2, r3\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tb _0810CB14\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0810CA48: .4byte sMovementScript_TrainerNoRematch\n"
|
||||
"_0810CA4C: .4byte 0x00000431\n"
|
||||
"_0810CA50:\n"
|
||||
"\tbl Random\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tmovs r1, 0x64\n"
|
||||
"\tbl __umodsi3\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r4, r0, 16\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tbl GetCurVsSeekerResponse\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r0, 0x2\n"
|
||||
"\tbne _0810CA76\n"
|
||||
"\tmovs r4, 0x64\n"
|
||||
"\tb _0810CA7C\n"
|
||||
"_0810CA76:\n"
|
||||
"\tcmp r0, 0x1\n"
|
||||
"\tbne _0810CA7C\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"_0810CA7C:\n"
|
||||
"\tcmp r4, 0x1D\n"
|
||||
"\tbhi _0810CAA0\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldr r1, _0810CA98 @ =sMovementScript_TrainerNoRematch\n"
|
||||
"\tbl StartTrainerObjectMovementScript\n"
|
||||
"\tldr r2, [r6]\n"
|
||||
"\tldr r0, _0810CA9C @ =0x00000431\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tb _0810CB14\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0810CA98: .4byte sMovementScript_TrainerNoRematch\n"
|
||||
"_0810CA9C: .4byte 0x00000431\n"
|
||||
"_0810CAA0:\n"
|
||||
"\tldr r0, _0810CB54 @ =gSaveBlock1Ptr\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldr r2, _0810CB58 @ =0x0000063a\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tldrb r0, [r0, 0x6]\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tstrb r7, [r1]\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldrb r1, [r0, 0x7]\n"
|
||||
"\tlsls r0, r1, 3\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tldr r1, _0810CB5C @ =gObjectEvents\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tbl npc_coords_shift_still\n"
|
||||
"\tldr r0, [r6]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldr r1, _0810CB60 @ =sMovementScript_TrainerRematch\n"
|
||||
"\tbl StartTrainerObjectMovementScript\n"
|
||||
"\tldr r2, [r6]\n"
|
||||
"\tmov r3, r10\n"
|
||||
"\tadds r0, r2, r3\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tlsls r1, 1\n"
|
||||
"\tmovs r3, 0x80\n"
|
||||
"\tlsls r3, 3\n"
|
||||
"\tadds r0, r2, r3\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tstrh r1, [r0]\n"
|
||||
"\tadds r2, r5\n"
|
||||
"\tldrb r0, [r2, 0xC]\n"
|
||||
"\tbl GetRunningBehaviorFromGraphicsId\n"
|
||||
"\tldr r1, [r6]\n"
|
||||
"\tmov r3, r10\n"
|
||||
"\tadds r2, r1, r3\n"
|
||||
"\tmovs r3, 0x84\n"
|
||||
"\tlsls r3, 3\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tldrb r2, [r2]\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tldr r1, [r6]\n"
|
||||
"\tadd r1, r10\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tadds r0, 0x1\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tldr r2, [r6]\n"
|
||||
"\tldr r0, _0810CB64 @ =0x00000431\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tldrb r0, [r2]\n"
|
||||
"\tmovs r1, 0x4\n"
|
||||
"_0810CB14:\n"
|
||||
"\torrs r0, r1\n"
|
||||
"\tstrb r0, [r2]\n"
|
||||
"_0810CB18:\n"
|
||||
"\tadds r5, 0x10\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tadd r9, r1\n"
|
||||
"\tldr r4, _0810CB68 @ =sVsSeeker\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, r5\n"
|
||||
"\tldrb r0, [r0, 0x6]\n"
|
||||
"\tcmp r0, 0xFF\n"
|
||||
"\tbeq _0810CB2C\n"
|
||||
"\tb _0810C9DA\n"
|
||||
"_0810CB2C:\n"
|
||||
"\tldr r2, _0810CB68 @ =sVsSeeker\n"
|
||||
"\tldr r0, [r2]\n"
|
||||
"\tldr r3, _0810CB64 @ =0x00000431\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tmovs r0, 0x4\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0810CB70\n"
|
||||
"\tmovs r0, 0x15\n"
|
||||
"\tbl PlaySE\n"
|
||||
"\tldr r0, _0810CB6C @ =0x00000801\n"
|
||||
"\tbl FlagSet\n"
|
||||
"\tbl sub_810C640\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tb _0810CB7E\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0810CB54: .4byte gSaveBlock1Ptr\n"
|
||||
"_0810CB58: .4byte 0x0000063a\n"
|
||||
"_0810CB5C: .4byte gObjectEvents\n"
|
||||
"_0810CB60: .4byte sMovementScript_TrainerRematch\n"
|
||||
"_0810CB64: .4byte 0x00000431\n"
|
||||
"_0810CB68: .4byte sVsSeeker\n"
|
||||
"_0810CB6C: .4byte 0x00000801\n"
|
||||
"_0810CB70:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0810CB7C\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tb _0810CB7E\n"
|
||||
"_0810CB7C:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"_0810CB7E:\n"
|
||||
"\tadd sp, 0x8\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_810CB90(void)
|
||||
{
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ gUnknown_3000FE8: @ 3000FE8
|
||||
gUnknown_3001188: @ 3001188
|
||||
.space 0x8
|
||||
|
||||
gUnknown_3001190: @ 3001190
|
||||
gRfuAPIBuffer: @ 3001190
|
||||
.space 0xE68
|
||||
|
||||
gUnknown_3001FF8: @ 3001FF8
|
||||
|
||||
+8
-52
@@ -61,37 +61,8 @@ gUnknown_3005078: @ 3005078
|
||||
|
||||
@ what is this?
|
||||
.space 0x20
|
||||
|
||||
gUnknown_3005330: @ 3005330
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005334: @ 3005334
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005338: @ 3005338
|
||||
.space 0x4
|
||||
|
||||
gUnknown_300533C: @ 300533C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005340: @ 3005340
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005344: @ 3005344
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005348: @ 3005348
|
||||
.space 0x4
|
||||
|
||||
gUnknown_300534C: @ 300534C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005350: @ 3005350
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3005354: @ 3005354
|
||||
.space 0xC
|
||||
|
||||
.align 2
|
||||
.include "image_processing_effects.o"
|
||||
.align 2
|
||||
.include "field_specials.o"
|
||||
.align 2
|
||||
@@ -188,24 +159,9 @@ gUnknown_3005E94: @ 3005E94
|
||||
.include "berry_fix_program.o"
|
||||
.include "m4a.o"
|
||||
.include "agb_flash.o"
|
||||
|
||||
gRfuState: @ 3007438
|
||||
.space 0x8
|
||||
|
||||
gUnknown_3007440: @ 3007440
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3007450: @ 3007450
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3007460: @ 3007460
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3007464: @ 3007464
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3007468: @ 3007468
|
||||
.space 0x8
|
||||
|
||||
gUnknown_3007470: @ 3007470
|
||||
.space 0xC
|
||||
.align 2
|
||||
.include "librfu_stwi.o"
|
||||
.align 4
|
||||
.include "librfu_rfu.o"
|
||||
.align 4
|
||||
.include "librfu_sio32id.o"
|
||||
|
||||
+2
-27
@@ -267,35 +267,10 @@ gUnknown_203998C: @ 203998C
|
||||
.include "src/mail.o"
|
||||
.align 2
|
||||
.include "src/menu_helpers.o"
|
||||
.align 2
|
||||
.include "src/region_map.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_20399D4: @ 20399D4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399D8: @ 20399D8
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399DC: @ 20399DC
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399E0: @ 20399E0
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399E4: @ 20399E4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399E8: @ 20399E8
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399EC: @ 20399EC
|
||||
.space 0x4
|
||||
|
||||
gUnknown_20399F0: @ 20399F0
|
||||
.space 0xC
|
||||
|
||||
gUnknown_20399FC: @ 20399FC
|
||||
.space 0x4
|
||||
|
||||
gAIScriptPtr: @ 2039A00
|
||||
.space 0x4
|
||||
|
||||
|
||||
Reference in New Issue
Block a user