link.c through InitLocalLinkPlayer

This commit is contained in:
PikalaxALT
2019-10-05 15:49:05 -04:00
parent b4b509f684
commit b01da1a592
26 changed files with 332 additions and 412 deletions
+1 -1
View File
@@ -2087,7 +2087,7 @@ _080817C0:
bl sub_8057F34
ldr r0, _080817DC @ =gSpecialVar_0x8005
ldrb r0, [r0]
bl sub_80096F8
bl SetLocalLinkPlayerId
movs r0, 0x2
strh r0, [r5, 0x8]
b _08081820
+2 -2
View File
@@ -797,7 +797,7 @@ _080BDCA4: .4byte 0x0000ffff
thumb_func_start sub_80BDCA8
sub_80BDCA8: @ 80BDCA8
push {lr}
bl sub_806E25C
bl IsNationalPokedexEnabled
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -1116,7 +1116,7 @@ _080BDEB2:
movs r0, 0x13
strh r0, [r3]
_080BDF0C:
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
beq _080BDF2A
ldr r0, _080BDF30 @ =gUnknown_20399BC
+3 -3
View File
@@ -193,8 +193,8 @@ _0806E254: .4byte gSaveBlock2Ptr
_0806E258: .4byte 0x00006258
thumb_func_end EnableNationalPokedex
thumb_func_start sub_806E25C
sub_806E25C: @ 806E25C
thumb_func_start IsNationalPokedexEnabled
IsNationalPokedexEnabled: @ 806E25C
push {lr}
ldr r0, _0806E288 @ =gSaveBlock2Ptr
ldr r0, [r0]
@@ -224,7 +224,7 @@ _0806E294:
_0806E296:
pop {r1}
bx r1
thumb_func_end sub_806E25C
thumb_func_end IsNationalPokedexEnabled
thumb_func_start sub_806E29C
sub_806E29C: @ 806E29C
+2 -2
View File
@@ -1321,7 +1321,7 @@ sub_80CE8DC: @ 80CE8DC
ldr r0, _080CE940 @ =gPlayerParty
adds r1, r0
mov r9, r1
bl sub_806E25C
bl IsNationalPokedexEnabled
mov r10, r4
cmp r0, 0
bne _080CE948
@@ -2736,7 +2736,7 @@ sub_80CF53C: @ 80CF53C
ldr r0, _080CF5C0 @ =gPlayerParty
adds r1, r0
mov r8, r1
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
bne _080CF598
movs r1, 0x8
+11 -373
View File
@@ -5,368 +5,6 @@
.text
thumb_func_start sub_8009480
sub_8009480: @ 8009480
push {lr}
ldr r0, _08009494 @ =gUnknown_203ADFA
ldrb r0, [r0]
subs r0, 0x2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _08009498
movs r0, 0
b _080094CE
.align 2, 0
_08009494: .4byte gUnknown_203ADFA
_08009498:
bl sub_800B1F4
bl sub_80F86F4
movs r0, 0x1
bl sub_80FB128
bl sub_80FD3A4
ldr r1, _080094C0 @ =0x00008001
cmp r0, r1
beq _080094C4
bl sub_800B210
bl CloseLink
bl RestoreSerialTimer3IntrHandlers
movs r0, 0
b _080094CE
.align 2, 0
_080094C0: .4byte 0x00008001
_080094C4:
bl rfu_REQ_stopMode
bl rfu_waitREQComplete
movs r0, 0x1
_080094CE:
pop {r1}
bx r1
thumb_func_end sub_8009480
thumb_func_start sub_80094D4
sub_80094D4: @ 80094D4
push {lr}
lsls r0, 24
lsrs r0, 24
bl DestroyTask
pop {r0}
bx r0
thumb_func_end sub_80094D4
thumb_func_start sub_80094E4
sub_80094E4: @ 80094E4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
ldr r4, [sp, 0x18]
lsls r5, 24
lsrs r5, 24
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r2, 24
lsrs r6, r2, 24
lsls r3, 24
lsrs r7, r3, 24
lsls r4, 16
lsrs r4, 16
ldr r0, _08009540 @ =gUnknown_8232578
lsls r1, r5, 4
movs r2, 0x20
bl LoadPalette
ldr r3, _08009544 @ =0x040000d4
ldr r0, _08009548 @ =gUnknown_8232598
str r0, [r3]
lsls r2, r7, 14
lsls r0, r4, 5
movs r1, 0xC0
lsls r1, 19
adds r0, r1
adds r2, r0
str r2, [r3, 0x4]
ldr r0, _0800954C @ =0x80001000
str r0, [r3, 0x8]
ldr r0, [r3, 0x8]
ldr r0, _08009550 @ =gUnknown_3003F70
str r6, [r0]
str r5, [r0, 0x4]
str r4, [r0, 0x8]
mov r0, r8
cmp r0, 0x2
beq _0800956E
cmp r0, 0x2
bgt _08009554
cmp r0, 0x1
beq _0800955C
b _08009590
.align 2, 0
_08009540: .4byte gUnknown_8232578
_08009544: .4byte 0x040000d4
_08009548: .4byte gUnknown_8232598
_0800954C: .4byte 0x80001000
_08009550: .4byte gUnknown_3003F70
_08009554:
mov r0, r8
cmp r0, 0x3
beq _08009580
b _08009590
_0800955C:
lsls r1, r6, 8
movs r0, 0x1
orrs r1, r0
lsls r0, r7, 2
orrs r1, r0
movs r0, 0xA
bl SetGpuReg
b _08009590
_0800956E:
lsls r1, r6, 8
movs r0, 0x1
orrs r1, r0
lsls r0, r7, 2
orrs r1, r0
movs r0, 0xC
bl SetGpuReg
b _08009590
_08009580:
lsls r1, r6, 8
movs r0, 0x1
orrs r1, r0
lsls r0, r7, 2
orrs r1, r0
movs r0, 0xE
bl SetGpuReg
_08009590:
mov r0, r8
lsls r4, r0, 2
adds r0, r4, 0
adds r0, 0x10
lsls r0, 24
lsrs r0, 24
movs r1, 0
bl SetGpuReg
adds r4, 0x12
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
bl SetGpuReg
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80094E4
thumb_func_start sub_80095BC
sub_80095BC: @ 80095BC
push {r4-r6,lr}
mov r6, r8
push {r6}
mov r8, r0
adds r6, r1, 0
adds r4, r2, 0
adds r5, r3, 0
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r6, 24
lsrs r6, 24
lsls r4, 24
lsrs r4, 24
lsls r5, 24
lsrs r5, 24
ldr r0, _08009628 @ =gUnknown_8232578
mov r2, r8
lsls r1, r2, 4
movs r2, 0x20
bl LoadPalette
ldr r2, _0800962C @ =0x040000d4
ldr r0, _08009630 @ =gUnknown_8232598
str r0, [r2]
lsls r0, r5, 14
movs r1, 0xC0
lsls r1, 19
adds r0, r1
str r0, [r2, 0x4]
ldr r0, _08009634 @ =0x80001000
str r0, [r2, 0x8]
ldr r0, [r2, 0x8]
ldr r0, _08009638 @ =gUnknown_3003F70
str r4, [r0]
mov r1, r8
str r1, [r0, 0x4]
movs r1, 0
str r1, [r0, 0x8]
ldr r0, _0800963C @ =gBGControlRegOffsets
adds r6, r0
ldrb r0, [r6]
lsls r4, 8
lsls r5, 2
orrs r4, r5
adds r1, r4, 0
bl SetGpuReg
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08009628: .4byte gUnknown_8232578
_0800962C: .4byte 0x040000d4
_08009630: .4byte gUnknown_8232598
_08009634: .4byte 0x80001000
_08009638: .4byte gUnknown_3003F70
_0800963C: .4byte gBGControlRegOffsets
thumb_func_end sub_80095BC
thumb_func_start sub_8009640
sub_8009640: @ 8009640
push {r4,lr}
sub sp, 0x4
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetTasks
ldr r0, _080096D4 @ =sub_800978C
bl SetVBlankCallback
bl ResetBlockSend
ldr r1, _080096D8 @ =gLinkType
ldr r2, _080096DC @ =0x00001111
adds r0, r2, 0
strh r0, [r1]
bl OpenLink
ldr r0, _080096E0 @ =gMain
ldrh r0, [r0, 0x24]
bl SeedRng
movs r4, 0
_08009670:
bl Random
ldr r1, _080096E4 @ =gSaveBlock2Ptr
ldr r1, [r1]
adds r1, 0xA
adds r1, r4
strb r0, [r1]
adds r4, 0x1
cmp r4, 0x3
ble _08009670
movs r4, 0
str r4, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0x4
movs r3, 0
bl sub_80094E4
movs r1, 0xAA
lsls r1, 5
movs r0, 0
bl SetGpuReg
ldr r0, _080096E8 @ =sub_80094D4
movs r1, 0
bl CreateTask
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
ldr r0, _080096EC @ =gUnknown_3000E58
str r4, [r0]
bl sub_8009708
ldr r0, _080096F0 @ =task00_link_test
movs r1, 0
bl CreateTask
ldr r0, _080096F4 @ =c2_08009A8C
bl SetMainCallback2
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080096D4: .4byte sub_800978C
_080096D8: .4byte gLinkType
_080096DC: .4byte 0x00001111
_080096E0: .4byte gMain
_080096E4: .4byte gSaveBlock2Ptr
_080096E8: .4byte sub_80094D4
_080096EC: .4byte gUnknown_3000E58
_080096F0: .4byte task00_link_test
_080096F4: .4byte c2_08009A8C
thumb_func_end sub_8009640
thumb_func_start sub_80096F8
sub_80096F8: @ 80096F8
lsls r0, 24
lsrs r0, 24
ldr r1, _08009704 @ =gLocalLinkPlayer
strh r0, [r1, 0x18]
bx lr
.align 2, 0
_08009704: .4byte gLocalLinkPlayer
thumb_func_end sub_80096F8
thumb_func_start sub_8009708
sub_8009708: @ 8009708
push {r4,r5,lr}
ldr r5, _08009774 @ =gLocalLinkPlayer
ldr r4, _08009778 @ =gSaveBlock2Ptr
ldr r1, [r4]
ldrb r2, [r1, 0xA]
ldrb r0, [r1, 0xB]
lsls r0, 8
orrs r2, r0
ldrb r0, [r1, 0xC]
lsls r0, 16
orrs r2, r0
ldrb r0, [r1, 0xD]
lsls r0, 24
orrs r2, r0
str r2, [r5, 0x4]
adds r0, r5, 0
adds r0, 0x8
bl StringCopy
ldr r0, [r4]
ldrb r0, [r0, 0x8]
strb r0, [r5, 0x13]
ldr r0, _0800977C @ =gLinkType
ldrh r0, [r0]
str r0, [r5, 0x14]
ldr r0, _08009780 @ =gGameLanguage
ldrb r0, [r0]
strh r0, [r5, 0x1A]
ldr r0, _08009784 @ =gGameVersion
ldrb r0, [r0]
movs r2, 0x80
lsls r2, 7
adds r1, r2, 0
adds r0, r1
strh r0, [r5]
movs r0, 0x80
lsls r0, 8
strh r0, [r5, 0x2]
bl sub_806E25C
strb r0, [r5, 0x10]
ldr r0, _08009788 @ =0x00000844
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _0800976E
ldrb r0, [r5, 0x10]
movs r1, 0x10
orrs r0, r1
strb r0, [r5, 0x10]
_0800976E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08009774: .4byte gLocalLinkPlayer
_08009778: .4byte gSaveBlock2Ptr
_0800977C: .4byte gLinkType
_08009780: .4byte gGameLanguage
_08009784: .4byte gGameVersion
_08009788: .4byte 0x00000844
thumb_func_end sub_8009708
thumb_func_start sub_800978C
sub_800978C: @ 800978C
push {lr}
@@ -736,8 +374,8 @@ _08009A84: .4byte gLinkVSyncDisabled
_08009A88: .4byte gUnknown_3003F80
thumb_func_end LinkTestProcessKeyInput
thumb_func_start c2_08009A8C
c2_08009A8C: @ 8009A8C
thumb_func_start CB2_LinkTest
CB2_LinkTest: @ 8009A8C
push {lr}
bl LinkTestProcessKeyInput
movs r0, 0x1
@@ -750,7 +388,7 @@ c2_08009A8C: @ 8009A8C
bl UpdatePaletteFade
pop {r0}
bx r0
thumb_func_end c2_08009A8C
thumb_func_end CB2_LinkTest
thumb_func_start LinkMain2
LinkMain2: @ 8009AB0
@@ -956,7 +594,7 @@ _08009C2C:
_08009C30: .4byte 0x0000cafe
_08009C34: .4byte 0x0000cccc
_08009C38:
bl sub_8009708
bl InitLocalLinkPlayer
ldr r0, _08009C7C @ =gUnknown_3003E70
adds r2, r0, 0
adds r2, 0x10
@@ -2326,7 +1964,7 @@ PrintHexDigit: @ 800A614
lsls r1, 24
lsrs r1, 24
lsls r2, 24
ldr r4, _0800A648 @ =gUnknown_3003F70
ldr r4, _0800A648 @ =gLinkTestBGInfo
ldr r3, [r4]
lsls r3, 11
movs r5, 0xC0
@@ -2347,7 +1985,7 @@ PrintHexDigit: @ 800A614
pop {r0}
bx r0
.align 2, 0
_0800A648: .4byte gUnknown_3003F70
_0800A648: .4byte gLinkTestBGInfo
thumb_func_end PrintHexDigit
thumb_func_start sub_800A64C
@@ -2358,7 +1996,7 @@ sub_800A64C: @ 800A64C
lsls r1, 24
lsrs r1, 24
lsls r2, 24
ldr r4, _0800A680 @ =gUnknown_3003F70
ldr r4, _0800A680 @ =gLinkTestBGInfo
ldr r3, [r4]
lsls r3, 11
movs r5, 0xC0
@@ -2378,7 +2016,7 @@ sub_800A64C: @ 800A64C
pop {r0}
bx r0
.align 2, 0
_0800A680: .4byte gUnknown_3003F70
_0800A680: .4byte gLinkTestBGInfo
thumb_func_end sub_800A64C
thumb_func_start sub_800A684
@@ -3315,7 +2953,7 @@ _0800AD30:
ldr r1, _0800AE0C @ =gSoftResetDisabled
movs r0, 0
strb r0, [r1]
ldr r0, _0800AE10 @ =sub_80094D4
ldr r0, _0800AE10 @ =Task_DestroySelf
movs r1, 0
bl CreateTask
bl StopMapMusic
@@ -3345,7 +2983,7 @@ _0800AE00: .4byte gUnknown_2022860
_0800AE04: .4byte gUnknown_82345F0
_0800AE08: .4byte gTMCaseMainWindowPalette
_0800AE0C: .4byte gSoftResetDisabled
_0800AE10: .4byte sub_80094D4
_0800AE10: .4byte Task_DestroySelf
_0800AE14: .4byte gMain
_0800AE18: .4byte sub_800AF2C
thumb_func_end c2_800ACD4
@@ -3679,7 +3317,7 @@ _0800B0B0: .4byte gUnknown_3003EAC
thumb_func_start sub_800B0B4
sub_800B0B4: @ 800B0B4
push {r4-r6,lr}
bl sub_8009708
bl InitLocalLinkPlayer
ldr r1, _0800B100 @ =gUnknown_3003E70
adds r2, r1, 0
adds r2, 0x10
+2 -2
View File
@@ -6866,7 +6866,7 @@ sub_80FBA78: @ 80FBA78
bl ResetPaletteFade
ldr r0, _080FBAF4 @ =sub_80FBA64
bl SetVBlankCallback
bl sub_8009480
bl IsWirelessAdapterConnected
lsls r0, 24
cmp r0, 0
beq _080FBAEC
@@ -9184,7 +9184,7 @@ _080FCB88:
ands r4, r1
orrs r4, r0
strb r4, [r7]
bl sub_806E25C
bl IsNationalPokedexEnabled
ands r0, r6
ldrb r1, [r7, 0x1]
ands r5, r1
+3 -3
View File
@@ -948,7 +948,7 @@ _0800CAEE:
movs r0, 0
b _0800CB22
_0800CAF2:
bl sub_8009480
bl IsWirelessAdapterConnected
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
@@ -1227,7 +1227,7 @@ sub_800CCF8: @ 800CCF8
beq _0800CD44
movs r0, 0x5
bl PlaySE
bl sub_8009480
bl IsWirelessAdapterConnected
movs r0, 0x1
negs r0, r0
movs r1, 0
@@ -1500,7 +1500,7 @@ sub_800CF3C: @ 800CF3C
lsrs r0, 24
cmp r0, 0x1
bne _0800CFAE
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
beq _0800CF64
movs r0, 0x1
+1 -1
View File
@@ -16284,7 +16284,7 @@ _08126C20: .4byte 0x0000ffff
thumb_func_start sub_8126C24
sub_8126C24: @ 8126C24
push {lr}
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
bne _08126C60
ldr r0, _08126C54 @ =gUnknown_203B0A0
+7 -7
View File
@@ -49,7 +49,7 @@ sub_810250C: @ 810250C
mov r6, r8
push {r6}
sub sp, 0xC
bl sub_806E25C
bl IsNationalPokedexEnabled
lsls r0, 24
lsrs r6, r0, 24
bl m4aSoundVSyncOff
@@ -594,7 +594,7 @@ _081029D0:
adds r1, 0x62
movs r2, 0
bl ListMenuGetScrollAndRow
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
beq _081029F4
ldr r0, _081029F0 @ =gUnknown_84520E4
@@ -915,7 +915,7 @@ sub_8102C28: @ 8102C28
bl AddWindow
ldr r1, [r7]
strb r0, [r1, 0x16]
bl sub_806E25C
bl IsNationalPokedexEnabled
adds r5, r0, 0
cmp r5, 0
bne _08102C9E
@@ -1904,7 +1904,7 @@ sub_8103518: @ 8103518
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
bl sub_806E25C
bl IsNationalPokedexEnabled
movs r1, 0x97
str r1, [sp]
cmp r0, 0
@@ -5594,7 +5594,7 @@ sub_81052D0: @ 81052D0
sub sp, 0x8
lsls r0, 24
lsrs r6, r0, 24
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
beq _081052E8
ldr r0, _081052E4 @ =gUnknown_84406E0
@@ -8137,7 +8137,7 @@ sub_8106810: @ 8106810
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0x1
beq _08106830
adds r0, r4, 0
@@ -8609,7 +8609,7 @@ sub_8106B60: @ 8106B60
movs r1, 0x3
movs r2, 0x1
bl sub_8104AB0
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
bne _08106BA4
adds r0, r5, 0
+1 -1
View File
@@ -55,7 +55,7 @@ _080F8024:
.align 2, 0
_080F8030: .4byte gSaveBlock2Ptr
_080F8034:
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
beq _080F8044
movs r0, 0x1
+1 -1
View File
@@ -6443,7 +6443,7 @@ _0804FA2C:
cmp r5, r7
blt _0804FA2C
_0804FA4E:
bl sub_806E25C
bl IsNationalPokedexEnabled
mov r1, r9
lsls r4, r1, 2
cmp r0, 0
+1 -1
View File
@@ -2039,7 +2039,7 @@ _0808A0DC: .4byte gUnknown_8419CE7
thumb_func_start sub_808A0E0
sub_808A0E0: @ 808A0E0
push {lr}
bl sub_806E25C
bl IsNationalPokedexEnabled
cmp r0, 0
bne _0808A0F2
movs r0, 0x1
+2 -2
View File
@@ -19,10 +19,10 @@ gWirelessLinkDisplayBin:: @ 823238C
.incbin "graphics/interface/wireless_link_display.bin.lz"
.align 2
gUnknown_8232578:: @ 8232578
gLinkTestDigitsPal:: @ 8232578
.incbin "baserom.gba", 0x232578, 0x20
gUnknown_8232598:: @ 8232598
gLinkTestDigitsGfx:: @ 8232598
.incbin "baserom.gba", 0x232598, 0x2000
gUnknown_8234598:: @ 8234598
+1 -1
View File
@@ -1492,7 +1492,7 @@ EventScript_1A651A:: @ 81A651A
clearflag FLAG_0x09D
call EventScript_1A6551
special sub_81130A8
specialvar VAR_RESULT, sub_806E25C
specialvar VAR_RESULT, IsNationalPokedexEnabled
compare_var_to_value VAR_RESULT, 0
call_if 1, EventScript_1A653B
call EventScript_1A6541
@@ -5,7 +5,7 @@ IndigoPlateau_PokemonCenter_1F_MapScripts:: @ 816EA5A
IndigoPlateau_PokemonCenter_1F_MapScript1_16EA65:: @ 816EA65
setrespawn SPAWN_INDIGO_PLATEAU
specialvar VAR_RESULT, sub_806E25C
specialvar VAR_RESULT, IsNationalPokedexEnabled
compare_var_to_value VAR_RESULT, 1
call_if 1, EventScript_16EA79
end
@@ -19,7 +19,7 @@ EventScript_16EA79:: @ 816EA79
IndigoPlateau_PokemonCenter_1F_EventScript_16EA8A:: @ 816EA8A
lock
faceplayer
specialvar VAR_RESULT, sub_806E25C
specialvar VAR_RESULT, IsNationalPokedexEnabled
compare_var_to_value VAR_RESULT, 1
goto_if_eq EventScript_16EAA6
msgbox gUnknown_819A8D8
@@ -220,7 +220,7 @@ OneIsland_PokemonCenter_1F_EventScript_170EC5:: @ 8170EC5
goto_if_eq EventScript_171044
compare_var_to_value VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4
goto_if_eq EventScript_1710F2
specialvar VAR_RESULT, sub_806E25C
specialvar VAR_RESULT, IsNationalPokedexEnabled
compare_var_to_value VAR_RESULT, 1
goto_if_eq EventScript_1710FC
compare_var_to_value VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 3
@@ -4,7 +4,7 @@ ThreeIsland_DunsparceTunnel_MapScripts:: @ 8164D26
ThreeIsland_DunsparceTunnel_MapScript1_164D2C:: @ 8164D2C
setworldmapflag FLAG_WORLD_MAP_THREE_ISLAND_DUNSPARCE_TUNNEL
specialvar VAR_RESULT, sub_806E25C
specialvar VAR_RESULT, IsNationalPokedexEnabled
copyvar VAR_0x8008, VAR_RESULT
compare_var_to_value VAR_0x8008, 1
call_if 1, EventScript_164D50
@@ -26,7 +26,7 @@ ThreeIsland_DunsparceTunnel_EventScript_164D60:: @ 8164D60
faceplayer
checkflag FLAG_0x2E2
goto_if_eq EventScript_164DC2
specialvar VAR_RESULT, sub_806E25C
specialvar VAR_RESULT, IsNationalPokedexEnabled
compare_var_to_value VAR_RESULT, 1
goto_if_eq EventScript_164D90
msgbox gUnknown_817D13B
+2 -2
View File
@@ -371,7 +371,7 @@ gSpecials:: @ 815FD60
def_special sub_80CC2BC
def_special sub_80CC3CC
def_special sub_80CC524
def_special sub_8009480
def_special IsWirelessAdapterConnected
def_special sub_8115A24
def_special BerryBlenderLinkJoinGroup
def_special UnionRoomSpecial
@@ -412,7 +412,7 @@ gSpecials:: @ 815FD60
def_special sub_812B35C
def_special Special_SSAnneDepartureCutscene
def_special sub_8149A18
def_special sub_806E25C
def_special IsNationalPokedexEnabled
def_special sub_815D9E8
def_special sub_814B504
def_special sub_80CC8CC
+1 -1
View File
@@ -36,7 +36,7 @@ bool32 sub_806E2BC(void);
void sub_806E6FC(void);
void sub_806E2D0(void);
void sub_806E370(void);
bool32 sub_806E25C(void);
bool32 IsNationalPokedexEnabled(void);
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
+125
View File
@@ -1,3 +1,6 @@
#ifndef GUARD_LIBRFU_H
#define GUARD_LIBRFU_H
#include "main.h"
enum
@@ -130,6 +133,128 @@ struct RfuIntrStruct
u8 block2[0x30];
};
struct RfuUnk1
{
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;
};
struct RfuUnk2
{
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];
};
struct RfuUnk3
{
u32 unk_0;
u32 unk_4;
u8 unk_8[0xD4];
u32 unk_dc;
};
struct RfuUnk5Sub
{
u16 unk_00;
u8 unk_02;
u16 unk_04;
struct UnkLinkRfuStruct_02022B14 unk_06;
u8 fill_13[1];
u8 playerName[PLAYER_NAME_LENGTH + 1];
};
struct RfuUnk5
{
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];
};
extern struct RfuStruct *gRfuState;
extern struct RfuUnk5 *gUnknown_03007890;
extern u32 *gUnknown_03007894;
extern struct RfuUnk3* gUnknown_03007898;
extern struct RfuUnk2* gUnknown_03007880[4];
extern struct RfuUnk1* gUnknown_03007870[4];
extern void* sub_82E53F4;
extern void rfu_STC_clearAPIVariables(void);
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
void rfu_REQ_stopMode(void);
void rfu_waitREQComplete(void);
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);
void rfu_REQ_reset(void);
void rfu_REQ_configSystem(u16, u8, u8);
void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *);
void rfu_REQ_startSearchChild(void);
void rfu_REQ_pollSearchChild(void);
void rfu_REQ_endSearchChild(void);
void rfu_REQ_startSearchParent(void);
void rfu_REQ_pollSearchParent(void);
void rfu_REQ_endSearchParent(void);
void rfu_REQ_startConnectParent(u16);
void rfu_REQ_pollConnectParent(void);
void rfu_REQ_endConnectParent(void);
void rfu_REQ_CHILD_startConnectRecovery(u8);
void rfu_REQ_CHILD_pollConnectRecovery(void);
void rfu_REQ_CHILD_endConnectRecovery(void);
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);
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);
void rfu_REQ_PARENT_resumeRetransmitAndChange(void);
void rfu_NI_setSendData(u8, u8, const void *, u32);
#endif // GUARD_LIBRFU_H
+3
View File
@@ -19,5 +19,8 @@ void MEvent_CreateTask_Leader(u8);
void sub_80F9E2C(void * data);
u8 sub_8116DE0(void);
void sub_80FBB4C(void);
void sub_80F86F4(void);
void sub_80FB128(bool32 a0);
u32 sub_80FD3A4(void);
#endif //GUARD_LINK_RFU_H
+1
View File
@@ -60,6 +60,7 @@ SECTIONS {
src/text.o(.text);
src/sprite.o(.text);
src/string_util.o(.text);
src/link.o(.text);
asm/link.o(.text);
src/multiboot.o(.text);
asm/main_menu.o(.text);
+153
View File
@@ -0,0 +1,153 @@
#include "global.h"
#include "palette.h"
#include "gpu_regs.h"
#include "link.h"
#include "quest_log.h"
#include "link_rfu.h"
#include "librfu.h"
#include "random.h"
#include "task.h"
#include "event_data.h"
#include "string_util.h"
struct BlockTransfer
{
u16 pos;
u16 size;
const u8 *src;
bool8 active;
u8 multiplayerId;
};
struct LinkTestBGInfo
{
u32 screenBaseBlock;
u32 paletteNum;
u32 dummy_8;
u32 dummy_C;
};
u32 gUnknown_3000E58;
struct LinkTestBGInfo gLinkTestBGInfo;
EWRAM_DATA struct LinkPlayer gLocalLinkPlayer = {};
void sub_800B210(void);
void InitLocalLinkPlayer(void);
void sub_800978C(void);
void ResetBlockSend(void);
void task00_link_test(u8 taskId);
void CB2_LinkTest(void);
extern const u16 gLinkTestDigitsPal[0x20];
extern const u16 gLinkTestDigitsGfx[0x1000];
extern const u8 gBGControlRegOffsets[];
bool8 IsWirelessAdapterConnected(void)
{
if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
return FALSE;
sub_800B1F4();
sub_80F86F4();
sub_80FB128(1);
if (sub_80FD3A4() == 0x8001)
{
rfu_REQ_stopMode();
rfu_waitREQComplete();
return TRUE;
}
sub_800B210();
CloseLink();
RestoreSerialTimer3IntrHandlers();
return FALSE;
}
void Task_DestroySelf(u8 taskId)
{
DestroyTask(taskId);
}
void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 a4)
{
LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20);
DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestDigitsGfx);
gLinkTestBGInfo.screenBaseBlock = screenBaseBlock;
gLinkTestBGInfo.paletteNum = paletteNum;
gLinkTestBGInfo.dummy_8 = a4;
switch (bgNum)
{
case 1:
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock));
break;
case 2:
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock));
break;
case 3:
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock));
break;
}
SetGpuReg(REG_OFFSET_BG0HOFS + bgNum * 4, 0);
SetGpuReg(REG_OFFSET_BG0VOFS + bgNum * 4, 0);
}
void sub_80095BC(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock)
{
LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20);
DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestDigitsGfx);
gLinkTestBGInfo.screenBaseBlock = screenBaseBlock;
gLinkTestBGInfo.paletteNum = paletteNum;
gLinkTestBGInfo.dummy_8 = 0;
SetGpuReg(gBGControlRegOffsets[bgNum], BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock));
}
void LinkTestScreen(void)
{
int i;
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
SetVBlankCallback(sub_800978C);
ResetBlockSend();
gLinkType = 0x1111;
OpenLink();
SeedRng(gMain.vblankCounter2);
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256;
}
InitLinkTestBG(0, 2, 4, 0, 0);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
CreateTask(Task_DestroySelf, 0);
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
gUnknown_3000E58 = 0;
InitLocalLinkPlayer();
CreateTask(task00_link_test, 0);
SetMainCallback2(CB2_LinkTest);
}
void SetLocalLinkPlayerId(u8 playerId)
{
gLocalLinkPlayer.id = playerId;
}
void InitLocalLinkPlayer(void)
{
gLocalLinkPlayer.trainerId = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24);
StringCopy(gLocalLinkPlayer.name, gSaveBlock2Ptr->playerName);
gLocalLinkPlayer.gender = gSaveBlock2Ptr->playerGender;
gLocalLinkPlayer.linkType = gLinkType;
gLocalLinkPlayer.language = gGameLanguage;
gLocalLinkPlayer.version = gGameVersion + 0x4000;
gLocalLinkPlayer.lp_field_2 = 0x8000;
gLocalLinkPlayer.name[8] = IsNationalPokedexEnabled();
if (FlagGet(FLAG_0x844))
{
gLocalLinkPlayer.name[8] |= 0x10;
}
}
+2 -2
View File
@@ -4961,7 +4961,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
if (gEvolutionTable[species][i].param == heldItem)
{
targetSpecies = gEvolutionTable[species][i].targetSpecies;
if (sub_806E25C() || targetSpecies <= 151)
if (IsNationalPokedexEnabled() || targetSpecies <= 151)
{
heldItem = 0;
SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem);
@@ -5629,7 +5629,7 @@ u16 sub_8043F90(u16 species)
{
species = SpeciesToNationalPokedexNum(species);
if (!sub_806E25C() && species > 151)
if (!IsNationalPokedexEnabled() && species > 151)
return 0xFFFF;
return species;
}
+1 -1
View File
@@ -33,7 +33,7 @@ u16 Special_GetPokedexCount(void)
gSpecialVar_0x8005 = GetNationalPokedexCount(0);
gSpecialVar_0x8006 = GetNationalPokedexCount(1);
}
return sub_806E25C();
return IsNationalPokedexEnabled();
}
const u8 * sub_80CA424(u16 count)
+1 -1
View File
@@ -75,7 +75,7 @@ gUnknown_3003F60: @ 3003F60
gReceivedRemoteLinkPlayers: @ 3003F64
.space 0xC
gUnknown_3003F70: @ 3003F70
gLinkTestBGInfo: @ 3003F70
.space 0x10
gUnknown_3003F80: @ 3003F80