Decompile SysTask half of unk_0201F79C

This commit is contained in:
PikalaxALT 2023-12-28 14:58:14 -05:00
parent 6de99de2a7
commit 4e0d89d64e
No known key found for this signature in database
GPG Key ID: C7E3D40F3BAC7AEB
92 changed files with 602 additions and 727 deletions

View File

@ -4,10 +4,10 @@
.public DestroySysTask
.public AllocFromHeap
.public FreeToHeap
.public sub_0201F82C
.public sub_0201F834
.public sub_0201F880
.public sub_0201F8C0
.public SysTaskQueue_GetArenaSize
.public SysTaskQueue_PlacementNew
.public SysTaskQueue_RunTasks
.public SysTaskQueue_InsertTask
.public GF_AssertFail
.public sub_0203DF8C
.public MIi_CpuClear32

View File

@ -59,7 +59,7 @@
.public GetBgTilemapBuffer
.public FillWindowPixelRect
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public GfGfx_SetBanks
.public GfGfx_EngineATogglePlanes
.public Camera_SetPerspectiveClippingPlane

View File

@ -9,7 +9,7 @@
.public AllocFromHeapAtEnd
.public FreeToHeap
.public FreeToHeapExplicit
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public StartScriptFromMenu
.public FieldSystem_FlagSet

View File

@ -4,7 +4,7 @@
.public DestroySysTaskAndEnvironment
.public sub_0200E374
.public DestroySysTask
.public sub_0201F988
.public SysTask_GetData
.public GX_SetGraphicsMode
.public GX_SetBankForLCDC
.public GX_GetBankForLCDC

View File

@ -14,7 +14,7 @@
.public sub_0201F53C
.public Draw3dModel
.public Bind3dModelSet
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public Save_PlayerData_GetProfileAddr
.public PlayerProfile_GetTrainerGender

View File

@ -6,7 +6,7 @@
.public DestroySysTaskAndEnvironment
.public BeginNormalPaletteFade
.public IsPaletteFadeFinished
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public ov01_021F6830
.public ov01_021F6840

View File

@ -6,7 +6,7 @@
.public AllocFromHeap
.public AllocFromHeapAtEnd
.public FreeToHeap
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public MIi_CpuClear32
.public ov01_021FB254

View File

@ -13,7 +13,7 @@
.public AllocFromHeapAtEnd
.public FreeToHeap
.public RemoveWindow
.public sub_0201F988
.public SysTask_GetData
.public LCRandom
.public GF_AssertFail
.public String_New

View File

@ -4,7 +4,7 @@
.public DestroySysTask
.public AllocFromHeapAtEnd
.public FreeToHeap
.public sub_0201F988
.public SysTask_GetData
.public Camera_SetDistance
.public Camera_GetDistance
.public memset

View File

@ -97,7 +97,7 @@
.public FillWindowPixelBuffer
.public ScheduleBgTilemapBufferTransfer
.public ScheduleSetBgPosText
.public sub_0201F988
.public SysTask_GetData
.public GF_SinDeg
.public GF_CosDeg
.public GF_DegreeToSinCosIdxNoWrap

View File

@ -109,7 +109,7 @@
.public DoScheduledBgGpuUpdates
.public ScheduleBgTilemapBufferTransfer
.public ScheduleSetBgPosText
.public sub_0201F988
.public SysTask_GetData
.public LCRandom
.public AddTextPrinterParameterized
.public AddTextPrinterParameterizedWithColor

View File

@ -142,7 +142,7 @@
.public BgClearTilemapBufferAndCommit
.public BgGetCharPtr
.public GetBgPriority
.public sub_0201F98C
.public SysTask_GetPriority
.public GF_SinDeg
.public LCRandom
.public GF_CreateNewVramTransferTask

View File

@ -90,7 +90,7 @@
.public GetWindowWidth
.public ScheduleBgTilemapBufferTransfer
.public ScheduleSetBgPosText
.public sub_0201F988
.public SysTask_GetData
.public TextPrinterCheckActive
.public AddTextPrinterParameterized
.public AddTextPrinterParameterizedWithColor

View File

@ -108,7 +108,7 @@
.public FillWindowPixelRect
.public DoScheduledBgGpuUpdates
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public MsgArray_SkipControlCode
.public AddTextPrinterParameterizedWithColor
.public sub_020215A0

View File

@ -63,7 +63,7 @@
.public Draw3dModel
.public sub_0201F590
.public sub_0201F63C
.public sub_0201F988
.public SysTask_GetData
.public GfGfx_SetBanks
.public GfGfx_EngineATogglePlanes
.public GfGfx_EngineASetPlanes

View File

@ -7,7 +7,7 @@
.public DestroySysTask
.public AllocFromHeap
.public FreeToHeap
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public MI_CpuFill8
.public ov12_0223A900

View File

@ -38,7 +38,7 @@
.public ClearWindowTilemapAndCopyToVram
.public FillWindowPixelBuffer
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColor
.public GfGfx_EngineBTogglePlanes
.public sub_0202457C

View File

@ -63,7 +63,7 @@
.public GetWindowX
.public GetWindowY
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColor
.public GfGfx_EngineBTogglePlanes
.public SpriteList_Delete

View File

@ -44,7 +44,7 @@
.public ClearWindowTilemapAndScheduleTransfer
.public FillWindowPixelBuffer
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public GF_SinDeg
.public GF_CosDeg
.public GF_DegreeToSinCosIdx

View File

@ -47,7 +47,7 @@
.public FillWindowPixelBuffer
.public GetWindowWidth
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColor
.public SpriteList_Delete
.public sub_0202457C

View File

@ -52,7 +52,7 @@
.public ClearWindowTilemapAndScheduleTransfer
.public FillWindowPixelBuffer
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterized
.public AddTextPrinterParameterizedWithColor
.public GfGfx_EngineBTogglePlanes

View File

@ -53,7 +53,7 @@
.public FillWindowPixelBuffer
.public GetWindowWidth
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColor
.public SpriteList_Delete
.public sub_0202457C

View File

@ -30,7 +30,7 @@
.public FillWindowPixelBuffer
.public GetWindowWidth
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColor
.public TouchscreenHitbox_FindRectAtTouchHeld
.public TouchscreenHitbox_FindRectAtTouchNew

View File

@ -45,7 +45,7 @@
.public CopyWindowToVram
.public ScheduleWindowCopyToVram
.public FillWindowPixelBuffer
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColor
.public GfGfx_EngineBTogglePlanes
.public SpriteList_Delete

View File

@ -135,7 +135,7 @@
.public DoScheduledBgGpuUpdates
.public ScheduleBgTilemapBufferTransfer
.public ScheduleSetBgPosText
.public sub_0201F988
.public SysTask_GetData
.public MTRandom
.public TextPrinterCheckActive
.public AddTextPrinterParameterizedWithColor

View File

@ -68,7 +68,7 @@
.public ClearWindowTilemapAndCopyToVram
.public FillWindowPixelBuffer
.public DoScheduledBgGpuUpdates
.public sub_0201F988
.public SysTask_GetData
.public GF_SinDegNoWrap
.public LCRandom
.public AddTextPrinterParameterizedWithColor

View File

@ -93,7 +93,7 @@
.public DoScheduledBgGpuUpdates
.public ScheduleBgTilemapBufferTransfer
.public ScheduleSetBgPosText
.public sub_0201F988
.public SysTask_GetData
.public GF_SinDegNoWrap
.public GF_CosDegNoWrap
.public SetLCRNGSeed

View File

@ -134,7 +134,7 @@
.public FillWindowPixelBuffer
.public FillWindowPixelRect
.public DoScheduledBgGpuUpdates
.public sub_0201F988
.public SysTask_GetData
.public LCRandom
.public TextPrinterCheckActive
.public AddTextPrinterParameterized

View File

@ -86,8 +86,8 @@
.public Draw3dModel
.public Bind3dModelSet
.public AllocAndLoad3dTexResources
.public sub_0201F984
.public sub_0201F988
.public SysTask_SetFunc
.public SysTask_GetData
.public sub_0201F990
.public GF_SinDegNoWrap
.public GF_CosDegNoWrap

View File

@ -51,7 +51,7 @@
.public RemoveWindow
.public ScheduleBgTilemapBufferTransfer
.public ScheduleSetBgPosText
.public sub_0201F988
.public SysTask_GetData
.public AddTextPrinterParameterizedWithColorAndSpacing
.public sub_02021AC8
.public sub_02021B5C

View File

@ -56,7 +56,7 @@
.public GetWindowX
.public GetWindowY
.public ScheduleBgTilemapBufferTransfer
.public sub_0201F988
.public SysTask_GetData
.public GfGfx_EngineBTogglePlanes
.public sub_0202457C
.public Set2dSpriteAnimSeqNo

View File

@ -87,7 +87,7 @@
.public DestroySysTask
.public AllocFromHeap
.public FreeToHeap
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public NNS_SndPlayerStopSeq
.public NNS_SndPlayerStopSeqBySeqNo

View File

@ -5,6 +5,6 @@
.public sub_0200E358
.public sub_0200E374
.public DestroySysTask
.public sub_0201F8C0
.public sub_0201F954
.public SysTaskQueue_InsertTask
.public SysTask_Delete
.public gSystem

View File

@ -8,7 +8,7 @@
.public sub_0201649C
.public sub_020164C4
.public BG_LoadPlttData
.public sub_0201F988
.public SysTask_GetData
.public sub_02026E84
.public sub_02026E94
.public MIi_CpuCopy16

View File

