link through ResetSerial
This commit is contained in:
-831
@@ -5,837 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_800ACBC
|
|
||||||
sub_800ACBC: @ 800ACBC
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, _0800ACD0 @ =sLinkErrorBuffer
|
|
||||||
str r0, [r4]
|
|
||||||
strb r1, [r4, 0x5]
|
|
||||||
strb r2, [r4, 0x4]
|
|
||||||
strb r3, [r4, 0x6]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800ACD0: .4byte sLinkErrorBuffer
|
|
||||||
thumb_func_end sub_800ACBC
|
|
||||||
|
|
||||||
thumb_func_start CB2_LinkError
|
|
||||||
CB2_LinkError: @ 800ACD4
|
|
||||||
push {r4,lr}
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
ldr r0, _0800ADE0 @ =gMPlayInfo_SE1
|
|
||||||
bl m4aMPlayStop
|
|
||||||
ldr r0, _0800ADE4 @ =gMPlayInfo_SE2
|
|
||||||
bl m4aMPlayStop
|
|
||||||
ldr r0, _0800ADE8 @ =gMPlayInfo_SE3
|
|
||||||
bl m4aMPlayStop
|
|
||||||
ldr r0, _0800ADEC @ =gHeap
|
|
||||||
movs r1, 0xE0
|
|
||||||
lsls r1, 9
|
|
||||||
bl InitHeap
|
|
||||||
bl ResetSpriteData
|
|
||||||
bl FreeAllSpritePalettes
|
|
||||||
bl ResetPaletteFadeControl
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x2
|
|
||||||
bl FillPalette
|
|
||||||
bl ResetTasks
|
|
||||||
bl ScanlineEffect_Stop
|
|
||||||
ldr r1, _0800ADF0 @ =gWirelessCommType
|
|
||||||
ldrb r0, [r1]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800AD30
|
|
||||||
ldr r0, _0800ADF4 @ =sLinkErrorBuffer
|
|
||||||
ldrb r0, [r0, 0x6]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800AD2C
|
|
||||||
movs r0, 0x3
|
|
||||||
strb r0, [r1]
|
|
||||||
_0800AD2C:
|
|
||||||
bl sub_80F85F8
|
|
||||||
_0800AD30:
|
|
||||||
ldr r0, _0800ADF8 @ =sub_800978C
|
|
||||||
bl SetVBlankCallback
|
|
||||||
movs r0, 0
|
|
||||||
bl ResetBgsAndClearDma3BusyFlags
|
|
||||||
ldr r1, _0800ADFC @ =gUnknown_82345E8
|
|
||||||
movs r0, 0
|
|
||||||
movs r2, 0x2
|
|
||||||
bl InitBgsFromTemplates
|
|
||||||
ldr r4, _0800AE00 @ =gUnknown_2022860
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 4
|
|
||||||
bl Alloc
|
|
||||||
adds r1, r0, 0
|
|
||||||
str r1, [r4]
|
|
||||||
movs r0, 0x1
|
|
||||||
bl SetBgTilemapBuffer
|
|
||||||
ldr r0, _0800AE04 @ =gUnknown_82345F0
|
|
||||||
bl InitWindows
|
|
||||||
lsls r0, 16
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800ADD8
|
|
||||||
bl DeactivateAllTextPrinters
|
|
||||||
bl ResetTempTileDataBuffers
|
|
||||||
movs r0, 0x52
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x10
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x12
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x14
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r0, 0x16
|
|
||||||
movs r1, 0
|
|
||||||
bl SetGpuReg
|
|
||||||
movs r1, 0xE0
|
|
||||||
lsls r1, 8
|
|
||||||
movs r0, 0
|
|
||||||
bl ClearGpuRegBits
|
|
||||||
ldr r0, _0800AE08 @ =gTMCaseMainWindowPalette
|
|
||||||
movs r1, 0xF0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
ldr r1, _0800AE0C @ =gSoftResetDisabled
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1]
|
|
||||||
ldr r0, _0800AE10 @ =Task_DestroySelf
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
bl StopMapMusic
|
|
||||||
ldr r1, _0800AE14 @ =gMain
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r1]
|
|
||||||
bl RunTasks
|
|
||||||
bl AnimateSprites
|
|
||||||
bl BuildOamBuffer
|
|
||||||
bl UpdatePaletteFade
|
|
||||||
ldr r0, _0800AE18 @ =sub_800AF2C
|
|
||||||
bl SetMainCallback2
|
|
||||||
_0800ADD8:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800ADE0: .4byte gMPlayInfo_SE1
|
|
||||||
_0800ADE4: .4byte gMPlayInfo_SE2
|
|
||||||
_0800ADE8: .4byte gMPlayInfo_SE3
|
|
||||||
_0800ADEC: .4byte gHeap
|
|
||||||
_0800ADF0: .4byte gWirelessCommType
|
|
||||||
_0800ADF4: .4byte sLinkErrorBuffer
|
|
||||||
_0800ADF8: .4byte sub_800978C
|
|
||||||
_0800ADFC: .4byte gUnknown_82345E8
|
|
||||||
_0800AE00: .4byte gUnknown_2022860
|
|
||||||
_0800AE04: .4byte gUnknown_82345F0
|
|
||||||
_0800AE08: .4byte gTMCaseMainWindowPalette
|
|
||||||
_0800AE0C: .4byte gSoftResetDisabled
|
|
||||||
_0800AE10: .4byte Task_DestroySelf
|
|
||||||
_0800AE14: .4byte gMain
|
|
||||||
_0800AE18: .4byte sub_800AF2C
|
|
||||||
thumb_func_end CB2_LinkError
|
|
||||||
|
|
||||||
thumb_func_start sub_800AE1C
|
|
||||||
sub_800AE1C: @ 800AE1C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0xC
|
|
||||||
ldr r1, _0800AEB8 @ =gWirelessLinkDisplay4bpp
|
|
||||||
movs r5, 0
|
|
||||||
str r5, [sp]
|
|
||||||
movs r0, 0x1
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl DecompressAndLoadBgGfxUsingHeap
|
|
||||||
ldr r1, _0800AEBC @ =gWirelessLinkDisplayBin
|
|
||||||
movs r0, 0x1
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl CopyToBgTilemapBuffer
|
|
||||||
movs r0, 0x1
|
|
||||||
bl CopyBgTilemapBufferToVram
|
|
||||||
ldr r0, _0800AEC0 @ =gWirelessLinkDisplayPal
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x20
|
|
||||||
bl LoadPalette
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
movs r0, 0x2
|
|
||||||
movs r1, 0
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
ldr r4, _0800AEC4 @ =gUnknown_8234610
|
|
||||||
str r4, [sp]
|
|
||||||
str r5, [sp, 0x4]
|
|
||||||
ldr r0, _0800AEC8 @ =gUnknown_841DEF0
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
movs r2, 0x2
|
|
||||||
movs r3, 0x5
|
|
||||||
bl AddTextPrinterParameterized3
|
|
||||||
str r4, [sp]
|
|
||||||
str r5, [sp, 0x4]
|
|
||||||
ldr r0, _0800AECC @ =gUnknown_841DF05
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0x2
|
|
||||||
movs r1, 0x3
|
|
||||||
movs r2, 0x2
|
|
||||||
movs r3, 0x2
|
|
||||||
bl AddTextPrinterParameterized3
|
|
||||||
movs r0, 0
|
|
||||||
bl PutWindowTilemap
|
|
||||||
movs r0, 0x2
|
|
||||||
bl PutWindowTilemap
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
bl CopyWindowToVram
|
|
||||||
movs r0, 0x2
|
|
||||||
movs r1, 0x3
|
|
||||||
bl CopyWindowToVram
|
|
||||||
movs r0, 0
|
|
||||||
bl ShowBg
|
|
||||||
movs r0, 0x1
|
|
||||||
bl ShowBg
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800AEB8: .4byte gWirelessLinkDisplay4bpp
|
|
||||||
_0800AEBC: .4byte gWirelessLinkDisplayBin
|
|
||||||
_0800AEC0: .4byte gWirelessLinkDisplayPal
|
|
||||||
_0800AEC4: .4byte gUnknown_8234610
|
|
||||||
_0800AEC8: .4byte gUnknown_841DEF0
|
|
||||||
_0800AECC: .4byte gUnknown_841DF05
|
|
||||||
thumb_func_end sub_800AE1C
|
|
||||||
|
|
||||||
thumb_func_start sub_800AED0
|
|
||||||
sub_800AED0: @ 800AED0
|
|
||||||
push {lr}
|
|
||||||
sub sp, 0xC
|
|
||||||
movs r0, 0x1
|
|
||||||
movs r1, 0
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
movs r0, 0x2
|
|
||||||
movs r1, 0
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
ldr r0, _0800AF24 @ =gUnknown_8234610
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
ldr r0, _0800AF28 @ =gUnknown_841DE9D
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0x1
|
|
||||||
movs r1, 0x3
|
|
||||||
movs r2, 0x2
|
|
||||||
movs r3, 0
|
|
||||||
bl AddTextPrinterParameterized3
|
|
||||||
movs r0, 0x1
|
|
||||||
bl PutWindowTilemap
|
|
||||||
movs r0, 0x2
|
|
||||||
bl PutWindowTilemap
|
|
||||||
movs r0, 0x1
|
|
||||||
movs r1, 0
|
|
||||||
bl CopyWindowToVram
|
|
||||||
movs r0, 0x2
|
|
||||||
movs r1, 0x3
|
|
||||||
bl CopyWindowToVram
|
|
||||||
movs r0, 0
|
|
||||||
bl ShowBg
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800AF24: .4byte gUnknown_8234610
|
|
||||||
_0800AF28: .4byte gUnknown_841DE9D
|
|
||||||
thumb_func_end sub_800AED0
|
|
||||||
|
|
||||||
thumb_func_start sub_800AF2C
|
|
||||||
sub_800AF2C: @ 800AF2C
|
|
||||||
push {r4,lr}
|
|
||||||
sub sp, 0xC
|
|
||||||
ldr r0, _0800AF4C @ =gMain
|
|
||||||
movs r1, 0x87
|
|
||||||
lsls r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0x3C
|
|
||||||
beq _0800AF72
|
|
||||||
cmp r0, 0x3C
|
|
||||||
bgt _0800AF50
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800AF5A
|
|
||||||
cmp r0, 0x1E
|
|
||||||
beq _0800AF72
|
|
||||||
b _0800AFC4
|
|
||||||
.align 2, 0
|
|
||||||
_0800AF4C: .4byte gMain
|
|
||||||
_0800AF50:
|
|
||||||
cmp r0, 0x5A
|
|
||||||
beq _0800AF72
|
|
||||||
cmp r0, 0x82
|
|
||||||
beq _0800AF7A
|
|
||||||
b _0800AFC4
|
|
||||||
_0800AF5A:
|
|
||||||
ldr r0, _0800AF68 @ =sLinkErrorBuffer
|
|
||||||
ldrb r0, [r0, 0x6]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800AF6C
|
|
||||||
bl sub_800AE1C
|
|
||||||
b _0800AFC4
|
|
||||||
.align 2, 0
|
|
||||||
_0800AF68: .4byte sLinkErrorBuffer
|
|
||||||
_0800AF6C:
|
|
||||||
bl sub_800AED0
|
|
||||||
b _0800AFC4
|
|
||||||
_0800AF72:
|
|
||||||
movs r0, 0x16
|
|
||||||
bl PlaySE
|
|
||||||
b _0800AFC4
|
|
||||||
_0800AF7A:
|
|
||||||
ldr r0, _0800AF9C @ =gWirelessCommType
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0x2
|
|
||||||
bne _0800AFA8
|
|
||||||
ldr r0, _0800AFA0 @ =gUnknown_8234610
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
ldr r0, _0800AFA4 @ =gUnknown_841DF6B
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
movs r2, 0x2
|
|
||||||
movs r3, 0x14
|
|
||||||
bl AddTextPrinterParameterized3
|
|
||||||
b _0800AFC4
|
|
||||||
.align 2, 0
|
|
||||||
_0800AF9C: .4byte gWirelessCommType
|
|
||||||
_0800AFA0: .4byte gUnknown_8234610
|
|
||||||
_0800AFA4: .4byte gUnknown_841DF6B
|
|
||||||
_0800AFA8:
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0800AFC4
|
|
||||||
ldr r0, _0800AFFC @ =gUnknown_8234610
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
ldr r0, _0800B000 @ =gUnknown_841DF4C
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x3
|
|
||||||
movs r2, 0x2
|
|
||||||
movs r3, 0x14
|
|
||||||
bl AddTextPrinterParameterized3
|
|
||||||
_0800AFC4:
|
|
||||||
ldr r0, _0800B004 @ =gMain
|
|
||||||
movs r2, 0x87
|
|
||||||
lsls r2, 3
|
|
||||||
adds r1, r0, r2
|
|
||||||
ldrb r1, [r1]
|
|
||||||
cmp r1, 0xA0
|
|
||||||
bne _0800B03C
|
|
||||||
ldr r4, _0800B008 @ =gWirelessCommType
|
|
||||||
ldrb r2, [r4]
|
|
||||||
cmp r2, 0x1
|
|
||||||
bne _0800B010
|
|
||||||
ldrh r0, [r0, 0x2E]
|
|
||||||
ands r2, r0
|
|
||||||
cmp r2, 0
|
|
||||||
beq _0800B02E
|
|
||||||
bl sub_812B484
|
|
||||||
movs r0, 0x15
|
|
||||||
bl PlaySE
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r4]
|
|
||||||
ldr r1, _0800B00C @ =sLinkErrorBuffer
|
|
||||||
movs r0, 0
|
|
||||||
strb r0, [r1, 0x6]
|
|
||||||
bl sub_8079B7C
|
|
||||||
b _0800B02E
|
|
||||||
.align 2, 0
|
|
||||||
_0800AFFC: .4byte gUnknown_8234610
|
|
||||||
_0800B000: .4byte gUnknown_841DF4C
|
|
||||||
_0800B004: .4byte gMain
|
|
||||||
_0800B008: .4byte gWirelessCommType
|
|
||||||
_0800B00C: .4byte sLinkErrorBuffer
|
|
||||||
_0800B010:
|
|
||||||
cmp r2, 0x2
|
|
||||||
bne _0800B02E
|
|
||||||
ldrh r1, [r0, 0x2E]
|
|
||||||
movs r0, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800B02E
|
|
||||||
bl sub_812B484
|
|
||||||
bl rfu_REQ_stopMode
|
|
||||||
bl rfu_waitREQComplete
|
|
||||||
bl DoSoftReset
|
|
||||||
_0800B02E:
|
|
||||||
ldr r0, _0800B050 @ =gMain
|
|
||||||
movs r2, 0x87
|
|
||||||
lsls r2, 3
|
|
||||||
adds r1, r0, r2
|
|
||||||
ldrb r1, [r1]
|
|
||||||
cmp r1, 0xA0
|
|
||||||
beq _0800B048
|
|
||||||
_0800B03C:
|
|
||||||
movs r2, 0x87
|
|
||||||
lsls r2, 3
|
|
||||||
adds r1, r0, r2
|
|
||||||
ldrb r0, [r1]
|
|
||||||
adds r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
_0800B048:
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B050: .4byte gMain
|
|
||||||
thumb_func_end sub_800AF2C
|
|
||||||
|
|
||||||
thumb_func_start GetSioMultiSI
|
|
||||||
GetSioMultiSI: @ 800B054
|
|
||||||
ldr r0, _0800B060 @ =0x04000128
|
|
||||||
ldrh r0, [r0]
|
|
||||||
lsrs r0, 2
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_0800B060: .4byte 0x04000128
|
|
||||||
thumb_func_end GetSioMultiSI
|
|
||||||
|
|
||||||
thumb_func_start IsSioMultiMaster
|
|
||||||
IsSioMultiMaster: @ 800B064
|
|
||||||
push {lr}
|
|
||||||
movs r3, 0
|
|
||||||
ldr r2, _0800B088 @ =0x04000128
|
|
||||||
ldrh r1, [r2]
|
|
||||||
movs r0, 0x8
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800B080
|
|
||||||
ldrh r1, [r2]
|
|
||||||
movs r0, 0x4
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800B080
|
|
||||||
movs r3, 0x1
|
|
||||||
_0800B080:
|
|
||||||
adds r0, r3, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.align 2, 0
|
|
||||||
_0800B088: .4byte 0x04000128
|
|
||||||
thumb_func_end IsSioMultiMaster
|
|
||||||
|
|
||||||
thumb_func_start IsLinkConnectionEstablished
|
|
||||||
IsLinkConnectionEstablished: @ 800B08C
|
|
||||||
ldr r0, _0800B098 @ =gLinkStatus
|
|
||||||
ldr r0, [r0]
|
|
||||||
lsrs r0, 6
|
|
||||||
movs r1, 0x1
|
|
||||||
ands r0, r1
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_0800B098: .4byte gLinkStatus
|
|
||||||
thumb_func_end IsLinkConnectionEstablished
|
|
||||||
|
|
||||||
thumb_func_start SetSuppressLinkErrorMessage
|
|
||||||
SetSuppressLinkErrorMessage: @ 800B09C
|
|
||||||
ldr r1, _0800B0A4 @ =gSuppressLinkErrorMessage
|
|
||||||
strb r0, [r1]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_0800B0A4: .4byte gSuppressLinkErrorMessage
|
|
||||||
thumb_func_end SetSuppressLinkErrorMessage
|
|
||||||
|
|
||||||
thumb_func_start HasLinkErrorOccurred
|
|
||||||
HasLinkErrorOccurred: @ 800B0A8
|
|
||||||
ldr r0, _0800B0B0 @ =gLinkErrorOccurred
|
|
||||||
ldrb r0, [r0]
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_0800B0B0: .4byte gLinkErrorOccurred
|
|
||||||
thumb_func_end HasLinkErrorOccurred
|
|
||||||
|
|
||||||
thumb_func_start sub_800B0B4
|
|
||||||
sub_800B0B4: @ 800B0B4
|
|
||||||
push {r4-r6,lr}
|
|
||||||
bl InitLocalLinkPlayer
|
|
||||||
ldr r1, _0800B100 @ =gLocalLinkPlayerBlock
|
|
||||||
adds r2, r1, 0
|
|
||||||
adds r2, 0x10
|
|
||||||
ldr r0, _0800B104 @ =gLocalLinkPlayer
|
|
||||||
ldm r0!, {r3-r5}
|
|
||||||
stm r2!, {r3-r5}
|
|
||||||
ldm r0!, {r3,r4,r6}
|
|
||||||
stm r2!, {r3,r4,r6}
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r2]
|
|
||||||
ldr r3, _0800B108 @ =gASCIIGameFreakInc
|
|
||||||
adds r2, r1, 0
|
|
||||||
adds r0, r3, 0
|
|
||||||
ldm r0!, {r4-r6}
|
|
||||||
stm r2!, {r4-r6}
|
|
||||||
ldrh r4, [r0]
|
|
||||||
strh r4, [r2]
|
|
||||||
ldrb r0, [r0, 0x2]
|
|
||||||
strb r0, [r2, 0x2]
|
|
||||||
adds r0, r1, 0
|
|
||||||
adds r0, 0x2C
|
|
||||||
ldm r3!, {r2,r5,r6}
|
|
||||||
stm r0!, {r2,r5,r6}
|
|
||||||
ldrh r2, [r3]
|
|
||||||
strh r2, [r0]
|
|
||||||
ldrb r2, [r3, 0x2]
|
|
||||||
strb r2, [r0, 0x2]
|
|
||||||
ldr r0, _0800B10C @ =gBlockSendBuffer
|
|
||||||
movs r2, 0x3C
|
|
||||||
bl memcpy
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B100: .4byte gLocalLinkPlayerBlock
|
|
||||||
_0800B104: .4byte gLocalLinkPlayer
|
|
||||||
_0800B108: .4byte gASCIIGameFreakInc
|
|
||||||
_0800B10C: .4byte gBlockSendBuffer
|
|
||||||
thumb_func_end sub_800B0B4
|
|
||||||
|
|
||||||
thumb_func_start sub_800B110
|
|
||||||
sub_800B110: @ 800B110
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r2, r0, 8
|
|
||||||
ldr r1, _0800B168 @ =gBlockRecvBuffer
|
|
||||||
adds r4, r2, r1
|
|
||||||
lsls r2, r0, 3
|
|
||||||
subs r2, r0
|
|
||||||
lsls r2, 2
|
|
||||||
ldr r0, _0800B16C @ =gLinkPlayers
|
|
||||||
adds r2, r0
|
|
||||||
adds r1, r2, 0
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x10
|
|
||||||
ldm r0!, {r3,r5,r6}
|
|
||||||
stm r1!, {r3,r5,r6}
|
|
||||||
ldm r0!, {r3,r5,r6}
|
|
||||||
stm r1!, {r3,r5,r6}
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r1]
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl sub_800B284
|
|
||||||
ldr r5, _0800B170 @ =gASCIIGameFreakInc
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl strcmp
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800B15A
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x2C
|
|
||||||
adds r1, r5, 0
|
|
||||||
bl strcmp
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800B160
|
|
||||||
_0800B15A:
|
|
||||||
ldr r0, _0800B174 @ =CB2_LinkError
|
|
||||||
bl SetMainCallback2
|
|
||||||
_0800B160:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B168: .4byte gBlockRecvBuffer
|
|
||||||
_0800B16C: .4byte gLinkPlayers
|
|
||||||
_0800B170: .4byte gASCIIGameFreakInc
|
|
||||||
_0800B174: .4byte CB2_LinkError
|
|
||||||
thumb_func_end sub_800B110
|
|
||||||
|
|
||||||
thumb_func_start HandleLinkConnection
|
|
||||||
HandleLinkConnection: @ 800B178
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r0, _0800B1B0 @ =gWirelessCommType
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800B1C8
|
|
||||||
ldr r0, _0800B1B4 @ =gShouldAdvanceLinkState
|
|
||||||
ldr r1, _0800B1B8 @ =gSendCmd
|
|
||||||
ldr r2, _0800B1BC @ =gRecvCmds
|
|
||||||
bl LinkMain1
|
|
||||||
ldr r4, _0800B1C0 @ =gLinkStatus
|
|
||||||
str r0, [r4]
|
|
||||||
ldr r0, _0800B1C4 @ =gMain + 0x2C
|
|
||||||
bl LinkMain2
|
|
||||||
ldr r0, [r4]
|
|
||||||
movs r1, 0x80
|
|
||||||
lsls r1, 1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800B1EC
|
|
||||||
bl sub_8058318
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0800B1EC
|
|
||||||
_0800B1AA:
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0800B1EE
|
|
||||||
.align 2, 0
|
|
||||||
_0800B1B0: .4byte gWirelessCommType
|
|
||||||
_0800B1B4: .4byte gShouldAdvanceLinkState
|
|
||||||
_0800B1B8: .4byte gSendCmd
|
|
||||||
_0800B1BC: .4byte gRecvCmds
|
|
||||||
_0800B1C0: .4byte gLinkStatus
|
|
||||||
_0800B1C4: .4byte gMain + 0x2C
|
|
||||||
_0800B1C8:
|
|
||||||
bl sub_80FAE94
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl sub_80FAEF0
|
|
||||||
adds r5, r0, 0
|
|
||||||
bl sub_8058318
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _0800B1EC
|
|
||||||
cmp r4, 0x1
|
|
||||||
beq _0800B1AA
|
|
||||||
bl sub_80F90DC
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800B1AA
|
|
||||||
cmp r5, 0
|
|
||||||
bne _0800B1AA
|
|
||||||
_0800B1EC:
|
|
||||||
movs r0, 0
|
|
||||||
_0800B1EE:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end HandleLinkConnection
|
|
||||||
|
|
||||||
thumb_func_start sub_800B1F4
|
|
||||||
sub_800B1F4: @ 800B1F4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0800B208 @ =gReceivedRemoteLinkPlayers
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800B204
|
|
||||||
ldr r1, _0800B20C @ =gWirelessCommType
|
|
||||||
movs r0, 0x1
|
|
||||||
strb r0, [r1]
|
|
||||||
_0800B204:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B208: .4byte gReceivedRemoteLinkPlayers
|
|
||||||
_0800B20C: .4byte gWirelessCommType
|
|
||||||
thumb_func_end sub_800B1F4
|
|
||||||
|
|
||||||
thumb_func_start sub_800B210
|
|
||||||
sub_800B210: @ 800B210
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0800B224 @ =gReceivedRemoteLinkPlayers
|
|
||||||
ldrb r1, [r0]
|
|
||||||
cmp r1, 0
|
|
||||||
bne _0800B21E
|
|
||||||
ldr r0, _0800B228 @ =gWirelessCommType
|
|
||||||
strb r1, [r0]
|
|
||||||
_0800B21E:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B224: .4byte gReceivedRemoteLinkPlayers
|
|
||||||
_0800B228: .4byte gWirelessCommType
|
|
||||||
thumb_func_end sub_800B210
|
|
||||||
|
|
||||||
thumb_func_start sub_800B22C
|
|
||||||
sub_800B22C: @ 800B22C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0800B240 @ =gReceivedRemoteLinkPlayers
|
|
||||||
ldrb r1, [r0]
|
|
||||||
cmp r1, 0
|
|
||||||
bne _0800B23A
|
|
||||||
ldr r0, _0800B244 @ =gWirelessCommType
|
|
||||||
strb r1, [r0]
|
|
||||||
_0800B23A:
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B240: .4byte gReceivedRemoteLinkPlayers
|
|
||||||
_0800B244: .4byte gWirelessCommType
|
|
||||||
thumb_func_end sub_800B22C
|
|
||||||
|
|
||||||
thumb_func_start sub_800B248
|
|
||||||
sub_800B248: @ 800B248
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0800B25C @ =gWirelessCommType
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800B268
|
|
||||||
ldr r0, _0800B260 @ =gLink
|
|
||||||
ldr r1, _0800B264 @ =0x00000fbd
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r0, [r0]
|
|
||||||
b _0800B26C
|
|
||||||
.align 2, 0
|
|
||||||
_0800B25C: .4byte gWirelessCommType
|
|
||||||
_0800B260: .4byte gLink
|
|
||||||
_0800B264: .4byte 0x00000fbd
|
|
||||||
_0800B268:
|
|
||||||
bl sub_80FC460
|
|
||||||
_0800B26C:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_800B248
|
|
||||||
|
|
||||||
thumb_func_start sub_800B270
|
|
||||||
sub_800B270: @ 800B270
|
|
||||||
push {lr}
|
|
||||||
bl sub_800B248
|
|
||||||
cmp r0, 0x2
|
|
||||||
bhi _0800B27E
|
|
||||||
movs r0, 0
|
|
||||||
b _0800B280
|
|
||||||
_0800B27E:
|
|
||||||
movs r0, 0x1
|
|
||||||
_0800B280:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_800B270
|
|
||||||
|
|
||||||
thumb_func_start sub_800B284
|
|
||||||
sub_800B284: @ 800B284
|
|
||||||
push {lr}
|
|
||||||
ldrb r1, [r0, 0x10]
|
|
||||||
strb r1, [r0, 0x12]
|
|
||||||
adds r2, r0, 0
|
|
||||||
adds r2, 0x8
|
|
||||||
ldrb r1, [r0, 0x1A]
|
|
||||||
adds r0, r2, 0
|
|
||||||
bl ConvertInternationalString
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end sub_800B284
|
|
||||||
|
|
||||||
thumb_func_start DisableSerial
|
|
||||||
DisableSerial: @ 800B29C
|
|
||||||
push {lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
movs r0, 0xC0
|
|
||||||
bl DisableInterrupts
|
|
||||||
ldr r1, _0800B2DC @ =0x04000128
|
|
||||||
movs r2, 0x80
|
|
||||||
lsls r2, 6
|
|
||||||
adds r0, r2, 0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r0, _0800B2E0 @ =0x0400010e
|
|
||||||
movs r2, 0
|
|
||||||
strh r2, [r0]
|
|
||||||
adds r1, 0xDA
|
|
||||||
movs r0, 0xC0
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r0, _0800B2E4 @ =0x0400012a
|
|
||||||
strh r2, [r0]
|
|
||||||
ldr r2, _0800B2E8 @ =0x04000120
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0
|
|
||||||
str r0, [r2]
|
|
||||||
str r1, [r2, 0x4]
|
|
||||||
str r0, [sp]
|
|
||||||
ldr r1, _0800B2EC @ =gLink
|
|
||||||
ldr r2, _0800B2F0 @ =0x050003f0
|
|
||||||
mov r0, sp
|
|
||||||
bl CpuSet
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B2DC: .4byte 0x04000128
|
|
||||||
_0800B2E0: .4byte 0x0400010e
|
|
||||||
_0800B2E4: .4byte 0x0400012a
|
|
||||||
_0800B2E8: .4byte 0x04000120
|
|
||||||
_0800B2EC: .4byte gLink
|
|
||||||
_0800B2F0: .4byte 0x050003f0
|
|
||||||
thumb_func_end DisableSerial
|
|
||||||
|
|
||||||
thumb_func_start EnableSerial
|
|
||||||
EnableSerial: @ 800B2F4
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
movs r0, 0xC0
|
|
||||||
bl DisableInterrupts
|
|
||||||
ldr r0, _0800B354 @ =0x04000134
|
|
||||||
movs r4, 0
|
|
||||||
strh r4, [r0]
|
|
||||||
ldr r2, _0800B358 @ =0x04000128
|
|
||||||
movs r1, 0x80
|
|
||||||
lsls r1, 6
|
|
||||||
adds r0, r1, 0
|
|
||||||
strh r0, [r2]
|
|
||||||
ldrh r0, [r2]
|
|
||||||
ldr r3, _0800B35C @ =0x00004003
|
|
||||||
adds r1, r3, 0
|
|
||||||
orrs r0, r1
|
|
||||||
strh r0, [r2]
|
|
||||||
movs r0, 0x80
|
|
||||||
bl EnableInterrupts
|
|
||||||
ldr r0, _0800B360 @ =0x0400012a
|
|
||||||
strh r4, [r0]
|
|
||||||
movs r5, 0
|
|
||||||
str r5, [sp]
|
|
||||||
ldr r1, _0800B364 @ =gLink
|
|
||||||
ldr r2, _0800B368 @ =0x050003f0
|
|
||||||
mov r0, sp
|
|
||||||
bl CpuSet
|
|
||||||
ldr r0, _0800B36C @ =sNumVBlanksWithoutSerialIntr
|
|
||||||
strb r4, [r0]
|
|
||||||
ldr r0, _0800B370 @ =sSendNonzeroCheck
|
|
||||||
strh r5, [r0]
|
|
||||||
ldr r0, _0800B374 @ =sRecvNonzeroCheck
|
|
||||||
strh r5, [r0]
|
|
||||||
ldr r0, _0800B378 @ =sChecksumAvailable
|
|
||||||
strb r4, [r0]
|
|
||||||
ldr r0, _0800B37C @ =sHandshakePlayerCount
|
|
||||||
strb r4, [r0]
|
|
||||||
ldr r0, _0800B380 @ =gLastSendQueueCount
|
|
||||||
strb r4, [r0]
|
|
||||||
ldr r0, _0800B384 @ =gLastRecvQueueCount
|
|
||||||
strb r4, [r0]
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0800B354: .4byte 0x04000134
|
|
||||||
_0800B358: .4byte 0x04000128
|
|
||||||
_0800B35C: .4byte 0x00004003
|
|
||||||
_0800B360: .4byte 0x0400012a
|
|
||||||
_0800B364: .4byte gLink
|
|
||||||
_0800B368: .4byte 0x050003f0
|
|
||||||
_0800B36C: .4byte sNumVBlanksWithoutSerialIntr
|
|
||||||
_0800B370: .4byte sSendNonzeroCheck
|
|
||||||
_0800B374: .4byte sRecvNonzeroCheck
|
|
||||||
_0800B378: .4byte sChecksumAvailable
|
|
||||||
_0800B37C: .4byte sHandshakePlayerCount
|
|
||||||
_0800B380: .4byte gLastSendQueueCount
|
|
||||||
_0800B384: .4byte gLastRecvQueueCount
|
|
||||||
thumb_func_end EnableSerial
|
|
||||||
|
|
||||||
thumb_func_start ResetSerial
|
|
||||||
ResetSerial: @ 800B388
|
|
||||||
push {lr}
|
|
||||||
bl EnableSerial
|
|
||||||
bl DisableSerial
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
thumb_func_end ResetSerial
|
|
||||||
|
|
||||||
thumb_func_start LinkMain1
|
thumb_func_start LinkMain1
|
||||||
LinkMain1: @ 800B398
|
LinkMain1: @ 800B398
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
|||||||
+7
-7
@@ -1360,8 +1360,8 @@ _080F90D4: .4byte 0x000008d4
|
|||||||
_080F90D8: .4byte 0x000008f2
|
_080F90D8: .4byte 0x000008f2
|
||||||
thumb_func_end sub_80F906C
|
thumb_func_end sub_80F906C
|
||||||
|
|
||||||
thumb_func_start sub_80F90DC
|
thumb_func_start IsRfuRecvQueueEmpty
|
||||||
sub_80F90DC: @ 80F90DC
|
IsRfuRecvQueueEmpty: @ 80F90DC
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
ldr r0, _080F90EC @ =gUnknown_3007460
|
ldr r0, _080F90EC @ =gUnknown_3007460
|
||||||
ldr r0, [r0]
|
ldr r0, [r0]
|
||||||
@@ -1398,7 +1398,7 @@ _080F9110:
|
|||||||
bx r1
|
bx r1
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080F9118: .4byte gRecvCmds
|
_080F9118: .4byte gRecvCmds
|
||||||
thumb_func_end sub_80F90DC
|
thumb_func_end IsRfuRecvQueueEmpty
|
||||||
|
|
||||||
thumb_func_start sub_80F911C
|
thumb_func_start sub_80F911C
|
||||||
sub_80F911C: @ 80F911C
|
sub_80F911C: @ 80F911C
|
||||||
@@ -2029,7 +2029,7 @@ _080F9618:
|
|||||||
cmp r1, 0x6
|
cmp r1, 0x6
|
||||||
bls _080F9618
|
bls _080F9618
|
||||||
_080F9628:
|
_080F9628:
|
||||||
bl sub_80F90DC
|
bl IsRfuRecvQueueEmpty
|
||||||
add sp, 0x58
|
add sp, 0x58
|
||||||
pop {r3}
|
pop {r3}
|
||||||
mov r8, r3
|
mov r8, r3
|
||||||
@@ -8105,8 +8105,8 @@ _080FC458: .4byte gUnknown_3005450
|
|||||||
_080FC45C: .4byte 0x000008d2
|
_080FC45C: .4byte 0x000008d2
|
||||||
thumb_func_end sub_80FC44C
|
thumb_func_end sub_80FC44C
|
||||||
|
|
||||||
thumb_func_start sub_80FC460
|
thumb_func_start GetRfuRecvQueueLength
|
||||||
sub_80FC460: @ 80FC460
|
GetRfuRecvQueueLength: @ 80FC460
|
||||||
ldr r0, _080FC46C @ =gUnknown_3005450
|
ldr r0, _080FC46C @ =gUnknown_3005450
|
||||||
ldr r1, _080FC470 @ =0x0000069e
|
ldr r1, _080FC470 @ =0x0000069e
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
@@ -8115,7 +8115,7 @@ sub_80FC460: @ 80FC460
|
|||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080FC46C: .4byte gUnknown_3005450
|
_080FC46C: .4byte gUnknown_3005450
|
||||||
_080FC470: .4byte 0x0000069e
|
_080FC470: .4byte 0x0000069e
|
||||||
thumb_func_end sub_80FC460
|
thumb_func_end GetRfuRecvQueueLength
|
||||||
|
|
||||||
thumb_func_start nullsub_89
|
thumb_func_start nullsub_89
|
||||||
nullsub_89: @ 80FC474
|
nullsub_89: @ 80FC474
|
||||||
|
|||||||
+5
-5
@@ -5640,7 +5640,7 @@ c1_link_related: @ 8057884
|
|||||||
ldrb r0, [r0]
|
ldrb r0, [r0]
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _0805789E
|
beq _0805789E
|
||||||
bl sub_80F90DC
|
bl IsRfuRecvQueueEmpty
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
beq _0805789E
|
beq _0805789E
|
||||||
bl IsSendingKeysToLink
|
bl IsSendingKeysToLink
|
||||||
@@ -6289,7 +6289,7 @@ sub_8057D5C: @ 8057D5C
|
|||||||
movs r0, 0x11
|
movs r0, 0x11
|
||||||
b _08057D92
|
b _08057D92
|
||||||
_08057D70:
|
_08057D70:
|
||||||
bl sub_800B248
|
bl GetLinkRecvQueueLength
|
||||||
cmp r0, 0x4
|
cmp r0, 0x4
|
||||||
bls _08057D7C
|
bls _08057D7C
|
||||||
movs r0, 0x1B
|
movs r0, 0x1B
|
||||||
@@ -6344,7 +6344,7 @@ _08057DC4: .4byte sub_8057D98
|
|||||||
thumb_func_start sub_8057DC8
|
thumb_func_start sub_8057DC8
|
||||||
sub_8057DC8: @ 8057DC8
|
sub_8057DC8: @ 8057DC8
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
bl sub_800B248
|
bl GetLinkRecvQueueLength
|
||||||
movs r4, 0x11
|
movs r4, 0x11
|
||||||
cmp r0, 0x2
|
cmp r0, 0x2
|
||||||
bhi _08057DE0
|
bhi _08057DE0
|
||||||
@@ -6982,7 +6982,7 @@ sub_8058244: @ 8058244
|
|||||||
movs r0, 0
|
movs r0, 0
|
||||||
b _0805826C
|
b _0805826C
|
||||||
_08058252:
|
_08058252:
|
||||||
bl sub_800B248
|
bl GetLinkRecvQueueLength
|
||||||
cmp r0, 0x2
|
cmp r0, 0x2
|
||||||
bls _08058264
|
bls _08058264
|
||||||
ldr r1, _08058260 @ =gUnknown_3000E88
|
ldr r1, _08058260 @ =gUnknown_3000E88
|
||||||
@@ -7006,7 +7006,7 @@ _08058270: .4byte gUnknown_3000E88
|
|||||||
thumb_func_start sub_8058274
|
thumb_func_start sub_8058274
|
||||||
sub_8058274: @ 8058274
|
sub_8058274: @ 8058274
|
||||||
push {lr}
|
push {lr}
|
||||||
bl sub_800B248
|
bl GetLinkRecvQueueLength
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bls _080582D8
|
bls _080582D8
|
||||||
bl IsUpdateLinkStateCBActive
|
bl IsUpdateLinkStateCBActive
|
||||||
|
|||||||
BIN
Binary file not shown.
+3
-9
@@ -7,15 +7,9 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
|
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
gUnknown_82345E8:: @ 82345E8
|
.string "$"
|
||||||
.incbin "baserom.gba", 0x2345E8, 0x8
|
.string "\n$"
|
||||||
|
.align 2, 0
|
||||||
gUnknown_82345F0:: @ 82345F0
|
|
||||||
.incbin "baserom.gba", 0x2345F0, 0x20
|
|
||||||
|
|
||||||
gUnknown_8234610:: @ 8234610
|
|
||||||
.incbin "baserom.gba", 0x234610, 0x8
|
|
||||||
|
|
||||||
gUnknown_8234618:: @ 8234618
|
gUnknown_8234618:: @ 8234618
|
||||||
.incbin "baserom.gba", 0x234618, 0x8
|
.incbin "baserom.gba", 0x234618, 0x8
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -3714,22 +3714,22 @@ gUnknown_841DE9B:: @ 841DE9B
|
|||||||
gUnknown_841DE9C:: @ 841DE9C
|
gUnknown_841DE9C:: @ 841DE9C
|
||||||
.string "$"
|
.string "$"
|
||||||
|
|
||||||
gUnknown_841DE9D:: @ 841DE9D
|
gText_CommErrorCheckConnections:: @ 841DE9D
|
||||||
.string "Communication error…\n"
|
.string "Communication error…\n"
|
||||||
.string "Please check all connections,\n"
|
.string "Please check all connections,\n"
|
||||||
.string "then turn the power OFF and ON.$"
|
.string "then turn the power OFF and ON.$"
|
||||||
|
|
||||||
gUnknown_841DEF0:: @ 841DEF0
|
gText_CommErrorEllipsis:: @ 841DEF0
|
||||||
.string "Communication error…$"
|
.string "Communication error…$"
|
||||||
|
|
||||||
gUnknown_841DF05:: @ 841DF05
|
gText_MoveCloserToLinkPartner:: @ 841DF05
|
||||||
.string "Move closer to your link partner(s).\n"
|
.string "Move closer to your link partner(s).\n"
|
||||||
.string "Avoid obstacles between partners.$"
|
.string "Avoid obstacles between partners.$"
|
||||||
|
|
||||||
gUnknown_841DF4C:: @ 841DF4C
|
gText_ABtnRegistrationCounter:: @ 841DF4C
|
||||||
.string "A Button: Registration Counter$"
|
.string "A Button: Registration Counter$"
|
||||||
|
|
||||||
gUnknown_841DF6B:: @ 841DF6B
|
gText_ABtnTitleScreen:: @ 841DF6B
|
||||||
.string "A Button: Title Screen$"
|
.string "A Button: Title Screen$"
|
||||||
|
|
||||||
gUnknown_841DF82:: @ 841DF82
|
gUnknown_841DF82:: @ 841DF82
|
||||||
|
|||||||
+1
-1
@@ -215,7 +215,7 @@ bool8 IsLinkConnectionEstablished(void);
|
|||||||
void SetSuppressLinkErrorMessage(bool8);
|
void SetSuppressLinkErrorMessage(bool8);
|
||||||
bool8 HasLinkErrorOccurred(void);
|
bool8 HasLinkErrorOccurred(void);
|
||||||
void ResetSerial(void);
|
void ResetSerial(void);
|
||||||
u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
|
u32 LinkMain1(u8 *, u16 *, u16[MAX_RFU_PLAYERS][CMD_LENGTH]);
|
||||||
void RFUVSync(void);
|
void RFUVSync(void);
|
||||||
void Timer3Intr(void);
|
void Timer3Intr(void);
|
||||||
void SerialCB(void);
|
void SerialCB(void);
|
||||||
|
|||||||
@@ -33,5 +33,10 @@ u8 Rfu_GetBlockReceivedStatus(void);
|
|||||||
void Rfu_SetBlockReceivedFlag(u8 who);
|
void Rfu_SetBlockReceivedFlag(u8 who);
|
||||||
void Rfu_ResetBlockReceivedFlag(u8 who);
|
void Rfu_ResetBlockReceivedFlag(u8 who);
|
||||||
bool8 Rfu_IsMaster(void);
|
bool8 Rfu_IsMaster(void);
|
||||||
|
void sub_80F85F8(void);
|
||||||
|
bool32 sub_80FAE94(void);
|
||||||
|
bool32 sub_80FAEF0(void);
|
||||||
|
bool32 IsRfuRecvQueueEmpty(void);
|
||||||
|
u32 GetRfuRecvQueueLength(void);
|
||||||
|
|
||||||
#endif //GUARD_LINK_RFU_H
|
#endif //GUARD_LINK_RFU_H
|
||||||
|
|||||||
@@ -142,4 +142,6 @@ void ResetGameStats(void);
|
|||||||
void Overworld_CreditsMainCB(void);
|
void Overworld_CreditsMainCB(void);
|
||||||
bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8);
|
bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8);
|
||||||
|
|
||||||
|
bool32 sub_8058318(void);
|
||||||
|
|
||||||
#endif //GUARD_OVERWORLD_H
|
#endif //GUARD_OVERWORLD_H
|
||||||
|
|||||||
@@ -329,4 +329,11 @@ extern const u8 gText_ItemfinderResponding[];
|
|||||||
extern const u8 gText_ItemfinderShakingWildly[];
|
extern const u8 gText_ItemfinderShakingWildly[];
|
||||||
extern const u8 gText_NopeTheresNoResponse[];
|
extern const u8 gText_NopeTheresNoResponse[];
|
||||||
|
|
||||||
|
// link
|
||||||
|
extern const u8 gText_CommErrorEllipsis[];
|
||||||
|
extern const u8 gText_MoveCloserToLinkPartner[];
|
||||||
|
extern const u8 gText_CommErrorCheckConnections[];
|
||||||
|
extern const u8 gText_ABtnTitleScreen[];
|
||||||
|
extern const u8 gText_ABtnRegistrationCounter[];
|
||||||
|
|
||||||
#endif //GUARD_STRINGS_H
|
#endif //GUARD_STRINGS_H
|
||||||
|
|||||||
+377
@@ -1,5 +1,8 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
|
#include "bg.h"
|
||||||
|
#include "m4a.h"
|
||||||
|
#include "scanline_effect.h"
|
||||||
#include "bg_regs.h"
|
#include "bg_regs.h"
|
||||||
#include "gpu_regs.h"
|
#include "gpu_regs.h"
|
||||||
#include "decompress.h"
|
#include "decompress.h"
|
||||||
@@ -15,8 +18,19 @@
|
|||||||
#include "string_util.h"
|
#include "string_util.h"
|
||||||
#include "item_menu.h"
|
#include "item_menu.h"
|
||||||
#include "trade.h"
|
#include "trade.h"
|
||||||
|
#include "text.h"
|
||||||
|
#include "sound.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "overworld.h"
|
||||||
|
#include "new_menu_helpers.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
|
#include "window.h"
|
||||||
|
#include "graphics.h"
|
||||||
|
#include "strings.h"
|
||||||
|
#include "help_system.h"
|
||||||
|
#include "reset_save_heap.h"
|
||||||
#include "constants/battle.h"
|
#include "constants/battle.h"
|
||||||
|
#include "constants/songs.h"
|
||||||
|
|
||||||
extern u16 gHeldKeyCodeToSend;
|
extern u16 gHeldKeyCodeToSend;
|
||||||
|
|
||||||
@@ -136,6 +150,7 @@ void sub_800AB38(void);
|
|||||||
void sub_800ABD4(void);
|
void sub_800ABD4(void);
|
||||||
void sub_800AC00(void);
|
void sub_800AC00(void);
|
||||||
void CheckErrorStatus(void);
|
void CheckErrorStatus(void);
|
||||||
|
void CB2_PrintErrorMessage(void);
|
||||||
void EnableSerial(void);
|
void EnableSerial(void);
|
||||||
void sub_800B210(void);
|
void sub_800B210(void);
|
||||||
void sub_80F8DC0(void);
|
void sub_80F8DC0(void);
|
||||||
@@ -163,6 +178,50 @@ const char gASCIITestPrint[] = "TEST PRINT\n"
|
|||||||
"P2\n"
|
"P2\n"
|
||||||
"P3";
|
"P3";
|
||||||
|
|
||||||
|
const struct BgTemplate gUnknown_82345E8[] = {
|
||||||
|
{
|
||||||
|
.bg = 0,
|
||||||
|
.charBaseIndex = 2,
|
||||||
|
.mapBaseIndex = 31,
|
||||||
|
.priority = 0
|
||||||
|
}, {
|
||||||
|
.bg = 1,
|
||||||
|
.charBaseIndex = 0,
|
||||||
|
.mapBaseIndex = 8,
|
||||||
|
.priority = 1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct WindowTemplate gUnknown_82345F0[] = {
|
||||||
|
{
|
||||||
|
.bg = 0,
|
||||||
|
.tilemapLeft = 0,
|
||||||
|
.tilemapTop = 0,
|
||||||
|
.width = 30,
|
||||||
|
.height = 5,
|
||||||
|
.paletteNum = 15,
|
||||||
|
.baseBlock = 0x002
|
||||||
|
}, {
|
||||||
|
.bg = 0,
|
||||||
|
.tilemapLeft = 0,
|
||||||
|
.tilemapTop = 6,
|
||||||
|
.width = 30,
|
||||||
|
.height = 7,
|
||||||
|
.paletteNum = 15,
|
||||||
|
.baseBlock = 0x098
|
||||||
|
}, {
|
||||||
|
.bg = 0,
|
||||||
|
.tilemapLeft = 0,
|
||||||
|
.tilemapTop = 13,
|
||||||
|
.width = 30,
|
||||||
|
.height = 7,
|
||||||
|
.paletteNum = 15,
|
||||||
|
.baseBlock = 0x16A
|
||||||
|
}, DUMMY_WIN_TEMPLATE
|
||||||
|
};
|
||||||
|
|
||||||
|
const u8 gUnknown_8234610[4] = { 0x00, 0x01, 0x02 };
|
||||||
|
|
||||||
bool8 IsWirelessAdapterConnected(void)
|
bool8 IsWirelessAdapterConnected(void)
|
||||||
{
|
{
|
||||||
if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
|
if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
|
||||||
@@ -1383,3 +1442,321 @@ void CheckErrorStatus(void)
|
|||||||
CloseLink();
|
CloseLink();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06)
|
||||||
|
{
|
||||||
|
sLinkErrorBuffer.status = status;
|
||||||
|
sLinkErrorBuffer.lastSendQueueCount = lastSendQueueCount;
|
||||||
|
sLinkErrorBuffer.lastRecvQueueCount = lastRecvQueueCount;
|
||||||
|
sLinkErrorBuffer.unk_06 = unk_06;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CB2_LinkError(void)
|
||||||
|
{
|
||||||
|
u8 *tilemapBuffer;
|
||||||
|
|
||||||
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
|
m4aMPlayStop(&gMPlayInfo_SE1);
|
||||||
|
m4aMPlayStop(&gMPlayInfo_SE2);
|
||||||
|
m4aMPlayStop(&gMPlayInfo_SE3);
|
||||||
|
InitHeap(gHeap, HEAP_SIZE);
|
||||||
|
ResetSpriteData();
|
||||||
|
FreeAllSpritePalettes();
|
||||||
|
ResetPaletteFadeControl();
|
||||||
|
FillPalette(0, 0, 2);
|
||||||
|
ResetTasks();
|
||||||
|
ScanlineEffect_Stop();
|
||||||
|
if (gWirelessCommType)
|
||||||
|
{
|
||||||
|
if (!sLinkErrorBuffer.unk_06)
|
||||||
|
{
|
||||||
|
gWirelessCommType = 3;
|
||||||
|
}
|
||||||
|
sub_80F85F8();
|
||||||
|
}
|
||||||
|
SetVBlankCallback(sub_800978C);
|
||||||
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
|
InitBgsFromTemplates(0, gUnknown_82345E8, 2);
|
||||||
|
gUnknown_2022860 = tilemapBuffer = malloc(0x800);
|
||||||
|
SetBgTilemapBuffer(1, tilemapBuffer);
|
||||||
|
if (InitWindows(gUnknown_82345F0))
|
||||||
|
{
|
||||||
|
DeactivateAllTextPrinters();
|
||||||
|
ResetTempTileDataBuffers();
|
||||||
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||||
|
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||||
|
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
|
||||||
|
LoadPalette(gTMCaseMainWindowPalette, 0xf0, 0x20);
|
||||||
|
gSoftResetDisabled = FALSE;
|
||||||
|
CreateTask(Task_DestroySelf, 0);
|
||||||
|
StopMapMusic();
|
||||||
|
gMain.callback1 = NULL;
|
||||||
|
RunTasks();
|
||||||
|
AnimateSprites();
|
||||||
|
BuildOamBuffer();
|
||||||
|
UpdatePaletteFade();
|
||||||
|
SetMainCallback2(CB2_PrintErrorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800AE1C(void)
|
||||||
|
{
|
||||||
|
DecompressAndLoadBgGfxUsingHeap(1, gWirelessLinkDisplay4bpp, FALSE, 0, 0);
|
||||||
|
CopyToBgTilemapBuffer(1, gWirelessLinkDisplayBin, 0, 0);
|
||||||
|
CopyBgTilemapBufferToVram(1);
|
||||||
|
LoadPalette(gWirelessLinkDisplayPal, 0, 0x20);
|
||||||
|
FillWindowPixelBuffer(0, PIXEL_FILL(0));
|
||||||
|
FillWindowPixelBuffer(2, PIXEL_FILL(0));
|
||||||
|
AddTextPrinterParameterized3(0, 3, 2, 5, gUnknown_8234610, 0, gText_CommErrorEllipsis);
|
||||||
|
AddTextPrinterParameterized3(2, 3, 2, 2, gUnknown_8234610, 0, gText_MoveCloserToLinkPartner);
|
||||||
|
PutWindowTilemap(0);
|
||||||
|
PutWindowTilemap(2);
|
||||||
|
CopyWindowToVram(0, 0);
|
||||||
|
CopyWindowToVram(2, 3);
|
||||||
|
ShowBg(0);
|
||||||
|
ShowBg(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800AED0(void)
|
||||||
|
{
|
||||||
|
FillWindowPixelBuffer(1, PIXEL_FILL(0));
|
||||||
|
FillWindowPixelBuffer(2, PIXEL_FILL(0));
|
||||||
|
AddTextPrinterParameterized3(1, 3, 2, 0, gUnknown_8234610, 0, gText_CommErrorCheckConnections);
|
||||||
|
PutWindowTilemap(1);
|
||||||
|
PutWindowTilemap(2);
|
||||||
|
CopyWindowToVram(1, 0);
|
||||||
|
CopyWindowToVram(2, 3);
|
||||||
|
ShowBg(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CB2_PrintErrorMessage(void)
|
||||||
|
{
|
||||||
|
switch (gMain.state)
|
||||||
|
{
|
||||||
|
case 00:
|
||||||
|
if (sLinkErrorBuffer.unk_06)
|
||||||
|
{
|
||||||
|
sub_800AE1C();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_800AED0();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 30:
|
||||||
|
PlaySE(SE_BOO);
|
||||||
|
break;
|
||||||
|
case 60:
|
||||||
|
PlaySE(SE_BOO);
|
||||||
|
break;
|
||||||
|
case 90:
|
||||||
|
PlaySE(SE_BOO);
|
||||||
|
break;
|
||||||
|
case 130:
|
||||||
|
if (gWirelessCommType == 2)
|
||||||
|
{
|
||||||
|
AddTextPrinterParameterized3(0, 3, 2, 20, gUnknown_8234610, 0, gText_ABtnTitleScreen);
|
||||||
|
}
|
||||||
|
else if (gWirelessCommType == 1)
|
||||||
|
{
|
||||||
|
AddTextPrinterParameterized3(0, 3, 2, 20, gUnknown_8234610, 0, gText_ABtnRegistrationCounter);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (gMain.state == 160)
|
||||||
|
{
|
||||||
|
if (gWirelessCommType == 1)
|
||||||
|
{
|
||||||
|
if (JOY_NEW(A_BUTTON))
|
||||||
|
{
|
||||||
|
sub_812B484();
|
||||||
|
PlaySE(SE_PIN);
|
||||||
|
gWirelessCommType = 0;
|
||||||
|
sLinkErrorBuffer.unk_06 = 0;
|
||||||
|
sub_8079B7C();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (gWirelessCommType == 2)
|
||||||
|
{
|
||||||
|
if (JOY_NEW(A_BUTTON))
|
||||||
|
{
|
||||||
|
sub_812B484();
|
||||||
|
rfu_REQ_stopMode();
|
||||||
|
rfu_waitREQComplete();
|
||||||
|
DoSoftReset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (gMain.state != 160)
|
||||||
|
{
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 GetSioMultiSI(void)
|
||||||
|
{
|
||||||
|
return (REG_SIOCNT & 0x04) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 IsSioMultiMaster(void)
|
||||||
|
{
|
||||||
|
return (REG_SIOCNT & 0x8) && !(REG_SIOCNT & 0x04);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 IsLinkConnectionEstablished(void)
|
||||||
|
{
|
||||||
|
return EXTRACT_CONN_ESTABLISHED(gLinkStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSuppressLinkErrorMessage(bool8 flag)
|
||||||
|
{
|
||||||
|
gSuppressLinkErrorMessage = flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 HasLinkErrorOccurred(void)
|
||||||
|
{
|
||||||
|
return gLinkErrorOccurred;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800B0B4(void)
|
||||||
|
{
|
||||||
|
struct LinkPlayerBlock *block;
|
||||||
|
|
||||||
|
InitLocalLinkPlayer();
|
||||||
|
block = &gLocalLinkPlayerBlock;
|
||||||
|
block->linkPlayer = gLocalLinkPlayer;
|
||||||
|
memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1);
|
||||||
|
memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1);
|
||||||
|
memcpy(gBlockSendBuffer, block, sizeof(*block));
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800B110(u32 who)
|
||||||
|
{
|
||||||
|
u8 who_ = who;
|
||||||
|
struct LinkPlayerBlock *block;
|
||||||
|
struct LinkPlayer *player;
|
||||||
|
|
||||||
|
block = (struct LinkPlayerBlock *)gBlockRecvBuffer[who_];
|
||||||
|
player = &gLinkPlayers[who_];
|
||||||
|
*player = block->linkPlayer;
|
||||||
|
sub_800B284(player);
|
||||||
|
if (strcmp(block->magic1, gASCIIGameFreakInc) != 0 || strcmp(block->magic2, gASCIIGameFreakInc) != 0)
|
||||||
|
{
|
||||||
|
SetMainCallback2(CB2_LinkError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 HandleLinkConnection(void)
|
||||||
|
{
|
||||||
|
bool32 r4;
|
||||||
|
bool32 r5;
|
||||||
|
|
||||||
|
if (gWirelessCommType == 0)
|
||||||
|
{
|
||||||
|
gLinkStatus = LinkMain1(&gShouldAdvanceLinkState, gSendCmd, gRecvCmds);
|
||||||
|
LinkMain2(&gMain.heldKeys);
|
||||||
|
if ((gLinkStatus & LINK_STAT_RECEIVED_NOTHING) && sub_8058318() == TRUE)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
r4 = sub_80FAE94();
|
||||||
|
r5 = sub_80FAEF0();
|
||||||
|
if (sub_8058318() == TRUE)
|
||||||
|
{
|
||||||
|
if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800B1F4(void)
|
||||||
|
{
|
||||||
|
if (gReceivedRemoteLinkPlayers == 0)
|
||||||
|
{
|
||||||
|
gWirelessCommType = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800B210(void)
|
||||||
|
{
|
||||||
|
if (gReceivedRemoteLinkPlayers == 0)
|
||||||
|
{
|
||||||
|
gWirelessCommType = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800B22C(void)
|
||||||
|
{
|
||||||
|
if (gReceivedRemoteLinkPlayers == 0)
|
||||||
|
{
|
||||||
|
gWirelessCommType = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 GetLinkRecvQueueLength(void)
|
||||||
|
{
|
||||||
|
if (gWirelessCommType != 0)
|
||||||
|
{
|
||||||
|
return GetRfuRecvQueueLength();
|
||||||
|
}
|
||||||
|
return gLink.recvQueue.count;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool32 sub_800B270(void)
|
||||||
|
{
|
||||||
|
if (GetLinkRecvQueueLength() > 2)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_800B284(struct LinkPlayer *player)
|
||||||
|
{
|
||||||
|
player->name[10] = player->name[8];
|
||||||
|
ConvertInternationalString(player->name, player->language);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DisableSerial(void)
|
||||||
|
{
|
||||||
|
DisableInterrupts(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
|
||||||
|
REG_SIOCNT = SIO_MULTI_MODE;
|
||||||
|
REG_TM3CNT_H = 0;
|
||||||
|
REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL;
|
||||||
|
REG_SIOMLT_SEND = 0;
|
||||||
|
REG_SIOMLT_RECV = 0;
|
||||||
|
CpuFill32(0, &gLink, sizeof(gLink));
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnableSerial(void)
|
||||||
|
{
|
||||||
|
DisableInterrupts(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
|
||||||
|
REG_RCNT = 0;
|
||||||
|
REG_SIOCNT = SIO_MULTI_MODE;
|
||||||
|
REG_SIOCNT |= SIO_115200_BPS | SIO_INTR_ENABLE;
|
||||||
|
EnableInterrupts(INTR_FLAG_SERIAL);
|
||||||
|
REG_SIOMLT_SEND = 0;
|
||||||
|
CpuFill32(0, &gLink, sizeof(gLink));
|
||||||
|
sNumVBlanksWithoutSerialIntr = 0;
|
||||||
|
sSendNonzeroCheck = 0;
|
||||||
|
sRecvNonzeroCheck = 0;
|
||||||
|
sChecksumAvailable = 0;
|
||||||
|
sHandshakePlayerCount = 0;
|
||||||
|
gLastSendQueueCount = 0;
|
||||||
|
gLastRecvQueueCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetSerial(void)
|
||||||
|
{
|
||||||
|
EnableSerial();
|
||||||
|
DisableSerial();
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user