@ -1,13 +1,13 @@
#include <nitro/fs/overlay.h>
#pragma once
.public sub_0201F82C
.public sub_0201F834
.public sub_0201F880
.public sub_0201F8C0
.public sub_0201F954
.public sub_0201F984
.public sub_0201F988
.public sub_0201F98C
.public SysTaskQueue_GetArenaSize
.public SysTaskQueue_PlacementNew
.public SysTaskQueue_RunTasks
.public SysTaskQueue_InsertTask
.public SysTask_Delete
.public SysTask_SetFunc
.public SysTask_GetData
.public SysTask_GetPriority
.public sub_0201F990
.public sub_0201FA34
.public GF_AssertFail

View File

@ -5,7 +5,7 @@
.public DestroySysTask
.public AllocFromHeapAtEnd
.public FreeToHeapExplicit
.public sub_0201F988
.public SysTask_GetData
.public GF_AssertFail
.public MapObjectManager_GetHeapID
.public MapObject_SetFlagsBits

View File

@ -6,7 +6,7 @@
.public AllocFromHeapAtEnd
.public FreeToHeap
.public FreeToHeapExplicit
.public sub_0201F988
.public SysTask_GetData
.public GF_SinDegNoWrap
.public sub_02023EE0
.public sub_02023EF4

View File

@ -84,7 +84,7 @@
.public BlitBitmapRectToWindow
.public FillWindowPixelRect
.public GetWindowWidth
.public sub_0201F988
.public SysTask_GetData
.public GF_SinDeg
.public LCRandom
.public TextPrinterCheckActive

View File

@ -39,14 +39,14 @@ ov01_021E66E4: ; 0x021E66E4
add r2, r7, #0
bl MIi_CpuClear32
add r0, r6, #0
bl sub_0201F82C
bl SysTaskQueue_GetArenaSize
add r1, r0, #0
add r0, r5, #0
bl AllocFromHeap
str r0, [r4, #0x10]
ldr r1, [r4, #0x10]
add r0, r6, #0
bl sub_0201F834
bl SysTaskQueue_PlacementNew
str r0, [r4, #0x10]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
@ -82,11 +82,11 @@ _021E6754:
thumb_func_start ov01_021E6768
ov01_021E6768: ; 0x021E6768
ldr r3, _021E6770 ; =sub_0201F880
ldr r3, _021E6770 ; =SysTaskQueue_RunTasks
ldr r0, [r0, #0x10]
bx r3
nop
_021E6770: .word sub_0201F880
_021E6770: .word SysTaskQueue_RunTasks
thumb_func_end ov01_021E6768
thumb_func_start ov01_021E6774
@ -156,7 +156,7 @@ _021E67CC:
ldr r1, _021E6838 ; =ov01_021E6798
ldr r3, [r6]
add r2, r4, #0
bl sub_0201F8C0
bl SysTaskQueue_InsertTask
str r0, [r4, #8]
str r5, [r4]
str r6, [r4, #0xc]

View File

@ -195,7 +195,7 @@ ov01_021EFC94: ; 0x021EFC94
mov r2, #5
mov r3, #4
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r5, [r4, #0x10]
str r6, [r4, #0x14]

View File

@ -2728,7 +2728,7 @@ Field_PlayerMovementSavingClear: ; 0x021F2FF0
push {r4, r5, r6, lr}
add r5, r0, #0
beq _021F302E
bl sub_0201F988
bl SysTask_GetData
add r6, r0, #0
ldr r0, [r6, #4]
ldr r4, [r6, #0xc]

View File

@ -24,7 +24,7 @@ ov01_021F4464: ; 0x021F4464
mov r2, #5
bl CreateSysTaskAndEnvironment
add r6, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
add r2, r4, #4
mov r3, #5

View File

@ -4204,7 +4204,7 @@ _021F6610: .word 0x0000086C
thumb_func_start ov01_021F6614
ov01_021F6614: ; 0x021F6614
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
mov r1, #1
str r1, [r0, #0x20]
pop {r3, pc}

View File

@ -130,7 +130,7 @@ ov01_021F68DC: ; 0x021F68DC
mov r3, #4
bl CreateSysTaskAndEnvironment
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
ldr r1, [r5, #0x1c]
strb r1, [r0]
mov r1, #0
@ -151,7 +151,7 @@ ov01_021F690C: ; 0x021F690C
add r4, r0, #0
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
add r2, r0, #0
ldr r1, [r2, #4]
ldrb r2, [r2]
@ -171,7 +171,7 @@ ov01_021F6930: ; 0x021F6930
add r5, r0, #0
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldrb r1, [r4]
ldr r0, [r5, #8]
@ -366,7 +366,7 @@ ov01_021F6A9C: ; 0x021F6A9C
ldr r0, [r0]
add r5, r1, #0
add r4, r2, #0
bl sub_0201F988
bl SysTask_GetData
ldrb r1, [r0, #1]
cmp r1, #1
bne _021F6AB8
@ -388,9 +388,9 @@ ov01_021F6ABC: ; 0x021F6ABC
add r6, r1, #0
add r7, r2, #0
str r3, [sp]
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
add r0, r5, #0
bl ov01_021F6B00
@ -409,9 +409,9 @@ ov01_021F6AEC: ; 0x021F6AEC
push {r3, lr}
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0]
pop {r3, pc}
thumb_func_end ov01_021F6AEC
@ -421,7 +421,7 @@ ov01_021F6B00: ; 0x021F6B00
push {r3, lr}
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
ldrb r0, [r0]
pop {r3, pc}
.balign 4, 0
@ -432,7 +432,7 @@ ov01_021F6B10: ; 0x021F6B10
push {r3, lr}
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
ldrb r0, [r0, #1]
pop {r3, pc}
.balign 4, 0
@ -443,9 +443,9 @@ ov01_021F6B20: ; 0x021F6B20
push {r3, lr}
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
bl sub_0201F988
bl SysTask_GetData
add r0, #0xc
pop {r3, pc}
thumb_func_end ov01_021F6B20
@ -457,7 +457,7 @@ ov01_021F6B34: ; 0x021F6B34
ldr r0, [r0]
add r5, r1, #0
add r4, r2, #0
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
add r1, r5, #0
add r2, r4, #0
@ -471,7 +471,7 @@ ov01_021F6B50: ; 0x021F6B50
push {r3, lr}
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
bl ov27_0225A2CC
pop {r3, pc}
@ -484,7 +484,7 @@ ov01_021F6B64: ; 0x021F6B64
add r0, #0xd8
ldr r0, [r0]
add r5, r1, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
cmp r5, #0
ble _021F6B7A

View File

@ -436,7 +436,7 @@ _021FB350: .word ov01_021FB174
thumb_func_start ov01_021FB354
ov01_021FB354: ; 0x021FB354
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
mov r1, #1
str r1, [r0, #0x74]
pop {r3, pc}

View File

@ -142,7 +142,7 @@ _021FC768: .word ov01_021FC798
thumb_func_start ov01_021FC76C
ov01_021FC76C: ; 0x021FC76C
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
pop {r3, pc}
.balign 4, 0
@ -151,7 +151,7 @@ ov01_021FC76C: ; 0x021FC76C
thumb_func_start ov01_021FC778
ov01_021FC778: ; 0x021FC778
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #8]
pop {r3, pc}
.balign 4, 0
@ -161,7 +161,7 @@ ov01_021FC778: ; 0x021FC778
ov01_021FC784: ; 0x021FC784
push {r4, lr}
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
add r0, r4, #0
bl DestroySysTask

View File

@ -48,7 +48,7 @@ _021FCD68: .word 0x0000FFFF
thumb_func_start ov01_021FCD6C
ov01_021FCD6C: ; 0x021FCD6C
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #8]
pop {r3, pc}
.balign 4, 0
@ -58,7 +58,7 @@ ov01_021FCD6C: ; 0x021FCD6C
ov01_021FCD78: ; 0x021FCD78
push {r4, lr}
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
add r0, r4, #0
bl DestroySysTask
@ -71,7 +71,7 @@ ov01_021FCD8C: ; 0x021FCD8C
add r5, r1, #0
add r4, r2, #0
add r6, r3, #0
bl sub_0201F988
bl SysTask_GetData
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #8]

View File

@ -7577,7 +7577,7 @@ _02249538: .word ov02_022499B8
thumb_func_start ov02_0224953C
ov02_0224953C: ; 0x0224953C
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
pop {r3, pc}
.balign 4, 0
@ -7587,7 +7587,7 @@ ov02_0224953C: ; 0x0224953C
ov02_02249548: ; 0x02249548
push {r4, lr}
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
bl ov02_0224957C
add r0, r4, #0
bl DestroySysTask
@ -11774,7 +11774,7 @@ _0224B438: .word ov02_0224B45C
thumb_func_start ov02_0224B43C
ov02_0224B43C: ; 0x0224B43C
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
pop {r3, pc}
.balign 4, 0
@ -11784,7 +11784,7 @@ ov02_0224B43C: ; 0x0224B43C
ov02_0224B448: ; 0x0224B448
push {r4, lr}
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
add r0, r4, #0
bl DestroySysTask

View File

@ -13,7 +13,7 @@ ov05_0221BA00: ; 0x0221BA00
ldr r3, [r5, #0x24]
mov r2, #0x64
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
ldr r2, _0221BA60 ; =0x00000BD4
mov r1, #0
add r4, r0, #0

View File

@ -34837,7 +34837,7 @@ _0222CB34:
bl ov07_0221FAF8
add r7, r0, #0
ldr r0, [sp, #0x14]
bl sub_0201F98C
bl SysTask_GetPriority
str r0, [sp, #0x18]
ldrh r0, [r4, #0x10]
ldrh r1, [r4, #0x12]

View File

@ -20,7 +20,7 @@ _0221BE2E:
ldr r3, [r5, #0xc]
mov r2, #0
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
ldr r2, _0221BE8C ; =0x00002090
add r4, r0, #0
mov r1, #0
@ -12721,7 +12721,7 @@ ov08_022225D4: ; 0x022225D4
ldr r3, [r5, #0xc]
mov r2, #0x64
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
ldr r2, _02222668 ; =0x0000115C
add r4, r0, #0
mov r1, #0

View File

@ -4034,7 +4034,7 @@ _021E9484:
ldr r0, [r5, #8]
cmp r0, #0
beq _021E9498
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #0xc]
cmp r0, r6
bne _021E9498

View File

@ -691,7 +691,7 @@ ov106_021E5E0C: ; 0x021E5E0C
mov r2, #5
bl CreateSysTaskAndEnvironment
add r6, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
add r2, r4, #4
mov r3, #5

View File

@ -30,7 +30,7 @@ _0226BEEC: .word ov12_0226BF04
ov12_0226BEF0: ; 0x0226BEF0
push {r4, lr}
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
add r0, r4, #0
bl DestroySysTask

View File

@ -53,7 +53,7 @@ ov19_02259918: ; 0x02259918
add r5, r0, #0
add r0, #0xd8
ldr r0, [r0]
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
mov r0, #0x43
lsl r0, r0, #2

View File

@ -46,7 +46,7 @@ ov27_02259F80: ; 0x02259F80
mov r3, #8
bl CreateSysTaskAndEnvironment
add r7, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r7, [r4, #8]
mov r0, #0
@ -241,7 +241,7 @@ ov27_0225A19C: ; 0x0225A19C
str r0, [sp]
add r0, r1, #0
str r1, [sp, #4]
bl sub_0201F988
bl SysTask_GetData
add r6, r0, #0
ldr r1, _0225A2B0 ; =FS_OVERLAY_ID(OVY_123)
mov r0, #0
@ -374,7 +374,7 @@ ov27_0225A2C8: ; 0x0225A2C8
thumb_func_start ov27_0225A2CC
ov27_0225A2CC: ; 0x0225A2CC
push {r4, lr}
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
bne _0225A2DA
bl GF_AssertFail
@ -393,7 +393,7 @@ _0225A2E8: .word 0x0000051C
ov27_0225A2EC: ; 0x0225A2EC
push {r3, r4, r5, lr}
add r5, r1, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
bne _0225A2FC
bl GF_AssertFail
@ -4459,7 +4459,7 @@ ov27_0225C250: ; 0x0225C250
mov r3, #8
bl CreateSysTaskAndEnvironment
add r6, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r6, [r4, #0x1c]
mov r0, #0
@ -4535,7 +4535,7 @@ ov27_0225C398: ; 0x0225C398
str r0, [sp]
add r0, r1, #0
str r1, [sp, #4]
bl sub_0201F988
bl SysTask_GetData
add r7, r0, #0
mov r0, #0xd5
lsl r0, r0, #2
@ -4595,7 +4595,7 @@ ov27_0225C41C: ; 0x0225C41C
push {r3, r4, r5, lr}
add r5, r1, #0
add r4, r2, #0
bl sub_0201F988
bl SysTask_GetData
mov r1, #0xe7
lsl r1, r1, #2
str r5, [r0, r1]

View File

@ -26,7 +26,7 @@ ov28_0225D520: ; 0x0225D520
mov r3, #8
bl CreateSysTaskAndEnvironment
add r6, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r5, [r4, #0x10]
ldr r0, [sp]
@ -98,7 +98,7 @@ ov28_0225D5EC: ; 0x0225D5EC
push {r3, r4, r5, lr}
add r5, r1, #0
add r0, r5, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
bl DowsingMchn_FreeHiddenItemLocs
add r0, r4, #0

View File

@ -26,7 +26,7 @@ ov29_0225D520: ; 0x0225D520
mov r3, #8
bl CreateSysTaskAndEnvironment
str r0, [sp, #4]
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldr r0, [sp]
mov r1, #0x7f
@ -104,7 +104,7 @@ ov29_0225D5EC: ; 0x0225D5EC
push {r3, r4, r5, lr}
add r5, r1, #0
add r0, r5, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
bl ov29_0225DC34
add r0, r4, #0

View File

@ -23,7 +23,7 @@ ov31_0225D520: ; 0x0225D520
mov r3, #8
bl CreateSysTaskAndEnvironment
add r5, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r5, [r4, #8]
mov r1, #0
@ -236,7 +236,7 @@ ov31_0225D710: ; 0x0225D710
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
mov r0, #0
bl sub_02002B8C

View File

@ -26,7 +26,7 @@ ov32_0225D520: ; 0x0225D520
mov r3, #8
bl CreateSysTaskAndEnvironment
add r7, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r5, r0, #0
ldr r0, [sp]
str r6, [r5]
@ -83,7 +83,7 @@ ov32_0225D5CC: ; 0x0225D5CC
push {r3, r4, r5, lr}
add r5, r1, #0
add r0, r5, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
bl ov32_0225DDAC
add r0, r4, #0

View File

@ -26,7 +26,7 @@ ov33_0225D520: ; 0x0225D520
mov r3, #8
bl CreateSysTaskAndEnvironment
add r7, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldr r0, [sp]
str r6, [r4]
@ -69,7 +69,7 @@ ov33_0225D5A8: ; 0x0225D5A8
push {r3, r4, r5, lr}
add r5, r1, #0
add r0, r5, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
bl ov33_0225D820
ldr r0, [r4]

View File

@ -336,7 +336,7 @@ ov34_0225D7A8: ; 0x0225D7A8
add r3, r2, #0
bl CreateSysTaskAndEnvironment
add r6, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r5, [r4, #0xc]
ldr r0, [r5, #8]

View File

@ -3189,7 +3189,7 @@ ov41_022476B8: ; 0x022476B8
mov r2, #0xa
mov r3, #0xd
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
str r5, [r0]
str r4, [r0, #4]
mov r1, #0
@ -3379,7 +3379,7 @@ ov41_02247828: ; 0x02247828
mov r2, #0xa
mov r3, #0xd
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
str r5, [r0]
str r4, [r0, #4]
mov r1, #0
@ -6099,7 +6099,7 @@ ov41_02248B84: ; 0x02248B84
mov r2, #0
mov r3, #0xd
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r5, [r4]
str r6, [r4, #4]
@ -7309,7 +7309,7 @@ ov41_02249480: ; 0x02249480
mov r2, #0
mov r3, #0xd
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldr r0, [r5, #8]
add r1, sp, #8
@ -8614,7 +8614,7 @@ ov41_02249DB4: ; 0x02249DB4
mov r2, #0
mov r3, #0xd
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r6, [r4]
add r7, r5, #0

View File

@ -1514,7 +1514,7 @@ ov62_021E6480: ; 0x021E6480
add r6, r3, #0
bl CreateSysTask
str r0, [r4, #0x2c]
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldr r0, [sp, #0x24]
str r7, [r4]

View File

@ -6452,7 +6452,7 @@ ov63_0221F324: ; 0x0221F324
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r2, #0
bl sub_0201F988
bl SysTask_GetData
ldr r1, _0221F360 ; =0x0000083C
add r4, r0, #0
ldr r3, [r4, r1]
@ -6740,7 +6740,7 @@ ov63_0221F580: ; 0x0221F580
push {r3, lr}
cmp r0, #0
beq _0221F5A6
bl sub_0201F988
bl SysTask_GetData
add r3, r0, #0
ldr r0, _0221F5A8 ; =0x04000444
mov r1, #0
@ -6770,7 +6770,7 @@ ov63_0221F5B4: ; 0x0221F5B4
str r2, [r1]
cmp r0, #0
beq _0221F5F0
bl sub_0201F988
bl SysTask_GetData
add r6, r0, #0
ldr r0, _0221F5F8 ; =0x0000083C
mov r4, #0
@ -6782,7 +6782,7 @@ ov63_0221F5B4: ; 0x0221F5B4
_0221F5D4:
ldr r0, _0221F5FC ; =0x00000818
ldr r0, [r5, r0]
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
ldr r0, [r6, r7]
add r4, r4, #1
@ -7025,7 +7025,7 @@ ov63_0221F7C4: ; 0x0221F7C4
push {r4, lr}
add r4, r0, #0
beq _0221F7D8
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
add r0, r4, #0
bl DestroySysTask
@ -7039,7 +7039,7 @@ ov63_0221F7DC: ; 0x0221F7DC
push {r3, lr}
cmp r0, #0
beq _0221F7EA
bl sub_0201F988
bl SysTask_GetData
mov r1, #1
str r1, [r0]
_0221F7EA:
@ -7365,7 +7365,7 @@ ov63_0221FAA0: ; 0x0221FAA0
push {r4, lr}
cmp r0, #0
beq _0221FAD0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldr r0, [r4, #4]
cmp r0, #0

View File

@ -18919,7 +18919,7 @@ ov70_02240EF4: ; 0x02240EF4
ldr r1, _02240F34 ; =0x000011D8
str r0, [r5, r1]
ldr r0, [r5, r1]
bl sub_0201F988
bl SysTask_GetData
mov r1, #0
add r2, r1, #0
str r1, [r0]
@ -19056,7 +19056,7 @@ ov70_02241004: ; 0x02241004
ldr r1, _02241040 ; =0x000011D8
str r0, [r5, r1]
ldr r0, [r5, r1]
bl sub_0201F988
bl SysTask_GetData
mov r1, #0
str r1, [r0]
mov r1, #0x8a

View File

@ -757,7 +757,7 @@ ov71_02246F60: ; 0x02246F60
ldr r0, [r6, r4]
cmp r0, #0
beq _02246F8E
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
ldr r0, [r6, r4]
bl DestroySysTask
@ -3092,7 +3092,7 @@ ov71_02248120: ; 0x02248120
ldr r0, [r4, #0x78]
cmp r0, #0
beq _0224813C
bl sub_0201F988
bl SysTask_GetData
bl ov71_02247424
ldr r0, [r4, #0x78]
bl DestroySysTask
@ -3190,7 +3190,7 @@ ov71_022481D8: ; 0x022481D8
ldr r0, [r0, #0x7c]
cmp r0, #0
beq _022481E8
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #0x20]
pop {r3, pc}
_022481E8:
@ -3205,7 +3205,7 @@ ov71_022481EC: ; 0x022481EC
ldr r0, [r4, #0x7c]
cmp r0, #0
beq _02248208
bl sub_0201F988
bl SysTask_GetData
bl FreeToHeap
ldr r0, [r4, #0x7c]
bl DestroySysTask
@ -4581,7 +4581,7 @@ ov71_02248CF4: ; 0x02248CF4
push {r4, lr}
add r4, r0, #0
beq _02248D0A
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0]
mov r1, #0
str r1, [r0]
@ -4721,7 +4721,7 @@ ov71_02248E04: ; 0x02248E04
push {r3, r4, r5, lr}
add r5, r0, #0
beq _02248E2E
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
mov r0, #0x5a
lsl r0, r0, #2
@ -5227,7 +5227,7 @@ ov71_02249184: ; 0x02249184
str r0, [r4, #0x7c]
ldr r1, _02249204 ; =ov71_02249208
add r0, r5, #0
bl sub_0201F984
bl SysTask_SetFunc
_022491E4:
add r0, r4, #0
bl ov71_0224903C
@ -5286,7 +5286,7 @@ _02249252:
thumb_func_start ov71_02249254
ov71_02249254: ; 0x02249254
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #0x78]
pop {r3, pc}
.balign 4, 0
@ -5295,7 +5295,7 @@ ov71_02249254: ; 0x02249254
thumb_func_start ov71_02249260
ov71_02249260: ; 0x02249260
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #0x7c]
pop {r3, pc}
.balign 4, 0
@ -5306,7 +5306,7 @@ ov71_0224926C: ; 0x0224926C
push {r3, r4, r5, lr}
sub sp, #8
add r5, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
mov r1, #0
str r1, [r4, #0x78]
@ -5359,7 +5359,7 @@ ov71_0224926C: ; 0x0224926C
bl ov71_02247704
ldr r1, _022492F8 ; =ov71_022492FC
add r0, r5, #0
bl sub_0201F984
bl SysTask_SetFunc
add sp, #8
pop {r3, r4, r5, pc}
.balign 4, 0
@ -5398,7 +5398,7 @@ ov71_022492FC: ; 0x022492FC
bne _0224933C
ldr r1, _02249354 ; =ov71_02249358
add r0, r5, #0
bl sub_0201F984
bl SysTask_SetFunc
_0224933C:
add r1, r4, #0
ldr r0, [r4]
@ -5444,7 +5444,7 @@ ov71_02249358: ; 0x02249358
str r1, [r0]
ldr r1, _022493B4 ; =ov71_022493B8
add r0, r5, #0
bl sub_0201F984
bl SysTask_SetFunc
_0224939A:
add r1, r4, #0
ldr r0, [r4]
@ -5491,7 +5491,7 @@ ov71_022493B8: ; 0x022493B8
bne _022493F8
ldr r1, _02249410 ; =ov71_02249414
add r0, r5, #0
bl sub_0201F984
bl SysTask_SetFunc
_022493F8:
add r1, r4, #0
ldr r0, [r4]
@ -5530,7 +5530,7 @@ ov71_02249414: ; 0x02249414
str r0, [r4, #0x2c]
ldr r1, _0224945C ; =ov71_02249460
add r0, r5, #0
bl sub_0201F984
bl SysTask_SetFunc
_02249446:
add r1, r4, #0
ldr r0, [r4]
@ -8973,7 +8973,7 @@ ov71_0224AFB8: ; 0x0224AFB8
push {r4, lr}
add r4, r0, #0
beq _0224AFD2
bl sub_0201F988
bl SysTask_GetData
ldr r1, [r0, #0x1c]
mov r2, #0
str r2, [r1]
@ -9065,7 +9065,7 @@ ov71_0224B068: ; 0x0224B068
push {r4, lr}
add r4, r0, #0
beq _0224B082
bl sub_0201F988
bl SysTask_GetData
ldr r1, [r0]
mov r2, #0
str r2, [r1]
@ -9160,7 +9160,7 @@ ov71_0224B11C: ; 0x0224B11C
push {r4, lr}
add r4, r0, #0
beq _0224B136
bl sub_0201F988
bl SysTask_GetData
ldr r1, [r0]
mov r2, #0
str r2, [r1]
@ -10183,7 +10183,7 @@ ov71_0224B970: ; 0x0224B970
ldr r0, [r4, #0x7c]
cmp r0, #0
beq _0224B98C
bl sub_0201F988
bl SysTask_GetData
bl ov71_02247424
ldr r0, [r4, #0x7c]
bl DestroySysTask
@ -10290,7 +10290,7 @@ ov71_0224BA48: ; 0x0224BA48
push {r4, lr}
add r4, r0, #0
beq _0224BA62
bl sub_0201F988
bl SysTask_GetData
ldr r1, [r0]
mov r2, #0
str r2, [r1]

View File

@ -18,7 +18,7 @@ ov80_0223A00C: ; 0x0223A00C
lsl r2, r2, #2
mov r3, #0x65
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
str r5, [r4, #0x10]
ldr r0, [sp]

View File

@ -2313,7 +2313,7 @@ sub_0200F5C4: ; 0x0200F5C4
lsl r1, r1, #4
mov r2, #0
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
ldr r1, _0200F5FC ; =0x0000016F
mov r2, #0
strb r2, [r0, r1]

View File

@ -1491,7 +1491,7 @@ sub_020068F8: ; 0x020068F8
ldr r0, [r4]
cmp r0, #0
beq _0200691A
bl sub_0201F988
bl SysTask_GetData
add r5, r0, #0
ldr r0, [r4]
bl DestroySysTask

View File

@ -14,7 +14,7 @@ CreateSysTask: ; 0x0200E320
ldr r0, [r0, #0x18]
add r1, r5, #0
add r2, r4, #0
bl sub_0201F8C0
bl SysTaskQueue_InsertTask
pop {r3, r4, r5, pc}
nop
_0200E338: .word gSystem
@ -30,7 +30,7 @@ sub_0200E33C: ; 0x0200E33C
ldr r0, [r0, #0x1c]
add r1, r5, #0
add r2, r4, #0
bl sub_0201F8C0
bl SysTaskQueue_InsertTask
pop {r3, r4, r5, pc}
nop
_0200E354: .word gSystem
@ -46,7 +46,7 @@ sub_0200E358: ; 0x0200E358
ldr r0, [r0, #0x24]
add r1, r5, #0
add r2, r4, #0
bl sub_0201F8C0
bl SysTaskQueue_InsertTask
pop {r3, r4, r5, pc}
nop
_0200E370: .word gSystem
@ -62,7 +62,7 @@ sub_0200E374: ; 0x0200E374
ldr r0, [r0, #0x20]
add r1, r5, #0
add r2, r4, #0
bl sub_0201F8C0
bl SysTaskQueue_InsertTask
pop {r3, r4, r5, pc}
nop
_0200E38C: .word gSystem
@ -70,8 +70,8 @@ _0200E38C: .word gSystem
thumb_func_start DestroySysTask
DestroySysTask: ; 0x0200E390
ldr r3, _0200E394 ; =sub_0201F954
ldr r3, _0200E394 ; =SysTask_Delete
bx r3
.balign 4, 0
_0200E394: .word sub_0201F954
_0200E394: .word SysTask_Delete
thumb_func_end DestroySysTask

View File

@ -16,7 +16,7 @@ sub_020163E0: ; 0x020163E0
mov r2, #0
bl CreateSysTaskAndEnvironment
str r0, [sp, #4]
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
cmp r5, #0
beq _02016424

View File

@ -1,520 +0,0 @@
.include "asm/macros.inc"
.include "unk_0201F79C.inc"
.include "global.inc"
.public NNS_G3dGlb
.public NNS_G3dGlb
.text
thumb_func_start sub_0201F79C
sub_0201F79C: ; 0x0201F79C
str r0, [r1]
add r0, r0, #4
str r0, [r1, #8]
str r0, [r1, #4]
mov r0, #0
str r0, [r1, #0xc]
str r0, [r1, #0x10]
str r0, [r1, #0x14]
bx lr
.balign 4, 0
thumb_func_end sub_0201F79C
thumb_func_start sub_0201F7B0
sub_0201F7B0: ; 0x0201F7B0
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldrh r0, [r5]
mov r7, #0
cmp r0, #0
ble _0201F7DE
add r4, r7, #0
add r6, r7, #0
_0201F7C0:
ldr r1, [r5, #0x24]
add r0, r5, #0
add r1, r1, r4
bl sub_0201F79C
ldr r0, [r5, #0x24]
add r7, r7, #1
add r1, r0, r4
ldr r0, [r5, #0x20]
add r4, #0x1c
str r1, [r0, r6]
ldrh r0, [r5]
add r6, r6, #4
cmp r7, r0
blt _0201F7C0
_0201F7DE:
mov r0, #0
strh r0, [r5, #2]
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0201F7B0
thumb_func_start sub_0201F7E4
sub_0201F7E4: ; 0x0201F7E4
ldrh r3, [r0, #2]
ldrh r1, [r0]
cmp r3, r1
bne _0201F7F0
mov r0, #0
bx lr
_0201F7F0:
ldr r2, [r0, #0x20]
lsl r1, r3, #2
ldr r2, [r2, r1]
add r1, r3, #1
strh r1, [r0, #2]
add r0, r2, #0
bx lr
.balign 4, 0
thumb_func_end sub_0201F7E4
thumb_func_start sub_0201F800
sub_0201F800: ; 0x0201F800
ldrh r2, [r0, #2]
cmp r2, #0
bne _0201F80A
mov r0, #0
bx lr
_0201F80A:
str r0, [r1]
add r2, r0, #4
str r2, [r1, #8]
str r2, [r1, #4]
mov r2, #0
str r2, [r1, #0xc]
str r2, [r1, #0x10]
str r2, [r1, #0x14]
ldrh r2, [r0, #2]
sub r2, r2, #1
strh r2, [r0, #2]
ldr r2, [r0, #0x20]
ldrh r0, [r0, #2]
lsl r0, r0, #2
str r1, [r2, r0]
mov r0, #1
bx lr
thumb_func_end sub_0201F800
thumb_func_start sub_0201F82C
sub_0201F82C: ; 0x0201F82C
lsl r0, r0, #5
add r0, #0x34
bx lr
.balign 4, 0
thumb_func_end sub_0201F82C
thumb_func_start sub_0201F834
sub_0201F834: ; 0x0201F834
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
bne _0201F840
bl GF_AssertFail
_0201F840:
add r1, r4, #0
add r1, #0x34
lsl r0, r5, #2
str r1, [r4, #0x20]
add r0, r1, r0
str r0, [r4, #0x24]
strh r5, [r4]
mov r0, #0
strh r0, [r4, #2]
str r0, [r4, #0x28]
add r0, r4, #0
bl sub_0201F860
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201F834
thumb_func_start sub_0201F860
sub_0201F860: ; 0x0201F860
push {r4, lr}
add r4, r0, #0
bl sub_0201F7B0
str r4, [r4, #4]
add r0, r4, #4
str r0, [r4, #0xc]
str r0, [r4, #8]
mov r0, #0
str r0, [r4, #0x10]
str r0, [r4, #0x14]
str r0, [r4, #0x18]
ldr r0, [r4, #0xc]
str r0, [r4, #0x2c]
pop {r4, pc}
.balign 4, 0
thumb_func_end sub_0201F860
thumb_func_start sub_0201F880
sub_0201F880: ; 0x0201F880
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0x28]
cmp r0, #0
bne _0201F8BC
ldr r1, [r5, #0xc]
add r4, r5, #4
str r1, [r5, #0x2c]
cmp r1, r4
beq _0201F8B8
mov r6, #0
_0201F896:
ldr r0, [r1, #8]
str r0, [r5, #0x30]
ldr r0, [r5, #0x2c]
ldr r1, [r0, #0x18]
cmp r1, #0
bne _0201F8AE
ldr r2, [r0, #0x14]
cmp r2, #0
beq _0201F8B0
ldr r1, [r0, #0x10]
blx r2
b _0201F8B0
_0201F8AE:
str r6, [r0, #0x18]
_0201F8B0:
ldr r1, [r5, #0x30]
str r1, [r5, #0x2c]
cmp r1, r4
bne _0201F896
_0201F8B8:
mov r0, #0
str r0, [r1, #0x14]
_0201F8BC:
pop {r4, r5, r6, pc}
.balign 4, 0
thumb_func_end sub_0201F880
thumb_func_start sub_0201F8C0
sub_0201F8C0: ; 0x0201F8C0
push {r3, r4, r5, lr}
add r4, r0, #0
mov r5, #1
str r5, [r4, #0x28]
bl sub_0201F8D4
mov r1, #0
str r1, [r4, #0x28]
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201F8C0
thumb_func_start sub_0201F8D4
sub_0201F8D4: ; 0x0201F8D4
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
add r6, r1, #0
add r7, r2, #0
add r4, r3, #0
bl sub_0201F7E4
cmp r0, #0
bne _0201F8EA
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0201F8EA:
str r4, [r0, #0xc]
str r7, [r0, #0x10]
str r6, [r0, #0x14]
ldr r2, [r5, #0x2c]
ldr r1, [r2, #0x14]
cmp r1, #0
beq _0201F90A
ldr r1, [r2, #0xc]
cmp r1, r4
bhi _0201F904
mov r1, #1
str r1, [r0, #0x18]
b _0201F90E
_0201F904:
mov r1, #0
str r1, [r0, #0x18]
b _0201F90E
_0201F90A:
mov r1, #0
str r1, [r0, #0x18]
_0201F90E:
ldr r3, [r5, #0xc]
add r2, r5, #4
cmp r3, r2
beq _0201F93A
ldr r4, [r0, #0xc]
_0201F918:
ldr r1, [r3, #0xc]
cmp r1, r4
bls _0201F934
ldr r1, [r3, #4]
str r1, [r0, #4]
str r3, [r0, #8]
ldr r1, [r3, #4]
str r0, [r1, #8]
str r0, [r3, #4]
ldr r1, [r5, #0x30]
cmp r3, r1
bne _0201F952
str r0, [r5, #0x30]
pop {r3, r4, r5, r6, r7, pc}
_0201F934:
ldr r3, [r3, #8]
cmp r3, r2
bne _0201F918
_0201F93A:
ldr r2, [r5, #0x30]
add r1, r5, #4
cmp r2, r1
bne _0201F944
str r0, [r5, #0x30]
_0201F944:
ldr r1, [r5, #8]
str r1, [r0, #4]
add r1, r5, #4
str r1, [r0, #8]
ldr r1, [r5, #8]
str r0, [r1, #8]
str r0, [r5, #8]
_0201F952:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end sub_0201F8D4
thumb_func_start sub_0201F954
sub_0201F954: ; 0x0201F954
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
cmp r0, #0
bne _0201F962
bl GF_AssertFail
_0201F962:
ldr r1, [r4]
ldr r0, [r1, #0x30]
cmp r0, r4
bne _0201F96E
ldr r0, [r4, #8]
str r0, [r1, #0x30]
_0201F96E:
ldr r1, [r4, #8]
ldr r0, [r4, #4]
str r1, [r0, #8]
ldr r1, [r4, #4]
ldr r0, [r4, #8]
str r1, [r0, #4]
ldr r0, [r4]
add r1, r4, #0
bl sub_0201F800
pop {r4, pc}
thumb_func_end sub_0201F954
thumb_func_start sub_0201F984
sub_0201F984: ; 0x0201F984
str r1, [r0, #0x14]
bx lr
thumb_func_end sub_0201F984
thumb_func_start sub_0201F988
sub_0201F988: ; 0x0201F988
ldr r0, [r0, #0x10]
bx lr
thumb_func_end sub_0201F988
thumb_func_start sub_0201F98C
sub_0201F98C: ; 0x0201F98C
ldr r0, [r0, #0xc]
bx lr
thumb_func_end sub_0201F98C
thumb_func_start sub_0201F990
sub_0201F990: ; 0x0201F990
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r6, r1, #0
add r4, r0, #0
add r5, r2, #0
ldmia r6!, {r0, r1}
add r2, sp, #0x1c
stmia r2!, {r0, r1}
ldr r0, [r6]
add r7, r3, #0
str r0, [r2]
cmp r4, #0
beq _0201F9AE
add r4, #0x14
b _0201F9B0
_0201F9AE:
mov r4, #0
_0201F9B0:
mov r0, #0x20
ldrsh r0, [r4, r0]
mov r1, #0x1a
mov r2, #0x1c
str r0, [sp]
mov r0, #0x22
ldrsh r0, [r4, r0]
mov r3, #0x1e
str r0, [sp, #4]
add r0, sp, #0x28
str r0, [sp, #8]
mov r0, #0x18
ldrsh r0, [r4, r0]
ldrsh r1, [r4, r1]
ldrsh r2, [r4, r2]
ldrsh r3, [r4, r3]
bl sub_0201FAA4
add r0, sp, #0x1c
bl NNS_G3dGlbSetBaseTrans
ldr r1, _0201FA2C ; =NNS_G3dGlb + 0xBC
add r0, r5, #0
bl MI_Copy36B
ldr r1, _0201FA30 ; =NNS_G3dGlb + 0x80
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r7, #0
str r2, [r1, #0x7c]
bl NNS_G3dGlbSetBaseScale
bl NNS_G3dGlbFlushP
mov r1, #0
mov r0, #0x11
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x24]
add r1, sp, #0x10
str r0, [sp, #0x10]
str r0, [sp, #0x14]
str r0, [sp, #0x18]
mov r0, #0x1b
mov r2, #3
bl NNS_G3dGeBufferOP_N
add r0, sp, #0x28
bl sub_0201FAC8
add r4, r0, #0
mov r2, #1
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
bl NNS_G3dGeBufferOP_N
add r0, r4, #0
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0201FA2C: .word NNS_G3dGlb + 0xBC
_0201FA30: .word NNS_G3dGlb + 0x80
thumb_func_end sub_0201F990
thumb_func_start sub_0201FA34
sub_0201FA34: ; 0x0201FA34
push {r3, r4, r5, lr}
sub sp, #0x28
add r5, r0, #0
add r4, r1, #0
mov r0, #2
ldrsh r0, [r4, r0]
str r0, [sp]
mov r0, #4
ldrsh r0, [r4, r0]
str r0, [sp, #4]
add r0, sp, #0x1c
str r0, [sp, #8]
mov r0, #0
ldrsh r3, [r4, r0]
add r1, r0, #0
add r2, r0, #0
bl sub_0201FAA4
add r0, r5, #0
bl NNS_G3dGlbSetBaseTrans
bl NNS_G3dGlbFlushP
mov r1, #0
mov r0, #0x11
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x10]
lsl r2, r0, #0xc
ldr r0, [r4, #0xc]
lsl r1, r0, #0xc
ldr r0, [r4, #8]
lsl r0, r0, #0xc
str r0, [sp, #0x10]
str r1, [sp, #0x14]
str r2, [sp, #0x18]
mov r0, #0x1b
add r1, sp, #0x10
mov r2, #3
bl NNS_G3dGeBufferOP_N
add r0, sp, #0x1c
bl sub_0201FAC8
add r4, r0, #0
mov r2, #1
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
bl NNS_G3dGeBufferOP_N
add r0, r4, #0
add sp, #0x28
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201FA34
thumb_func_start sub_0201FAA4
sub_0201FAA4: ; 0x0201FAA4
push {r3, r4}
ldr r4, [sp, #0x10]
strh r0, [r4]
strh r1, [r4, #2]
ldr r1, _0201FAC4 ; =0xFFFFFFF8
strh r2, [r4, #4]
strh r3, [r4, #6]
add r1, sp
mov r0, #0x10
ldrsh r0, [r1, r0]
strh r0, [r4, #8]
mov r0, #0x14
ldrsh r0, [r1, r0]
strh r0, [r4, #0xa]
pop {r3, r4}
bx lr
.balign 4, 0
_0201FAC4: .word 0xFFFFFFF8
thumb_func_end sub_0201FAA4
thumb_func_start sub_0201FAC8
sub_0201FAC8: ; 0x0201FAC8
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
ldr r0, _0201FB18 ; =0x000030C1
mov r2, #1
str r0, [sp, #4]
mov r0, #0x29
add r1, sp, #4
str r2, [sp, #8]
bl NNS_G3dGeBufferOP_N
mov r0, #0
str r0, [sp]
mov r0, #0x40
add r1, sp, #0
mov r2, #1
bl NNS_G3dGeBufferOP_N
mov r1, #0
mov r0, #0x41
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
mov r0, #0x70
add r1, r4, #0
mov r2, #3
bl NNS_G3dGeBufferOP_N
bl NNS_G3dGeFlushBuffer
add r4, sp, #8
_0201FB06:
add r0, r4, #0
bl G3X_GetBoxTestResult
cmp r0, #0
bne _0201FB06
ldr r0, [sp, #8]
add sp, #0xc
pop {r3, r4, pc}
nop
_0201FB18: .word 0x000030C1
thumb_func_end sub_0201FAC8

204
asm/unk_0201F990.s Normal file
View File

@ -0,0 +1,204 @@
.include "asm/macros.inc"
.include "unk_0201F990.inc"
.include "global.inc"
.public NNS_G3dGlb
.extern SysTaskQueue_InitTask
.extern SysTaskQueue_InitHeap
.extern SysTaskQueue_CreateTask
.extern SysTaskQueue_DeleteTask
.text
thumb_func_start sub_0201F990
sub_0201F990: ; 0x0201F990
push {r4, r5, r6, r7, lr}
sub sp, #0x34
add r6, r1, #0
add r4, r0, #0
add r5, r2, #0
ldmia r6!, {r0, r1}
add r2, sp, #0x1c
stmia r2!, {r0, r1}
ldr r0, [r6]
add r7, r3, #0
str r0, [r2]
cmp r4, #0
beq _0201F9AE
add r4, #0x14
b _0201F9B0
_0201F9AE:
mov r4, #0
_0201F9B0:
mov r0, #0x20
ldrsh r0, [r4, r0]
mov r1, #0x1a
mov r2, #0x1c
str r0, [sp]
mov r0, #0x22
ldrsh r0, [r4, r0]
mov r3, #0x1e
str r0, [sp, #4]
add r0, sp, #0x28
str r0, [sp, #8]
mov r0, #0x18
ldrsh r0, [r4, r0]
ldrsh r1, [r4, r1]
ldrsh r2, [r4, r2]
ldrsh r3, [r4, r3]
bl sub_0201FAA4
add r0, sp, #0x1c
bl NNS_G3dGlbSetBaseTrans
ldr r1, _0201FA2C ; =NNS_G3dGlb + 0xBC
add r0, r5, #0
bl MI_Copy36B
ldr r1, _0201FA30 ; =NNS_G3dGlb + 0x80
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r7, #0
str r2, [r1, #0x7c]
bl NNS_G3dGlbSetBaseScale
bl NNS_G3dGlbFlushP
mov r1, #0
mov r0, #0x11
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x24]
add r1, sp, #0x10
str r0, [sp, #0x10]
str r0, [sp, #0x14]
str r0, [sp, #0x18]
mov r0, #0x1b
mov r2, #3
bl NNS_G3dGeBufferOP_N
add r0, sp, #0x28
bl sub_0201FAC8
add r4, r0, #0
mov r2, #1
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
bl NNS_G3dGeBufferOP_N
add r0, r4, #0
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.balign 4, 0
_0201FA2C: .word NNS_G3dGlb + 0xBC
_0201FA30: .word NNS_G3dGlb + 0x80
thumb_func_end sub_0201F990
thumb_func_start sub_0201FA34
sub_0201FA34: ; 0x0201FA34
push {r3, r4, r5, lr}
sub sp, #0x28
add r5, r0, #0
add r4, r1, #0
mov r0, #2
ldrsh r0, [r4, r0]
str r0, [sp]
mov r0, #4
ldrsh r0, [r4, r0]
str r0, [sp, #4]
add r0, sp, #0x1c
str r0, [sp, #8]
mov r0, #0
ldrsh r3, [r4, r0]
add r1, r0, #0
add r2, r0, #0
bl sub_0201FAA4
add r0, r5, #0
bl NNS_G3dGlbSetBaseTrans
bl NNS_G3dGlbFlushP
mov r1, #0
mov r0, #0x11
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x10]
lsl r2, r0, #0xc
ldr r0, [r4, #0xc]
lsl r1, r0, #0xc
ldr r0, [r4, #8]
lsl r0, r0, #0xc
str r0, [sp, #0x10]
str r1, [sp, #0x14]
str r2, [sp, #0x18]
mov r0, #0x1b
add r1, sp, #0x10
mov r2, #3
bl NNS_G3dGeBufferOP_N
add r0, sp, #0x1c
bl sub_0201FAC8
add r4, r0, #0
mov r2, #1
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
bl NNS_G3dGeBufferOP_N
add r0, r4, #0
add sp, #0x28
pop {r3, r4, r5, pc}
.balign 4, 0
thumb_func_end sub_0201FA34
thumb_func_start sub_0201FAA4
sub_0201FAA4: ; 0x0201FAA4
push {r3, r4}
ldr r4, [sp, #0x10]
strh r0, [r4]
strh r1, [r4, #2]
ldr r1, _0201FAC4 ; =0xFFFFFFF8
strh r2, [r4, #4]
strh r3, [r4, #6]
add r1, sp
mov r0, #0x10
ldrsh r0, [r1, r0]
strh r0, [r4, #8]
mov r0, #0x14
ldrsh r0, [r1, r0]
strh r0, [r4, #0xa]
pop {r3, r4}
bx lr
.balign 4, 0
_0201FAC4: .word 0xFFFFFFF8
thumb_func_end sub_0201FAA4
thumb_func_start sub_0201FAC8
sub_0201FAC8: ; 0x0201FAC8
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
ldr r0, _0201FB18 ; =0x000030C1
mov r2, #1
str r0, [sp, #4]
mov r0, #0x29
add r1, sp, #4
str r2, [sp, #8]
bl NNS_G3dGeBufferOP_N
mov r0, #0
str r0, [sp]
mov r0, #0x40
add r1, sp, #0
mov r2, #1
bl NNS_G3dGeBufferOP_N
mov r1, #0
mov r0, #0x41
add r2, r1, #0
bl NNS_G3dGeBufferOP_N
mov r0, #0x70
add r1, r4, #0
mov r2, #3
bl NNS_G3dGeBufferOP_N
bl NNS_G3dGeFlushBuffer
add r4, sp, #8
_0201FB06:
add r0, r4, #0
bl G3X_GetBoxTestResult
cmp r0, #0
bne _0201FB06
ldr r0, [sp, #8]
add sp, #0xc
pop {r3, r4, pc}
nop
_0201FB18: .word 0x000030C1
thumb_func_end sub_0201FAC8

View File

@ -208,7 +208,7 @@ _0206225C: .word MovementScriptMachine
thumb_func_start EventObjectMovementMan_IsFinish
EventObjectMovementMan_IsFinish: ; 0x02062260
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
pop {r3, pc}
.balign 4, 0
@ -218,7 +218,7 @@ EventObjectMovementMan_IsFinish: ; 0x02062260
EventObjectMovementMan_Delete: ; 0x0206226C
push {r3, r4, r5, lr}
add r5, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r4, r0, #0
ldr r0, [r4, #0xc]
bl MapObject_IsMovementPaused

View File

@ -2620,7 +2620,7 @@ _02064608: .word sub_02064630
thumb_func_start sub_0206460C
sub_0206460C: ; 0x0206460C
push {r3, lr}
bl sub_0201F988
bl SysTask_GetData
ldr r0, [r0, #4]
pop {r3, pc}
.balign 4, 0
@ -2630,7 +2630,7 @@ sub_0206460C: ; 0x0206460C
sub_02064618: ; 0x02064618
push {r4, lr}
add r4, r0, #0
bl sub_0201F988
bl SysTask_GetData
add r1, r0, #0
mov r0, #4
bl FreeToHeapExplicit

View File

@ -2203,7 +2203,7 @@ _02083AFE:
str r0, [r4, r1]
add r0, r1, #0
ldr r0, [r4, r0]
bl sub_0201F988
bl SysTask_GetData
mov r1, #0xd2
lsl r1, r1, #2
ldr r1, [r6, r1]
@ -2583,7 +2583,7 @@ _02083DE6:
mov r2, #0
mov r3, #0x12
bl CreateSysTaskAndEnvironment
bl sub_0201F988
bl SysTask_GetData
add r7, r0, #0
ldr r0, [sp, #0x48]
ldr r0, [r0, #0x1c]

View File

@ -3,7 +3,7 @@
#include "battle/battle_setup.h"
#include "script.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
#include "unk_0203BC10.h"
struct FieldLongWarpTaskData;
@ -35,9 +35,9 @@ typedef struct UnkStruct_Ov02_0224E4EC {
u8 *unk20; // points to fieldSystem->unk_111
} UnkStruct_Ov02_0224E4EC;
UNK_0201F79C_Sub *ov02_0224B418(FieldSystem *fieldSystem, int gender);
BOOL ov02_0224B43C(UNK_0201F79C_Sub *unk);
void ov02_0224B448(UNK_0201F79C_Sub *unk);
SysTask *ov02_0224B418(FieldSystem *fieldSystem, int gender);
BOOL ov02_0224B43C(SysTask *unk);
void ov02_0224B448(SysTask *unk);
struct FieldLongWarpTaskData *CreateFieldEscapeRopeTaskEnv(FieldSystem *fieldSystem, HeapID heapId);
struct FieldLongWarpTaskData *CreateFieldTeleportTaskEnv(FieldSystem *fieldSystem, Pokemon *mon, u8 slotno, HeapID heapId);
struct FieldLongWarpTaskData *CreateFieldDigTaskEnv(FieldSystem *fieldSystem, Pokemon *mon, u8 slotno, HeapID heapId);

40
include/sys_task.h Normal file
View File

@ -0,0 +1,40 @@
#ifndef POKEHEARTGOLD_SYS_TASK_H
#define POKEHEARTGOLD_SYS_TASK_H
#include "global.h"
typedef struct SysTask SysTask;
typedef struct SysTaskQueue SysTaskQueue;
typedef void (*SysTaskFunc)(SysTask *task, void *data);
struct SysTask {
SysTaskQueue *queue;
SysTask *prev;
SysTask *next;
u32 priority;
void *data;
SysTaskFunc func;
u32 runNow;
};
struct SysTaskQueue {
u16 limit;
u16 activeCount;
SysTask headSentinel;
SysTask **taskStack;
SysTask *taskList;
BOOL isInsertingTask;
SysTask *runningTask;
SysTask *nextTask;
};
void SysTaskQueue_RunTasks(SysTaskQueue *a0);
u32 SysTaskQueue_GetArenaSize(u32 num);
SysTaskQueue *SysTaskQueue_PlacementNew(u32 num, void *p_mem);
void *SysTask_GetData(SysTask *task);
SysTask *SysTaskQueue_InsertTask(SysTaskQueue *queue, SysTaskFunc func, void *arg, u32 priority);
void SysTask_SetFunc(SysTask *task, SysTaskFunc func);
BOOL SysTask_Delete(SysTask *task);
u32 SysTask_GetPriority(SysTask *task);
#endif // POKEHEARTGOLD_SYS_TASK_H

View File

@ -1,7 +1,7 @@
#ifndef POKEHEARTGOLD_SYSTEM_H
#define POKEHEARTGOLD_SYSTEM_H
#include "unk_0201F79C.h"
#include "sys_task.h"
#include "heap.h"
#define BUTTONMODE_NORMAL 0

View File

@ -1,9 +1,7 @@
#ifndef POKEHEARTGOLD_UNK_0200E320_H
#define POKEHEARTGOLD_UNK_0200E320_H
typedef struct SysTask SysTask;
typedef void (*SysTaskFunc)(SysTask *task, void *data);
typedef void (*UnkSysTaskFunc)(int a0, void *data, int a2);
#include "sys_task.h"
SysTask *CreateSysTask(SysTaskFunc func, void *data, int priority);
SysTask *sub_0200E33C(SysTaskFunc func, void *data, int priority);

View File

@ -1,14 +0,0 @@
#ifndef POKEHEARTGOLD_UNK_0201F79C_H
#define POKEHEARTGOLD_UNK_0201F79C_H
#include "unk_0200E320.h"
typedef struct UnkStruct_0201F79C_Sub UNK_0201F79C_Sub;
typedef struct UnkStruct_0201F79C SysTaskQueue;
void sub_0201F880(SysTaskQueue *a0);
u32 sub_0201F82C(u32 num);
SysTaskQueue *sub_0201F834(u32 num, void *p_mem);
void *sub_0201F988(SysTask *task);
#endif //POKEHEARTGOLD_UNK_0201F79C_H

View File

@ -65,7 +65,8 @@ Static main
Object src/heap.o
Object src/bg_window.o
Object asm/unk_0201F4C4.o
Object asm/unk_0201F79C.o
Object src/sys_task.o
Object asm/unk_0201F990.o
Object src/string_control_code.o
Object src/math_util.o
Object src/text.o

View File

@ -3,7 +3,7 @@
#include "battle/battle_system.h"
#include "battle/overlay_12_02266024.h"
#include "heap.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
#include "unk_02005D10.h"
static void ov12_0226BF04(SysTask *task, void *data);
@ -17,7 +17,7 @@ SysTask *ov12_0226BEC4(BattleSystem *bsys) {
}
void ov12_0226BEF0(SysTask *task) {
FreeToHeap(sub_0201F988(task));
FreeToHeap(SysTask_GetData(task));
DestroySysTask(task);
}

View File

@ -29,7 +29,7 @@
#include "overlay_01.h"
#include "overlay_02.h"
#include "constants/maps.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
#include "unk_02055418.h"
struct UnkTaskEnv_02053688 {
@ -40,7 +40,7 @@ struct UnkTaskEnv_02053688 {
struct UnkTaskEnv_02053950 {
int unk0;
UNK_0201F79C_Sub *unk4;
SysTask *unk4;
Location location;
u8 padding[4];
};
@ -48,7 +48,7 @@ struct UnkTaskEnv_02053950 {
struct UnkTaskEnv_02053B3C {
int unk0;
int unk4;
UNK_0201F79C_Sub *unk8;
SysTask *unk8;
Location location;
};

View File

@ -15,7 +15,7 @@
#include "unk_0200B150.h"
#include "unk_02018380.h"
#include "unk_02035900.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
#include "communication_error.h"
#include "math_util.h"
#include "unk_020210A0.h"
@ -106,8 +106,8 @@ void NitroMain(void) {
OS_GetTick();
Main_RunOverlayManager();
OS_GetTick();
sub_0201F880(gSystem.unk18);
sub_0201F880(gSystem.unk24);
SysTaskQueue_RunTasks(gSystem.unk18);
SysTaskQueue_RunTasks(gSystem.unk24);
if (!gSystem.unk30) {
OS_WaitIrq(TRUE, OS_IE_VBLANK);
gSystem.vblankCounter++;
@ -116,7 +116,7 @@ void NitroMain(void) {
GF_RTC_UpdateOnFrame();
sub_020183B0();
sub_02026E60();
sub_0201F880(gSystem.unk24);
SysTaskQueue_RunTasks(gSystem.unk24);
OS_WaitIrq(TRUE, OS_IE_VBLANK);
gSystem.vblankCounter++;
gSystem.unk30 = 0;
@ -126,7 +126,7 @@ void NitroMain(void) {
gSystem.vBlankIntr(gSystem.vBlankIntrArg);
}
DoSoundUpdateFrame();
sub_0201F880(gSystem.unk20);
SysTaskQueue_RunTasks(gSystem.unk20);
}
}

165
src/sys_task.c Normal file
View File

@ -0,0 +1,165 @@
#include "global.h"
#include "sys_task.h"
void SysTaskQueue_InitTask(SysTaskQueue *queue, SysTask *task);
void SysTaskQueue_InitStack(SysTaskQueue *queue);
SysTask *SysTaskQueue_CreateTask(SysTaskQueue *queue);
BOOL SysTaskQueue_DeleteTask(SysTaskQueue *queue, SysTask *task);
void SysTaskQueue_Init(SysTaskQueue *queue);
SysTask *SysTaskQueue_InsertTaskCore(SysTaskQueue *queue, SysTaskFunc func, void *data, u32 priority);
void SysTaskQueue_InitTask(SysTaskQueue *queue, SysTask *task) {
task->queue = queue;
task->prev = task->next = &queue->headSentinel;
task->priority = 0;
task->data = NULL;
task->func = NULL;
}
void SysTaskQueue_InitStack(SysTaskQueue *queue) {
for (int i = 0; i < queue->limit; ++i) {
SysTaskQueue_InitTask(queue, &queue->taskList[i]);
queue->taskStack[i] = &queue->taskList[i];
}
queue->activeCount = 0;
}
SysTask *SysTaskQueue_CreateTask(SysTaskQueue *queue) {
if (queue->activeCount == queue->limit) {
return NULL;
}
SysTask *ret = queue->taskStack[queue->activeCount];
++queue->activeCount;
return ret;
}
BOOL SysTaskQueue_DeleteTask(SysTaskQueue *queue, SysTask *task) {
if (queue->activeCount == 0) {
return FALSE;
}
task->queue = queue;
task->prev = task->next = &queue->headSentinel;
task->priority = 0;
task->data = NULL;
task->func = NULL;
--queue->activeCount;
queue->taskStack[queue->activeCount] = task;
return TRUE;
}
u32 SysTaskQueue_GetArenaSize(u32 num) {
return num * (sizeof(SysTask) + sizeof(SysTask *)) + sizeof(SysTaskQueue);
}
SysTaskQueue *SysTaskQueue_PlacementNew(u32 num, void *p_mem) {
GF_ASSERT(p_mem != NULL);
SysTaskQueue *ret = (SysTaskQueue *)p_mem;
SysTask **taskStack = (SysTask **)((char *)p_mem + sizeof(SysTaskQueue));
ret->taskStack = taskStack;
SysTask *taskList = (SysTask *)((char *)taskStack + num * sizeof(SysTask *));
ret->taskList = taskList;
ret->limit = num;
ret->activeCount = 0;
ret->isInsertingTask = 0;
SysTaskQueue_Init(ret);
return ret;
}
void SysTaskQueue_Init(SysTaskQueue *queue) {
SysTaskQueue_InitStack(queue);
queue->headSentinel.queue = queue;
queue->headSentinel.prev = queue->headSentinel.next = &queue->headSentinel;
queue->headSentinel.priority = 0;
queue->headSentinel.data = NULL;
queue->headSentinel.func = NULL;
queue->runningTask = queue->headSentinel.next;
}
void SysTaskQueue_RunTasks(SysTaskQueue *queue) {
if (!queue->isInsertingTask) {
queue->runningTask = queue->headSentinel.next;
while (queue->runningTask != &queue->headSentinel) {
queue->nextTask = queue->runningTask->next;
if (!queue->runningTask->runNow) {
if (queue->runningTask->func != NULL) {
queue->runningTask->func(queue->runningTask, queue->runningTask->data);
}
} else {
queue->runningTask->runNow = FALSE;
}
queue->runningTask = queue->nextTask;
}
queue->runningTask->func = NULL;
}
}
SysTask *SysTaskQueue_InsertTask(SysTaskQueue *queue, SysTaskFunc func, void *data, u32 priority) {
queue->isInsertingTask = TRUE;
SysTask *ret = SysTaskQueue_InsertTaskCore(queue, func, data, priority);
queue->isInsertingTask = FALSE;
return ret;
}
SysTask *SysTaskQueue_InsertTaskCore(SysTaskQueue *queue, SysTaskFunc func, void *data, u32 priority) {
SysTask *ret = SysTaskQueue_CreateTask(queue);
SysTask *tail;
if (ret == NULL) {
return NULL;
}
ret->priority = priority;
ret->data = data;
ret->func = func;
if (queue->runningTask->func != NULL) {
if (queue->runningTask->priority <= priority) {
ret->runNow = TRUE;
} else {
ret->runNow = FALSE;
}
} else {
ret->runNow = FALSE;
}
for (tail = queue->headSentinel.next; tail != &queue->headSentinel; tail = tail->next) {
if (tail->priority > ret->priority) {
ret->prev = tail->prev;
ret->next = tail;
tail->prev->next = ret;
tail->prev = ret;
if (tail == queue->nextTask) {
queue->nextTask = ret;
}
return ret;
}
}
if (queue->nextTask == &queue->headSentinel) {
queue->nextTask = ret;
}
ret->prev = queue->headSentinel.prev;
ret->next = &queue->headSentinel;
queue->headSentinel.prev->next = ret;
queue->headSentinel.prev = ret;
return ret;
}
BOOL SysTask_Delete(SysTask *task) {
GF_ASSERT(task->func != NULL);
if (task->queue->nextTask == task) {
task->queue->nextTask = task->next;
}
task->prev->next = task->next;
task->next->prev = task->prev;
return SysTaskQueue_DeleteTask(task->queue, task);
}
void SysTask_SetFunc(SysTask *task, SysTaskFunc func) {
task->func = func;
}
void *SysTask_GetData(SysTask *task) {
return task->data;
}
u32 SysTask_GetPriority(SysTask *task) {
return task->priority;
}

View File

@ -1,6 +1,6 @@
#include "global.h"
#include "systask_environment.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
SysTask *CreateSysTaskAndEnvironment(SysTaskFunc function, u32 environmentSize, u32 priority, HeapID heapId) {
void *environment;
@ -19,7 +19,7 @@ SysTask *CreateSysTaskAndEnvironment(SysTaskFunc function, u32 environmentSize,
}
void DestroySysTaskAndEnvironment(SysTask *task) {
void *environment = sub_0201F988(task);
void *environment = SysTask_GetData(task);
if (environment != NULL) {
FreeToHeap(environment);
}

View File

@ -18,7 +18,7 @@ void sub_0201A5E8(void);
void sub_0201A08C(void) {
OS_SetIrqCheckFlag(OS_IE_VBLANK);
MI_WaitDma(GX_DEFAULT_DMAID);
sub_0201F880(gSystem.unk1C);
SysTaskQueue_RunTasks(gSystem.unk1C);
gSystem.unk30++;
}
@ -118,10 +118,10 @@ void InitSystemForTheGame(void) {
GX_Init();
OS_InitTick();
sub_0201A1B4();
gSystem.unk18 = sub_0201F834(160, OS_AllocFromArenaLo(OS_ARENA_MAIN, sub_0201F82C(160), 4));
gSystem.unk1C = sub_0201F834(32, OS_AllocFromArenaLo(OS_ARENA_MAIN, sub_0201F82C(32), 4));
gSystem.unk20 = sub_0201F834(32, OS_AllocFromArenaLo(OS_ARENA_MAIN, sub_0201F82C(32), 4));
gSystem.unk24 = sub_0201F834(4, OS_AllocFromArenaLo(OS_ARENA_MAIN, sub_0201F82C(4), 4));
gSystem.unk18 = SysTaskQueue_PlacementNew(160, OS_AllocFromArenaLo(OS_ARENA_MAIN, SysTaskQueue_GetArenaSize(160), 4));
gSystem.unk1C = SysTaskQueue_PlacementNew(32, OS_AllocFromArenaLo(OS_ARENA_MAIN, SysTaskQueue_GetArenaSize(32), 4));
gSystem.unk20 = SysTaskQueue_PlacementNew(32, OS_AllocFromArenaLo(OS_ARENA_MAIN, SysTaskQueue_GetArenaSize(32), 4));
gSystem.unk24 = SysTaskQueue_PlacementNew(4, OS_AllocFromArenaLo(OS_ARENA_MAIN, SysTaskQueue_GetArenaSize(4), 4));
GX_DispOff();
GXS_DispOff();
GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB);

View File

@ -2,7 +2,7 @@
#include "font.h"
#include "gf_gfx_loader.h"
#include "text.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
static const struct FontInfo *sFonts;
@ -47,7 +47,7 @@ static void DestroyTextPrinterSysTask(u8 printerId) {
return;
}
TextPrinter *printer = sub_0201F988(sTextPrinterTasks[printerId]);
TextPrinter *printer = SysTask_GetData(sTextPrinterTasks[printerId]);
if (printer != NULL) {
sub_02020548(printer);
FreeToHeap(printer);

View File

@ -15,7 +15,7 @@
#include "unk_02005D10.h"
#include "unk_0200E320.h"
#include "yes_no_prompt.h"
#include "unk_0201F79C.h"
#include "sys_task.h"
#include "unk_020183F0.h"
FS_EXTERN_OVERLAY(OVY_123);
@ -189,7 +189,7 @@ SysTask *ov30_0225D520(BgConfig *bgConfig, void* a1, FieldSystem *fieldSystem, v
GfGfx_EngineBTogglePlanes(GX_PLANEMASK_OBJ, GF_PLANE_TOGGLE_OFF);
SysTask *task = CreateSysTaskAndEnvironment((SysTaskFunc)ov30_0225D700, sizeof(TouchSaveAppData), 10, HEAP_ID_8);
TouchSaveAppData *data = sub_0201F988(task);
TouchSaveAppData *data = SysTask_GetData(task);
data->task = task;
data->unk0 = 0;
data->bgConfig = bgConfig;
@ -213,7 +213,7 @@ SysTask *ov30_0225D520(BgConfig *bgConfig, void* a1, FieldSystem *fieldSystem, v
}
void ov30_0225D64C(BgConfig *bgConfig, SysTask *task) {
TouchSaveAppData *data = sub_0201F988(task);
TouchSaveAppData *data = SysTask_GetData(task);
FS_LoadOverlay(MI_PROCESSOR_ARM9, FS_OVERLAY_ID(OVY_123));

View File

@ -4,6 +4,7 @@
#include "gf_gfx_loader.h"
#include "system.h"
#include "unk_02005D10.h"
#include "unk_0200E320.h"
struct UnkStruct_02016C28 {
BgConfig *bgConfig;