summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-06-02 22:13:57 +0100
committerGitHub <noreply@github.com>2021-06-02 22:13:57 +0100
commit9d3d4a2acff67f43896e9e0dcd26e7aaeb55e3b3 (patch)
treed707aa8fead427dadbbb29b886875e6c8961bd5a
parenta2a17a9426f16ee601ff17840b8bb7851fef7138 (diff)
parent7e32d3758e7e36d7a67a1442cdb9386f9aa18a6e (diff)
Merge branch 'master' into 0202A1E0
-rw-r--r--.github/workflows/build.yml18
-rw-r--r--.gitignore1
-rw-r--r--CMakeLists.txt9
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--Makefile5
-rw-r--r--arm9/CMakeLists.txt19
-rw-r--r--arm9/Makefile8
-rw-r--r--arm9/arm9.lsf102
-rw-r--r--arm9/asm/NNS_FND_allocator.s65
-rw-r--r--arm9/asm/NNS_FND_expheap.s583
-rw-r--r--arm9/asm/NNS_FND_frameheap.s243
-rw-r--r--arm9/asm/NNS_FND_heapcommon.s112
-rw-r--r--arm9/asm/NNS_FND_list.s169
-rw-r--r--arm9/asm/NNS_G2D_g2d_animation.s336
-rw-r--r--arm9/asm/NNS_G2D_g2d_cellanimati.s417
-rw-r--r--arm9/asm/NNS_G2D_g2d_celltransfe.s286
-rw-r--r--arm9/asm/NNS_G2D_g2d_charcanvas.s1357
-rw-r--r--arm9/asm/NNS_G2D_g2d_font.s284
-rw-r--r--arm9/asm/NNS_G2D_g2d_image.s780
-rw-r--r--arm9/asm/NNS_G2D_g2d_load.s55
-rw-r--r--arm9/asm/NNS_G2D_g2d_multicellan.s490
-rw-r--r--arm9/asm/NNS_G2D_g2d_nan_load.s155
-rw-r--r--arm9/asm/NNS_G2D_g2d_ncg_load.s66
-rw-r--r--arm9/asm/NNS_G2D_g2d_ncl_load.s66
-rw-r--r--arm9/asm/NNS_G2D_g2d_nft_load.s180
-rw-r--r--arm9/asm/NNS_G2D_g2d_nmc_load.s83
-rw-r--r--arm9/asm/NNS_G2D_g2d_nob_load.s112
-rw-r--r--arm9/asm/NNS_G2D_g2d_node.s18
-rw-r--r--arm9/asm/NNS_G2D_g2d_nsc_load.s21
-rw-r--r--arm9/asm/NNS_G2D_g2d_oam.s667
-rw-r--r--arm9/asm/NNS_G2D_g2d_oamsoftware.s421
-rw-r--r--arm9/asm/NNS_G2D_g2d_palettetabl.s11
-rw-r--r--arm9/asm/NNS_G2D_g2d_renderer.s1984
-rw-r--r--arm9/asm/NNS_G2D_g2d_renderercor.s1095
-rw-r--r--arm9/asm/NNS_G2D_g2d_softsprite.s129
-rw-r--r--arm9/asm/NNS_G2D_g2d_srtcontrol.s62
-rw-r--r--arm9/asm/NNS_G2D_g2d_textcanvas.s221
-rw-r--r--arm9/asm/NNS_G2D_g2di_bitreader.s35
-rw-r--r--arm9/asm/NNS_G2D_g2di_mtx32.s79
-rw-r--r--arm9/asm/NNS_G2D_g2di_splitchar.s13
-rw-r--r--arm9/asm/NNS_G3D_1mat1shp.s143
-rw-r--r--arm9/asm/NNS_G3D_3dsmax.s466
-rw-r--r--arm9/asm/NNS_G3D_anm.s352
-rw-r--r--arm9/asm/NNS_G3D_basic.s62
-rw-r--r--arm9/asm/NNS_G3D_cgtool.s23
-rw-r--r--arm9/asm/NNS_G3D_gecom.s197
-rw-r--r--arm9/asm/NNS_G3D_glbstate.s355
-rw-r--r--arm9/asm/NNS_G3D_kernel.s858
-rw-r--r--arm9/asm/NNS_G3D_maya.s594
-rw-r--r--arm9/asm/NNS_G3D_mem.s25
-rw-r--r--arm9/asm/NNS_G3D_model.s656
-rw-r--r--arm9/asm/NNS_G3D_nsbca.s1591
-rw-r--r--arm9/asm/NNS_G3D_nsbma.s287
-rw-r--r--arm9/asm/NNS_G3D_nsbta.s299
-rw-r--r--arm9/asm/NNS_G3D_nsbtp.s180
-rw-r--r--arm9/asm/NNS_G3D_nsbva.s49
-rw-r--r--arm9/asm/NNS_G3D_res_struct_acce.s317
-rw-r--r--arm9/asm/NNS_G3D_sbc.s2738
-rw-r--r--arm9/asm/NNS_G3D_si3d.s359
-rw-r--r--arm9/asm/NNS_G3D_util.s349
-rw-r--r--arm9/asm/NNS_G3D_xsi.s477
-rw-r--r--arm9/asm/NNS_GFD_gfd_frameplttvr.s165
-rw-r--r--arm9/asm/NNS_GFD_gfd_frametexvra.s316
-rw-r--r--arm9/asm/NNS_GFD_gfd_linkedlistp.s152
-rw-r--r--arm9/asm/NNS_GFD_gfd_linkedlistt.s283
-rw-r--r--arm9/asm/NNS_GFD_gfd_plttvramman.s26
-rw-r--r--arm9/asm/NNS_GFD_gfd_texvramman.s26
-rw-r--r--arm9/asm/NNS_GFD_gfd_vramtransfe.s592
-rw-r--r--arm9/asm/NNS_GFD_gfdi_linkedlist.s261
-rw-r--r--arm9/asm/NNS_SND_capture.s680
-rw-r--r--arm9/asm/NNS_SND_fader.s63
-rw-r--r--arm9/asm/NNS_SND_heap.s282
-rw-r--r--arm9/asm/NNS_SND_main.s125
-rw-r--r--arm9/asm/NNS_SND_player.s877
-rw-r--r--arm9/asm/NNS_SND_resource_mgr.s129
-rw-r--r--arm9/asm/NNS_SND_seqdata.s23
-rw-r--r--arm9/asm/NNS_SND_sndarc.s525
-rw-r--r--arm9/asm/NNS_SND_sndarc_loader.s872
-rw-r--r--arm9/asm/NNS_SND_sndarc_player.s261
-rw-r--r--arm9/asm/NNS_SND_sndarc_stream.s263
-rw-r--r--arm9/asm/NNS_SND_stream.s456
-rw-r--r--arm9/asm/NNS_SND_waveout.s240
-rw-r--r--arm9/asm/RTC_internal.s53
-rw-r--r--arm9/asm/WIFI_stubsmd5_dummy.s25
-rw-r--r--arm9/asm/macros/function.inc5
-rw-r--r--arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s92
-rw-r--r--arm9/asm/scrcmd_10.s76
-rw-r--r--arm9/asm/scrcmd_12.s4
-rw-r--r--arm9/asm/scrcmd_17.s12
-rw-r--r--arm9/asm/scrcmd_18.s144
-rw-r--r--arm9/asm/scrcmd_2.s391
-rw-r--r--arm9/asm/scrcmd_21.s465
-rw-r--r--arm9/asm/scrcmd_24.s316
-rw-r--r--arm9/asm/scrcmd_3.s134
-rw-r--r--arm9/asm/scrcmd_5.s12
-rw-r--r--arm9/asm/scrcmd_6.s399
-rw-r--r--arm9/asm/scrcmd_7.s76
-rw-r--r--arm9/asm/scrcmd_8.s234
-rw-r--r--arm9/asm/scrcmd_9.s24
-rw-r--r--arm9/asm/scrcmd_asm.s1404
-rw-r--r--arm9/asm/sndlib.s4758
-rw-r--r--arm9/asm/unk_020010A8.s1514
-rw-r--r--arm9/asm/unk_02001B80.s48
-rw-r--r--arm9/asm/unk_020023C0.s16
-rw-r--r--arm9/asm/unk_02002C14.s22
-rw-r--r--arm9/asm/unk_02002F08.s10
-rw-r--r--arm9/asm/unk_020030E8.s18
-rw-r--r--arm9/asm/unk_020040F4.s230
-rw-r--r--arm9/asm/unk_020051F4.s66
-rw-r--r--arm9/asm/unk_02005CFC.s12
-rw-r--r--arm9/asm/unk_02006864.s698
-rw-r--r--arm9/asm/unk_02006D98.s46
-rw-r--r--arm9/asm/unk_02008AA4.s26
-rw-r--r--arm9/asm/unk_02008DEC.s250
-rw-r--r--arm9/asm/unk_02009EAC.s40
-rw-r--r--arm9/asm/unk_0200BA78.s86
-rw-r--r--arm9/asm/unk_0200BB14.s2135
-rw-r--r--arm9/asm/unk_0200CABC.s70
-rw-r--r--arm9/asm/unk_0200E1D0.s12
-rw-r--r--arm9/asm/unk_0200E850.s38
-rw-r--r--arm9/asm/unk_02011744.s1872
-rw-r--r--arm9/asm/unk_02012004.s787
-rw-r--r--arm9/asm/unk_02012944.s471
-rw-r--r--arm9/asm/unk_02012CC8.s92
-rw-r--r--arm9/asm/unk_02013CD4.s78
-rw-r--r--arm9/asm/unk_02014590.s8
-rw-r--r--arm9/asm/unk_02014BF4.s96
-rw-r--r--arm9/asm/unk_02016B94.s9653
-rw-r--r--arm9/asm/unk_0201B1A8.s108
-rw-r--r--arm9/asm/unk_0201B4E8.s2
-rw-r--r--arm9/asm/unk_0201B6D0.s44
-rw-r--r--arm9/asm/unk_0201C24C.s22
-rw-r--r--arm9/asm/unk_0201C360.s4
-rw-r--r--arm9/asm/unk_0201C7A0.s14
-rw-r--r--arm9/asm/unk_0201CC08.s12
-rw-r--r--arm9/asm/unk_0201D040.s60
-rw-r--r--arm9/asm/unk_0201E00C.s32
-rw-r--r--arm9/asm/unk_0201E7D8.s84
-rw-r--r--arm9/asm/unk_0201F06C.s252
-rw-r--r--arm9/asm/unk_02020C44.s154
-rw-r--r--arm9/asm/unk_0202134C.s6
-rw-r--r--arm9/asm/unk_02021590.s4
-rw-r--r--arm9/asm/unk_02022318.s14
-rw-r--r--arm9/asm/unk_02022504.s53
-rw-r--r--arm9/asm/unk_02023AC4.s2
-rw-r--r--arm9/asm/unk_020250A4.s2
-rw-r--r--arm9/asm/unk_02025954.s42
-rw-r--r--arm9/asm/unk_02026CD0.s164
-rw-r--r--arm9/asm/unk_020281E0.s24
-rw-r--r--arm9/asm/unk_02028980.s4
-rw-r--r--arm9/asm/unk_02029AE0.s14
-rw-r--r--arm9/asm/unk_02029EC4.s149
-rw-r--r--arm9/asm/unk_02029FB0.s8
-rw-r--r--arm9/asm/unk_0202A924.s14
-rw-r--r--arm9/asm/unk_0202AC20.s18
-rw-r--r--arm9/asm/unk_0202B374.s10
-rw-r--r--arm9/asm/unk_0202B870.s2
-rw-r--r--arm9/asm/unk_0202BE98.s6
-rw-r--r--arm9/asm/unk_0202D394.s2
-rw-r--r--arm9/asm/unk_0202D4C4.s2
-rw-r--r--arm9/asm/unk_0202D858.s90
-rw-r--r--arm9/asm/unk_0202D8D0.s4
-rw-r--r--arm9/asm/unk_0202DB14.s2
-rw-r--r--arm9/asm/unk_0202E29C.s1970
-rw-r--r--arm9/asm/unk_02031480.s405
-rw-r--r--arm9/asm/unk_02031734.s4136
-rw-r--r--arm9/asm/unk_020336C0.s8
-rw-r--r--arm9/asm/unk_02033778.s60
-rw-r--r--arm9/asm/unk_020337E8.s74
-rw-r--r--arm9/asm/unk_02033874.s2
-rw-r--r--arm9/asm/unk_02033B68.s4
-rw-r--r--arm9/asm/unk_02033F50.s2
-rw-r--r--arm9/asm/unk_02034188.s2
-rw-r--r--arm9/asm/unk_020343A8.s26
-rw-r--r--arm9/asm/unk_02034A28.s20
-rw-r--r--arm9/asm/unk_02034E84.s2
-rw-r--r--arm9/asm/unk_02034FE4.s4
-rw-r--r--arm9/asm/unk_02035068.s22
-rw-r--r--arm9/asm/unk_020372D4.s6
-rw-r--r--arm9/asm/unk_020377F0.s8
-rw-r--r--arm9/asm/unk_02038C78.s1136
-rw-r--r--arm9/asm/unk_02047500.s4
-rw-r--r--arm9/asm/unk_020476CC.s28
-rw-r--r--arm9/asm/unk_02048120.s8
-rw-r--r--arm9/asm/unk_020484A8.s2
-rw-r--r--arm9/asm/unk_02048904.s26
-rw-r--r--arm9/asm/unk_0204A368.s2
-rw-r--r--arm9/asm/unk_0204A498.s6
-rw-r--r--arm9/asm/unk_0204AF24.s8
-rw-r--r--arm9/asm/unk_0204B0A0.s302
-rw-r--r--arm9/asm/unk_0204B34C.s4
-rw-r--r--arm9/asm/unk_0204B9EC.s14
-rw-r--r--arm9/asm/unk_0204C1B4.s12
-rw-r--r--arm9/asm/unk_0204CB20.s24
-rw-r--r--arm9/asm/unk_0204FBA8.s2
-rw-r--r--arm9/asm/unk_02050E48.s32
-rw-r--r--arm9/asm/unk_020520AC.s8
-rw-r--r--arm9/asm/unk_02052EE8.s10
-rw-r--r--arm9/asm/unk_0205363C.s4
-rw-r--r--arm9/asm/unk_02053750.s24
-rw-r--r--arm9/asm/unk_02055068.s16
-rw-r--r--arm9/asm/unk_020557F4.s10
-rw-r--r--arm9/asm/unk_02057380.s62
-rw-r--r--arm9/asm/unk_02058EE8.s4
-rw-r--r--arm9/asm/unk_02059F04.s12
-rw-r--r--arm9/asm/unk_0205AD98.s14
-rw-r--r--arm9/asm/unk_0205BEF8.s2
-rw-r--r--arm9/asm/unk_0205C334.s2
-rw-r--r--arm9/asm/unk_0205C598.s14
-rw-r--r--arm9/asm/unk_0205DD18.s18
-rw-r--r--arm9/asm/unk_0205EC84.s4
-rw-r--r--arm9/asm/unk_0205F314.s6
-rw-r--r--arm9/asm/unk_0205F7A0.s4
-rw-r--r--arm9/asm/unk_0206015C.s233
-rw-r--r--arm9/asm/unk_02060344.s2
-rw-r--r--arm9/asm/unk_020603B0.s12
-rw-r--r--arm9/asm/unk_020607D4.s12
-rw-r--r--arm9/asm/unk_02060CCC.s42
-rw-r--r--arm9/asm/unk_020625EC.s38
-rw-r--r--arm9/asm/unk_02063888.s2
-rw-r--r--arm9/asm/unk_02063948.s2
-rw-r--r--arm9/asm/unk_0206439C.s22
-rw-r--r--arm9/asm/unk_020643C0.s16
-rw-r--r--arm9/asm/unk_020647A4.s8
-rw-r--r--arm9/asm/unk_02064CA8.s6
-rw-r--r--arm9/asm/unk_020653EC.s50
-rw-r--r--arm9/asm/unk_0206BF90.s2
-rw-r--r--arm9/asm/unk_0206C700.s20
-rw-r--r--arm9/asm/unk_0206DE24.s28
-rw-r--r--arm9/asm/unk_0206E0F0.s8
-rw-r--r--arm9/asm/unk_0206F3FC.s34
-rw-r--r--arm9/asm/unk_02072548.s60
-rw-r--r--arm9/asm/unk_02073DA8.s38
-rw-r--r--arm9/asm/unk_0207550C.s14
-rw-r--r--arm9/asm/unk_020772F0.s80
-rw-r--r--arm9/asm/unk_020799E8.s8
-rw-r--r--arm9/asm/unk_02079C70.s20
-rw-r--r--arm9/asm/unk_0207D5BC.s96
-rw-r--r--arm9/asm/unk_0207EF6C.s8
-rw-r--r--arm9/asm/unk_02080C38.s26
-rw-r--r--arm9/asm/unk_020828BC.s28
-rw-r--r--arm9/asm/unk_020834D0.s16
-rw-r--r--arm9/asm/unk_02083D48.s2
-rw-r--r--arm9/asm/unk_020859C0.s16
-rw-r--r--arm9/asm/unk_02086414.s54
-rw-r--r--arm9/asm/unk_02086FA8.s6
-rw-r--r--arm9/asm/unk_02087A6C.s56
-rw-r--r--arm9/asm/unk_02088320.s10
-rw-r--r--arm9/asm/unk_0208890C.s73
-rw-r--r--arm9/asm/unk_02088AAC.s4
-rw-r--r--arm9/asm/unk_02088D1C.s10
-rw-r--r--arm9/asm/unk_020893E0.s8
-rw-r--r--arm9/asm/unk_02089498.s4
-rw-r--r--arm9/asm/unk_02089960.s4
-rw-r--r--arm9/asm/unk_02089D90.s2
-rw-r--r--arm9/asm/unk_02089F24.s4
-rw-r--r--arm9/asm/unk_0208A300.s49
-rw-r--r--arm9/asm/unk_0208A338.s28
-rw-r--r--arm9/asm/unk_0208AC14.s56
-rw-r--r--arm9/asm/unk_020ADA84.s23258
-rw-r--r--arm9/global.inc1900
-rw-r--r--arm9/lib/include/MI_memory.h10
-rw-r--r--arm9/lib/include/NNS_SND_arc.h38
-rw-r--r--arm9/lib/include/NNS_SND_arc_loader.h12
-rw-r--r--arm9/lib/include/NNS_SND_heap.h11
-rw-r--r--arm9/lib/include/NNS_g2d.h212
-rw-r--r--arm9/lib/include/RTC_api.h83
-rw-r--r--arm9/lib/include/RTC_internal.h11
-rw-r--r--arm9/lib/include/gx.h15
-rw-r--r--arm9/lib/include/registers.h142
-rw-r--r--arm9/lib/src/FX_sincos.c4105
-rw-r--r--arm9/lib/src/RTC_internal.c31
-rw-r--r--arm9/modules/04/asm/thumb_04.s34
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s28
-rw-r--r--arm9/modules/05/asm/mod05_021D7F4C.s6
-rw-r--r--arm9/modules/05/asm/mod05_021D80E8.s6
-rw-r--r--arm9/modules/05/asm/mod05_021D9320.s20
-rw-r--r--arm9/modules/05/asm/mod05_021D9A48.s92
-rw-r--r--arm9/modules/05/asm/mod05_021DA5B8.s36
-rw-r--r--arm9/modules/05/asm/mod05_021DB44C.s20
-rw-r--r--arm9/modules/05/asm/mod05_021DB900.s16
-rw-r--r--arm9/modules/05/asm/mod05_021DBA00.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DBABC.s44
-rw-r--r--arm9/modules/05/asm/mod05_021DBD84.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DBE04.s4
-rw-r--r--arm9/modules/05/asm/mod05_021DBEF4.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DC0B8.s62
-rw-r--r--arm9/modules/05/asm/mod05_021E1374.s8
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s34
-rw-r--r--arm9/modules/05/asm/mod05_021E2B80.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E2E88.s22
-rw-r--r--arm9/modules/05/asm/mod05_021E3444.s42
-rw-r--r--arm9/modules/05/asm/mod05_021E4AE4.s48
-rw-r--r--arm9/modules/05/asm/mod05_021E55BC.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E577C.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E5918.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E5AB4.s10
-rw-r--r--arm9/modules/05/asm/mod05_021E5C8C.s8
-rw-r--r--arm9/modules/05/asm/mod05_021E5E10.s8
-rw-r--r--arm9/modules/05/asm/mod05_021E5FD8.s26
-rw-r--r--arm9/modules/05/asm/mod05_021E779C.s6
-rw-r--r--arm9/modules/05/asm/mod05_021E7C00.s28
-rw-r--r--arm9/modules/05/asm/mod05_021E8310.s10
-rw-r--r--arm9/modules/05/asm/module_05.s384
-rw-r--r--arm9/modules/05/src/mod05_021E72FC.c4
-rw-r--r--arm9/modules/06/asm/module_06.s546
-rw-r--r--arm9/modules/06/include/module_06.h14
-rw-r--r--arm9/modules/07/asm/module_07.s42
-rw-r--r--arm9/modules/08/asm/module_08.s308
-rw-r--r--arm9/modules/09/asm/module_09.s252
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s28
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s194
-rw-r--r--arm9/modules/11/src/module_11_sinit.c3
-rw-r--r--arm9/modules/12/asm/module_12.s290
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s60
-rw-r--r--arm9/modules/14/asm/module_14.s336
-rw-r--r--arm9/modules/15/asm/module_15.s126
-rw-r--r--arm9/modules/16/asm/module_16.s676
-rw-r--r--arm9/modules/17/asm/module_17.s210
-rw-r--r--arm9/modules/18/asm/module_18.s539
-rw-r--r--arm9/modules/19/asm/module_19.s6
-rw-r--r--arm9/modules/20/asm/module_20.s102
-rw-r--r--arm9/modules/21/src/mod21_02254854.c2
-rw-r--r--arm9/modules/21/src/mod21_02254A6C.c12
-rw-r--r--arm9/modules/22/asm/module_22.s8
-rw-r--r--arm9/modules/23/asm/module_23.s4
-rw-r--r--arm9/modules/24/asm/module_24.s34
-rw-r--r--arm9/modules/25/asm/module_25.s6
-rw-r--r--arm9/modules/27/asm/module_27.s14
-rw-r--r--arm9/modules/28/asm/module_28.s8
-rw-r--r--arm9/modules/29/asm/module_29.s6
-rw-r--r--arm9/modules/30/asm/module_30.s8
-rw-r--r--arm9/modules/31/asm/module_31.s8
-rw-r--r--arm9/modules/32/asm/module_32.s6
-rw-r--r--arm9/modules/33/asm/module_33.s4
-rw-r--r--arm9/modules/34/asm/module_34.s4
-rw-r--r--arm9/modules/35/asm/module_35.s6
-rw-r--r--arm9/modules/36/asm/module_36.s20
-rw-r--r--arm9/modules/37/asm/module_37.s6
-rw-r--r--arm9/modules/38/asm/module_38.s10
-rw-r--r--arm9/modules/39/asm/module_39.s6
-rw-r--r--arm9/modules/40/asm/module_40.s8
-rw-r--r--arm9/modules/41/asm/module_41.s8
-rw-r--r--arm9/modules/42/asm/module_42.s6
-rw-r--r--arm9/modules/43/asm/module_43.s8
-rw-r--r--arm9/modules/44/asm/module_44.s6
-rw-r--r--arm9/modules/45/asm/module_45.s6
-rw-r--r--arm9/modules/46/asm/module_46.s4
-rw-r--r--arm9/modules/47/asm/module_47.s16
-rw-r--r--arm9/modules/48/asm/module_48.s6
-rw-r--r--arm9/modules/49/asm/module_49.s2
-rw-r--r--arm9/modules/50/asm/module_50.s4
-rw-r--r--arm9/modules/51/asm/module_51.s20
-rw-r--r--arm9/modules/52/include/module_52.h36
-rw-r--r--arm9/modules/52/src/module_52.c677
-rw-r--r--arm9/modules/53/asm/module_53.s34
-rw-r--r--arm9/modules/54/asm/module_54.s54
-rw-r--r--arm9/modules/55/asm/module_55.s90
-rw-r--r--arm9/modules/56/asm/module_56.s138
-rw-r--r--arm9/modules/57/asm/module_57.s114
-rw-r--r--arm9/modules/58/asm/module_58.s32
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s56
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s16
-rw-r--r--arm9/modules/60/asm/module_60.s18
-rw-r--r--arm9/modules/61/asm/module_61.s16
-rw-r--r--arm9/modules/62/asm/module_62.s76
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s62
-rw-r--r--arm9/modules/63/asm/mod63_021D8890.s126
-rw-r--r--arm9/modules/63/asm/mod63_021DA640.s4
-rw-r--r--arm9/modules/63/asm/mod63_021DAE5C.s6
-rw-r--r--arm9/modules/63/src/mod63_021DB450.c12
-rw-r--r--arm9/modules/64/asm/module_64.s124
-rw-r--r--arm9/modules/65/asm/module_65.s64
-rw-r--r--arm9/modules/66/asm/module_66.s28
-rw-r--r--arm9/modules/67/asm/module_67.s18
-rw-r--r--arm9/modules/68/asm/module_68.s40
-rw-r--r--arm9/modules/69/asm/module_69.s78
-rw-r--r--arm9/modules/70/asm/module_70.s34
-rw-r--r--arm9/modules/71/asm/module_71.s106
-rw-r--r--arm9/modules/73/asm/module_73.s168
-rw-r--r--arm9/modules/74/asm/module_74.s12
-rw-r--r--arm9/modules/75/asm/module_75.s190
-rw-r--r--arm9/modules/76/asm/module_76.s54
-rw-r--r--arm9/modules/77/asm/module_77.s74
-rw-r--r--arm9/modules/78/asm/module_78.s30
-rw-r--r--arm9/modules/80/asm/module_80.s348
-rw-r--r--arm9/modules/81/asm/module_81.s280
-rw-r--r--arm9/modules/82/asm/module_82.s38
-rw-r--r--arm9/modules/83/asm/module_83.s176
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s74
-rw-r--r--arm9/modules/84/asm/module_84_thumb2.s170
-rw-r--r--arm9/modules/85/asm/module_85.s138
-rw-r--r--arm9/modules/86/asm/module_86.s28
-rw-r--r--arm9/src/GX_layers.c3
-rw-r--r--arm9/src/WIFI_stubsmd5_dummy.c17
-rw-r--r--arm9/src/error_handling.c5
-rw-r--r--arm9/src/error_message_reset.c41
-rw-r--r--arm9/src/filesystem.c20
-rw-r--r--arm9/src/game_init.c62
-rw-r--r--arm9/src/gf_gfx_loader.c349
-rw-r--r--arm9/src/gf_rtc.c183
-rw-r--r--arm9/src/heap.c69
-rw-r--r--arm9/src/itemtool.c2
-rw-r--r--arm9/src/list_menu.c572
-rw-r--r--arm9/src/list_menu_items.c92
-rw-r--r--arm9/src/main.c94
-rw-r--r--arm9/src/math_util.c609
-rw-r--r--arm9/src/overlay_manager.c4
-rw-r--r--arm9/src/poke_overlay.c16
-rw-r--r--arm9/src/pokedex.c46
-rw-r--r--arm9/src/pokemon.c10
-rw-r--r--arm9/src/sav_chatot.c98
-rw-r--r--arm9/src/save.c2
-rw-r--r--arm9/src/save_arrays.c6
-rw-r--r--arm9/src/scrcmd.c83
-rw-r--r--arm9/src/scrcmd_20.c35
-rw-r--r--arm9/src/scrcmd_24.c276
-rw-r--r--arm9/src/scrcmd_8.c88
-rw-r--r--arm9/src/scrcmd_berry_trees.c (renamed from arm9/src/scrcmd_11.c)18
-rw-r--r--arm9/src/scrcmd_coins.c6
-rw-r--r--arm9/src/scrcmd_daycare.c10
-rw-r--r--arm9/src/scrcmd_flags.c284
-rw-r--r--arm9/src/scrcmd_fossils.c (renamed from arm9/src/scrcmd_19.c)38
-rw-r--r--arm9/src/scrcmd_mart.c442
-rw-r--r--arm9/src/scrcmd_money.c6
-rw-r--r--arm9/src/scrcmd_names.c18
-rw-r--r--arm9/src/scrcmd_prizes.c36
-rw-r--r--arm9/src/scrcmd_sound.c266
-rw-r--r--arm9/src/scrcmd_underground.c (renamed from arm9/src/scrcmd_23.c)32
-rw-r--r--arm9/src/script.c2
-rw-r--r--arm9/src/script_buffers.c23
-rw-r--r--arm9/src/script_pokemon_util.c2
-rw-r--r--arm9/src/sound.c95
-rw-r--r--arm9/src/text.c246
-rw-r--r--arm9/src/text_02054590.c51
-rw-r--r--arm9/src/unk_0200BA78.c36
-rw-r--r--arm9/src/unk_0200BB14.c1323
-rw-r--r--arm9/src/unk_0200CA44.c10
-rw-r--r--arm9/src/unk_02015E30.c30
-rw-r--r--arm9/src/unk_02016B94.c8110
-rw-r--r--arm9/src/unk_02021934.c46
-rw-r--r--arm9/src/unk_02022504.c32
-rw-r--r--arm9/src/unk_02024E64.c6
-rw-r--r--arm9/src/unk_02025484.c4
-rw-r--r--arm9/src/unk_020286F8.c9
-rw-r--r--arm9/src/unk_0202ABBC.c6
-rw-r--r--arm9/src/unk_0202D858.c96
-rw-r--r--arm9/src/unk_0202E29C.c1087
-rw-r--r--arm9/src/unk_0202F150.c84
-rw-r--r--arm9/src/unk_02031480.c213
-rw-r--r--arm9/src/unk_02031734.c2173
-rw-r--r--arm9/src/unk_02033778.c33
-rw-r--r--arm9/src/unk_020337E8.c50
-rw-r--r--arm9/src/unk_0204639C.c11
-rw-r--r--arm9/src/unk_0204AEA8.c4
-rw-r--r--arm9/src/unk_0204B0A0.c198
-rw-r--r--arm9/src/unk_0205FA2C.c52
-rw-r--r--arm9/src/unk_0206015C.c149
-rw-r--r--arm9/src/unk_0206439C.c16
-rw-r--r--arm9/src/unk_0208890C.c53
-rw-r--r--arm9/src/unk_0208A300.c38
-rw-r--r--files/itemtool/itemdata/item_icon/.gitignore10
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0166.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0166.pngbin0 -> 289 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0167.NCLRbin552 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0168.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0168.pngbin0 -> 277 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0169.NCLRbin552 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0170.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0170.pngbin0 -> 306 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0171.NCLRbin552 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0172.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0172.pngbin0 -> 306 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0173.NCLRbin552 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0174.NCGRbin560 -> 0 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0174.pngbin0 -> 289 bytes
-rw-r--r--files/itemtool/itemdata/item_icon/narc_0175.NCLRbin552 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/.gitignore23
-rw-r--r--files/poketool/icongra/poke_icon/narc_0002.json1
-rw-r--r--files/poketool/icongra/poke_icon/narc_0004.json1
-rw-r--r--files/poketool/icongra/poke_icon/narc_0006.NCERbin202 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0006.json68
-rw-r--r--files/poketool/icongra/poke_icon/narc_0017.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0017.pngbin0 -> 277 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0018.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0018.pngbin0 -> 241 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0019.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0019.pngbin0 -> 421 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0020.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0020.pngbin0 -> 279 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0021.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0021.pngbin0 -> 266 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0022.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0022.pngbin0 -> 437 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0023.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0023.pngbin0 -> 364 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0024.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0024.pngbin0 -> 387 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0025.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0025.pngbin0 -> 456 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0026.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0026.pngbin0 -> 318 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0027.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0027.pngbin0 -> 374 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0028.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0028.pngbin0 -> 346 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0029.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0029.pngbin0 -> 465 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0030.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0030.pngbin0 -> 333 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0031.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0031.pngbin0 -> 373 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0032.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0032.pngbin0 -> 353 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0033.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0033.pngbin0 -> 411 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0034.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0034.pngbin0 -> 338 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0035.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0035.pngbin0 -> 402 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0036.NCGRbin1072 -> 0 bytes
-rw-r--r--files/poketool/icongra/poke_icon/narc_0036.pngbin0 -> 287 bytes
-rw-r--r--filesystem.mk43
-rw-r--r--graphics_rules.mk58
-rw-r--r--include/GX_layers.h45
-rw-r--r--include/WIFI_stubsmd5_dummy.h11
-rw-r--r--include/constants/decorations.h144
-rw-r--r--include/error_handling.h2
-rw-r--r--include/error_message_reset.h28
-rw-r--r--include/font.h6
-rw-r--r--include/gf_gfx_loader.h23
-rw-r--r--include/gf_rtc.h31
-rw-r--r--include/global.h2
-rw-r--r--include/heap.h26
-rw-r--r--include/list_menu.h88
-rw-r--r--include/list_menu_cursor.h17
-rw-r--r--include/list_menu_items.h21
-rw-r--r--include/main.h30
-rw-r--r--include/overlay_manager.h4
-rw-r--r--include/sav_chatot.h24
-rw-r--r--include/sav_system_info.h2
-rw-r--r--include/scrcmd.h185
-rw-r--r--include/script.h11
-rw-r--r--include/script_buffers.h5
-rw-r--r--include/sdat.h47
-rw-r--r--include/sound.h33
-rw-r--r--include/text.h86
-rw-r--r--include/text_02054590.h19
-rw-r--r--include/timer3.h12
-rw-r--r--include/unk_0200BA78.h19
-rw-r--r--include/unk_0200BB14.h243
-rw-r--r--include/unk_0200CA44.h10
-rw-r--r--include/unk_02015E30.h6
-rw-r--r--include/unk_02016B94.h340
-rw-r--r--include/unk_02022504.h14
-rw-r--r--include/unk_02024E64.h20
-rw-r--r--include/unk_02025484.h2
-rw-r--r--include/unk_020286F8.h4
-rw-r--r--include/unk_0202D858.h10
-rw-r--r--include/unk_0202E29C.h142
-rw-r--r--include/unk_0202F150.h182
-rw-r--r--include/unk_02031480.h30
-rw-r--r--include/unk_02031734.h215
-rw-r--r--include/unk_02033778.h9
-rw-r--r--include/unk_020337E8.h25
-rw-r--r--include/unk_020377F0.h30
-rw-r--r--include/unk_0204639C.h12
-rw-r--r--include/unk_0204B0A0.h25
-rw-r--r--include/unk_0205FA2C.h57
-rw-r--r--include/unk_0206015C.h30
-rw-r--r--include/unk_0206439C.h15
-rw-r--r--include/unk_0208890C.h25
-rw-r--r--include/unk_02088DD8.h19
-rw-r--r--include/unk_0208A300.h17
-rwxr-xr-xtools/asm_processor/asm_processor.py14
-rw-r--r--tools/fixrom/fixrom.c125
-rw-r--r--tools/knarc/Narc.cpp46
-rw-r--r--tools/knarc/Source.cpp5
-rw-r--r--tools/nitrogfx/gfx.c3
-rw-r--r--tools/nitrogfx/json.c3
-rw-r--r--tools/nitrogfx/options.h1
-rw-r--r--tools/o2narc/o2narc.cpp64
582 files changed, 62105 insertions, 63765 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4e0f34ea..af5b3cfd 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,14 +12,14 @@ env:
jobs:
build:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-20.04
steps:
- name: Update and Install Software
run: |
sudo apt update
sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade
- sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi
+ sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full
sudo dpkg --add-architecture i386
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport
@@ -31,19 +31,19 @@ jobs:
run: |
mkdir -p ~/download
cd ~/download
- wget http://private.martmists.com/mwccarm.zip
- wget http://private.martmists.com/nitro.tar.gz
+ wget https://cdn.discordapp.com/attachments/698589325620936736/845499146982129684/mwccarm.zip
+ wget https://cdn.discordapp.com/attachments/698589325620936736/722822401963851797/NitroSDK-3_2-060901.7z
unzip mwccarm.zip
mv mwccarm $GITHUB_WORKSPACE/tools
- tar xzf nitro.tar.gz
- mv tools/bin $GITHUB_WORKSPACE/tools
- mv include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7
- mv include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9
+ 7z x NitroSDK-3_2-060901.7z
+ mv NitroSDK-3_2-060901/tools/bin $GITHUB_WORKSPACE/tools
+ mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7
+ mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9
working-directory: ~
- name: Build Diamond
run: make diamond
- name: Build Pearl
- run: make pearl
+ run: make pearl
- name: Webhook
run: |
sudo chmod 755 $GITHUB_WORKSPACE/.github/calcrom/webhook.sh
diff --git a/.gitignore b/.gitignore
index fcfaecac..c10cf159 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,3 +49,4 @@ symbols.csv
*.arc
files/**/*.c
*.o
+*.naix
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e21a731a..92d8aea2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,6 @@
-cmake_minimum_required (VERSION 2.8.11)
+cmake_minimum_required (VERSION 3.15)
+set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
project(PokeDiamond)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)
@@ -13,10 +15,7 @@ endif(APPLE)
add_compile_options(-fms-extensions)
-file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
-
-add_executable(PokeDiamond ${SOURCES})
-target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/05/include arm9/modules/21/include arm9/modules/59/include arm9/modules/63/include)
+add_subdirectory(arm9)
add_executable(calcrom .github/calcrom/calcrom.cpp)
target_include_directories(calcrom PRIVATE /usr/local/include)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f36b82d0..6bbcd13c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
# Contributing guide for Pokémon Diamond
-**As the repository is in a volatile state, contribution is closed to the public until further notice.**
+**The repository is in a volatile state.**
This is a living document which lays out the procedure for decompiling the game code of Pokémon Diamond Version (5.0-US) for the Nintendo DS.
diff --git a/Makefile b/Makefile
index 19d85350..e1a40cdb 100644
--- a/Makefile
+++ b/Makefile
@@ -162,6 +162,7 @@ clean: mostlyclean clean-fs clean-tools
clean-fs:
$(RM) $(filter %.narc %.arc,$(HOSTFS_FILES))
+ $(RM) $(patsubst %.narc,%.naix,$(patsubst %.arc,%.naix,$(filter %.narc %.arc,$(HOSTFS_FILES))))
$(RM) $(NCGR_CLEAN_LIST) $(NCLR_CLEAN_LIST) $(NCER_CLEAN_LIST) $(NSCR_CLEAN_LIST)
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' \) -exec $(RM) {} +
$(RM) files/msgdata/msg/narc_*.bin
@@ -204,7 +205,7 @@ $(BUILD_DIR)/%.o: %.c $$(dep)
$(BUILD_DIR)/%.o: %.s $$(dep)
$(AS) $(ASFLAGS) $< -o $@
-arm9:
+arm9: filesystem
$(MAKE) -C arm9 $(MAKE_VARS)
arm7:
@@ -214,7 +215,7 @@ include filesystem.mk
# TODO: Rules for Pearl
# FIXME: Computed secure area CRC in header is incorrect due to first 8 bytes of header not actually being "encryObj"
-$(ROM): rom.rsf arm9 arm7 filesystem $(BNR) tools/bin/rom_header.template.sbin
+$(ROM): rom.rsf arm9 arm7 $(BNR) tools/bin/rom_header.template.sbin
$(MAKEROM) -DBUILD_DIR="$(BUILD_DIR)" -DBNR="$(BNR)" -DTITLE_NAME="$(TITLE_NAME)" -DNITROFS_FILES="$(NITROFS_FILES)" $< $@
ifeq ($(SHIFTED),0)
$(FIXROM) $@ --secure-crc $(SECURE_CRC) --game-code $(GAME_CODE)
diff --git a/arm9/CMakeLists.txt b/arm9/CMakeLists.txt
new file mode 100644
index 00000000..0de93feb
--- /dev/null
+++ b/arm9/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required (VERSION 3.15)
+set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
+project(DP_Arm9)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_C_STANDARD 11)
+
+# TODO: Add commands
+
+enable_language(ASM)
+
+add_compile_options(-fms-extensions)
+
+file(GLOB_RECURSE SOURCES "*.c" "*.cpp")
+file(GLOB MODULE_INC modules/*/include)
+
+add_executable(DP_Arm9 ${SOURCES})
+target_include_directories(DP_Arm9 PRIVATE ../include ../include-mw lib/include ${MODULE_INC} ../files)
+target_compile_definitions(DP_Arm9 PUBLIC __CLION_IDE__)
diff --git a/arm9/Makefile b/arm9/Makefile
index 8b84a135..2ad29363 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -54,7 +54,7 @@ SRC_DIRS := src lib lib/src $(sort $(wildcard modules/*/src))
ASM_DIRS := asm data files $(sort $(wildcard modules/*/asm))
LIBASM_DIRS := lib/syscall
INCLUDE_RECURSIVE_DIRS := ../include-mw lib/include
-INCLUDE_DIRS := ../include $(sort $(wildcard modules/*/include))
+INCLUDE_DIRS := ../include $(sort $(wildcard modules/*/include)) ../files
C_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.c)))
CXX_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.cpp)))
@@ -110,7 +110,7 @@ ASM_PROCESSOR := $(ASM_PROCESSOR_DIR)/compile.sh
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
ASFLAGS = -proc arm5te -i ../include -i .. -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
-CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
+CFLAGS = -O4,p -gccext,on -proc arm946e -ipa file -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
LDFLAGS = -nodead -w off -proc v5te -interworking -map closure,unused -symtab sort -m _start
LIBS := -Llib -lsyscall
@@ -192,6 +192,10 @@ ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(LIB
# TODO: Move out to lib/Makefile
$(BUILD_DIR)/lib/%.o: MWCCVERSION = 1.2/sp2p3
+$(BUILD_DIR)/lib/%.o: CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -interworking -DFS_IMPLEMENT -enum int -W all -i ../include -ir ../include-mw -ir lib/include
+
+# FIXME: Using -ipa file breaks .rodata alignment
+$(BUILD_DIR)/src/math_util.o: CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
####################### Everything Else ######################
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index dee43fd0..fa609048 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -6,7 +6,7 @@ Static arm9
{
Address 0x02000000
Object main.o
- Object unk_020010A8.o
+ Object list_menu.o
Object unk_02001B80.o
Object string_util.o
Object unk_020023C0.o
@@ -21,7 +21,7 @@ Static arm9
Object unk_020061E8.o
Object overlay_manager.o
Object filesystem.o
- Object unk_02006864.o
+ Object gf_gfx_loader.o
Object unk_02006D98.o
Object unk_02008AA4.o
Object unk_02008DEC.o
@@ -36,6 +36,10 @@ Static arm9
Object unk_0200E850.o
Object unk_0201137C.o
Object unk_02011744.o
+ Object unk_02012004.o
+ Object gf_rtc.o
+ Object list_menu_items.o
+ Object unk_02012944.o
Object unk_02012CC8.o
Object mail_message.o
Object unk_020139D8.o
@@ -107,7 +111,7 @@ Static arm9
Object seal_case.o
Object unk_02029CEC.o
Object igt.o
- Object unk_02029EC4.o
+ Object sav_chatot.o
Object unk_02029FB0.o
Object unk_0202A1E0.o
Object unk_0202A8F4.o
@@ -153,16 +157,16 @@ Static arm9
Object unk_02038C78.o
Object scrcmd.o
Object scrcmd_asm.o
- Object scrcmd_2.o
+ Object scrcmd_mart.o
Object scrcmd_3.o
Object scrcmd_names.o
Object scrcmd_5.o
- Object scrcmd_6.o
+ Object scrcmd_sound.o
Object scrcmd_7.o
Object scrcmd_8.o
Object scrcmd_9.o
Object scrcmd_10.o
- Object scrcmd_11.o
+ Object scrcmd_berry_trees.o
Object scrcmd_12.o
Object scrcmd_13.o
Object scrcmd_coins.o
@@ -171,11 +175,11 @@ Static arm9
Object scrcmd_17.o
Object scrcmd_18_c.o
Object scrcmd_18.o
- Object scrcmd_19.o
- Object scrcmd_20.o
- Object scrcmd_21.o
+ Object scrcmd_fossils.o
+ Object scrcmd_prizes.o
+ Object scrcmd_flags.o
Object scrcmd_items.o
- Object scrcmd_23.o
+ Object scrcmd_underground.o
Object scrcmd_24.o
Object scrcmd_25.o
Object unk_02046030.o
@@ -352,8 +356,81 @@ Static arm9
Object WCM_util.o
Object WIFI_stubsmd5_dummy.o
Object libVCT.o
- Object unk_020ADA84.o
- Object sndlib.o
+ ### Nitro System SDK ###
+ Object NNS_FND_list.o
+ Object NNS_FND_heapcommon.o
+ Object NNS_FND_expheap.o
+ Object NNS_FND_frameheap.o
+ Object NNS_FND_allocator.o
+ Object NNS_GFD_gfd_texvramman.o
+ Object NNS_GFD_gfd_plttvramman.o
+ Object NNS_GFD_gfd_frametexvra.o
+ Object NNS_GFD_gfd_frameplttvr.o
+ Object NNS_GFD_gfd_vramtransfe.o
+ Object NNS_GFD_gfdi_linkedlist.o
+ Object NNS_GFD_gfd_linkedlistt.o
+ Object NNS_GFD_gfd_linkedlistp.o
+ Object NNS_G2D_g2d_nan_load.o
+ Object NNS_G2D_g2d_nob_load.o
+ Object NNS_G2D_g2d_nmc_load.o
+ Object NNS_G2D_g2d_ncg_load.o
+ Object NNS_G2D_g2d_ncl_load.o
+ Object NNS_G2D_g2d_nsc_load.o
+ Object NNS_G2D_g2d_load.o
+ Object NNS_G2D_g2d_softsprite.o
+ Object NNS_G2D_g2d_animation.o
+ Object NNS_G2D_g2d_oam.o
+ Object NNS_G2D_g2d_palettetabl.o
+ Object NNS_G2D_g2d_image.o
+ Object NNS_G2D_g2d_srtcontrol.o
+ Object NNS_G2D_g2d_node.o
+ Object NNS_G2D_g2d_cellanimati.o
+ Object NNS_G2D_g2d_multicellan.o
+ Object NNS_G2D_g2d_renderer.o
+ Object NNS_G2D_g2di_mtx32.o
+ Object NNS_G2D_g2d_celltransfe.o
+ Object NNS_G2D_g2d_oamsoftware.o
+ Object NNS_G2D_g2d_renderercor.o
+ Object NNS_G2D_g2d_font.o
+ Object NNS_G2D_g2d_charcanvas.o
+ Object NNS_G2D_g2d_textcanvas.o
+ Object NNS_G2D_g2d_nft_load.o
+ Object NNS_G2D_g2di_bitreader.o
+ Object NNS_G2D_g2di_splitchar.o
+ Object NNS_G3D_kernel.o
+ Object NNS_G3D_glbstate.o
+ Object NNS_G3D_anm.o
+ Object NNS_G3D_cgtool.o
+ Object NNS_G3D_sbc.o
+ Object NNS_G3D_1mat1shp.o
+ Object NNS_G3D_gecom.o
+ Object NNS_G3D_util.o
+ Object NNS_G3D_mem.o
+ Object NNS_G3D_model.o
+ Object NNS_G3D_res_struct_acce.o
+ Object NNS_G3D_nsbca.o
+ Object NNS_G3D_nsbma.o
+ Object NNS_G3D_nsbta.o
+ Object NNS_G3D_nsbtp.o
+ Object NNS_G3D_nsbva.o
+ Object NNS_G3D_basic.o
+ Object NNS_G3D_maya.o
+ Object NNS_G3D_si3d.o
+ Object NNS_G3D_3dsmax.o
+ Object NNS_G3D_xsi.o
+ Object NNS_SND_main.o
+ Object NNS_SND_resource_mgr.o
+ Object NNS_SND_waveout.o
+ Object NNS_SND_player.o
+ Object NNS_SND_stream.o
+ Object NNS_SND_capture.o
+ Object NNS_SND_sndarc.o
+ Object NNS_SND_heap.o
+ Object NNS_SND_sndarc_loader.o
+ Object NNS_SND_sndarc_player.o
+ Object NNS_SND_sndarc_stream.o
+ Object NNS_SND_seqdata.o
+ Object NNS_SND_fader.o
### Nitro SDK ###
Object FX_mtx22.o
Object FX_mtx33.o
@@ -361,6 +438,7 @@ Static arm9
Object FX_mtx44.o
Object FX_cp.o
Object FX_vec.o
+ Object FX_sincos.o
Object FX_atan.o
Object FX.o
Object GX.o
diff --git a/arm9/asm/NNS_FND_allocator.s b/arm9/asm/NNS_FND_allocator.s
new file mode 100644
index 00000000..537ce6a0
--- /dev/null
+++ b/arm9/asm/NNS_FND_allocator.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .rodata
+ ; static const in function
+
+ .global sAllocatorFunc$7864
+sAllocatorFunc$7864: ; 0x020FF7CC
+ .word AllocatorAllocForExpHeap
+ .word AllocatorFreeForExpHeap
+ .text
+
+ arm_func_start NNS_FndInitAllocatorForExpHeap
+NNS_FndInitAllocatorForExpHeap: ; 0x020AE82C
+ ldr ip, _020AE848 ; =sAllocatorFunc$7864
+ mov r3, #0x0
+ str r12, [r0, #0x0]
+ str r1, [r0, #0x4]
+ str r2, [r0, #0x8]
+ str r3, [r0, #0xc]
+ bx lr
+ .balign 4
+_020AE848: .word sAllocatorFunc$7864
+ arm_func_end NNS_FndInitAllocatorForExpHeap
+
+ arm_func_start NNS_FndFreeToAllocator
+NNS_FndFreeToAllocator: ; 0x020AE84C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x0]
+ ldr r2, [r2, #0x4]
+ blx r2
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndFreeToAllocator
+
+ arm_func_start NNS_FndAllocFromAllocator
+NNS_FndAllocFromAllocator: ; 0x020AE868
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x0]
+ ldr r2, [r2, #0x0]
+ blx r2
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndAllocFromAllocator
+
+ arm_func_start AllocatorFreeForExpHeap
+AllocatorFreeForExpHeap: ; 0x020AE884
+ ldr ip, _020AE890 ; =NNS_FndFreeToExpHeap
+ ldr r0, [r0, #0x4]
+ bx r12
+ .balign 4
+_020AE890: .word NNS_FndFreeToExpHeap
+ arm_func_end AllocatorFreeForExpHeap
+
+ arm_func_start AllocatorAllocForExpHeap
+AllocatorAllocForExpHeap: ; 0x020AE894
+ ldr ip, _020AE8A8 ; =NNS_FndAllocFromExpHeapEx
+ mov r2, r0
+ ldr r0, [r2, #0x4]
+ ldr r2, [r2, #0x8]
+ bx r12
+ .balign 4
+_020AE8A8: .word NNS_FndAllocFromExpHeapEx
+ arm_func_end AllocatorAllocForExpHeap
diff --git a/arm9/asm/NNS_FND_expheap.s b/arm9/asm/NNS_FND_expheap.s
new file mode 100644
index 00000000..e94dba38
--- /dev/null
+++ b/arm9/asm/NNS_FND_expheap.s
@@ -0,0 +1,583 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern NNSi_FndInitHeapHead
+ .extern NNSi_FndFinalizeHeap
+ .text
+
+ arm_func_start NNS_FndGetSizeForMBlockExpHeap
+NNS_FndGetSizeForMBlockExpHeap: ; 0x020ADDC0
+ ldr r0, [r0, #-0xc]
+ bx lr
+ arm_func_end NNS_FndGetSizeForMBlockExpHeap
+
+ arm_func_start NNS_FndGetTotalFreeSizeForExpHeap
+NNS_FndGetTotalFreeSizeForExpHeap: ; 0x020ADDC8
+ ldr r2, [r0, #0x24]
+ mov r0, #0x0
+ cmp r2, #0x0
+ bxeq lr
+_020ADDD8:
+ ldr r1, [r2, #0x4]
+ ldr r2, [r2, #0xc]
+ add r0, r0, r1
+ cmp r2, #0x0
+ bne _020ADDD8
+ bx lr
+ arm_func_end NNS_FndGetTotalFreeSizeForExpHeap
+
+ arm_func_start NNS_FndFreeToExpHeap
+NNS_FndFreeToExpHeap: ; 0x020ADDF0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ sub r4, r1, #0x10
+ add r5, r0, #0x24
+ add r0, sp, #0x0
+ mov r1, r4
+ bl GetRegionOfMBlock
+ mov r1, r4
+ add r0, r5, #0x8
+ bl RemoveMBlock
+ add r1, sp, #0x0
+ mov r0, r5
+ bl RecycleRegion
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNS_FndFreeToExpHeap
+
+ arm_func_start NNS_FndResizeForMBlockExpHeap
+NNS_FndResizeForMBlockExpHeap: ; 0x020ADE2C
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x10
+ mov r4, r1
+ mov r10, r2
+ sub r6, r4, #0x10
+ add r1, r10, #0x3
+ mov r5, r0
+ ldr r8, [r6, #0x4]
+ bic r10, r1, #0x3
+ cmp r10, r8
+ add r7, r5, #0x24
+ addeq sp, sp, #0x10
+ moveq r0, r10
+ ldmeqia sp!, {r4-r10,pc}
+ cmp r10, r8
+ bls _020ADF60
+ ldr r9, [r7, #0x0]
+ add r0, r6, #0x10
+ cmp r9, #0x0
+ add r0, r8, r0
+ beq _020ADE94
+_020ADE80:
+ cmp r9, r0
+ beq _020ADE94
+ ldr r9, [r9, #0xc]
+ cmp r9, #0x0
+ bne _020ADE80
+_020ADE94:
+ cmp r9, #0x0
+ beq _020ADEB0
+ ldr r0, [r9, #0x4]
+ add r1, r8, #0x10
+ add r0, r1, r0
+ cmp r10, r0
+ bls _020ADEBC
+_020ADEB0:
+ add sp, sp, #0x10
+ mov r0, #0x0
+ ldmia sp!, {r4-r10,pc}
+_020ADEBC:
+ add r0, sp, #0x0
+ mov r1, r9
+ bl GetRegionOfMBlock
+ mov r0, r7
+ mov r1, r9
+ bl RemoveMBlock
+ ldr r2, [sp, #0x4]
+ add r3, r10, r4
+ ldr r9, [sp, #0x0]
+ sub r1, r2, r3
+ str r3, [sp, #0x0]
+ cmp r1, #0x10
+ strcc r2, [sp, #0x0]
+ mov r8, r0
+ ldr r0, [sp, #0x0]
+ sub r0, r0, r4
+ str r0, [r6, #0x4]
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r0, r1, r0
+ cmp r0, #0x10
+ blo _020ADF30
+ ldr r1, _020ADF9C ; =0x00004652
+ add r0, sp, #0x0
+ bl InitMBlock
+ mov r1, r0
+ mov r0, r7
+ mov r2, r8
+ bl InsertMBlock
+_020ADF30:
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #0x0]
+ and r0, r0, #0xff
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ sub r2, r1, r9
+ ands r0, r0, #0x1
+ beq _020ADF90
+ mov r1, r9
+ mov r0, #0x0
+ bl MIi_CpuClear32
+ b _020ADF90
+_020ADF60:
+ add r0, r10, r4
+ str r0, [sp, #0x8]
+ ldr r1, [r6, #0x4]
+ add r0, r6, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ add r1, sp, #0x8
+ mov r0, r7
+ str r10, [r6, #0x4]
+ bl RecycleRegion
+ cmp r0, #0x0
+ streq r8, [r6, #0x4]
+_020ADF90:
+ ldr r0, [r6, #0x4]
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020ADF9C: .word 0x00004652
+ arm_func_end NNS_FndResizeForMBlockExpHeap
+
+ arm_func_start NNS_FndAllocFromExpHeapEx
+NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x0
+ moveq r1, #0x1
+ add r1, r1, #0x3
+ cmp r2, #0x0
+ bic r1, r1, #0x3
+ blt _020ADFCC
+ bl AllocFromHead
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020ADFCC:
+ rsb r2, r2, #0x0
+ bl AllocFromTail
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndAllocFromExpHeapEx
+
+ arm_func_start NNS_FndDestroyExpHeap
+NNS_FndDestroyExpHeap: ; 0x020ADFDC
+ ldr ip, _020ADFE4 ; =NNSi_FndFinalizeHeap
+ bx r12
+ .balign 4
+_020ADFE4: .word NNSi_FndFinalizeHeap
+ arm_func_end NNS_FndDestroyExpHeap
+
+ arm_func_start NNS_FndCreateExpHeapEx
+NNS_FndCreateExpHeapEx: ; 0x020ADFE8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ add r1, r1, r0
+ add r0, r0, #0x3
+ bic r1, r1, #0x3
+ bic r0, r0, #0x3
+ cmp r0, r1
+ bhi _020AE014
+ sub r3, r1, r0
+ cmp r3, #0x4c
+ bhs _020AE020
+_020AE014:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {pc}
+_020AE020:
+ bl InitExpHeap
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndCreateExpHeapEx
+
+ arm_func_start RecycleRegion
+RecycleRegion:
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r5, r1
+ ldr r2, [r5, #0x0]
+ ldr r1, [r5, #0x4]
+ mov r6, r0
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [r6, #0x0]
+ mov r4, #0x0
+ cmp r1, #0x0
+ beq _020AE0A0
+ ldr r0, [r5, #0x0]
+_020AE060:
+ cmp r1, r0
+ movcc r4, r1
+ blo _020AE094
+ ldr r0, [r5, #0x4]
+ cmp r1, r0
+ bne _020AE0A0
+ ldr r2, [r1, #0x4]
+ add r0, r1, #0x10
+ add r2, r2, r0
+ mov r0, r6
+ str r2, [sp, #0x4]
+ bl RemoveMBlock
+ b _020AE0A0
+_020AE094:
+ ldr r1, [r1, #0xc]
+ cmp r1, #0x0
+ bne _020AE060
+_020AE0A0:
+ cmp r4, #0x0
+ beq _020AE0D4
+ ldr r2, [r4, #0x4]
+ add r1, r4, #0x10
+ ldr r0, [r5, #0x0]
+ add r1, r2, r1
+ cmp r1, r0
+ bne _020AE0D4
+ mov r0, r6
+ mov r1, r4
+ str r4, [sp, #0x0]
+ bl RemoveMBlock
+ mov r4, r0
+_020AE0D4:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ sub r0, r1, r0
+ cmp r0, #0x10
+ addcc sp, sp, #0x8
+ movcc r0, #0x0
+ ldmccia sp!, {r4-r6,pc}
+ ldr r1, _020AE118 ; =0x00004652
+ add r0, sp, #0x0
+ bl InitMBlock
+ mov r1, r0
+ mov r0, r6
+ mov r2, r4
+ bl InsertMBlock
+ mov r0, #0x1
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020AE118: .word 0x00004652
+ arm_func_end RecycleRegion
+
+ local_arm_func_start AllocFromTail
+AllocFromTail: ; 0x020AE11C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ add r0, r0, #0x24
+ ldrh r4, [r0, #0x12]
+ mov r3, r1
+ mvn lr, #0x0
+ and r1, r4, #0x1
+ mov r1, r1, lsl #0x10
+ movs r1, r1, lsr #0x10
+ moveq r5, #0x1
+ mov r1, #0x0
+ ldr r4, [r0, #0x4]
+ movne r5, #0x0
+ mov r12, r1
+ cmp r4, #0x0
+ beq _020AE1B0
+ sub r2, r2, #0x1
+ mvn r2, r2
+_020AE164:
+ ldr r8, [r4, #0x4]
+ add r9, r4, #0x10
+ add r6, r8, r9
+ sub r6, r6, r3
+ and r7, r2, r6
+ subs r6, r7, r9
+ bmi _020AE1A4
+ cmp lr, r8
+ bls _020AE1A4
+ mov r1, r4
+ mov lr, r8
+ mov r12, r7
+ cmp r5, #0x0
+ bne _020AE1B0
+ cmp r8, r3
+ beq _020AE1B0
+_020AE1A4:
+ ldr r4, [r4, #0x8]
+ cmp r4, #0x0
+ bne _020AE164
+_020AE1B0:
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9,pc}
+ mov r4, #0x1
+ mov r2, r12
+ str r4, [sp, #0x0]
+ bl AllocUsedBlockFromFreeBlock
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end AllocFromTail
+
+ local_arm_func_start AllocFromHead
+AllocFromHead: ; 0x020AE1D8
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ add r0, r0, #0x24
+ ldrh r4, [r0, #0x12]
+ mov r3, r1
+ ldr r5, [r0, #0x0]
+ and r1, r4, #0x1
+ mov r1, r1, lsl #0x10
+ movs r1, r1, lsr #0x10
+ moveq r6, #0x1
+ mov r1, #0x0
+ movne r6, #0x0
+ mov lr, r1
+ cmp r5, #0x0
+ mvn r4, #0x0
+ beq _020AE270
+ sub r12, r2, #0x1
+ mvn r2, r12
+_020AE220:
+ add r8, r5, #0x10
+ add r7, r12, r8
+ and r9, r2, r7
+ sub r7, r9, r8
+ ldr r8, [r5, #0x4]
+ add r7, r3, r7
+ cmp r8, r7
+ blo _020AE264
+ cmp r4, r8
+ bls _020AE264
+ mov r1, r5
+ mov r4, r8
+ mov lr, r9
+ cmp r6, #0x0
+ bne _020AE270
+ cmp r8, r3
+ beq _020AE270
+_020AE264:
+ ldr r5, [r5, #0xc]
+ cmp r5, #0x0
+ bne _020AE220
+_020AE270:
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9,pc}
+ mov r4, #0x0
+ mov r2, lr
+ str r4, [sp, #0x0]
+ bl AllocUsedBlockFromFreeBlock
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end AllocFromHead
+
+ arm_func_start AllocUsedBlockFromFreeBlock
+AllocUsedBlockFromFreeBlock: ; 0x020AE298
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x18
+ mov r7, r0
+ add r0, sp, #0x0
+ mov r8, r1
+ mov r6, r2
+ mov r5, r3
+ bl GetRegionOfMBlock
+ ldr r3, [sp, #0x4]
+ sub r4, r6, #0x10
+ add r2, r5, r6
+ mov r0, r7
+ mov r1, r8
+ str r4, [sp, #0x4]
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x8]
+ bl RemoveMBlock
+ ldr r2, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ mov r5, r0
+ sub r0, r1, r2
+ cmp r0, #0x10
+ strcc r2, [sp, #0x4]
+ blo _020AE318
+ ldr r1, _020AE418 ; =0x00004652
+ add r0, sp, #0x0
+ bl InitMBlock
+ mov r1, r0
+ mov r0, r7
+ mov r2, r5
+ bl InsertMBlock
+ mov r5, r0
+_020AE318:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ sub r0, r1, r0
+ cmp r0, #0x10
+ strcc r1, [sp, #0x8]
+ blo _020AE34C
+ ldr r1, _020AE418 ; =0x00004652
+ add r0, sp, #0x8
+ bl InitMBlock
+ mov r1, r0
+ mov r0, r7
+ mov r2, r5
+ bl InsertMBlock
+_020AE34C:
+ ldr r0, [r7, #-0x4]
+ ldr r1, [sp, #0x4]
+ and r0, r0, #0xff
+ mov r0, r0, lsl #0x10
+ ldr r2, [sp, #0x8]
+ mov r0, r0, lsr #0x10
+ sub r2, r2, r1
+ ands r0, r0, #0x1
+ beq _020AE378
+ mov r0, #0x0
+ bl MIi_CpuClear32
+_020AE378:
+ ldr r2, [sp, #0x8]
+ ldr r1, _020AE41C ; =0x00005544
+ add r0, sp, #0x10
+ str r4, [sp, #0x10]
+ str r2, [sp, #0x14]
+ bl InitMBlock
+ mov r1, r0
+ ldrh r3, [r1, #0x2]
+ ldrh r2, [sp, #0x30]
+ add r0, r7, #0x8
+ bic r3, r3, #0x8000
+ strh r3, [r1, #0x2]
+ ldrh r3, [r1, #0x2]
+ and r2, r2, #0x1
+ orr r2, r3, r2, lsl #0xf
+ strh r2, [r1, #0x2]
+ ldrh r2, [r1, #0x2]
+ ldr r3, [sp, #0x4]
+ bic r2, r2, #0x7f00
+ strh r2, [r1, #0x2]
+ sub r2, r1, r3
+ mov r2, r2, lsl #0x10
+ mov r2, r2, lsr #0x10
+ ldrh r3, [r1, #0x2]
+ and r2, r2, #0x7f
+ orr r2, r3, r2, lsl #0x8
+ strh r2, [r1, #0x2]
+ ldrh r2, [r1, #0x2]
+ ldrh r3, [r7, #0x10]
+ bic r2, r2, #0xff
+ strh r2, [r1, #0x2]
+ ldrh r2, [r1, #0x2]
+ and r3, r3, #0xff
+ orr r2, r2, r3
+ strh r2, [r1, #0x2]
+ ldr r2, [r7, #0xc]
+ bl InsertMBlock
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020AE418: .word 0x00004652
+_020AE41C: .word 0x00005544
+ arm_func_end AllocUsedBlockFromFreeBlock
+
+ arm_func_start InitExpHeap
+InitExpHeap: ; 0x020AE420
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r3, r1
+ add r4, r5, #0x24
+ str r2, [sp, #0x0]
+ ldr r1, _020AE498 ; =0x45585048
+ add r2, r4, #0x14
+ bl NNSi_FndInitHeapHead
+ mov r0, #0x0
+ strh r0, [r4, #0x10]
+ strh r0, [r4, #0x12]
+ ldrh r2, [r4, #0x12]
+ ldr r1, _020AE49C ; =0x00004652
+ add r0, sp, #0x4
+ bic r2, r2, #0x1
+ strh r2, [r4, #0x12]
+ ldr r2, [r5, #0x18]
+ str r2, [sp, #0x4]
+ ldr r2, [r5, #0x1c]
+ str r2, [sp, #0x8]
+ bl InitMBlock
+ str r0, [r5, #0x24]
+ str r0, [r4, #0x4]
+ mov r1, #0x0
+ str r1, [r4, #0x8]
+ mov r0, r5
+ str r1, [r4, #0xc]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AE498: .word 0x45585048
+_020AE49C: .word 0x00004652
+ arm_func_end InitExpHeap
+
+ arm_func_start InitMBlock
+InitMBlock: ; 0x020AE4A0
+ ldr r3, [r0, #0x0]
+ mov r2, #0x0
+ strh r1, [r3, #0x0]
+ strh r2, [r3, #0x2]
+ ldr r1, [r0, #0x4]
+ add r0, r3, #0x10
+ sub r0, r1, r0
+ str r0, [r3, #0x4]
+ str r2, [r3, #0x8]
+ mov r0, r3
+ str r2, [r3, #0xc]
+ bx lr
+ arm_func_end InitMBlock
+
+ arm_func_start InsertMBlock
+InsertMBlock: ; 0x020AE4D0
+ str r2, [r1, #0x8]
+ cmp r2, #0x0
+ ldrne r3, [r2, #0xc]
+ strne r1, [r2, #0xc]
+ ldreq r3, [r0, #0x0]
+ streq r1, [r0, #0x0]
+ str r3, [r1, #0xc]
+ cmp r3, #0x0
+ strne r1, [r3, #0x8]
+ streq r1, [r0, #0x4]
+ mov r0, r1
+ bx lr
+ arm_func_end InsertMBlock
+
+ arm_func_start RemoveMBlock
+RemoveMBlock: ; 0x020AE500
+ ldr r2, [r1, #0x8]
+ ldr r1, [r1, #0xc]
+ cmp r2, #0x0
+ strne r1, [r2, #0xc]
+ streq r1, [r0, #0x0]
+ cmp r1, #0x0
+ strne r2, [r1, #0x8]
+ streq r2, [r0, #0x4]
+ mov r0, r2
+ bx lr
+ arm_func_end RemoveMBlock
+
+ arm_func_start GetRegionOfMBlock
+GetRegionOfMBlock: ; 0x020AE528
+ ldrh r2, [r1, #0x2]
+ add r3, r1, #0x10
+ mov r2, r2, asr #0x8
+ and r2, r2, #0x7f
+ mov r2, r2, lsl #0x10
+ sub r2, r1, r2, lsr #0x10
+ str r2, [r0, #0x0]
+ ldr r1, [r1, #0x4]
+ add r1, r1, r3
+ str r1, [r0, #0x4]
+ bx lr
+ arm_func_end GetRegionOfMBlock
diff --git a/arm9/asm/NNS_FND_frameheap.s b/arm9/asm/NNS_FND_frameheap.s
new file mode 100644
index 00000000..cfa221d4
--- /dev/null
+++ b/arm9/asm/NNS_FND_frameheap.s
@@ -0,0 +1,243 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern NNSi_FndInitHeapHead
+ .extern NNSi_FndFinalizeHeap
+ .text
+
+ arm_func_start NNS_FndFreeByStateToFrmHeap
+NNS_FndFreeByStateToFrmHeap: ; 0x020AE554
+ add r2, r0, #0x24
+ cmp r1, #0x0
+ ldr r3, [r2, #0x8]
+ beq _020AE584
+ cmp r3, #0x0
+ beq _020AE584
+_020AE56C:
+ ldr r0, [r3, #0x0]
+ cmp r0, r1
+ beq _020AE584
+ ldr r3, [r3, #0xc]
+ cmp r3, #0x0
+ bne _020AE56C
+_020AE584:
+ cmp r3, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ ldr r1, [r3, #0x4]
+ mov r0, #0x1
+ str r1, [r2, #0x0]
+ ldr r1, [r3, #0x8]
+ str r1, [r2, #0x4]
+ ldr r1, [r3, #0xc]
+ str r1, [r2, #0x8]
+ bx lr
+ arm_func_end NNS_FndFreeByStateToFrmHeap
+
+ arm_func_start NNS_FndRecordStateForFrmHeap
+NNS_FndRecordStateForFrmHeap: ; 0x020AE5B0
+ stmdb sp!, {r4-r6,lr}
+ add r4, r0, #0x24
+ ldr r5, [r0, #0x24]
+ mov r6, r1
+ mov r0, r4
+ mov r1, #0x10
+ mov r2, #0x4
+ bl AllocFromHead
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ str r6, [r0, #0x0]
+ str r5, [r0, #0x4]
+ ldr r1, [r4, #0x4]
+ str r1, [r0, #0x8]
+ ldr r1, [r4, #0x8]
+ str r1, [r0, #0xc]
+ str r0, [r4, #0x8]
+ mov r0, #0x1
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_FndRecordStateForFrmHeap
+
+ arm_func_start NNS_FndFreeToFrmHeap
+NNS_FndFreeToFrmHeap: ; 0x020AE600
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r5, r0
+ ands r1, r4, #0x1
+ beq _020AE61C
+ bl FreeHead
+_020AE61C:
+ ands r0, r4, #0x2
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ mov r0, r5
+ bl FreeTail
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNS_FndFreeToFrmHeap
+
+ arm_func_start NNS_FndAllocFromFrmHeapEx
+NNS_FndAllocFromFrmHeapEx: ; 0x020AE638
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x0
+ moveq r1, #0x1
+ add r1, r1, #0x3
+ add r0, r0, #0x24
+ cmp r2, #0x0
+ bic r1, r1, #0x3
+ blt _020AE668
+ bl AllocFromHead
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020AE668:
+ rsb r2, r2, #0x0
+ bl AllocFromTail
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndAllocFromFrmHeapEx
+
+ arm_func_start NNS_FndDestroyFrmHeap
+NNS_FndDestroyFrmHeap: ; 0x020AE678
+ ldr ip, _020AE680 ; =NNSi_FndFinalizeHeap
+ bx r12
+ .balign 4
+_020AE680: .word NNSi_FndFinalizeHeap
+ arm_func_end NNS_FndDestroyFrmHeap
+
+ arm_func_start NNS_FndCreateFrmHeapEx
+NNS_FndCreateFrmHeapEx: ; 0x020AE684
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ add r1, r1, r0
+ add r0, r0, #0x3
+ bic r1, r1, #0x3
+ bic r0, r0, #0x3
+ cmp r0, r1
+ bhi _020AE6B0
+ sub r3, r1, r0
+ cmp r3, #0x30
+ bhs _020AE6BC
+_020AE6B0:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {pc}
+_020AE6BC:
+ bl InitFrameHeap
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndCreateFrmHeapEx
+
+ arm_func_start FreeTail
+FreeTail: ; 0x020AE6C8
+ add r2, r0, #0x24
+ ldr r3, [r2, #0x8]
+ cmp r3, #0x0
+ beq _020AE6EC
+_020AE6D8:
+ ldr r1, [r0, #0x1c]
+ str r1, [r3, #0x8]
+ ldr r3, [r3, #0xc]
+ cmp r3, #0x0
+ bne _020AE6D8
+_020AE6EC:
+ ldr r0, [r0, #0x1c]
+ str r0, [r2, #0x4]
+ bx lr
+ arm_func_end FreeTail
+
+ arm_func_start FreeHead
+FreeHead: ; 0x020AE6F8
+ ldr r1, [r0, #0x18]
+ add r2, r0, #0x24
+ str r1, [r0, #0x24]
+ mov r0, #0x0
+ str r0, [r2, #0x8]
+ bx lr
+ arm_func_end FreeHead
+
+ local_arm_func_start AllocFromTail
+AllocFromTail: ; 0x020AE710
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r3, [r5, #0x4]
+ sub r0, r2, #0x1
+ mvn r2, r0
+ sub r1, r3, r1
+ ldr r0, [r5, #0x0]
+ and r4, r2, r1
+ cmp r4, r0
+ addcc sp, sp, #0x4
+ movcc r0, #0x0
+ ldmccia sp!, {r4-r5,pc}
+ ldr r0, [r5, #-0x4]
+ sub r2, r3, r4
+ and r0, r0, #0xff
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ ands r0, r0, #0x1
+ beq _020AE76C
+ mov r1, r4
+ mov r0, #0x0
+ bl MIi_CpuClear32
+_020AE76C:
+ mov r0, r4
+ str r4, [r5, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end AllocFromTail
+
+ local_arm_func_start AllocFromHead
+AllocFromHead:
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldr r0, [r6, #0x0]
+ sub r2, r2, #0x1
+ mvn r3, r2
+ add r2, r2, r0
+ and r5, r3, r2
+ ldr r2, [r6, #0x4]
+ add r4, r1, r5
+ cmp r4, r2
+ movhi r0, #0x0
+ ldmhiia sp!, {r4-r6,pc}
+ ldr r1, [r6, #-0x4]
+ sub r2, r4, r0
+ and r1, r1, #0xff
+ mov r1, r1, lsl #0x10
+ mov r1, r1, lsr #0x10
+ ands r1, r1, #0x1
+ beq _020AE7D4
+ mov r1, r0
+ mov r0, #0x0
+ bl MIi_CpuClear32
+_020AE7D4:
+ mov r0, r5
+ str r4, [r6, #0x0]
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end AllocFromHead
+
+ arm_func_start InitFrameHeap
+InitFrameHeap: ; 0x020AE7E0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r3, r1
+ add r4, r5, #0x24
+ str r2, [sp, #0x0]
+ ldr r1, _020AE828 ; =0x46524D48
+ add r2, r4, #0xc
+ bl NNSi_FndInitHeapHead
+ ldr r0, [r5, #0x18]
+ mov r1, #0x0
+ str r0, [r5, #0x24]
+ ldr r2, [r5, #0x1c]
+ mov r0, r5
+ str r2, [r4, #0x4]
+ str r1, [r4, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AE828: .word 0x46524D48
+ arm_func_end InitFrameHeap
diff --git a/arm9/asm/NNS_FND_heapcommon.s b/arm9/asm/NNS_FND_heapcommon.s
new file mode 100644
index 00000000..ca3108d2
--- /dev/null
+++ b/arm9/asm/NNS_FND_heapcommon.s
@@ -0,0 +1,112 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sRootListInitialized
+sRootListInitialized: ; 0x021CCD38
+ .space 0x4
+
+ .global sRootList
+sRootList: ; 0x021CCD3C
+ .space 0xc
+ .text
+
+ arm_func_start NNSi_FndFinalizeHeap
+NNSi_FndFinalizeHeap: ; 0x020ADC8C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl FindListContainHeap
+ mov r1, r4
+ bl NNS_FndRemoveListObject
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_FndFinalizeHeap
+
+ arm_func_start NNSi_FndInitHeapHead
+NNSi_FndInitHeapHead:
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ str r1, [r4, #0x0]
+ str r2, [r4, #0x18]
+ str r3, [r4, #0x1c]
+ mov r0, #0x0
+ str r0, [r4, #0x20]
+ ldr r1, [r4, #0x20]
+ ldrh r0, [sp, #0x8]
+ bic r1, r1, #0xff
+ str r1, [r4, #0x20]
+ ldr r1, [r4, #0x20]
+ and r0, r0, #0xff
+ orr r2, r1, r0
+ add r0, r4, #0xc
+ mov r1, #0x4
+ str r2, [r4, #0x20]
+ bl NNS_FndInitList
+ ldr r0, _020ADD28 ; =sRootListInitialized
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020ADD14
+ ldr r0, _020ADD2C ; =sRootList
+ mov r1, #0x4
+ bl NNS_FndInitList
+ ldr r0, _020ADD28 ; =sRootListInitialized
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020ADD14:
+ mov r0, r4
+ bl FindListContainHeap
+ mov r1, r4
+ bl NNS_FndAppendListObject
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020ADD28: .word sRootListInitialized
+_020ADD2C: .word sRootList
+ arm_func_end NNSi_FndInitHeapHead
+
+ arm_func_start FindListContainHeap
+FindListContainHeap: ; 0x020ADD30
+ stmdb sp!, {r4,lr}
+ ldr r4, _020ADD54 ; =sRootList
+ mov r1, r0
+ mov r0, r4
+ bl FindContainHeap
+ cmp r0, #0x0
+ addne r4, r0, #0xc
+ mov r0, r4
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020ADD54: .word sRootList
+ arm_func_end FindListContainHeap
+
+ arm_func_start FindContainHeap
+FindContainHeap:
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r1
+ mov r1, #0x0
+ mov r6, r0
+ bl NNS_FndGetNextListObject
+ movs r4, r0
+ beq _020ADDB8
+_020ADD74:
+ ldr r0, [r4, #0x18]
+ cmp r0, r5
+ bhi _020ADDA4
+ ldr r0, [r4, #0x1c]
+ cmp r5, r0
+ bhs _020ADDA4
+ mov r1, r5
+ add r0, r4, #0xc
+ bl FindContainHeap
+ cmp r0, #0x0
+ moveq r0, r4
+ ldmia sp!, {r4-r6,pc}
+_020ADDA4:
+ mov r0, r6
+ mov r1, r4
+ bl NNS_FndGetNextListObject
+ movs r4, r0
+ bne _020ADD74
+_020ADDB8:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end FindContainHeap
diff --git a/arm9/asm/NNS_FND_list.s b/arm9/asm/NNS_FND_list.s
new file mode 100644
index 00000000..21999c11
--- /dev/null
+++ b/arm9/asm/NNS_FND_list.s
@@ -0,0 +1,169 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .text
+
+ arm_func_start NNS_FndGetPrevListObject
+NNS_FndGetPrevListObject: ; 0x020ADA84
+ cmp r1, #0x0
+ ldreq r0, [r0, #0x4]
+ ldrneh r0, [r0, #0xa]
+ ldrne r0, [r1, r0]
+ bx lr
+ arm_func_end NNS_FndGetPrevListObject
+
+ arm_func_start NNS_FndGetNextListObject
+NNS_FndGetNextListObject: ; 0x020ADA98
+ cmp r1, #0x0
+ ldreq r0, [r0, #0x0]
+ ldrneh r0, [r0, #0xa]
+ addne r0, r1, r0
+ ldrne r0, [r0, #0x4]
+ bx lr
+ arm_func_end NNS_FndGetNextListObject
+
+ arm_func_start NNS_FndRemoveListObject
+NNS_FndRemoveListObject: ; 0x020ADAB0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldrh r12, [r0, #0xa]
+ ldr r3, [r1, r12]
+ add lr, r1, r12
+ cmp r3, #0x0
+ ldreq r1, [lr, #0x4]
+ streq r1, [r0, #0x0]
+ ldrne r2, [lr, #0x4]
+ addne r1, r3, r12
+ strne r2, [r1, #0x4]
+ ldr r3, [lr, #0x4]
+ cmp r3, #0x0
+ ldreq r1, [lr, #0x0]
+ streq r1, [r0, #0x4]
+ ldrneh r1, [r0, #0xa]
+ ldrne r2, [lr, #0x0]
+ strne r2, [r3, r1]
+ mov r1, #0x0
+ str r1, [lr, #0x0]
+ str r1, [lr, #0x4]
+ ldrh r1, [r0, #0x8]
+ sub r1, r1, #0x1
+ strh r1, [r0, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndRemoveListObject
+
+ arm_func_start NNS_FndInsertListObject
+NNS_FndInsertListObject: ; 0x020ADB18
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x0
+ bne _020ADB38
+ mov r1, r2
+ bl NNS_FndAppendListObject
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020ADB38:
+ ldr r3, [r0, #0x0]
+ cmp r1, r3
+ bne _020ADB54
+ mov r1, r2
+ bl NNS_FndPrependListObject
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020ADB54:
+ ldrh lr, [r0, #0xa]
+ ldr r3, [r1, lr]
+ add r12, r2, lr
+ str r3, [r2, lr]
+ str r1, [r12, #0x4]
+ add r3, r3, lr
+ str r2, [r3, #0x4]
+ ldrh r3, [r0, #0xa]
+ str r2, [r1, r3]
+ ldrh r1, [r0, #0x8]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndInsertListObject
+
+ arm_func_start NNS_FndPrependListObject
+NNS_FndPrependListObject: ; 0x020ADB8C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ bne _020ADBAC
+ bl SetFirstObject
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020ADBAC:
+ ldrh r3, [r0, #0xa]
+ mov r2, #0x0
+ str r2, [r1, r3]
+ ldr r2, [r0, #0x0]
+ add r3, r1, r3
+ str r2, [r3, #0x4]
+ ldrh r2, [r0, #0xa]
+ ldr r3, [r0, #0x0]
+ str r1, [r3, r2]
+ str r1, [r0, #0x0]
+ ldrh r1, [r0, #0x8]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndPrependListObject
+
+ arm_func_start NNS_FndAppendListObject
+NNS_FndAppendListObject: ; 0x020ADBE8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ bne _020ADC08
+ bl SetFirstObject
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020ADC08:
+ ldrh r12, [r0, #0xa]
+ ldr r3, [r0, #0x4]
+ mov r2, #0x0
+ str r3, [r1, r12]
+ add r3, r1, r12
+ str r2, [r3, #0x4]
+ ldrh r2, [r0, #0xa]
+ ldr r3, [r0, #0x4]
+ add r2, r3, r2
+ str r1, [r2, #0x4]
+ str r1, [r0, #0x4]
+ ldrh r1, [r0, #0x8]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x8]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_FndAppendListObject
+
+ arm_func_start SetFirstObject
+SetFirstObject: ; 0x020ADC48
+ ldrh r3, [r0, #0xa]
+ mov r2, #0x0
+ add r12, r1, r3
+ str r2, [r12, #0x4]
+ str r2, [r1, r3]
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ ldrh r1, [r0, #0x8]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x8]
+ bx lr
+ arm_func_end SetFirstObject
+
+ arm_func_start NNS_FndInitList
+NNS_FndInitList: ; 0x020ADC74
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x4]
+ strh r2, [r0, #0x8]
+ strh r1, [r0, #0xa]
+ bx lr
+ arm_func_end NNS_FndInitList
diff --git a/arm9/asm/NNS_G2D_g2d_animation.s b/arm9/asm/NNS_G2D_g2d_animation.s
new file mode 100644
index 00000000..23daa1c6
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_animation.s
@@ -0,0 +1,336 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dIsAnimCtrlLoopAnim
+NNSi_G2dIsAnimCtrlLoopAnim: ; 0x020B0408
+ ldr r1, [r0, #0x14]
+ cmp r1, #0x0
+ ldreq r0, [r0, #0x18]
+ ldreq r1, [r0, #0x8]
+ cmp r1, #0x2
+ beq _020B0428
+ cmp r1, #0x4
+ bne _020B0430
+_020B0428:
+ mov r0, #0x1
+ bx lr
+_020B0430:
+ mov r0, #0x0
+ bx lr
+ arm_func_end NNSi_G2dIsAnimCtrlLoopAnim
+
+ arm_func_start NNS_G2dBindAnimCtrl
+NNS_G2dBindAnimCtrl: ; 0x020B0438
+ ldr ip, _020B0444 ; =NNS_G2dResetAnimCtrlState
+ str r1, [r0, #0x18]
+ bx r12
+ .balign 4
+_020B0444: .word NNS_G2dResetAnimCtrlState
+ arm_func_end NNS_G2dBindAnimCtrl
+
+ arm_func_start NNS_G2dResetAnimCtrlState
+NNS_G2dResetAnimCtrlState: ; 0x020B0448
+ ldr r1, [r0, #0x10]
+ cmp r1, #0x0
+ movgt r2, #0x1
+ ldr r1, [r0, #0x4]
+ movle r2, #0x0
+ eors r1, r2, r1
+ beq _020B047C
+ ldr r2, [r0, #0x18]
+ ldrh r1, [r2, #0x2]
+ ldr r2, [r2, #0xc]
+ add r1, r2, r1, lsl #0x3
+ str r1, [r0, #0x0]
+ b _020B0494
+_020B047C:
+ ldr r2, [r0, #0x18]
+ ldrh r1, [r2, #0x0]
+ ldr r2, [r2, #0xc]
+ add r1, r2, r1, lsl #0x3
+ sub r1, r1, #0x8
+ str r1, [r0, #0x0]
+_020B0494:
+ ldr ip, _020B04A4 ; =NNS_G2dTickAnimCtrl
+ mov r1, #0x0
+ str r1, [r0, #0xc]
+ bx r12
+ .balign 4
+_020B04A4: .word NNS_G2dTickAnimCtrl
+ arm_func_end NNS_G2dResetAnimCtrlState
+
+ arm_func_start NNS_G2dInitAnimCallBackFunctor
+NNS_G2dInitAnimCallBackFunctor: ; 0x020B04A8
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x8]
+ strh r1, [r0, #0xc]
+ bx lr
+ arm_func_end NNS_G2dInitAnimCallBackFunctor
+
+ arm_func_start NNS_G2dInitAnimCtrl
+NNS_G2dInitAnimCtrl: ; 0x020B04C0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ add r0, r4, #0x1c
+ bl NNS_G2dInitAnimCallBackFunctor
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+ str r1, [r4, #0x4]
+ mov r0, #0x1
+ str r0, [r4, #0x8]
+ str r1, [r4, #0xc]
+ mov r0, #0x1000
+ str r0, [r4, #0x10]
+ str r1, [r4, #0x14]
+ str r1, [r4, #0x18]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dInitAnimCtrl
+
+ arm_func_start NNS_G2dGetAnimCtrlCurrentFrame
+NNS_G2dGetAnimCtrlCurrentFrame: ; 0x020B04FC
+ ldr r1, [r0, #0x18]
+ ldr r2, [r0, #0x0]
+ ldr r0, [r1, #0xc]
+ sub r0, r2, r0
+ mov r0, r0, lsl #0xd
+ mov r0, r0, lsr #0x10
+ bx lr
+ arm_func_end NNS_G2dGetAnimCtrlCurrentFrame
+
+ arm_func_start NNS_G2dSetAnimCtrlCurrentFrame
+NNS_G2dSetAnimCtrlCurrentFrame: ; 0x020B0518
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl SetAnimCtrlCurrentFrameImpl_
+ cmp r0, #0x0
+ movne r1, #0x0
+ strne r1, [r4, #0xc]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dSetAnimCtrlCurrentFrame
+
+ arm_func_start NNS_G2dTickAnimCtrl
+NNS_G2dTickAnimCtrl: ; 0x020B0534
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ ldr r0, [r8, #0x8]
+ mov r7, #0x0
+ cmp r0, #0x1
+ movne r0, r7
+ ldmneia sp!, {r4-r8,pc}
+ ldr r2, [r8, #0x10]
+ mov r0, #0x800
+ smull r3, r1, r2, r1
+ adds r0, r3, r0
+ adc r1, r1, r7
+ mov r0, r0, lsr #0xc
+ orr r0, r0, r1, lsl #0x14
+ bl abs
+ ldr r1, [r8, #0xc]
+ add r6, r8, #0xc
+ add r0, r1, r0
+ str r0, [r8, #0xc]
+ mov r4, r7
+ mov r5, #0x1
+ b _020B06A8
+_020B058C:
+ ldr r0, [r8, #0x0]
+ ldr r1, [r6, #0x0]
+ ldrh r0, [r0, #0x4]
+ mov r7, r5
+ sub r0, r1, r0, lsl #0xc
+ str r0, [r6, #0x0]
+ ldr r0, [r8, #0x10]
+ cmp r0, #0x0
+ movgt r1, r5
+ ldr r0, [r8, #0x4]
+ movle r1, r4
+ eors r0, r1, r0
+ ldrne r0, [r8, #0x0]
+ addne r0, r0, #0x8
+ strne r0, [r8, #0x0]
+ ldreq r0, [r8, #0x0]
+ subeq r0, r0, #0x8
+ streq r0, [r8, #0x0]
+ ldr r1, [r8, #0x10]
+ ldr r0, [r8, #0x0]
+ cmp r1, #0x0
+ movgt r2, r5
+ ldr r1, [r8, #0x4]
+ movle r2, r4
+ eors r1, r2, r1
+ beq _020B0614
+ ldr r2, [r8, #0x18]
+ ldrh r1, [r2, #0x0]
+ ldr r2, [r2, #0xc]
+ add r1, r2, r1, lsl #0x3
+ cmp r0, r1
+ movcs r0, r5
+ movcc r0, r4
+ b _020B0634
+_020B0614:
+ ldr r2, [r8, #0x18]
+ ldrh r1, [r2, #0x2]
+ ldr r2, [r2, #0xc]
+ add r1, r2, r1, lsl #0x3
+ sub r1, r1, #0x8
+ cmp r0, r1
+ movls r0, r5
+ movhi r0, r4
+_020B0634:
+ cmp r0, #0x0
+ beq _020B0644
+ mov r0, r8
+ bl SequenceEdgeHandle_
+_020B0644:
+ ldr r0, [r8, #0x1c]
+ cmp r0, #0x0
+ beq _020B06A8
+ ldr r0, [r8, #0x18]
+ ldr r2, [r8, #0x1c]
+ ldr r1, [r8, #0x0]
+ ldr r0, [r0, #0xc]
+ cmp r2, #0x2
+ sub r0, r1, r0
+ mov r0, r0, lsl #0xd
+ mov r1, r0, lsr #0x10
+ beq _020B0680
+ cmp r2, #0x3
+ beq _020B069C
+ b _020B06A8
+_020B0680:
+ ldrh r0, [r8, #0x28]
+ cmp r1, r0
+ bne _020B06A8
+ ldr r0, [r8, #0x20]
+ ldr r2, [r8, #0x24]
+ blx r2
+ b _020B06A8
+_020B069C:
+ ldr r0, [r8, #0x20]
+ ldr r2, [r8, #0x24]
+ blx r2
+_020B06A8:
+ ldr r0, [r8, #0x8]
+ cmp r0, #0x0
+ beq _020B06CC
+ ldr r0, [r8, #0x0]
+ ldr r1, [r8, #0xc]
+ ldrh r0, [r0, #0x4]
+ cmp r1, r0, lsl #0xc
+ movge r0, r5
+ bge _020B06D0
+_020B06CC:
+ mov r0, r4
+_020B06D0:
+ cmp r0, #0x0
+ bne _020B058C
+ mov r0, r7
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNS_G2dTickAnimCtrl
+
+ arm_func_start NNS_G2dGetAnimCtrlCurrentElement
+NNS_G2dGetAnimCtrlCurrentElement: ; 0x020B06E0
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x0]
+ bx lr
+ arm_func_end NNS_G2dGetAnimCtrlCurrentElement
+
+ arm_func_start SetAnimCtrlCurrentFrameImpl_
+SetAnimCtrlCurrentFrameImpl_: ; 0x020B06EC
+ ldr r3, [r0, #0x18]
+ ldrh r2, [r3, #0x0]
+ cmp r1, r2
+ ldrcc r2, [r3, #0xc]
+ addcc r1, r2, r1, lsl #0x3
+ strcc r1, [r0, #0x0]
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+ arm_func_end SetAnimCtrlCurrentFrameImpl_
+
+ arm_func_start SequenceEdgeHandle_
+SequenceEdgeHandle_: ; 0x020B0710
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [r4, #0x18]
+ ldreq r0, [r0, #0x8]
+ cmp r0, #0x3
+ beq _020B0738
+ cmp r0, #0x4
+ bne _020B07B4
+_020B0738:
+ ldr r0, [r4, #0x4]
+ eor r0, r0, #0x1
+ str r0, [r4, #0x4]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x0]
+ ldrh r0, [r1, #0x2]
+ ldr r1, [r1, #0xc]
+ add r0, r1, r0, lsl #0x3
+ sub r0, r0, #0x8
+ cmp r2, r0
+ bhi _020B0800
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x1
+ bne _020B0780
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x24]
+ blx r2
+_020B0780:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [r4, #0x18]
+ ldreq r0, [r0, #0x8]
+ cmp r0, #0x2
+ beq _020B07A8
+ cmp r0, #0x4
+ movne r0, #0x0
+ strne r0, [r4, #0x8]
+ bne _020B0800
+_020B07A8:
+ mov r0, r4
+ bl NNS_G2dResetAnimCtrlState
+ b _020B0800
+_020B07B4:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x1
+ bne _020B07D0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x24]
+ blx r2
+_020B07D0:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [r4, #0x18]
+ ldreq r0, [r0, #0x8]
+ cmp r0, #0x2
+ beq _020B07F8
+ cmp r0, #0x4
+ movne r0, #0x0
+ strne r0, [r4, #0x8]
+ bne _020B0800
+_020B07F8:
+ mov r0, r4
+ bl NNS_G2dResetAnimCtrlState
+_020B0800:
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x0]
+ ldrh r0, [r1, #0x0]
+ ldr r1, [r1, #0xc]
+ add r0, r1, r0, lsl #0x3
+ sub r0, r0, #0x8
+ cmp r2, r0
+ strhi r0, [r4, #0x0]
+ ldmhiia sp!, {r4,pc}
+ cmp r2, r1
+ strcc r1, [r4, #0x0]
+ ldmia sp!, {r4,pc}
+ arm_func_end SequenceEdgeHandle_
diff --git a/arm9/asm/NNS_G2D_g2d_cellanimati.s b/arm9/asm/NNS_G2D_g2d_cellanimati.s
new file mode 100644
index 00000000..31720d7a
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_cellanimati.s
@@ -0,0 +1,417 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dMakeCellToOams
+NNS_G2dMakeCellToOams: ; 0x020B1AF8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x34
+ ldrh r5, [r2, #0x0]
+ ldr r4, [sp, #0x60]
+ ldr r10, [sp, #0x58]
+ str r4, [sp, #0x60]
+ cmp r1, r5
+ movcs r1, r5
+ mov r4, #0x0
+ cmp r1, #0x0
+ str r4, [sp, #0x0]
+ bls _020B1E7C
+ ldrh r4, [sp, #0x5c]
+ mov r4, r4, lsl #0x19
+ str r4, [sp, #0x4]
+ ldr r4, [sp, #0x0]
+ str r4, [sp, #0x14]
+ mov r4, #0x100
+ str r4, [sp, #0xc]
+ mov r4, #0x300
+ str r4, [sp, #0x8]
+ mov r4, #0x1
+ str r4, [sp, #0x10]
+_020B1B54:
+ ldr r5, [sp, #0x0]
+ mov r6, #0x6
+ mul r6, r5, r6
+ ldr r8, [r2, #0x4]
+ ldr r4, [sp, #0x0]
+ add r7, r0, r5, lsl #0x3
+ ldrh r5, [r8, r6]
+ mov r4, r4, lsl #0x3
+ add r9, r8, r6
+ strh r5, [r0, r4]
+ ldrh r4, [r9, #0x2]
+ cmp r3, #0x0
+ strh r4, [r7, #0x2]
+ ldrh r4, [r9, #0x4]
+ strh r4, [r7, #0x4]
+ bne _020B1B9C
+ cmp r10, #0x0
+ beq _020B1E60
+_020B1B9C:
+ ldr r5, [r7, #0x0]
+ ldr r4, _020B1E88 ; =0x01FF0000
+ and r4, r5, r4
+ mov r4, r4, lsr #0x10
+ mov r4, r4, lsl #0x10
+ mov r4, r4, asr #0x10
+ cmp r4, #0xff
+ orrgt r4, r4, #0xff00
+ movgt r4, r4, lsl #0x10
+ movgt r4, r4, asr #0x10
+ mov r4, r4, lsl #0xc
+ str r4, [sp, #0x20]
+ ldr r4, [r7, #0x0]
+ and r4, r4, #0xff
+ mov r4, r4, lsl #0x10
+ mov r4, r4, asr #0x10
+ cmp r4, #0x7f
+ orrgt r4, r4, #0xff00
+ movgt r4, r4, lsl #0x10
+ movgt r4, r4, asr #0x10
+ mov r4, r4, lsl #0xc
+ str r4, [sp, #0x24]
+ cmp r3, #0x0
+ beq _020B1E00
+ ldr r5, [r7, #0x0]
+ and r6, r5, #0x300
+ cmp r6, #0x100
+ beq _020B1C1C
+ cmp r6, #0x300
+ beq _020B1C1C
+ and r4, r5, #0x30000000
+ orr r6, r6, r4
+_020B1C1C:
+ cmp r6, #0x300
+ bne _020B1C70
+ ldr r4, _020B1E8C ; =0xC000C000
+ ldr r8, _020B1E90 ; =NNSi_objSizeWTbl
+ and r5, r5, r4
+ and r4, r5, #0xc000
+ mov r6, r4, asr #0xe
+ and r4, r5, #0xc0000000
+ mov r4, r4, lsr #0x1e
+ mov r4, r4, lsl #0x1
+ add r8, r8, r6, lsl #0x3
+ ldrh r9, [r4, r8]
+ ldr r8, _020B1E94 ; =NNSi_objSizeHTbl
+ ldr r5, [sp, #0x20]
+ add r6, r8, r6, lsl #0x3
+ add r5, r5, r9, lsl #0xb
+ str r5, [sp, #0x20]
+ ldrh r4, [r4, r6]
+ ldr r5, [sp, #0x24]
+ add r4, r5, r4, lsl #0xb
+ str r4, [sp, #0x24]
+_020B1C70:
+ ldr r4, [sp, #0x60]
+ ldr r5, [r3, #0x8]
+ cmp r4, #0x0
+ ldrne r8, [sp, #0x8]
+ add r4, sp, #0x20
+ ldreq r8, [sp, #0xc]
+ mov r6, r4
+ cmp r8, #0x300
+ ldreq r9, [sp, #0x10]
+ mov r12, #0x1000
+ ldrne r9, [sp, #0x14]
+ cmp r4, r4
+ ldr r4, [sp, #0x24]
+ addeq r6, sp, #0x28
+ smull r11, r4, r5, r4
+ adds r5, r11, r12
+ adc r11, r4, #0x0
+ ldr r4, [r3, #0x0]
+ ldr lr, [sp, #0x20]
+ smlal r5, r11, r4, lr
+ mov r4, r5, lsr #0xc
+ orr r4, r4, r11, lsl #0x14
+ str r4, [r6, #0x0]
+ ldr r4, [r3, #0xc]
+ ldr r5, [sp, #0x24]
+ ldr lr, [r3, #0x4]
+ smull r11, r5, r4, r5
+ adds r11, r11, r12
+ adc r4, r5, #0x0
+ add r5, sp, #0x28
+ cmp r6, r5
+ ldr r5, [sp, #0x20]
+ smlal r11, r4, lr, r5
+ mov r5, r11, lsr #0xc
+ orr r5, r5, r4, lsl #0x14
+ str r5, [r6, #0x4]
+ ldreq r5, [sp, #0x28]
+ ldreq r4, [sp, #0x2c]
+ streq r5, [sp, #0x20]
+ streq r4, [sp, #0x24]
+ cmp r8, #0x100
+ beq _020B1D38
+ cmp r8, #0x300
+ beq _020B1D38
+ ldr r5, [r7, #0x0]
+ ldr r4, _020B1E98 ; =0xC1FFFCFF
+ and r4, r5, r4
+ orr r4, r4, r8
+ str r4, [r7, #0x0]
+ b _020B1D54
+_020B1D38:
+ ldr r5, [r7, #0x0]
+ ldr r4, _020B1E98 ; =0xC1FFFCFF
+ and r4, r5, r4
+ orr r5, r4, r8
+ ldr r4, [sp, #0x4]
+ orr r4, r4, r5
+ str r4, [r7, #0x0]
+_020B1D54:
+ ldr r6, [r7, #0x0]
+ ldr r5, _020B1E8C ; =0xC000C000
+ cmp r9, #0x0
+ and r8, r6, r5
+ and r5, r8, #0xc000
+ mov r6, r5, asr #0xe
+ and r5, r8, #0xc0000000
+ ldr r8, _020B1E90 ; =NNSi_objSizeWTbl
+ mov r5, r5, lsr #0x1e
+ mov r5, r5, lsl #0x1
+ add r8, r8, r6, lsl #0x3
+ ldrh r9, [r5, r8]
+ ldr r8, _020B1E94 ; =NNSi_objSizeHTbl
+ ldr r4, [sp, #0x20]
+ add r6, r8, r6, lsl #0x3
+ mov r11, r9, asr #0x1
+ ldrh r5, [r5, r6]
+ mov r8, r11, lsl #0xc
+ ldr r6, [r3, #0x0]
+ rsb r12, r8, #0x0
+ mov r9, r5, asr #0x1
+ mla r12, r6, r11, r12
+ ldr r5, [r3, #0x8]
+ mla r6, r5, r9, r12
+ add r6, r4, r6
+ str r6, [sp, #0x20]
+ ldr r12, [r3, #0x4]
+ mov r5, r9, lsl #0xc
+ str r12, [sp, #0x1c]
+ ldr r12, [r3, #0xc]
+ rsb lr, r5, #0x0
+ str r12, [sp, #0x18]
+ ldr r12, [sp, #0x1c]
+ ldr r4, [sp, #0x24]
+ mla r11, r12, r11, lr
+ ldr r12, [sp, #0x18]
+ subne r6, r6, r8
+ mla r9, r12, r9, r11
+ add r4, r4, r9
+ str r4, [sp, #0x24]
+ subne r4, r4, r5
+ strne r6, [sp, #0x20]
+ strne r4, [sp, #0x24]
+_020B1E00:
+ cmp r10, #0x0
+ beq _020B1E28
+ ldr r6, [sp, #0x20]
+ ldr r4, [r10, #0x0]
+ ldr r5, [sp, #0x24]
+ add r4, r6, r4
+ str r4, [sp, #0x20]
+ ldr r4, [r10, #0x4]
+ add r4, r5, r4
+ str r4, [sp, #0x24]
+_020B1E28:
+ ldr r4, [sp, #0x20]
+ ldr r6, [r7, #0x0]
+ add r5, r4, #0x800
+ ldr r4, _020B1E9C ; =0x000001FF
+ and r4, r4, r5, asr #0xc
+ ldr r5, _020B1EA0 ; =0xFE00FF00
+ and r6, r6, r5
+ ldr r5, [sp, #0x24]
+ add r5, r5, #0x800
+ mov r5, r5, asr #0xc
+ and r5, r5, #0xff
+ orr r5, r6, r5
+ orr r4, r5, r4, lsl #0x10
+ str r4, [r7, #0x0]
+_020B1E60:
+ ldr r4, [sp, #0x0]
+ add r4, r4, #0x1
+ mov r4, r4, lsl #0x10
+ mov r4, r4, lsr #0x10
+ str r4, [sp, #0x0]
+ cmp r4, r1
+ blo _020B1B54
+_020B1E7C:
+ mov r0, r1
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B1E88: .word 0x01FF0000
+_020B1E8C: .word 0xC000C000
+_020B1E90: .word NNSi_objSizeWTbl
+_020B1E94: .word NNSi_objSizeHTbl
+_020B1E98: .word 0xC1FFFCFF
+_020B1E9C: .word 0x000001FF
+_020B1EA0: .word 0xFE00FF00
+ arm_func_end NNS_G2dMakeCellToOams
+
+ arm_func_start NNS_G2dSetCellAnimationCurrentFrame
+NNS_G2dSetCellAnimationCurrentFrame: ; 0x020B1EA4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl NNS_G2dSetAnimCtrlCurrentFrame
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ mov r0, r4
+ bl ApplyCurrentAnimResult_
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dSetCellAnimationCurrentFrame
+
+ arm_func_start NNS_G2dTickCellAnimation
+NNS_G2dTickCellAnimation: ; 0x020B1EC4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl NNS_G2dTickAnimCtrl
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ mov r0, r4
+ bl ApplyCurrentAnimResult_
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dTickCellAnimation
+
+ arm_func_start NNS_G2dSetCellAnimationSequence
+NNS_G2dSetCellAnimationSequence: ; 0x020B1EE4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl NNS_G2dBindAnimCtrl
+ mov r0, r4
+ bl ApplyCurrentAnimResult_
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dSetCellAnimationSequence
+
+ arm_func_start NNS_G2dInitCellAnimationVramTransfered
+NNS_G2dInitCellAnimationVramTransfered: ; 0x020B1EFC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x14
+ mov r4, r2
+ ldr r2, [r4, #0xc]
+ mov r5, r1
+ ldr r1, [r2, #0x0]
+ ldr r2, [sp, #0x34]
+ str r1, [sp, #0x0]
+ ldr r1, [sp, #0x38]
+ str r2, [sp, #0x4]
+ mov r6, r3
+ mov r7, r0
+ ldr r12, [sp, #0x3c]
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x30]
+ mov r0, r6
+ str r12, [sp, #0xc]
+ bl NNSi_G2dInitCellTransferState
+ str r6, [r7, #0x34]
+ str r4, [r7, #0x30]
+ add r0, r7, #0x38
+ mov r1, #0x1
+ str r6, [r7, #0x34]
+ bl NNSi_G2dSrtcInitControl
+ mov r0, r7
+ bl NNS_G2dInitAnimCtrl
+ mov r0, r7
+ mov r1, r5
+ bl NNS_G2dSetCellAnimationSequence
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G2dInitCellAnimationVramTransfered
+
+ arm_func_start NNS_G2dInitCellAnimation
+NNS_G2dInitCellAnimation: ; 0x020B1F80
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ str r2, [r5, #0x30]
+ mvn r2, #0x0
+ add r0, r5, #0x38
+ mov r1, #0x1
+ str r2, [r5, #0x34]
+ bl NNSi_G2dSrtcInitControl
+ mov r0, r5
+ bl NNS_G2dInitAnimCtrl
+ mov r0, r5
+ mov r1, r4
+ bl NNS_G2dSetCellAnimationSequence
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNS_G2dInitCellAnimation
+
+ arm_func_start ApplyCurrentAnimResult_
+ApplyCurrentAnimResult_: ; 0x020B1FC4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r1, [r5, #0x0]
+ ldrh r1, [r1, #0x4]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ bl NNS_G2dGetAnimCtrlCurrentElement
+ mov r4, r0
+ ldr r7, [r5, #0x30]
+ ldrh r1, [r4, #0x0]
+ mov r0, r7
+ bl NNS_G2dGetCellDataByIdx
+ str r0, [r5, #0x2c]
+ ldr r1, [r5, #0x18]
+ add r0, r5, #0x38
+ ldr r2, [r1, #0x4]
+ mov r1, #0x1
+ and r6, r2, #0xff
+ bl NNSi_G2dSrtcInitControl
+ cmp r6, #0x0
+ beq _020B2068
+ cmp r6, #0x2
+ bne _020B203C
+ ldrsh r1, [r4, #0x4]
+ ldrsh r2, [r4, #0x6]
+ add r0, r5, #0x38
+ bl NNSi_G2dSrtcSetTrans
+ b _020B2068
+_020B203C:
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r5, #0x38
+ bl NNSi_G2dSrtcSetSRTScale
+ ldrh r1, [r4, #0x2]
+ add r0, r5, #0x38
+ bl NNSi_G2dSrtcSetSRTRotZ
+ ldrsh r1, [r4, #0xc]
+ ldrsh r2, [r4, #0xe]
+ add r0, r5, #0x38
+ bl NNSi_G2dSrtcSetTrans
+_020B2068:
+ ldr r2, [r7, #0xc]
+ cmp r2, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ ldr r1, [r5, #0x34]
+ mvn r0, #0x0
+ cmp r1, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ ldrh r1, [r4, #0x0]
+ ldr r2, [r2, #0x4]
+ ldr r0, [r5, #0x34]
+ add r3, r2, r1, lsl #0x3
+ ldr r1, [r2, r1, lsl #0x3]
+ ldr r2, [r3, #0x4]
+ bl NNS_G2dSetCellTransferStateRequested
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end ApplyCurrentAnimResult_
diff --git a/arm9/asm/NNS_G2D_g2d_celltransfe.s b/arm9/asm/NNS_G2D_g2d_celltransfe.s
new file mode 100644
index 00000000..0e41bdba
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_celltransfe.s
@@ -0,0 +1,286 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global cvtTbl$7926
+cvtTbl$7926: ; 0x020FF8C4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00
+ ; static const in function
+
+ .section .bss
+
+ .global s_pTaskRegisterFunc
+s_pTaskRegisterFunc: ; 0x021CECFC
+ .space 0x4
+
+ .global s_numCellState
+s_numCellState: ; 0x021CED00
+ .space 0x4
+
+ .global s_pCellStateArray
+s_pCellStateArray: ; 0x021CED04
+ .space 0x4
+
+ .section .text
+
+ arm_func_start NNS_G2dFreeCellTransferStateHandle
+NNS_G2dFreeCellTransferStateHandle: ; 0x020B4358
+ stmdb sp!, {r4,lr}
+ ldr r2, _020B43A0 ; =s_pCellStateArray
+ mov r1, #0x30
+ ldr r2, [r2, #0x0]
+ mla r4, r0, r1, r2
+ mov r0, r4
+ bl NNSi_G2dInitializeVRamLocation
+ mov r0, #0x0
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B43A0: .word s_pCellStateArray
+ arm_func_end NNS_G2dFreeCellTransferStateHandle
+
+ arm_func_start NNS_G2dGetNewCellTransferStateHandle
+NNS_G2dGetNewCellTransferStateHandle: ; 0x020B43A4
+ ldr r1, _020B43F8 ; =s_numCellState
+ mov r0, #0x0
+ ldr r3, [r1, #0x0]
+ cmp r3, #0x0
+ bls _020B43F0
+ ldr r1, _020B43FC ; =s_pCellStateArray
+ ldr r2, [r1, #0x0]
+ mov r12, r2
+_020B43C4:
+ ldr r1, [r12, #0x1c]
+ cmp r1, #0x1
+ movne r1, #0x30
+ mlane r1, r0, r1, r2
+ movne r2, #0x1
+ strne r2, [r1, #0x1c]
+ bxne lr
+ add r0, r0, #0x1
+ cmp r0, r3
+ add r12, r12, #0x30
+ blo _020B43C4
+_020B43F0:
+ mvn r0, #0x0
+ bx lr
+ .balign 4
+_020B43F8: .word s_numCellState
+_020B43FC: .word s_pCellStateArray
+ arm_func_end NNS_G2dGetNewCellTransferStateHandle
+
+ arm_func_start NNS_G2dSetCellTransferStateRequested
+NNS_G2dSetCellTransferStateRequested: ; 0x020B4400
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ mov r4, r2
+ bl NNSi_G2dGetCellTransferState
+ mvn r1, #0x0
+ str r1, [r0, #0x24]
+ str r5, [r0, #0x28]
+ str r4, [r0, #0x2c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNS_G2dSetCellTransferStateRequested
+
+ arm_func_start NNS_G2dUpdateCellTransferStateManager
+NNS_G2dUpdateCellTransferStateManager: ; 0x020B442C
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x14
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, _020B4558 ; =s_numCellState
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addls sp, sp, #0x14
+ ldmlsia sp!, {r4-r11,pc}
+ ldr r0, [sp, #0x0]
+ mov r5, #0x1
+ str r0, [sp, #0x4]
+ mov r11, r0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020B4468:
+ ldr r0, _020B455C ; =s_pCellStateArray
+ ldr r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ add r8, r1, r0
+ ldr r0, [r8, #0x1c]
+ cmp r0, #0x0
+ beq _020B4528
+ ldr r9, [sp, #0x8]
+ mov r0, r9
+ cmp r0, #0x3
+ bge _020B4520
+ add r4, r8, #0x24
+_020B4498:
+ mov r6, r5, lsl r9
+ mov r1, r11
+ ldr r0, [r8, #0x24]
+ ands r0, r0, r6
+ beq _020B44B8
+ ldr r0, [r8, #0x20]
+ ands r0, r0, r6
+ movne r1, r5
+_020B44B8:
+ cmp r1, #0x0
+ beq _020B4514
+ ldr r0, _020B4560 ; =cvtTbl$7926
+ cmp r9, #0x0
+ ldr r7, [r0, r9, lsl #0x2]
+ ldreq r10, [r8, #0x14]
+ mov r0, r8
+ mov r1, r9
+ ldrne r10, [r8, #0x10]
+ bl NNSi_G2dGetVramLocation
+ mov r1, r0
+ mov r0, r7
+ ldr r7, _020B4564 ; =s_pTaskRegisterFunc
+ ldr r2, [r8, #0x28]
+ ldr r3, [r8, #0x2c]
+ ldr r7, [r7, #0x0]
+ add r2, r10, r2
+ blx r7
+ cmp r0, #0x0
+ ldrne r1, [r4, #0x0]
+ mvnne r0, r6
+ andne r0, r1, r0
+ strne r0, [r4, #0x0]
+_020B4514:
+ add r9, r9, #0x1
+ cmp r9, #0x3
+ blt _020B4498
+_020B4520:
+ ldr r0, [sp, #0xc]
+ str r0, [r8, #0x20]
+_020B4528:
+ ldr r0, _020B4558 ; =s_numCellState
+ ldr r1, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x0]
+ cmp r0, r1
+ ldr r0, [sp, #0x4]
+ add r0, r0, #0x30
+ str r0, [sp, #0x4]
+ blo _020B4468
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B4558: .word s_numCellState
+_020B455C: .word s_pCellStateArray
+_020B4560: .word cvtTbl$7926
+_020B4564: .word s_pTaskRegisterFunc
+ arm_func_end NNS_G2dUpdateCellTransferStateManager
+
+ arm_func_start NNS_G2dInitCellTransferStateManager
+NNS_G2dInitCellTransferStateManager: ; 0x020B4568
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr ip, _020B45E4 ; =s_pTaskRegisterFunc
+ movs r6, r1
+ ldr r1, _020B45E8 ; =s_numCellState
+ ldr r3, _020B45EC ; =s_pCellStateArray
+ mov r7, r0
+ str r2, [r12, #0x0]
+ mov r5, #0x0
+ addeq sp, sp, #0x4
+ str r7, [r3, #0x0]
+ str r6, [r1, #0x0]
+ ldmeqia sp!, {r4-r7,pc}
+ mov r4, r5
+_020B45A0:
+ mov r0, r7
+ bl NNSi_G2dInitializeVRamLocation
+ str r4, [r7, #0xc]
+ str r4, [r7, #0x10]
+ str r4, [r7, #0x14]
+ str r4, [r7, #0x18]
+ str r4, [r7, #0x1c]
+ str r4, [r7, #0x20]
+ str r4, [r7, #0x24]
+ str r4, [r7, #0x28]
+ add r5, r5, #0x1
+ str r4, [r7, #0x2c]
+ cmp r5, r6
+ add r7, r7, #0x30
+ blo _020B45A0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B45E4: .word s_pTaskRegisterFunc
+_020B45E8: .word s_numCellState
+_020B45EC: .word s_pCellStateArray
+ arm_func_end NNS_G2dInitCellTransferStateManager
+
+ arm_func_start NNSi_G2dInitCellTransferState
+NNSi_G2dInitCellTransferState: ; 0x020B45F0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr ip, _020B4698 ; =s_pCellStateArray
+ mov r4, #0x30
+ ldr r12, [r12, #0x0]
+ mov r7, r1
+ mla r4, r0, r4, r12
+ mov r0, r4
+ mov r6, r2
+ mov r5, r3
+ bl NNSi_G2dInitializeVRamLocation
+ mvn r0, #0x0
+ cmp r7, r0
+ beq _020B4638
+ mov r0, r4
+ mov r2, r7
+ mov r1, #0x0
+ bl NNSi_G2dSetVramLocation
+_020B4638:
+ mvn r0, #0x0
+ cmp r6, r0
+ beq _020B4654
+ mov r0, r4
+ mov r2, r6
+ mov r1, #0x1
+ bl NNSi_G2dSetVramLocation
+_020B4654:
+ mvn r0, #0x0
+ cmp r5, r0
+ beq _020B4670
+ mov r0, r4
+ mov r2, r5
+ mov r1, #0x2
+ bl NNSi_G2dSetVramLocation
+_020B4670:
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r1, [r4, #0xc]
+ ldr r1, [sp, #0x20]
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x24]
+ str r1, [r4, #0x14]
+ str r0, [r4, #0x18]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B4698: .word s_pCellStateArray
+ arm_func_end NNSi_G2dInitCellTransferState
+
+ arm_func_start NNSi_G2dGetCellTransferState
+NNSi_G2dGetCellTransferState: ; 0x020B469C
+ ldr r2, _020B46B0 ; =s_pCellStateArray
+ mov r1, #0x30
+ ldr r2, [r2, #0x0]
+ mla r0, r1, r0, r2
+ bx lr
+ .balign 4
+_020B46B0: .word s_pCellStateArray
+ arm_func_end NNSi_G2dGetCellTransferState
diff --git a/arm9/asm/NNS_G2D_g2d_charcanvas.s b/arm9/asm/NNS_G2D_g2d_charcanvas.s
new file mode 100644
index 00000000..6f483596
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_charcanvas.s
@@ -0,0 +1,1357 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global objs$8221
+objs$8221: ; 0x020FF970
+ .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01
+ .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03
+
+ .global shape$8277
+shape$8277: ; 0x020FF990
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0
+
+ .section .text
+
+ arm_func_start NNS_G2dArrangeOBJ1D
+NNS_G2dArrangeOBJ1D: ; 0x020B5E50
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x3c
+ mov r7, r0
+ mov r0, r1
+ cmp r0, #0x8
+ ldr r0, [sp, #0x60]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x60]
+ ldr r0, [sp, #0x6c]
+ str r2, [sp, #0x14]
+ str r0, [sp, #0x6c]
+ ldrlt r0, [sp, #0x10]
+ mov r11, r3
+ ldr r6, [sp, #0x64]
+ ldr r5, [sp, #0x68]
+ movge r2, #0x3
+ clzlt r0, r0
+ rsblt r2, r0, #0x1f
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x8
+ ldrlt r0, [sp, #0x14]
+ movge r1, #0x3
+ clzlt r0, r0
+ rsblt r1, r0, #0x1f
+ ldr r0, _020B6170 ; =objs$8221
+ mvn r3, #0x0
+ add r1, r0, r1, lsl #0x3
+ add r0, r1, r2, lsl #0x1
+ ldrb r4, [r1, r2, lsl #0x1]
+ ldrb r1, [r0, #0x1]
+ ldr r2, [sp, #0x14]
+ cmp r6, #0x0
+ str r1, [sp, #0x18]
+ ldr r1, [sp, #0x10]
+ and r1, r1, r3, lsl r4
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ and r1, r2, r3, lsl r1
+ str r1, [sp, #0x20]
+ moveq r1, #0x1
+ streq r1, [sp, #0x24]
+ movne r1, #0x2
+ strne r1, [sp, #0x24]
+ mov r1, #0x0
+ str r1, [sp, #0x28]
+ bl OBJSizeToShape
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ mov r10, r1, asr r4
+ ldr r1, [sp, #0x18]
+ mov r1, r2, asr r1
+ str r1, [sp, #0x2c]
+ ldr r1, [sp, #0x24]
+ mov r2, r1, lsl r4
+ ldr r1, [sp, #0x18]
+ mov r2, r2, lsl r1
+ ldr r1, [sp, #0x6c]
+ mov r9, r2, asr r1
+ mov r1, #0x0
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x34]
+ b _020B5FE8
+_020B5F48:
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x18]
+ ldr r8, [sp, #0x34]
+ mov r2, r2, lsl r1
+ ldr r1, [sp, #0x60]
+ add lr, r1, r2, lsl #0x3
+ b _020B5FD4
+_020B5F64:
+ mov r1, r8, lsl r4
+ add r2, r11, r1, lsl #0x3
+ ldr r1, _020B6174 ; =0x000001FF
+ ldr r3, [r7, #0x0]
+ and r12, r2, r1
+ ldr r1, _020B6178 ; =0xFE00FF00
+ and r2, lr, #0xff
+ and r1, r3, r1
+ orr r1, r1, r2
+ orr r1, r1, r12, lsl #0x10
+ str r1, [r7, #0x0]
+ ldr r3, [r7, #0x0]
+ ldr r1, _020B617C ; =0x3FFF3FFF
+ mov r2, #0x400
+ and r1, r3, r1
+ orr r1, r1, r0
+ str r1, [r7, #0x0]
+ rsb r1, r2, #0x0
+ ldrh r2, [r7, #0x4]
+ add r8, r8, #0x1
+ and r1, r2, r1
+ orr r1, r1, r5
+ strh r1, [r7, #0x4]
+ ldr r1, [r7, #0x0]
+ add r5, r5, r9
+ bic r1, r1, #0x2000
+ orr r1, r1, r6, lsl #0xd
+ str r1, [r7], #0x8
+_020B5FD4:
+ cmp r8, r10
+ blt _020B5F64
+ ldr r1, [sp, #0x30]
+ add r1, r1, #0x1
+ str r1, [sp, #0x30]
+_020B5FE8:
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x2c]
+ cmp r2, r1
+ blt _020B5F48
+ ldr r0, [sp, #0x28]
+ mla r0, r10, r1, r0
+ str r0, [sp, #0x28]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bhs _020B6078
+ ldr r0, [sp, #0x60]
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ str r6, [sp, #0x4]
+ sub r4, r1, r0
+ ldr r1, [sp, #0x6c]
+ str r5, [sp, #0x8]
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ add r3, r11, r1, lsl #0x3
+ mov r0, r7
+ mov r1, r4
+ bl NNS_G2dArrangeOBJ1D
+ ldr r1, [sp, #0x24]
+ add r7, r7, r0, lsl #0x3
+ mul r2, r1, r4
+ ldr r1, [sp, #0x20]
+ mul r2, r1, r2
+ ldr r1, [sp, #0x6c]
+ add r5, r5, r2, lsr r1
+ ldr r1, [sp, #0x28]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+_020B6078:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bhs _020B60F0
+ ldr r1, [sp, #0x60]
+ ldr r0, [sp, #0x20]
+ mov r3, r11
+ add r0, r1, r0, lsl #0x3
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x20]
+ str r5, [sp, #0x8]
+ sub r4, r1, r0
+ ldr r1, [sp, #0x6c]
+ mov r0, r7
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x1c]
+ mov r2, r4
+ bl NNS_G2dArrangeOBJ1D
+ ldr r2, [sp, #0x24]
+ ldr r1, [sp, #0x1c]
+ add r7, r7, r0, lsl #0x3
+ mul r1, r2, r1
+ mul r2, r4, r1
+ ldr r1, [sp, #0x6c]
+ add r5, r5, r2, lsr r1
+ ldr r1, [sp, #0x28]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+_020B60F0:
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bhs _020B6164
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bhs _020B6164
+ ldr r1, [sp, #0x60]
+ ldr r0, [sp, #0x20]
+ ldr r2, [sp, #0x10]
+ add r0, r1, r0, lsl #0x3
+ ldr r1, [sp, #0x1c]
+ ldr r3, [sp, #0x14]
+ str r0, [sp, #0x0]
+ sub r1, r2, r1
+ ldr r2, [sp, #0x20]
+ str r6, [sp, #0x4]
+ sub r2, r3, r2
+ ldr r3, [sp, #0x1c]
+ ldr r4, [sp, #0x6c]
+ str r5, [sp, #0x8]
+ mov r0, r7
+ add r3, r11, r3, lsl #0x3
+ str r4, [sp, #0xc]
+ bl NNS_G2dArrangeOBJ1D
+ ldr r1, [sp, #0x28]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+_020B6164:
+ ldr r0, [sp, #0x28]
+ add sp, sp, #0x3c
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B6170: .word objs$8221
+_020B6174: .word 0x000001FF
+_020B6178: .word 0xFE00FF00
+_020B617C: .word 0x3FFF3FFF
+ arm_func_end NNS_G2dArrangeOBJ1D
+
+ arm_func_start NNSi_G2dCalcRequiredOBJ
+NNSi_G2dCalcRequiredOBJ: ; 0x020B6180
+ stmdb sp!, {r4-r6,lr}
+ mov r3, r0, lsr #0x3
+ mov r6, r1, lsr #0x3
+ mul r12, r3, r6
+ and r2, r0, #0x4
+ and lr, r0, #0x2
+ and r0, r0, #0x1
+ add r4, r0, lr, lsr #0x1
+ mov r5, r2, lsr #0x2
+ and r0, r1, #0x4
+ add lr, r12, #0x0
+ add r12, r5, r4, lsl #0x1
+ mla r12, r6, r12, lr
+ and lr, r1, #0x2
+ and r1, r1, #0x1
+ add lr, r1, lr, lsr #0x1
+ mov r1, r0, lsr #0x2
+ add r1, r1, lr, lsl #0x1
+ mla r12, r3, r1, r12
+ add r1, r4, r2, lsr #0x2
+ add r0, lr, r0, lsr #0x2
+ mla r0, r1, r0, r12
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G2dCalcRequiredOBJ
+
+ arm_func_start NNS_G2dMapScrToChar256x16Pltt
+NNS_G2dMapScrToChar256x16Pltt: ; 0x020B61DC
+ stmdb sp!, {r4-r8,lr}
+ ldr r12, [sp, #0x1c]
+ ldr r8, [sp, #0x18]
+ mov r12, r12, lsl #0x1c
+ mov r4, r12, lsr #0x10
+ mov r6, #0x0
+ cmp r2, #0x0
+ ldmleia sp!, {r4-r8,pc}
+ mov lr, r3, lsl #0x1
+ mov r12, r6
+_020B6204:
+ mov r5, r0
+ mov r7, r12
+ cmp r1, #0x0
+ ble _020B622C
+_020B6214:
+ orr r3, r4, r8
+ add r7, r7, #0x1
+ cmp r7, r1
+ add r8, r8, #0x1
+ strh r3, [r5], #0x2
+ blt _020B6214
+_020B622C:
+ add r6, r6, #0x1
+ cmp r6, r2
+ add r0, r0, lr
+ blt _020B6204
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNS_G2dMapScrToChar256x16Pltt
+
+ arm_func_start NNS_G2dMapScrToCharText
+NNS_G2dMapScrToCharText: ; 0x020B6240
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x8
+ ldr r5, [sp, #0x24]
+ ldr lr, [sp, #0x20]
+ cmp r5, #0x20
+ ldr r12, [sp, #0x28]
+ bgt _020B6280
+ mla r4, r5, lr, r3
+ ldr lr, [sp, #0x2c]
+ str r12, [sp, #0x0]
+ mov r3, r5
+ add r0, r0, r4, lsl #0x1
+ str lr, [sp, #0x4]
+ bl NNS_G2dMapScrToChar256x16Pltt
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r8,pc}
+_020B6280:
+ ldr r4, [sp, #0x2c]
+ add r7, lr, r2
+ mov r2, r4, lsl #0x1c
+ cmp lr, r7
+ add r8, r3, r1
+ mov r4, r2, lsr #0x10
+ addge sp, sp, #0x8
+ ldmgeia sp!, {r4-r8,pc}
+_020B62A0:
+ cmp lr, #0x20
+ movlt r1, lr
+ addge r1, lr, #0x20
+ mov r6, r3
+ cmp r3, r8
+ add r5, r0, r1, lsl #0x6
+ bge _020B62E4
+_020B62BC:
+ cmp r6, #0x20
+ movlt r1, r6
+ addge r1, r6, #0x3e0
+ orr r2, r4, r12
+ mov r1, r1, lsl #0x1
+ add r6, r6, #0x1
+ strh r2, [r5, r1]
+ cmp r6, r8
+ add r12, r12, #0x1
+ blt _020B62BC
+_020B62E4:
+ add lr, lr, #0x1
+ cmp lr, r7
+ blt _020B62A0
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNS_G2dMapScrToCharText
+
+ arm_func_start NNS_G2dCharCanvasInitForOBJ1D
+NNS_G2dCharCanvasInitForOBJ1D: ; 0x020B62F8
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x18
+ cmp r2, #0x8
+ movlt r4, r2
+ movge r12, #0x3
+ clzlt r4, r4
+ rsblt r12, r4, #0x1f
+ cmp r3, #0x8
+ movlt r4, r3
+ movge r6, #0x3
+ clzlt r4, r4
+ rsblt r6, r4, #0x1f
+ ldr r4, _020B6378 ; =objs$8221
+ ldr r5, [sp, #0x28]
+ add r4, r4, r6, lsl #0x3
+ ldrb r6, [r4, r12, lsl #0x1]
+ add r12, r4, r12, lsl #0x1
+ ldr r4, _020B637C ; =DrawGlyph1D
+ strb r6, [sp, #0x14]
+ ldrb r6, [r12, #0x1]
+ ldr lr, _020B6380 ; =ClearContinuous
+ ldr ip, _020B6384 ; =ClearArea1D
+ strb r6, [sp, #0x15]
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str lr, [sp, #0x8]
+ str r12, [sp, #0xc]
+ ldr r12, [sp, #0x14]
+ str r12, [sp, #0x10]
+ bl InitCharCanvas
+ add sp, sp, #0x18
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B6378: .word objs$8221
+_020B637C: .word DrawGlyph1D
+_020B6380: .word ClearContinuous
+_020B6384: .word ClearArea1D
+ arm_func_end NNS_G2dCharCanvasInitForOBJ1D
+
+ arm_func_start NNS_G2dCharCanvasInitForBG
+NNS_G2dCharCanvasInitForBG: ; 0x020B6388
+ stmdb sp!, {lr}
+ sub sp, sp, #0x14
+ ldr lr, [sp, #0x18]
+ ldr ip, _020B63C0 ; =DrawGlyphLine
+ str lr, [sp, #0x0]
+ ldr lr, _020B63C4 ; =ClearContinuous
+ str r12, [sp, #0x4]
+ ldr ip, _020B63C8 ; =ClearAreaLine
+ str lr, [sp, #0x8]
+ str r12, [sp, #0xc]
+ str r2, [sp, #0x10]
+ bl InitCharCanvas
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+ .balign 4
+_020B63C0: .word DrawGlyphLine
+_020B63C4: .word ClearContinuous
+_020B63C8: .word ClearAreaLine
+ arm_func_end NNS_G2dCharCanvasInitForBG
+
+ arm_func_start NNS_G2dCharCanvasDrawChar
+NNS_G2dCharCanvasDrawChar: ; 0x020B63CC
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ mov r7, r1
+ ldrh r1, [sp, #0x2c]
+ mov r8, r0
+ mov r0, r7
+ mov r6, r2
+ mov r5, r3
+ bl NNS_G2dFontFindGlyphIndex
+ ldr r1, _020B6484 ; =0x0000FFFF
+ mov r4, r0
+ cmp r4, r1
+ ldreq r0, [r7, #0x0]
+ ldreqh r4, [r0, #0x2]
+ mov r0, r7
+ mov r1, r4
+ bl NNS_G2dFontGetCharWidthsFromIndex
+ str r0, [sp, #0x8]
+ ldr r0, [r7, #0x0]
+ ldr r2, [sp, #0x28]
+ ldr r0, [r0, #0x8]
+ add r1, sp, #0x8
+ ldrh r3, [r0, #0x2]
+ add r12, r0, #0x8
+ mov r0, r8
+ mla r3, r4, r3, r12
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r1, [sp, #0x8]
+ ldr r4, [r8, #0x14]
+ ldrsb r2, [r1, #0x0]
+ mov r1, r7
+ mov r3, r5
+ add r2, r6, r2
+ blx r4
+ ldrh r0, [r7, #0x8]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x8]
+ ldrnesb r1, [r0, #0x0]
+ ldrneb r0, [r0, #0x1]
+ addne r0, r1, r0
+ ldreq r0, [sp, #0x8]
+ ldreqsb r0, [r0, #0x2]
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020B6484: .word 0x0000FFFF
+ arm_func_end NNS_G2dCharCanvasDrawChar
+
+ arm_func_start InitCharCanvas
+InitCharCanvas: ; 0x020B6488
+ str r2, [r0, #0x4]
+ ldr r2, [sp, #0x0]
+ str r3, [r0, #0x8]
+ strb r2, [r0, #0xc]
+ ldr r2, [sp, #0x4]
+ str r1, [r0, #0x0]
+ ldr r1, [sp, #0x8]
+ str r2, [r0, #0x14]
+ ldr r2, [sp, #0xc]
+ str r1, [r0, #0x18]
+ ldr r1, [sp, #0x10]
+ str r2, [r0, #0x1c]
+ str r1, [r0, #0x10]
+ bx lr
+ arm_func_end InitCharCanvas
+
+ arm_func_start ClearArea1D
+ClearArea1D: ; 0x020B64C0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x54
+ ldrb r4, [r0, #0xc]
+ mov r10, r2
+ str r1, [sp, #0xc]
+ str r4, [sp, #0x44]
+ ldr r1, [sp, #0x44]
+ ldr r4, [sp, #0x78]
+ cmp r1, #0x4
+ add r1, r10, r4
+ str r1, [sp, #0x1c]
+ ldr r2, [sp, #0x7c]
+ mov r1, r3
+ add r1, r1, r2
+ str r1, [sp, #0x20]
+ ldrne r1, [sp, #0xc]
+ str r3, [sp, #0x10]
+ orrne r1, r1, r1, lsl #0x8
+ orrne r1, r1, r1, lsl #0x10
+ strne r1, [sp, #0xc]
+ bne _020B6528
+ ldr r1, [sp, #0xc]
+ orr r1, r1, r1, lsl #0x4
+ orr r1, r1, r1, lsl #0x8
+ orr r1, r1, r1, lsl #0x10
+ str r1, [sp, #0xc]
+_020B6528:
+ bic r1, r10, #0x7
+ str r1, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r0, #0x10]
+ bic r1, r1, #0x7
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x44]
+ str r2, [sp, #0x4c]
+ mov r3, r1, lsl #0x6
+ mov r2, r3, asr #0x2
+ ldr r1, [sp, #0x20]
+ add r3, r3, r2, lsr #0x1d
+ ldr r2, [sp, #0x1c]
+ add r6, r1, #0x7
+ add r2, r2, #0x7
+ bic r5, r2, #0x7
+ bic r2, r6, #0x7
+ ldr r1, [sp, #0x30]
+ str r2, [sp, #0x24]
+ mov r2, r3, asr #0x3
+ str r2, [sp, #0x48]
+ mov r4, r1, asr #0x2
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ add r2, r2, r4, lsr #0x1d
+ mov r2, r2, asr #0x3
+ str r2, [sp, #0x2c]
+ ldr r2, [sp, #0x14]
+ mov r1, r1, asr #0x2
+ add r1, r2, r1, lsr #0x1d
+ mov r6, r1, asr #0x3
+ ldr r1, [sp, #0x24]
+ cmp r2, r1
+ ldr r1, [r0, #0x4]
+ str r1, [sp, #0x40]
+ ldr r1, [r0, #0x8]
+ ldr r0, [r0, #0x0]
+ str r1, [sp, #0x3c]
+ str r0, [sp, #0x28]
+ ldrb r0, [sp, #0x4c]
+ str r0, [sp, #0x38]
+ ldrb r0, [sp, #0x4d]
+ str r0, [sp, #0x34]
+ addge sp, sp, #0x54
+ ldmgeia sp!, {r4-r11,pc}
+ mov r4, #0x0
+ mov r11, #0x8
+_020B65E4:
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldr r7, [sp, #0x2c]
+ cmp r1, r0
+ movlt r1, r0
+ ldrlt r0, [sp, #0x14]
+ sublt r9, r1, r0
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ movge r9, r4
+ sub r0, r1, r0
+ cmp r0, #0x8
+ movgt r0, r11
+ sub r0, r0, r9
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x30]
+ cmp r0, r5
+ mov r8, r0
+ bge _020B66B0
+_020B6630:
+ ldr r0, [sp, #0x38]
+ ldr r2, [sp, #0x40]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x34]
+ ldr r3, [sp, #0x3c]
+ str r0, [sp, #0x4]
+ mov r0, r7
+ mov r1, r6
+ bl GetCharIndex1D
+ ldr r2, [sp, #0x1c]
+ cmp r8, r10
+ sublt r1, r10, r8
+ sub r2, r2, r8
+ movge r1, r4
+ cmp r2, #0x8
+ movgt r2, r11
+ sub r3, r2, r1
+ ldr r2, [sp, #0x18]
+ ldr r12, [sp, #0x48]
+ str r2, [sp, #0x0]
+ ldr r2, [sp, #0xc]
+ str r2, [sp, #0x4]
+ ldr r2, [sp, #0x44]
+ str r2, [sp, #0x8]
+ ldr r2, [sp, #0x28]
+ mla r0, r12, r0, r2
+ mov r2, r9
+ bl ClearChar
+ add r8, r8, #0x8
+ add r7, r7, #0x1
+ cmp r8, r5
+ blt _020B6630
+_020B66B0:
+ ldr r0, [sp, #0x14]
+ add r6, r6, #0x1
+ add r1, r0, #0x8
+ ldr r0, [sp, #0x24]
+ str r1, [sp, #0x14]
+ cmp r1, r0
+ blt _020B65E4
+ add sp, sp, #0x54
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end ClearArea1D
+
+ arm_func_start ClearAreaLine
+ClearAreaLine: ; 0x020B66D4
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x3c
+ ldrb r4, [r0, #0xc]
+ mov r10, r2
+ str r1, [sp, #0xc]
+ str r4, [sp, #0x2c]
+ ldr r1, [sp, #0x2c]
+ ldr r4, [sp, #0x60]
+ cmp r1, #0x4
+ add r1, r10, r4
+ str r1, [sp, #0x18]
+ ldr r2, [sp, #0x64]
+ mov r1, r3
+ add r1, r1, r2
+ str r1, [sp, #0x1c]
+ ldrne r1, [sp, #0xc]
+ str r3, [sp, #0x10]
+ orrne r1, r1, r1, lsl #0x8
+ orrne r1, r1, r1, lsl #0x10
+ strne r1, [sp, #0xc]
+ bne _020B673C
+ ldr r1, [sp, #0xc]
+ orr r1, r1, r1, lsl #0x4
+ orr r1, r1, r1, lsl #0x8
+ orr r1, r1, r1, lsl #0x10
+ str r1, [sp, #0xc]
+_020B673C:
+ ldr r1, [sp, #0x10]
+ bic r1, r1, #0x7
+ mov r2, r1, asr #0x2
+ str r1, [sp, #0x14]
+ add r1, r1, r2, lsr #0x1d
+ ldr r2, [r0, #0x10]
+ mov r3, r1, asr #0x3
+ mul r1, r3, r2
+ bic r3, r10, #0x7
+ str r3, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ mov r6, r3, lsl #0x6
+ ldr r3, [sp, #0x28]
+ mov r4, r6, asr #0x2
+ mov r5, r3, asr #0x2
+ add r5, r3, r5, lsr #0x1d
+ add r4, r6, r4, lsr #0x1d
+ mov r3, r4, asr #0x3
+ str r3, [sp, #0x30]
+ ldr r3, [sp, #0x1c]
+ add r1, r1, r5, asr #0x3
+ add r4, r3, #0x7
+ ldr r3, [r0, #0x0]
+ ldr r0, [sp, #0x18]
+ add r5, r0, #0x7
+ ldr r0, [sp, #0x30]
+ bic r7, r5, #0x7
+ mla r1, r0, r1, r3
+ bic r0, r4, #0x7
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #0x24]
+ mul r0, r2, r0
+ str r0, [sp, #0x34]
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x20]
+ cmp r1, r0
+ addge sp, sp, #0x3c
+ ldmgeia sp!, {r4-r11,pc}
+ mov r5, #0x0
+ mov r4, #0x8
+_020B67E0:
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldr r6, [sp, #0x24]
+ cmp r1, r0
+ movlt r1, r0
+ ldrlt r0, [sp, #0x14]
+ sublt r9, r1, r0
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ movge r9, r5
+ sub r0, r1, r0
+ cmp r0, #0x8
+ movgt r0, r4
+ sub r11, r0, r9
+ ldr r0, [sp, #0x28]
+ cmp r0, r7
+ mov r8, r0
+ bge _020B687C
+_020B6828:
+ ldr r0, [sp, #0x18]
+ cmp r8, r10
+ sublt r1, r10, r8
+ sub r0, r0, r8
+ movge r1, r5
+ cmp r0, #0x8
+ movgt r0, r4
+ sub r3, r0, r1
+ ldr r0, [sp, #0xc]
+ str r11, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x2c]
+ mov r2, r9
+ str r0, [sp, #0x8]
+ mov r0, r6
+ bl ClearChar
+ ldr r0, [sp, #0x30]
+ add r8, r8, #0x8
+ add r6, r6, r0
+ cmp r8, r7
+ blt _020B6828
+_020B687C:
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x34]
+ add r0, r1, r0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x14]
+ add r1, r0, #0x8
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #0x14]
+ cmp r1, r0
+ blt _020B67E0
+ add sp, sp, #0x3c
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end ClearAreaLine
+
+ arm_func_start ClearContinuous
+ClearContinuous: ; 0x020B68AC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r3, r0
+ ldrb r2, [r3, #0xc]
+ ldr r12, [r3, #0x4]
+ cmp r2, #0x4
+ orreq r0, r1, r1, lsl #0x4
+ orreq r0, r0, r0, lsl #0x8
+ orreq r1, r0, r0, lsl #0x10
+ orrne r0, r1, r1, lsl #0x8
+ orrne r1, r0, r0, lsl #0x10
+ ldr r0, [r3, #0x8]
+ mov r2, r2, lsl #0x6
+ mul lr, r12, r0
+ mov r0, r2, asr #0x2
+ add r0, r2, r0, lsr #0x1d
+ mov r2, r0, asr #0x3
+ mov r0, r1
+ mul r2, lr, r2
+ ldr r1, [r3, #0x0]
+ bl MIi_CpuClearFast
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end ClearContinuous
+
+ arm_func_start DrawGlyph1D
+DrawGlyph1D: ; 0x020B6908
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4c
+ ldr r7, [sp, #0x74]
+ ldrb r5, [r0, #0xc]
+ ldr r6, [r1, #0x0]
+ ldr r4, [r7, #0x0]
+ ldr r9, [r6, #0x8]
+ mov r8, r5, lsl #0x6
+ ldrb r4, [r4, #0x1]
+ mov r5, r8, asr #0x2
+ add r5, r8, r5, lsr #0x1d
+ ldrb r9, [r9, #0x1]
+ ldr r8, [r0, #0x4]
+ ldr r6, [r0, #0x8]
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ cmp r4, #0x0
+ mov r5, r5, asr #0x3
+ addeq sp, sp, #0x4c
+ ldmeqia sp!, {r4-r11,pc}
+ adds r3, r2, r4
+ addmi sp, sp, #0x4c
+ ldmmiia sp!, {r4-r11,pc}
+ ldr r2, [sp, #0xc]
+ adds r2, r2, r9
+ addmi sp, sp, #0x4c
+ ldmmiia sp!, {r4-r11,pc}
+ ldr r10, [sp, #0x8]
+ add r3, r3, #0x7
+ cmp r10, #0x0
+ movle r10, #0x0
+ strle r10, [sp, #0x10]
+ movgt r10, r10, lsr #0x3
+ strgt r10, [sp, #0x10]
+ ldr r10, [sp, #0xc]
+ add r2, r2, #0x7
+ cmp r10, #0x0
+ movle r10, #0x0
+ mov r11, r2, lsr #0x3
+ mov r3, r3, lsr #0x3
+ movgt r10, r10, lsr #0x3
+ cmp r3, r8
+ movcs r3, r8
+ cmp r11, r6
+ ldr r2, [sp, #0x10]
+ movcs r11, r6
+ subs r8, r3, r2
+ addmi sp, sp, #0x4c
+ sub r3, r11, r10
+ ldmmiia sp!, {r4-r11,pc}
+ cmp r3, #0x0
+ addlt sp, sp, #0x4c
+ ldmltia sp!, {r4-r11,pc}
+ ldr r2, [sp, #0x8]
+ ldr r6, [r0, #0x0]
+ cmp r2, #0x0
+ andge r2, r2, #0x7
+ strge r2, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ ldr r11, [sp, #0x8]
+ cmp r2, #0x0
+ andge r2, r2, #0x7
+ strge r2, [sp, #0xc]
+ sub r8, r11, r8, lsl #0x3
+ ldr r11, [sp, #0xc]
+ ldr r2, [sp, #0x70]
+ sub r3, r11, r3, lsl #0x3
+ str r3, [sp, #0x14]
+ ldr r3, [r7, #0x4]
+ sub r2, r2, #0x1
+ str r3, [sp, #0x28]
+ str r2, [sp, #0x48]
+ str r9, [sp, #0x38]
+ str r4, [sp, #0x34]
+ ldr r4, [r1, #0x0]
+ ldr r2, [sp, #0x14]
+ mov r3, r11
+ cmp r3, r2
+ ldr r2, [r4, #0x8]
+ ldrb r3, [r2, #0x6]
+ str r3, [sp, #0x40]
+ ldrb r2, [r0, #0xc]
+ str r2, [sp, #0x44]
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x8]
+ ldrb r1, [r1, #0x0]
+ mul r1, r3, r1
+ str r1, [sp, #0x3c]
+ ldr r1, [r0, #0x10]
+ str r1, [sp, #0x20]
+ ldr r1, [r0, #0x4]
+ ldr r0, [r0, #0x8]
+ ldrb r11, [sp, #0x20]
+ ldrb r4, [sp, #0x21]
+ str r1, [sp, #0x1c]
+ str r0, [sp, #0x18]
+ addle sp, sp, #0x4c
+ ldmleia sp!, {r4-r11,pc}
+_020B6A90:
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x8]
+ cmp r0, r8
+ mov r9, r0
+ ble _020B6AEC
+_020B6AAC:
+ ldr r2, [sp, #0x1c]
+ str r11, [sp, #0x0]
+ ldr r3, [sp, #0x18]
+ mov r0, r7
+ mov r1, r10
+ str r4, [sp, #0x4]
+ bl GetCharIndex1D
+ mla r1, r0, r5, r6
+ add r0, sp, #0x24
+ str r9, [sp, #0x2c]
+ str r1, [sp, #0x24]
+ bl LetterChar
+ sub r9, r9, #0x8
+ add r7, r7, #0x1
+ cmp r9, r8
+ bgt _020B6AAC
+_020B6AEC:
+ ldr r0, [sp, #0xc]
+ add r10, r10, #0x1
+ sub r1, r0, #0x8
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ bgt _020B6A90
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end DrawGlyph1D
+
+ arm_func_start DrawGlyphLine
+DrawGlyphLine: ; 0x020B6B10
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x2c
+ ldr r4, [sp, #0x54]
+ ldrb r5, [r0, #0xc]
+ str r4, [sp, #0x54]
+ ldr r4, [r4, #0x0]
+ ldr r6, [r1, #0x0]
+ mov r7, r5, lsl #0x6
+ ldrb r4, [r4, #0x1]
+ mov r5, r7, asr #0x2
+ add r5, r7, r5, lsr #0x1d
+ cmp r4, #0x0
+ ldr r6, [r6, #0x8]
+ mov r9, r3
+ ldr r8, [r0, #0x4]
+ ldr r7, [r0, #0x8]
+ mov r10, r2
+ mov r5, r5, asr #0x3
+ addeq sp, sp, #0x2c
+ ldr lr, [r0, #0x0]
+ ldrb r3, [r6, #0x1]
+ ldmeqia sp!, {r4-r11,pc}
+ adds r6, r10, r4
+ addmi sp, sp, #0x2c
+ ldmmiia sp!, {r4-r11,pc}
+ adds r2, r9, r3
+ addmi sp, sp, #0x2c
+ ldmmiia sp!, {r4-r11,pc}
+ cmp r10, #0x0
+ movle r11, #0x0
+ add r6, r6, #0x7
+ movgt r11, r10, lsr #0x3
+ cmp r9, #0x0
+ movle r12, #0x0
+ add r2, r2, #0x7
+ mov r6, r6, lsr #0x3
+ movgt r12, r9, lsr #0x3
+ cmp r6, r8
+ movcs r6, r8
+ mov r2, r2, lsr #0x3
+ cmp r2, r7
+ movcs r2, r7
+ subs r7, r6, r11
+ addmi sp, sp, #0x2c
+ sub r2, r2, r12
+ ldmmiia sp!, {r4-r11,pc}
+ cmp r2, #0x0
+ addlt sp, sp, #0x2c
+ ldmltia sp!, {r4-r11,pc}
+ ldr r6, [r0, #0x10]
+ cmp r10, #0x0
+ sub r8, r6, r7
+ mul r8, r5, r8
+ mla r11, r6, r12, r11
+ andge r10, r10, #0x7
+ str r8, [sp, #0x0]
+ ldr r8, [sp, #0x54]
+ mla r6, r5, r11, lr
+ ldr r12, [r8, #0x4]
+ ldr r11, [sp, #0x50]
+ cmp r9, #0x0
+ sub r8, r11, #0x1
+ andge r9, r9, #0x7
+ sub r11, r9, r2, lsl #0x3
+ str r12, [sp, #0x8]
+ str r4, [sp, #0x14]
+ str r8, [sp, #0x28]
+ str r3, [sp, #0x18]
+ ldr r3, [r1, #0x0]
+ cmp r9, r11
+ ldr r2, [r3, #0x8]
+ sub r7, r10, r7, lsl #0x3
+ ldrb r2, [r2, #0x6]
+ str r2, [sp, #0x20]
+ ldrb r0, [r0, #0xc]
+ str r0, [sp, #0x24]
+ ldr r0, [r1, #0x0]
+ ldr r0, [r0, #0x8]
+ ldrb r0, [r0, #0x0]
+ mul r0, r2, r0
+ str r0, [sp, #0x1c]
+ addle sp, sp, #0x2c
+ ldmleia sp!, {r4-r11,pc}
+ add r4, sp, #0x4
+_020B6C60:
+ mov r8, r10
+ str r9, [sp, #0x10]
+ cmp r10, r7
+ ble _020B6C90
+_020B6C70:
+ mov r0, r4
+ str r6, [sp, #0x4]
+ str r8, [sp, #0xc]
+ bl LetterChar
+ sub r8, r8, #0x8
+ cmp r8, r7
+ add r6, r6, r5
+ bgt _020B6C70
+_020B6C90:
+ ldr r0, [sp, #0x0]
+ sub r9, r9, #0x8
+ cmp r9, r11
+ add r6, r6, r0
+ bgt _020B6C60
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end DrawGlyphLine
+
+ arm_func_start LetterChar
+LetterChar: ; 0x020B6CAC
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x34
+ ldr r5, [r0, #0x8]
+ ldr r4, [r0, #0xc]
+ cmp r5, #0x0
+ strge r5, [sp, #0x0]
+ movlt r1, #0x0
+ strlt r1, [sp, #0x0]
+ ldr r1, [r0, #0x10]
+ cmp r4, #0x0
+ add r10, r5, r1
+ ldr r1, [r0, #0x14]
+ movge r2, r4
+ movlt r2, #0x0
+ cmp r10, #0x8
+ add r3, r4, r1
+ movge r10, #0x8
+ cmp r3, #0x8
+ movge r3, #0x8
+ cmp r4, #0x0
+ movgt r4, #0x0
+ cmp r5, #0x0
+ ldr r8, [r0, #0x20]
+ movgt r5, #0x0
+ rsb r1, r4, #0x0
+ mul r7, r10, r8
+ ldr r6, [r0, #0x1c]
+ rsb r4, r5, #0x0
+ mul r9, r6, r4
+ ldr r4, [r0, #0x18]
+ mov r10, r7
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x0]
+ cmp r8, #0x4
+ mul r5, r4, r8
+ ldr r4, [sp, #0x8]
+ str r5, [sp, #0x0]
+ mla r11, r1, r4, r9
+ ldr r1, [r0, #0x4]
+ str r1, [sp, #0x4]
+ bne _020B6E24
+ ldr r1, [r0, #0x0]
+ ldr r7, [r0, #0x24]
+ add r0, r1, r2, lsl #0x2
+ str r0, [sp, #0xc]
+ add r0, r1, r3, lsl #0x2
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ cmp r1, r0
+ addcs sp, sp, #0x34
+ ldmcsia sp!, {r4-r11,pc}
+ mov r0, #0x0
+ add r9, sp, #0x24
+ mov r4, #0xf
+ str r0, [sp, #0x1c]
+_020B6D88:
+ ldr r0, [sp, #0xc]
+ mov r1, r11, lsr #0x1f
+ ldr r5, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ rsb r2, r1, r11, lsl #0x1d
+ add r0, r0, r11, lsr #0x3
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x1c]
+ add r1, r1, r2, ror #0x1d
+ strb r0, [sp, #0x28]
+ strb r0, [sp, #0x29]
+ mov r0, r9
+ bl NNSi_G2dBitReaderRead
+ ldr r8, [sp, #0x0]
+ mov r0, r8
+ cmp r0, r10
+ bhs _020B6DF8
+_020B6DCC:
+ mov r0, r9
+ mov r1, r6
+ bl NNSi_G2dBitReaderRead
+ cmp r0, #0x0
+ mvnne r1, r4, lsl r8
+ addne r0, r7, r0
+ andne r1, r5, r1
+ orrne r5, r1, r0, lsl r8
+ add r8, r8, #0x4
+ cmp r8, r10
+ blo _020B6DCC
+_020B6DF8:
+ ldr r0, [sp, #0xc]
+ add r1, r0, #0x4
+ str r5, [r0, #0x0]
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ ldr r0, [sp, #0x8]
+ add r11, r11, r0
+ blo _020B6D88
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r11,pc}
+_020B6E24:
+ ldr r1, [r0, #0x0]
+ ldr r9, [r0, #0x24]
+ add r0, r1, r2, lsl #0x3
+ str r0, [sp, #0x14]
+ add r0, r1, r3, lsl #0x3
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ cmp r1, r0
+ addcs sp, sp, #0x34
+ ldmcsia sp!, {r4-r11,pc}
+ mov r0, #0x0
+ mov r4, #0xff
+ str r0, [sp, #0x20]
+_020B6E58:
+ mov r1, r11, lsr #0x1f
+ rsb r0, r1, r11, lsl #0x1d
+ add r1, r1, r0, ror #0x1d
+ ldr r0, [sp, #0x14]
+ ldr r8, [r0, #0x0]
+ ldr r7, [r0, #0x4]
+ ldr r0, [sp, #0x4]
+ add r0, r0, r11, lsr #0x3
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x20]
+ strb r0, [sp, #0x30]
+ strb r0, [sp, #0x31]
+ add r0, sp, #0x2c
+ bl NNSi_G2dBitReaderRead
+ ldr r0, [sp, #0x0]
+ cmp r0, r10
+ mov r5, r0
+ bhs _020B6EE8
+_020B6EA0:
+ add r0, sp, #0x2c
+ mov r1, r6
+ bl NNSi_G2dBitReaderRead
+ cmp r0, #0x0
+ beq _020B6EDC
+ cmp r5, #0x20
+ mvncc r1, r4, lsl r5
+ addcc r0, r9, r0
+ andcc r1, r8, r1
+ orrcc r8, r1, r0, lsl r5
+ subcs r2, r5, #0x20
+ mvncs r1, r4, lsl r2
+ addcs r0, r9, r0
+ andcs r1, r7, r1
+ orrcs r7, r1, r0, lsl r2
+_020B6EDC:
+ add r5, r5, #0x8
+ cmp r5, r10
+ blo _020B6EA0
+_020B6EE8:
+ ldr r0, [sp, #0x14]
+ str r8, [r0, #0x0]
+ add r1, r0, #0x8
+ str r7, [r0, #0x4]
+ ldr r0, [sp, #0x18]
+ str r1, [sp, #0x14]
+ cmp r1, r0
+ ldr r0, [sp, #0x8]
+ add r11, r11, r0
+ blo _020B6E58
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end LetterChar
+
+ arm_func_start ClearChar
+ClearChar: ; 0x020B6F18
+ stmdb sp!, {r4-r6,lr}
+ mov lr, r0
+ cmp r3, #0x8
+ ldr r0, [sp, #0x14]
+ bne _020B6F4C
+ ldr r4, [sp, #0x10]
+ cmp r4, #0x8
+ bne _020B6F4C
+ ldr r2, [sp, #0x18]
+ mov r1, lr
+ mov r2, r2, lsl #0x3
+ bl MIi_CpuClearFast
+ ldmia sp!, {r4-r6,pc}
+_020B6F4C:
+ ldr r4, [sp, #0x18]
+ cmp r4, #0x4
+ bne _020B6FAC
+ mov r5, r1, lsl #0x2
+ add r4, r5, r3, lsl #0x2
+ mvn r3, #0x0
+ rsb r4, r4, #0x20
+ mov r3, r3, lsr r5
+ add r1, r4, r1, lsl #0x2
+ mov r3, r3, lsl r1
+ ldr r1, [sp, #0x10]
+ add r5, lr, r2, lsl #0x2
+ add r2, r5, r1, lsl #0x2
+ and r6, r0, r3, lsr r4
+ cmp r5, r2
+ mvn r1, r3, lsr r4
+ ldmcsia sp!, {r4-r6,pc}
+_020B6F90:
+ ldr r0, [r5, #0x0]
+ and r0, r0, r1
+ orr r0, r6, r0
+ str r0, [r5], #0x4
+ cmp r5, r2
+ blo _020B6F90
+ ldmia sp!, {r4-r6,pc}
+_020B6FAC:
+ mov r12, r1, lsl #0x3
+ add r1, r12, r3, lsl #0x3
+ rsb r1, r1, #0x40
+ mvn r3, #0x0
+ cmp r1, #0x20
+ mov r5, r3, lsr r12
+ subcs r4, r1, #0x20
+ addcs r3, r12, r4
+ movcs r3, r5, lsl r3
+ movcs r3, r3, lsr r4
+ movcc r3, r5, lsl r12
+ mvn r4, #0x0
+ add r5, lr, r2, lsl #0x3
+ cmp r12, #0x20
+ mov r4, r4, lsl r1
+ subcs r12, r12, #0x20
+ addcs r1, r12, r1
+ movcs r1, r4, lsr r1
+ movcs r6, r1, lsl r12
+ movcc r6, r4, lsr r1
+ ldr r1, [sp, #0x10]
+ and lr, r0, r3
+ add r4, r5, r1, lsl #0x3
+ cmp r5, r4
+ and r12, r0, r6
+ mvn r2, r3
+ mvn r1, r6
+ ldmcsia sp!, {r4-r6,pc}
+_020B701C:
+ ldr r0, [r5, #0x0]
+ and r0, r0, r2
+ orr r0, lr, r0
+ str r0, [r5, #0x0]
+ ldr r0, [r5, #0x4]
+ and r0, r0, r1
+ orr r0, r12, r0
+ str r0, [r5, #0x4]
+ add r5, r5, #0x8
+ cmp r5, r4
+ blo _020B701C
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end ClearChar
+
+ arm_func_start OBJSizeToShape
+OBJSizeToShape: ; 0x020B704C
+ ldrb r3, [r0, #0x1]
+ ldr r2, _020B7064 ; =shape$8277
+ ldrb r1, [r0, #0x0]
+ add r0, r2, r3, lsl #0x4
+ ldr r0, [r0, r1, lsl #0x2]
+ bx lr
+ .balign 4
+_020B7064: .word shape$8277
+ arm_func_end OBJSizeToShape
+
+ arm_func_start GetCharIndex1D
+GetCharIndex1D: ; 0x020B7068
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr fp, _020B7164 ; =objs$8221
+ mov r9, #0x0
+ mov r10, #0x3
+ mvn r7, #0x0
+_020B7080:
+ ldr r4, [sp, #0x2c]
+ ldr r6, [sp, #0x28]
+ and r12, r3, r7, lsl r4
+ cmp r12, r1
+ mov r8, r7, lsl r6
+ mov r5, r7, lsl r4
+ and lr, r2, r7, lsl r6
+ bhi _020B70D0
+ mla r9, r2, r12, r9
+ cmp lr, r0
+ movhi r2, lr
+ subhi r1, r1, r12
+ subhi r3, r3, r12
+ bhi _020B7118
+ sub r3, r3, r12
+ mla r9, lr, r3, r9
+ sub r0, r0, lr
+ sub r1, r1, r12
+ sub r2, r2, lr
+ b _020B7118
+_020B70D0:
+ cmp lr, r0
+ mlals r9, lr, r12, r9
+ mvn r3, r5
+ movls r3, r12
+ subls r0, r0, lr
+ subls r2, r2, lr
+ bls _020B7118
+ and r2, r1, r5
+ mla r5, lr, r2, r9
+ and r2, r0, r8
+ and r1, r1, r3
+ add r2, r5, r2, lsl r4
+ mvn r3, r8
+ add r1, r2, r1, lsl r6
+ and r0, r0, r3
+ add sp, sp, #0x4
+ add r0, r1, r0
+ ldmia sp!, {r4-r11,pc}
+_020B7118:
+ cmp r2, #0x8
+ movlt r4, r2
+ movge r5, r10
+ clzlt r4, r4
+ rsblt r5, r4, #0x1f
+ cmp r3, #0x8
+ movge r4, r10
+ movlt r4, r3
+ clzlt r4, r4
+ rsblt r4, r4, #0x1f
+ add r4, r11, r4, lsl #0x3
+ add r6, r4, r5, lsl #0x1
+ ldrb r5, [r4, r5, lsl #0x1]
+ ldrb r4, [r6, #0x1]
+ str r5, [sp, #0x28]
+ str r4, [sp, #0x2c]
+ b _020B7080
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B7164: .word objs$8221
+ arm_func_end GetCharIndex1D
diff --git a/arm9/asm/NNS_G2D_g2d_font.s b/arm9/asm/NNS_G2D_g2d_font.s
new file mode 100644
index 00000000..162fe423
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_font.s
@@ -0,0 +1,284 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dFontGetTextRect
+NNSi_G2dFontGetTextRect: ; 0x020B5ABC
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0xc
+ add r5, sp, #0x0
+ mov r4, #0x0
+ str r4, [r5, #0x0]
+ str r4, [r5, #0x4]
+ mov r8, r2
+ ldr r2, [sp, #0x28]
+ mov r5, r0
+ mov r9, r1
+ mov r4, r3
+ cmp r2, #0x0
+ mov r7, #0x1
+ beq _020B5B24
+ add r6, sp, #0x28
+_020B5AF8:
+ mov r0, r9
+ mov r1, r8
+ mov r3, r6
+ bl NNSi_G2dFontGetStringWidth
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x28]
+ cmp r0, r1
+ strgt r0, [sp, #0x0]
+ add r7, r7, #0x1
+ cmp r2, #0x0
+ bne _020B5AF8
+_020B5B24:
+ ldr r0, [r9, #0x0]
+ sub r2, r7, #0x1
+ ldrsb r1, [r0, #0x1]
+ ldr r0, [sp, #0x0]
+ add r1, r4, r1
+ mul r1, r2, r1
+ sub r1, r1, r4
+ str r1, [sp, #0x4]
+ str r0, [r5, #0x0]
+ str r1, [r5, #0x4]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end NNSi_G2dFontGetTextRect
+
+ arm_func_start NNSi_G2dFontGetTextHeight
+NNSi_G2dFontGetTextHeight: ; 0x020B5B54
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ str r2, [sp, #0x0]
+ add r3, sp, #0x4
+ mov r2, #0x0
+ str r2, [r3, #0x0]
+ mov r8, r0
+ str r2, [r3, #0x4]
+ ldr r7, [r8, #0x4]
+ add r0, sp, #0x0
+ mov r5, r1
+ mov r4, #0x1
+ blx r7
+ cmp r0, #0x0
+ beq _020B5BAC
+ add r6, sp, #0x0
+_020B5B94:
+ cmp r0, #0xa
+ mov r0, r6
+ addeq r4, r4, #0x1
+ blx r7
+ cmp r0, #0x0
+ bne _020B5B94
+_020B5BAC:
+ ldr r0, [r8, #0x0]
+ ldrsb r0, [r0, #0x1]
+ add r0, r5, r0
+ mul r0, r4, r0
+ sub r0, r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNSi_G2dFontGetTextHeight
+
+ arm_func_start NNSi_G2dFontGetStringWidth
+NNSi_G2dFontGetStringWidth: ; 0x020B5BC8
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x8
+ mov r8, r0
+ str r2, [sp, #0x0]
+ ldr r4, [r8, #0x4]
+ add r0, sp, #0x0
+ mov r7, r1
+ mov r6, r3
+ mov r5, #0x0
+ blx r4
+ movs r1, r0
+ beq _020B5C58
+ ldr sb, _020B5C84 ; =0x0000FFFF
+ add r10, sp, #0x0
+_020B5C00:
+ cmp r1, #0xa
+ beq _020B5C58
+ mov r0, r8
+ bl NNS_G2dFontFindGlyphIndex
+ mov r1, r0
+ cmp r1, r9
+ ldreq r0, [r8, #0x0]
+ ldreqh r1, [r0, #0x2]
+ mov r0, r8
+ bl NNS_G2dFontGetCharWidthsFromIndex
+ ldrh r1, [r8, #0x8]
+ cmp r1, #0x0
+ ldrnesb r1, [r0, #0x0]
+ ldrneb r0, [r0, #0x1]
+ addne r0, r1, r0
+ ldreqsb r0, [r0, #0x2]
+ add r1, r7, r0
+ mov r0, r10
+ add r5, r5, r1
+ blx r4
+ movs r1, r0
+ bne _020B5C00
+_020B5C58:
+ cmp r6, #0x0
+ beq _020B5C70
+ cmp r1, #0xa
+ ldreq r0, [sp, #0x0]
+ movne r0, #0x0
+ str r0, [r6, #0x0]
+_020B5C70:
+ cmp r5, #0x0
+ subgt r5, r5, r7
+ mov r0, r5
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020B5C84: .word 0x0000FFFF
+ arm_func_end NNSi_G2dFontGetStringWidth
+
+ arm_func_start NNS_G2dFontGetCharWidthsFromIndex
+NNS_G2dFontGetCharWidthsFromIndex: ; 0x020B5C88
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x0]
+ ldr lr, [r3, #0xc]
+ cmp lr, #0x0
+ beq _020B5CD8
+_020B5CA0:
+ ldrh r12, [lr, #0x0]
+ cmp r12, r1
+ bhi _020B5CCC
+ ldrh r2, [lr, #0x2]
+ cmp r1, r2
+ ldrlsh r2, [r0, #0xa]
+ addls r3, lr, #0x8
+ subls r0, r1, r12
+ mlals r0, r2, r0, r3
+ addls sp, sp, #0x4
+ ldmlsia sp!, {pc}
+_020B5CCC:
+ ldr lr, [lr, #0x4]
+ cmp lr, #0x0
+ bne _020B5CA0
+_020B5CD8:
+ add r0, r3, #0x4
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G2dFontGetCharWidthsFromIndex
+
+ arm_func_start NNS_G2dFontFindGlyphIndex
+NNS_G2dFontFindGlyphIndex: ; 0x020B5CE4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0x0
+ beq _020B5D2C
+_020B5CFC:
+ ldrh r2, [r0, #0x0]
+ cmp r2, r1
+ bhi _020B5D20
+ ldrh r2, [r0, #0x2]
+ cmp r1, r2
+ bhi _020B5D20
+ bl GetGlyphIndex
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020B5D20:
+ ldr r0, [r0, #0x8]
+ cmp r0, #0x0
+ bne _020B5CFC
+_020B5D2C:
+ ldr r0, _020B5D38 ; =0x0000FFFF
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B5D38: .word 0x0000FFFF
+ arm_func_end NNS_G2dFontFindGlyphIndex
+
+ arm_func_start NNS_G2dFontInitUTF16
+NNS_G2dFontInitUTF16: ; 0x020B5D3C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, r1
+ mov r1, r4
+ bl NNSi_G2dGetUnpackedFont
+ sub r0, r0, #0x1
+ strh r0, [r4, #0x8]
+ ldrh r0, [r4, #0x8]
+ cmp r0, #0x0
+ movne r1, #0x2
+ moveq r1, #0x3
+ ldr r0, _020B5D78 ; =NNSi_G2dSplitCharUTF16
+ strh r1, [r4, #0xa]
+ str r0, [r4, #0x4]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B5D78: .word NNSi_G2dSplitCharUTF16
+ arm_func_end NNS_G2dFontInitUTF16
+
+ arm_func_start GetGlyphIndex
+GetGlyphIndex: ; 0x020B5D7C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldrh r3, [r0, #0x4]
+ ldr r2, _020B5E4C ; =0x0000FFFF
+ cmp r3, #0x0
+ beq _020B5DA8
+ cmp r3, #0x1
+ beq _020B5DC4
+ cmp r3, #0x2
+ beq _020B5DD8
+ b _020B5E40
+_020B5DA8:
+ ldrh r2, [r0, #0x0]
+ ldrh r3, [r0, #0xc]
+ sub r0, r1, r2
+ add r0, r3, r0
+ mov r0, r0, lsl #0x10
+ mov r2, r0, lsr #0x10
+ b _020B5E40
+_020B5DC4:
+ ldrh r2, [r0, #0x0]
+ sub r1, r1, r2
+ add r0, r0, r1, lsl #0x1
+ ldrh r2, [r0, #0xc]
+ b _020B5E40
+_020B5DD8:
+ ldrh r3, [r0, #0xc]
+ add r0, r0, #0xc
+ add r0, r0, #0x2
+ sub r3, r3, #0x1
+ add lr, r0, r3, lsl #0x2
+ cmp r0, lr
+ bhi _020B5E40
+_020B5DF4:
+ sub r12, lr, r0
+ mov r3, r12, asr #0x1
+ add r3, r12, r3, lsr #0x1e
+ mov r3, r3, asr #0x2
+ add r3, r3, r3, lsr #0x1f
+ mov r12, r3, asr #0x1
+ mov r3, r12, lsl #0x2
+ ldrh r3, [r0, r3]
+ add r12, r0, r12, lsl #0x2
+ cmp r3, r1
+ addcc r0, r12, #0x4
+ blo _020B5E38
+ cmp r1, r3
+ subcc lr, r12, #0x4
+ blo _020B5E38
+ ldrh r2, [r12, #0x2]
+ b _020B5E40
+_020B5E38:
+ cmp r0, lr
+ bls _020B5DF4
+_020B5E40:
+ mov r0, r2
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B5E4C: .word 0x0000FFFF
+ arm_func_end GetGlyphIndex
diff --git a/arm9/asm/NNS_G2D_g2d_image.s b/arm9/asm/NNS_G2D_g2d_image.s
new file mode 100644
index 00000000..796da6c6
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_image.s
@@ -0,0 +1,780 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dGetVramLocation
+NNSi_G2dGetVramLocation: ; 0x020B10BC
+ ldr r0, [r0, r1, lsl #0x2]
+ bx lr
+ arm_func_end NNSi_G2dGetVramLocation
+
+ arm_func_start NNSi_G2dSetVramLocation
+NNSi_G2dSetVramLocation: ; 0x020B10C4
+ str r2, [r0, r1, lsl #0x2]
+ bx lr
+ arm_func_end NNSi_G2dSetVramLocation
+
+ arm_func_start NNSi_G2dInitializeVRamLocation
+NNSi_G2dInitializeVRamLocation: ; 0x020B10CC
+ mov r2, #0x0
+ mvn r1, #0x0
+_020B10D4:
+ str r1, [r0, r2, lsl #0x2]
+ add r2, r2, #0x1
+ cmp r2, #0x3
+ blt _020B10D4
+ bx lr
+ arm_func_end NNSi_G2dInitializeVRamLocation
+
+ arm_func_start NNS_G2dLoadPaletteEx
+NNS_G2dLoadPaletteEx: ; 0x020B10E8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r10, r0
+ ldr r0, [r10, #0x0]
+ mov r9, r1
+ cmp r0, #0x3
+ ldr r0, [sp, #0x28]
+ moveq r7, #0x20
+ str r0, [sp, #0x28]
+ ldrh r0, [r9, #0x0]
+ movne r7, #0x200
+ mov r11, r2
+ mov r8, r3
+ str r0, [sp, #0x0]
+ mov r6, #0x0
+ cmp r0, #0x0
+ bls _020B1210
+_020B112C:
+ ldr r1, [r9, #0x4]
+ mov r0, r6, lsl #0x1
+ ldrh r2, [r1, r0]
+ ldr r0, [r10, #0xc]
+ ldr r1, [r10, #0x8]
+ mla r5, r7, r2, r11
+ mla r4, r7, r6, r0
+ bl DC_FlushRange
+ cmp r8, #0x0
+ beq _020B11E0
+ cmp r8, #0x1
+ beq _020B1168
+ cmp r8, #0x2
+ beq _020B11A4
+ b _020B11F8
+_020B1168:
+ ldr r0, [r10, #0x4]
+ cmp r0, #0x0
+ beq _020B1190
+ bl GX_BeginLoadOBJExtPltt
+ mov r0, r4
+ mov r1, r5
+ mov r2, r7
+ bl GX_LoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
+ b _020B11F8
+_020B1190:
+ mov r0, r4
+ mov r1, r5
+ mov r2, r7
+ bl GX_LoadOBJPltt
+ b _020B11F8
+_020B11A4:
+ ldr r0, [r10, #0x4]
+ cmp r0, #0x0
+ beq _020B11CC
+ bl GXS_BeginLoadOBJExtPltt
+ mov r0, r4
+ mov r1, r5
+ mov r2, r7
+ bl GXS_LoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
+ b _020B11F8
+_020B11CC:
+ mov r0, r4
+ mov r1, r5
+ mov r2, r7
+ bl GXS_LoadOBJPltt
+ b _020B11F8
+_020B11E0:
+ bl GX_BeginLoadTexPltt
+ mov r0, r4
+ mov r1, r5
+ mov r2, r7
+ bl GX_LoadTexPltt
+ bl GX_EndLoadTexPltt
+_020B11F8:
+ add r0, r6, #0x1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ ldr r0, [sp, #0x0]
+ cmp r6, r0
+ blo _020B112C
+_020B1210:
+ ldr r0, [sp, #0x28]
+ ldr r2, [r10, #0x0]
+ mov r1, r0
+ str r2, [r1, #0x0]
+ ldr r4, [r10, #0x4]
+ mov r3, r0
+ mov r1, r8
+ mov r2, r11
+ str r4, [r3, #0x4]
+ bl NNS_G2dSetImagePaletteLocation
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end NNS_G2dLoadPaletteEx
+
+ arm_func_start NNS_G2dLoadPalette
+NNS_G2dLoadPalette: ; 0x020B1240
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r9, r0
+ ldr r5, [r9, #0xc]
+ ldr r4, [r9, #0x8]
+ mov r8, r1
+ mov r7, r2
+ mov r0, r5
+ mov r1, r4
+ mov r6, r3
+ bl DC_FlushRange
+ cmp r7, #0x0
+ beq _020B1300
+ cmp r7, #0x1
+ beq _020B1288
+ cmp r7, #0x2
+ beq _020B12C4
+ b _020B1318
+_020B1288:
+ ldr r0, [r9, #0x4]
+ cmp r0, #0x0
+ beq _020B12B0
+ bl GX_BeginLoadOBJExtPltt
+ mov r0, r5
+ mov r1, r8
+ mov r2, r4
+ bl GX_LoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
+ b _020B1318
+_020B12B0:
+ mov r0, r5
+ mov r1, r8
+ mov r2, r4
+ bl GX_LoadOBJPltt
+ b _020B1318
+_020B12C4:
+ ldr r0, [r9, #0x4]
+ cmp r0, #0x0
+ beq _020B12EC
+ bl GXS_BeginLoadOBJExtPltt
+ mov r0, r5
+ mov r1, r8
+ mov r2, r4
+ bl GXS_LoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
+ b _020B1318
+_020B12EC:
+ mov r0, r5
+ mov r1, r8
+ mov r2, r4
+ bl GXS_LoadOBJPltt
+ b _020B1318
+_020B1300:
+ bl GX_BeginLoadTexPltt
+ mov r0, r5
+ mov r1, r8
+ mov r2, r4
+ bl GX_LoadTexPltt
+ bl GX_EndLoadTexPltt
+_020B1318:
+ ldr r1, [r9, #0x0]
+ mov r0, r6
+ str r1, [r6, #0x0]
+ ldr r3, [r9, #0x4]
+ mov r1, r7
+ mov r2, r8
+ str r3, [r6, #0x4]
+ bl NNS_G2dSetImagePaletteLocation
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end NNS_G2dLoadPalette
+
+ arm_func_start NNS_G2dLoadImageVramTransfer
+NNS_G2dLoadImageVramTransfer: ; 0x020B1340
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ ldr r0, [r7, #0x14]
+ ldr r1, [r7, #0x10]
+ mov r5, r2
+ mov r4, r3
+ bl DC_FlushRange
+ cmp r5, #0x0
+ ldr r0, [r7, #0x8]
+ beq _020B13B8
+ cmp r5, #0x1
+ beq _020B1384
+ cmp r5, #0x2
+ beq _020B13A0
+ b _020B13B8
+_020B1384:
+ mov r3, #0x4000000
+ ldr r2, [r3, #0x0]
+ ldr r1, _020B1520 ; =0xFFCFFFEF
+ and r1, r2, r1
+ orr r0, r1, r0
+ str r0, [r3, #0x0]
+ b _020B13B8
+_020B13A0:
+ ldr r3, _020B1524 ; =0x04001000
+ ldr r1, _020B1520 ; =0xFFCFFFEF
+ ldr r2, [r3, #0x0]
+ and r1, r2, r1
+ orr r0, r1, r0
+ str r0, [r3, #0x0]
+_020B13B8:
+ ldr r0, [r7, #0x8]
+ cmp r0, #0x0
+ bne _020B14D8
+ ldrh r0, [r7, #0x2]
+ cmp r0, #0x10
+ bgt _020B1408
+ cmp r0, #0x10
+ bge _020B1434
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020B1444
+ ; Jump table
+ b _020B1444 ; case 0
+ b _020B1414 ; case 1
+ b _020B141C ; case 2
+ b _020B1444 ; case 3
+ b _020B1424 ; case 4
+ b _020B1444 ; case 5
+ b _020B1444 ; case 6
+ b _020B1444 ; case 7
+ b _020B142C ; case 8
+_020B1408:
+ cmp r0, #0x20
+ beq _020B143C
+ b _020B1444
+_020B1414:
+ mov r0, #0x0
+ b _020B1448
+_020B141C:
+ mov r0, #0x1
+ b _020B1448
+_020B1424:
+ mov r0, #0x2
+ b _020B1448
+_020B142C:
+ mov r0, #0x3
+ b _020B1448
+_020B1434:
+ mov r0, #0x4
+ b _020B1448
+_020B143C:
+ mov r0, #0x5
+ b _020B1448
+_020B1444:
+ mov r0, #0x0
+_020B1448:
+ str r0, [r4, #0xc]
+ ldrh r0, [r7, #0x0]
+ cmp r0, #0x10
+ bgt _020B1490
+ cmp r0, #0x10
+ bge _020B14BC
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020B14CC
+ ; Jump table
+ b _020B14CC ; case 0
+ b _020B149C ; case 1
+ b _020B14A4 ; case 2
+ b _020B14CC ; case 3
+ b _020B14AC ; case 4
+ b _020B14CC ; case 5
+ b _020B14CC ; case 6
+ b _020B14CC ; case 7
+ b _020B14B4 ; case 8
+_020B1490:
+ cmp r0, #0x20
+ beq _020B14C4
+ b _020B14CC
+_020B149C:
+ mov r0, #0x0
+ b _020B14D0
+_020B14A4:
+ mov r0, #0x1
+ b _020B14D0
+_020B14AC:
+ mov r0, #0x2
+ b _020B14D0
+_020B14B4:
+ mov r0, #0x3
+ b _020B14D0
+_020B14BC:
+ mov r0, #0x4
+ b _020B14D0
+_020B14C4:
+ mov r0, #0x5
+ b _020B14D0
+_020B14CC:
+ mov r0, #0x0
+_020B14D0:
+ str r0, [r4, #0x10]
+ b _020B14E8
+_020B14D8:
+ ldrh r0, [r7, #0x2]
+ str r0, [r4, #0xc]
+ ldrh r0, [r7, #0x0]
+ str r0, [r4, #0x10]
+_020B14E8:
+ ldr r1, [r7, #0x4]
+ mov r0, #0x0
+ str r1, [r4, #0x14]
+ str r0, [r4, #0x18]
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ ldr r3, [r7, #0x8]
+ mov r0, r4
+ mov r1, r5
+ mov r2, r6
+ str r3, [r4, #0x20]
+ bl NNS_G2dSetImageLocation
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B1520: .word 0xFFCFFFEF
+_020B1524: .word 0x04001000
+ arm_func_end NNS_G2dLoadImageVramTransfer
+
+ arm_func_start NNS_G2dLoadImage2DMapping
+NNS_G2dLoadImage2DMapping: ; 0x020B1528
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ movs r5, r2
+ mov r6, r1
+ mov r4, r3
+ ldr r0, [r7, #0x8]
+ beq _020B1590
+ cmp r5, #0x1
+ beq _020B155C
+ cmp r5, #0x2
+ beq _020B1578
+ b _020B1590
+_020B155C:
+ mov r3, #0x4000000
+ ldr r2, [r3, #0x0]
+ ldr r1, _020B1760 ; =0xFFCFFFEF
+ and r1, r2, r1
+ orr r0, r1, r0
+ str r0, [r3, #0x0]
+ b _020B1590
+_020B1578:
+ ldr r3, _020B1764 ; =0x04001000
+ ldr r1, _020B1760 ; =0xFFCFFFEF
+ ldr r2, [r3, #0x0]
+ and r1, r2, r1
+ orr r0, r1, r0
+ str r0, [r3, #0x0]
+_020B1590:
+ ldr r0, [r7, #0x14]
+ ldr r1, [r7, #0x10]
+ bl DC_FlushRange
+ cmp r5, #0x0
+ beq _020B15B8
+ cmp r5, #0x1
+ beq _020B15D4
+ cmp r5, #0x2
+ beq _020B15E8
+ b _020B15F8
+_020B15B8:
+ bl GX_BeginLoadTex
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x10]
+ mov r1, r6
+ bl GX_LoadTex
+ bl GX_EndLoadTex
+ b _020B15F8
+_020B15D4:
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x10]
+ mov r1, r6
+ bl GX_LoadOBJ
+ b _020B15F8
+_020B15E8:
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x10]
+ mov r1, r6
+ bl GXS_LoadOBJ
+_020B15F8:
+ ldr r0, [r7, #0x8]
+ cmp r0, #0x0
+ bne _020B1718
+ ldrh r0, [r7, #0x2]
+ cmp r0, #0x10
+ bgt _020B1648
+ cmp r0, #0x10
+ bge _020B1674
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020B1684
+ ; Jump table
+ b _020B1684 ; case 0
+ b _020B1654 ; case 1
+ b _020B165C ; case 2
+ b _020B1684 ; case 3
+ b _020B1664 ; case 4
+ b _020B1684 ; case 5
+ b _020B1684 ; case 6
+ b _020B1684 ; case 7
+ b _020B166C ; case 8
+_020B1648:
+ cmp r0, #0x20
+ beq _020B167C
+ b _020B1684
+_020B1654:
+ mov r0, #0x0
+ b _020B1688
+_020B165C:
+ mov r0, #0x1
+ b _020B1688
+_020B1664:
+ mov r0, #0x2
+ b _020B1688
+_020B166C:
+ mov r0, #0x3
+ b _020B1688
+_020B1674:
+ mov r0, #0x4
+ b _020B1688
+_020B167C:
+ mov r0, #0x5
+ b _020B1688
+_020B1684:
+ mov r0, #0x0
+_020B1688:
+ str r0, [r4, #0xc]
+ ldrh r0, [r7, #0x0]
+ cmp r0, #0x10
+ bgt _020B16D0
+ cmp r0, #0x10
+ bge _020B16FC
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020B170C
+ ; Jump table
+ b _020B170C ; case 0
+ b _020B16DC ; case 1
+ b _020B16E4 ; case 2
+ b _020B170C ; case 3
+ b _020B16EC ; case 4
+ b _020B170C ; case 5
+ b _020B170C ; case 6
+ b _020B170C ; case 7
+ b _020B16F4 ; case 8
+_020B16D0:
+ cmp r0, #0x20
+ beq _020B1704
+ b _020B170C
+_020B16DC:
+ mov r0, #0x0
+ b _020B1710
+_020B16E4:
+ mov r0, #0x1
+ b _020B1710
+_020B16EC:
+ mov r0, #0x2
+ b _020B1710
+_020B16F4:
+ mov r0, #0x3
+ b _020B1710
+_020B16FC:
+ mov r0, #0x4
+ b _020B1710
+_020B1704:
+ mov r0, #0x5
+ b _020B1710
+_020B170C:
+ mov r0, #0x0
+_020B1710:
+ str r0, [r4, #0x10]
+ b _020B1728
+_020B1718:
+ ldrh r0, [r7, #0x2]
+ str r0, [r4, #0xc]
+ ldrh r0, [r7, #0x0]
+ str r0, [r4, #0x10]
+_020B1728:
+ ldr r1, [r7, #0x4]
+ mov r0, #0x0
+ str r1, [r4, #0x14]
+ str r0, [r4, #0x18]
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ ldr r3, [r7, #0x8]
+ mov r0, r4
+ mov r1, r5
+ mov r2, r6
+ str r3, [r4, #0x20]
+ bl NNS_G2dSetImageLocation
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B1760: .word 0xFFCFFFEF
+_020B1764: .word 0x04001000
+ arm_func_end NNS_G2dLoadImage2DMapping
+
+ arm_func_start NNS_G2dLoadImage1DMapping
+NNS_G2dLoadImage1DMapping: ; 0x020B1768
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ movs r5, r2
+ mov r6, r1
+ mov r4, r3
+ ldr r0, [r7, #0x8]
+ beq _020B17D0
+ cmp r5, #0x1
+ beq _020B179C
+ cmp r5, #0x2
+ beq _020B17B8
+ b _020B17D0
+_020B179C:
+ mov r3, #0x4000000
+ ldr r2, [r3, #0x0]
+ ldr r1, _020B19A0 ; =0xFFCFFFEF
+ and r1, r2, r1
+ orr r0, r1, r0
+ str r0, [r3, #0x0]
+ b _020B17D0
+_020B17B8:
+ ldr r3, _020B19A4 ; =0x04001000
+ ldr r1, _020B19A0 ; =0xFFCFFFEF
+ ldr r2, [r3, #0x0]
+ and r1, r2, r1
+ orr r0, r1, r0
+ str r0, [r3, #0x0]
+_020B17D0:
+ ldr r0, [r7, #0x14]
+ ldr r1, [r7, #0x10]
+ bl DC_FlushRange
+ cmp r5, #0x0
+ beq _020B17F8
+ cmp r5, #0x1
+ beq _020B1814
+ cmp r5, #0x2
+ beq _020B1828
+ b _020B1838
+_020B17F8:
+ bl GX_BeginLoadTex
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x10]
+ mov r1, r6
+ bl GX_LoadTex
+ bl GX_EndLoadTex
+ b _020B1838
+_020B1814:
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x10]
+ mov r1, r6
+ bl GX_LoadOBJ
+ b _020B1838
+_020B1828:
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x10]
+ mov r1, r6
+ bl GXS_LoadOBJ
+_020B1838:
+ ldr r0, [r7, #0x8]
+ cmp r0, #0x0
+ bne _020B1958
+ ldrh r0, [r7, #0x2]
+ cmp r0, #0x10
+ bgt _020B1888
+ cmp r0, #0x10
+ bge _020B18B4
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020B18C4
+ ; Jump table
+ b _020B18C4 ; case 0
+ b _020B1894 ; case 1
+ b _020B189C ; case 2
+ b _020B18C4 ; case 3
+ b _020B18A4 ; case 4
+ b _020B18C4 ; case 5
+ b _020B18C4 ; case 6
+ b _020B18C4 ; case 7
+ b _020B18AC ; case 8
+_020B1888:
+ cmp r0, #0x20
+ beq _020B18BC
+ b _020B18C4
+_020B1894:
+ mov r0, #0x0
+ b _020B18C8
+_020B189C:
+ mov r0, #0x1
+ b _020B18C8
+_020B18A4:
+ mov r0, #0x2
+ b _020B18C8
+_020B18AC:
+ mov r0, #0x3
+ b _020B18C8
+_020B18B4:
+ mov r0, #0x4
+ b _020B18C8
+_020B18BC:
+ mov r0, #0x5
+ b _020B18C8
+_020B18C4:
+ mov r0, #0x0
+_020B18C8:
+ str r0, [r4, #0xc]
+ ldrh r0, [r7, #0x0]
+ cmp r0, #0x10
+ bgt _020B1910
+ cmp r0, #0x10
+ bge _020B193C
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020B194C
+ ; Jump table
+ b _020B194C ; case 0
+ b _020B191C ; case 1
+ b _020B1924 ; case 2
+ b _020B194C ; case 3
+ b _020B192C ; case 4
+ b _020B194C ; case 5
+ b _020B194C ; case 6
+ b _020B194C ; case 7
+ b _020B1934 ; case 8
+_020B1910:
+ cmp r0, #0x20
+ beq _020B1944
+ b _020B194C
+_020B191C:
+ mov r0, #0x0
+ b _020B1950
+_020B1924:
+ mov r0, #0x1
+ b _020B1950
+_020B192C:
+ mov r0, #0x2
+ b _020B1950
+_020B1934:
+ mov r0, #0x3
+ b _020B1950
+_020B193C:
+ mov r0, #0x4
+ b _020B1950
+_020B1944:
+ mov r0, #0x5
+ b _020B1950
+_020B194C:
+ mov r0, #0x0
+_020B1950:
+ str r0, [r4, #0x10]
+ b _020B1968
+_020B1958:
+ ldrh r0, [r7, #0x2]
+ str r0, [r4, #0xc]
+ ldrh r0, [r7, #0x0]
+ str r0, [r4, #0x10]
+_020B1968:
+ ldr r1, [r7, #0x4]
+ mov r0, #0x0
+ str r1, [r4, #0x14]
+ str r0, [r4, #0x18]
+ mov r0, #0x1
+ str r0, [r4, #0x1c]
+ ldr r3, [r7, #0x8]
+ mov r0, r4
+ mov r1, r5
+ mov r2, r6
+ str r3, [r4, #0x20]
+ bl NNS_G2dSetImageLocation
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B19A0: .word 0xFFCFFFEF
+_020B19A4: .word 0x04001000
+ arm_func_end NNS_G2dLoadImage1DMapping
+
+ arm_func_start NNS_G2dIsImagePaletteReadyToUse
+NNS_G2dIsImagePaletteReadyToUse: ; 0x020B19A8
+ add r0, r0, r1, lsl #0x2
+ ldr r1, [r0, #0x8]
+ mvn r0, #0x0
+ cmp r1, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dIsImagePaletteReadyToUse
+
+ arm_func_start NNS_G2dGetImagePaletteLocation
+NNS_G2dGetImagePaletteLocation: ; 0x020B19C4
+ add r0, r0, r1, lsl #0x2
+ ldr r0, [r0, #0x8]
+ bx lr
+ arm_func_end NNS_G2dGetImagePaletteLocation
+
+ arm_func_start NNS_G2dSetImagePaletteLocation
+NNS_G2dSetImagePaletteLocation: ; 0x020B19D0
+ add r0, r0, r1, lsl #0x2
+ str r2, [r0, #0x8]
+ bx lr
+ arm_func_end NNS_G2dSetImagePaletteLocation
+
+ arm_func_start NNS_G2dInitImagePaletteProxy
+NNS_G2dInitImagePaletteProxy: ; 0x020B19DC
+ mov r3, #0x0
+ mvn r2, #0x0
+_020B19E4:
+ add r1, r0, r3, lsl #0x2
+ add r3, r3, #0x1
+ str r2, [r1, #0x8]
+ cmp r3, #0x3
+ blt _020B19E4
+ bx lr
+ arm_func_end NNS_G2dInitImagePaletteProxy
+
+ arm_func_start NNS_G2dIsImageReadyToUse
+NNS_G2dIsImageReadyToUse: ; 0x020B19FC
+ ldr r1, [r0, r1, lsl #0x2]
+ mvn r0, #0x0
+ cmp r1, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dIsImageReadyToUse
+
+ arm_func_start NNS_G2dGetImageLocation
+NNS_G2dGetImageLocation: ; 0x020B1A14
+ ldr r0, [r0, r1, lsl #0x2]
+ bx lr
+ arm_func_end NNS_G2dGetImageLocation
+
+ arm_func_start NNS_G2dSetImageLocation
+NNS_G2dSetImageLocation: ; 0x020B1A1C
+ str r2, [r0, r1, lsl #0x2]
+ bx lr
+ arm_func_end NNS_G2dSetImageLocation
+
+ arm_func_start NNS_G2dInitImageProxy
+NNS_G2dInitImageProxy: ; 0x020B1A24
+ mov r2, #0x0
+ mvn r1, #0x0
+_020B1A2C:
+ str r1, [r0, r2, lsl #0x2]
+ add r2, r2, #0x1
+ cmp r2, #0x3
+ blt _020B1A2C
+ bx lr
+ arm_func_end NNS_G2dInitImageProxy
diff --git a/arm9/asm/NNS_G2D_g2d_load.s b/arm9/asm/NNS_G2D_g2d_load.s
new file mode 100644
index 00000000..340d8b17
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_load.s
@@ -0,0 +1,55 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dUnpackUserExCellAttrBank
+NNSi_G2dUnpackUserExCellAttrBank: ; 0x020B01B0
+ ldr r1, [r0, #0x4]
+ mov r12, #0x0
+ add r1, r1, r0
+ str r1, [r0, #0x4]
+ ldrh r1, [r0, #0x0]
+ cmp r1, #0x0
+ bxls lr
+_020B01CC:
+ ldr r3, [r0, #0x4]
+ add r1, r12, #0x1
+ ldr r2, [r3, r12, lsl #0x2]
+ mov r1, r1, lsl #0x10
+ add r2, r0, r2
+ str r2, [r3, r12, lsl #0x2]
+ ldrh r2, [r0, #0x0]
+ mov r12, r1, lsr #0x10
+ cmp r12, r2
+ blo _020B01CC
+ bx lr
+ arm_func_end NNSi_G2dUnpackUserExCellAttrBank
+
+ arm_func_start NNS_G2dFindBinaryBlock
+NNS_G2dFindBinaryBlock: ; 0x020B01F8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldrh r2, [r0, #0xc]
+ ldrh r12, [r0, #0xe]
+ mov lr, #0x0
+ add r0, r0, r2
+ cmp r12, #0x0
+ bls _020B0244
+_020B0218:
+ ldr r2, [r0, #0x0]
+ cmp r2, r1
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ add r2, lr, #0x1
+ mov r2, r2, lsl #0x10
+ ldr r3, [r0, #0x4]
+ mov lr, r2, lsr #0x10
+ cmp lr, r12
+ add r0, r0, r3
+ blo _020B0218
+_020B0244:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G2dFindBinaryBlock
diff --git a/arm9/asm/NNS_G2D_g2d_multicellan.s b/arm9/asm/NNS_G2D_g2d_multicellan.s
new file mode 100644
index 00000000..8e2206df
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_multicellan.s
@@ -0,0 +1,490 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dInitMCAnimation
+NNS_G2dInitMCAnimation: ; 0x020B20C8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r6, #0x0
+ str r6, [r0, #0x38]
+ ldr r7, [sp, #0x30]
+ str r6, [r0, #0x30]
+ mov r10, r1
+ str r7, [r0, #0x34]
+ str r0, [sp, #0x0]
+ movs r8, r3
+ mov r9, r2
+ str r10, [r0, #0x3c]
+ ldr r11, [sp, #0x34]
+ beq _020B215C
+ mov r0, #0x1
+ str r6, [sp, #0x8]
+ str r0, [sp, #0x4]
+_020B210C:
+ mov r0, #0x28
+ mul r4, r6, r0
+ ldr r1, [sp, #0x4]
+ add r0, r10, r4
+ bl NNSi_G2dInitializeNode
+ mov r0, #0x54
+ mla r5, r6, r0, r9
+ ldr r1, [sp, #0x8]
+ mov r0, r7
+ str r5, [r10, r4]
+ bl NNS_G2dGetAnimSequenceByIdx
+ mov r1, r0
+ mov r0, r5
+ mov r2, r11
+ bl NNS_G2dInitCellAnimation
+ add r0, r6, #0x1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ cmp r6, r8
+ blo _020B210C
+_020B215C:
+ ldr r0, [sp, #0x0]
+ bl NNS_G2dInitAnimCtrl
+ ldr r0, [sp, #0x0]
+ ldr r3, [sp, #0x38]
+ ldr r2, [sp, #0x0]
+ add r0, r0, #0x44
+ mov r1, #0x1
+ str r3, [r2, #0x40]
+ bl NNSi_G2dSrtcInitControl
+ ldr r0, [sp, #0x0]
+ mov r1, #0x0
+ strh r1, [r0, #0x2c]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end NNS_G2dInitMCAnimation
+
+ arm_func_start NNS_G2dSetMCAnimationCurrentFrame
+NNS_G2dSetMCAnimationCurrentFrame: ; 0x020B2194
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ bl NNS_G2dSetAnimCtrlCurrentFrame
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ mov r0, r7
+ bl NNS_G2dGetAnimCtrlCurrentElement
+ mov r4, r0
+ ldrh r1, [r4, #0x0]
+ ldr r0, [r7, #0x40]
+ bl NNS_G2dGetMultiCellDataByIdx
+ ldr r1, [r7, #0x18]
+ mov r6, r0
+ ldr r1, [r1, #0x4]
+ add r0, r7, #0x44
+ and r5, r1, #0xff
+ mov r1, #0x1
+ bl NNSi_G2dSrtcInitControl
+ cmp r5, #0x0
+ beq _020B2234
+ cmp r5, #0x2
+ bne _020B2208
+ ldrsh r1, [r4, #0x4]
+ ldrsh r2, [r4, #0x6]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetTrans
+ b _020B2234
+_020B2208:
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetSRTScale
+ ldrh r1, [r4, #0x2]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetSRTRotZ
+ ldrsh r1, [r4, #0xc]
+ ldrsh r2, [r4, #0xe]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetTrans
+_020B2234:
+ ldrh r2, [r7, #0x2c]
+ mov r1, r6
+ add r0, r7, #0x30
+ bl SetMCDataToMCInstanceImpl_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G2dSetMCAnimationCurrentFrame
+
+ arm_func_start NNS_G2dTickMCAnimation
+NNS_G2dTickMCAnimation: ; 0x020B224C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ ldr r2, [r4, #0x0]
+ mov r6, r1
+ ldrh r5, [r2, #0x4]
+ bl NNS_G2dTickAnimCtrl
+ cmp r0, #0x0
+ beq _020B2318
+ ldrh r1, [r4, #0x2c]
+ mov r0, r4
+ add r1, r1, r5
+ strh r1, [r4, #0x2c]
+ bl NNS_G2dGetAnimCtrlCurrentElement
+ mov r5, r0
+ ldrh r1, [r5, #0x0]
+ ldr r0, [r4, #0x40]
+ bl NNS_G2dGetMultiCellDataByIdx
+ ldr r1, [r4, #0x18]
+ mov r7, r0
+ ldr r1, [r1, #0x4]
+ add r0, r4, #0x44
+ and r6, r1, #0xff
+ mov r1, #0x1
+ bl NNSi_G2dSrtcInitControl
+ cmp r6, #0x0
+ beq _020B2300
+ cmp r6, #0x2
+ bne _020B22D4
+ ldrsh r1, [r5, #0x4]
+ ldrsh r2, [r5, #0x6]
+ add r0, r4, #0x44
+ bl NNSi_G2dSrtcSetTrans
+ b _020B2300
+_020B22D4:
+ ldr r1, [r5, #0x4]
+ ldr r2, [r5, #0x8]
+ add r0, r4, #0x44
+ bl NNSi_G2dSrtcSetSRTScale
+ ldrh r1, [r5, #0x2]
+ add r0, r4, #0x44
+ bl NNSi_G2dSrtcSetSRTRotZ
+ ldrsh r1, [r5, #0xc]
+ ldrsh r2, [r5, #0xe]
+ add r0, r4, #0x44
+ bl NNSi_G2dSrtcSetTrans
+_020B2300:
+ ldrh r2, [r4, #0x2c]
+ mov r1, r7
+ add r0, r4, #0x30
+ bl SetMCDataToMCInstanceImpl_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+_020B2318:
+ mov r1, r6
+ add r0, r4, #0x30
+ bl NNS_G2dTickMCInstance
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G2dTickMCAnimation
+
+ arm_func_start NNS_G2dTickMCInstance
+NNS_G2dTickMCInstance: ; 0x020B232C
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ ldr r0, [r7, #0x8]
+ mov r6, r1
+ cmp r0, #0x1
+ bne _020B238C
+ ldr r0, [r7, #0x0]
+ ldr r4, [r7, #0xc]
+ ldrh r0, [r0, #0x2]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r8,pc}
+ mov r8, #0x58
+_020B2360:
+ mla r0, r5, r8, r4
+ mov r1, r6
+ bl NNS_G2dTickCellAnimation
+ ldr r1, [r7, #0x0]
+ add r0, r5, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r1, #0x2]
+ mov r5, r0, lsr #0x10
+ cmp r5, r1
+ blo _020B2360
+ ldmia sp!, {r4-r8,pc}
+_020B238C:
+ ldr r0, [r7, #0x0]
+ ldr r4, [r7, #0xc]
+ ldrh r0, [r0, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r8,pc}
+ mov r8, #0x28
+_020B23A8:
+ mul r0, r5, r8
+ ldr r0, [r4, r0]
+ mov r1, r6
+ bl NNS_G2dTickCellAnimation
+ ldr r1, [r7, #0x0]
+ add r0, r5, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r1, #0x0]
+ mov r5, r0, lsr #0x10
+ cmp r5, r1
+ blo _020B23A8
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNS_G2dTickMCInstance
+
+ arm_func_start NNS_G2dGetMCBankNumNodesRequired
+NNS_G2dGetMCBankNumNodesRequired: ; 0x020B23D8
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ ldrh r0, [r5, #0x0]
+ mov r4, #0x0
+ mov r6, r4
+ cmp r0, #0x0
+ bls _020B2424
+_020B23F4:
+ mov r0, r5
+ mov r1, r6
+ bl NNS_G2dGetMultiCellDataByIdx
+ ldrh r0, [r0, #0x0]
+ ldrh r1, [r5, #0x0]
+ cmp r0, r4
+ movhi r4, r0
+ add r0, r6, #0x1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ cmp r6, r1
+ blo _020B23F4
+_020B2424:
+ mov r0, r4
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G2dGetMCBankNumNodesRequired
+
+ arm_func_start NNS_G2dSetAnimSequenceToMCAnimation
+NNS_G2dSetAnimSequenceToMCAnimation: ; 0x020B242C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ bl NNS_G2dBindAnimCtrl
+ mov r1, #0x0
+ mov r0, r7
+ strh r1, [r7, #0x2c]
+ bl NNS_G2dGetAnimCtrlCurrentElement
+ mov r4, r0
+ ldrh r1, [r4, #0x0]
+ ldr r0, [r7, #0x40]
+ bl NNS_G2dGetMultiCellDataByIdx
+ ldr r1, [r7, #0x18]
+ mov r6, r0
+ ldr r1, [r1, #0x4]
+ add r0, r7, #0x44
+ and r5, r1, #0xff
+ mov r1, #0x1
+ bl NNSi_G2dSrtcInitControl
+ cmp r5, #0x0
+ beq _020B24C8
+ cmp r5, #0x2
+ bne _020B249C
+ ldrsh r1, [r4, #0x4]
+ ldrsh r2, [r4, #0x6]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetTrans
+ b _020B24C8
+_020B249C:
+ ldr r1, [r4, #0x4]
+ ldr r2, [r4, #0x8]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetSRTScale
+ ldrh r1, [r4, #0x2]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetSRTRotZ
+ ldrsh r1, [r4, #0xc]
+ ldrsh r2, [r4, #0xe]
+ add r0, r7, #0x44
+ bl NNSi_G2dSrtcSetTrans
+_020B24C8:
+ ldrh r2, [r7, #0x2c]
+ mov r1, r6
+ add r0, r7, #0x30
+ bl SetMCDataToMCInstanceImpl_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G2dSetAnimSequenceToMCAnimation
+
+ arm_func_start SetMCDataToMCInstanceImpl_
+SetMCDataToMCInstanceImpl_: ; 0x020B24E0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x14
+ mov r10, r1
+ str r0, [sp, #0x0]
+ str r10, [r0, #0x0]
+ ldr r0, [r0, #0x8]
+ mov r9, r2
+ cmp r0, #0x1
+ bne _020B2654
+ ldrh r1, [r10, #0x2]
+ ldr r0, [sp, #0x0]
+ mov r4, #0x0
+ ldr r8, [r0, #0xc]
+ cmp r1, #0x0
+ bls _020B2544
+ mov r3, r4
+ mov r0, #0x58
+_020B2524:
+ mla r1, r4, r0, r8
+ str r3, [r1, #0x54]
+ add r1, r4, #0x1
+ mov r1, r1, lsl #0x10
+ ldrh r2, [r10, #0x2]
+ mov r4, r1, lsr #0x10
+ cmp r4, r2
+ blo _020B2524
+_020B2544:
+ ldrh r0, [r10, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x14
+ ldmlsia sp!, {r4-r11,pc}
+ str r5, [sp, #0x4]
+ mov r11, #0x1
+_020B2560:
+ ldr r0, [r10, #0x4]
+ mov r1, #0x58
+ add r7, r0, r5, lsl #0x3
+ ldrh r0, [r7, #0x6]
+ and r0, r0, #0xff00
+ mov r0, r0, lsl #0x8
+ mov r0, r0, lsr #0x10
+ mla r6, r0, r1, r8
+ ldr r0, [r6, #0x54]
+ cmp r0, #0x0
+ bne _020B2634
+ ldr r0, [sp, #0x0]
+ ldrh r1, [r7, #0x0]
+ ldr r0, [r0, #0x4]
+ bl NNS_G2dGetAnimSequenceByIdx
+ mov r4, r0
+ mov r0, r6
+ mov r1, r4
+ bl NNS_G2dSetCellAnimationSequence
+ str r11, [r6, #0x8]
+ ldrh r0, [r7, #0x6]
+ and r0, r0, #0xf
+ cmp r0, #0x1
+ bne _020B2630
+ ldrh r1, [r4, #0x0]
+ ldr r7, [sp, #0x4]
+ mov r3, r7
+ cmp r1, #0x0
+ bls _020B25F0
+ ldr r2, [r4, #0xc]
+_020B25D8:
+ add r0, r2, r3, lsl #0x3
+ ldrh r0, [r0, #0x4]
+ add r3, r3, #0x1
+ cmp r3, r1
+ add r7, r7, r0
+ blo _020B25D8
+_020B25F0:
+ mov r0, r6
+ bl NNSi_G2dIsAnimCtrlLoopAnim
+ cmp r0, #0x0
+ beq _020B261C
+ mov r0, r9
+ mov r1, r7
+ bl _u32_div_f
+ mov r0, r6
+ mov r1, r1, lsl #0xc
+ bl NNS_G2dTickCellAnimation
+ b _020B2630
+_020B261C:
+ cmp r9, r7
+ movcc r7, r9
+ mov r0, r6
+ mov r1, r7, lsl #0xc
+ bl NNS_G2dTickCellAnimation
+_020B2630:
+ str r11, [r6, #0x54]
+_020B2634:
+ add r0, r5, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r10, #0x0]
+ mov r5, r0, lsr #0x10
+ cmp r5, r1
+ blo _020B2560
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r11,pc}
+_020B2654:
+ ldrh r1, [r10, #0x0]
+ ldr r0, [sp, #0x0]
+ mov r4, #0x0
+ cmp r1, #0x0
+ ldr r11, [r0, #0xc]
+ addls sp, sp, #0x14
+ ldmlsia sp!, {r4-r11,pc}
+ mov r0, #0x1
+ str r4, [sp, #0xc]
+ str r0, [sp, #0x8]
+_020B267C:
+ mov r0, #0x28
+ mul r2, r4, r0
+ ldr r3, [r10, #0x4]
+ mov r0, r4, lsl #0x3
+ ldrh r1, [r3, r0]
+ ldr r0, [sp, #0x0]
+ ldr r6, [r11, r2]
+ ldr r0, [r0, #0x4]
+ add r7, r3, r4, lsl #0x3
+ bl NNS_G2dGetAnimSequenceByIdx
+ mov r5, r0
+ mov r0, r6
+ mov r1, r5
+ bl NNS_G2dSetCellAnimationSequence
+ ldr r0, [sp, #0x8]
+ str r0, [r6, #0x8]
+ ldrh r0, [r7, #0x6]
+ and r0, r0, #0xf
+ cmp r0, #0x1
+ bne _020B2740
+ ldrh r1, [r5, #0x0]
+ ldr r8, [sp, #0xc]
+ mov r0, r8
+ cmp r1, #0x0
+ bls _020B2700
+ ldr r3, [r5, #0xc]
+_020B26E4:
+ add r1, r3, r0, lsl #0x3
+ ldrh r2, [r1, #0x4]
+ add r0, r0, #0x1
+ ldrh r1, [r5, #0x0]
+ add r8, r8, r2
+ cmp r0, r1
+ blo _020B26E4
+_020B2700:
+ mov r0, r6
+ bl NNSi_G2dIsAnimCtrlLoopAnim
+ cmp r0, #0x0
+ beq _020B272C
+ mov r0, r9
+ mov r1, r8
+ bl _u32_div_f
+ mov r0, r6
+ mov r1, r1, lsl #0xc
+ bl NNS_G2dTickCellAnimation
+ b _020B2740
+_020B272C:
+ cmp r9, r8
+ movcc r8, r9
+ mov r0, r6
+ mov r1, r8, lsl #0xc
+ bl NNS_G2dTickCellAnimation
+_020B2740:
+ mov r0, #0x28
+ mla r3, r4, r0, r11
+ ldr r0, [sp, #0x8]
+ str r0, [r3, #0x8]
+ ldrsh r1, [r7, #0x2]
+ ldrsh r2, [r7, #0x4]
+ add r0, r3, #0xc
+ bl NNSi_G2dSrtcSetTrans
+ add r0, r4, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r10, #0x0]
+ mov r4, r0, lsr #0x10
+ cmp r4, r1
+ blo _020B267C
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end SetMCDataToMCInstanceImpl_
diff --git a/arm9/asm/NNS_G2D_g2d_nan_load.s b/arm9/asm/NNS_G2D_g2d_nan_load.s
new file mode 100644
index 00000000..6e8b6c27
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_nan_load.s
@@ -0,0 +1,155 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dGetAnimSequenceByIdx
+NNS_G2dGetAnimSequenceByIdx: ; 0x020AFC04
+ ldrh r2, [r0, #0x0]
+ cmp r2, r1
+ ldrhi r0, [r0, #0x4]
+ addhi r0, r0, r1, lsl #0x4
+ movls r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dGetAnimSequenceByIdx
+
+ arm_func_start NNS_G2dUnpackNAN
+NNS_G2dUnpackNAN: ; 0x020AFC1C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r1, [r0, #0x4]
+ mov r6, #0x0
+ add r1, r1, r0
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, r0
+ str r1, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ add r1, r1, r0
+ str r1, [r0, #0xc]
+ ldrh r1, [r0, #0x0]
+ ldr r4, [r0, #0x4]
+ ldr lr, [r0, #0x8]
+ cmp r1, #0x0
+ ldr r12, [r0, #0xc]
+ bls _020AFCCC
+ mov r1, r6
+_020AFC68:
+ add r2, r4, r6, lsl #0x4
+ ldr r5, [r2, #0xc]
+ mov r3, r6, lsl #0x4
+ add r5, lr, r5
+ str r5, [r2, #0xc]
+ ldrh r7, [r4, r3]
+ mov r5, r1
+ cmp r7, #0x0
+ bls _020AFCB4
+_020AFC8C:
+ ldr r9, [r2, #0xc]
+ add r7, r5, #0x1
+ ldr r8, [r9, r5, lsl #0x3]
+ mov r7, r7, lsl #0x10
+ add r8, r12, r8
+ str r8, [r9, r5, lsl #0x3]
+ ldrh r8, [r4, r3]
+ mov r5, r7, lsr #0x10
+ cmp r5, r8
+ blo _020AFC8C
+_020AFCB4:
+ add r2, r6, #0x1
+ mov r2, r2, lsl #0x10
+ ldrh r3, [r0, #0x0]
+ mov r6, r2, lsr #0x10
+ cmp r6, r3
+ blo _020AFC68
+_020AFCCC:
+ ldr r1, [r0, #0x14]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,pc}
+ add r1, r1, r0
+ str r1, [r0, #0x14]
+ ldr r1, [r0, #0x14]
+ mov r12, #0x0
+ add r2, r1, #0x8
+ ldr r0, [r2, #0x4]
+ add r0, r0, r2
+ str r0, [r2, #0x4]
+ ldrh r0, [r1, #0x8]
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r9,pc}
+ mov r0, r12
+ mov r6, r12
+_020AFD14:
+ ldr r5, [r2, #0x4]
+ mov r3, r6
+ add r1, r5, r0
+ ldr r4, [r1, #0x4]
+ add r4, r4, r2
+ str r4, [r1, #0x4]
+ ldr r4, [r1, #0x8]
+ add r4, r4, r2
+ str r4, [r1, #0x8]
+ ldrh r4, [r5, r0]
+ cmp r4, #0x0
+ bls _020AFD6C
+ mov r7, r6
+_020AFD48:
+ ldr r5, [r1, #0x8]
+ add r3, r3, #0x1
+ ldr r4, [r5, r7]
+ add r4, r4, r2
+ str r4, [r5, r7]
+ ldrh r4, [r1, #0x0]
+ add r7, r7, #0x4
+ cmp r3, r4
+ blo _020AFD48
+_020AFD6C:
+ ldrh r1, [r2, #0x0]
+ add r12, r12, #0x1
+ add r0, r0, #0xc
+ cmp r12, r1
+ blo _020AFD14
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end NNS_G2dUnpackNAN
+
+ arm_func_start NNS_G2dGetUnpackedMCAnimBank
+NNS_G2dGetUnpackedMCAnimBank: ; 0x020AFD88
+ ldr ip, _020AFD90 ; =GetUnpackedAnimBankImpl_
+ bx r12
+ .balign 4
+_020AFD90: .word GetUnpackedAnimBankImpl_
+ arm_func_end NNS_G2dGetUnpackedMCAnimBank
+
+ arm_func_start NNS_G2dGetUnpackedAnimBank
+NNS_G2dGetUnpackedAnimBank: ; 0x020AFD94
+ ldr ip, _020AFD9C ; =GetUnpackedAnimBankImpl_
+ bx r12
+ .balign 4
+_020AFD9C: .word GetUnpackedAnimBankImpl_
+ arm_func_end NNS_G2dGetUnpackedAnimBank
+
+ arm_func_start GetUnpackedAnimBankImpl_
+GetUnpackedAnimBankImpl_: ; 0x020AFDA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020AFDE4 ; =0x41424E4B
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNS_G2dUnpackNAN
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AFDE4: .word 0x41424E4B
+ arm_func_end GetUnpackedAnimBankImpl_
diff --git a/arm9/asm/NNS_G2D_g2d_ncg_load.s b/arm9/asm/NNS_G2D_g2d_ncg_load.s
new file mode 100644
index 00000000..95535da5
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_ncg_load.s
@@ -0,0 +1,66 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dUnpackBGNCG
+NNS_G2dUnpackBGNCG: ; 0x020B0020
+ ldr r1, [r0, #0x14]
+ add r1, r1, r0
+ str r1, [r0, #0x14]
+ bx lr
+ arm_func_end NNS_G2dUnpackBGNCG
+
+ arm_func_start NNS_G2dGetUnpackedBGCharacterData
+NNS_G2dGetUnpackedBGCharacterData: ; 0x020B0030
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020B0074 ; =0x43484152
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNS_G2dUnpackBGNCG
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B0074: .word 0x43484152
+ arm_func_end NNS_G2dGetUnpackedBGCharacterData
+
+ arm_func_start NNS_G2dUnpackNCG
+NNS_G2dUnpackNCG: ; 0x020B0078
+ ldr r1, [r0, #0x14]
+ add r1, r1, r0
+ str r1, [r0, #0x14]
+ bx lr
+ arm_func_end NNS_G2dUnpackNCG
+
+ arm_func_start NNS_G2dGetUnpackedCharacterData
+NNS_G2dGetUnpackedCharacterData: ; 0x020B0088
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020B00CC ; =0x43484152
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNS_G2dUnpackNCG
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B00CC: .word 0x43484152
+ arm_func_end NNS_G2dGetUnpackedCharacterData
diff --git a/arm9/asm/NNS_G2D_g2d_ncl_load.s b/arm9/asm/NNS_G2D_g2d_ncl_load.s
new file mode 100644
index 00000000..1fc246b2
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_ncl_load.s
@@ -0,0 +1,66 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dUnpackNCL
+NNS_G2dUnpackNCL: ; 0x020B00D0
+ ldr r1, [r0, #0xc]
+ add r1, r1, r0
+ str r1, [r0, #0xc]
+ bx lr
+ arm_func_end NNS_G2dUnpackNCL
+
+ arm_func_start NNSi_G2dUnpackNCLCmpInfo
+NNSi_G2dUnpackNCLCmpInfo: ; 0x020B00E0
+ ldr r1, [r0, #0x4]
+ add r1, r1, r0
+ str r1, [r0, #0x4]
+ bx lr
+ arm_func_end NNSi_G2dUnpackNCLCmpInfo
+
+ arm_func_start NNS_G2dGetUnpackedPaletteCompressInfo
+NNS_G2dGetUnpackedPaletteCompressInfo: ; 0x020B00F0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020B0134 ; =0x50434D50
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNSi_G2dUnpackNCLCmpInfo
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B0134: .word 0x50434D50
+ arm_func_end NNS_G2dGetUnpackedPaletteCompressInfo
+
+ arm_func_start NNS_G2dGetUnpackedPaletteData
+NNS_G2dGetUnpackedPaletteData: ; 0x020B0138
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020B017C ; =0x504C5454
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNS_G2dUnpackNCL
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B017C: .word 0x504C5454
+ arm_func_end NNS_G2dGetUnpackedPaletteData
diff --git a/arm9/asm/NNS_G2D_g2d_nft_load.s b/arm9/asm/NNS_G2D_g2d_nft_load.s
new file mode 100644
index 00000000..3f9c0e77
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_nft_load.s
@@ -0,0 +1,180 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dUnpackNFT
+NNSi_G2dUnpackNFT: ; 0x020B7468
+ stmdb sp!, {r4-r6,lr}
+ ldrh r2, [r0, #0xc]
+ ldrh r3, [r0, #0xe]
+ mov r1, #0x0
+ add r2, r0, r2
+ cmp r3, #0x0
+ ldmleia sp!, {r4-r6,pc}
+ ldr r3, _020B7548 ; =0x46494E46
+ ldr ip, _020B754C ; =0x43574448
+ ldr r4, _020B7550 ; =0x434D4150
+ ldr lr, _020B7554 ; =0x43474C50
+_020B7494:
+ ldr r5, [r2, #0x0]
+ cmp r5, r4
+ bhi _020B74B0
+ cmp r5, r4
+ bhs _020B7518
+ cmp r5, lr
+ b _020B752C
+_020B74B0:
+ cmp r5, r12
+ bhi _020B74C4
+ cmp r5, r12
+ beq _020B7500
+ b _020B752C
+_020B74C4:
+ cmp r5, r3
+ bne _020B752C
+ add r6, r2, #0x8
+ ldr r5, [r6, #0x8]
+ add r5, r5, r0
+ str r5, [r6, #0x8]
+ ldr r5, [r6, #0xc]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0xc]
+ ldr r5, [r6, #0x10]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0x10]
+ b _020B752C
+_020B7500:
+ add r6, r2, #0x8
+ ldr r5, [r6, #0x4]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0x4]
+ b _020B752C
+_020B7518:
+ add r6, r2, #0x8
+ ldr r5, [r6, #0x8]
+ cmp r5, #0x0
+ addne r5, r5, r0
+ strne r5, [r6, #0x8]
+_020B752C:
+ ldrh r5, [r0, #0xe]
+ ldr r6, [r2, #0x4]
+ add r1, r1, #0x1
+ cmp r1, r5
+ add r2, r2, r6
+ blt _020B7494
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B7548: .word 0x46494E46
+_020B754C: .word 0x43574448
+_020B7550: .word 0x434D4150
+_020B7554: .word 0x43474C50
+ arm_func_end NNSi_G2dUnpackNFT
+
+ arm_func_start NNSi_G2dGetUnpackedFont
+NNSi_G2dGetUnpackedFont: ; 0x020B7558
+ stmdb sp!, {r4-r6,lr}
+ movs r6, r0
+ mov r5, r1
+ beq _020B75C8
+ cmp r6, #0x0
+ beq _020B7584
+ ldr r1, [r6, #0x0]
+ ldr r0, _020B76A8 ; =0x4E465452
+ cmp r1, r0
+ moveq r0, #0x1
+ beq _020B7588
+_020B7584:
+ mov r0, #0x0
+_020B7588:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B75CC
+ cmp r6, #0x0
+ beq _020B75B4
+ ldrh r0, [r6, #0x6]
+ cmp r0, #0x100
+ movcs r0, #0x1
+ bhs _020B75B8
+_020B75B4:
+ mov r0, #0x0
+_020B75B8:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ b _020B75CC
+_020B75C8:
+ mov r0, #0x0
+_020B75CC:
+ cmp r0, #0x0
+ movne r4, #0x0
+ bne _020B7654
+ cmp r6, #0x0
+ beq _020B7640
+ cmp r6, #0x0
+ beq _020B75FC
+ ldr r1, [r6, #0x0]
+ ldr r0, _020B76A8 ; =0x4E465452
+ cmp r1, r0
+ moveq r0, #0x1
+ beq _020B7600
+_020B75FC:
+ mov r0, #0x0
+_020B7600:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B7644
+ cmp r6, #0x0
+ beq _020B762C
+ ldrh r0, [r6, #0x6]
+ cmp r0, #0x1
+ movcs r0, #0x1
+ bhs _020B7630
+_020B762C:
+ mov r0, #0x0
+_020B7630:
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ b _020B7644
+_020B7640:
+ mov r0, #0x0
+_020B7644:
+ cmp r0, #0x0
+ movne r4, #0x1
+ bne _020B7654
+ bl OS_Terminate
+_020B7654:
+ mov r0, r6
+ bl NNSi_G2dUnpackNFT
+ ldr r1, _020B76AC ; =0x46494E46
+ mov r0, r6
+ bl NNS_G2dFindBinaryBlock
+ cmp r0, #0x0
+ moveq r0, #0x0
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r6,pc}
+ add r0, r0, #0x8
+ str r0, [r5, #0x0]
+ cmp r4, #0x0
+ beq _020B76A0
+ ldr r2, [r5, #0x0]
+ mov r1, #0x0
+ ldrsb r0, [r2, #0x6]
+ strb r0, [r2, #0x7]
+ ldr r0, [r5, #0x0]
+ strb r1, [r0, #0x6]
+_020B76A0:
+ add r0, r4, #0x1
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B76A8: .word 0x4E465452
+_020B76AC: .word 0x46494E46
+ arm_func_end NNSi_G2dGetUnpackedFont
diff --git a/arm9/asm/NNS_G2D_g2d_nmc_load.s b/arm9/asm/NNS_G2D_g2d_nmc_load.s
new file mode 100644
index 00000000..abe55e8e
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_nmc_load.s
@@ -0,0 +1,83 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dGetMultiCellDataByIdx
+NNS_G2dGetMultiCellDataByIdx: ; 0x020AFF34
+ ldrh r2, [r0, #0x0]
+ cmp r1, r2
+ ldrcc r0, [r0, #0x4]
+ addcc r0, r0, r1, lsl #0x3
+ movcs r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dGetMultiCellDataByIdx
+
+ arm_func_start NNS_G2dUnpackNMC
+NNS_G2dUnpackNMC: ; 0x020AFF4C
+ stmdb sp!, {r4,lr}
+ ldr r1, [r0, #0x4]
+ mov r4, #0x0
+ add r1, r1, r0
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, r0
+ str r1, [r0, #0x8]
+ ldrh r1, [r0, #0x0]
+ ldr lr, [r0, #0x4]
+ cmp r1, #0x0
+ bls _020AFFA8
+_020AFF7C:
+ add r3, lr, r4, lsl #0x3
+ ldr r12, [r0, #0x8]
+ ldr r2, [r3, #0x4]
+ add r1, r4, #0x1
+ add r2, r12, r2
+ str r2, [r3, #0x4]
+ mov r1, r1, lsl #0x10
+ ldrh r2, [r0, #0x0]
+ mov r4, r1, lsr #0x10
+ cmp r4, r2
+ blo _020AFF7C
+_020AFFA8:
+ ldr r1, [r0, #0x10]
+ cmp r1, #0x0
+ ldmeqia sp!, {r4,pc}
+ add r1, r1, r0
+ str r1, [r0, #0x10]
+ ldr r0, [r0, #0x10]
+ bl UnpackExtendedData_
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dUnpackNMC
+
+ arm_func_start UnpackExtendedData_
+UnpackExtendedData_: ; 0x020AFFC8
+ ldr ip, _020AFFD4 ; =NNSi_G2dUnpackUserExCellAttrBank
+ add r0, r0, #0x8
+ bx r12
+ .balign 4
+_020AFFD4: .word NNSi_G2dUnpackUserExCellAttrBank
+ arm_func_end UnpackExtendedData_
+
+ arm_func_start NNS_G2dGetUnpackedMultiCellBank
+NNS_G2dGetUnpackedMultiCellBank: ; 0x020AFFD8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020B001C ; =0x4D43424B
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNS_G2dUnpackNMC
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B001C: .word 0x4D43424B
+ arm_func_end NNS_G2dGetUnpackedMultiCellBank
diff --git a/arm9/asm/NNS_G2D_g2d_nob_load.s b/arm9/asm/NNS_G2D_g2d_nob_load.s
new file mode 100644
index 00000000..319a6a4a
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_nob_load.s
@@ -0,0 +1,112 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dUnpackNCE
+NNS_G2dUnpackNCE: ; 0x020AFDE8
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ ldr r1, [r5, #0x4]
+ add r1, r1, r5
+ str r1, [r5, #0x4]
+ bl GetPtrOamArrayHead_
+ ldrh r1, [r5, #0x0]
+ mov r4, r0
+ mov r6, #0x0
+ cmp r1, #0x0
+ bls _020AFE44
+_020AFE14:
+ mov r0, r5
+ mov r1, r6
+ bl NNS_G2dGetCellDataByIdx
+ ldr r2, [r0, #0x4]
+ add r1, r6, #0x1
+ add r2, r2, r4
+ str r2, [r0, #0x4]
+ mov r0, r1, lsl #0x10
+ ldrh r1, [r5, #0x0]
+ mov r6, r0, lsr #0x10
+ cmp r6, r1
+ blo _020AFE14
+_020AFE44:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0x0
+ beq _020AFE6C
+ add r0, r0, r5
+ str r0, [r5, #0xc]
+ ldr r1, [r5, #0xc]
+ ldr r0, [r1, #0x4]
+ add r0, r0, r1
+ str r0, [r1, #0x4]
+ str r1, [r5, #0xc]
+_020AFE6C:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ add r0, r0, r5
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x14]
+ bl UnPackExtendedData_
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G2dUnpackNCE
+
+ arm_func_start NNS_G2dGetCellDataByIdx
+NNS_G2dGetCellDataByIdx: ; 0x020AFE8C
+ ldrh r2, [r0, #0x0]
+ cmp r1, r2
+ movcs r0, #0x0
+ bxcs lr
+ ldrh r2, [r0, #0x2]
+ ands r2, r2, #0x1
+ ldrne r0, [r0, #0x4]
+ addne r0, r0, r1, lsl #0x4
+ ldreq r0, [r0, #0x4]
+ addeq r0, r0, r1, lsl #0x3
+ bx lr
+ arm_func_end NNS_G2dGetCellDataByIdx
+
+ arm_func_start NNS_G2dGetUnpackedCellBank
+NNS_G2dGetUnpackedCellBank: ; 0x020AFEB8
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldr r1, _020AFEFC ; =0x4345424B
+ bl NNS_G2dFindBinaryBlock
+ movs r4, r0
+ moveq r0, #0x0
+ addeq sp, sp, #0x4
+ streq r0, [r5, #0x0]
+ ldmeqia sp!, {r4-r5,pc}
+ add r0, r4, #0x8
+ bl NNS_G2dUnpackNCE
+ add r0, r4, #0x8
+ str r0, [r5, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AFEFC: .word 0x4345424B
+ arm_func_end NNS_G2dGetUnpackedCellBank
+
+ arm_func_start UnPackExtendedData_
+UnPackExtendedData_: ; 0x020AFF00
+ ldr ip, _020AFF0C ; =NNSi_G2dUnpackUserExCellAttrBank
+ add r0, r0, #0x8
+ bx r12
+ .balign 4
+_020AFF0C: .word NNSi_G2dUnpackUserExCellAttrBank
+ arm_func_end UnPackExtendedData_
+
+ arm_func_start GetPtrOamArrayHead_
+GetPtrOamArrayHead_: ; 0x020AFF10
+ ldrh r1, [r0, #0x2]
+ ands r1, r1, #0x1
+ ldrneh r1, [r0, #0x0]
+ ldrne r0, [r0, #0x4]
+ addne r0, r0, r1, lsl #0x4
+ ldreqh r1, [r0, #0x0]
+ ldreq r0, [r0, #0x4]
+ addeq r0, r0, r1, lsl #0x3
+ bx lr
+ arm_func_end GetPtrOamArrayHead_
diff --git a/arm9/asm/NNS_G2D_g2d_node.s b/arm9/asm/NNS_G2D_g2d_node.s
new file mode 100644
index 00000000..eb4e2497
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_node.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dInitializeNode
+NNSi_G2dInitializeNode: ; 0x020B1AD4
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+ mov r1, #0x1
+ str r1, [r0, #0x8]
+ ldr ip, _020B1AF4 ; =NNSi_G2dSrtcInitControl
+ add r0, r0, #0xc
+ bx r12
+ .balign 4
+_020B1AF4: .word NNSi_G2dSrtcInitControl
+ arm_func_end NNSi_G2dInitializeNode
diff --git a/arm9/asm/NNS_G2D_g2d_nsc_load.s b/arm9/asm/NNS_G2D_g2d_nsc_load.s
new file mode 100644
index 00000000..4f2bb65c
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_nsc_load.s
@@ -0,0 +1,21 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dGetUnpackedScreenData
+NNS_G2dGetUnpackedScreenData: ; 0x020B0180
+ stmdb sp!, {r4,lr}
+ mov r4, r1
+ ldr r1, _020B01AC ; =0x5343524E
+ bl NNS_G2dFindBinaryBlock
+ cmp r0, #0x0
+ addne r0, r0, #0x8
+ strne r0, [r4, #0x0]
+ movne r0, #0x1
+ moveq r0, #0x0
+ streq r0, [r4, #0x0]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B01AC: .word 0x5343524E
+ arm_func_end NNS_G2dGetUnpackedScreenData
diff --git a/arm9/asm/NNS_G2D_g2d_oam.s b/arm9/asm/NNS_G2D_g2d_oam.s
new file mode 100644
index 00000000..cec3db64
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_oam.s
@@ -0,0 +1,667 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global NNSi_objSizeHTbl
+NNSi_objSizeHTbl: ; 0x020FF894
+ .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00
+ .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00
+
+ .global NNSi_objSizeWTbl
+NNSi_objSizeWTbl: ; 0x020FF8AC
+ .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00
+ .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00
+ ; static const in function
+
+ .section .data
+
+ .global funcTbl$8497
+funcTbl$8497: ; 0x0210655C
+ .word CpuLoadOAMMain_
+ .word CpuLoadOAMSub_
+ .word 0
+ .word 0
+ .word 0
+
+ .section .bss
+
+ .global numRegisterdInstance_
+numRegisterdInstance_: ; 0x021CCD9C
+ .space 0x4
+
+ .global oamCache_
+oamCache_: ; 0x021CCDA0
+ .space 0xFC0
+
+ .section .text
+
+ arm_func_start NNS_G2dGetOamManagerOamCapacity
+NNS_G2dGetOamManagerOamCapacity: ; 0x020B0830
+ ldrh r3, [r0, #0x6]
+ ldrh r2, [r0, #0x8]
+ mov r12, #0x0
+ add r1, r3, #0x1
+ cmp r2, r1
+ bgt _020B0854
+ ldrh r0, [r0, #0x4]
+ cmp r0, r3
+ movls r12, #0x1
+_020B0854:
+ cmp r12, #0x0
+ subne r0, r3, r2
+ addne r0, r0, #0x1
+ movne r0, r0, lsl #0x10
+ movne r0, r0, lsr #0x10
+ moveq r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dGetOamManagerOamCapacity
+
+ arm_func_start NNS_G2dApplyAndResetOamManagerBuffer
+NNS_G2dApplyAndResetOamManagerBuffer: ; 0x020B0870
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl NNS_G2dApplyOamManagerToHW
+ mov r0, r4
+ bl NNS_G2dResetOamManagerBuffer
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dApplyAndResetOamManagerBuffer
+
+ arm_func_start NNS_G2dResetOamManagerBuffer
+NNS_G2dResetOamManagerBuffer: ; 0x020B0888
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x0
+ beq _020B0944
+ ldrh r2, [r5, #0x6]
+ ldrh r1, [r5, #0x8]
+ mov r3, #0x0
+ add r0, r2, #0x1
+ cmp r1, r0
+ bgt _020B08C0
+ ldrh r0, [r5, #0x4]
+ cmp r0, r2
+ movls r3, #0x1
+_020B08C0:
+ cmp r3, #0x0
+ moveq r4, #0x0
+ beq _020B08E0
+ ldrh r0, [r5, #0x4]
+ sub r0, r2, r0
+ add r0, r0, #0x1
+ mov r0, r0, lsl #0x10
+ mov r4, r0, lsr #0xd
+_020B08E0:
+ ldr r2, [r5, #0x0]
+ ldr r1, _020B09AC ; =oamCache_
+ mov r0, #0x540
+ mla r1, r2, r0, r1
+ ldrh r0, [r5, #0x4]
+ add r2, r1, #0x100
+ mov r1, r4
+ add r6, r2, r0, lsl #0x3
+ mov r0, r6
+ bl DC_InvalidateRange
+ ldr r0, _020B09B0 ; =GXi_DmaId
+ mvn r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, r1
+ beq _020B0930
+ mov r1, r6
+ mov r3, r4
+ mov r2, #0xc0
+ bl MI_DmaFill32
+ b _020B0998
+_020B0930:
+ mov r1, r6
+ mov r2, r4
+ mov r0, #0xc0
+ bl MIi_CpuClear32
+ b _020B0998
+_020B0944:
+ ldr r2, [r5, #0x0]
+ ldr r1, _020B09AC ; =oamCache_
+ mov r0, #0x540
+ mla r1, r2, r0, r1
+ ldrh r2, [r5, #0x4]
+ ldrh r0, [r5, #0x6]
+ add r1, r1, #0x100
+ add r3, r1, r2, lsl #0x3
+ sub r0, r0, r2
+ add r0, r0, #0x1
+ mov r0, r0, lsl #0x10
+ movs r2, r0, lsr #0x10
+ mov r0, #0x0
+ beq _020B0998
+ mov r1, #0xc0
+_020B0980:
+ add r0, r0, #0x1
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ cmp r0, r2
+ strh r1, [r3], #0x8
+ blo _020B0980
+_020B0998:
+ ldrh r0, [r5, #0x4]
+ strh r0, [r5, #0x8]
+ ldrh r0, [r5, #0xa]
+ strh r0, [r5, #0xe]
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B09AC: .word oamCache_
+_020B09B0: .word GXi_DmaId
+ arm_func_end NNS_G2dResetOamManagerBuffer
+
+ arm_func_start NNS_G2dApplyOamManagerToHW
+NNS_G2dApplyOamManagerToHW: ; 0x020B09B4
+ stmdb sp!, {r4-r10,lr}
+ mov r7, r0
+ ldr r0, [r7, #0x14]
+ cmp r0, #0x0
+ beq _020B0A48
+ ldr r5, [r7, #0x0]
+ ldr r1, _020B0BA8 ; =oamCache_
+ mov r0, #0x540
+ mla r1, r5, r0, r1
+ ldrh r2, [r7, #0x4]
+ ldrh r0, [r7, #0x6]
+ add r1, r1, #0x100
+ add r4, r1, r2, lsl #0x3
+ sub r0, r0, r2
+ add r0, r0, #0x1
+ mov r0, r0, lsl #0x13
+ mov r6, r0, lsr #0x10
+ mov r2, r2, lsl #0x13
+ mov r0, r4
+ mov r1, r6
+ mov r7, r2, lsr #0x10
+ bl DC_FlushRange
+ cmp r5, #0x0
+ beq _020B0A20
+ cmp r5, #0x1
+ beq _020B0A34
+ ldmia sp!, {r4-r10,pc}
+_020B0A20:
+ mov r0, r4
+ mov r1, r7
+ mov r2, r6
+ bl GX_LoadOAM
+ ldmia sp!, {r4-r10,pc}
+_020B0A34:
+ mov r0, r4
+ mov r1, r7
+ mov r2, r6
+ bl GXS_LoadOAM
+ ldmia sp!, {r4-r10,pc}
+_020B0A48:
+ ldr r0, [r7, #0x0]
+ ldr r2, _020B0BA8 ; =oamCache_
+ mov r1, #0x540
+ mla r2, r0, r1, r2
+ ldrh r5, [r7, #0x4]
+ ldrh r1, [r7, #0x6]
+ ldr r3, _020B0BAC ; =funcTbl$8497
+ add r4, r2, #0x100
+ sub r1, r1, r5
+ add r1, r1, #0x1
+ mov r1, r1, lsl #0x10
+ mov r2, r5, lsl #0x13
+ add r6, r4, r5, lsl #0x3
+ movs r5, r1, lsr #0x10
+ mov r4, r2, lsr #0x10
+ ldr r9, [r3, r0, lsl #0x2]
+ mov r10, #0x0
+ beq _020B0AC8
+ mov r8, #0x6
+_020B0A94:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r8
+ blx r9
+ add r0, r10, #0x1
+ add r2, r4, #0x8
+ mov r1, r0, lsl #0x10
+ mov r0, r2, lsl #0x10
+ mov r10, r1, lsr #0x10
+ cmp r10, r5
+ mov r4, r0, lsr #0x10
+ add r6, r6, #0x8
+ blo _020B0A94
+_020B0AC8:
+ ldrh r2, [r7, #0xc]
+ ldrh r1, [r7, #0xe]
+ mov r3, #0x0
+ add r0, r2, #0x1
+ cmp r1, r0
+ bgt _020B0AEC
+ ldrh r0, [r7, #0xa]
+ cmp r0, r2
+ movls r3, #0x1
+_020B0AEC:
+ cmp r3, #0x0
+ ldmeqia sp!, {r4-r10,pc}
+ ldr r0, [r7, #0x0]
+ ldr r2, _020B0BA8 ; =oamCache_
+ mov r1, #0x540
+ mla r2, r0, r1, r2
+ ldrh r5, [r7, #0xa]
+ add r4, r2, #0x100
+ ldrh r1, [r7, #0xc]
+ mov r2, r5, lsl #0x15
+ ldr r3, _020B0BAC ; =funcTbl$8497
+ sub r1, r1, r5
+ add r1, r1, #0x1
+ mov r1, r1, lsl #0x10
+ add r9, r4, r5, lsl #0x5
+ ldr r5, [r3, r0, lsl #0x2]
+ movs r8, r1, lsr #0x10
+ mov r7, r2, lsr #0x10
+ mov r6, #0x0
+ ldmeqia sp!, {r4-r10,pc}
+ mov r4, #0x2
+_020B0B40:
+ mov r2, r4
+ add r0, r9, #0x6
+ add r1, r7, #0x6
+ blx r5
+ mov r2, r4
+ add r0, r9, #0xe
+ add r1, r7, #0xe
+ blx r5
+ mov r2, r4
+ add r0, r9, #0x16
+ add r1, r7, #0x16
+ blx r5
+ add r0, r9, #0x1e
+ add r1, r7, #0x1e
+ mov r2, r4
+ blx r5
+ add r0, r7, #0x20
+ mov r0, r0, lsl #0x10
+ mov r7, r0, lsr #0x10
+ add r9, r9, #0x20
+ add r0, r6, #0x1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ cmp r6, r8
+ blo _020B0B40
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020B0BA8: .word oamCache_
+_020B0BAC: .word funcTbl$8497
+ arm_func_end NNS_G2dApplyOamManagerToHW
+
+ arm_func_start NNS_G2dEntryOamManagerAffine
+NNS_G2dEntryOamManagerAffine: ; 0x020B0BB0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldrh r12, [r0, #0xc]
+ ldrh r3, [r0, #0xe]
+ mov lr, #0x0
+ add r2, r12, #0x1
+ cmp r3, r2
+ bgt _020B0BDC
+ ldrh r2, [r0, #0xa]
+ cmp r2, r12
+ movls lr, #0x1
+_020B0BDC:
+ cmp lr, #0x0
+ subne r2, r12, r3
+ addne r2, r2, #0x1
+ movne r2, r2, lsl #0x10
+ movne r2, r2, lsr #0x10
+ moveq r2, #0x0
+ cmp r2, #0x1
+ movcs r2, #0x1
+ movcc r2, #0x0
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldreq r0, _020B0C74 ; =0x0000FFFE
+ ldmeqia sp!, {pc}
+ ldr lr, [r0, #0x0]
+ ldr r3, _020B0C78 ; =oamCache_
+ mov r2, #0x540
+ mla r12, lr, r2, r3
+ ldr r3, [r1, #0x0]
+ ldrh r2, [r0, #0xe]
+ add r12, r12, #0x100
+ mov r3, r3, asr #0x4
+ add r12, r12, r2, lsl #0x5
+ strh r3, [r12, #0x6]
+ ldr r3, [r1, #0x4]
+ mov r3, r3, asr #0x4
+ strh r3, [r12, #0xe]
+ ldr r3, [r1, #0x8]
+ mov r3, r3, asr #0x4
+ strh r3, [r12, #0x16]
+ ldr r1, [r1, #0xc]
+ mov r1, r1, asr #0x4
+ strh r1, [r12, #0x1e]
+ ldrh r1, [r0, #0xe]
+ add r1, r1, #0x1
+ strh r1, [r0, #0xe]
+ mov r0, r2
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B0C74: .word 0x0000FFFE
+_020B0C78: .word oamCache_
+ arm_func_end NNS_G2dEntryOamManagerAffine
+
+ arm_func_start NNS_G2dEntryOamManagerOamWithAffineIdx
+NNS_G2dEntryOamManagerOamWithAffineIdx: ; 0x020B0C7C
+ stmdb sp!, {r4,lr}
+ ldrh r12, [r0, #0x6]
+ ldrh r4, [r0, #0x8]
+ mov lr, #0x0
+ add r3, r12, #0x1
+ cmp r4, r3
+ bgt _020B0CA4
+ ldrh r3, [r0, #0x4]
+ cmp r3, r12
+ movls lr, #0x1
+_020B0CA4:
+ cmp lr, #0x0
+ subne r3, r12, r4
+ addne r3, r3, #0x1
+ movne r3, r3, lsl #0x10
+ movne r3, r3, lsr #0x10
+ moveq r3, #0x0
+ cmp r3, #0x1
+ movcs r3, #0x1
+ movcc r3, #0x0
+ cmp r3, #0x0
+ beq _020B0D48
+ ldr r4, [r0, #0x0]
+ ldr ip, _020B0D50 ; =oamCache_
+ mov r3, #0x540
+ mla r12, r4, r3, r12
+ ldrh r3, [r0, #0x8]
+ add r4, r12, #0x100
+ ldrh r12, [r1, #0x0]
+ mov lr, r3, lsl #0x3
+ add r3, r4, r3, lsl #0x3
+ strh r12, [r4, lr]
+ ldrh lr, [r1, #0x2]
+ ldr ip, _020B0D54 ; =0x0000FFFE
+ strh lr, [r3, #0x2]
+ ldrh r1, [r1, #0x4]
+ cmp r2, r12
+ strh r1, [r3, #0x4]
+ beq _020B0D34
+ ldr r1, [r3, #0x0]
+ mov r12, r1, lsl #0x16
+ mov r12, r12, lsr #0x1e
+ ands r12, r12, #0x1
+ bicne r12, r1, #0x3e000000
+ andne r1, r2, #0x1f
+ orrne r1, r12, r1, lsl #0x19
+ strne r1, [r3, #0x0]
+_020B0D34:
+ ldrh r1, [r0, #0x8]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x8]
+ mov r0, #0x1
+ ldmia sp!, {r4,pc}
+_020B0D48:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B0D50: .word oamCache_
+_020B0D54: .word 0x0000FFFE
+ arm_func_end NNS_G2dEntryOamManagerOamWithAffineIdx
+
+ arm_func_start NNS_G2dEntryOamManagerOam
+NNS_G2dEntryOamManagerOam: ; 0x020B0D58
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldrh lr, [r0, #0x6]
+ ldrh r12, [r0, #0x8]
+ mov r4, #0x0
+ add r3, lr, #0x1
+ cmp r12, r3
+ bgt _020B0D84
+ ldrh r3, [r0, #0x4]
+ cmp r3, lr
+ movls r4, #0x1
+_020B0D84:
+ cmp r4, #0x0
+ subne r3, lr, r12
+ addne r3, r3, #0x1
+ movne r3, r3, lsl #0x10
+ movne r3, r3, lsr #0x10
+ moveq r3, #0x0
+ cmp r3, r2
+ movcs r3, #0x1
+ movcc r3, #0x0
+ cmp r3, #0x0
+ beq _020B0E24
+ ldr lr, [r0, #0x0]
+ ldr ip, _020B0E30 ; =oamCache_
+ mov r3, #0x540
+ mla r12, lr, r3, r12
+ ldrh r3, [r0, #0x8]
+ add r12, r12, #0x100
+ cmp r2, #0x0
+ add r4, r12, r3, lsl #0x3
+ mov r5, #0x0
+ ble _020B0E18
+ add r3, r0, #0x8
+_020B0DDC:
+ ldrh lr, [r1, #0x0]
+ mov r0, r5, lsl #0x3
+ add r12, r4, r5, lsl #0x3
+ strh lr, [r4, r0]
+ ldrh r0, [r1, #0x2]
+ add r5, r5, #0x1
+ cmp r5, r2
+ strh r0, [r12, #0x2]
+ ldrh r0, [r1, #0x4]
+ add r1, r1, #0x8
+ strh r0, [r12, #0x4]
+ ldrh r0, [r3, #0x0]
+ add r0, r0, #0x1
+ strh r0, [r3, #0x0]
+ blt _020B0DDC
+_020B0E18:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r5,pc}
+_020B0E24:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B0E30: .word oamCache_
+ arm_func_end NNS_G2dEntryOamManagerOam
+
+ arm_func_start NNS_G2dGetNewOamManagerInstance
+NNS_G2dGetNewOamManagerInstance: ; 0x020B0E34
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r5, [sp, #0x1c]
+ ldr r6, _020B0FB4 ; =oamCache_
+ mov r4, #0x540
+ mla r4, r5, r4, r6
+ mov lr, r1
+ sub r1, r2, #0x1
+ add r1, lr, r1
+ mov r1, r1, lsl #0x10
+ mov r12, r1, lsr #0x10
+ add r7, r4, lr, lsl #0x1
+ add r2, r4, r12, lsl #0x1
+ mov r6, r0
+ mov r5, r3
+ cmp r7, r2
+ mov r3, lr, lsl #0x1
+ bhi _020B0E9C
+ ldr r0, _020B0FB8 ; =0x0000FFFF
+_020B0E80:
+ ldrh r1, [r7, #0x0]
+ cmp r1, r0
+ movne r0, #0x0
+ bne _020B0EA0
+ add r7, r7, #0x2
+ cmp r7, r2
+ bls _020B0E80
+_020B0E9C:
+ mov r0, #0x1
+_020B0EA0:
+ cmp r0, #0x0
+ beq _020B0EE0
+ ldr r0, _020B0FBC ; =numRegisterdInstance_
+ sub r2, r12, lr
+ ldrh r7, [r0, #0x0]
+ add r1, r4, r3
+ mov r2, r2, lsl #0x1
+ add r3, r7, #0x1
+ strh r3, [r0, #0x0]
+ strh r7, [r6, #0x10]
+ strh lr, [r6, #0x4]
+ strh r12, [r6, #0x6]
+ strh lr, [r6, #0x8]
+ ldrh r0, [r6, #0x10]
+ bl MIi_CpuClear16
+ b _020B0EEC
+_020B0EE0:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,pc}
+_020B0EEC:
+ ldrh r0, [sp, #0x18]
+ add r4, r4, #0x500
+ cmp r0, #0x0
+ bne _020B0F18
+ mov r0, #0x20
+ strh r0, [r6, #0xa]
+ mov r0, #0x0
+ strh r0, [r6, #0xc]
+ ldrh r0, [r6, #0xa]
+ strh r0, [r6, #0xe]
+ b _020B0F98
+_020B0F18:
+ sub r0, r0, #0x1
+ add r0, r5, r0
+ mov r0, r0, lsl #0x10
+ mov r12, r0, lsr #0x10
+ add r7, r4, r5, lsl #0x1
+ add r2, r4, r12, lsl #0x1
+ cmp r7, r2
+ mov r3, r5, lsl #0x1
+ bhi _020B0F5C
+ ldr r0, _020B0FB8 ; =0x0000FFFF
+_020B0F40:
+ ldrh r1, [r7, #0x0]
+ cmp r1, r0
+ movne r0, #0x0
+ bne _020B0F60
+ add r7, r7, #0x2
+ cmp r7, r2
+ bls _020B0F40
+_020B0F5C:
+ mov r0, #0x1
+_020B0F60:
+ cmp r0, #0x0
+ beq _020B0F8C
+ strh r5, [r6, #0xa]
+ strh r12, [r6, #0xc]
+ strh r5, [r6, #0xe]
+ ldrh r0, [r6, #0x10]
+ sub r2, r12, r5
+ add r1, r4, r3
+ mov r2, r2, lsl #0x1
+ bl MIi_CpuClear16
+ b _020B0F98
+_020B0F8C:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,pc}
+_020B0F98:
+ mov r1, #0x0
+ ldr r0, [sp, #0x1c]
+ str r1, [r6, #0x14]
+ str r0, [r6, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B0FB4: .word oamCache_
+_020B0FB8: .word 0x0000FFFF
+_020B0FBC: .word numRegisterdInstance_
+ arm_func_end NNS_G2dGetNewOamManagerInstance
+
+ arm_func_start NNS_G2dInitOamManagerModule
+NNS_G2dInitOamManagerModule: ; 0x020B0FC0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020B1060 ; =oamCache_ + 0x100
+ mov r0, #0xc0
+ mov r2, #0x400
+ bl MIi_CpuClear16
+ ldr r1, _020B1064 ; =oamCache_ + 0x640
+ mov r0, #0xc0
+ mov r2, #0x400
+ bl MIi_CpuClear16
+ ldr r1, _020B1068 ; =oamCache_ + 0xB80
+ mov r0, #0xc0
+ mov r2, #0x400
+ bl MIi_CpuClear16
+ ldr r0, _020B106C ; =0x0000FFFF
+ ldr r1, _020B1070 ; =oamCache_
+ mov r2, #0x100
+ bl MIi_CpuClear16
+ ldr r0, _020B106C ; =0x0000FFFF
+ ldr r1, _020B1074 ; =oamCache_ + 0x540
+ mov r2, #0x100
+ bl MIi_CpuClear16
+ ldr r0, _020B106C ; =0x0000FFFF
+ ldr r1, _020B1078 ; =oamCache_ + 0xA80
+ mov r2, #0x100
+ bl MIi_CpuClear16
+ ldr r0, _020B106C ; =0x0000FFFF
+ ldr r1, _020B107C ; =oamCache_ + 0x500
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ ldr r0, _020B106C ; =0x0000FFFF
+ ldr r1, _020B1080 ; =oamCache_ + 0xA40
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ ldr r0, _020B106C ; =0x0000FFFF
+ ldr r1, _020B1084 ; =oamCache_ + 0xF80
+ mov r2, #0x40
+ bl MIi_CpuClear16
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B1060: .word oamCache_ + 0x100
+_020B1064: .word oamCache_ + 0x640
+_020B1068: .word oamCache_ + 0xB80
+_020B106C: .word 0x0000FFFF
+_020B1070: .word oamCache_
+_020B1074: .word oamCache_ + 0x540
+_020B1078: .word oamCache_ + 0xA80
+_020B107C: .word oamCache_ + 0x500
+_020B1080: .word oamCache_ + 0xA40
+_020B1084: .word oamCache_ + 0xF80
+ arm_func_end NNS_G2dInitOamManagerModule
+
+ arm_func_start CpuLoadOAMMain_
+CpuLoadOAMMain_: ; 0x020B1088
+ ldr ip, _020B1094 ; =MIi_CpuCopy16
+ add r1, r1, #0x7000000
+ bx r12
+ .balign 4
+_020B1094: .word MIi_CpuCopy16
+ arm_func_end CpuLoadOAMMain_
+
+ arm_func_start CpuLoadOAMSub_
+CpuLoadOAMSub_: ; 0x020B1098
+ ldr r3, _020B10A8 ; =0x07000400
+ ldr ip, _020B10AC ; =MIi_CpuCopy16
+ add r1, r1, r3
+ bx r12
+ .balign 4
+_020B10A8: .word 0x07000400
+_020B10AC: .word MIi_CpuCopy16
+ arm_func_end CpuLoadOAMSub_
diff --git a/arm9/asm/NNS_G2D_g2d_oamsoftware.s b/arm9/asm/NNS_G2D_g2d_oamsoftware.s
new file mode 100644
index 00000000..c89c4787
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_oamsoftware.s
@@ -0,0 +1,421 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global pltFmtTbl$8430
+pltFmtTbl$8430: ; 0x020FF8D0
+ .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ ; static const in function
+
+ .global texSize_$8337
+texSize_$8337: ; 0x020FF8D8
+ .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
+
+ .global gxTexSizeSTbl
+gxTexSizeSTbl: ; 0x020FF8F8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global gxTexSizeTTbl
+gxTexSizeTTbl: ; 0x020FF928
+ .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+
+ .section .data
+
+ .global zOffsetStep_
+zOffsetStep_: ; 0x02106590
+ .byte 0x00, 0xF0, 0xFF, 0xFF
+
+ .section .bss
+
+ .global bAutoZOffsetAdd_
+bAutoZOffsetAdd_: ; 0x021CED08
+ .space 0x4
+
+ .global s_pUVFlipCorrectFunc
+s_pUVFlipCorrectFunc: ; 0x021CED0C
+ .space 0x4
+
+ .global zOffset_
+zOffset_: ; 0x021CED10
+ .space 0x4
+
+ .section .text
+
+ arm_func_start NNS_G2dDrawOneOam3DDirectWithPosFast
+NNS_G2dDrawOneOam3DDirectWithPosFast: ; 0x020B46B4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x1c
+ add r12, sp, #0x4
+ mov r5, r1
+ mov r4, r2
+ mov r7, r3
+ mov r6, r0
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x34]
+ ldr r3, [sp, #0x38]
+ mov r0, r7
+ str r12, [sp, #0x0]
+ bl CalcSpriteParams_
+ ldr r2, [r7, #0x0]
+ and r1, r2, #0x300
+ cmp r1, #0x100
+ beq _020B4708
+ cmp r1, #0x300
+ beq _020B4708
+ and r0, r2, #0x30000000
+ orr r1, r1, r0
+_020B4708:
+ cmp r1, #0x300
+ bne _020B478C
+ ldr r0, _020B4914 ; =0xC000C000
+ ldr r1, _020B4918 ; =bAutoZOffsetAdd_
+ and r0, r2, r0
+ and r2, r0, #0xc0000000
+ mov r12, r2, lsr #0x1e
+ and r0, r0, #0xc000
+ mov lr, r0, asr #0xe
+ ldr r3, _020B491C ; =NNSi_objSizeWTbl
+ ldr r0, [r1, #0x0]
+ ldr r2, _020B4920 ; =NNSi_objSizeHTbl
+ cmp r0, #0x0
+ ldrne r0, _020B4924 ; =zOffset_
+ mov r12, r12, lsl #0x1
+ add r1, r2, lr, lsl #0x3
+ add r3, r3, lr, lsl #0x3
+ ldrh r2, [r12, r3]
+ ldrh r1, [r12, r1]
+ ldrne r0, [r0, #0x0]
+ mov r2, r2, asr #0x1
+ addne r3, r0, r4, lsl #0xc
+ mov r1, r1, asr #0x1
+ add r0, r5, r1
+ add r2, r6, r2
+ ldr r1, _020B4928 ; =0x04000470
+ mov r2, r2, lsl #0xc
+ str r2, [r1, #0x0]
+ mov r0, r0, lsl #0xc
+ moveq r3, r4, lsl #0xc
+ str r0, [r1, #0x0]
+ str r3, [r1, #0x0]
+ b _020B47C0
+_020B478C:
+ ldr r0, _020B4918 ; =bAutoZOffsetAdd_
+ ldr r1, _020B4928 ; =0x04000470
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldrne r0, _020B4924 ; =zOffset_
+ ldrne r0, [r0, #0x0]
+ addne r2, r0, r4, lsl #0xc
+ mov r0, r6, lsl #0xc
+ str r0, [r1, #0x0]
+ mov r0, r5, lsl #0xc
+ moveq r2, r4, lsl #0xc
+ str r0, [r1, #0x0]
+ str r2, [r1, #0x0]
+_020B47C0:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, _020B492C ; =0x0400046C
+ mov r0, r0, lsl #0xc
+ str r0, [r2, #0x0]
+ mov r0, r1, lsl #0xc
+ str r0, [r2, #0x0]
+ mov r1, #0x1000
+ str r1, [r2, #0x0]
+ ldr r0, _020B4930 ; =0x04000500
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r1, [sp, #0x10]
+ mov r0, r0, lsl #0x8
+ mov r1, r1, lsl #0x8
+ mov r0, r0, asr #0x10
+ mov r1, r1, asr #0x10
+ mov r0, r0, lsl #0x10
+ mov r1, r1, lsl #0x10
+ mov r2, r0, lsr #0x10
+ mov r0, r1, lsr #0x10
+ orr r2, r2, r0, lsl #0x10
+ ldr r1, _020B4934 ; =0x04000488
+ ldr r0, _020B4938 ; =0x04000490
+ str r2, [r1, #0x0]
+ mov r2, #0x10000
+ str r2, [r0, #0x0]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ mov r2, r2, lsl #0x8
+ mov r3, r3, lsl #0x8
+ mov r2, r2, asr #0x10
+ mov r3, r3, asr #0x10
+ mov r2, r2, lsl #0x10
+ mov r3, r3, lsl #0x10
+ mov r4, r2, lsr #0x10
+ mov r2, r3, lsr #0x10
+ orr r3, r4, r2, lsl #0x10
+ ldr r2, _020B493C ; =0x00010040
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x8]
+ mov r2, r2, lsl #0x8
+ mov r3, r3, lsl #0x8
+ mov r2, r2, asr #0x10
+ mov r3, r3, asr #0x10
+ mov r2, r2, lsl #0x10
+ mov r3, r3, lsl #0x10
+ mov r4, r2, lsr #0x10
+ mov r2, r3, lsr #0x10
+ orr r2, r4, r2, lsl #0x10
+ str r2, [r1, #0x0]
+ mov r2, #0x40
+ str r2, [r0, #0x0]
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ mov r2, r2, lsl #0x8
+ mov r3, r3, lsl #0x8
+ mov r2, r2, asr #0x10
+ mov r3, r3, asr #0x10
+ mov r2, r2, lsl #0x10
+ mov r3, r3, lsl #0x10
+ mov r4, r2, lsr #0x10
+ mov r2, r3, lsr #0x10
+ orr r2, r4, r2, lsl #0x10
+ str r2, [r1, #0x0]
+ mov r2, #0x0
+ str r2, [r0, #0x0]
+ ldr r1, _020B4940 ; =0x04000504
+ ldr r0, _020B4918 ; =bAutoZOffsetAdd_
+ str r2, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x1c
+ ldmeqia sp!, {r4-r7,pc}
+ ldr r1, _020B4924 ; =zOffset_
+ ldr r0, _020B4944 ; =zOffsetStep_
+ ldr r2, [r1, #0x0]
+ ldr r0, [r0, #0x0]
+ add r0, r2, r0
+ str r0, [r1, #0x0]
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B4914: .word 0xC000C000
+_020B4918: .word bAutoZOffsetAdd_
+_020B491C: .word NNSi_objSizeWTbl
+_020B4920: .word NNSi_objSizeHTbl
+_020B4924: .word zOffset_
+_020B4928: .word 0x04000470
+_020B492C: .word 0x0400046C
+_020B4930: .word 0x04000500
+_020B4934: .word 0x04000488
+_020B4938: .word 0x04000490
+_020B493C: .word 0x00010040
+_020B4940: .word 0x04000504
+_020B4944: .word zOffsetStep_
+ arm_func_end NNS_G2dDrawOneOam3DDirectWithPosFast
+
+ arm_func_start NNSi_G2dGetOamSoftEmuAutoZOffsetStep
+NNSi_G2dGetOamSoftEmuAutoZOffsetStep: ; 0x020B4948
+ ldr r0, _020B4954 ; =zOffsetStep_
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020B4954: .word zOffsetStep_
+ arm_func_end NNSi_G2dGetOamSoftEmuAutoZOffsetStep
+
+ arm_func_start NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+NNSi_G2dSetOamSoftEmuAutoZOffsetStep: ; 0x020B4958
+ ldr r1, _020B4964 ; =zOffsetStep_
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020B4964: .word zOffsetStep_
+ arm_func_end NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+
+ arm_func_start NNSi_G2dResetOamSoftEmuAutoZOffset
+NNSi_G2dResetOamSoftEmuAutoZOffset: ; 0x020B4968
+ ldr r0, _020B4978 ; =zOffset_
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020B4978: .word zOffset_
+ arm_func_end NNSi_G2dResetOamSoftEmuAutoZOffset
+
+ arm_func_start NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+NNSi_G2dSetOamSoftEmuAutoZOffsetFlag: ; 0x020B497C
+ ldr r1, _020B4988 ; =bAutoZOffsetAdd_
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020B4988: .word bAutoZOffsetAdd_
+ arm_func_end NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+
+ arm_func_start CalcSpriteParams_
+CalcSpriteParams_: ; 0x020B498C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0xc
+ mov r6, r0
+ ldr r4, [r6, #0x0]
+ ldr r0, _020B4BCC ; =0xC000C000
+ ldr r5, [r6, #0x4]
+ and r4, r4, r0
+ and r0, r4, #0xc0000000
+ and r4, r4, #0xc000
+ mov lr, r0, lsr #0x1e
+ ldr r0, _020B4BD0 ; =NNSi_objSizeWTbl
+ mov r12, r4, asr #0xe
+ ldr r8, _020B4BD4 ; =NNSi_objSizeHTbl
+ mov r4, lr, lsl #0x1
+ add r0, r0, r12, lsl #0x3
+ ldrh r9, [r4, r0]
+ ldr r0, [sp, #0x28]
+ mov r5, r5, lsl #0x16
+ mov r5, r5, lsr #0x16
+ mov r7, r5, lsl #0x10
+ str r9, [r0, #0x10]
+ add r5, r8, r12, lsl #0x3
+ ldrh r8, [r4, r5]
+ mov r5, r1
+ mov r4, r3
+ str r8, [r0, #0x14]
+ ldr r1, [r5, #0x14]
+ mov r7, r7, lsr #0x10
+ cmp r1, #0x0
+ bne _020B4A74
+ ldr r1, [r5, #0x8]
+ mov r2, r2, lsr #0x3
+ orr r1, r2, r1, lsl #0x1a
+ ldr r2, [r5, #0x0]
+ orr r1, r1, #0x40000000
+ ldr r3, [r5, #0x4]
+ orr r1, r1, r2, lsl #0x14
+ orr r2, r1, r3, lsl #0x17
+ ldr r8, [r5, #0x10]
+ ldr r1, _020B4BD8 ; =0x040004A8
+ orr r2, r2, r8, lsl #0x1d
+ str r2, [r1, #0x0]
+ ldr r1, [r5, #0x8]
+ ldr r2, [r5, #0x0]
+ cmp r1, #0x4
+ moveq r1, r7, lsl #0xf
+ moveq r7, r1, lsr #0x10
+ ldr r1, _020B4BDC ; =texSize_$8337
+ ldr r1, [r1, r2, lsl #0x2]
+ sub r1, r1, #0x1
+ and r1, r7, r1
+ mov r1, r1, lsl #0xf
+ str r1, [r0, #0x0]
+ ldr r1, [r5, #0x0]
+ mov r1, r7, asr r1
+ mov r1, r1, lsl #0xf
+ str r1, [r0, #0x4]
+ b _020B4AE0
+_020B4A74:
+ and r1, r1, #0x700000
+ mov r1, r1, asr #0x14
+ mov r12, r12, lsl #0x10
+ add r1, r1, #0x5
+ ldr r3, [r5, #0x8]
+ mov lr, lr, lsl #0x10
+ ldr sb, _020B4BE0 ; =gxTexSizeSTbl
+ mov r12, r12, lsr #0x10
+ ldr r8, _020B4BE4 ; =gxTexSizeTTbl
+ add r1, r2, r7, lsl r1
+ mov r2, r3, lsl #0x1a
+ orr r3, r2, r1, lsr #0x3
+ mov r7, lr, lsr #0x10
+ add r2, r9, r12, lsl #0x4
+ add r1, r8, r12, lsl #0x4
+ ldr r2, [r2, r7, lsl #0x2]
+ orr r3, r3, #0x40000000
+ ldr r1, [r1, r7, lsl #0x2]
+ orr r2, r3, r2, lsl #0x14
+ ldr r3, [r5, #0x10]
+ orr r2, r2, r1, lsl #0x17
+ ldr r1, _020B4BD8 ; =0x040004A8
+ orr r2, r2, r3, lsl #0x1d
+ str r2, [r1, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ str r1, [r0, #0x4]
+_020B4AE0:
+ ldr r2, [r0, #0x0]
+ ldr r1, [r0, #0x10]
+ add r1, r2, r1, lsl #0xc
+ str r1, [r0, #0x8]
+ ldr r2, [r0, #0x4]
+ ldr r1, [r0, #0x14]
+ add r1, r2, r1, lsl #0xc
+ str r1, [r0, #0xc]
+ ldr r1, [r6, #0x0]
+ mov r2, r1, lsl #0x2
+ mov r1, r1, lsl #0x3
+ movs r3, r1, lsr #0x1f
+ mov r12, r2, lsr #0x1f
+ ldrne r2, [r0, #0x0]
+ ldrne r1, [r0, #0x8]
+ strne r1, [r0, #0x0]
+ strne r2, [r0, #0x8]
+ cmp r12, #0x0
+ ldrne r2, [r0, #0x4]
+ ldrne r1, [r0, #0xc]
+ strne r1, [r0, #0x4]
+ ldr r1, _020B4BE8 ; =s_pUVFlipCorrectFunc
+ strne r2, [r0, #0xc]
+ ldr r7, [r1, #0x0]
+ cmp r7, #0x0
+ beq _020B4B60
+ str r3, [sp, #0x0]
+ add r1, r0, #0x4
+ add r2, r0, #0x8
+ add r3, r0, #0xc
+ str r12, [sp, #0x4]
+ blx r7
+_020B4B60:
+ ldr r0, [r6, #0x4]
+ ldr r1, [r6, #0x0]
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x1c
+ mov r3, r1, lsl #0x12
+ ldr r1, [r5, #0xc]
+ mov r0, r0, lsl #0x10
+ ldr r2, _020B4BEC ; =pltFmtTbl$8430
+ mov r3, r3, lsr #0x1f
+ cmp r1, #0x0
+ mov r0, r0, lsr #0x10
+ ldr r1, [r2, r3, lsl #0x2]
+ movne r0, r0, lsl #0x9
+ bne _020B4BA4
+ cmp r1, #0x4
+ moveq r0, #0x0
+ movne r0, r0, lsl #0x5
+_020B4BA4:
+ cmp r1, #0x2
+ moveq r2, #0x1
+ movne r2, #0x0
+ add r1, r4, r0
+ rsb r0, r2, #0x4
+ mov r1, r1, lsr r0
+ ldr r0, _020B4BF0 ; =0x040004AC
+ str r1, [r0, #0x0]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020B4BCC: .word 0xC000C000
+_020B4BD0: .word NNSi_objSizeWTbl
+_020B4BD4: .word NNSi_objSizeHTbl
+_020B4BD8: .word 0x040004A8
+_020B4BDC: .word texSize_$8337
+_020B4BE0: .word gxTexSizeSTbl
+_020B4BE4: .word gxTexSizeTTbl
+_020B4BE8: .word s_pUVFlipCorrectFunc
+_020B4BEC: .word pltFmtTbl$8430
+_020B4BF0: .word 0x040004AC
+ arm_func_end CalcSpriteParams_
diff --git a/arm9/asm/NNS_G2D_g2d_palettetabl.s b/arm9/asm/NNS_G2D_g2d_palettetabl.s
new file mode 100644
index 00000000..a8d342cf
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_palettetabl.s
@@ -0,0 +1,11 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dGetPaletteTableValue
+NNS_G2dGetPaletteTableValue: ; 0x020B10B0
+ mov r1, r1, lsl #0x1
+ ldrh r0, [r0, r1]
+ bx lr
+ arm_func_end NNS_G2dGetPaletteTableValue
diff --git a/arm9/asm/NNS_G2D_g2d_renderer.s b/arm9/asm/NNS_G2D_g2d_renderer.s
new file mode 100644
index 00000000..5cd5eaac
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_renderer.s
@@ -0,0 +1,1984 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global firstSRTransformedMtxIdx_
+firstSRTransformedMtxIdx_: ; 0x02106570
+ .short -2
+ .balign 4, 0
+
+ .global currenVramTransferHandle_
+currenVramTransferHandle_: ; 0x02106574
+ .word -1
+
+ .global mtxI_
+mtxI_: ; 0x02106578
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .section .bss
+
+ .global currentMtxCachePos_
+currentMtxCachePos_: ; 0x021CDD60
+ .space 0x4
+
+ .global groupID_
+groupID_: ; 0x021CDD64
+ .space 0x4
+
+ .global bDonotUseSRTransform
+bDonotUseSRTransform: ; 0x021CDD68
+ .space 0x4
+
+ .global pCurrentInstance_
+pCurrentInstance_: ; 0x021CDD6C
+ .space 0x4
+
+ .global stackPos_
+stackPos_: ; 0x021CDD70
+ .space 0x4
+
+ .global fxZStack_
+fxZStack_: ; 0x021CDD74
+ .space 0x80
+
+ .global mtxStateStack_
+mtxStateStack_: ; 0x021CDDF4
+ .space 0x100
+
+ .global mtxStack_
+mtxStack_: ; 0x021CDEF4
+ .space 0x300
+
+ .global mtxStackFor2DHW_
+mtxStackFor2DHW_: ; 0x021CE1F4
+ .space 0x300
+
+ .global mtxCacheBuffer_
+mtxCacheBuffer_: ; 0x021CE4F4
+ .space 0x400
+
+ .global mcRenderState_
+mcRenderState_: ; 0x021CE8F4
+ .space 0x408
+
+ .section .text
+
+ arm_func_start NNS_G2dSetRendererImageProxy
+NNS_G2dSetRendererImageProxy: ; 0x020B2780
+ ldr ip, _020B2788 ; =NNS_G2dSetRndCoreImageProxy
+ bx r12
+ .balign 4
+_020B2788: .word NNS_G2dSetRndCoreImageProxy
+ arm_func_end NNS_G2dSetRendererImageProxy
+
+ arm_func_start NNS_G2dGetRendererPaletteTbl
+NNS_G2dGetRendererPaletteTbl: ; 0x020B278C
+ ldr r0, [r0, #0x78]
+ bx lr
+ arm_func_end NNS_G2dGetRendererPaletteTbl
+
+ arm_func_start NNS_G2dRotZ
+NNS_G2dRotZ: ; 0x020B2794
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ ldr r2, _020B2894 ; =stackPos_
+ mov lr, #0x0
+ ldr r12, [r2, #0x0]
+ ldr r3, _020B2898 ; =mtxStack_
+ mov r2, #0x18
+ str r1, [sp, #0x0]
+ str r1, [sp, #0xc]
+ mla r1, r12, r2, r3
+ rsb r3, r0, #0x0
+ str r0, [sp, #0x4]
+ add r0, sp, #0x0
+ mov r2, r1
+ str r3, [sp, #0x8]
+ str lr, [sp, #0x10]
+ str lr, [sp, #0x14]
+ bl NNSi_G2dMtxConcat32
+ ldr r0, _020B2894 ; =stackPos_
+ ldr r1, _020B289C ; =mtxStackFor2DHW_
+ ldr r2, [r0, #0x0]
+ mov r0, #0x18
+ mla r1, r2, r0, r1
+ add r0, sp, #0x0
+ mov r2, r1
+ bl NNSi_G2dMtxConcat32
+ ldr r0, _020B28A0 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020B2824
+ ldr r1, _020B28A4 ; =firstSRTransformedMtxIdx_
+ ldr r0, _020B28A8 ; =0x0000FFFE
+ ldrh r1, [r1, #0x0]
+ cmp r1, r0
+ movne r0, #0x1
+ bne _020B2828
+_020B2824:
+ mov r0, #0x0
+_020B2828:
+ cmp r0, #0x0
+ ldreq r1, _020B2894 ; =stackPos_
+ ldreq r0, _020B28A4 ; =firstSRTransformedMtxIdx_
+ ldreq r1, [r1, #0x0]
+ streqh r1, [r0, #0x0]
+ ldr r0, _020B2894 ; =stackPos_
+ ldr r1, _020B28AC ; =mtxStateStack_
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ add r12, r1, r0, lsr #0xd
+ ldrh r0, [r12, #0x4]
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020B288C
+ ; Jump table
+ b _020B2870 ; case 0
+ b _020B288C ; case 1
+ b _020B2870 ; case 2
+ b _020B2870 ; case 3
+_020B2870:
+ ldr r0, _020B28B0 ; =groupID_
+ mov r1, #0x1
+ ldrh r3, [r0, #0x0]
+ add r2, r3, #0x1
+ strh r2, [r0, #0x0]
+ strh r3, [r12, #0x2]
+ strh r1, [r12, #0x4]
+_020B288C:
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ .balign 4
+_020B2894: .word stackPos_
+_020B2898: .word mtxStack_
+_020B289C: .word mtxStackFor2DHW_
+_020B28A0: .word bDonotUseSRTransform
+_020B28A4: .word firstSRTransformedMtxIdx_
+_020B28A8: .word 0x0000FFFE
+_020B28AC: .word mtxStateStack_
+_020B28B0: .word groupID_
+ arm_func_end NNS_G2dRotZ
+
+ arm_func_start NNS_G2dScale
+NNS_G2dScale: ; 0x020B28B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x1c
+ ldr r2, _020B29E8 ; =stackPos_
+ mov r12, #0x0
+ ldr r3, [r2, #0x0]
+ mov r4, r1
+ ldr r2, _020B29EC ; =mtxStack_
+ mov r1, #0x18
+ mla r1, r3, r1, r2
+ mov r5, r0
+ add r0, sp, #0x0
+ mov r2, r1
+ str r5, [sp, #0x0]
+ str r12, [sp, #0x4]
+ str r12, [sp, #0x8]
+ str r4, [sp, #0xc]
+ str r12, [sp, #0x10]
+ str r12, [sp, #0x14]
+ bl NNSi_G2dMtxConcat32
+ mov r0, r5
+ bl FX_Inv
+ mov r1, #0x0
+ str r0, [sp, #0x0]
+ mov r0, r4
+ str r1, [sp, #0x4]
+ str r1, [sp, #0x8]
+ bl FX_Inv
+ mov r3, #0x0
+ ldr r1, _020B29E8 ; =stackPos_
+ str r0, [sp, #0xc]
+ ldr r2, [r1, #0x0]
+ ldr r1, _020B29F0 ; =mtxStackFor2DHW_
+ mov r0, #0x18
+ mla r1, r2, r0, r1
+ add r0, sp, #0x0
+ mov r2, r1
+ str r3, [sp, #0x10]
+ str r3, [sp, #0x14]
+ bl NNSi_G2dMtxConcat32
+ ldr r0, _020B29F4 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020B2978
+ ldr r1, _020B29F8 ; =firstSRTransformedMtxIdx_
+ ldr r0, _020B29FC ; =0x0000FFFE
+ ldrh r1, [r1, #0x0]
+ cmp r1, r0
+ movne r0, #0x1
+ bne _020B297C
+_020B2978:
+ mov r0, #0x0
+_020B297C:
+ cmp r0, #0x0
+ ldreq r1, _020B29E8 ; =stackPos_
+ ldreq r0, _020B29F8 ; =firstSRTransformedMtxIdx_
+ ldreq r1, [r1, #0x0]
+ streqh r1, [r0, #0x0]
+ ldr r0, _020B29E8 ; =stackPos_
+ ldr r1, _020B2A00 ; =mtxStateStack_
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ add r12, r1, r0, lsr #0xd
+ ldrh r0, [r12, #0x4]
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020B29E0
+ ; Jump table
+ b _020B29C4 ; case 0
+ b _020B29E0 ; case 1
+ b _020B29C4 ; case 2
+ b _020B29C4 ; case 3
+_020B29C4:
+ ldr r0, _020B2A04 ; =groupID_
+ mov r1, #0x1
+ ldrh r3, [r0, #0x0]
+ add r2, r3, #0x1
+ strh r2, [r0, #0x0]
+ strh r3, [r12, #0x2]
+ strh r1, [r12, #0x4]
+_020B29E0:
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B29E8: .word stackPos_
+_020B29EC: .word mtxStack_
+_020B29F0: .word mtxStackFor2DHW_
+_020B29F4: .word bDonotUseSRTransform
+_020B29F8: .word firstSRTransformedMtxIdx_
+_020B29FC: .word 0x0000FFFE
+_020B2A00: .word mtxStateStack_
+_020B2A04: .word groupID_
+ arm_func_end NNS_G2dScale
+
+ arm_func_start NNS_G2dTranslate
+NNS_G2dTranslate: ; 0x020B2A08
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x1c
+ ldr r3, _020B2AEC ; =bDonotUseSRTransform
+ mov r4, r2
+ ldr r2, [r3, #0x0]
+ cmp r2, #0x0
+ beq _020B2A6C
+ ldr r2, _020B2AF0 ; =stackPos_
+ mov r3, #0x18
+ ldr r2, [r2, #0x0]
+ ldr lr, _020B2AF4 ; =mtxStack_ + 0x10
+ mul r5, r2, r3
+ ldr r3, [lr, r5]
+ ldr ip, _020B2AF8 ; =mtxStack_ + 0x14
+ add r0, r3, r0
+ str r0, [lr, r5]
+ ldr r0, [r12, r5]
+ ldr r3, _020B2AFC ; =fxZStack_
+ add r0, r0, r1
+ str r0, [r12, r5]
+ ldr r0, [r3, r2, lsl #0x2]
+ add sp, sp, #0x1c
+ add r0, r0, r4
+ str r0, [r3, r2, lsl #0x2]
+ ldmia sp!, {r4-r5,pc}
+_020B2A6C:
+ ldr r2, _020B2AF0 ; =stackPos_
+ mov lr, #0x1000
+ ldr r12, [r2, #0x0]
+ ldr r3, _020B2B00 ; =mtxStack_
+ mov r2, #0x18
+ str r1, [sp, #0x14]
+ mla r1, r12, r2, r3
+ mov r3, #0x0
+ str r0, [sp, #0x10]
+ add r0, sp, #0x0
+ mov r2, r1
+ str lr, [sp, #0x0]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str lr, [sp, #0xc]
+ bl NNSi_G2dMtxConcat32
+ ldr r0, _020B2AF0 ; =stackPos_
+ ldr r1, _020B2B04 ; =mtxStackFor2DHW_
+ ldr r2, [r0, #0x0]
+ mov r0, #0x18
+ mla r1, r2, r0, r1
+ add r0, sp, #0x0
+ mov r2, r1
+ bl NNSi_G2dMtxConcat32
+ ldr r0, _020B2AF0 ; =stackPos_
+ ldr r2, _020B2AFC ; =fxZStack_
+ ldr r1, [r0, #0x0]
+ ldr r0, [r2, r1, lsl #0x2]
+ add r0, r0, r4
+ str r0, [r2, r1, lsl #0x2]
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B2AEC: .word bDonotUseSRTransform
+_020B2AF0: .word stackPos_
+_020B2AF4: .word mtxStack_ + 0x10
+_020B2AF8: .word mtxStack_ + 0x14
+_020B2AFC: .word fxZStack_
+_020B2B00: .word mtxStack_
+_020B2B04: .word mtxStackFor2DHW_
+ arm_func_end NNS_G2dTranslate
+
+ arm_func_start NNS_G2dPopMtx
+NNS_G2dPopMtx: ; 0x020B2B08
+ ldr r0, _020B2B4C ; =stackPos_
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ movle r0, #0x1
+ movgt r0, #0x0
+ cmp r0, #0x0
+ bxne lr
+ ldr r1, _020B2B4C ; =stackPos_
+ ldr r0, _020B2B50 ; =firstSRTransformedMtxIdx_
+ ldr r3, [r1, #0x0]
+ ldrh r2, [r0, #0x0]
+ sub r3, r3, #0x1
+ str r3, [r1, #0x0]
+ cmp r2, r3
+ ldrgt r1, _020B2B54 ; =0x0000FFFE
+ strgth r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020B2B4C: .word stackPos_
+_020B2B50: .word firstSRTransformedMtxIdx_
+_020B2B54: .word 0x0000FFFE
+ arm_func_end NNS_G2dPopMtx
+
+ arm_func_start NNS_G2dPushMtx
+NNS_G2dPushMtx: ; 0x020B2B58
+ stmdb sp!, {r4-r10,lr}
+ ldr r0, _020B2D74 ; =pCurrentInstance_
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x7c]
+ ands r0, r0, #0x1
+ bne _020B2CA4
+ ldr r0, _020B2D78 ; =stackPos_
+ ldr r1, [r0, #0x0]
+ mov r0, r1, lsl #0x10
+ add r5, r1, #0x1
+ cmp r5, #0x20
+ mov r4, r0, lsr #0x10
+ movlt r0, #0x1
+ movge r0, #0x0
+ cmp r0, #0x0
+ beq _020B2C44
+ ldr r0, _020B2D7C ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020B2BE4
+ ldr r1, _020B2D78 ; =stackPos_
+ mov r0, #0x18
+ ldr r3, [r1, #0x0]
+ ldr r1, _020B2D80 ; =fxZStack_
+ mul r8, r3, r0
+ ldr r6, _020B2D84 ; =mtxStack_ + 0x10
+ mul r7, r5, r0
+ ldr r2, [r6, r8]
+ ldr r0, [r1, r3, lsl #0x2]
+ ldr r3, _020B2D88 ; =mtxStack_ + 0x14
+ str r2, [r6, r7]
+ ldr r2, [r3, r8]
+ str r0, [r1, r5, lsl #0x2]
+ str r2, [r3, r7]
+ b _020B2C3C
+_020B2BE4:
+ ldr r1, _020B2D78 ; =stackPos_
+ mov r0, #0x18
+ ldr r2, [r1, #0x0]
+ ldr r7, _020B2D80 ; =fxZStack_
+ mul lr, r2, r0
+ ldr r1, _020B2D8C ; =mtxStack_
+ mul r12, r5, r0
+ ldr r8, _020B2D90 ; =mtxStackFor2DHW_
+ add r10, r1, lr
+ ldr r6, [r7, r2, lsl #0x2]
+ add r9, r1, r12
+ ldmia r10!, {r0-r3}
+ stmia r9!, {r0-r3}
+ ldmia r10, {r0-r1}
+ str r6, [r7, r5, lsl #0x2]
+ add r7, r8, lr
+ stmia r9, {r0-r1}
+ add r6, r8, r12
+ ldmia r7!, {r0-r3}
+ stmia r6!, {r0-r3}
+ ldmia r7, {r0-r1}
+ stmia r6, {r0-r1}
+_020B2C3C:
+ ldr r0, _020B2D78 ; =stackPos_
+ str r5, [r0, #0x0]
+_020B2C44:
+ ldr r0, _020B2D78 ; =stackPos_
+ ldr r2, _020B2D94 ; =mtxStateStack_
+ ldr r0, [r0, #0x0]
+ mov r5, r4, lsl #0x3
+ mov r0, r0, lsl #0x10
+ mov r3, r0, lsr #0x10
+ add r4, r2, r4, lsl #0x3
+ mov r6, r3, lsl #0x3
+ ldrh r1, [r2, r5]
+ ldrh r0, [r4, #0x2]
+ add r3, r2, r3, lsl #0x3
+ strh r1, [r2, r6]
+ strh r0, [r3, #0x2]
+ ldrh r2, [r4, #0x4]
+ ldrh r0, [r4, #0x6]
+ ldr r1, _020B2D98 ; =mtxStateStack_ + 0x4
+ strh r2, [r3, #0x4]
+ strh r0, [r3, #0x6]
+ ldrh r0, [r1, r5]
+ cmp r0, #0x1
+ moveq r0, #0x2
+ streqh r0, [r1, r6]
+ strneh r0, [r1, r6]
+ ldmia sp!, {r4-r10,pc}
+_020B2CA4:
+ ldr r0, _020B2D78 ; =stackPos_
+ ldr r0, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r4, #0x20
+ movlt r0, #0x1
+ movge r0, #0x0
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r10,pc}
+ ldr r0, _020B2D7C ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020B2D10
+ ldr r1, _020B2D78 ; =stackPos_
+ mov r0, #0x18
+ ldr r3, [r1, #0x0]
+ ldr r1, _020B2D80 ; =fxZStack_
+ mul r7, r3, r0
+ ldr r5, _020B2D84 ; =mtxStack_ + 0x10
+ mul r6, r4, r0
+ ldr r2, [r5, r7]
+ ldr r0, [r1, r3, lsl #0x2]
+ ldr r3, _020B2D88 ; =mtxStack_ + 0x14
+ str r2, [r5, r6]
+ ldr r2, [r3, r7]
+ str r0, [r1, r4, lsl #0x2]
+ str r2, [r3, r6]
+ b _020B2D68
+_020B2D10:
+ ldr r1, _020B2D78 ; =stackPos_
+ mov r0, #0x18
+ ldr r2, [r1, #0x0]
+ ldr ip, _020B2D80 ; =fxZStack_
+ mul r9, r2, r0
+ ldr r1, _020B2D8C ; =mtxStack_
+ mul r8, r4, r0
+ ldr lr, _020B2D90 ; =mtxStackFor2DHW_
+ add r6, r1, r9
+ ldr r5, [r12, r2, lsl #0x2]
+ add r7, r1, r8
+ ldmia r6!, {r0-r3}
+ stmia r7!, {r0-r3}
+ ldmia r6, {r0-r1}
+ add r6, lr, r9
+ stmia r7, {r0-r1}
+ add lr, lr, r8
+ ldmia r6!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r6, {r0-r1}
+ stmia lr, {r0-r1}
+ str r5, [r12, r4, lsl #0x2]
+_020B2D68:
+ ldr r0, _020B2D78 ; =stackPos_
+ str r4, [r0, #0x0]
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020B2D74: .word pCurrentInstance_
+_020B2D78: .word stackPos_
+_020B2D7C: .word bDonotUseSRTransform
+_020B2D80: .word fxZStack_
+_020B2D84: .word mtxStack_ + 0x10
+_020B2D88: .word mtxStack_ + 0x14
+_020B2D8C: .word mtxStack_
+_020B2D90: .word mtxStackFor2DHW_
+_020B2D94: .word mtxStateStack_
+_020B2D98: .word mtxStateStack_ + 0x4
+ arm_func_end NNS_G2dPushMtx
+
+ arm_func_start NNS_G2dDrawMultiCellAnimation
+NNS_G2dDrawMultiCellAnimation: ; 0x020B2D9C
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ ldrh r0, [r4, #0x56]
+ cmp r0, #0x0
+ bne _020B2DBC
+ add r0, r4, #0x30
+ bl NNS_G2dDrawMultiCell
+ ldmia sp!, {r4-r6,pc}
+_020B2DBC:
+ bl NNS_G2dPushMtx
+ ldrh r0, [r4, #0x56]
+ ands r0, r0, #0x8
+ beq _020B2E0C
+ ldr r0, _020B2E70 ; =pCurrentInstance_
+ ldrsh r6, [r4, #0x52]
+ ldr r0, [r0, #0x0]
+ ldrsh r5, [r4, #0x50]
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ ldr r0, _020B2E70 ; =pCurrentInstance_
+ rsbne r5, r5, #0x0
+ ldr r0, [r0, #0x0]
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ rsbne r6, r6, #0x0
+ mov r0, r5, lsl #0xc
+ mov r1, r6, lsl #0xc
+ mov r2, #0x0
+ bl NNS_G2dTranslate
+_020B2E0C:
+ ldrh r0, [r4, #0x56]
+ ands r0, r0, #0x4
+ beq _020B2E40
+ ldrh r0, [r4, #0x54]
+ ldr r2, _020B2E74 ; =FX_SinCosTable_
+ mov r0, r0, asr #0x4
+ mov r1, r0, lsl #0x1
+ add r0, r1, #0x1
+ mov r3, r1, lsl #0x1
+ mov r1, r0, lsl #0x1
+ ldrsh r0, [r2, r3]
+ ldrsh r1, [r2, r1]
+ bl NNS_G2dRotZ
+_020B2E40:
+ ldrh r0, [r4, #0x56]
+ ands r0, r0, #0x2
+ beq _020B2E5C
+ ldr r0, [r4, #0x48]
+ ldr r1, [r4, #0x4c]
+ mov r2, #0x1000
+ bl NNS_G2dScale
+_020B2E5C:
+ add r0, r4, #0x30
+ bl NNS_G2dDrawMultiCell
+ mov r0, #0x1
+ bl NNS_G2dPopMtx
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B2E70: .word pCurrentInstance_
+_020B2E74: .word FX_SinCosTable_
+ arm_func_end NNS_G2dDrawMultiCellAnimation
+
+ arm_func_start NNS_G2dDrawMultiCell
+NNS_G2dDrawMultiCell: ; 0x020B2E78
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x1
+ bne _020B309C
+ ldr r0, [r5, #0x0]
+ mov r2, #0x0
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0x0
+ bls _020B2ED0
+ ldr r3, _020B3174 ; =mcRenderState_
+ mov r4, r2
+_020B2EAC:
+ add r0, r3, r2, lsl #0x2
+ str r4, [r0, #0x4]
+ ldr r0, [r5, #0x0]
+ add r2, r2, #0x1
+ ldrh r1, [r0, #0x2]
+ mov r0, r2, lsl #0x10
+ mov r2, r0, lsr #0x10
+ cmp r2, r1
+ blo _020B2EAC
+_020B2ED0:
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ mov r6, #0x1
+ ldr r1, [r0, #0x0]
+ ldr r0, _020B3174 ; =mcRenderState_
+ str r6, [r0, #0x404]
+ ldr r0, [r1, #0x80]
+ cmp r0, #0x0
+ beq _020B2FD8
+ bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep
+ str r0, [sp, #0x0]
+ mov r0, r6
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x80]
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+ ldr r2, [r5, #0x0]
+ mov r7, #0x0
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x0
+ bls _020B2FC0
+ mov r11, r7
+_020B2F28:
+ ldr r0, [r2, #0x4]
+ ldr r9, [r5, #0xc]
+ add r10, r0, r7, lsl #0x3
+ ldrh r0, [r10, #0x6]
+ and r0, r0, #0xff00
+ mov r0, r0, lsl #0x8
+ mov r8, r0, lsr #0x10
+ ldr r0, _020B3174 ; =mcRenderState_
+ strh r8, [r0, #0x0]
+ bl NNS_G2dPushMtx
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ ldrsh r4, [r10, #0x4]
+ ldr r0, [r0, #0x0]
+ ldrsh r10, [r10, #0x2]
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ rsbne r10, r10, #0x0
+ ldr r0, [r0, #0x0]
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ rsbne r4, r4, #0x0
+ mov r2, r11
+ mov r0, r10, lsl #0xc
+ mov r1, r4, lsl #0xc
+ bl NNS_G2dTranslate
+ mov r0, #0x58
+ mla r0, r8, r0, r9
+ bl DrawCellAnimationImpl_
+ mov r0, r6
+ bl NNS_G2dPopMtx
+ ldr r2, [r5, #0x0]
+ add r0, r7, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r2, #0x0]
+ mov r7, r0, lsr #0x10
+ cmp r7, r1
+ blo _020B2F28
+_020B2FC0:
+ mov r0, #0x0
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+ ldr r0, [sp, #0x0]
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+ bl NNSi_G2dResetOamSoftEmuAutoZOffset
+ b _020B3088
+_020B2FD8:
+ ldr r2, [r5, #0x0]
+ mov r7, #0x0
+ ldrh r0, [r2, #0x0]
+ cmp r0, #0x0
+ bls _020B3088
+ str r7, [sp, #0x4]
+ mov r11, #0x58
+_020B2FF4:
+ ldr r0, [r2, #0x4]
+ ldr r9, [r5, #0xc]
+ add r10, r0, r7, lsl #0x3
+ ldrh r0, [r10, #0x6]
+ and r0, r0, #0xff00
+ mov r0, r0, lsl #0x8
+ mov r8, r0, lsr #0x10
+ ldr r0, _020B3174 ; =mcRenderState_
+ strh r8, [r0, #0x0]
+ bl NNS_G2dPushMtx
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ ldrsh r4, [r10, #0x4]
+ ldr r0, [r0, #0x0]
+ ldrsh r10, [r10, #0x2]
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ rsbne r10, r10, #0x0
+ ldr r0, [r0, #0x0]
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ rsbne r4, r4, #0x0
+ ldr r2, [sp, #0x4]
+ mov r0, r10, lsl #0xc
+ mov r1, r4, lsl #0xc
+ bl NNS_G2dTranslate
+ mla r0, r8, r11, r9
+ bl DrawCellAnimationImpl_
+ mov r0, r6
+ bl NNS_G2dPopMtx
+ ldr r2, [r5, #0x0]
+ add r0, r7, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r2, #0x0]
+ mov r7, r0, lsr #0x10
+ cmp r7, r1
+ blo _020B2FF4
+_020B3088:
+ ldr r0, _020B3174 ; =mcRenderState_
+ mov r1, #0x0
+ str r1, [r0, #0x404]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+_020B309C:
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ ldr r7, [r5, #0xc]
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x80]
+ cmp r0, #0x0
+ beq _020B312C
+ bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep
+ mov r6, r0
+ mov r0, #0x1
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+ ldr r0, _020B3178 ; =pCurrentInstance_
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x80]
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+ ldr r0, [r5, #0x0]
+ mov r4, #0x0
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ bls _020B3110
+ mov r8, #0x28
+_020B30EC:
+ mla r0, r4, r8, r7
+ bl DrawNode_
+ ldr r1, [r5, #0x0]
+ add r0, r4, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r1, #0x0]
+ mov r4, r0, lsr #0x10
+ cmp r4, r1
+ blo _020B30EC
+_020B3110:
+ mov r0, #0x0
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+ mov r0, r6
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+ bl NNSi_G2dResetOamSoftEmuAutoZOffset
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+_020B312C:
+ ldr r0, [r5, #0x0]
+ mov r4, #0x0
+ ldrh r0, [r0, #0x0]
+ cmp r0, #0x0
+ addls sp, sp, #0xc
+ ldmlsia sp!, {r4-r11,pc}
+ mov r6, #0x28
+_020B3148:
+ mla r0, r4, r6, r7
+ bl DrawNode_
+ ldr r1, [r5, #0x0]
+ add r0, r4, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r1, #0x0]
+ mov r4, r0, lsr #0x10
+ cmp r4, r1
+ blo _020B3148
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B3174: .word mcRenderState_
+_020B3178: .word pCurrentInstance_
+ arm_func_end NNS_G2dDrawMultiCell
+
+ arm_func_start NNS_G2dDrawCellAnimation
+NNS_G2dDrawCellAnimation: ; 0x020B317C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020B31EC ; =pCurrentInstance_
+ mov r5, r0
+ ldr r1, [r1, #0x0]
+ ldr r1, [r1, #0x80]
+ cmp r1, #0x0
+ beq _020B31E0
+ bl NNSi_G2dGetOamSoftEmuAutoZOffsetStep
+ mov r4, r0
+ mov r0, #0x1
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+ ldr r0, _020B31EC ; =pCurrentInstance_
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x80]
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+ mov r0, r5
+ bl DrawCellAnimationImpl_
+ mov r0, #0x0
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+ mov r0, r4
+ bl NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+ bl NNSi_G2dResetOamSoftEmuAutoZOffset
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020B31E0:
+ bl DrawCellAnimationImpl_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B31EC: .word pCurrentInstance_
+ arm_func_end NNS_G2dDrawCellAnimation
+
+ arm_func_start NNS_G2dEndRendering
+NNS_G2dEndRendering: ; 0x020B31F0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020B3260 ; =0x04000448
+ mov r2, #0x1
+ ldr r0, _020B3264 ; =pCurrentInstance_
+ str r2, [r1, #0x0]
+ ldr r2, [r0, #0x0]
+ ldr r3, [r2, #0x7c]
+ cmp r3, #0x0
+ beq _020B324C
+ ands r0, r3, #0x1
+ ldrne r0, _020B3268 ; =bDonotUseSRTransform
+ movne r1, #0x0
+ strne r1, [r0, #0x0]
+ ands r0, r3, #0x2
+ beq _020B323C
+ mov r0, #0x0
+ str r0, [r2, #0x74]
+ bl NNS_G2dRndCoreEndRendering
+_020B323C:
+ ldr r0, _020B3264 ; =pCurrentInstance_
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x7c]
+_020B324C:
+ ldr r0, _020B3264 ; =pCurrentInstance_
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B3260: .word 0x04000448
+_020B3264: .word pCurrentInstance_
+_020B3268: .word bDonotUseSRTransform
+ arm_func_end NNS_G2dEndRendering
+
+ arm_func_start NNS_G2dBeginRendering
+NNS_G2dBeginRendering: ; 0x020B326C
+ stmdb sp!, {r4-r8,lr}
+ ldr r5, _020B330C ; =currentMtxCachePos_
+ ldr r3, _020B3310 ; =pCurrentInstance_
+ ldrh r6, [r5, #0x0]
+ ldr r2, _020B3314 ; =stackPos_
+ mov r4, #0x0
+ ldr r7, _020B3318 ; =0x0000FFFE
+ ldr r1, _020B331C ; =firstSRTransformedMtxIdx_
+ str r0, [r3, #0x0]
+ str r4, [r2, #0x0]
+ strh r7, [r1, #0x0]
+ cmp r6, #0x0
+ ble _020B32D0
+ ldr r8, _020B3320 ; =mtxCacheBuffer_
+ mvn r7, #0x0
+ mov r6, #0x10
+_020B32AC:
+ mov r0, r7
+ mov r2, r6
+ add r1, r8, #0x10
+ bl MIi_CpuClearFast
+ ldrh r0, [r5, #0x0]
+ add r4, r4, #0x1
+ add r8, r8, #0x20
+ cmp r4, r0
+ blt _020B32AC
+_020B32D0:
+ ldr r4, _020B330C ; =currentMtxCachePos_
+ mov r0, #0x0
+ ldr r3, _020B3324 ; =groupID_
+ ldr r1, _020B3328 ; =mtxStateStack_
+ mov r2, #0x100
+ strh r0, [r4, #0x0]
+ strh r0, [r3, #0x0]
+ bl MIi_CpuClearFast
+ ldr r1, _020B332C ; =0x04000444
+ mov r2, #0x0
+ ldr r0, _020B3330 ; =0x04000454
+ str r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ bl NNSi_G2dIdentity
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020B330C: .word currentMtxCachePos_
+_020B3310: .word pCurrentInstance_
+_020B3314: .word stackPos_
+_020B3318: .word 0x0000FFFE
+_020B331C: .word firstSRTransformedMtxIdx_
+_020B3320: .word mtxCacheBuffer_
+_020B3324: .word groupID_
+_020B3328: .word mtxStateStack_
+_020B332C: .word 0x04000444
+_020B3330: .word 0x04000454
+ arm_func_end NNS_G2dBeginRendering
+
+ arm_func_start NNS_G2dInitRenderSurface
+NNS_G2dInitRenderSurface: ; 0x020B3334
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r1, r4
+ mov r0, #0x0
+ mov r2, #0x48
+ bl MIi_CpuClear16
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+ mov r0, #0x3
+ ldr r1, _020B3380 ; =RndCoreCBFuncBeforeCell_
+ str r0, [r4, #0x14]
+ ldr r0, _020B3384 ; =RndCoreCBFuncAfterCell_
+ str r1, [r4, #0x18]
+ ldr r1, _020B3388 ; =RndCoreCBFuncBeforeOBJ_
+ str r0, [r4, #0x1c]
+ ldr r0, _020B338C ; =RndCoreCBFuncAfterOBJ_
+ str r1, [r4, #0x20]
+ str r0, [r4, #0x24]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B3380: .word RndCoreCBFuncBeforeCell_
+_020B3384: .word RndCoreCBFuncAfterCell_
+_020B3388: .word RndCoreCBFuncBeforeOBJ_
+_020B338C: .word RndCoreCBFuncAfterOBJ_
+ arm_func_end NNS_G2dInitRenderSurface
+
+ arm_func_start NNS_G2dAddRendererTargetSurface
+NNS_G2dAddRendererTargetSurface: ; 0x020B3390
+ ldr r2, [r0, #0x70]
+ str r2, [r1, #0x30]
+ str r1, [r0, #0x70]
+ bx lr
+ arm_func_end NNS_G2dAddRendererTargetSurface
+
+ arm_func_start NNS_G2dInitRenderer
+NNS_G2dInitRenderer: ; 0x020B33A0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ bl NNS_G2dInitRndCore
+ mov r7, #0x0
+ str r7, [r4, #0x70]
+ str r7, [r4, #0x74]
+ str r7, [r4, #0x78]
+ str r7, [r4, #0x7c]
+ str r7, [r4, #0x80]
+ str r7, [r4, #0x84]
+ strh r7, [r4, #0x88]
+ strh r7, [r4, #0x8a]
+ str r7, [r4, #0x8c]
+ str r7, [r4, #0x90]
+ ldr r1, _020B3454 ; =stackPos_
+ strh r7, [r4, #0x94]
+ ldr r2, _020B3458 ; =0x0000FFFE
+ ldr r0, _020B345C ; =firstSRTransformedMtxIdx_
+ ldr r6, _020B3460 ; =mtxCacheBuffer_
+ str r7, [r1, #0x0]
+ strh r2, [r0, #0x0]
+ mvn r5, #0x0
+ mov r4, #0x10
+_020B3400:
+ mov r0, r5
+ mov r2, r4
+ add r1, r6, #0x10
+ bl MIi_CpuClearFast
+ add r7, r7, #0x1
+ cmp r7, #0x20
+ add r6, r6, #0x20
+ blt _020B3400
+ ldr ip, _020B3464 ; =currentMtxCachePos_
+ mov r0, #0x0
+ ldr r3, _020B3468 ; =groupID_
+ ldr r1, _020B346C ; =mtxStateStack_
+ mov r2, #0x100
+ strh r0, [r12, #0x0]
+ strh r0, [r3, #0x0]
+ bl MIi_CpuClearFast
+ ldr r0, _020B3470 ; =bDonotUseSRTransform
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B3454: .word stackPos_
+_020B3458: .word 0x0000FFFE
+_020B345C: .word firstSRTransformedMtxIdx_
+_020B3460: .word mtxCacheBuffer_
+_020B3464: .word currentMtxCachePos_
+_020B3468: .word groupID_
+_020B346C: .word mtxStateStack_
+_020B3470: .word bDonotUseSRTransform
+ arm_func_end NNS_G2dInitRenderer
+
+ arm_func_start DrawNode_
+DrawNode_: ; 0x020B3474
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, [r5, #0x8]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ ldr r4, [r5, #0x0]
+ bl NNS_G2dPushMtx
+ ldrh r0, [r5, #0x1e]
+ ands r0, r0, #0x8
+ beq _020B34E4
+ ldr r0, _020B354C ; =pCurrentInstance_
+ ldrsh r7, [r5, #0x1a]
+ ldr r0, [r0, #0x0]
+ ldrsh r6, [r5, #0x18]
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ ldr r0, _020B354C ; =pCurrentInstance_
+ rsbne r6, r6, #0x0
+ ldr r0, [r0, #0x0]
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ rsbne r7, r7, #0x0
+ mov r0, r6, lsl #0xc
+ mov r1, r7, lsl #0xc
+ mov r2, #0x0
+ bl NNS_G2dTranslate
+_020B34E4:
+ ldrh r0, [r5, #0x1e]
+ ands r0, r0, #0x4
+ beq _020B3518
+ ldrh r0, [r5, #0x1c]
+ ldr r2, _020B3550 ; =FX_SinCosTable_
+ mov r0, r0, asr #0x4
+ mov r1, r0, lsl #0x1
+ add r0, r1, #0x1
+ mov r3, r1, lsl #0x1
+ mov r1, r0, lsl #0x1
+ ldrsh r0, [r2, r3]
+ ldrsh r1, [r2, r1]
+ bl NNS_G2dRotZ
+_020B3518:
+ ldrh r0, [r5, #0x1e]
+ ands r0, r0, #0x2
+ beq _020B3534
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ mov r2, #0x1000
+ bl NNS_G2dScale
+_020B3534:
+ mov r0, r4
+ bl DrawCellAnimationImpl_
+ mov r0, #0x1
+ bl NNS_G2dPopMtx
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B354C: .word pCurrentInstance_
+_020B3550: .word FX_SinCosTable_
+ arm_func_end DrawNode_
+
+ arm_func_start DrawCellAnimationImpl_
+DrawCellAnimationImpl_: ; 0x020B3554
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldrh r0, [r5, #0x4a]
+ ldr r4, [r5, #0x2c]
+ cmp r0, #0x0
+ bne _020B35C0
+ ldr r2, [r5, #0x34]
+ mvn r0, #0x0
+ cmp r2, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B35B0
+ ldr r1, _020B36B4 ; =currenVramTransferHandle_
+ mov r0, r4
+ str r2, [r1, #0x0]
+ bl DrawCellImpl_
+ ldr r0, _020B36B4 ; =currenVramTransferHandle_
+ mvn r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+_020B35B0:
+ mov r0, r4
+ bl DrawCellImpl_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+_020B35C0:
+ bl NNS_G2dPushMtx
+ ldrh r0, [r5, #0x4a]
+ ands r0, r0, #0x8
+ beq _020B3610
+ ldr r0, _020B36B8 ; =pCurrentInstance_
+ ldrsh r7, [r5, #0x46]
+ ldr r0, [r0, #0x0]
+ ldrsh r6, [r5, #0x44]
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ ldr r0, _020B36B8 ; =pCurrentInstance_
+ rsbne r6, r6, #0x0
+ ldr r0, [r0, #0x0]
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ rsbne r7, r7, #0x0
+ mov r0, r6, lsl #0xc
+ mov r1, r7, lsl #0xc
+ mov r2, #0x0
+ bl NNS_G2dTranslate
+_020B3610:
+ ldrh r0, [r5, #0x4a]
+ ands r0, r0, #0x4
+ beq _020B3644
+ ldrh r0, [r5, #0x48]
+ ldr r2, _020B36BC ; =FX_SinCosTable_
+ mov r0, r0, asr #0x4
+ mov r1, r0, lsl #0x1
+ add r0, r1, #0x1
+ mov r3, r1, lsl #0x1
+ mov r1, r0, lsl #0x1
+ ldrsh r0, [r2, r3]
+ ldrsh r1, [r2, r1]
+ bl NNS_G2dRotZ
+_020B3644:
+ ldrh r0, [r5, #0x4a]
+ ands r0, r0, #0x2
+ beq _020B3660
+ ldr r0, [r5, #0x3c]
+ ldr r1, [r5, #0x40]
+ mov r2, #0x1000
+ bl NNS_G2dScale
+_020B3660:
+ ldr r2, [r5, #0x34]
+ mvn r0, #0x0
+ cmp r2, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B369C
+ ldr r1, _020B36B4 ; =currenVramTransferHandle_
+ mov r0, r4
+ str r2, [r1, #0x0]
+ bl DrawCellImpl_
+ ldr r0, _020B36B4 ; =currenVramTransferHandle_
+ mvn r1, #0x0
+ str r1, [r0, #0x0]
+ b _020B36A4
+_020B369C:
+ mov r0, r4
+ bl DrawCellImpl_
+_020B36A4:
+ mov r0, #0x1
+ bl NNS_G2dPopMtx
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B36B4: .word currenVramTransferHandle_
+_020B36B8: .word pCurrentInstance_
+_020B36BC: .word FX_SinCosTable_
+ arm_func_end DrawCellAnimationImpl_
+
+ arm_func_start DrawCellImpl_
+DrawCellImpl_: ; 0x020B36C0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020B3B54 ; =pCurrentInstance_
+ mov r10, r0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r0, #0x7c]
+ str r0, [sp, #0x0]
+ ldr r9, [r0, #0x70]
+ ands r0, r1, #0x2
+ beq _020B38EC
+ ldr r0, [r9, #0x14]
+ cmp r0, #0x0
+ beq _020B3840
+ ldr r0, _020B3B58 ; =bDonotUseSRTransform
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020B3720
+ ldr r2, _020B3B5C ; =firstSRTransformedMtxIdx_
+ ldr r0, _020B3B60 ; =0x0000FFFE
+ ldrh r2, [r2, #0x0]
+ cmp r2, r0
+ movne r0, #0x1
+ bne _020B3724
+_020B3720:
+ mov r0, #0x0
+_020B3724:
+ cmp r0, #0x0
+ beq _020B37AC
+ ldr r0, _020B3B64 ; =mcRenderState_
+ ldr r1, [r0, #0x404]
+ cmp r1, #0x0
+ beq _020B3788
+ ldrh r1, [r0, #0x0]
+ ldr r0, _020B3B68 ; =mcRenderState_ + 0x4
+ ldr r1, [r0, r1, lsl #0x2]
+ cmp r1, #0x0
+ bne _020B37AC
+ bl NNSi_G2dMCMStoreCurrentMtxToMtxCache
+ ldr r0, _020B3B6C ; =stackPos_
+ ldr r2, _020B3B70 ; =mtxStateStack_
+ ldr r0, [r0, #0x0]
+ ldr r1, _020B3B64 ; =mcRenderState_
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0xd
+ ldrh r3, [r2, r0]
+ ldr r4, _020B3B74 ; =mtxCacheBuffer_
+ ldrh r2, [r1, #0x0]
+ ldr r0, _020B3B68 ; =mcRenderState_ + 0x4
+ add r1, r4, r3, lsl #0x5
+ str r1, [r0, r2, lsl #0x2]
+ b _020B37AC
+_020B3788:
+ bl NNSi_G2dMCMStoreCurrentMtxToMtxCache
+ ldr r0, _020B3B6C ; =stackPos_
+ ldr r1, _020B3B70 ; =mtxStateStack_
+ ldr r0, [r0, #0x0]
+ ldr r2, _020B3B74 ; =mtxCacheBuffer_
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0xd
+ ldrh r0, [r1, r0]
+ add r1, r2, r0, lsl #0x5
+_020B37AC:
+ ldr r0, _020B3B58 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r0, _020B3B6C ; =stackPos_
+ ldreq r3, _020B3B78 ; =mtxStack_
+ ldreq r2, [r0, #0x0]
+ moveq r0, #0x18
+ mlaeq r0, r2, r0, r3
+ beq _020B37FC
+ ldr r2, _020B3B6C ; =stackPos_
+ mov r0, #0x18
+ ldr r2, [r2, #0x0]
+ ldr r3, _020B3B7C ; =mtxStack_ + 0x10
+ mul r4, r2, r0
+ ldr r2, _020B3B80 ; =mtxStack_ + 0x14
+ ldr r3, [r3, r4]
+ ldr r0, _020B3B84 ; =mtxI_
+ ldr r2, [r2, r4]
+ str r3, [r0, #0x10]
+ str r2, [r0, #0x14]
+_020B37FC:
+ bl NNS_G2dSetRndCoreCurrentMtx2D
+ ldr r1, _020B3B88 ; =currenVramTransferHandle_
+ mvn r0, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B3830
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCellVramTransfer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+_020B3830:
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCell
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+_020B3840:
+ ldr r0, _020B3B6C ; =stackPos_
+ ldr r1, _020B3B8C ; =fxZStack_
+ ldr r2, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r1, [r1, r2, lsl #0x2]
+ bl NNS_G2dSetRndCore3DSoftSpriteZvalue
+ ldr r0, _020B3B58 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r0, _020B3B6C ; =stackPos_
+ ldreq r2, _020B3B78 ; =mtxStack_
+ ldreq r1, [r0, #0x0]
+ moveq r0, #0x18
+ mlaeq r0, r1, r0, r2
+ beq _020B38A8
+ ldr r1, _020B3B6C ; =stackPos_
+ mov r0, #0x18
+ ldr r1, [r1, #0x0]
+ ldr r2, _020B3B7C ; =mtxStack_ + 0x10
+ mul r3, r1, r0
+ ldr r1, _020B3B80 ; =mtxStack_ + 0x14
+ ldr r2, [r2, r3]
+ ldr r0, _020B3B84 ; =mtxI_
+ ldr r1, [r1, r3]
+ str r2, [r0, #0x10]
+ str r1, [r0, #0x14]
+_020B38A8:
+ bl NNS_G2dSetRndCoreCurrentMtx3D
+ ldr r1, _020B3B88 ; =currenVramTransferHandle_
+ mvn r0, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ cmp r0, #0x0
+ beq _020B38DC
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCellVramTransfer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+_020B38DC:
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCell
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+_020B38EC:
+ cmp r9, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r11,pc}
+ ldr r4, _020B3B6C ; =stackPos_
+ ldr fp, _020B3B78 ; =mtxStack_
+ mov r7, #0x0
+ mov r6, #0x1
+_020B3908:
+ ldr r0, [r9, #0x10]
+ cmp r0, #0x0
+ beq _020B3B40
+ ldr r0, [r9, #0x14]
+ cmp r0, #0x0
+ beq _020B3A8C
+ ldr r8, [r5, #0x0]
+ mov r1, r9
+ str r9, [r8, #0x74]
+ mov r0, r8
+ bl NNS_G2dSetRndCoreSurface
+ ldr r1, [r9, #0x28]
+ ldr r2, [r9, #0x2c]
+ mov r0, r8
+ bl NNS_G2dSetRndCoreOamRegisterFunc
+ mov r0, r8
+ bl NNS_G2dRndCoreBeginRendering
+ ldr r0, _020B3B58 ; =bDonotUseSRTransform
+ mov r1, r7
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ bne _020B3978
+ ldr r0, _020B3B5C ; =firstSRTransformedMtxIdx_
+ ldrh r2, [r0, #0x0]
+ ldr r0, _020B3B60 ; =0x0000FFFE
+ cmp r2, r0
+ movne r0, r6
+ bne _020B397C
+_020B3978:
+ mov r0, r7
+_020B397C:
+ cmp r0, #0x0
+ beq _020B3A04
+ ldr r0, _020B3B64 ; =mcRenderState_
+ ldr r0, [r0, #0x404]
+ cmp r0, #0x0
+ beq _020B39E4
+ ldr r0, _020B3B64 ; =mcRenderState_
+ ldrh r1, [r0, #0x0]
+ add r0, r0, r1, lsl #0x2
+ ldr r1, [r0, #0x4]
+ cmp r1, #0x0
+ bne _020B3A04
+ bl NNSi_G2dMCMStoreCurrentMtxToMtxCache
+ ldr r0, _020B3B64 ; =mcRenderState_
+ ldr r2, [r4, #0x0]
+ ldrh r1, [r0, #0x0]
+ mov r0, r2, lsl #0x10
+ mov r2, r0, lsr #0xd
+ ldr r0, _020B3B70 ; =mtxStateStack_
+ ldrh r3, [r0, r2]
+ ldr r0, _020B3B64 ; =mcRenderState_
+ add r2, r0, r1, lsl #0x2
+ ldr r0, _020B3B74 ; =mtxCacheBuffer_
+ add r1, r0, r3, lsl #0x5
+ str r1, [r2, #0x4]
+ b _020B3A04
+_020B39E4:
+ bl NNSi_G2dMCMStoreCurrentMtxToMtxCache
+ ldr r0, [r4, #0x0]
+ mov r0, r0, lsl #0x10
+ mov r1, r0, lsr #0xd
+ ldr r0, _020B3B70 ; =mtxStateStack_
+ ldrh r1, [r0, r1]
+ ldr r0, _020B3B74 ; =mtxCacheBuffer_
+ add r1, r0, r1, lsl #0x5
+_020B3A04:
+ ldr r0, _020B3B58 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r2, [r4, #0x0]
+ moveq r0, #0x18
+ mlaeq r0, r2, r0, r11
+ beq _020B3A44
+ ldr r2, [r4, #0x0]
+ mov r0, #0x18
+ mla r8, r2, r0, r11
+ ldr r0, _020B3B84 ; =mtxI_
+ ldr r3, [r8, #0x10]
+ mov r2, r0
+ str r3, [r2, #0x10]
+ ldr r3, [r8, #0x14]
+ str r3, [r2, #0x14]
+_020B3A44:
+ bl NNS_G2dSetRndCoreCurrentMtx2D
+ ldr r0, _020B3B88 ; =currenVramTransferHandle_
+ ldr r1, [r0, #0x0]
+ mvn r0, #0x0
+ cmp r1, r0
+ movne r0, r6
+ moveq r0, r7
+ cmp r0, #0x0
+ beq _020B3A74
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCellVramTransfer
+ b _020B3A7C
+_020B3A74:
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCell
+_020B3A7C:
+ ldr r0, [r5, #0x0]
+ str r7, [r0, #0x74]
+ bl NNS_G2dRndCoreEndRendering
+ b _020B3B40
+_020B3A8C:
+ ldr r8, [r5, #0x0]
+ mov r1, r9
+ mov r0, r8
+ str r9, [r8, #0x74]
+ bl NNS_G2dSetRndCoreSurface
+ mov r0, r8
+ bl NNS_G2dRndCoreBeginRendering
+ ldr r2, [r4, #0x0]
+ ldr r1, _020B3B8C ; =fxZStack_
+ ldr r0, [sp, #0x0]
+ ldr r1, [r1, r2, lsl #0x2]
+ bl NNS_G2dSetRndCore3DSoftSpriteZvalue
+ ldr r0, _020B3B58 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r1, [r4, #0x0]
+ moveq r0, #0x18
+ mlaeq r0, r1, r0, r11
+ beq _020B3AFC
+ ldr r1, [r4, #0x0]
+ mov r0, #0x18
+ mla r3, r1, r0, r11
+ ldr r0, _020B3B84 ; =mtxI_
+ ldr r2, [r3, #0x10]
+ mov r1, r0
+ str r2, [r1, #0x10]
+ ldr r2, [r3, #0x14]
+ str r2, [r1, #0x14]
+_020B3AFC:
+ bl NNS_G2dSetRndCoreCurrentMtx3D
+ ldr r0, _020B3B88 ; =currenVramTransferHandle_
+ ldr r1, [r0, #0x0]
+ mvn r0, #0x0
+ cmp r1, r0
+ movne r0, r6
+ moveq r0, r7
+ cmp r0, #0x0
+ beq _020B3B2C
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCellVramTransfer
+ b _020B3B34
+_020B3B2C:
+ mov r0, r10
+ bl NNS_G2dRndCoreDrawCell
+_020B3B34:
+ ldr r0, [r5, #0x0]
+ str r7, [r0, #0x74]
+ bl NNS_G2dRndCoreEndRendering
+_020B3B40:
+ ldr r9, [r9, #0x30]
+ cmp r9, #0x0
+ bne _020B3908
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B3B54: .word pCurrentInstance_
+_020B3B58: .word bDonotUseSRTransform
+_020B3B5C: .word firstSRTransformedMtxIdx_
+_020B3B60: .word 0x0000FFFE
+_020B3B64: .word mcRenderState_
+_020B3B68: .word mcRenderState_ + 0x4
+_020B3B6C: .word stackPos_
+_020B3B70: .word mtxStateStack_
+_020B3B74: .word mtxCacheBuffer_
+_020B3B78: .word mtxStack_
+_020B3B7C: .word mtxStack_ + 0x10
+_020B3B80: .word mtxStack_ + 0x14
+_020B3B84: .word mtxI_
+_020B3B88: .word currenVramTransferHandle_
+_020B3B8C: .word fxZStack_
+ arm_func_end DrawCellImpl_
+
+ arm_func_start RndCoreCBFuncAfterOBJ_
+RndCoreCBFuncAfterOBJ_: ; 0x020B3B90
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ ldr r0, _020B3C24 ; =pCurrentInstance_
+ mov r12, r1
+ ldr r0, [r0, #0x0]
+ mov r3, r2
+ ldr r1, [r0, #0x74]
+ ldr r2, [r1, #0x44]
+ cmp r2, #0x0
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r2, _020B3C28 ; =bDonotUseSRTransform
+ ldr r2, [r2, #0x0]
+ cmp r2, #0x0
+ ldreq r2, _020B3C2C ; =stackPos_
+ ldreq r4, _020B3C30 ; =mtxStack_
+ ldreq lr, [r2, #0x0]
+ moveq r2, #0x18
+ mlaeq r6, lr, r2, r4
+ beq _020B3C0C
+ ldr lr, _020B3C2C ; =stackPos_
+ mov r2, #0x18
+ ldr lr, [lr, #0x0]
+ ldr r4, _020B3C34 ; =mtxStack_ + 0x10
+ mul r5, lr, r2
+ ldr r2, _020B3C38 ; =mtxStack_ + 0x14
+ ldr r4, [r4, r5]
+ ldr r6, _020B3C3C ; =mtxI_
+ ldr r2, [r2, r5]
+ str r4, [r6, #0x10]
+ str r2, [r6, #0x14]
+_020B3C0C:
+ str r6, [sp, #0x0]
+ ldr lr, [r1, #0x44]
+ mov r2, r12
+ blx lr
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B3C24: .word pCurrentInstance_
+_020B3C28: .word bDonotUseSRTransform
+_020B3C2C: .word stackPos_
+_020B3C30: .word mtxStack_
+_020B3C34: .word mtxStack_ + 0x10
+_020B3C38: .word mtxStack_ + 0x14
+_020B3C3C: .word mtxI_
+ arm_func_end RndCoreCBFuncAfterOBJ_
+
+ arm_func_start RndCoreCBFuncBeforeOBJ_
+RndCoreCBFuncBeforeOBJ_: ; 0x020B3C40
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ ldr r3, _020B3E2C ; =pCurrentInstance_
+ add r4, r0, #0x38
+ ldr r0, [r3, #0x0]
+ mov r6, r1
+ mov r5, r2
+ bl NNS_G2dGetRendererPaletteTbl
+ cmp r0, #0x0
+ beq _020B3C90
+ ldrh r1, [r4, #0x4]
+ and r1, r1, #0xf000
+ mov r1, r1, lsl #0x4
+ mov r1, r1, lsr #0x10
+ bl NNS_G2dGetPaletteTableValue
+ ldr r1, [r4, #0x4]
+ and r0, r0, #0xf
+ bic r1, r1, #0xf000
+ orr r0, r1, r0, lsl #0xc
+ str r0, [r4, #0x4]
+_020B3C90:
+ ldr r0, _020B3E2C ; =pCurrentInstance_
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x84]
+ cmp r0, #0x0
+ beq _020B3DA4
+ ldr r0, [r1, #0x84]
+ ands r0, r0, #0x1
+ beq _020B3CC8
+ ldrh r0, [r1, #0x88]
+ ldr r1, [r4, #0x4]
+ bic r1, r1, #0xc00
+ and r0, r0, #0x3
+ orr r0, r1, r0, lsl #0xa
+ str r0, [r4, #0x4]
+_020B3CC8:
+ ldr r0, _020B3E2C ; =pCurrentInstance_
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x84]
+ ands r0, r0, #0x2
+ beq _020B3CF4
+ ldrh r0, [r1, #0x8a]
+ ldr r1, [r4, #0x4]
+ bic r1, r1, #0xf000
+ and r0, r0, #0xf
+ orr r0, r1, r0, lsl #0xc
+ str r0, [r4, #0x4]
+_020B3CF4:
+ ldr r0, _020B3E2C ; =pCurrentInstance_
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x84]
+ ands r0, r0, #0x10
+ beq _020B3D2C
+ ldr r2, [r4, #0x4]
+ ldrh r0, [r1, #0x94]
+ mov r1, r2, lsl #0x10
+ bic r2, r2, #0xf000
+ add r0, r0, r1, lsr #0x1c
+ and r0, r0, #0xf
+ and r0, r0, #0xf
+ orr r0, r2, r0, lsl #0xc
+ str r0, [r4, #0x4]
+_020B3D2C:
+ ldr r0, _020B3E2C ; =pCurrentInstance_
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x84]
+ ands r0, r0, #0x4
+ beq _020B3D60
+ ldr r0, [r1, #0x90]
+ cmp r0, #0x0
+ ldrne r0, [r4, #0x0]
+ orrne r0, r0, #0x1000
+ strne r0, [r4, #0x0]
+ ldreq r0, [r4, #0x0]
+ biceq r0, r0, #0x1000
+ streq r0, [r4, #0x0]
+_020B3D60:
+ ldr r0, _020B3E2C ; =pCurrentInstance_
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x84]
+ ands r0, r0, #0x8
+ beq _020B3DA4
+ ldr r0, [r4, #0x0]
+ ldrh r2, [r4, #0x4]
+ ldr r1, [r1, #0x8c]
+ bic r0, r0, #0xc00
+ orr r0, r0, r1, lsl #0xa
+ str r0, [r4, #0x0]
+ ldrh r0, [r4, #0x4]
+ and r1, r2, #0xf000
+ mov r1, r1, asr #0xc
+ bic r0, r0, #0xf000
+ orr r0, r0, r1, lsl #0xc
+ strh r0, [r4, #0x4]
+_020B3DA4:
+ ldr r0, _020B3E2C ; =pCurrentInstance_
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x74]
+ ldr r2, [r1, #0x40]
+ cmp r2, #0x0
+ addeq sp, sp, #0x8
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r2, _020B3E30 ; =bDonotUseSRTransform
+ ldr r2, [r2, #0x0]
+ cmp r2, #0x0
+ ldreq r2, _020B3E34 ; =stackPos_
+ ldreq r4, _020B3E38 ; =mtxStack_
+ ldreq r3, [r2, #0x0]
+ moveq r2, #0x18
+ mlaeq r4, r3, r2, r4
+ beq _020B3E10
+ ldr r3, _020B3E34 ; =stackPos_
+ mov r2, #0x18
+ ldr r4, [r3, #0x0]
+ ldr r3, _020B3E3C ; =mtxStack_ + 0x10
+ mul r12, r4, r2
+ ldr r2, _020B3E40 ; =mtxStack_ + 0x14
+ ldr r3, [r3, r12]
+ ldr r4, _020B3E44 ; =mtxI_
+ ldr r2, [r2, r12]
+ str r3, [r4, #0x10]
+ str r2, [r4, #0x14]
+_020B3E10:
+ str r4, [sp, #0x0]
+ ldr r4, [r1, #0x40]
+ mov r2, r6
+ mov r3, r5
+ blx r4
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B3E2C: .word pCurrentInstance_
+_020B3E30: .word bDonotUseSRTransform
+_020B3E34: .word stackPos_
+_020B3E38: .word mtxStack_
+_020B3E3C: .word mtxStack_ + 0x10
+_020B3E40: .word mtxStack_ + 0x14
+_020B3E44: .word mtxI_
+ arm_func_end RndCoreCBFuncBeforeOBJ_
+
+ arm_func_start RndCoreCBFuncAfterCell_
+RndCoreCBFuncAfterCell_: ; 0x020B3E48
+ stmdb sp!, {r4,lr}
+ ldr r0, _020B3EC4 ; =pCurrentInstance_
+ mov r2, r1
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x74]
+ ldr r3, [r1, #0x3c]
+ cmp r3, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r3, _020B3EC8 ; =bDonotUseSRTransform
+ ldr r3, [r3, #0x0]
+ cmp r3, #0x0
+ ldreq r3, _020B3ECC ; =stackPos_
+ ldreq lr, _020B3ED0 ; =mtxStack_
+ ldreq r12, [r3, #0x0]
+ moveq r3, #0x18
+ mlaeq r3, r12, r3, lr
+ beq _020B3EB8
+ ldr ip, _020B3ECC ; =stackPos_
+ mov r3, #0x18
+ ldr r12, [r12, #0x0]
+ ldr lr, _020B3ED4 ; =mtxStack_ + 0x10
+ mul r4, r12, r3
+ ldr ip, _020B3ED8 ; =mtxStack_ + 0x14
+ ldr lr, [lr, r4]
+ ldr r3, _020B3EDC ; =mtxI_
+ ldr r12, [r12, r4]
+ str lr, [r3, #0x10]
+ str r12, [r3, #0x14]
+_020B3EB8:
+ ldr r12, [r1, #0x3c]
+ blx r12
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B3EC4: .word pCurrentInstance_
+_020B3EC8: .word bDonotUseSRTransform
+_020B3ECC: .word stackPos_
+_020B3ED0: .word mtxStack_
+_020B3ED4: .word mtxStack_ + 0x10
+_020B3ED8: .word mtxStack_ + 0x14
+_020B3EDC: .word mtxI_
+ arm_func_end RndCoreCBFuncAfterCell_
+
+ arm_func_start RndCoreCBFuncBeforeCell_
+RndCoreCBFuncBeforeCell_: ; 0x020B3EE0
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020B3FF4 ; =pCurrentInstance_
+ mov r6, r0
+ ldr r0, [r2, #0x0]
+ mov r5, r1
+ ldr r4, [r0, #0x74]
+ ldr r0, [r4, #0x34]
+ cmp r0, #0x0
+ beq _020B3F7C
+ ldr r0, _020B3FF8 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r0, _020B3FFC ; =stackPos_
+ ldreq r1, _020B4000 ; =mtxStack_
+ ldreq r2, [r0, #0x0]
+ moveq r0, #0x18
+ mlaeq r1, r2, r0, r1
+ beq _020B3F54
+ ldr r1, _020B3FFC ; =stackPos_
+ mov r0, #0x18
+ ldr r2, [r1, #0x0]
+ ldr r1, _020B4004 ; =mtxStack_ + 0x10
+ mul r3, r2, r0
+ ldr r0, _020B4008 ; =mtxStack_ + 0x14
+ ldr r2, [r1, r3]
+ ldr r1, _020B400C ; =mtxI_
+ ldr r0, [r0, r3]
+ str r2, [r1, #0x10]
+ str r0, [r1, #0x14]
+_020B3F54:
+ ldr r3, [r4, #0x34]
+ mov r0, r5
+ mov r2, r4
+ blx r3
+ cmp r0, #0x0
+ moveq r0, #0x0
+ streq r0, [r6, #0x30]
+ ldmeqia sp!, {r4-r6,pc}
+ mov r0, #0x1
+ str r0, [r6, #0x30]
+_020B3F7C:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r0, _020B3FF8 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldreq r0, _020B3FFC ; =stackPos_
+ ldreq r2, _020B4000 ; =mtxStack_
+ ldreq r1, [r0, #0x0]
+ moveq r0, #0x18
+ mlaeq r3, r1, r0, r2
+ beq _020B3FD8
+ ldr r1, _020B3FFC ; =stackPos_
+ mov r0, #0x18
+ ldr r2, [r1, #0x0]
+ ldr r1, _020B4004 ; =mtxStack_ + 0x10
+ mul r6, r2, r0
+ ldr r0, _020B4008 ; =mtxStack_ + 0x14
+ ldr r1, [r1, r6]
+ ldr r3, _020B400C ; =mtxI_
+ ldr r0, [r0, r6]
+ str r1, [r3, #0x10]
+ str r0, [r3, #0x14]
+_020B3FD8:
+ ldr r0, _020B3FF4 ; =pCurrentInstance_
+ ldr r6, [r4, #0x38]
+ ldr r0, [r0, #0x0]
+ mov r1, r4
+ mov r2, r5
+ blx r6
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B3FF4: .word pCurrentInstance_
+_020B3FF8: .word bDonotUseSRTransform
+_020B3FFC: .word stackPos_
+_020B4000: .word mtxStack_
+_020B4004: .word mtxStack_ + 0x10
+_020B4008: .word mtxStack_ + 0x14
+_020B400C: .word mtxI_
+ arm_func_end RndCoreCBFuncBeforeCell_
+
+ arm_func_start NNSi_G2dMCMStoreCurrentMtxToMtxCache
+NNSi_G2dMCMStoreCurrentMtxToMtxCache: ; 0x020B4010
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020B4154 ; =stackPos_
+ ldr r1, _020B4158 ; =mtxStateStack_
+ ldr r0, [r0, #0x0]
+ mov r2, #0x1
+ mov r0, r0, lsl #0x10
+ add r3, r1, r0, lsr #0xd
+ ldrh r0, [r3, #0x4]
+ cmp r0, #0x1
+ beq _020B4044
+ cmp r0, #0x2
+ movne r2, #0x0
+_020B4044:
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r0, _020B415C ; =currentMtxCachePos_
+ mov r2, #0x10
+ ldrh r4, [r0, #0x0]
+ cmp r4, #0x1f
+ addcc r1, r4, #0x1
+ strcch r1, [r0, #0x0]
+ ldr r0, _020B4160 ; =mtxCacheBuffer_
+ ldrh r5, [r3, #0x2]
+ add r0, r0, r4, lsl #0x5
+ add r1, r0, #0x10
+ mvn r0, #0x0
+ strh r4, [r3, #0x0]
+ bl MIi_CpuClearFast
+ ldr r0, _020B4154 ; =stackPos_
+ ldr r1, _020B4164 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ ldr r2, [r1, #0x0]
+ mov r1, r0, lsl #0x10
+ cmp r2, #0x0
+ ldr r3, _020B4158 ; =mtxStateStack_
+ mov r1, r1, lsr #0xd
+ ldrh r1, [r3, r1]
+ ldr r3, _020B4160 ; =mtxCacheBuffer_
+ moveq r2, #0x18
+ add r1, r3, r1, lsl #0x5
+ ldreq r3, _020B4168 ; =mtxStackFor2DHW_
+ mlaeq r12, r0, r2, r3
+ beq _020B40E4
+ mov r2, #0x18
+ mul r3, r0, r2
+ ldr r2, _020B416C ; =mtxStack_ + 0x10
+ ldr r0, _020B4170 ; =mtxStack_ + 0x14
+ ldr r2, [r2, r3]
+ ldr ip, _020B4174 ; =mtxI_
+ ldr r0, [r0, r3]
+ str r2, [r12, #0x10]
+ str r0, [r12, #0x14]
+_020B40E4:
+ ldr r2, [r12, #0x0]
+ ldr r0, _020B4154 ; =stackPos_
+ str r2, [r1, #0x0]
+ ldr r2, [r12, #0x4]
+ str r2, [r1, #0x4]
+ ldr r2, [r12, #0x8]
+ str r2, [r1, #0x8]
+ ldr r2, [r12, #0xc]
+ str r2, [r1, #0xc]
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x10
+ movs lr, r0, lsr #0x10
+ addmi sp, sp, #0x4
+ ldmmiia sp!, {r4-r5,pc}
+ ldr r3, _020B4158 ; =mtxStateStack_
+ mov r0, #0x3
+_020B4124:
+ add r2, r3, lr, lsl #0x3
+ ldrh r1, [r2, #0x2]
+ mov r12, lr, lsl #0x3
+ cmp r5, r1
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,pc}
+ strh r0, [r2, #0x4]
+ strh r4, [r3, r12]
+ subs lr, lr, #0x1
+ bpl _020B4124
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B4154: .word stackPos_
+_020B4158: .word mtxStateStack_
+_020B415C: .word currentMtxCachePos_
+_020B4160: .word mtxCacheBuffer_
+_020B4164: .word bDonotUseSRTransform
+_020B4168: .word mtxStackFor2DHW_
+_020B416C: .word mtxStack_ + 0x10
+_020B4170: .word mtxStack_ + 0x14
+_020B4174: .word mtxI_
+ arm_func_end NNSi_G2dMCMStoreCurrentMtxToMtxCache
+
+ arm_func_start NNSi_G2dIdentity
+NNSi_G2dIdentity: ; 0x020B4178
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020B4220 ; =bDonotUseSRTransform
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020B41B8
+ ldr r1, _020B4224 ; =stackPos_
+ mov r0, #0x18
+ ldr r12, [r1, #0x0]
+ ldr r1, _020B4228 ; =mtxStack_ + 0x10
+ mul r3, r12, r0
+ mov r2, #0x0
+ ldr r0, _020B422C ; =mtxStack_ + 0x14
+ str r2, [r1, r3]
+ str r2, [r0, r3]
+ b _020B420C
+_020B41B8:
+ ldr r0, _020B4224 ; =stackPos_
+ mov lr, #0x18
+ ldr r1, [r0, #0x0]
+ ldr r4, _020B4230 ; =mtxStack_
+ mul r3, r1, lr
+ mov r2, #0x1000
+ str r2, [r4, r3]
+ add r5, r4, r3
+ mov r1, #0x0
+ str r1, [r5, #0x4]
+ str r1, [r5, #0x8]
+ str r2, [r5, #0xc]
+ str r1, [r5, #0x10]
+ str r1, [r5, #0x14]
+ ldr r12, [r0, #0x0]
+ ldr r4, _020B4234 ; =mtxStackFor2DHW_
+ ldmia r5!, {r0-r3}
+ mla lr, r12, lr, r4
+ stmia lr!, {r0-r3}
+ ldmia r5, {r0-r1}
+ stmia lr, {r0-r1}
+_020B420C:
+ ldr r0, _020B4238 ; =fxZStack_
+ mov r1, #0x0
+ str r1, [r0, r12, lsl #0x2]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B4220: .word bDonotUseSRTransform
+_020B4224: .word stackPos_
+_020B4228: .word mtxStack_ + 0x10
+_020B422C: .word mtxStack_ + 0x14
+_020B4230: .word mtxStack_
+_020B4234: .word mtxStackFor2DHW_
+_020B4238: .word fxZStack_
+ arm_func_end NNSi_G2dIdentity
diff --git a/arm9/asm/NNS_G2D_g2d_renderercor.s b/arm9/asm/NNS_G2D_g2d_renderercor.s
new file mode 100644
index 00000000..bf415c1c
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_renderercor.s
@@ -0,0 +1,1095 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global mtxIdentity_
+mtxIdentity_: ; 0x020FF958
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ ; static const in function
+
+ .section .bss
+
+ .global pTheInstance_
+pTheInstance_: ; 0x021CED14
+ .space 0x4
+
+ .section .text
+
+ arm_func_start NNS_G2dRndCoreDrawCellVramTransfer
+NNS_G2dRndCoreDrawCellVramTransfer: ; 0x020B4BF4
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020B4CD8 ; =pTheInstance_
+ mov r6, r0
+ ldr r3, [r2, #0x0]
+ mov r4, r1
+ ldr r5, [r3, #0x0]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ mov r0, #0x1
+ str r0, [r3, #0x30]
+ ldr r3, [r5, #0x18]
+ cmp r3, #0x0
+ beq _020B4C38
+ ldr r0, [r2, #0x0]
+ mov r1, r6
+ blx r3
+_020B4C38:
+ ldr r0, _020B4CD8 ; =pTheInstance_
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x30]
+ cmp r0, #0x0
+ beq _020B4CB8
+ mvn r0, #0x0
+ cmp r4, r0
+ beq _020B4C7C
+ mov r0, r4
+ ldr r4, [r5, #0x14]
+ bl NNSi_G2dGetCellTransferState
+ mov r3, #0x1
+ mvn r1, r3, lsl r4
+ ldr r2, [r0, #0x20]
+ and r1, r2, r1
+ orr r1, r1, r3, lsl r4
+ str r1, [r0, #0x20]
+_020B4C7C:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020B4CB8
+ ; Jump table
+ b _020B4C9C ; case 0
+ b _020B4CAC ; case 1
+ b _020B4CAC ; case 2
+ b _020B4CB8 ; case 3
+_020B4C9C:
+ mov r0, r5
+ mov r1, r6
+ bl DrawCellToSurface3D_
+ b _020B4CB8
+_020B4CAC:
+ mov r0, r5
+ mov r1, r6
+ bl DrawCellToSurface2D_
+_020B4CB8:
+ ldr r2, [r5, #0x1c]
+ cmp r2, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r0, _020B4CD8 ; =pTheInstance_
+ mov r1, r6
+ ldr r0, [r0, #0x0]
+ blx r2
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B4CD8: .word pTheInstance_
+ arm_func_end NNS_G2dRndCoreDrawCellVramTransfer
+
+ arm_func_start NNS_G2dRndCoreDrawCell
+NNS_G2dRndCoreDrawCell: ; 0x020B4CDC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r1, _020B4D9C ; =pTheInstance_
+ mov r5, r0
+ ldr r2, [r1, #0x0]
+ ldr r4, [r2, #0x0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ mov r0, #0x1
+ str r0, [r2, #0x30]
+ ldr r2, [r4, #0x18]
+ cmp r2, #0x0
+ beq _020B4D24
+ ldr r0, [r1, #0x0]
+ mov r1, r5
+ blx r2
+_020B4D24:
+ ldr r0, _020B4D9C ; =pTheInstance_
+ ldr r0, [r0, #0x0]
+ ldr r0, [r0, #0x30]
+ cmp r0, #0x0
+ beq _020B4D74
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020B4D74
+ ; Jump table
+ b _020B4D58 ; case 0
+ b _020B4D68 ; case 1
+ b _020B4D68 ; case 2
+ b _020B4D74 ; case 3
+_020B4D58:
+ mov r0, r4
+ mov r1, r5
+ bl DrawCellToSurface3D_
+ b _020B4D74
+_020B4D68:
+ mov r0, r4
+ mov r1, r5
+ bl DrawCellToSurface2D_
+_020B4D74:
+ ldr r2, [r4, #0x1c]
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r0, _020B4D9C ; =pTheInstance_
+ mov r1, r5
+ ldr r0, [r0, #0x0]
+ blx r2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B4D9C: .word pTheInstance_
+ arm_func_end NNS_G2dRndCoreDrawCell
+
+ arm_func_start NNS_G2dRndCoreEndRendering
+NNS_G2dRndCoreEndRendering: ; 0x020B4DA0
+ ldr r0, _020B4E00 ; =pTheInstance_
+ ldr r3, [r0, #0x0]
+ ldr r1, [r3, #0x0]
+ ldr r1, [r1, #0x14]
+ cmp r1, #0x0
+ bne _020B4DD8
+ ldr r2, _020B4E04 ; =0x04000440
+ mov r1, #0x0
+ ldr r0, _020B4E08 ; =0x04000448
+ str r1, [r2, #0x0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ str r1, [r2, #0x0]
+ b _020B4DF0
+_020B4DD8:
+ mov r2, #0x0
+ str r2, [r3, #0x10]
+ ldr r1, [r0, #0x0]
+ str r2, [r1, #0x2c]
+ ldr r0, [r0, #0x0]
+ str r2, [r0, #0x28]
+_020B4DF0:
+ ldr r0, _020B4E00 ; =pTheInstance_
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ .balign 4
+_020B4E00: .word pTheInstance_
+_020B4E04: .word 0x04000440
+_020B4E08: .word 0x04000448
+ arm_func_end NNS_G2dRndCoreEndRendering
+
+ arm_func_start NNS_G2dRndCoreBeginRendering
+NNS_G2dRndCoreBeginRendering: ; 0x020B4E0C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r2, _020B4F28 ; =pTheInstance_
+ mov r4, r0
+ str r4, [r2, #0x0]
+ ldr r0, [r4, #0x0]
+ ldr r5, [r0, #0x14]
+ cmp r5, #0x0
+ bne _020B4ED8
+ ldr lr, _020B4F2C ; =0x04000440
+ mov r1, #0x0
+ ldr r0, _020B4F30 ; =0x04000444
+ str r1, [lr, #0x0]
+ str r1, [r0, #0x0]
+ ldr r12, [r4, #0x0]
+ ldr r0, _020B4F34 ; =0x04000470
+ ldr r3, [r12, #0x0]
+ ldr r12, [r12, #0x4]
+ rsb r3, r3, #0x0
+ str r3, [r0, #0x0]
+ rsb r3, r12, #0x0
+ str r3, [r0, #0x0]
+ str r1, [r0, #0x0]
+ mov r0, #0x1
+ str r0, [lr, #0x0]
+ ldr r0, [r2, #0x0]
+ ldr r5, [r0, #0x8]
+ mov r0, r5
+ bl NNS_G2dIsImageReadyToUse
+ cmp r0, #0x0
+ moveq r0, #0x0
+ beq _020B4E98
+ mov r0, r5
+ mov r1, #0x0
+ bl NNS_G2dGetImageLocation
+_020B4E98:
+ ldr r1, _020B4F28 ; =pTheInstance_
+ str r0, [r4, #0x14]
+ ldr r0, [r1, #0x0]
+ mov r1, #0x0
+ ldr r5, [r0, #0xc]
+ mov r0, r5
+ bl NNS_G2dIsImagePaletteReadyToUse
+ cmp r0, #0x0
+ moveq r0, #0x0
+ beq _020B4ECC
+ mov r0, r5
+ mov r1, #0x0
+ bl NNS_G2dGetImagePaletteLocation
+_020B4ECC:
+ add sp, sp, #0x4
+ str r0, [r4, #0x18]
+ ldmia sp!, {r4-r5,pc}
+_020B4ED8:
+ ldr r4, [r4, #0x8]
+ mov r1, r5
+ mov r0, r4
+ bl NNS_G2dIsImageReadyToUse
+ cmp r0, #0x0
+ moveq r1, #0x0
+ beq _020B4F14
+ mov r0, r4
+ mov r1, r5
+ bl NNS_G2dGetImageLocation
+ ldr r1, [r4, #0x20]
+ and r1, r1, #0x700000
+ mov r1, r1, asr #0x14
+ add r1, r1, #0x5
+ mov r1, r0, lsr r1
+_020B4F14:
+ ldr r0, _020B4F28 ; =pTheInstance_
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B4F28: .word pTheInstance_
+_020B4F2C: .word 0x04000440
+_020B4F30: .word 0x04000444
+_020B4F34: .word 0x04000470
+ arm_func_end NNS_G2dRndCoreBeginRendering
+
+ arm_func_start NNS_G2dSetRndCoreFlipMode
+NNS_G2dSetRndCoreFlipMode: ; 0x020B4F38
+ cmp r1, #0x0
+ ldrne r1, [r0, #0x24]
+ orrne r1, r1, #0x1
+ strne r1, [r0, #0x24]
+ ldreq r1, [r0, #0x24]
+ biceq r1, r1, #0x1
+ streq r1, [r0, #0x24]
+ cmp r2, #0x0
+ ldrne r1, [r0, #0x24]
+ orrne r1, r1, #0x2
+ strne r1, [r0, #0x24]
+ ldreq r1, [r0, #0x24]
+ biceq r1, r1, #0x2
+ streq r1, [r0, #0x24]
+ bx lr
+ arm_func_end NNS_G2dSetRndCoreFlipMode
+
+ arm_func_start NNS_G2dIsRndCoreFlipV
+NNS_G2dIsRndCoreFlipV: ; 0x020B4F74
+ ldr r0, [r0, #0x24]
+ ands r0, r0, #0x2
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dIsRndCoreFlipV
+
+ arm_func_start NNS_G2dIsRndCoreFlipH
+NNS_G2dIsRndCoreFlipH: ; 0x020B4F88
+ ldr r0, [r0, #0x24]
+ ands r0, r0, #0x1
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+ arm_func_end NNS_G2dIsRndCoreFlipH
+
+ arm_func_start NNS_G2dSetRndCoreSurface
+NNS_G2dSetRndCoreSurface: ; 0x020B4F9C
+ str r1, [r0, #0x0]
+ bx lr
+ arm_func_end NNS_G2dSetRndCoreSurface
+
+ arm_func_start NNS_G2dSetRndCore3DSoftSpriteZvalue
+NNS_G2dSetRndCore3DSoftSpriteZvalue: ; 0x020B4FA4
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end NNS_G2dSetRndCore3DSoftSpriteZvalue
+
+ arm_func_start NNS_G2dSetRndCoreCurrentMtx2D
+NNS_G2dSetRndCoreCurrentMtx2D: ; 0x020B4FAC
+ ldr r2, _020B4FC0 ; =pTheInstance_
+ ldr r2, [r2, #0x0]
+ str r0, [r2, #0x2c]
+ str r1, [r2, #0x28]
+ bx lr
+ .balign 4
+_020B4FC0: .word pTheInstance_
+ arm_func_end NNS_G2dSetRndCoreCurrentMtx2D
+
+ arm_func_start NNS_G2dSetRndCoreCurrentMtx3D
+NNS_G2dSetRndCoreCurrentMtx3D: ; 0x020B4FC4
+ ldr r1, _020B5028 ; =pTheInstance_
+ mov r3, #0x0
+ ldr r12, [r1, #0x0]
+ mov r1, #0x1000
+ str r0, [r12, #0x2c]
+ ldr r2, [r0, #0x0]
+ str r2, [r12, #0x40]
+ ldr r2, [r0, #0x4]
+ str r2, [r12, #0x44]
+ str r3, [r12, #0x48]
+ ldr r2, [r0, #0x8]
+ str r2, [r12, #0x4c]
+ ldr r2, [r0, #0xc]
+ str r2, [r12, #0x50]
+ str r3, [r12, #0x54]
+ str r3, [r12, #0x58]
+ str r3, [r12, #0x5c]
+ str r1, [r12, #0x60]
+ ldr r1, [r0, #0x10]
+ str r1, [r12, #0x64]
+ ldr r0, [r0, #0x14]
+ str r0, [r12, #0x68]
+ ldr r0, [r12, #0x34]
+ str r0, [r12, #0x6c]
+ bx lr
+ .balign 4
+_020B5028: .word pTheInstance_
+ arm_func_end NNS_G2dSetRndCoreCurrentMtx3D
+
+ arm_func_start NNS_G2dSetRndCoreAffineOverwriteMode
+NNS_G2dSetRndCoreAffineOverwriteMode: ; 0x020B502C
+ str r1, [r0, #0x4]
+ bx lr
+ arm_func_end NNS_G2dSetRndCoreAffineOverwriteMode
+
+ arm_func_start NNS_G2dSetRndCoreOamRegisterFunc
+NNS_G2dSetRndCoreOamRegisterFunc: ; 0x020B5034
+ str r1, [r0, #0x1c]
+ str r2, [r0, #0x20]
+ bx lr
+ arm_func_end NNS_G2dSetRndCoreOamRegisterFunc
+
+ arm_func_start NNS_G2dSetRndCoreImageProxy
+NNS_G2dSetRndCoreImageProxy: ; 0x020B5040
+ str r1, [r0, #0x8]
+ str r2, [r0, #0xc]
+ bx lr
+ arm_func_end NNS_G2dSetRndCoreImageProxy
+
+ arm_func_start NNS_G2dInitRndCore
+NNS_G2dInitRndCore: ; 0x020B504C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r1, r4
+ mov r0, #0x0
+ mov r2, #0x70
+ bl MIi_CpuClear16
+ mov r1, #0x0
+ str r1, [r4, #0x0]
+ mov r0, #0x2
+ str r0, [r4, #0x4]
+ str r1, [r4, #0x8]
+ str r1, [r4, #0xc]
+ str r1, [r4, #0x24]
+ mov r0, #0x1
+ str r0, [r4, #0x30]
+ str r1, [r4, #0x28]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G2dInitRndCore
+
+ arm_func_start DrawCellToSurface3D_
+DrawCellToSurface3D_: ; 0x020B5090
+ stmdb sp!, {r4-r10,lr}
+ ldr r5, _020B5158 ; =pTheInstance_
+ mov r9, r1
+ ldrh r1, [r9, #0x0]
+ ldr r2, [r5, #0x0]
+ mov r10, r0
+ add r7, r2, #0x38
+ mov r8, #0x0
+ cmp r1, #0x0
+ ldmlsia sp!, {r4-r10,pc}
+ mov r6, #0x1
+ mov r4, #0x6
+_020B50C0:
+ mul r1, r8, r4
+ ldr r0, [r5, #0x0]
+ str r6, [r0, #0x30]
+ ldr r2, [r9, #0x4]
+ ldrh r0, [r2, r1]
+ add r1, r2, r1
+ strh r0, [r7, #0x0]
+ ldrh r0, [r1, #0x2]
+ strh r0, [r7, #0x2]
+ ldrh r0, [r1, #0x4]
+ strh r0, [r7, #0x4]
+ ldr r3, [r10, #0x20]
+ cmp r3, #0x0
+ beq _020B5108
+ ldr r0, [r5, #0x0]
+ mov r1, r9
+ mov r2, r8
+ blx r3
+_020B5108:
+ ldr r0, [r5, #0x0]
+ ldr r0, [r0, #0x30]
+ cmp r0, #0x0
+ beq _020B5120
+ mov r0, r7
+ bl DrawOamToSurface3D_
+_020B5120:
+ ldr r3, [r10, #0x24]
+ cmp r3, #0x0
+ beq _020B513C
+ ldr r0, [r5, #0x0]
+ mov r1, r9
+ mov r2, r8
+ blx r3
+_020B513C:
+ add r0, r8, #0x1
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r9, #0x0]
+ mov r8, r0, lsr #0x10
+ cmp r8, r1
+ blo _020B50C0
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020B5158: .word pTheInstance_
+ arm_func_end DrawCellToSurface3D_
+
+ arm_func_start DrawOamToSurface3D_
+DrawOamToSurface3D_: ; 0x020B515C
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldr r1, _020B53A4 ; =pTheInstance_
+ mov r7, r0
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x40
+ bl G3_LoadMtx43
+ ldr r0, _020B53A4 ; =pTheInstance_
+ ldr r0, [r0, #0x0]
+ ldr r1, [r0, #0x24]
+ cmp r1, #0x0
+ beq _020B533C
+ ldr r2, [r7, #0x0]
+ ldr r1, _020B53A8 ; =0xC000C000
+ and r4, r2, r1
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ beq _020B51F4
+ ldr r0, [r7, #0x0]
+ and r2, r4, #0xc000
+ mov r0, r0, lsl #0x7
+ mov r3, r0, lsr #0x17
+ and r1, r4, #0xc0000000
+ mov r1, r1, lsr #0x1e
+ ldr r0, _020B53AC ; =NNSi_objSizeWTbl
+ mov r2, r2, asr #0xe
+ mov r1, r1, lsl #0x1
+ add r0, r0, r2, lsl #0x3
+ cmp r3, #0xff
+ ldrh r1, [r1, r0]
+ orrgt r0, r3, #0xff00
+ movgt r0, r0, lsl #0x10
+ movgt r3, r0, asr #0x10
+ add r0, r3, r1
+ rsb r0, r0, #0x0
+ mov r0, r0, lsl #0x10
+ mov r1, r0, lsr #0x10
+ b _020B5218
+_020B51F4:
+ ldr r0, [r7, #0x0]
+ mov r0, r0, lsl #0x7
+ mov r0, r0, lsr #0x17
+ cmp r0, #0xff
+ orrgt r0, r0, #0xff00
+ movgt r0, r0, lsl #0x10
+ movgt r0, r0, asr #0x10
+ mov r0, r0, lsl #0x10
+ mov r1, r0, lsr #0x10
+_020B5218:
+ ldr r0, _020B53A4 ; =pTheInstance_
+ mov r1, r1, lsl #0x10
+ ldr r0, [r0, #0x0]
+ mov r6, r1, asr #0x10
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ beq _020B527C
+ and r1, r4, #0xc000
+ and r0, r4, #0xc0000000
+ ldrb r4, [r7, #0x0]
+ ldr r2, _020B53B0 ; =NNSi_objSizeHTbl
+ mov r0, r0, lsr #0x1e
+ mov r3, r1, asr #0xe
+ mov r1, r0, lsl #0x1
+ add r0, r2, r3, lsl #0x3
+ cmp r4, #0x7f
+ ldrh r1, [r1, r0]
+ orrgt r0, r4, #0xff00
+ movgt r0, r0, lsl #0x10
+ movgt r4, r0, asr #0x10
+ add r0, r4, r1
+ rsb r0, r0, #0x0
+ mov r0, r0, lsl #0x10
+ mov r4, r0, lsr #0x10
+ b _020B5298
+_020B527C:
+ ldrb r0, [r7, #0x0]
+ cmp r0, #0x7f
+ orrgt r0, r0, #0xff00
+ movgt r0, r0, lsl #0x10
+ movgt r0, r0, asr #0x10
+ mov r0, r0, lsl #0x10
+ mov r4, r0, lsr #0x10
+_020B5298:
+ ldr r0, _020B53A4 ; =pTheInstance_
+ ldr r1, [r7, #0x0]
+ ldr r0, [r0, #0x0]
+ mov r5, r1, lsl #0x3
+ bl NNS_G2dIsRndCoreFlipH
+ ldr r2, [r7, #0x0]
+ ldr r1, _020B53A4 ; =pTheInstance_
+ eor r5, r0, r5, lsr #0x1f
+ ldr r0, [r1, #0x0]
+ mov r8, r2, lsl #0x2
+ bl NNS_G2dIsRndCoreFlipV
+ ldr r2, [r7, #0x0]
+ eor r1, r0, r8, lsr #0x1f
+ bic r0, r2, #0x10000000
+ str r0, [r7, #0x0]
+ ldr r2, [r7, #0x0]
+ ldr r3, _020B53A4 ; =pTheInstance_
+ orr r2, r2, r5, lsl #0x1c
+ str r2, [r7, #0x0]
+ ldr r2, [r7, #0x0]
+ mov r0, r6
+ bic r2, r2, #0x20000000
+ str r2, [r7, #0x0]
+ ldr r5, [r7, #0x0]
+ mov r2, r4, lsl #0x10
+ orr r1, r5, r1, lsl #0x1d
+ str r1, [r7, #0x0]
+ ldr r5, [r3, #0x0]
+ mov r1, r2, asr #0x10
+ ldr r4, [r5, #0x8]
+ mov r3, r7
+ add r2, r4, #0xc
+ str r2, [sp, #0x0]
+ ldr r4, [r5, #0x14]
+ mvn r2, #0x0
+ str r4, [sp, #0x4]
+ ldr r4, [r5, #0x18]
+ str r4, [sp, #0x8]
+ bl NNS_G2dDrawOneOam3DDirectWithPosFast
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+_020B533C:
+ ldr r2, _020B53A4 ; =pTheInstance_
+ ldr r0, [r7, #0x0]
+ ldr r5, [r2, #0x0]
+ mov r0, r0, lsl #0x7
+ ldr r4, [r5, #0x8]
+ mov r0, r0, lsr #0x17
+ cmp r0, #0xff
+ orrgt r0, r0, #0xff00
+ movgt r0, r0, lsl #0x10
+ ldrb r1, [r7, #0x0]
+ add r4, r4, #0xc
+ movgt r0, r0, asr #0x10
+ str r4, [sp, #0x0]
+ ldr r4, [r5, #0x14]
+ cmp r1, #0x7f
+ orrgt r1, r1, #0xff00
+ movgt r1, r1, lsl #0x10
+ str r4, [sp, #0x4]
+ ldr r4, [r5, #0x18]
+ movgt r1, r1, asr #0x10
+ mov r3, r7
+ mvn r2, #0x0
+ str r4, [sp, #0x8]
+ bl NNS_G2dDrawOneOam3DDirectWithPosFast
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020B53A4: .word pTheInstance_
+_020B53A8: .word 0xC000C000
+_020B53AC: .word NNSi_objSizeWTbl
+_020B53B0: .word NNSi_objSizeHTbl
+ arm_func_end DrawOamToSurface3D_
+
+ arm_func_start DrawCellToSurface2D_
+DrawCellToSurface2D_: ; 0x020B53B4
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x44
+ ldr r2, _020B57B0 ; =pTheInstance_
+ mov r10, r0
+ ldr r0, [r2, #0x0]
+ mov r11, r1
+ ldr r9, [r0, #0x2c]
+ ldr r1, _020B57B0 ; =pTheInstance_
+ cmp r9, #0x0
+ ldreq sb, _020B57B4 ; =mtxIdentity_
+ ldr r3, [r1, #0x0]
+ ldr r4, [r9, #0x10]
+ str r4, [sp, #0x18]
+ ldr r2, [r9, #0x14]
+ str r2, [sp, #0x1c]
+ ldr r1, [r10, #0x0]
+ sub r1, r4, r1
+ str r1, [sp, #0x18]
+ ldr r1, [r10, #0x4]
+ sub r1, r2, r1
+ str r1, [sp, #0x1c]
+ ldr r2, [r3, #0x24]
+ ldr r1, [r3, #0x10]
+ cmp r2, #0x0
+ str r1, [sp, #0x4]
+ bne _020B5430
+ ldr r1, [r3, #0x28]
+ cmp r1, #0x0
+ movne r1, #0x1
+ strne r1, [sp, #0x0]
+ bne _020B5438
+_020B5430:
+ mov r1, #0x0
+ str r1, [sp, #0x0]
+_020B5438:
+ ldrh r1, [r11, #0x0]
+ add r7, r0, #0x38
+ mov r8, #0x0
+ cmp r1, #0x0
+ addls sp, sp, #0x44
+ ldmlsia sp!, {r4-r11,pc}
+ mov r0, #0x1
+ ldr r4, _020B57B0 ; =pTheInstance_
+ str r8, [sp, #0x14]
+ str r0, [sp, #0xc]
+_020B5460:
+ ldr r2, [r4, #0x0]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x6
+ str r0, [r2, #0x30]
+ mul r0, r8, r1
+ ldr r1, [r11, #0x4]
+ add r2, r1, r0
+ ldrh r0, [r1, r0]
+ strh r0, [r7, #0x0]
+ ldrh r0, [r2, #0x2]
+ strh r0, [r7, #0x2]
+ ldrh r0, [r2, #0x4]
+ strh r0, [r7, #0x4]
+ ldr r3, [r10, #0x20]
+ cmp r3, #0x0
+ beq _020B54B0
+ ldr r0, [r4, #0x0]
+ mov r1, r11
+ mov r2, r8
+ blx r3
+_020B54B0:
+ ldr r0, [r4, #0x0]
+ ldr r0, [r0, #0x30]
+ cmp r0, #0x0
+ beq _020B5790
+ ldr r0, [sp, #0x0]
+ ldr r1, [r7, #0x4]
+ cmp r0, #0x0
+ mov r0, #0x400
+ rsb r0, r0, #0x0
+ and r2, r1, r0
+ ldr r0, [sp, #0x4]
+ mov r1, r1, lsl #0x16
+ add r1, r0, r1, lsr #0x16
+ ldr r0, _020B57B8 ; =0x000003FF
+ and r0, r1, r0
+ orr r0, r2, r0
+ str r0, [r7, #0x4]
+ beq _020B5600
+ ldr r0, [r10, #0x14]
+ ldr lr, [r4, #0x0]
+ sub r1, r0, #0x1
+ ldr r0, [r7, #0x0]
+ ldr r6, [lr, #0x28]
+ mov r2, r0, lsl #0x2
+ mov r2, r2, lsr #0x1f
+ mov r2, r2, lsl #0x1
+ mov r0, r0, lsl #0x3
+ orr r5, r2, r0, lsr #0x1f
+ add r0, r6, r5, lsl #0x2
+ add r0, r0, r1, lsl #0x1
+ ldrh r1, [r0, #0x10]
+ ldr r0, _020B57BC ; =0x0000FFFF
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ bne _020B55CC
+ cmp r5, #0x0
+ bne _020B5558
+ ldr r1, [lr, #0x20]
+ mov r0, r6
+ blx r1
+ str r0, [sp, #0x8]
+ b _020B55B4
+_020B5558:
+ ands r0, r5, #0x1
+ add r12, sp, #0x30
+ ldmia r6, {r0-r3}
+ stmia r12, {r0-r3}
+ beq _020B5584
+ ldr r1, [sp, #0x30]
+ ldr r0, [sp, #0x34]
+ rsb r1, r1, #0x0
+ str r1, [sp, #0x30]
+ rsb r0, r0, #0x0
+ str r0, [sp, #0x34]
+_020B5584:
+ ands r0, r5, #0x2
+ beq _020B55A4
+ ldr r1, [sp, #0x38]
+ ldr r0, [sp, #0x3c]
+ rsb r1, r1, #0x0
+ str r1, [sp, #0x38]
+ rsb r0, r0, #0x0
+ str r0, [sp, #0x3c]
+_020B55A4:
+ ldr r1, [lr, #0x20]
+ add r0, sp, #0x30
+ blx r1
+ str r0, [sp, #0x8]
+_020B55B4:
+ ldr r1, [r10, #0x14]
+ add r0, r6, r5, lsl #0x2
+ sub r1, r1, #0x1
+ add r1, r0, r1, lsl #0x1
+ ldr r0, [sp, #0x8]
+ strh r0, [r1, #0x10]
+_020B55CC:
+ ldr r1, [r9, #0x0]
+ add r0, sp, #0x20
+ str r1, [sp, #0x20]
+ ldr r2, [r9, #0x4]
+ mov r1, r7
+ str r2, [sp, #0x24]
+ ldr r3, [r9, #0x8]
+ add r2, sp, #0x18
+ str r3, [sp, #0x28]
+ ldr r3, [r9, #0xc]
+ str r3, [sp, #0x2c]
+ bl DoAffineTransforme_
+ b _020B5750
+_020B5600:
+ ldr r0, _020B57C0 ; =0x0000FFFE
+ str r0, [sp, #0x8]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r0, #0x24]
+ cmp r1, #0x0
+ beq _020B5714
+ ldr r2, [r7, #0x0]
+ ldr r1, _020B57C4 ; =0xC000C000
+ mov r6, r2, lsl #0x3
+ and r5, r2, r1
+ bl NNS_G2dIsRndCoreFlipH
+ ldr r1, [r7, #0x0]
+ eor r6, r0, r6, lsr #0x1f
+ mov r1, r1, lsl #0x2
+ ldr r0, [r4, #0x0]
+ str r1, [sp, #0x10]
+ bl NNS_G2dIsRndCoreFlipV
+ ldr r1, [sp, #0x10]
+ eor r0, r0, r1, lsr #0x1f
+ ldr r1, [r7, #0x0]
+ bic r1, r1, #0x10000000
+ str r1, [r7, #0x0]
+ ldr r1, [r7, #0x0]
+ orr r1, r1, r6, lsl #0x1c
+ str r1, [r7, #0x0]
+ ldr r1, [r7, #0x0]
+ bic r1, r1, #0x20000000
+ str r1, [r7, #0x0]
+ ldr r1, [r7, #0x0]
+ orr r0, r1, r0, lsl #0x1d
+ str r0, [r7, #0x0]
+ ldr r0, [r4, #0x0]
+ bl NNS_G2dIsRndCoreFlipH
+ cmp r0, #0x0
+ beq _020B56D4
+ and r1, r5, #0xc000
+ mov r2, r1, asr #0xe
+ ldr r1, _020B57C8 ; =NNSi_objSizeWTbl
+ and r3, r5, #0xc0000000
+ mov r3, r3, lsr #0x1e
+ add r2, r1, r2, lsl #0x3
+ mov r3, r3, lsl #0x1
+ ldr r0, [r7, #0x0]
+ ldr r1, _020B57CC ; =0xFE00FFFF
+ ldrh r2, [r3, r2]
+ and r1, r0, r1
+ mov r0, r0, lsl #0x7
+ add r0, r2, r0, lsr #0x17
+ rsb r2, r0, #0x0
+ ldr r0, _020B57D0 ; =0x000001FF
+ and r0, r2, r0
+ orr r0, r1, r0, lsl #0x10
+ str r0, [r7, #0x0]
+_020B56D4:
+ ldr r0, [r4, #0x0]
+ bl NNS_G2dIsRndCoreFlipV
+ cmp r0, #0x0
+ beq _020B5714
+ and r1, r5, #0xc000
+ mov r3, r1, asr #0xe
+ and r1, r5, #0xc0000000
+ mov r1, r1, lsr #0x1e
+ mov r2, r1, lsl #0x1
+ ldr r1, _020B57D4 ; =NNSi_objSizeHTbl
+ ldrb r0, [r7, #0x0]
+ add r1, r1, r3, lsl #0x3
+ ldrh r1, [r2, r1]
+ add r0, r0, r1
+ rsb r0, r0, #0x0
+ strb r0, [r7, #0x0]
+_020B5714:
+ ldr r2, [r7, #0x0]
+ ldr r0, _020B57CC ; =0xFE00FFFF
+ ldr r1, [sp, #0x18]
+ and r0, r2, r0
+ mov r2, r2, lsl #0x7
+ mov r2, r2, lsr #0x17
+ add r2, r2, r1, asr #0xc
+ ldr r1, _020B57D0 ; =0x000001FF
+ and r1, r2, r1
+ orr r0, r0, r1, lsl #0x10
+ str r0, [r7, #0x0]
+ ldrb r1, [r7, #0x0]
+ ldr r0, [sp, #0x1c]
+ add r0, r1, r0, asr #0xc
+ strb r0, [r7, #0x0]
+_020B5750:
+ ldr r3, [r4, #0x0]
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r3, #0x1c]
+ mov r0, r7
+ blx r3
+ cmp r0, #0x1
+ addne sp, sp, #0x44
+ ldmneia sp!, {r4-r11,pc}
+ ldr r3, [r10, #0x24]
+ cmp r3, #0x0
+ beq _020B5790
+ ldr r0, [r4, #0x0]
+ mov r1, r11
+ mov r2, r8
+ blx r3
+_020B5790:
+ add r0, r8, #0x1
+ mov r0, r0, lsl #0x10
+ mov r8, r0, lsr #0x10
+ ldrh r0, [r11, #0x0]
+ cmp r8, r0
+ blo _020B5460
+ add sp, sp, #0x44
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B57B0: .word pTheInstance_
+_020B57B4: .word mtxIdentity_
+_020B57B8: .word 0x000003FF
+_020B57BC: .word 0x0000FFFF
+_020B57C0: .word 0x0000FFFE
+_020B57C4: .word 0xC000C000
+_020B57C8: .word NNSi_objSizeWTbl
+_020B57CC: .word 0xFE00FFFF
+_020B57D0: .word 0x000001FF
+_020B57D4: .word NNSi_objSizeHTbl
+ arm_func_end DrawCellToSurface2D_
+
+ arm_func_start DoAffineTransforme_
+DoAffineTransforme_: ; 0x020B57D8
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldr r4, [r1, #0x0]
+ ldr r3, _020B5A9C ; =0x01FF0000
+ and r3, r4, r3
+ mov r3, r3, lsr #0x10
+ mov r3, r3, lsl #0x10
+ mov r3, r3, asr #0x10
+ cmp r3, #0xff
+ orrgt r3, r3, #0xff00
+ movgt r3, r3, lsl #0x10
+ movgt r3, r3, asr #0x10
+ mov r3, r3, lsl #0xc
+ str r3, [sp, #0x0]
+ ldr r3, [r1, #0x0]
+ and r3, r3, #0xff
+ mov r3, r3, lsl #0x10
+ mov r3, r3, asr #0x10
+ cmp r3, #0x7f
+ orrgt r3, r3, #0xff00
+ movgt r3, r3, lsl #0x10
+ movgt r3, r3, asr #0x10
+ mov r3, r3, lsl #0xc
+ str r3, [sp, #0x4]
+ ldr r5, [r1, #0x0]
+ and r4, r5, #0x300
+ cmp r4, #0x100
+ beq _020B5858
+ cmp r4, #0x300
+ beq _020B5858
+ and r3, r5, #0x30000000
+ orr r4, r4, r3
+_020B5858:
+ cmp r4, #0x300
+ bne _020B58AC
+ ldr r3, _020B5AA0 ; =0xC000C000
+ ldr r4, _020B5AA4 ; =NNSi_objSizeWTbl
+ and r3, r5, r3
+ and r5, r3, #0xc0000000
+ and r3, r3, #0xc000
+ mov r6, r5, lsr #0x1e
+ mov r5, r3, asr #0xe
+ ldr r3, _020B5AA8 ; =NNSi_objSizeHTbl
+ mov r6, r6, lsl #0x1
+ add r4, r4, r5, lsl #0x3
+ add r3, r3, r5, lsl #0x3
+ ldrh r5, [r6, r4]
+ ldr r7, [sp, #0x0]
+ ldrh r3, [r6, r3]
+ ldr r4, [sp, #0x4]
+ add r5, r7, r5, lsl #0xb
+ add r3, r4, r3, lsl #0xb
+ str r5, [sp, #0x0]
+ str r3, [sp, #0x4]
+_020B58AC:
+ ldr r5, [r0, #0x8]
+ ldr r4, [sp, #0x4]
+ add r3, sp, #0x0
+ smull r8, r7, r5, r4
+ cmp r3, r3
+ ldr r6, [r0, #0x0]
+ mov r4, #0x1000
+ addeq r3, sp, #0x8
+ adds r8, r8, r4
+ ldr r5, [sp, #0x0]
+ adc r7, r7, #0x0
+ smlal r8, r7, r6, r5
+ mov r5, r8, lsr #0xc
+ orr r5, r5, r7, lsl #0x14
+ str r5, [r3, #0x0]
+ ldr r7, [r0, #0xc]
+ ldr r6, [sp, #0x4]
+ ldr r5, [r0, #0x4]
+ smull r8, r6, r7, r6
+ adds r7, r8, r4
+ ldr r4, [sp, #0x0]
+ adc r6, r6, #0x0
+ smlal r7, r6, r5, r4
+ mov r5, r7, lsr #0xc
+ add r4, sp, #0x8
+ orr r5, r5, r6, lsl #0x14
+ str r5, [r3, #0x4]
+ cmp r3, r4
+ ldreq r3, [sp, #0xc]
+ ldreq r4, [sp, #0x8]
+ streq r3, [sp, #0x4]
+ ldr r3, _020B5AAC ; =pTheInstance_
+ streq r4, [sp, #0x0]
+ ldr r3, [r3, #0x0]
+ ldr r3, [r3, #0x4]
+ cmp r3, #0x0
+ beq _020B597C
+ cmp r3, #0x2
+ moveq r5, #0x300
+ movne r5, #0x100
+ cmp r5, #0x100
+ ldreq r4, [r1, #0x0]
+ ldreq r3, _020B5AB0 ; =0xC1FFFCFF
+ andeq r3, r4, r3
+ orreq r3, r3, r5
+ streq r3, [r1, #0x0]
+ beq _020B597C
+ ldr r4, [r1, #0x0]
+ ldr r3, _020B5AB0 ; =0xC1FFFCFF
+ and r3, r4, r3
+ orr r3, r3, r5
+ str r3, [r1, #0x0]
+_020B597C:
+ ldr r6, [r1, #0x0]
+ and r5, r6, #0x300
+ cmp r5, #0x100
+ beq _020B599C
+ cmp r5, #0x300
+ beq _020B599C
+ and r3, r6, #0x30000000
+ orr r5, r5, r3
+_020B599C:
+ ldr r3, _020B5AA0 ; =0xC000C000
+ ldr r4, _020B5AA4 ; =NNSi_objSizeWTbl
+ and r3, r6, r3
+ and r6, r3, #0xc0000000
+ and r3, r3, #0xc000
+ mov lr, r3, asr #0xe
+ mov r6, r6, lsr #0x1e
+ mov r3, r6, lsl #0x1
+ add r4, r4, lr, lsl #0x3
+ ldrh r4, [r3, r4]
+ ldr r6, [r0, #0x0]
+ ldr r8, _020B5AA8 ; =NNSi_objSizeHTbl
+ mov r12, r4, asr #0x1
+ mov r4, r12, lsl #0xc
+ rsb r7, r4, #0x0
+ mla r7, r6, r12, r7
+ add lr, r8, lr, lsl #0x3
+ ldrh r3, [r3, lr]
+ ldr r6, [r0, #0x8]
+ ldr lr, [sp, #0x0]
+ mov r3, r3, asr #0x1
+ mla r7, r6, r3, r7
+ add r6, lr, r7
+ str r6, [sp, #0x0]
+ mov lr, r3, lsl #0xc
+ ldr r6, [r0, #0x4]
+ rsb r7, lr, #0x0
+ mla r7, r6, r12, r7
+ ldr r0, [r0, #0xc]
+ ldr r6, [sp, #0x4]
+ mla r3, r0, r3, r7
+ add r0, r6, r3
+ str r0, [sp, #0x4]
+ cmp r5, #0x300
+ moveq r0, #0x1
+ movne r0, #0x0
+ cmp r0, #0x0
+ beq _020B5A4C
+ ldr r3, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ sub r3, r3, r4
+ sub r0, r0, lr
+ str r3, [sp, #0x0]
+ str r0, [sp, #0x4]
+_020B5A4C:
+ ldr r4, [sp, #0x0]
+ ldr r0, [r2, #0x0]
+ ldr r3, [sp, #0x4]
+ add r5, r4, r0
+ str r5, [sp, #0x0]
+ ldr r2, [r2, #0x4]
+ ldr r0, _020B5AB4 ; =0x000001FF
+ add r2, r3, r2
+ str r2, [sp, #0x4]
+ mov r3, r2, asr #0xc
+ ldr r4, [r1, #0x0]
+ ldr r2, _020B5AB8 ; =0xFE00FF00
+ and r3, r3, #0xff
+ and r2, r4, r2
+ and r4, r0, r5, asr #0xc
+ orr r0, r2, r3
+ orr r0, r0, r4, lsl #0x10
+ str r0, [r1, #0x0]
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020B5A9C: .word 0x01FF0000
+_020B5AA0: .word 0xC000C000
+_020B5AA4: .word NNSi_objSizeWTbl
+_020B5AA8: .word NNSi_objSizeHTbl
+_020B5AAC: .word pTheInstance_
+_020B5AB0: .word 0xC1FFFCFF
+_020B5AB4: .word 0x000001FF
+_020B5AB8: .word 0xFE00FF00
+ arm_func_end DoAffineTransforme_
diff --git a/arm9/asm/NNS_G2D_g2d_softsprite.s b/arm9/asm/NNS_G2D_g2d_softsprite.s
new file mode 100644
index 00000000..49cddc88
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_softsprite.s
@@ -0,0 +1,129 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G2dDrawSpriteFast
+NNS_G2dDrawSpriteFast: ; 0x020B0250
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020B02C0 ; =0x04000470
+ mov r0, r0, lsl #0xc
+ str r0, [r5, #0x0]
+ mov r4, r1, lsl #0xc
+ ldr r12, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x1c]
+ str r4, [r5, #0x0]
+ mov r4, r2, lsl #0xc
+ ldr r2, [sp, #0x18]
+ ldr lr, _020B02C4 ; =0x0400046C
+ str r4, [r5, #0x0]
+ mov r4, r3, lsl #0xc
+ ldr r3, [sp, #0x20]
+ str r4, [lr, #0x0]
+ mov r12, r12, lsl #0xc
+ str r12, [lr, #0x0]
+ mov r12, #0x1000
+ mov r0, r0, lsl #0xc
+ mov r1, r1, lsl #0xc
+ mov r2, r2, lsl #0xc
+ mov r3, r3, lsl #0xc
+ str r12, [lr, #0x0]
+ bl DrawOneQuad_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B02C0: .word 0x04000470
+_020B02C4: .word 0x0400046C
+ arm_func_end NNS_G2dDrawSpriteFast
+
+ arm_func_start NNS_G2dSetupSoftwareSpriteCamera
+NNS_G2dSetupSoftwareSpriteCamera: ; 0x020B02C8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x14
+ ldr r2, _020B0330 ; =0xBFFF0000
+ ldr r0, _020B0334 ; =0x04000580
+ mov r1, #0x400000
+ str r2, [r0, #0x0]
+ rsb r0, r1, #0x0
+ str r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ mov r0, #0x0
+ str r1, [sp, #0x8]
+ mov r1, #0x1
+ str r1, [sp, #0xc]
+ mov r2, r0
+ mov r1, #0xc0000
+ mov r3, #0x100000
+ str r0, [sp, #0x10]
+ bl G3i_OrthoW_
+ ldr r1, _020B0338 ; =0x0400044C
+ mov r2, #0x0
+ ldr r0, _020B033C ; =0x04000440
+ str r2, [r1, #0x0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+ .balign 4
+_020B0330: .word 0xBFFF0000
+_020B0334: .word 0x04000580
+_020B0338: .word 0x0400044C
+_020B033C: .word 0x04000440
+ arm_func_end NNS_G2dSetupSoftwareSpriteCamera
+
+ arm_func_start DrawOneQuad_
+DrawOneQuad_: ; 0x020B0340
+ stmdb sp!, {r4-r6,lr}
+ mov r3, r3, lsl #0x8
+ mov r0, r0, lsl #0x8
+ mov r4, r3, asr #0x10
+ mov r3, r0, asr #0x10
+ mov r0, r4, lsl #0x10
+ mov r3, r3, lsl #0x10
+ mov r1, r1, lsl #0x8
+ mov r1, r1, asr #0x10
+ mov r1, r1, lsl #0x10
+ mov r2, r2, lsl #0x8
+ mov r2, r2, asr #0x10
+ mov r2, r2, lsl #0x10
+ ldr ip, _020B03F4 ; =0x04000500
+ mov lr, #0x1
+ mov r6, r0, lsr #0x10
+ mov r5, r3, lsr #0x10
+ mov r3, r1, lsr #0x10
+ mov r1, r2, lsr #0x10
+ ldr r4, _020B03F8 ; =0x04000488
+ str lr, [r12, #0x0]
+ orr r0, r5, r6, lsl #0x10
+ ldr lr, _020B03FC ; =0x0400048C
+ str r0, [r4, #0x0]
+ mov r0, #0x10000000
+ str r0, [lr, #0x0]
+ mov r12, #0x0
+ str r12, [lr, #0x0]
+ orr r2, r3, r6, lsl #0x10
+ ldr r0, _020B0400 ; =0x10001000
+ str r2, [r4, #0x0]
+ str r0, [lr, #0x0]
+ str r12, [lr, #0x0]
+ orr r0, r3, r1, lsl #0x10
+ str r0, [r4, #0x0]
+ mov r0, #0x1000
+ str r0, [lr, #0x0]
+ str r12, [lr, #0x0]
+ orr r0, r5, r1, lsl #0x10
+ str r0, [r4, #0x0]
+ str r12, [lr, #0x0]
+ ldr r0, _020B0404 ; =0x04000504
+ str r12, [lr, #0x0]
+ str r12, [r0, #0x0]
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B03F4: .word 0x04000500
+_020B03F8: .word 0x04000488
+_020B03FC: .word 0x0400048C
+_020B0400: .word 0x10001000
+_020B0404: .word 0x04000504
+ arm_func_end DrawOneQuad_
diff --git a/arm9/asm/NNS_G2D_g2d_srtcontrol.s b/arm9/asm/NNS_G2D_g2d_srtcontrol.s
new file mode 100644
index 00000000..7c9139ef
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_srtcontrol.s
@@ -0,0 +1,62 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dSrtcSetInitialValue
+NNSi_G2dSrtcSetInitialValue: ; 0x020B1A40
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ add r1, r4, #0x4
+ mov r0, #0x0
+ mov r2, #0x18
+ bl MIi_CpuClear16
+ mov r0, #0x1000
+ str r0, [r4, #0x4]
+ str r0, [r4, #0x8]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_G2dSrtcSetInitialValue
+
+ arm_func_start NNSi_G2dSrtcInitControl
+NNSi_G2dSrtcInitControl: ; 0x020B1A68
+ ldr ip, _020B1A74 ; =NNSi_G2dSrtcSetInitialValue
+ str r1, [r0, #0x0]
+ bx r12
+ .balign 4
+_020B1A74: .word NNSi_G2dSrtcSetInitialValue
+ arm_func_end NNSi_G2dSrtcInitControl
+
+ arm_func_start NNSi_G2dSrtcSetSRTScale
+NNSi_G2dSrtcSetSRTScale: ; 0x020B1A78
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x1
+ ldreqh r3, [r0, #0x12]
+ orreq r3, r3, #0x2
+ streqh r3, [r0, #0x12]
+ streq r1, [r0, #0x4]
+ streq r2, [r0, #0x8]
+ bx lr
+ arm_func_end NNSi_G2dSrtcSetSRTScale
+
+ arm_func_start NNSi_G2dSrtcSetSRTRotZ
+NNSi_G2dSrtcSetSRTRotZ: ; 0x020B1A98
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x1
+ ldreqh r2, [r0, #0x12]
+ orreq r2, r2, #0x4
+ streqh r2, [r0, #0x12]
+ streqh r1, [r0, #0x10]
+ bx lr
+ arm_func_end NNSi_G2dSrtcSetSRTRotZ
+
+ arm_func_start NNSi_G2dSrtcSetTrans
+NNSi_G2dSrtcSetTrans: ; 0x020B1AB4
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x1
+ ldreqh r3, [r0, #0x12]
+ orreq r3, r3, #0x8
+ streqh r3, [r0, #0x12]
+ streqh r1, [r0, #0xc]
+ streqh r2, [r0, #0xe]
+ bx lr
+ arm_func_end NNSi_G2dSrtcSetTrans
diff --git a/arm9/asm/NNS_G2D_g2d_textcanvas.s b/arm9/asm/NNS_G2D_g2d_textcanvas.s
new file mode 100644
index 00000000..95ebf85a
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2d_textcanvas.s
@@ -0,0 +1,221 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dTextCanvasDrawTextRect
+NNSi_G2dTextCanvasDrawTextRect: ; 0x020B7168
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0xc
+ ldr r12, [sp, #0x28]
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ ands r0, r12, #0x100
+ beq _020B71AC
+ ldr r0, [r7, #0x4]
+ ldr r1, [r7, #0xc]
+ ldr r2, [sp, #0x2c]
+ bl NNSi_G2dFontGetTextHeight
+ ldr r1, [sp, #0x20]
+ sub r0, r1, r0
+ add r5, r5, r0
+ b _020B71E4
+_020B71AC:
+ ands r0, r12, #0x80
+ beq _020B71E4
+ ldr r0, [r7, #0x4]
+ ldr r1, [r7, #0xc]
+ ldr r2, [sp, #0x2c]
+ bl NNSi_G2dFontGetTextHeight
+ ldr r2, [sp, #0x20]
+ add r1, r0, #0x1
+ add r0, r2, #0x1
+ add r0, r0, r0, lsr #0x1f
+ mov r2, r0, asr #0x1
+ add r0, r1, r1, lsr #0x1f
+ sub r0, r2, r0, asr #0x1
+ add r5, r5, r0
+_020B71E4:
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #0x0]
+ ldr r12, [sp, #0x2c]
+ str r0, [sp, #0x4]
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ mov r3, r4
+ str r12, [sp, #0x8]
+ bl NNSi_G2dTextCanvasDrawTextAlign
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNSi_G2dTextCanvasDrawTextRect
+
+ arm_func_start NNSi_G2dTextCanvasDrawText
+NNSi_G2dTextCanvasDrawText: ; 0x020B7218
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x18
+ ldr r4, [sp, #0x34]
+ mov r8, r0
+ str r4, [sp, #0x0]
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ ldr r4, [sp, #0x30]
+ ldr r1, [r8, #0x4]
+ ldr r2, [r8, #0x8]
+ ldr r3, [r8, #0xc]
+ add r0, sp, #0xc
+ bl NNSi_G2dFontGetTextRect
+ ands r0, r4, #0x10
+ ldrne r0, [sp, #0xc]
+ addne r0, r0, #0x1
+ addne r0, r0, r0, lsr #0x1f
+ subne r7, r7, r0, asr #0x1
+ bne _020B7274
+ ands r0, r4, #0x20
+ ldrne r0, [sp, #0xc]
+ subne r7, r7, r0
+_020B7274:
+ ands r0, r4, #0x2
+ ldrne r0, [sp, #0x10]
+ addne r0, r0, #0x1
+ addne r0, r0, r0, lsr #0x1f
+ subne r6, r6, r0, asr #0x1
+ bne _020B7298
+ ands r0, r4, #0x4
+ ldrne r0, [sp, #0x10]
+ subne r6, r6, r0
+_020B7298:
+ str r5, [sp, #0x0]
+ ldr r0, [sp, #0x34]
+ str r4, [sp, #0x4]
+ str r0, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ bl NNSi_G2dTextCanvasDrawTextAlign
+ add sp, sp, #0x18
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNSi_G2dTextCanvasDrawText
+
+ arm_func_start NNSi_G2dTextCanvasDrawTextAlign
+NNSi_G2dTextCanvasDrawTextAlign: ; 0x020B72C4
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x14
+ mov r10, r0
+ ldr r4, [r10, #0x4]
+ ldr r0, [sp, #0x40]
+ ldr r4, [r4, #0x0]
+ ldr r5, [r10, #0xc]
+ ldrsb r4, [r4, #0x1]
+ cmp r0, #0x0
+ mov r9, r1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x38]
+ mov r8, r2
+ str r0, [sp, #0x38]
+ mov r7, r3
+ add r6, r5, r4
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4-r11,pc}
+ add r0, r7, #0x1
+ ldr r1, [sp, #0x3c]
+ add r0, r0, r0, lsr #0x1f
+ mov r0, r0, asr #0x1
+ and r5, r1, #0x800
+ and r11, r1, #0x400
+ str r0, [sp, #0x8]
+ mov r4, #0x0
+_020B732C:
+ mov r1, r9
+ cmp r5, #0x0
+ beq _020B7358
+ ldr r0, [r10, #0x4]
+ ldr r1, [r10, #0x8]
+ ldr r2, [sp, #0xc]
+ mov r3, r4
+ bl NNSi_G2dFontGetStringWidth
+ sub r0, r7, r0
+ add r1, r9, r0
+ b _020B7388
+_020B7358:
+ cmp r11, #0x0
+ beq _020B7388
+ ldr r0, [r10, #0x4]
+ ldr r1, [r10, #0x8]
+ ldr r2, [sp, #0xc]
+ mov r3, r4
+ bl NNSi_G2dFontGetStringWidth
+ add r0, r0, #0x1
+ add r1, r0, r0, lsr #0x1f
+ ldr r0, [sp, #0x8]
+ sub r0, r0, r1, asr #0x1
+ add r1, r9, r0
+_020B7388:
+ ldr r2, [sp, #0xc]
+ add r3, sp, #0xc
+ str r2, [sp, #0x0]
+ str r3, [sp, #0x4]
+ ldr r3, [sp, #0x38]
+ mov r0, r10
+ mov r2, r8
+ bl NNSi_G2dTextCanvasDrawString
+ ldr r0, [sp, #0xc]
+ add r8, r8, r6
+ cmp r0, #0x0
+ bne _020B732C
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end NNSi_G2dTextCanvasDrawTextAlign
+
+ arm_func_start NNSi_G2dTextCanvasDrawString
+NNSi_G2dTextCanvasDrawString: ; 0x020B73C0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r10, r0
+ ldr r6, [r10, #0x8]
+ ldr r5, [r10, #0x4]
+ ldr r4, [sp, #0x30]
+ add r0, sp, #0x8
+ str r4, [sp, #0x8]
+ ldr r4, [r5, #0x4]
+ mov r9, r1
+ mov r8, r2
+ mov r7, r3
+ blx r4
+ cmp r0, #0x0
+ beq _020B743C
+ add r11, sp, #0x8
+_020B7400:
+ cmp r0, #0xa
+ beq _020B743C
+ str r7, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [r10, #0x0]
+ mov r1, r5
+ mov r2, r9
+ mov r3, r8
+ bl NNS_G2dCharCanvasDrawChar
+ add r1, r9, r0
+ mov r0, r11
+ add r9, r1, r6
+ blx r4
+ cmp r0, #0x0
+ bne _020B7400
+_020B743C:
+ ldr r1, [sp, #0x34]
+ cmp r1, #0x0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r11,pc}
+ cmp r0, #0xa
+ ldreq r1, [sp, #0x8]
+ ldr r0, [sp, #0x34]
+ movne r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end NNSi_G2dTextCanvasDrawString
diff --git a/arm9/asm/NNS_G2D_g2di_bitreader.s b/arm9/asm/NNS_G2D_g2di_bitreader.s
new file mode 100644
index 00000000..d36c774f
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2di_bitreader.s
@@ -0,0 +1,35 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dBitReaderRead
+NNSi_G2dBitReaderRead: ; 0x020B76B0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldrsb r2, [r0, #0x4]
+ ldrb r12, [r0, #0x5]
+ mov r4, r1
+ cmp r2, r4
+ subge r1, r2, r4
+ movge r5, r12, lsr r1
+ strgeb r1, [r0, #0x4]
+ bge _020B7704
+ ldr r3, [r0, #0x0]
+ sub r1, r4, r2
+ add r2, r3, #0x1
+ str r2, [r0, #0x0]
+ ldrb r2, [r3, #0x0]
+ mov r5, r12, lsl r1
+ strb r2, [r0, #0x5]
+ mov r2, #0x8
+ strb r2, [r0, #0x4]
+ bl NNSi_G2dBitReaderRead
+ orr r5, r0, r5
+_020B7704:
+ rsb r0, r4, #0x8
+ mov r1, #0xff
+ and r0, r5, r1, asr r0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNSi_G2dBitReaderRead
diff --git a/arm9/asm/NNS_G2D_g2di_mtx32.s b/arm9/asm/NNS_G2D_g2di_mtx32.s
new file mode 100644
index 00000000..68fa5831
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2di_mtx32.s
@@ -0,0 +1,79 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dMtxConcat32
+NNSi_G2dMtxConcat32: ; 0x020B423C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x1c
+ ldr r4, [r0, #0x4]
+ ldr r3, [r1, #0x8]
+ mov r12, r2
+ smull r6, r5, r4, r3
+ ldr r4, [r0, #0x0]
+ ldr r3, [r1, #0x0]
+ cmp r12, r1
+ smlal r6, r5, r4, r3
+ mov r3, r6, lsr #0xc
+ addeq r2, sp, #0x0
+ orr r3, r3, r5, lsl #0x14
+ str r3, [r2, #0x0]
+ ldr r4, [r0, #0x4]
+ ldr r3, [r1, #0xc]
+ ldr r5, [r0, #0x0]
+ smull r7, r6, r4, r3
+ ldr r3, [r1, #0x4]
+ add lr, sp, #0x0
+ smlal r7, r6, r5, r3
+ mov r3, r7, lsr #0xc
+ orr r3, r3, r6, lsl #0x14
+ str r3, [r2, #0x4]
+ ldr r4, [r0, #0xc]
+ ldr r3, [r1, #0x8]
+ ldr r5, [r0, #0x8]
+ smull r7, r6, r4, r3
+ ldr r3, [r1, #0x0]
+ cmp r2, lr
+ smlal r7, r6, r5, r3
+ mov r3, r7, lsr #0xc
+ orr r3, r3, r6, lsl #0x14
+ str r3, [r2, #0x8]
+ ldr r4, [r0, #0xc]
+ ldr r3, [r1, #0xc]
+ ldr r5, [r0, #0x8]
+ smull r7, r6, r4, r3
+ ldr r3, [r1, #0x4]
+ smlal r7, r6, r5, r3
+ mov r3, r7, lsr #0xc
+ orr r3, r3, r6, lsl #0x14
+ str r3, [r2, #0xc]
+ ldr r4, [r0, #0x14]
+ ldr r3, [r1, #0x8]
+ ldr r5, [r0, #0x10]
+ smull r7, r6, r4, r3
+ ldr r3, [r1, #0x0]
+ ldr r4, [r1, #0x10]
+ smlal r7, r6, r5, r3
+ mov r3, r7, lsr #0xc
+ orr r3, r3, r6, lsl #0x14
+ add r3, r4, r3
+ str r3, [r2, #0x10]
+ ldr r4, [r0, #0x14]
+ ldr r3, [r1, #0xc]
+ ldr r5, [r0, #0x10]
+ ldr r0, [r1, #0x4]
+ smull r6, r3, r4, r3
+ smlal r6, r3, r5, r0
+ mov r0, r6, lsr #0xc
+ ldr r1, [r1, #0x14]
+ orr r0, r0, r3, lsl #0x14
+ add r0, r1, r0
+ str r0, [r2, #0x14]
+ ldmeqia lr!, {r0-r3}
+ stmeqia r12!, {r0-r3}
+ ldmeqia lr, {r0-r1}
+ stmeqia r12, {r0-r1}
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNSi_G2dMtxConcat32
diff --git a/arm9/asm/NNS_G2D_g2di_splitchar.s b/arm9/asm/NNS_G2D_g2di_splitchar.s
new file mode 100644
index 00000000..4df7621d
--- /dev/null
+++ b/arm9/asm/NNS_G2D_g2di_splitchar.s
@@ -0,0 +1,13 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G2dSplitCharUTF16
+NNSi_G2dSplitCharUTF16: ; 0x020B7718
+ ldr r1, [r0, #0x0]
+ ldrh r2, [r1], #0x2
+ str r1, [r0, #0x0]
+ mov r0, r2
+ bx lr
+ arm_func_end NNSi_G2dSplitCharUTF16
diff --git a/arm9/asm/NNS_G3D_1mat1shp.s b/arm9/asm/NNS_G3D_1mat1shp.s
new file mode 100644
index 00000000..01cb5a35
--- /dev/null
+++ b/arm9/asm/NNS_G3D_1mat1shp.s
@@ -0,0 +1,143 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G3dDraw1Mat1Shp
+NNS_G3dDraw1Mat1Shp: ; 0x020BAFB8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x6c
+ mov r6, r0
+ ldr r12, [r6, #0x1c]
+ mov r4, r1
+ mov r5, r2
+ mov r7, r3
+ cmp r12, #0x1000
+ beq _020BAFF8
+ add r1, sp, #0x54
+ mov r0, #0x1b
+ mov r2, #0x3
+ str r12, [sp, #0x54]
+ str r12, [sp, #0x58]
+ str r12, [sp, #0x5c]
+ bl NNS_G3dGeBufferOP_N
+_020BAFF8:
+ cmp r7, #0x0
+ beq _020BB150
+ ldr r0, [r6, #0x8]
+ add r3, r6, r0
+ ldrh r0, [r3, #0xa]
+ add r2, r3, #0x4
+ ldrh r1, [r2, r0]
+ add r0, r2, r0
+ mla r0, r1, r4, r0
+ ldr r0, [r0, #0x4]
+ add r4, r3, r0
+ ldr r0, [r4, #0xc]
+ ands r0, r0, #0x1f0000
+ addeq sp, sp, #0x6c
+ ldmeqia sp!, {r4-r7,pc}
+ ldr r0, _020BB1B4 ; =0x00293130
+ str r0, [sp, #0x0]
+ ldr r0, [r4, #0x4]
+ str r0, [sp, #0x4]
+ ldr r0, [r4, #0x8]
+ str r0, [sp, #0x8]
+ ldr r1, [r4, #0xc]
+ str r1, [sp, #0xc]
+ ldrh r0, [r4, #0x1e]
+ ands r0, r0, #0x20
+ bicne r0, r1, #0x1f0000
+ ldr r1, _020BB1B8 ; =0x00002B2A
+ strne r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldr r2, [r4, #0x14]
+ ldr r0, [sp, #0x0]
+ str r2, [sp, #0x14]
+ ldrh r3, [r4, #0x1c]
+ add r1, sp, #0x4
+ mov r2, #0x6
+ str r3, [sp, #0x18]
+ bl NNS_G3dGeBufferOP_N
+ ldrh r0, [r4, #0x1e]
+ ands r0, r0, #0x1
+ beq _020BB150
+ ldrb r12, [r6, #0x16]
+ mov r3, #0x8
+ ldr r1, _020BB1BC ; =NNS_G3dSendTexSRT_FuncArray
+ str r3, [sp, #0x1c]
+ ldrh r2, [r4, #0x20]
+ add r0, r4, #0x2c
+ ldr r1, [r1, r12, lsl #0x2]
+ strh r2, [sp, #0x48]
+ ldrh r2, [r4, #0x22]
+ strh r2, [sp, #0x4a]
+ ldr r2, [r4, #0x24]
+ str r2, [sp, #0x4c]
+ ldr r2, [r4, #0x28]
+ str r2, [sp, #0x50]
+ ldrh r2, [r4, #0x1e]
+ ands r2, r2, #0x2
+ orrne r2, r3, #0x1
+ strne r2, [sp, #0x1c]
+ bne _020BB0F8
+ ldr r2, [r0, #0x0]
+ str r2, [sp, #0x34]
+ ldr r2, [r0, #0x4]
+ add r0, r0, #0x8
+ str r2, [sp, #0x38]
+_020BB0F8:
+ ldrh r2, [r4, #0x1e]
+ ands r2, r2, #0x4
+ ldrne r2, [sp, #0x1c]
+ orrne r2, r2, #0x2
+ strne r2, [sp, #0x1c]
+ bne _020BB124
+ ldrsh r2, [r0, #0x0]
+ strh r2, [sp, #0x3c]
+ ldrsh r2, [r0, #0x2]
+ add r0, r0, #0x4
+ strh r2, [sp, #0x3e]
+_020BB124:
+ ldrh r2, [r4, #0x1e]
+ ands r2, r2, #0x8
+ ldreq r2, [r0, #0x0]
+ streq r2, [sp, #0x40]
+ ldreq r0, [r0, #0x4]
+ streq r0, [sp, #0x44]
+ ldrne r0, [sp, #0x1c]
+ orrne r0, r0, #0x4
+ strne r0, [sp, #0x1c]
+ add r0, sp, #0x1c
+ blx r1
+_020BB150:
+ ldr r0, [r6, #0xc]
+ add r2, r6, r0
+ ldrh r0, [r2, #0x6]
+ ldrh r1, [r2, r0]
+ add r0, r2, r0
+ mla r0, r1, r5, r0
+ ldr r0, [r0, #0x4]
+ add r2, r2, r0
+ ldr r0, [r2, #0x8]
+ ldr r1, [r2, #0xc]
+ add r0, r2, r0
+ bl NNS_G3dGeSendDL
+ ldr r3, [r6, #0x20]
+ cmp r3, #0x1000
+ addeq sp, sp, #0x6c
+ ldmeqia sp!, {r4-r7,pc}
+ add r1, sp, #0x60
+ mov r0, #0x1b
+ mov r2, #0x3
+ str r3, [sp, #0x60]
+ str r3, [sp, #0x64]
+ str r3, [sp, #0x68]
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x6c
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020BB1B4: .word 0x00293130
+_020BB1B8: .word 0x00002B2A
+_020BB1BC: .word NNS_G3dSendTexSRT_FuncArray
+ arm_func_end NNS_G3dDraw1Mat1Shp
diff --git a/arm9/asm/NNS_G3D_3dsmax.s b/arm9/asm/NNS_G3D_3dsmax.s
new file mode 100644
index 00000000..e54e2315
--- /dev/null
+++ b/arm9/asm/NNS_G3D_3dsmax.s
@@ -0,0 +1,466 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+calcTexMtx_: ; 0x021067D0
+ .word texmtxCalc_flag_
+ .word texmtxCalc_flagS_
+ .word texmtxCalc_flagR_
+ .word texmtxCalc_flagRS_
+ .word texmtxCalc_flagT_
+ .word texmtxCalc_flagTS_
+ .word texmtxCalc_flagTR_
+ .word texmtxCalc_flagTRS_
+
+ .section .text
+
+ arm_func_start NNSi_G3dSendTexSRT3dsMax
+NNSi_G3dSendTexSRT3dsMax: ; 0x020BF42C
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x50
+ mov r4, r0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ands r0, r0, #0x8
+ ldrne r0, _020BF568 ; =0x00101610
+ mov r3, #0x3
+ strne r0, [sp, #0x0]
+ ldreq r0, _020BF56C ; =0x00101810
+ mov r2, #0x2
+ streq r0, [sp, #0x0]
+ mov r0, #0x1000
+ str r0, [sp, #0x44]
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x48]
+ str r1, [sp, #0x40]
+ str r1, [sp, #0x34]
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x2c]
+ str r1, [sp, #0x28]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x10]
+ ldr r1, [r4, #0x0]
+ ldr r0, _020BF570 ; =calcTexMtx_
+ and r1, r1, #0x7
+ ldr r2, [r0, r1, lsl #0x2]
+ add r0, sp, #0x8
+ mov r1, r4
+ blx r2
+ ldr r3, [r4, #0x30]
+ cmp r3, #0x1000
+ beq _020BF4FC
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ smull r2, r0, r3, r0
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x8]
+ ldr r2, [r4, #0x30]
+ ldr r0, [sp, #0x38]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0xc]
+ ldr r1, [r4, #0x30]
+ smull r2, r0, r1, r0
+ mov r1, r2, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ str r1, [sp, #0x38]
+_020BF4FC:
+ ldr r3, [r4, #0x34]
+ cmp r3, #0x1000
+ beq _020BF54C
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ smull r2, r0, r3, r0
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x18]
+ ldr r2, [r4, #0x34]
+ ldr r0, [sp, #0x3c]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0x1c]
+ ldr r1, [r4, #0x34]
+ smull r2, r0, r1, r0
+ mov r1, r2, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ str r1, [sp, #0x3c]
+_020BF54C:
+ add r1, sp, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r1, #0x4
+ mov r2, #0x12
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x50
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BF568: .word 0x00101610
+_020BF56C: .word 0x00101810
+_020BF570: .word calcTexMtx_
+ arm_func_end NNSi_G3dSendTexSRT3dsMax
+
+ local_arm_func_start texmtxCalc_flagTRS_
+texmtxCalc_flagTRS_: ; 0x020BF574
+ mov r2, #0x1000
+ str r2, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x10]
+ str r2, [r0, #0x14]
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end texmtxCalc_flagTRS_
+
+ local_arm_func_start texmtxCalc_flagTR_
+texmtxCalc_flagTR_: ; 0x020BF598
+ ldr r2, [r1, #0x18]
+ mov r12, #0x0
+ str r2, [r0, #0x0]
+ ldr r2, [r1, #0x1c]
+ str r2, [r0, #0x14]
+ str r12, [r0, #0x4]
+ ldr r3, [r1, #0x18]
+ ldrh r2, [r1, #0x2c]
+ rsb r3, r3, #0x1000
+ mul r2, r3, r2
+ mov r2, r2, lsl #0x3
+ str r2, [r0, #0x30]
+ ldr r2, [r1, #0x1c]
+ ldrh r1, [r1, #0x2e]
+ rsb r2, r2, #0x1000
+ mul r1, r2, r1
+ mov r1, r1, lsl #0x3
+ str r1, [r0, #0x34]
+ str r12, [r0, #0x10]
+ bx lr
+ arm_func_end texmtxCalc_flagTR_
+
+ local_arm_func_start texmtxCalc_flagTS_
+texmtxCalc_flagTS_: ; 0x020BF5E8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ mov r6, r0
+ mov r4, r2, lsl #0xc
+ mov r7, r1, lsl #0xc
+ mov r0, r7
+ mov r1, r4
+ bl FX_DivAsync
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x0]
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x14]
+ bl FX_GetDivResult
+ ldrsh r2, [r5, #0x20]
+ mov r1, r7
+ mul r0, r2, r0
+ mov r2, r0, asr #0xc
+ mov r0, r4
+ str r2, [r6, #0x4]
+ bl FX_DivAsync
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ ldrsh r4, [r5, #0x22]
+ rsb r0, r2, #0x0
+ rsb r1, r1, #0x0
+ mov r0, r0, lsl #0xb
+ ldrsh r3, [r5, #0x20]
+ mov r1, r1, lsl #0xb
+ smull r7, lr, r4, r0
+ smull r12, r4, r3, r1
+ subs r7, r7, r12
+ sbc r3, lr, r4
+ mov r4, r7, lsr #0x8
+ orr r4, r4, r3, lsl #0x18
+ add r2, r4, r2, lsl #0xf
+ str r2, [r6, #0x30]
+ ldrsh r2, [r5, #0x22]
+ ldrsh r3, [r5, #0x20]
+ ldrh r12, [r5, #0x2e]
+ smull r4, r1, r2, r1
+ smlal r4, r1, r3, r0
+ mov r0, r4, lsr #0x8
+ orr r0, r0, r1, lsl #0x18
+ add r0, r0, r12, lsl #0xf
+ str r0, [r6, #0x34]
+ bl FX_GetDivResult
+ ldrsh r1, [r5, #0x20]
+ rsb r1, r1, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end texmtxCalc_flagTS_
+
+ local_arm_func_start texmtxCalc_flagT_
+texmtxCalc_flagT_: ; 0x020BF6C8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r9, r1
+ ldrh r2, [r9, #0x2c]
+ ldrh r1, [r9, #0x2e]
+ mov r10, r0
+ mov r8, r2, lsl #0xc
+ mov r11, r1, lsl #0xc
+ mov r0, r11
+ mov r1, r8
+ bl FX_DivAsync
+ ldrsh r0, [r9, #0x22]
+ ldr r3, [r9, #0x18]
+ ldrsh r5, [r9, #0x20]
+ ldr r4, [r9, #0x1c]
+ smull r2, r1, r3, r0
+ mov r7, r2, lsr #0xc
+ orr r7, r7, r1, lsl #0x14
+ smull r2, r1, r3, r5
+ mov r6, r2, lsr #0xc
+ orr r6, r6, r1, lsl #0x14
+ smull r3, r2, r4, r0
+ smull r1, r0, r4, r5
+ mov r5, r3, lsr #0xc
+ orr r5, r5, r2, lsl #0x14
+ mov r4, r1, lsr #0xc
+ orr r4, r4, r0, lsl #0x14
+ str r7, [r10, #0x0]
+ str r5, [r10, #0x14]
+ bl FX_GetDivResult
+ mov r1, r11
+ mul r0, r4, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x4]
+ mov r0, r8
+ bl FX_DivAsync
+ ldrh r3, [r9, #0x2c]
+ ldrh r1, [r9, #0x2e]
+ rsb r0, r3, #0x0
+ rsb r1, r1, #0x0
+ mov r2, r1, lsl #0xb
+ mov r11, r0, lsl #0xb
+ smull r1, r0, r7, r11
+ smull r8, r7, r5, r2
+ smlal r8, r7, r4, r11
+ mov r4, r8, lsr #0x8
+ orr r4, r4, r7, lsl #0x18
+ smull r5, r2, r6, r2
+ subs r1, r1, r5
+ sbc r0, r0, r2
+ mov r1, r1, lsr #0x8
+ orr r1, r1, r0, lsl #0x18
+ add r0, r1, r3, lsl #0xf
+ str r0, [r10, #0x30]
+ ldrh r0, [r9, #0x2e]
+ add r0, r4, r0, lsl #0xf
+ str r0, [r10, #0x34]
+ bl FX_GetDivResult
+ rsb r1, r6, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end texmtxCalc_flagT_
+
+ local_arm_func_start texmtxCalc_flagRS_
+texmtxCalc_flagRS_: ; 0x020BF7C8
+ mov r2, #0x1000
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x14]
+ mov r12, #0x0
+ str r12, [r0, #0x4]
+ ldr r3, [r1, #0x24]
+ ldrh r2, [r1, #0x2c]
+ rsb r3, r3, #0x0
+ mul r2, r3, r2
+ mov r2, r2, lsl #0x4
+ str r2, [r0, #0x30]
+ ldrh r2, [r1, #0x2e]
+ ldr r1, [r1, #0x28]
+ mul r2, r1, r2
+ mov r1, r2, lsl #0x4
+ str r1, [r0, #0x34]
+ str r12, [r0, #0x10]
+ bx lr
+ arm_func_end texmtxCalc_flagRS_
+
+ local_arm_func_start texmtxCalc_flagR_
+texmtxCalc_flagR_: ; 0x020BF810
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, [r1, #0x18]
+ mov r3, #0x0
+ str r2, [r0, #0x0]
+ ldr r2, [r1, #0x1c]
+ str r2, [r0, #0x14]
+ str r3, [r0, #0x4]
+ ldrh r5, [r1, #0x2c]
+ ldr r12, [r1, #0x24]
+ ldrh r2, [r1, #0x2e]
+ mul lr, r12, r5
+ rsb r12, r5, #0x0
+ mov r12, r12, lsl #0xb
+ ldr r4, [r1, #0x18]
+ sub r12, r12, lr
+ smull lr, r12, r4, r12
+ ldr r6, [r1, #0x28]
+ mov r4, lr, lsr #0x8
+ orr r4, r4, r12, lsl #0x18
+ add r4, r4, r5, lsl #0xf
+ str r4, [r0, #0x30]
+ mul r4, r6, r2
+ rsb r5, r2, #0x0
+ ldr r2, [r1, #0x1c]
+ add r4, r4, r5, lsl #0xb
+ smull lr, r12, r2, r4
+ mov r2, lr, lsr #0x8
+ ldrh r1, [r1, #0x2e]
+ orr r2, r2, r12, lsl #0x18
+ add r1, r2, r1, lsl #0xf
+ str r1, [r0, #0x34]
+ str r3, [r0, #0x10]
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end texmtxCalc_flagR_
+
+ local_arm_func_start texmtxCalc_flagS_
+texmtxCalc_flagS_: ; 0x020BF894
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ mov r6, r0
+ mov r4, r2, lsl #0xc
+ mov r7, r1, lsl #0xc
+ mov r0, r7
+ mov r1, r4
+ bl FX_DivAsync
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x0]
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x14]
+ bl FX_GetDivResult
+ ldrsh r2, [r5, #0x20]
+ mov r1, r7
+ mul r0, r2, r0
+ mov r2, r0, asr #0xc
+ mov r0, r4
+ str r2, [r6, #0x4]
+ bl FX_DivAsync
+ ldrh r2, [r5, #0x2c]
+ ldrh r7, [r5, #0x2e]
+ ldr r1, [r5, #0x28]
+ ldr r0, [r5, #0x24]
+ rsb r4, r2, #0x0
+ mul r3, r1, r7
+ rsb r1, r7, #0x0
+ add r1, r3, r1, lsl #0xb
+ ldrsh r3, [r5, #0x20]
+ mov r7, r4, lsl #0xb
+ mul r4, r0, r2
+ sub r0, r7, r4
+ ldrsh lr, [r5, #0x22]
+ smull r12, r4, r3, r1
+ smull r7, r3, lr, r0
+ subs r7, r7, r12
+ sbc r3, r3, r4
+ mov r4, r7, lsr #0x8
+ orr r4, r4, r3, lsl #0x18
+ add r2, r4, r2, lsl #0xf
+ str r2, [r6, #0x30]
+ ldrsh r2, [r5, #0x22]
+ ldrsh r3, [r5, #0x20]
+ ldrh r12, [r5, #0x2e]
+ smull r4, r1, r2, r1
+ smlal r4, r1, r3, r0
+ mov r0, r4, lsr #0x8
+ orr r0, r0, r1, lsl #0x18
+ add r0, r0, r12, lsl #0xf
+ str r0, [r6, #0x34]
+ bl FX_GetDivResult
+ ldrsh r1, [r5, #0x20]
+ rsb r1, r1, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end texmtxCalc_flagS_
+
+ local_arm_func_start texmtxCalc_flag_
+texmtxCalc_flag_: ; 0x020BF988
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r9, r1
+ ldrh r2, [r9, #0x2c]
+ ldrh r1, [r9, #0x2e]
+ mov r10, r0
+ mov r8, r2, lsl #0xc
+ mov r11, r1, lsl #0xc
+ mov r0, r11
+ mov r1, r8
+ bl FX_DivAsync
+ ldrsh r0, [r9, #0x22]
+ ldr r3, [r9, #0x18]
+ ldrsh r5, [r9, #0x20]
+ ldr r4, [r9, #0x1c]
+ smull r2, r1, r3, r0
+ mov r7, r2, lsr #0xc
+ orr r7, r7, r1, lsl #0x14
+ smull r2, r1, r3, r5
+ mov r6, r2, lsr #0xc
+ orr r6, r6, r1, lsl #0x14
+ smull r3, r2, r4, r0
+ smull r1, r0, r4, r5
+ mov r5, r3, lsr #0xc
+ orr r5, r5, r2, lsl #0x14
+ mov r4, r1, lsr #0xc
+ orr r4, r4, r0, lsl #0x14
+ str r7, [r10, #0x0]
+ str r5, [r10, #0x14]
+ bl FX_GetDivResult
+ mov r1, r11
+ mul r0, r4, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x4]
+ mov r0, r8
+ bl FX_DivAsync
+ ldrh r1, [r9, #0x2c]
+ ldrh r8, [r9, #0x2e]
+ ldr r2, [r9, #0x28]
+ rsb r0, r1, #0x0
+ mul r3, r2, r8
+ rsb r2, r8, #0x0
+ add r8, r3, r2, lsl #0xb
+ mov r0, r0, lsl #0xb
+ smull r3, r2, r5, r8
+ smull r8, r5, r6, r8
+ ldr r11, [r9, #0x24]
+ mul r12, r11, r1
+ sub r0, r0, r12
+ smlal r3, r2, r4, r0
+ smull r4, r0, r7, r0
+ subs r4, r4, r8
+ sbc r0, r0, r5
+ mov r4, r4, lsr #0x8
+ orr r4, r4, r0, lsl #0x18
+ add r0, r4, r1, lsl #0xf
+ str r0, [r10, #0x30]
+ ldrh r1, [r9, #0x2e]
+ mov r0, r3, lsr #0x8
+ orr r0, r0, r2, lsl #0x18
+ add r0, r0, r1, lsl #0xf
+ str r0, [r10, #0x34]
+ bl FX_GetDivResult
+ rsb r1, r6, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end texmtxCalc_flag_
diff --git a/arm9/asm/NNS_G3D_anm.s b/arm9/asm/NNS_G3D_anm.s
new file mode 100644
index 00000000..512ef7c0
--- /dev/null
+++ b/arm9/asm/NNS_G3D_anm.s
@@ -0,0 +1,352 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global NNS_G3dAnmFmtNum
+NNS_G3dAnmFmtNum: ; 0x02106594
+ .byte 0x05, 0x00, 0x00, 0x00
+
+ .global NNS_G3dFuncAnmVisNsBvaDefault
+NNS_G3dFuncAnmVisNsBvaDefault: ; 0x02106598
+ .word NNSi_G3dAnmCalcNsBva
+
+ .global NNS_G3dFuncAnmJntNsBcaDefault
+NNS_G3dFuncAnmJntNsBcaDefault: ; 0x0210659C
+ .word NNSi_G3dAnmCalcNsBca
+
+ .global NNS_G3dFuncAnmMatNsBtaDefault
+NNS_G3dFuncAnmMatNsBtaDefault: ; 0x021065A0
+ .word NNSi_G3dAnmCalcNsBta
+
+ .global NNS_G3dFuncAnmMatNsBtpDefault
+NNS_G3dFuncAnmMatNsBtpDefault: ; 0x021065A4
+ .word NNSi_G3dAnmCalcNsBtp
+
+ .global NNS_G3dFuncAnmMatNsBmaDefault
+NNS_G3dFuncAnmMatNsBmaDefault: ; 0x021065A8
+ .word NNSi_G3dAnmCalcNsBma
+
+ .global NNS_G3dFuncBlendVisDefault
+NNS_G3dFuncBlendVisDefault: ; 0x021065AC
+ .word NNSi_G3dAnmBlendVis
+
+ .global NNS_G3dFuncBlendJntDefault
+NNS_G3dFuncBlendJntDefault: ; 0x021065B0
+ .word NNSi_G3dAnmBlendJnt
+
+ .global NNS_G3dFuncBlendMatDefault
+NNS_G3dFuncBlendMatDefault: ; 0x021065B4
+ .word NNSi_G3dAnmBlendMat
+
+ .global NNS_G3dAnmObjInitFuncArray
+NNS_G3dAnmObjInitFuncArray: ; 0x021065B8
+ .byte 0x4D, 0x00, 0x41, 0x4D
+ .word NNSi_G3dAnmObjInitNsBma
+ .byte 0x4D, 0x00, 0x50, 0x54
+ .word NNSi_G3dAnmObjInitNsBtp
+ .byte 0x4D, 0x00, 0x41, 0x54
+ .word NNSi_G3dAnmObjInitNsBta
+ .byte 0x56, 0x00, 0x41, 0x56
+ .word NNSi_G3dAnmObjInitNsBva
+ .byte 0x4A, 0x00, 0x41, 0x43
+ .word NNSi_G3dAnmObjInitNsBca
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .section .text
+
+ arm_func_start NNSi_G3dAnmBlendVis
+NNSi_G3dAnmBlendVis: ; 0x020B8640
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x8
+ mov r7, r0
+ mov r0, #0x0
+ mov r6, r1
+ str r0, [r7, #0x0]
+ add r4, sp, #0x0
+ mov r5, r2, lsl #0x1
+ mov r8, #0x1
+_020B8664:
+ add r1, r5, r6
+ ldrh r2, [r1, #0x1a]
+ ands r1, r2, #0x100
+ beq _020B869C
+ ldr r3, [r6, #0xc]
+ mov r0, r4
+ mov r1, r6
+ and r2, r2, #0xff
+ blx r3
+ ldr r2, [r7, #0x0]
+ ldr r1, [sp, #0x0]
+ mov r0, r8
+ orr r1, r2, r1
+ str r1, [r7, #0x0]
+_020B869C:
+ ldr r6, [r6, #0x10]
+ cmp r6, #0x0
+ bne _020B8664
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNSi_G3dAnmBlendVis
+
+ arm_func_start NNSi_G3dAnmBlendJnt
+NNSi_G3dAnmBlendJnt: ; 0x020B86B0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x5c
+ mov r9, r1
+ ldr r3, [r9, #0x10]
+ mov r10, r0
+ mov r8, r2
+ cmp r3, #0x0
+ bne _020B8704
+ add r2, r9, r8, lsl #0x1
+ ldrh r4, [r2, #0x1a]
+ and r2, r4, #0x300
+ cmp r2, #0x100
+ addne sp, sp, #0x5c
+ movne r0, #0x0
+ ldmneia sp!, {r4-r11,pc}
+ ldr r3, [r9, #0xc]
+ and r2, r4, #0xff
+ blx r3
+ add sp, sp, #0x5c
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,pc}
+_020B8704:
+ mov r7, #0x0
+ mov r3, r7
+ mov r4, r9
+ mov r2, r8, lsl #0x1
+_020B8714:
+ add r0, r2, r4
+ ldrh r0, [r0, #0x1a]
+ and r0, r0, #0x300
+ cmp r0, #0x100
+ ldreq r0, [r4, #0x4]
+ moveq r1, r4
+ ldr r4, [r4, #0x10]
+ addeq r7, r7, r0
+ addeq r3, r3, #0x1
+ cmp r4, #0x0
+ bne _020B8714
+ cmp r7, #0x0
+ addeq sp, sp, #0x5c
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r11,pc}
+ cmp r3, #0x1
+ bne _020B877C
+ add r0, r1, r8, lsl #0x1
+ ldrh r2, [r0, #0x1a]
+ ldr r3, [r1, #0xc]
+ mov r0, r10
+ and r2, r2, #0xff
+ blx r3
+ add sp, sp, #0x5c
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,pc}
+_020B877C:
+ mov r1, r10
+ mov r0, #0x0
+ mov r2, #0x58
+ bl MIi_CpuClearFast
+ mvn r0, #0x0
+ str r0, [r10, #0x0]
+ add r5, sp, #0x0
+ add r4, sp, #0x4
+ add r11, sp, #0x10
+_020B87A0:
+ add r0, r9, r8, lsl #0x1
+ ldrh r2, [r0, #0x1a]
+ and r0, r2, #0x300
+ cmp r0, #0x100
+ bne _020B8948
+ ldr r0, [r9, #0x4]
+ cmp r0, #0x0
+ ble _020B8948
+ ldr r3, [r9, #0xc]
+ mov r0, r5
+ mov r1, r9
+ and r2, r2, #0xff
+ blx r3
+ cmp r7, #0x1000
+ ldreq r6, [r9, #0x4]
+ beq _020B87F0
+ ldr r0, [r9, #0x4]
+ mov r1, r7
+ bl FX_Div
+ mov r6, r0
+_020B87F0:
+ ldr r3, [sp, #0x0]
+ mov r1, r4
+ mov r2, r6
+ add r0, r10, #0x4
+ and r3, r3, #0x1
+ bl blendScaleVec_
+ ldr r1, [sp, #0x0]
+ add r0, r10, #0x10
+ and r3, r1, #0x8
+ mov r1, r11
+ mov r2, r6
+ bl blendScaleVec_
+ ldr r3, [sp, #0x0]
+ add r0, r10, #0x1c
+ add r1, sp, #0x1c
+ mov r2, r6
+ and r3, r3, #0x10
+ bl blendScaleVec_
+ ldr r0, [sp, #0x0]
+ ands r0, r0, #0x4
+ bne _020B8898
+ ldr r0, [sp, #0x4c]
+ ldr r2, [r10, #0x4c]
+ smull r1, r0, r6, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ add r0, r2, r1
+ str r0, [r10, #0x4c]
+ ldr r0, [sp, #0x50]
+ ldr r2, [r10, #0x50]
+ smull r1, r0, r6, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ add r0, r2, r1
+ str r0, [r10, #0x50]
+ ldr r0, [sp, #0x54]
+ ldr r2, [r10, #0x54]
+ smull r1, r0, r6, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ add r0, r2, r1
+ str r0, [r10, #0x54]
+_020B8898:
+ ldr r0, [sp, #0x0]
+ ands r0, r0, #0x2
+ bne _020B8920
+ ldr r0, [sp, #0x28]
+ ldr r1, [r10, #0x28]
+ mul r0, r6, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r10, #0x28]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [r10, #0x2c]
+ mul r0, r6, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r10, #0x2c]
+ ldr r0, [sp, #0x30]
+ ldr r1, [r10, #0x30]
+ mul r0, r6, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r10, #0x30]
+ ldr r0, [sp, #0x34]
+ ldr r1, [r10, #0x34]
+ mul r0, r6, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r10, #0x34]
+ ldr r0, [sp, #0x38]
+ ldr r1, [r10, #0x38]
+ mul r0, r6, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r10, #0x38]
+ ldr r0, [sp, #0x3c]
+ ldr r1, [r10, #0x3c]
+ mul r0, r6, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r10, #0x3c]
+ b _020B8938
+_020B8920:
+ ldr r0, [r10, #0x28]
+ add r0, r0, r6
+ str r0, [r10, #0x28]
+ ldr r0, [r10, #0x38]
+ add r0, r0, r6
+ str r0, [r10, #0x38]
+_020B8938:
+ ldr r1, [r10, #0x0]
+ ldr r0, [sp, #0x0]
+ and r0, r1, r0
+ str r0, [r10, #0x0]
+_020B8948:
+ ldr r9, [r9, #0x10]
+ cmp r9, #0x0
+ bne _020B87A0
+ add r0, r10, #0x28
+ add r1, r10, #0x34
+ add r2, r10, #0x40
+ bl VEC_CrossProduct
+ add r0, r10, #0x28
+ mov r1, r0
+ bl VEC_Normalize
+ add r0, r10, #0x40
+ mov r1, r0
+ bl VEC_Normalize
+ add r0, r10, #0x40
+ add r1, r10, #0x28
+ add r2, r10, #0x34
+ bl VEC_CrossProduct
+ mov r0, #0x1
+ add sp, sp, #0x5c
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end NNSi_G3dAnmBlendJnt
+
+ arm_func_start blendScaleVec_
+blendScaleVec_: ; 0x020B8998
+ cmp r3, #0x0
+ beq _020B89C8
+ ldr r1, [r0, #0x0]
+ add r1, r1, r2
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r2
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, r2
+ str r1, [r0, #0x8]
+ bx lr
+_020B89C8:
+ ldr r3, [r1, #0x0]
+ ldr r12, [r0, #0x0]
+ mul r3, r2, r3
+ add r3, r12, r3, asr #0xc
+ str r3, [r0, #0x0]
+ ldr r3, [r1, #0x4]
+ ldr r12, [r0, #0x4]
+ mul r3, r2, r3
+ add r3, r12, r3, asr #0xc
+ str r3, [r0, #0x4]
+ ldr r1, [r1, #0x8]
+ ldr r3, [r0, #0x8]
+ mul r1, r2, r1
+ add r1, r3, r1, asr #0xc
+ str r1, [r0, #0x8]
+ bx lr
+ arm_func_end blendScaleVec_
+
+ arm_func_start NNSi_G3dAnmBlendMat
+NNSi_G3dAnmBlendMat: ; 0x020B8A08
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ mov r5, r1
+ mov r0, #0x0
+ mov r4, r2, lsl #0x1
+ mov r7, #0x1
+_020B8A24:
+ add r1, r4, r5
+ ldrh r2, [r1, #0x1a]
+ ands r1, r2, #0x100
+ beq _020B8A4C
+ ldr r3, [r5, #0xc]
+ mov r0, r6
+ mov r1, r5
+ and r2, r2, #0xff
+ blx r3
+ mov r0, r7
+_020B8A4C:
+ ldr r5, [r5, #0x10]
+ cmp r5, #0x0
+ bne _020B8A24
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNSi_G3dAnmBlendMat
diff --git a/arm9/asm/NNS_G3D_basic.s b/arm9/asm/NNS_G3D_basic.s
new file mode 100644
index 00000000..a9849429
--- /dev/null
+++ b/arm9/asm/NNS_G3D_basic.s
@@ -0,0 +1,62 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dGetJointScaleBasic
+NNSi_G3dGetJointScaleBasic: ; 0x020BE62C
+ ands r2, r3, #0x4
+ ldrne r1, [r0, #0x0]
+ orrne r1, r1, #0x1
+ strne r1, [r0, #0x0]
+ bne _020BE658
+ ldr r2, [r1, #0x0]
+ str r2, [r0, #0x4]
+ ldr r2, [r1, #0x4]
+ str r2, [r0, #0x8]
+ ldr r1, [r1, #0x8]
+ str r1, [r0, #0xc]
+_020BE658:
+ ldr r1, [r0, #0x0]
+ orr r1, r1, #0x18
+ str r1, [r0, #0x0]
+ bx lr
+ arm_func_end NNSi_G3dGetJointScaleBasic
+
+ arm_func_start NNSi_G3dSendJointSRTBasic
+NNSi_G3dSendJointSRTBasic: ; 0x020BE668
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r1, [r4, #0x0]
+ ands r0, r1, #0x4
+ bne _020BE6AC
+ ands r0, r1, #0x2
+ bne _020BE698
+ add r1, r4, #0x28
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+ b _020BE6C4
+_020BE698:
+ add r1, r4, #0x4c
+ mov r0, #0x1c
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+ b _020BE6C4
+_020BE6AC:
+ ands r0, r1, #0x2
+ bne _020BE6C4
+ add r1, r4, #0x28
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+_020BE6C4:
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x1
+ ldmneia sp!, {r4,pc}
+ add r1, r4, #0x4
+ mov r0, #0x1b
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_G3dSendJointSRTBasic
diff --git a/arm9/asm/NNS_G3D_cgtool.s b/arm9/asm/NNS_G3D_cgtool.s
new file mode 100644
index 00000000..e17cfaf5
--- /dev/null
+++ b/arm9/asm/NNS_G3D_cgtool.s
@@ -0,0 +1,23 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global NNS_G3dSendJointSRT_FuncArray
+NNS_G3dSendJointSRT_FuncArray: ; 0x02106608
+ .word NNSi_G3dSendJointSRTBasic
+ .word NNSi_G3dSendJointSRTMaya
+ .word NNSi_G3dSendJointSRTSi3d
+
+ .global NNS_G3dGetJointScale_FuncArray
+NNS_G3dGetJointScale_FuncArray: ; 0x02106614
+ .word NNSi_G3dGetJointScaleBasic
+ .word NNSi_G3dGetJointScaleMaya
+ .word NNSi_G3dGetJointScaleSi3d
+
+ .global NNS_G3dSendTexSRT_FuncArray
+NNS_G3dSendTexSRT_FuncArray: ; 0x02106620
+ .word NNSi_G3dSendTexSRTMaya
+ .word NNSi_G3dSendTexSRTSi3d
+ .word NNSi_G3dSendTexSRT3dsMax
+ .word NNSi_G3dSendTexSRTXsi
diff --git a/arm9/asm/NNS_G3D_gecom.s b/arm9/asm/NNS_G3D_gecom.s
new file mode 100644
index 00000000..2caeb535
--- /dev/null
+++ b/arm9/asm/NNS_G3D_gecom.s
@@ -0,0 +1,197 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global NNS_G3dGeBuffer
+NNS_G3dGeBuffer: ; 0x021D1C80
+ .space 0x4
+
+ .global NNS_G3dFlagGXDmaAsync
+NNS_G3dFlagGXDmaAsync: ; 0x021D1C84
+ .space 0x4
+
+ .global NNS_G3dFlagUseFastDma
+NNS_G3dFlagUseFastDma: ; 0x021D1C88
+ .space 0x4
+
+ .section .text
+
+ arm_func_start NNS_G3dGeBufferOP_N
+NNS_G3dGeBufferOP_N: ; 0x020BB1C0
+ stmdb sp!, {r4-r6,lr}
+ ldr r3, _020BB2A4 ; =NNS_G3dGeBuffer
+ mov r6, r0
+ ldr r12, [r3, #0x0]
+ mov r5, r1
+ mov r4, r2
+ cmp r12, #0x0
+ beq _020BB278
+ ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020BB24C
+ ldr r2, [r12, #0x0]
+ add r0, r2, #0x1
+ add r1, r0, r4
+ cmp r1, #0xc0
+ bhi _020BB24C
+ str r0, [r12, #0x0]
+ ldr r0, [r3, #0x0]
+ cmp r4, #0x0
+ add r0, r0, r2, lsl #0x2
+ str r6, [r0, #0x4]
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r2, [r3, #0x0]
+ mov r0, r5
+ ldr r1, [r2], #0x4
+ add r1, r2, r1, lsl #0x2
+ mov r2, r4, lsl #0x2
+ bl MIi_CpuCopyFast
+ ldr r0, _020BB2A4 ; =NNS_G3dGeBuffer
+ ldr r1, [r0, #0x0]
+ ldr r0, [r1, #0x0]
+ add r0, r0, r4
+ str r0, [r1, #0x0]
+ ldmia sp!, {r4-r6,pc}
+_020BB24C:
+ ldr r0, [r12, #0x0]
+ cmp r0, #0x0
+ beq _020BB260
+ bl NNS_G3dGeFlushBuffer
+ b _020BB28C
+_020BB260:
+ ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020BB28C
+ bl NNS_G3dGeWaitSendDL
+ b _020BB28C
+_020BB278:
+ ldr r0, _020BB2A8 ; =NNS_G3dFlagGXDmaAsync
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020BB28C
+ bl NNS_G3dGeWaitSendDL
+_020BB28C:
+ ldr r1, _020BB2AC ; =0x04000400
+ mov r0, r5
+ mov r2, r4, lsl #0x2
+ str r6, [r1, #0x0]
+ bl MIi_CpuSend32
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020BB2A4: .word NNS_G3dGeBuffer
+_020BB2A8: .word NNS_G3dFlagGXDmaAsync
+_020BB2AC: .word 0x04000400
+ arm_func_end NNS_G3dGeBufferOP_N
+
+ arm_func_start NNS_G3dGeSendDL
+NNS_G3dGeSendDL: ; 0x020BB2B0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r5, r0
+ cmp r4, #0x100
+ blo _020BB2DC
+ ldr r1, _020BB360 ; =GXi_DmaId
+ mvn r0, #0x0
+ ldr r1, [r1, #0x0]
+ cmp r1, r0
+ bne _020BB2F8
+_020BB2DC:
+ mov r2, r4, lsr #0x2
+ ldr r0, [r5, #0x0]
+ add r1, r5, #0x4
+ sub r2, r2, #0x1
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020BB2F8:
+ bl NNS_G3dGeFlushBuffer
+ ldr r0, _020BB364 ; =NNS_G3dFlagUseFastDma
+ ldr r1, _020BB368 ; =NNS_G3dFlagGXDmaAsync
+ ldr r0, [r0, #0x0]
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ cmp r0, #0x0
+ beq _020BB33C
+ ldr r0, _020BB360 ; =GXi_DmaId
+ str r1, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r3, _020BB36C ; =simpleUnlock_
+ mov r1, r5
+ mov r2, r4
+ bl MI_SendGXCommandAsyncFast
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020BB33C:
+ ldr r0, _020BB360 ; =GXi_DmaId
+ str r1, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ ldr r3, _020BB36C ; =simpleUnlock_
+ mov r1, r5
+ mov r2, r4
+ bl MI_SendGXCommandAsync
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BB360: .word GXi_DmaId
+_020BB364: .word NNS_G3dFlagUseFastDma
+_020BB368: .word NNS_G3dFlagGXDmaAsync
+_020BB36C: .word simpleUnlock_
+ arm_func_end NNS_G3dGeSendDL
+
+ arm_func_start simpleUnlock_
+simpleUnlock_: ; 0x020BB370
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ arm_func_end simpleUnlock_
+
+ arm_func_start NNS_G3dGeWaitSendDL
+NNS_G3dGeWaitSendDL: ; 0x020BB37C
+ ldr r0, _020BB390 ; =NNS_G3dFlagGXDmaAsync
+_020BB380:
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ bne _020BB380
+ bx lr
+ .balign 4
+_020BB390: .word NNS_G3dFlagGXDmaAsync
+ arm_func_end NNS_G3dGeWaitSendDL
+
+ arm_func_start NNS_G3dGeFlushBuffer
+NNS_G3dGeFlushBuffer: ; 0x020BB394
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020BB3FC ; =NNS_G3dFlagGXDmaAsync
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020BB3B0
+ bl NNS_G3dGeWaitSendDL
+_020BB3B0:
+ ldr r0, _020BB400 ; =NNS_G3dGeBuffer
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r1, _020BB404 ; =0x04000400
+ add r0, r0, #0x4
+ mov r2, r2, lsl #0x2
+ bl MIi_CpuSend32
+ ldr r0, _020BB400 ; =NNS_G3dGeBuffer
+ mov r1, #0x0
+ ldr r0, [r0, #0x0]
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020BB3FC: .word NNS_G3dFlagGXDmaAsync
+_020BB400: .word NNS_G3dGeBuffer
+_020BB404: .word 0x04000400
+ arm_func_end NNS_G3dGeFlushBuffer
diff --git a/arm9/asm/NNS_G3D_glbstate.s b/arm9/asm/NNS_G3D_glbstate.s
new file mode 100644
index 00000000..3dbb215f
--- /dev/null
+++ b/arm9/asm/NNS_G3D_glbstate.s
@@ -0,0 +1,355 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global NNS_G3dGlb
+NNS_G3dGlb: ; 0x021CED18
+ .space 0x264
+
+ .section .text
+
+ arm_func_start NNS_G3dGlbGetViewPort
+NNS_G3dGlbGetViewPort: ; 0x020B8200
+ cmp r0, #0x0
+ ldrne ip, _020B8260 ; =NNS_G3dGlb
+ ldrne r12, [r12, #0xa0]
+ andne r12, r12, #0xff
+ strne r12, [r0, #0x0]
+ cmp r1, #0x0
+ ldrne r0, _020B8260 ; =NNS_G3dGlb
+ ldrne r0, [r0, #0xa0]
+ movne r0, r0, lsr #0x8
+ andne r0, r0, #0xff
+ strne r0, [r1, #0x0]
+ cmp r2, #0x0
+ ldrne r0, _020B8260 ; =NNS_G3dGlb
+ ldrne r0, [r0, #0xa0]
+ movne r0, r0, lsr #0x10
+ andne r0, r0, #0xff
+ strne r0, [r2, #0x0]
+ cmp r3, #0x0
+ ldrne r0, _020B8260 ; =NNS_G3dGlb
+ ldrne r0, [r0, #0xa0]
+ movne r0, r0, lsr #0x18
+ andne r0, r0, #0xff
+ strne r0, [r3, #0x0]
+ bx lr
+ .balign 4
+_020B8260: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbGetViewPort
+
+ arm_func_start NNS_G3dGlbGetInvWV
+NNS_G3dGlbGetInvWV: ; 0x020B8264
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020B829C ; =NNS_G3dGlb
+ ldr r0, [r0, #0xfc]
+ ands r0, r0, #0x80
+ bne _020B8290
+ bl calcSrtCameraMtx_
+ ldr r0, _020B829C ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ orr r1, r1, #0x80
+ str r1, [r0, #0xfc]
+_020B8290:
+ ldr r0, _020B82A0 ; =NNS_G3dGlb + 0x160
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B829C: .word NNS_G3dGlb
+_020B82A0: .word NNS_G3dGlb + 0x160
+ arm_func_end NNS_G3dGlbGetInvWV
+
+ arm_func_start NNS_G3dGlbGetWV
+NNS_G3dGlbGetWV: ; 0x020B82A4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020B82DC ; =NNS_G3dGlb
+ ldr r0, [r0, #0xfc]
+ ands r0, r0, #0x80
+ bne _020B82D0
+ bl calcSrtCameraMtx_
+ ldr r0, _020B82DC ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ orr r1, r1, #0x80
+ str r1, [r0, #0xfc]
+_020B82D0:
+ ldr r0, _020B82E0 ; =NNS_G3dGlb + 0x130
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B82DC: .word NNS_G3dGlb
+_020B82E0: .word NNS_G3dGlb + 0x130
+ arm_func_end NNS_G3dGlbGetWV
+
+ arm_func_start calcSrtCameraMtx_
+calcSrtCameraMtx_: ; 0x020B82E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020B8330 ; =NNS_G3dGlb + 0xBC
+ ldr r1, _020B8334 ; =NNS_G3dGlb + 0x4C
+ ldr r2, _020B8338 ; =NNS_G3dGlb + 0x130
+ bl MTX_Concat43
+ ldr r3, _020B833C ; =NNS_G3dGlb
+ ldr r0, _020B8338 ; =NNS_G3dGlb + 0x130
+ ldr r2, [r3, #0xf4]
+ mov r1, r0
+ str r2, [sp, #0x0]
+ ldr r2, [r3, #0xec]
+ ldr r3, [r3, #0xf0]
+ bl MTX_ScaleApply43
+ ldr r0, _020B8338 ; =NNS_G3dGlb + 0x130
+ ldr r1, _020B8340 ; =NNS_G3dGlb + 0x160
+ bl MTX_Inverse43
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B8330: .word NNS_G3dGlb + 0xBC
+_020B8334: .word NNS_G3dGlb + 0x4C
+_020B8338: .word NNS_G3dGlb + 0x130
+_020B833C: .word NNS_G3dGlb
+_020B8340: .word NNS_G3dGlb + 0x160
+ arm_func_end calcSrtCameraMtx_
+
+ arm_func_start NNS_G3dGlbGetInvV
+NNS_G3dGlbGetInvV: ; 0x020B8344
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020B8384 ; =NNS_G3dGlb
+ ldr r0, [r0, #0xfc]
+ ands r0, r0, #0x8
+ bne _020B8378
+ ldr r0, _020B8388 ; =NNS_G3dGlb + 0x4C
+ ldr r1, _020B838C ; =NNS_G3dGlb + 0x100
+ bl MTX_Inverse43
+ ldr r0, _020B8384 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ orr r1, r1, #0x8
+ str r1, [r0, #0xfc]
+_020B8378:
+ ldr r0, _020B838C ; =NNS_G3dGlb + 0x100
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B8384: .word NNS_G3dGlb
+_020B8388: .word NNS_G3dGlb + 0x4C
+_020B838C: .word NNS_G3dGlb + 0x100
+ arm_func_end NNS_G3dGlbGetInvV
+
+ arm_func_start NNS_G3dGlbPolygonAttr
+NNS_G3dGlbPolygonAttr: ; 0x020B8390
+ orr r0, r0, r1, lsl #0x4
+ ldr r1, [sp, #0x4]
+ orr r0, r0, r2, lsl #0x6
+ orr r0, r1, r0
+ ldr r2, [sp, #0x0]
+ orr r1, r0, r3, lsl #0x18
+ ldr r0, _020B83B8 ; =NNS_G3dGlb
+ orr r1, r1, r2, lsl #0x10
+ str r1, [r0, #0x9c]
+ bx lr
+ .balign 4
+_020B83B8: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbPolygonAttr
+
+ arm_func_start NNS_G3dGlbMaterialColorSpecEmi
+NNS_G3dGlbMaterialColorSpecEmi: ; 0x020B83BC
+ cmp r2, #0x0
+ movne r2, #0x1
+ orr r1, r0, r1, lsl #0x10
+ moveq r2, #0x0
+ ldr r0, _020B83DC ; =NNS_G3dGlb
+ orr r1, r1, r2, lsl #0xf
+ str r1, [r0, #0x98]
+ bx lr
+ .balign 4
+_020B83DC: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbMaterialColorSpecEmi
+
+ arm_func_start NNS_G3dGlbMaterialColorDiffAmb
+NNS_G3dGlbMaterialColorDiffAmb: ; 0x020B83E0
+ cmp r2, #0x0
+ movne r2, #0x1
+ orr r1, r0, r1, lsl #0x10
+ moveq r2, #0x0
+ ldr r0, _020B8400 ; =NNS_G3dGlb
+ orr r1, r1, r2, lsl #0xf
+ str r1, [r0, #0x94]
+ bx lr
+ .balign 4
+_020B8400: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbMaterialColorDiffAmb
+
+ arm_func_start NNS_G3dGlbLightColor
+NNS_G3dGlbLightColor: ; 0x020B8404
+ ldr r2, _020B8414 ; =NNS_G3dGlb + 0xA8
+ orr r1, r1, r0, lsl #0x1e
+ str r1, [r2, r0, lsl #0x2]
+ bx lr
+ .balign 4
+_020B8414: .word NNS_G3dGlb + 0xA8
+ arm_func_end NNS_G3dGlbLightColor
+
+ arm_func_start NNS_G3dGlbLightVector
+NNS_G3dGlbLightVector: ; 0x020B8418
+ stmdb sp!, {r4,lr}
+ ldr ip, _020B8444 ; =0x000003FF
+ ldr lr, _020B8448 ; =NNS_G3dGlb + 0x80
+ and r4, r12, r1, asr #0x3
+ and r1, r12, r2, asr #0x3
+ and r2, r12, r3, asr #0x3
+ orr r1, r4, r1, lsl #0xa
+ orr r1, r1, r2, lsl #0x14
+ orr r1, r1, r0, lsl #0x1e
+ str r1, [lr, r0, lsl #0x2]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020B8444: .word 0x000003FF
+_020B8448: .word NNS_G3dGlb + 0x80
+ arm_func_end NNS_G3dGlbLightVector
+
+ arm_func_start NNS_G3dGlbSetBaseScale
+NNS_G3dGlbSetBaseScale: ; 0x020B844C
+ ldr r3, _020B846C ; =NNS_G3dGlb + 0xEC
+ ldmia r0, {r0-r2}
+ stmia r3, {r0-r2}
+ ldr r0, _020B8470 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ bic r1, r1, #0xa4
+ str r1, [r0, #0xfc]
+ bx lr
+ .balign 4
+_020B846C: .word NNS_G3dGlb + 0xEC
+_020B8470: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbSetBaseScale
+
+ arm_func_start NNS_G3dGlbSetBaseTrans
+NNS_G3dGlbSetBaseTrans: ; 0x020B8474
+ ldr r3, _020B8494 ; =NNS_G3dGlb + 0xE0
+ ldmia r0, {r0-r2}
+ stmia r3, {r0-r2}
+ ldr r0, _020B8498 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ bic r1, r1, #0xa4
+ str r1, [r0, #0xfc]
+ bx lr
+ .balign 4
+_020B8494: .word NNS_G3dGlb + 0xE0
+_020B8498: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbSetBaseTrans
+
+ arm_func_start NNS_G3dGlbFlushP
+NNS_G3dGlbFlushP: ; 0x020B849C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, _020B84D4 ; =NNS_G3dGlb
+ mov r2, #0x3e
+ ldr r0, [r1], #0x4
+ bl NNS_G3dGeBufferOP_N
+ ldr r0, _020B84D4 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ bic r1, r1, #0x1
+ str r1, [r0, #0xfc]
+ bic r1, r1, #0x2
+ str r1, [r0, #0xfc]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020B84D4: .word NNS_G3dGlb
+ arm_func_end NNS_G3dGlbFlushP
+
+ arm_func_start NNS_G3dGlbInit
+NNS_G3dGlbInit: ; 0x020B84D8
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r8, _020B85F4 ; =0x17101610
+ ldr r1, _020B85F8 ; =NNS_G3dGlb
+ ldr r5, _020B85FC ; =0x32323232
+ ldr r4, _020B8600 ; =0x60293130
+ ldr r3, _020B8604 ; =0x33333333
+ ldr r2, _020B8608 ; =0x002A1B19
+ mov r7, #0x0
+ mov r6, #0x2
+ ldr r0, _020B860C ; =NNS_G3dGlb + 0x4C
+ str r8, [r1, #0x0]
+ str r7, [r1, #0x4]
+ str r6, [r1, #0x48]
+ str r5, [r1, #0x7c]
+ str r4, [r1, #0x90]
+ str r3, [r1, #0xa4]
+ str r2, [r1, #0xb8]
+ bl MTX_Identity43_
+ ldr r0, _020B8610 ; =NNS_G3dGlb + 0x8
+ bl MTX_Identity44_
+ mov r2, r7
+ ldr r1, _020B85F8 ; =NNS_G3dGlb
+ ldr r7, _020B8614 ; =0x4210C210
+ ldr r0, _020B8618 ; =0x40000200
+ ldr lr, _020B861C ; =0x2D8B62D8
+ ldr sb, _020B8620 ; =0x800001FF
+ ldr r8, _020B8624 ; =0xC0080000
+ ldr r6, _020B8628 ; =0x001F008F
+ ldr r5, _020B862C ; =0xBFFF0000
+ ldr r4, _020B8630 ; =0x00007FFF
+ ldr ip, _020B8634 ; =0x800003E0
+ ldr r3, _020B8638 ; =0xC0007C00
+ str r0, [r1, #0x84]
+ str lr, [r1, #0x80]
+ mov lr, #0x4000001f
+ ldr r0, _020B863C ; =NNS_G3dGlb + 0xBC
+ str r9, [r1, #0x88]
+ str r8, [r1, #0x8c]
+ str r7, [r1, #0x94]
+ str r7, [r1, #0x98]
+ str r6, [r1, #0x9c]
+ str r5, [r1, #0xa0]
+ str r4, [r1, #0xa8]
+ str lr, [r1, #0xac]
+ str r12, [r1, #0xb0]
+ str r3, [r1, #0xb4]
+ str r2, [r1, #0xe0]
+ str r2, [r1, #0xe4]
+ str r2, [r1, #0xe8]
+ bl MTX_Identity33_
+ mov r3, #0x1000
+ ldr r0, _020B85F8 ; =NNS_G3dGlb
+ mov r2, #0x0
+ rsb r1, r3, #0x0
+ str r3, [r0, #0xec]
+ str r3, [r0, #0xf0]
+ str r3, [r0, #0xf4]
+ str r2, [r0, #0xf8]
+ str r2, [r0, #0xfc]
+ str r2, [r0, #0x248]
+ str r2, [r0, #0x244]
+ str r2, [r0, #0x240]
+ str r2, [r0, #0x254]
+ str r2, [r0, #0x24c]
+ str r3, [r0, #0x250]
+ str r2, [r0, #0x25c]
+ str r2, [r0, #0x258]
+ str r1, [r0, #0x260]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020B85F4: .word 0x17101610
+_020B85F8: .word NNS_G3dGlb
+_020B85FC: .word 0x32323232
+_020B8600: .word 0x60293130
+_020B8604: .word 0x33333333
+_020B8608: .word 0x002A1B19
+_020B860C: .word NNS_G3dGlb + 0x4C
+_020B8610: .word NNS_G3dGlb + 0x8
+_020B8614: .word 0x4210C210
+_020B8618: .word 0x40000200
+_020B861C: .word 0x2D8B62D8
+_020B8620: .word 0x800001FF
+_020B8624: .word 0xC0080000
+_020B8628: .word 0x001F008F
+_020B862C: .word 0xBFFF0000
+_020B8630: .word 0x00007FFF
+_020B8634: .word 0x800003E0
+_020B8638: .word 0xC0007C00
+_020B863C: .word NNS_G3dGlb + 0xBC
+ arm_func_end NNS_G3dGlbInit
diff --git a/arm9/asm/NNS_G3D_kernel.s b/arm9/asm/NNS_G3D_kernel.s
new file mode 100644
index 00000000..ebf3d210
--- /dev/null
+++ b/arm9/asm/NNS_G3D_kernel.s
@@ -0,0 +1,858 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G3dReleaseMdlSet
+NNS_G3dReleaseMdlSet: ; 0x020B772C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r0
+ ldrb r0, [r6, #0x9]
+ mov r5, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r7,pc}
+ add r4, r6, #0x8
+_020B7750:
+ ldrh r0, [r6, #0xe]
+ ldrh r1, [r4, r0]
+ add r0, r4, r0
+ mla r0, r1, r5, r0
+ ldr r0, [r0, #0x4]
+ add r7, r6, r0
+ mov r0, r7
+ bl NNS_G3dReleaseMdlTex
+ mov r0, r7
+ bl NNS_G3dReleaseMdlPltt
+ ldrb r0, [r6, #0x9]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blo _020B7750
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G3dReleaseMdlSet
+
+ arm_func_start NNS_G3dBindMdlSet
+NNS_G3dBindMdlSet: ; 0x020B7790
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r8, r0
+ ldrb r0, [r8, #0x9]
+ mov r7, r1
+ mov r5, #0x1
+ cmp r0, #0x0
+ mov r6, #0x0
+ bls _020B7800
+ add r4, r8, #0x8
+_020B77B8:
+ ldrh r0, [r8, #0xe]
+ mov r1, r7
+ ldrh r2, [r4, r0]
+ add r0, r4, r0
+ mla r0, r2, r6, r0
+ ldr r0, [r0, #0x4]
+ add r9, r8, r0
+ mov r0, r9
+ bl NNS_G3dBindMdlTex
+ and r5, r5, r0
+ mov r0, r9
+ mov r1, r7
+ bl NNS_G3dBindMdlPltt
+ ldrb r1, [r8, #0x9]
+ add r6, r6, #0x1
+ and r5, r5, r0
+ cmp r6, r1
+ blo _020B77B8
+_020B7800:
+ mov r0, r5
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end NNS_G3dBindMdlSet
+
+ arm_func_start NNS_G3dReleaseMdlPltt
+NNS_G3dReleaseMdlPltt: ; 0x020B780C
+ ldr r2, [r0, #0x8]
+ mov r1, #0x0
+ add r2, r0, r2
+ ldrh r0, [r2, #0x2]
+ add r12, r2, r0
+ ldrb r0, [r12, #0x1]
+ cmp r0, #0x0
+ bxls lr
+_020B782C:
+ ldrh r2, [r12, #0x6]
+ ldrh r0, [r12, r2]
+ add r2, r12, r2
+ add r2, r2, #0x4
+ mla r3, r0, r1, r2
+ ldrb r0, [r3, #0x3]
+ add r1, r1, #0x1
+ ands r2, r0, #0x1
+ bicne r0, r0, #0x1
+ strneb r0, [r3, #0x3]
+ ldrb r0, [r12, #0x1]
+ cmp r1, r0
+ blo _020B782C
+ bx lr
+ arm_func_end NNS_G3dReleaseMdlPltt
+
+ arm_func_start NNS_G3dBindMdlPltt
+NNS_G3dBindMdlPltt: ; 0x020B7864
+ stmdb sp!, {r4-r10,lr}
+ ldr r2, [r0, #0x8]
+ mov r10, r1
+ add r9, r0, r2
+ ldrh r0, [r9, #0x2]
+ mov r6, #0x1
+ mov r7, #0x0
+ add r8, r9, r0
+ ldrb r0, [r8, #0x1]
+ cmp r0, #0x0
+ bls _020B7908
+ mov r5, r7
+ mov r4, r7
+_020B7898:
+ ldrh r1, [r8, #0x6]
+ ldrh r0, [r10, #0x34]
+ add r2, r8, r1
+ ldrh r1, [r2, #0x2]
+ add r0, r10, r0
+ add r1, r2, r1
+ add r1, r1, r5
+ bl NNS_G3dGetResDataByName
+ movs r3, r0
+ beq _020B78F0
+ ldrh r1, [r8, #0x6]
+ ldrh r0, [r8, r1]
+ add r1, r8, r1
+ add r1, r1, #0x4
+ mla r1, r0, r7, r1
+ ldrb r0, [r1, #0x3]
+ ands r0, r0, #0x1
+ bne _020B78F4
+ mov r0, r9
+ mov r2, r10
+ bl bindMdlPltt_Internal_
+ b _020B78F4
+_020B78F0:
+ mov r6, r4
+_020B78F4:
+ ldrb r0, [r8, #0x1]
+ add r7, r7, #0x1
+ add r5, r5, #0x10
+ cmp r7, r0
+ blo _020B7898
+_020B7908:
+ mov r0, r6
+ ldmia sp!, {r4-r10,pc}
+ arm_func_end NNS_G3dBindMdlPltt
+
+ arm_func_start bindMdlPltt_Internal_
+bindMdlPltt_Internal_: ; 0x020B7910
+ stmdb sp!, {r4-r6,lr}
+ ldrh r5, [r1, #0x0]
+ ldr r2, [r2, #0x2c]
+ ldrh r4, [r3, #0x2]
+ mov r2, r2, lsl #0x10
+ add r12, r0, r5
+ mov r5, r2, lsr #0x10
+ ands r2, r4, #0x1
+ ldrh r4, [r3, #0x0]
+ moveq r3, r5, lsl #0xf
+ moveq r5, r3, lsr #0x10
+ moveq r2, r4, lsl #0xf
+ moveq r4, r2, lsr #0x10
+ ldrb r3, [r1, #0x2]
+ mov r2, #0x0
+ cmp r3, #0x0
+ bls _020B7994
+ add r3, r4, r5
+ mov r3, r3, lsl #0x10
+ add r6, r0, #0x4
+ mov r4, r3, lsr #0x10
+_020B7964:
+ ldrh r5, [r0, #0xa]
+ ldrb r3, [r12, r2]
+ add r2, r2, #0x1
+ ldrh lr, [r6, r5]
+ add r5, r6, r5
+ mla r3, lr, r3, r5
+ ldr r3, [r3, #0x4]
+ add r3, r0, r3
+ strh r4, [r3, #0x1c]
+ ldrb r3, [r1, #0x2]
+ cmp r2, r3
+ blo _020B7964
+_020B7994:
+ ldrb r0, [r1, #0x3]
+ orr r0, r0, #0x1
+ strb r0, [r1, #0x3]
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end bindMdlPltt_Internal_
+
+ arm_func_start NNS_G3dReleaseMdlTex
+NNS_G3dReleaseMdlTex: ; 0x020B79A4
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, [r0, #0x8]
+ mov r4, #0x0
+ ldrh r1, [r0, r2]
+ add r6, r0, r2
+ add r5, r6, r1
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020B79C8:
+ ldrh r1, [r5, #0x6]
+ ldrh r0, [r5, r1]
+ add r1, r5, r1
+ add r1, r1, #0x4
+ mla r1, r0, r4, r1
+ ldrb r0, [r1, #0x3]
+ ands r0, r0, #0x1
+ beq _020B79F0
+ mov r0, r6
+ bl releaseMdlTex_Internal_
+_020B79F0:
+ ldrb r0, [r5, #0x1]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020B79C8
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dReleaseMdlTex
+
+ arm_func_start NNS_G3dBindMdlTex
+NNS_G3dBindMdlTex: ; 0x020B7A04
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x8]
+ mov r10, r1
+ ldrh r1, [r0, r2]
+ add r9, r0, r2
+ mov r11, #0x1
+ add r8, r9, r1
+ ldrb r0, [r8, #0x1]
+ mov r7, #0x0
+ cmp r0, #0x0
+ bls _020B7AAC
+ mov r6, r7
+ mov r4, r7
+ add r5, r10, #0x3c
+_020B7A40:
+ ldrh r1, [r8, #0x6]
+ mov r0, r5
+ add r2, r8, r1
+ ldrh r1, [r2, #0x2]
+ add r1, r2, r1
+ add r1, r1, r6
+ bl NNS_G3dGetResDataByName
+ movs r3, r0
+ beq _020B7A94
+ ldrh r1, [r8, #0x6]
+ ldrh r0, [r8, r1]
+ add r1, r8, r1
+ add r1, r1, #0x4
+ mla r1, r0, r7, r1
+ ldrb r0, [r1, #0x3]
+ ands r0, r0, #0x1
+ bne _020B7A98
+ mov r0, r9
+ mov r2, r10
+ bl bindMdlTex_Internal_
+ b _020B7A98
+_020B7A94:
+ mov r11, r4
+_020B7A98:
+ ldrb r0, [r8, #0x1]
+ add r7, r7, #0x1
+ add r6, r6, #0x10
+ cmp r7, r0
+ blo _020B7A40
+_020B7AAC:
+ mov r0, r11
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end NNS_G3dBindMdlTex
+
+ arm_func_start releaseMdlTex_Internal_
+releaseMdlTex_Internal_: ; 0x020B7AB8
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldrh r4, [r1, #0x0]
+ ldrb r2, [r1, #0x2]
+ mov r3, #0x0
+ add r12, r0, r4
+ cmp r2, #0x0
+ bls _020B7B28
+ add r2, r0, #0x4
+ mov r5, #0x1000
+ ldr lr, _020B7B3C ; =0xC00F0000
+_020B7AE4:
+ ldrh r7, [r0, #0xa]
+ ldrb r4, [r12, r3]
+ add r3, r3, #0x1
+ ldrh r6, [r2, r7]
+ add r7, r2, r7
+ mla r4, r6, r4, r7
+ ldr r4, [r4, #0x4]
+ add r6, r0, r4
+ ldr r4, [r6, #0x14]
+ and r4, r4, lr
+ str r4, [r6, #0x14]
+ str r5, [r6, #0x24]
+ ldr r4, [r6, #0x24]
+ str r4, [r6, #0x28]
+ ldrb r4, [r1, #0x2]
+ cmp r3, r4
+ blo _020B7AE4
+_020B7B28:
+ ldrb r0, [r1, #0x3]
+ bic r0, r0, #0x1
+ strb r0, [r1, #0x3]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B7B3C: .word 0xC00F0000
+ arm_func_end releaseMdlTex_Internal_
+
+ arm_func_start bindMdlTex_Internal_
+bindMdlTex_Internal_: ; 0x020B7B40
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r11, r1
+ mov r9, r3
+ ldr r1, [r9, #0x0]
+ mov r10, r0
+ and r0, r1, #0x1c000000
+ cmp r0, #0x14000000
+ ldrh r3, [r11, #0x0]
+ ldrne r1, [r2, #0x8]
+ mov r8, #0x0
+ add r0, r10, r3
+ str r0, [sp, #0x4]
+ ldrne r0, _020B7C50 ; =0x0000FFFF
+ andne r0, r1, r0
+ strne r0, [sp, #0x0]
+ ldreq r1, [r2, #0x18]
+ ldreq r0, _020B7C50 ; =0x0000FFFF
+ andeq r0, r1, r0
+ streq r0, [sp, #0x0]
+ ldrb r0, [r11, #0x2]
+ cmp r0, #0x0
+ bls _020B7C3C
+ mov r4, #0x1000
+ add r5, r10, #0x4
+_020B7BA4:
+ ldrh r6, [r10, #0xa]
+ ldr r0, [sp, #0x4]
+ ldr r1, [r9, #0x0]
+ ldrb r2, [r0, r8]
+ ldrh r3, [r5, r6]
+ ldr r0, [sp, #0x0]
+ add r6, r5, r6
+ add r0, r1, r0
+ mla r1, r3, r2, r6
+ ldr r1, [r1, #0x4]
+ add r6, r10, r1
+ ldr r1, [r6, #0x14]
+ orr r0, r1, r0
+ str r0, [r6, #0x14]
+ ldr r3, [r9, #0x4]
+ ldr r0, _020B7C54 ; =0x000007FF
+ ldrh r1, [r6, #0x20]
+ and r2, r3, r0
+ and r7, r0, r3, lsr #0xb
+ cmp r2, r1
+ moveq r0, r4
+ beq _020B7C08
+ mov r0, r2, lsl #0xc
+ mov r1, r1, lsl #0xc
+ bl FX_Div
+_020B7C08:
+ str r0, [r6, #0x24]
+ ldrh r1, [r6, #0x22]
+ cmp r7, r1
+ moveq r0, r4
+ beq _020B7C28
+ mov r0, r7, lsl #0xc
+ mov r1, r1, lsl #0xc
+ bl FX_Div
+_020B7C28:
+ str r0, [r6, #0x28]
+ ldrb r0, [r11, #0x2]
+ add r8, r8, #0x1
+ cmp r8, r0
+ blo _020B7BA4
+_020B7C3C:
+ ldrb r0, [r11, #0x3]
+ orr r0, r0, #0x1
+ strb r0, [r11, #0x3]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B7C50: .word 0x0000FFFF
+_020B7C54: .word 0x000007FF
+ arm_func_end bindMdlTex_Internal_
+
+ arm_func_start NNS_G3dPlttReleasePlttKey
+NNS_G3dPlttReleasePlttKey: ; 0x020B7C58
+ ldrh r2, [r0, #0x32]
+ mov r1, #0x0
+ bic r2, r2, #0x1
+ strh r2, [r0, #0x32]
+ ldr r2, [r0, #0x2c]
+ str r1, [r0, #0x2c]
+ mov r0, r2
+ bx lr
+ arm_func_end NNS_G3dPlttReleasePlttKey
+
+ arm_func_start NNS_G3dPlttLoad
+NNS_G3dPlttLoad: ; 0x020B7C78
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ movs r4, r1
+ mov r5, r0
+ beq _020B7C90
+ bl GX_BeginLoadTexPltt
+_020B7C90:
+ ldrh r2, [r5, #0x30]
+ ldr r0, [r5, #0x38]
+ ldr r3, [r5, #0x2c]
+ ldr r1, _020B7CD8 ; =0x0000FFFF
+ add r0, r5, r0
+ and r1, r3, r1
+ mov r1, r1, lsl #0x3
+ mov r2, r2, lsl #0x3
+ bl GX_LoadTexPltt
+ ldrh r0, [r5, #0x32]
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ orr r0, r0, #0x1
+ strh r0, [r5, #0x32]
+ ldmeqia sp!, {r4-r5,pc}
+ bl GX_EndLoadTexPltt
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B7CD8: .word 0x0000FFFF
+ arm_func_end NNS_G3dPlttLoad
+
+ arm_func_start NNS_G3dPlttSetPlttKey
+NNS_G3dPlttSetPlttKey: ; 0x020B7CDC
+ str r1, [r0, #0x2c]
+ bx lr
+ arm_func_end NNS_G3dPlttSetPlttKey
+
+ arm_func_start NNS_G3dPlttGetRequiredSize
+NNS_G3dPlttGetRequiredSize: ; 0x020B7CE4
+ ldrh r0, [r0, #0x30]
+ mov r0, r0, lsl #0x3
+ bx lr
+ arm_func_end NNS_G3dPlttGetRequiredSize
+
+ arm_func_start NNS_G3dTexReleaseTexKey
+NNS_G3dTexReleaseTexKey: ; 0x020B7CF0
+ ldrh r12, [r0, #0x10]
+ mov r3, #0x0
+ bic r12, r12, #0x1
+ strh r12, [r0, #0x10]
+ ldrh r12, [r0, #0x20]
+ bic r12, r12, #0x1
+ strh r12, [r0, #0x20]
+ ldr r12, [r0, #0x8]
+ str r12, [r1, #0x0]
+ str r3, [r0, #0x8]
+ ldr r1, [r0, #0x18]
+ str r1, [r2, #0x0]
+ str r3, [r0, #0x18]
+ bx lr
+ arm_func_end NNS_G3dTexReleaseTexKey
+
+ arm_func_start NNS_G3dTexLoad
+NNS_G3dTexLoad: ; 0x020B7D28
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ movs r8, r1
+ mov r9, r0
+ beq _020B7D40
+ bl GX_BeginLoadTex
+_020B7D40:
+ ldrh r0, [r9, #0xc]
+ movs r2, r0, lsl #0x3
+ beq _020B7D74
+ ldr r1, [r9, #0x8]
+ ldr r0, _020B7DF4 ; =0x0000FFFF
+ ldr r3, [r9, #0x14]
+ and r1, r1, r0
+ add r0, r9, r3
+ mov r1, r1, lsl #0x3
+ bl GX_LoadTex
+ ldrh r0, [r9, #0x10]
+ orr r0, r0, #0x1
+ strh r0, [r9, #0x10]
+_020B7D74:
+ ldrh r0, [r9, #0x1c]
+ movs r7, r0, lsl #0x3
+ beq _020B7DDC
+ ldr r1, [r9, #0x18]
+ ldr r0, _020B7DF4 ; =0x0000FFFF
+ ldr r3, [r9, #0x24]
+ and r4, r1, r0
+ mov r5, r4, lsl #0x3
+ ldr r6, [r9, #0x28]
+ mov r1, r5
+ mov r2, r7
+ add r0, r9, r3
+ add r6, r9, r6
+ bl GX_LoadTex
+ ldr r0, _020B7DF8 ; =0x0001FFFF
+ and r1, r5, #0x40000
+ and r0, r0, r4, lsl #0x3
+ mov r0, r0, lsr #0x1
+ add r2, r0, #0x20000
+ mov r0, r6
+ add r1, r2, r1, lsr #0x2
+ mov r2, r7, lsr #0x1
+ bl GX_LoadTex
+ ldrh r0, [r9, #0x20]
+ orr r0, r0, #0x1
+ strh r0, [r9, #0x20]
+_020B7DDC:
+ cmp r8, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,pc}
+ bl GX_EndLoadTex
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020B7DF4: .word 0x0000FFFF
+_020B7DF8: .word 0x0001FFFF
+ arm_func_end NNS_G3dTexLoad
+
+ arm_func_start NNS_G3dTexSetTexKey
+NNS_G3dTexSetTexKey: ; 0x020B7DFC
+ cmp r1, #0x0
+ strne r1, [r0, #0x8]
+ cmp r2, #0x0
+ strne r2, [r0, #0x18]
+ bx lr
+ arm_func_end NNS_G3dTexSetTexKey
+
+ arm_func_start NNS_G3dTex4x4GetRequiredSize
+NNS_G3dTex4x4GetRequiredSize: ; 0x020B7E10
+ ldrh r0, [r0, #0x1c]
+ mov r0, r0, lsl #0x3
+ bx lr
+ arm_func_end NNS_G3dTex4x4GetRequiredSize
+
+ arm_func_start NNS_G3dTexGetRequiredSize
+NNS_G3dTexGetRequiredSize: ; 0x020B7E1C
+ ldrh r0, [r0, #0xc]
+ mov r0, r0, lsl #0x3
+ bx lr
+ arm_func_end NNS_G3dTexGetRequiredSize
+
+ arm_func_start NNS_G3dRenderObjRemoveAnmObj
+NNS_G3dRenderObjRemoveAnmObj: ; 0x020B7E28
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ add r0, r5, #0x8
+ mov r4, r1
+ bl removeLink_
+ cmp r0, #0x0
+ bne _020B7E74
+ mov r1, r4
+ add r0, r5, #0x10
+ bl removeLink_
+ cmp r0, #0x0
+ bne _020B7E74
+ mov r1, r4
+ add r0, r5, #0x18
+ bl removeLink_
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+_020B7E74:
+ ldr r0, [r5, #0x0]
+ orr r0, r0, #0x10
+ str r0, [r5, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNS_G3dRenderObjRemoveAnmObj
+
+ arm_func_start removeLink_
+removeLink_: ; 0x020B7E88
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r2, r1
+ bne _020B7EB8
+ ldr r3, [r2, #0x10]
+ mov r2, #0x0
+ str r3, [r0, #0x0]
+ str r2, [r1, #0x10]
+ mov r0, #0x1
+ bx lr
+_020B7EB8:
+ ldr r3, [r2, #0x10]
+ cmp r3, #0x0
+ beq _020B7EF4
+_020B7EC4:
+ cmp r3, r1
+ bne _020B7EE4
+ ldr r1, [r3, #0x10]
+ mov r0, #0x0
+ str r1, [r2, #0x10]
+ str r0, [r3, #0x10]
+ mov r0, #0x1
+ bx lr
+_020B7EE4:
+ mov r2, r3
+ ldr r3, [r3, #0x10]
+ cmp r3, #0x0
+ bne _020B7EC4
+_020B7EF4:
+ mov r0, #0x0
+ bx lr
+ arm_func_end removeLink_
+
+ arm_func_start NNS_G3dRenderObjAddAnmObj
+NNS_G3dRenderObjAddAnmObj: ; 0x020B7EFC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ ldr r2, [r4, #0x8]
+ mov r5, r0
+ ldrb r0, [r2, #0x0]
+ cmp r0, #0x4a
+ beq _020B7F50
+ cmp r0, #0x4d
+ beq _020B7F34
+ cmp r0, #0x56
+ beq _020B7F6C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020B7F34:
+ add r0, r5, #0x3c
+ bl updateHintVec_
+ mov r1, r4
+ add r0, r5, #0x8
+ bl addLink_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020B7F50:
+ add r0, r5, #0x44
+ bl updateHintVec_
+ mov r1, r4
+ add r0, r5, #0x10
+ bl addLink_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020B7F6C:
+ add r0, r5, #0x4c
+ bl updateHintVec_
+ mov r1, r4
+ add r0, r5, #0x18
+ bl addLink_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNS_G3dRenderObjAddAnmObj
+
+ local_arm_func_start updateHintVec_
+updateHintVec_: ; 0x020B7F88
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ mov r3, #0x1
+ mov r4, #0x0
+_020B7FA4:
+ ldrb r2, [r1, #0x19]
+ mov r5, r4
+ cmp r2, #0x0
+ ble _020B7FE4
+_020B7FB4:
+ add r2, r1, r5, lsl #0x1
+ ldrh r2, [r2, #0x1a]
+ ands r2, r2, #0x100
+ movne lr, r5, asr #0x5
+ andne r2, r5, #0x1f
+ ldrne r12, [r0, lr, lsl #0x2]
+ add r5, r5, #0x1
+ orrne r2, r12, r3, lsl r2
+ strne r2, [r0, lr, lsl #0x2]
+ ldrb r2, [r1, #0x19]
+ cmp r5, r2
+ blt _020B7FB4
+_020B7FE4:
+ ldr r1, [r1, #0x10]
+ cmp r1, #0x0
+ bne _020B7FA4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end updateHintVec_
+
+ arm_func_start addLink_
+addLink_: ; 0x020B7FF8
+ ldr r12, [r0, #0x0]
+ cmp r12, #0x0
+ streq r1, [r0, #0x0]
+ bxeq lr
+ ldr r3, [r12, #0x10]
+ cmp r3, #0x0
+ bne _020B8058
+ ldrb r3, [r12, #0x18]
+ ldrb r2, [r1, #0x18]
+ cmp r3, r2
+ bls _020B8050
+ ldr r2, [r1, #0x10]
+ mov r3, r1
+ cmp r2, #0x0
+ beq _020B8044
+_020B8034:
+ ldr r3, [r3, #0x10]
+ ldr r2, [r3, #0x10]
+ cmp r2, #0x0
+ bne _020B8034
+_020B8044:
+ str r12, [r3, #0x10]
+ str r1, [r0, #0x0]
+ bx lr
+_020B8050:
+ str r1, [r12, #0x10]
+ bx lr
+_020B8058:
+ cmp r3, #0x0
+ beq _020B80AC
+ ldrb r2, [r1, #0x18]
+_020B8064:
+ ldrb r0, [r3, #0x18]
+ cmp r0, r2
+ blo _020B809C
+ ldr r0, [r1, #0x10]
+ mov r2, r1
+ cmp r0, #0x0
+ beq _020B8090
+_020B8080:
+ ldr r2, [r2, #0x10]
+ ldr r0, [r2, #0x10]
+ cmp r0, #0x0
+ bne _020B8080
+_020B8090:
+ str r1, [r12, #0x10]
+ str r3, [r2, #0x10]
+ bx lr
+_020B809C:
+ mov r12, r3
+ ldr r3, [r3, #0x10]
+ cmp r3, #0x0
+ bne _020B8064
+_020B80AC:
+ str r1, [r12, #0x10]
+ bx lr
+ arm_func_end addLink_
+
+ arm_func_start NNS_G3dRenderObjInit
+NNS_G3dRenderObjInit: ; 0x020B80B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ mov r1, r5
+ mov r0, #0x0
+ mov r2, #0x54
+ bl MIi_CpuClear32
+ ldr r0, _020B8104 ; =NNS_G3dFuncBlendMatDefault
+ ldr r1, _020B8108 ; =NNS_G3dFuncBlendJntDefault
+ ldr r2, [r0, #0x0]
+ ldr r0, _020B810C ; =NNS_G3dFuncBlendVisDefault
+ str r2, [r5, #0xc]
+ ldr r1, [r1, #0x0]
+ str r1, [r5, #0x14]
+ ldr r0, [r0, #0x0]
+ str r0, [r5, #0x1c]
+ str r4, [r5, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020B8104: .word NNS_G3dFuncBlendMatDefault
+_020B8108: .word NNS_G3dFuncBlendJntDefault
+_020B810C: .word NNS_G3dFuncBlendVisDefault
+ arm_func_end NNS_G3dRenderObjInit
+
+ arm_func_start NNS_G3dAnmObjInit
+NNS_G3dAnmObjInit: ; 0x020B8110
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r12, #0x0
+ str r12, [r0, #0x0]
+ str r1, [r0, #0x8]
+ str r12, [r0, #0x10]
+ mov r4, #0x7f
+ strb r4, [r0, #0x18]
+ mov r4, #0x1000
+ str r4, [r0, #0x4]
+ ldr lr, _020B81A4 ; =NNS_G3dAnmFmtNum
+ str r3, [r0, #0x14]
+ ldr r6, [lr, #0x0]
+ cmp r6, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r7,pc}
+ ldrb r7, [r1, #0x0]
+ ldr r4, _020B81A8 ; =NNS_G3dAnmObjInitFuncArray
+_020B8158:
+ ldrb r3, [r4, r12, lsl #0x3]
+ mov r5, r12, lsl #0x3
+ cmp r7, r3
+ bne _020B8190
+ add r3, r4, r5
+ ldrh lr, [r1, #0x2]
+ ldrh r3, [r3, #0x2]
+ cmp lr, r3
+ bne _020B8190
+ ldr r3, _020B81AC ; =NNS_G3dAnmObjInitFuncArray + 0x4
+ ldr r3, [r3, r5]
+ blx r3
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+_020B8190:
+ add r12, r12, #0x1
+ cmp r12, r6
+ blo _020B8158
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B81A4: .word NNS_G3dAnmFmtNum
+_020B81A8: .word NNS_G3dAnmObjInitFuncArray
+_020B81AC: .word NNS_G3dAnmObjInitFuncArray + 0x4
+ arm_func_end NNS_G3dAnmObjInit
+
+ arm_func_start NNS_G3dAnmObjCalcSizeRequired
+NNS_G3dAnmObjCalcSizeRequired: ; 0x020B81B0
+ ldrb r0, [r0, #0x0]
+ cmp r0, #0x4a
+ beq _020B81E4
+ cmp r0, #0x4d
+ beq _020B81D0
+ cmp r0, #0x56
+ beq _020B81E4
+ b _020B81F8
+_020B81D0:
+ ldrb r0, [r1, #0x18]
+ mov r0, r0, lsl #0x1
+ add r0, r0, #0x1c
+ bic r0, r0, #0x3
+ bx lr
+_020B81E4:
+ ldrb r0, [r1, #0x17]
+ mov r0, r0, lsl #0x1
+ add r0, r0, #0x1c
+ bic r0, r0, #0x3
+ bx lr
+_020B81F8:
+ mov r0, #0x0
+ bx lr
+ arm_func_end NNS_G3dAnmObjCalcSizeRequired
diff --git a/arm9/asm/NNS_G3D_maya.s b/arm9/asm/NNS_G3D_maya.s
new file mode 100644
index 00000000..7a675533
--- /dev/null
+++ b/arm9/asm/NNS_G3D_maya.s
@@ -0,0 +1,594 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+calcTexMtx_: ; 0x021067B0
+ .word texmtxCalc_flag_
+ .word texmtxCalc_flagS_
+ .word texmtxCalc_flagR_
+ .word texmtxCalc_flagRS_
+ .word texmtxCalc_flagT_
+ .word texmtxCalc_flagTS_
+ .word texmtxCalc_flagTR_
+ .word texmtxCalc_flagTRS_
+
+ .section .text
+
+ arm_func_start NNSi_G3dSendTexSRTMaya
+NNSi_G3dSendTexSRTMaya: ; 0x020BE6E4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x50
+ mov r4, r0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ ands r0, r0, #0x8
+ ldrne r0, _020BE820 ; =0x00101610
+ mov r3, #0x3
+ strne r0, [sp, #0x0]
+ ldreq r0, _020BE824 ; =0x00101810
+ mov r2, #0x2
+ streq r0, [sp, #0x0]
+ mov r0, #0x1000
+ str r0, [sp, #0x44]
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x48]
+ str r1, [sp, #0x40]
+ str r1, [sp, #0x34]
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x2c]
+ str r1, [sp, #0x28]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x10]
+ ldr r1, [r4, #0x0]
+ ldr r0, _020BE828 ; =calcTexMtx_
+ and r1, r1, #0x7
+ ldr r2, [r0, r1, lsl #0x2]
+ add r0, sp, #0x8
+ mov r1, r4
+ blx r2
+ ldr r3, [r4, #0x30]
+ cmp r3, #0x1000
+ beq _020BE7B4
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ smull r2, r0, r3, r0
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x8]
+ ldr r2, [r4, #0x30]
+ ldr r0, [sp, #0x38]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0xc]
+ ldr r1, [r4, #0x30]
+ smull r2, r0, r1, r0
+ mov r1, r2, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ str r1, [sp, #0x38]
+_020BE7B4:
+ ldr r3, [r4, #0x34]
+ cmp r3, #0x1000
+ beq _020BE804
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ smull r2, r0, r3, r0
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x18]
+ ldr r2, [r4, #0x34]
+ ldr r0, [sp, #0x3c]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0x1c]
+ ldr r1, [r4, #0x34]
+ smull r2, r0, r1, r0
+ mov r1, r2, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ str r1, [sp, #0x3c]
+_020BE804:
+ add r1, sp, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r1, #0x4
+ mov r2, #0x12
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x50
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BE820: .word 0x00101610
+_020BE824: .word 0x00101810
+_020BE828: .word calcTexMtx_
+ arm_func_end NNSi_G3dSendTexSRTMaya
+
+ local_arm_func_start texmtxCalc_flagTRS_
+texmtxCalc_flagTRS_: ; 0x020BE82C
+ mov r2, #0x1000
+ str r2, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x10]
+ str r2, [r0, #0x14]
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end texmtxCalc_flagTRS_
+
+ local_arm_func_start texmtxCalc_flagTR_
+texmtxCalc_flagTR_: ; 0x020BE850
+ ldr r2, [r1, #0x18]
+ mov r12, #0x0
+ str r2, [r0, #0x0]
+ ldr r2, [r1, #0x1c]
+ str r2, [r0, #0x14]
+ str r12, [r0, #0x4]
+ str r12, [r0, #0x30]
+ ldr r2, [r1, #0x1c]
+ ldrh r3, [r1, #0x2e]
+ mov r1, r2, lsl #0x1
+ rsb r1, r1, #0x0
+ add r1, r1, #0x2000
+ mul r1, r3, r1
+ mov r1, r1, lsl #0x3
+ str r1, [r0, #0x34]
+ str r12, [r0, #0x10]
+ bx lr
+ arm_func_end texmtxCalc_flagTR_
+
+ local_arm_func_start texmtxCalc_flagTS_
+texmtxCalc_flagTS_: ; 0x020BE894
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ mov r6, r0
+ mov r4, r2, lsl #0xc
+ mov r7, r1, lsl #0xc
+ mov r0, r7
+ mov r1, r4
+ bl FX_DivAsync
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x0]
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x14]
+ bl FX_GetDivResult
+ ldrsh r2, [r5, #0x20]
+ mov r1, r7
+ rsb r2, r2, #0x0
+ mul r0, r2, r0
+ mov r2, r0, asr #0xc
+ mov r0, r4
+ str r2, [r6, #0x4]
+ bl FX_DivAsync
+ ldrsh r1, [r5, #0x20]
+ ldrsh r0, [r5, #0x22]
+ ldrh r2, [r5, #0x2c]
+ add r0, r1, r0
+ rsb r0, r0, #0x0
+ add r0, r0, #0x1000
+ mul r0, r2, r0
+ mov r0, r0, lsl #0x3
+ str r0, [r6, #0x30]
+ ldrsh r1, [r5, #0x20]
+ ldrsh r0, [r5, #0x22]
+ ldrh r2, [r5, #0x2e]
+ sub r0, r1, r0
+ add r0, r0, #0x1000
+ mul r0, r2, r0
+ mov r0, r0, lsl #0x3
+ str r0, [r6, #0x34]
+ bl FX_GetDivResult
+ ldrsh r1, [r5, #0x20]
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end texmtxCalc_flagTS_
+
+ local_arm_func_start texmtxCalc_flagT_
+texmtxCalc_flagT_: ; 0x020BE954
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r9, r1
+ ldrh r2, [r9, #0x2c]
+ ldrh r1, [r9, #0x2e]
+ mov r10, r0
+ mov r8, r2, lsl #0xc
+ mov r11, r1, lsl #0xc
+ mov r0, r11
+ mov r1, r8
+ bl FX_DivAsync
+ ldrsh r5, [r9, #0x22]
+ ldr r3, [r9, #0x18]
+ ldrsh r0, [r9, #0x20]
+ ldr r4, [r9, #0x1c]
+ smull r2, r1, r3, r5
+ mov r6, r2, lsr #0xc
+ orr r6, r6, r1, lsl #0x14
+ smull r2, r1, r3, r0
+ mov r7, r2, lsr #0xc
+ orr r7, r7, r1, lsl #0x14
+ smull r3, r2, r4, r0
+ smull r1, r0, r4, r5
+ mov r5, r3, lsr #0xc
+ orr r5, r5, r2, lsl #0x14
+ mov r4, r1, lsr #0xc
+ orr r4, r4, r0, lsl #0x14
+ str r6, [r10, #0x0]
+ str r4, [r10, #0x14]
+ bl FX_GetDivResult
+ mov r1, r11
+ rsb r2, r5, #0x0
+ mul r0, r2, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x4]
+ mov r0, r8
+ bl FX_DivAsync
+ sub r1, r5, r4
+ add r0, r7, r6
+ ldrh r3, [r9, #0x2c]
+ ldr r2, [r9, #0x18]
+ sub r0, r2, r0
+ mul r0, r3, r0
+ mov r0, r0, lsl #0x3
+ str r0, [r10, #0x30]
+ ldrh r2, [r9, #0x2e]
+ ldr r0, [r9, #0x1c]
+ sub r0, r1, r0
+ add r0, r0, #0x2000
+ mul r0, r2, r0
+ mov r0, r0, lsl #0x3
+ str r0, [r10, #0x34]
+ bl FX_GetDivResult
+ mul r0, r7, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end texmtxCalc_flagT_
+
+ local_arm_func_start texmtxCalc_flagRS_
+texmtxCalc_flagRS_: ; 0x020BEA3C
+ mov r2, #0x1000
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x14]
+ mov r12, #0x0
+ str r12, [r0, #0x4]
+ ldrh r2, [r1, #0x2c]
+ ldr r3, [r1, #0x24]
+ mul r2, r3, r2
+ rsb r2, r2, #0x0
+ mov r2, r2, lsl #0x4
+ str r2, [r0, #0x30]
+ ldrh r2, [r1, #0x2e]
+ ldr r1, [r1, #0x28]
+ mul r2, r1, r2
+ mov r1, r2, lsl #0x4
+ str r1, [r0, #0x34]
+ str r12, [r0, #0x10]
+ bx lr
+ arm_func_end texmtxCalc_flagRS_
+
+ local_arm_func_start texmtxCalc_flagR_
+texmtxCalc_flagR_: ; 0x020BEA84
+ stmdb sp!, {r4,lr}
+ ldr r3, [r1, #0x18]
+ mov r2, #0x0
+ str r3, [r0, #0x0]
+ ldr r3, [r1, #0x1c]
+ str r3, [r0, #0x14]
+ str r2, [r0, #0x4]
+ ldr r4, [r1, #0x18]
+ ldr r3, [r1, #0x24]
+ ldrh lr, [r1, #0x2c]
+ smull r12, r3, r4, r3
+ mov r4, r12, lsr #0x8
+ orr r4, r4, r3, lsl #0x18
+ rsb r3, r4, #0x0
+ mul r3, lr, r3
+ str r3, [r0, #0x30]
+ ldr r4, [r1, #0x1c]
+ ldr r12, [r1, #0x28]
+ mov r3, r4, lsl #0x1
+ smull lr, r12, r4, r12
+ rsb r4, r3, #0x0
+ mov r3, lr, lsr #0x8
+ ldrh lr, [r1, #0x2e]
+ add r1, r4, #0x2000
+ orr r3, r3, r12, lsl #0x18
+ mul r4, lr, r1
+ mul r1, lr, r3
+ add r1, r1, r4, lsl #0x3
+ str r1, [r0, #0x34]
+ str r2, [r0, #0x10]
+ ldmia sp!, {r4,pc}
+ arm_func_end texmtxCalc_flagR_
+
+ local_arm_func_start texmtxCalc_flagS_
+texmtxCalc_flagS_: ; 0x020BEB00
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ mov r6, r0
+ mov r4, r2, lsl #0xc
+ mov r7, r1, lsl #0xc
+ mov r0, r7
+ mov r1, r4
+ bl FX_DivAsync
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x0]
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x14]
+ bl FX_GetDivResult
+ ldrsh r2, [r5, #0x20]
+ mov r1, r7
+ rsb r2, r2, #0x0
+ mul r0, r2, r0
+ mov r2, r0, asr #0xc
+ mov r0, r4
+ str r2, [r6, #0x4]
+ bl FX_DivAsync
+ ldrsh r2, [r5, #0x20]
+ ldrsh r1, [r5, #0x22]
+ ldrh r3, [r5, #0x2c]
+ ldr r0, [r5, #0x24]
+ add r1, r2, r1
+ rsb r1, r1, #0x0
+ add r1, r1, #0x1000
+ mul r2, r3, r1
+ mul r1, r0, r3
+ mov r0, r2, lsl #0x3
+ sub r0, r0, r1, lsl #0x4
+ str r0, [r6, #0x30]
+ ldrsh r2, [r5, #0x20]
+ ldrsh r1, [r5, #0x22]
+ ldrh r3, [r5, #0x2e]
+ ldr r0, [r5, #0x28]
+ sub r1, r2, r1
+ add r1, r1, #0x1000
+ mul r2, r3, r1
+ mul r1, r0, r3
+ mov r0, r2, lsl #0x3
+ add r0, r0, r1, lsl #0x4
+ str r0, [r6, #0x34]
+ bl FX_GetDivResult
+ ldrsh r1, [r5, #0x20]
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end texmtxCalc_flagS_
+
+ local_arm_func_start texmtxCalc_flag_
+texmtxCalc_flag_: ; 0x020BEBD8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r9, r1
+ ldrh r2, [r9, #0x2c]
+ ldrh r1, [r9, #0x2e]
+ mov r10, r0
+ mov r8, r2, lsl #0xc
+ mov r11, r1, lsl #0xc
+ mov r0, r11
+ mov r1, r8
+ bl FX_DivAsync
+ ldrsh r5, [r9, #0x22]
+ ldr r3, [r9, #0x18]
+ ldrsh r0, [r9, #0x20]
+ ldr r4, [r9, #0x1c]
+ smull r2, r1, r3, r5
+ mov r6, r2, lsr #0xc
+ orr r6, r6, r1, lsl #0x14
+ smull r2, r1, r3, r0
+ mov r7, r2, lsr #0xc
+ orr r7, r7, r1, lsl #0x14
+ smull r3, r2, r4, r0
+ smull r1, r0, r4, r5
+ mov r5, r3, lsr #0xc
+ orr r5, r5, r2, lsl #0x14
+ mov r4, r1, lsr #0xc
+ orr r4, r4, r0, lsl #0x14
+ str r6, [r10, #0x0]
+ str r4, [r10, #0x14]
+ bl FX_GetDivResult
+ mov r1, r11
+ rsb r2, r5, #0x0
+ mul r0, r2, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x4]
+ mov r0, r8
+ bl FX_DivAsync
+ sub r1, r5, r4
+ add r2, r7, r6
+ ldr r5, [r9, #0x18]
+ ldrh r0, [r9, #0x2c]
+ sub r3, r5, r2
+ ldr r2, [r9, #0x24]
+ mul r4, r0, r3
+ smull r3, r2, r5, r2
+ mov r4, r4, lsl #0x3
+ mov r3, r3, lsr #0x8
+ orr r3, r3, r2, lsl #0x18
+ mul r2, r0, r3
+ sub r0, r4, r2
+ str r0, [r10, #0x30]
+ ldr r4, [r9, #0x1c]
+ ldrh r3, [r9, #0x2e]
+ sub r0, r1, r4
+ add r0, r0, #0x2000
+ mul r2, r3, r0
+ ldr r0, [r9, #0x28]
+ smull r1, r0, r4, r0
+ mov r1, r1, lsr #0x8
+ orr r1, r1, r0, lsl #0x18
+ mul r0, r3, r1
+ add r0, r0, r2, lsl #0x3
+ str r0, [r10, #0x34]
+ bl FX_GetDivResult
+ mul r0, r7, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end texmtxCalc_flag_
+
+ arm_func_start NNSi_G3dGetJointScaleMaya
+NNSi_G3dGetJointScaleMaya: ; 0x020BECEC
+ stmdb sp!, {r4-r8,lr}
+ mov r12, r0
+ ands r0, r3, #0x4
+ ldrb r3, [r2, #0x3]
+ beq _020BED40
+ ldr r1, [r12, #0x0]
+ ands r0, r3, #0x2
+ orr r0, r1, #0x1
+ str r0, [r12, #0x0]
+ beq _020BEDB8
+ ldr r0, _020BEE2C ; =NNS_G3dRS
+ ldrb r7, [r2, #0x1]
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ add r6, r0, #0xc4
+ mov r5, r7, lsr #0x5
+ ldr r4, [r6, r5, lsl #0x2]
+ and r0, r7, #0x1f
+ orr r0, r4, r1, lsl r0
+ str r0, [r6, r5, lsl #0x2]
+ b _020BEDB8
+_020BED40:
+ ldr r4, [r1, #0x0]
+ ands r0, r3, #0x2
+ str r4, [r12, #0x4]
+ ldr r0, [r1, #0x4]
+ str r0, [r12, #0x8]
+ ldr r0, [r1, #0x8]
+ str r0, [r12, #0xc]
+ beq _020BEDB8
+ ldr lr, _020BEE2C ; =NNS_G3dRS
+ ldrb r0, [r2, #0x1]
+ ldr r4, [lr, #0x0]
+ mov lr, #0x18
+ add r8, r4, #0xc4
+ mov r7, r0, lsr #0x5
+ and r4, r0, #0x1f
+ mov r5, #0x1
+ mvn r4, r5, lsl r4
+ ldr r6, [r8, r7, lsl #0x2]
+ mul r5, r0, lr
+ and r0, r6, r4
+ str r0, [r8, r7, lsl #0x2]
+ ldr r4, [r1, #0xc]
+ ldr r0, _020BEE30 ; =NNS_G3dRSOnGlb + 0xE0C
+ ldr lr, _020BEE34 ; =NNS_G3dRSOnGlb + 0xE10
+ str r4, [r0, r5]
+ ldr r4, [r1, #0x10]
+ ldr r0, _020BEE38 ; =NNS_G3dRSOnGlb + 0xE14
+ str r4, [lr, r5]
+ ldr r1, [r1, #0x14]
+ str r1, [r0, r5]
+_020BEDB8:
+ ands r0, r3, #0x1
+ beq _020BEE1C
+ ldrb r0, [r2, #0x2]
+ ldr r2, [r12, #0x0]
+ ldr r1, _020BEE2C ; =NNS_G3dRS
+ orr r2, r2, #0x20
+ str r2, [r12, #0x0]
+ ldr r2, [r1, #0x0]
+ mov r1, r0, lsr #0x5
+ add r1, r2, r1, lsl #0x2
+ and r2, r0, #0x1f
+ mov r3, #0x1
+ mov r2, r3, lsl r2
+ ldr r1, [r1, #0xc4]
+ ands r1, r2, r1
+ ldrne r0, [r12, #0x0]
+ orrne r0, r0, #0x8
+ strne r0, [r12, #0x0]
+ bne _020BEE1C
+ ldr r2, _020BEE30 ; =NNS_G3dRSOnGlb + 0xE0C
+ mov r1, #0x18
+ mla r1, r0, r1, r2
+ add r3, r12, #0x10
+ ldmia r1, {r0-r2}
+ stmia r3, {r0-r2}
+_020BEE1C:
+ ldr r0, [r12, #0x0]
+ orr r0, r0, #0x10
+ str r0, [r12, #0x0]
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020BEE2C: .word NNS_G3dRS
+_020BEE30: .word NNS_G3dRSOnGlb + 0xE0C
+_020BEE34: .word NNS_G3dRSOnGlb + 0xE10
+_020BEE38: .word NNS_G3dRSOnGlb + 0xE14
+ arm_func_end NNSi_G3dGetJointScaleMaya
+
+ arm_func_start NNSi_G3dSendJointSRTMaya
+NNSi_G3dSendJointSRTMaya: ; 0x020BEE3C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r1, [r5, #0x0]
+ mov r4, #0x0
+ ands r0, r1, #0x4
+ moveq r4, #0x1
+ ands r0, r1, #0x20
+ beq _020BEE94
+ ands r0, r1, #0x8
+ bne _020BEE94
+ cmp r4, #0x0
+ beq _020BEE84
+ add r1, r5, #0x4c
+ mov r0, #0x1c
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+ mov r4, #0x0
+_020BEE84:
+ add r1, r5, #0x10
+ mov r0, #0x1b
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+_020BEE94:
+ ldr r0, [r5, #0x0]
+ ands r0, r0, #0x2
+ bne _020BEED0
+ cmp r4, #0x0
+ beq _020BEEBC
+ add r1, r5, #0x28
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+ b _020BEEE8
+_020BEEBC:
+ add r1, r5, #0x28
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ b _020BEEE8
+_020BEED0:
+ cmp r4, #0x0
+ beq _020BEEE8
+ add r1, r5, #0x4c
+ mov r0, #0x1c
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+_020BEEE8:
+ ldr r0, [r5, #0x0]
+ ands r0, r0, #0x1
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,pc}
+ add r1, r5, #0x4
+ mov r0, #0x1b
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNSi_G3dSendJointSRTMaya
diff --git a/arm9/asm/NNS_G3D_mem.s b/arm9/asm/NNS_G3D_mem.s
new file mode 100644
index 00000000..e01336e5
--- /dev/null
+++ b/arm9/asm/NNS_G3D_mem.s
@@ -0,0 +1,25 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G3dFreeAnmObj
+NNS_G3dFreeAnmObj: ; 0x020BB8C4
+ ldr ip, _020BB8CC ; =NNS_FndFreeToAllocator
+ bx r12
+ .balign 4
+_020BB8CC: .word NNS_FndFreeToAllocator
+ arm_func_end NNS_G3dFreeAnmObj
+
+ arm_func_start NNS_G3dAllocAnmObj
+NNS_G3dAllocAnmObj: ; 0x020BB8D0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, r1
+ mov r1, r2
+ bl NNS_G3dAnmObjCalcSizeRequired
+ mov r1, r0
+ mov r0, r4
+ bl NNS_FndAllocFromAllocator
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G3dAllocAnmObj
diff --git a/arm9/asm/NNS_G3D_model.s b/arm9/asm/NNS_G3D_model.s
new file mode 100644
index 00000000..958a9b8a
--- /dev/null
+++ b/arm9/asm/NNS_G3D_model.s
@@ -0,0 +1,656 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G3dMdlSetMdlXLDepthUpdateAll
+NNS_G3dMdlSetMdlXLDepthUpdateAll: ; 0x020BB8F4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BB910:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlXLDepthUpdate
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BB910
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlXLDepthUpdateAll
+
+ arm_func_start NNS_G3dMdlSetMdlFarClipAll
+NNS_G3dMdlSetMdlFarClipAll: ; 0x020BB934
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BB950:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlFarClip
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BB950
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlFarClipAll
+
+ arm_func_start NNS_G3dMdlSetMdl1DotAll
+NNS_G3dMdlSetMdl1DotAll: ; 0x020BB974
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BB990:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdl1Dot
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BB990
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdl1DotAll
+
+ arm_func_start NNS_G3dMdlSetMdlDepthTestCondAll
+NNS_G3dMdlSetMdlDepthTestCondAll: ; 0x020BB9B4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BB9D0:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlDepthTestCond
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BB9D0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlDepthTestCondAll
+
+ arm_func_start NNS_G3dMdlSetMdlFogEnableFlagAll
+NNS_G3dMdlSetMdlFogEnableFlagAll: ; 0x020BB9F4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBA10:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlFogEnableFlag
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBA10
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlFogEnableFlagAll
+
+ arm_func_start NNS_G3dMdlSetMdlAlphaAll
+NNS_G3dMdlSetMdlAlphaAll: ; 0x020BBA34
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBA50:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlAlpha
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBA50
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlAlphaAll
+
+ arm_func_start NNS_G3dMdlSetMdlPolygonIDAll
+NNS_G3dMdlSetMdlPolygonIDAll: ; 0x020BBA74
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBA90:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlPolygonID
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBA90
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlPolygonIDAll
+
+ arm_func_start NNS_G3dMdlSetMdlCullModeAll
+NNS_G3dMdlSetMdlCullModeAll: ; 0x020BBAB4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBAD0:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlCullMode
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBAD0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlCullModeAll
+
+ arm_func_start NNS_G3dMdlSetMdlPolygonModeAll
+NNS_G3dMdlSetMdlPolygonModeAll: ; 0x020BBAF4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBB10:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlPolygonMode
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBB10
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlPolygonModeAll
+
+ arm_func_start NNS_G3dMdlSetMdlLightEnableFlagAll
+NNS_G3dMdlSetMdlLightEnableFlagAll: ; 0x020BBB34
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBB50:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlLightEnableFlag
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBB50
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlLightEnableFlagAll
+
+ arm_func_start NNS_G3dMdlSetMdlEmiAll
+NNS_G3dMdlSetMdlEmiAll: ; 0x020BBB74
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBB90:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlEmi
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBB90
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlEmiAll
+
+ arm_func_start NNS_G3dMdlSetMdlSpecAll
+NNS_G3dMdlSetMdlSpecAll: ; 0x020BBBB4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBBD0:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlSpec
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBBD0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlSpecAll
+
+ arm_func_start NNS_G3dMdlSetMdlAmbAll
+NNS_G3dMdlSetMdlAmbAll: ; 0x020BBBF4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBC10:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlAmb
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBC10
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlAmbAll
+
+ arm_func_start NNS_G3dMdlSetMdlDiffAll
+NNS_G3dMdlSetMdlDiffAll: ; 0x020BBC34
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldrb r0, [r6, #0x18]
+ mov r5, r1
+ mov r4, #0x0
+ cmp r0, #0x0
+ ldmlsia sp!, {r4-r6,pc}
+_020BBC50:
+ mov r0, r6
+ mov r1, r4
+ mov r2, r5
+ bl NNS_G3dMdlSetMdlDiff
+ ldrb r0, [r6, #0x18]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blo _020BBC50
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNS_G3dMdlSetMdlDiffAll
+
+ arm_func_start NNS_G3dMdlSetMdlXLDepthUpdate
+NNS_G3dMdlSetMdlXLDepthUpdate: ; 0x020BBC74
+ ldr r3, [r0, #0x8]
+ cmp r2, #0x0
+ add r12, r0, r3
+ ldrh r0, [r12, #0xa]
+ add r3, r12, #0x4
+ ldrh r2, [r3, r0]
+ add r0, r3, r0
+ mla r0, r2, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r12, r0
+ ldrne r0, [r1, #0xc]
+ orrne r0, r0, #0x800
+ strne r0, [r1, #0xc]
+ ldreq r0, [r1, #0xc]
+ biceq r0, r0, #0x800
+ streq r0, [r1, #0xc]
+ bx lr
+ arm_func_end NNS_G3dMdlSetMdlXLDepthUpdate
+
+ arm_func_start NNS_G3dMdlSetMdlFarClip
+NNS_G3dMdlSetMdlFarClip: ; 0x020BBCB8
+ ldr r3, [r0, #0x8]
+ cmp r2, #0x0
+ add r12, r0, r3
+ ldrh r0, [r12, #0xa]
+ add r3, r12, #0x4
+ ldrh r2, [r3, r0]
+ add r0, r3, r0
+ mla r0, r2, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r12, r0
+ ldrne r0, [r1, #0xc]
+ orrne r0, r0, #0x1000
+ strne r0, [r1, #0xc]
+ ldreq r0, [r1, #0xc]
+ biceq r0, r0, #0x1000
+ streq r0, [r1, #0xc]
+ bx lr
+ arm_func_end NNS_G3dMdlSetMdlFarClip
+
+ arm_func_start NNS_G3dMdlSetMdl1Dot
+NNS_G3dMdlSetMdl1Dot: ; 0x020BBCFC
+ ldr r3, [r0, #0x8]
+ cmp r2, #0x0
+ add r12, r0, r3
+ ldrh r0, [r12, #0xa]
+ add r3, r12, #0x4
+ ldrh r2, [r3, r0]
+ add r0, r3, r0
+ mla r0, r2, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r12, r0
+ ldrne r0, [r1, #0xc]
+ orrne r0, r0, #0x2000
+ strne r0, [r1, #0xc]
+ ldreq r0, [r1, #0xc]
+ biceq r0, r0, #0x2000
+ streq r0, [r1, #0xc]
+ bx lr
+ arm_func_end NNS_G3dMdlSetMdl1Dot
+
+ arm_func_start NNS_G3dMdlSetMdlDepthTestCond
+NNS_G3dMdlSetMdlDepthTestCond: ; 0x020BBD40
+ ldr r3, [r0, #0x8]
+ cmp r2, #0x0
+ add r12, r0, r3
+ ldrh r0, [r12, #0xa]
+ add r3, r12, #0x4
+ ldrh r2, [r3, r0]
+ add r0, r3, r0
+ mla r0, r2, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r12, r0
+ ldrne r0, [r1, #0xc]
+ orrne r0, r0, #0x4000
+ strne r0, [r1, #0xc]
+ ldreq r0, [r1, #0xc]
+ biceq r0, r0, #0x4000
+ streq r0, [r1, #0xc]
+ bx lr
+ arm_func_end NNS_G3dMdlSetMdlDepthTestCond
+
+ arm_func_start NNS_G3dMdlSetMdlFogEnableFlag
+NNS_G3dMdlSetMdlFogEnableFlag: ; 0x020BBD84
+ ldr r3, [r0, #0x8]
+ cmp r2, #0x0
+ add r12, r0, r3
+ ldrh r0, [r12, #0xa]
+ add r3, r12, #0x4
+ ldrh r2, [r3, r0]
+ add r0, r3, r0
+ mla r0, r2, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r12, r0
+ ldrne r0, [r1, #0xc]
+ orrne r0, r0, #0x8000
+ strne r0, [r1, #0xc]
+ ldreq r0, [r1, #0xc]
+ biceq r0, r0, #0x8000
+ streq r0, [r1, #0xc]
+ bx lr
+ arm_func_end NNS_G3dMdlSetMdlFogEnableFlag
+
+ arm_func_start NNS_G3dMdlSetMdlAlpha
+NNS_G3dMdlSetMdlAlpha: ; 0x020BBDC8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x8]
+ add lr, r0, r3
+ ldrh r0, [lr, #0xa]
+ add r12, lr, #0x4
+ ldrh r3, [r12, r0]
+ add r0, r12, r0
+ mla r0, r3, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, lr, r0
+ ldr r0, [r1, #0xc]
+ bic r0, r0, #0x1f0000
+ orr r0, r0, r2, lsl #0x10
+ str r0, [r1, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G3dMdlSetMdlAlpha
+
+ arm_func_start NNS_G3dMdlSetMdlPolygonID
+NNS_G3dMdlSetMdlPolygonID: ; 0x020BBE0C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x8]
+ add lr, r0, r3
+ ldrh r0, [lr, #0xa]
+ add r12, lr, #0x4
+ ldrh r3, [r12, r0]
+ add r0, r12, r0
+ mla r0, r3, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, lr, r0
+ ldr r0, [r1, #0xc]
+ bic r0, r0, #0x3f000000
+ orr r0, r0, r2, lsl #0x18
+ str r0, [r1, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G3dMdlSetMdlPolygonID
+
+ arm_func_start NNS_G3dMdlSetMdlCullMode
+NNS_G3dMdlSetMdlCullMode: ; 0x020BBE50
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x8]
+ add lr, r0, r3
+ ldrh r0, [lr, #0xa]
+ add r12, lr, #0x4
+ ldrh r3, [r12, r0]
+ add r0, r12, r0
+ mla r0, r3, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, lr, r0
+ ldr r0, [r1, #0xc]
+ bic r0, r0, #0xc0
+ orr r0, r0, r2, lsl #0x6
+ str r0, [r1, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G3dMdlSetMdlCullMode
+
+ arm_func_start NNS_G3dMdlSetMdlPolygonMode
+NNS_G3dMdlSetMdlPolygonMode: ; 0x020BBE94
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x8]
+ add lr, r0, r3
+ ldrh r0, [lr, #0xa]
+ add r12, lr, #0x4
+ ldrh r3, [r12, r0]
+ add r0, r12, r0
+ mla r0, r3, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, lr, r0
+ ldr r0, [r1, #0xc]
+ bic r0, r0, #0x30
+ orr r0, r0, r2, lsl #0x4
+ str r0, [r1, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G3dMdlSetMdlPolygonMode
+
+ arm_func_start NNS_G3dMdlSetMdlLightEnableFlag
+NNS_G3dMdlSetMdlLightEnableFlag: ; 0x020BBED8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x8]
+ add lr, r0, r3
+ ldrh r0, [lr, #0xa]
+ add r12, lr, #0x4
+ ldrh r3, [r12, r0]
+ add r0, r12, r0
+ mla r0, r3, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, lr, r0
+ ldr r0, [r1, #0xc]
+ bic r0, r0, #0xf
+ orr r0, r0, r2
+ str r0, [r1, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNS_G3dMdlSetMdlLightEnableFlag
+
+ arm_func_start NNS_G3dMdlSetMdlEmi
+NNS_G3dMdlSetMdlEmi: ; 0x020BBF1C
+ stmdb sp!, {r4,lr}
+ ldr r12, [r0, #0x8]
+ ldr r3, _020BBF5C ; =0x8000FFFF
+ add r4, r0, r12
+ ldrh r0, [r4, #0xa]
+ add lr, r4, #0x4
+ ldrh r12, [lr, r0]
+ add r0, lr, r0
+ mla r0, r12, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r4, r0
+ ldr r0, [r1, #0x8]
+ and r0, r0, r3
+ orr r0, r0, r2, lsl #0x10
+ str r0, [r1, #0x8]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BBF5C: .word 0x8000FFFF
+ arm_func_end NNS_G3dMdlSetMdlEmi
+
+ arm_func_start NNS_G3dMdlSetMdlSpec
+NNS_G3dMdlSetMdlSpec: ; 0x020BBF60
+ stmdb sp!, {r4,lr}
+ ldr r12, [r0, #0x8]
+ mov r3, #0x8000
+ add r4, r0, r12
+ ldrh r12, [r4, #0xa]
+ add lr, r4, #0x4
+ rsb r0, r3, #0x0
+ ldrh r3, [lr, r12]
+ add r12, lr, r12
+ mla r1, r3, r1, r12
+ ldr r1, [r1, #0x4]
+ add r3, r4, r1
+ ldr r1, [r3, #0x8]
+ and r0, r1, r0
+ orr r0, r0, r2
+ str r0, [r3, #0x8]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G3dMdlSetMdlSpec
+
+ arm_func_start NNS_G3dMdlSetMdlAmb
+NNS_G3dMdlSetMdlAmb: ; 0x020BBFA4
+ stmdb sp!, {r4,lr}
+ ldr r12, [r0, #0x8]
+ ldr r3, _020BBFE4 ; =0x8000FFFF
+ add r4, r0, r12
+ ldrh r0, [r4, #0xa]
+ add lr, r4, #0x4
+ ldrh r12, [lr, r0]
+ add r0, lr, r0
+ mla r0, r12, r1, r0
+ ldr r0, [r0, #0x4]
+ add r1, r4, r0
+ ldr r0, [r1, #0x4]
+ and r0, r0, r3
+ orr r0, r0, r2, lsl #0x10
+ str r0, [r1, #0x4]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BBFE4: .word 0x8000FFFF
+ arm_func_end NNS_G3dMdlSetMdlAmb
+
+ arm_func_start NNS_G3dMdlSetMdlDiff
+NNS_G3dMdlSetMdlDiff: ; 0x020BBFE8
+ stmdb sp!, {r4,lr}
+ ldr r12, [r0, #0x8]
+ mov r3, #0x8000
+ add r4, r0, r12
+ ldrh r12, [r4, #0xa]
+ add lr, r4, #0x4
+ rsb r0, r3, #0x0
+ ldrh r3, [lr, r12]
+ add r12, lr, r12
+ mla r1, r3, r1, r12
+ ldr r1, [r1, #0x4]
+ add r3, r4, r1
+ ldr r1, [r3, #0x4]
+ and r0, r1, r0
+ orr r0, r0, r2
+ str r0, [r3, #0x4]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNS_G3dMdlSetMdlDiff
+
+ arm_func_start NNSi_G3dModifyPolygonAttrMask
+NNSi_G3dModifyPolygonAttrMask: ; 0x020BC02C
+ stmdb sp!, {r4-r6,lr}
+ ldrb r4, [r0, #0x18]
+ ldr r3, [r0, #0x8]
+ mov lr, #0x0
+ cmp r4, #0x0
+ add r12, r0, r3
+ ldmlsia sp!, {r4-r6,pc}
+ mvn r3, r2
+ add r0, r12, #0x4
+_020BC050:
+ ldrh r5, [r12, #0xa]
+ cmp r1, #0x0
+ ldrh r6, [r0, r5]
+ add r5, r0, r5
+ mla r5, r6, lr, r5
+ ldr r5, [r5, #0x4]
+ add lr, lr, #0x1
+ add r6, r12, r5
+ ldrne r5, [r6, #0x10]
+ orrne r5, r5, r2
+ strne r5, [r6, #0x10]
+ ldreq r5, [r6, #0x10]
+ andeq r5, r5, r3
+ streq r5, [r6, #0x10]
+ cmp lr, r4
+ blo _020BC050
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G3dModifyPolygonAttrMask
+
+ arm_func_start NNSi_G3dModifyMatFlag
+NNSi_G3dModifyMatFlag: ; 0x020BC094
+ stmdb sp!, {r4-r6,lr}
+ ldrb r4, [r0, #0x18]
+ ldr r3, [r0, #0x8]
+ mov lr, #0x0
+ cmp r4, #0x0
+ add r12, r0, r3
+ ldmlsia sp!, {r4-r6,pc}
+ mvn r3, r2
+ add r0, r12, #0x4
+_020BC0B8:
+ ldrh r5, [r12, #0xa]
+ cmp r1, #0x0
+ ldrh r6, [r0, r5]
+ add r5, r0, r5
+ mla r5, r6, lr, r5
+ ldr r5, [r5, #0x4]
+ add lr, lr, #0x1
+ add r6, r12, r5
+ ldrneh r5, [r6, #0x1e]
+ orrne r5, r5, r2
+ strneh r5, [r6, #0x1e]
+ ldreqh r5, [r6, #0x1e]
+ andeq r5, r5, r3
+ streqh r5, [r6, #0x1e]
+ cmp lr, r4
+ blo _020BC0B8
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G3dModifyMatFlag
diff --git a/arm9/asm/NNS_G3D_nsbca.s b/arm9/asm/NNS_G3D_nsbca.s
new file mode 100644
index 00000000..a29deb70
--- /dev/null
+++ b/arm9/asm/NNS_G3D_nsbca.s
@@ -0,0 +1,1591 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global pivotUtil_
+pivotUtil_: ; 0x020FFA14
+ .byte 0x04, 0x05, 0x07, 0x08
+ .byte 0x03, 0x05, 0x06, 0x08
+ .byte 0x03, 0x04, 0x06, 0x07
+ .byte 0x01, 0x02, 0x07, 0x08
+ .byte 0x00, 0x02, 0x06, 0x08
+ .byte 0x00, 0x01, 0x06, 0x07
+ .byte 0x01, 0x02, 0x04, 0x05
+ .byte 0x00, 0x02, 0x03, 0x05
+ .byte 0x00, 0x01, 0x03, 0x04
+
+ .section .text
+
+ arm_func_start getRotDataByIdx_
+getRotDataByIdx_: ; 0x020BC500
+ stmdb sp!, {r4,lr}
+ ands r4, r3, #0x8000
+ beq _020BC5E0
+ mov r2, #0x0
+ str r2, [r0, #0x20]
+ ldr r4, [r0, #0x20]
+ ldr r2, _020BC684 ; =0x00007FFF
+ str r4, [r0, #0x1c]
+ ldr r4, [r0, #0x1c]
+ and r3, r3, r2
+ str r4, [r0, #0x18]
+ ldr r4, [r0, #0x18]
+ mov r2, #0x3
+ str r4, [r0, #0x14]
+ ldr r4, [r0, #0x14]
+ mul r2, r3, r2
+ str r4, [r0, #0x10]
+ ldr r4, [r0, #0x10]
+ mov r3, r2, lsl #0x1
+ str r4, [r0, #0xc]
+ ldr r4, [r0, #0xc]
+ add r2, r1, r2, lsl #0x1
+ str r4, [r0, #0x8]
+ ldr r4, [r0, #0x8]
+ str r4, [r0, #0x4]
+ ldr r4, [r0, #0x4]
+ str r4, [r0, #0x0]
+ ldrsh r4, [r1, r3]
+ ldrsh r12, [r2, #0x2]
+ ldrsh r3, [r2, #0x4]
+ and r1, r4, #0xf
+ ands r4, r4, #0x10
+ movne lr, #0x1000
+ rsbne lr, lr, #0x0
+ moveq lr, #0x1000
+ str lr, [r0, r1, lsl #0x2]
+ ldr r4, _020BC688 ; =pivotUtil_
+ ldr lr, _020BC68C ; =pivotUtil_ + 1
+ ldrb r4, [r4, r1, lsl #0x2]
+ str r12, [r0, r4, lsl #0x2]
+ ldrb lr, [lr, r1, lsl #0x2]
+ str r3, [r0, lr, lsl #0x2]
+ ldrsh lr, [r2, #0x0]
+ ands lr, lr, #0x20
+ ldr lr, _020BC690 ; =pivotUtil_ + 2
+ rsbne r3, r3, #0x0
+ ldrb lr, [lr, r1, lsl #0x2]
+ str r3, [r0, lr, lsl #0x2]
+ ldrsh r2, [r2, #0x0]
+ ands r2, r2, #0x40
+ ldr r2, _020BC694 ; =pivotUtil_ + 3
+ rsbne r12, r12, #0x0
+ ldrb r1, [r2, r1, lsl #0x2]
+ str r12, [r0, r1, lsl #0x2]
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+_020BC5E0:
+ ldr r1, _020BC684 ; =0x00007FFF
+ mov r12, #0x5
+ and r1, r3, r1
+ mul r3, r1, r12
+ add r1, r2, r3, lsl #0x1
+ ldrsh lr, [r1, #0x8]
+ mov r12, r3, lsl #0x1
+ mov r3, lr, asr #0x3
+ str r3, [r0, #0x10]
+ ldrsh r12, [r2, r12]
+ and r2, lr, #0x7
+ mov r2, r2, lsl #0x10
+ mov r3, r12, asr #0x3
+ str r3, [r0, #0x0]
+ ldrsh r3, [r1, #0x2]
+ and r12, r12, #0x7
+ orr lr, r12, r2, asr #0xd
+ mov r2, r3, asr #0x3
+ str r2, [r0, #0x4]
+ ldrsh r12, [r1, #0x4]
+ mov r2, lr, lsl #0x10
+ and lr, r3, #0x7
+ mov r3, r12, asr #0x3
+ str r3, [r0, #0x8]
+ ldrsh r3, [r1, #0x6]
+ orr r1, lr, r2, asr #0xd
+ mov r1, r1, lsl #0x10
+ and r2, r12, #0x7
+ orr r1, r2, r1, asr #0xd
+ mov r1, r1, lsl #0x10
+ and r2, r3, #0x7
+ orr r1, r2, r1, asr #0xd
+ mov r1, r1, lsl #0x10
+ mov r1, r1, asr #0x10
+ mov r2, r3, asr #0x3
+ mov r1, r1, lsl #0x13
+ str r2, [r0, #0xc]
+ mov r1, r1, asr #0x13
+ str r1, [r0, #0x14]
+ mov r0, #0x1
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BC684: .word 0x00007FFF
+_020BC688: .word pivotUtil_
+_020BC68C: .word pivotUtil_ + 1
+_020BC690: .word pivotUtil_ + 2
+_020BC694: .word pivotUtil_ + 3
+ arm_func_end getRotDataByIdx_
+
+ arm_func_start getRotDataEx_
+getRotDataEx_: ; 0x020BC698
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x48
+ ldrh r4, [r3, #0x4]
+ ldr r5, [r3, #0xc]
+ ldr r8, [r3, #0x10]
+ ldr r7, [r2, #0x4]
+ mov r12, r1, asr #0xc
+ sub r4, r4, #0x1
+ mov r6, r0
+ cmp r12, r4
+ add r5, r3, r5
+ add r4, r3, r8
+ add r8, r3, r7
+ ldr r7, [r2, #0x0]
+ bne _020BC780
+ ands r0, r7, #0xc0000000
+ beq _020BC6F0
+ ands r0, r7, #0x40000000
+ andne r0, r12, #0x1
+ addne r12, r0, r12, lsr #0x1
+ andeq r0, r12, #0x3
+ addeq r12, r0, r12, lsr #0x2
+_020BC6F0:
+ ldr r0, [r3, #0x8]
+ ands r0, r0, #0x2
+ movne r7, #0x0
+ bne _020BC7F4
+ mov r0, r12, lsl #0x1
+ ldrh r3, [r8, r0]
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ cmp r0, #0x0
+ addeq sp, sp, #0x48
+ ldmeqia sp!, {r4-r10,pc}
+ ldr r9, [r6, #0x14]
+ ldr r5, [r6, #0x4]
+ ldr r4, [r6, #0x10]
+ ldr r2, [r6, #0x8]
+ mul r1, r5, r9
+ mul r0, r2, r4
+ sub r0, r1, r0
+ ldr r7, [r6, #0xc]
+ ldr r8, [r6, #0x0]
+ mov r3, r0, asr #0xc
+ mul r1, r2, r7
+ mul r0, r8, r9
+ sub r2, r1, r0
+ mul r1, r8, r4
+ mul r0, r5, r7
+ sub r0, r1, r0
+ str r3, [r6, #0x18]
+ mov r1, r2, asr #0xc
+ str r1, [r6, #0x1c]
+ mov r0, r0, asr #0xc
+ add sp, sp, #0x48
+ str r0, [r6, #0x20]
+ ldmia sp!, {r4-r10,pc}
+_020BC780:
+ ands r0, r7, #0xc0000000
+ beq _020BC7F0
+ ldr r0, _020BC9C4 ; =0x1FFF0000
+ ands r2, r7, #0x40000000
+ and r0, r7, r0
+ mov r0, r0, lsr #0x10
+ beq _020BC7C4
+ cmp r12, r0
+ movcs r12, r0, lsr #0x1
+ addcs r7, r12, #0x1
+ bhs _020BC7F4
+ ldr r0, _020BC9C8 ; =0x00001FFF
+ mov r12, r12, lsr #0x1
+ add r7, r12, #0x1
+ and r10, r1, r0
+ mov r9, #0x2
+ b _020BC800
+_020BC7C4:
+ cmp r12, r0
+ andcs r0, r12, #0x3
+ addcs r12, r0, r12, lsr #0x2
+ addcs r7, r12, #0x1
+ bhs _020BC7F4
+ ldr r0, _020BC9CC ; =0x00003FFF
+ mov r12, r12, lsr #0x2
+ add r7, r12, #0x1
+ and r10, r1, r0
+ mov r9, #0x4
+ b _020BC800
+_020BC7F0:
+ add r7, r12, #0x1
+_020BC7F4:
+ ldr r0, _020BC9D0 ; =0x00000FFF
+ mov r9, #0x1
+ and r10, r1, r0
+_020BC800:
+ mov r0, r12, lsl #0x1
+ ldrh r3, [r8, r0]
+ add r0, sp, #0x0
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ mov r1, r7, lsl #0x1
+ ldrh r3, [r8, r1]
+ orr r7, r0, #0x0
+ add r0, sp, #0x24
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ ldr r3, [sp, #0x0]
+ ldr r1, [sp, #0x24]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r6, #0x0]
+ ldr r3, [sp, #0x4]
+ ldr r1, [sp, #0x28]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r6, #0x4]
+ ldr r3, [sp, #0x8]
+ ldr r1, [sp, #0x2c]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r6, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r1, [sp, #0x30]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r6, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x34]
+ orr r7, r7, r0
+ sub r0, r1, r2
+ mul r1, r2, r9
+ mul r0, r10, r0
+ add r0, r1, r0, asr #0xc
+ str r0, [r6, #0x10]
+ ldr r2, [sp, #0x14]
+ ldr r0, [sp, #0x38]
+ mul r1, r2, r9
+ sub r0, r0, r2
+ mul r0, r10, r0
+ add r2, r1, r0, asr #0xc
+ mov r0, r6
+ mov r1, r6
+ str r2, [r6, #0x14]
+ bl VEC_Normalize
+ add r0, r6, #0xc
+ mov r1, r0
+ bl VEC_Normalize
+ cmp r7, #0x0
+ bne _020BC968
+ ldr r3, [sp, #0x18]
+ ldr r1, [sp, #0x3c]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r6, #0x18]
+ ldr r3, [sp, #0x1c]
+ ldr r1, [sp, #0x40]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r6, #0x1c]
+ ldr r3, [sp, #0x20]
+ ldr r1, [sp, #0x44]
+ mul r2, r3, r9
+ sub r1, r1, r3
+ mul r1, r10, r1
+ add r2, r2, r1, asr #0xc
+ add r0, r6, #0x18
+ mov r1, r0
+ str r2, [r6, #0x20]
+ bl VEC_Normalize
+ add sp, sp, #0x48
+ ldmia sp!, {r4-r10,pc}
+_020BC968:
+ ldr r9, [r6, #0x14]
+ ldr r5, [r6, #0x4]
+ ldr r8, [r6, #0x0]
+ ldr r4, [r6, #0x10]
+ ldr r2, [r6, #0x8]
+ ldr r7, [r6, #0xc]
+ mul r1, r5, r9
+ mul r0, r2, r4
+ sub r0, r1, r0
+ mov r3, r0, asr #0xc
+ mul r1, r2, r7
+ mul r0, r8, r9
+ sub r2, r1, r0
+ mul r1, r8, r4
+ mul r0, r5, r7
+ sub r0, r1, r0
+ str r3, [r6, #0x18]
+ mov r1, r2, asr #0xc
+ str r1, [r6, #0x1c]
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x20]
+ add sp, sp, #0x48
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020BC9C4: .word 0x1FFF0000
+_020BC9C8: .word 0x00001FFF
+_020BC9CC: .word 0x00003FFF
+_020BC9D0: .word 0x00000FFF
+ arm_func_end getRotDataEx_
+
+ arm_func_start getRotData_
+getRotData_: ; 0x020BC9D4
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4c
+ ldr r5, [r3, #0xc]
+ ldr r4, [r3, #0x10]
+ ldr r12, [r2, #0x0]
+ ldr r2, [r2, #0x4]
+ mov r6, r0
+ mov r0, r1, asr #0xc
+ add r5, r3, r5
+ add r4, r3, r4
+ add r8, r3, r2
+ ands r1, r12, #0xc0000000
+ beq _020BCD40
+ ldr r1, _020BCDC0 ; =0x1FFF0000
+ ands r2, r12, #0x40000000
+ and r1, r12, r1
+ mov r2, r1, lsr #0x10
+ beq _020BCA44
+ ands r1, r0, #0x1
+ beq _020BCA3C
+ cmp r0, r2
+ movhi r0, r2, lsr #0x1
+ addhi r0, r0, #0x1
+ bhi _020BCD40
+ mov r7, r0, lsr #0x1
+ b _020BCBE8
+_020BCA3C:
+ mov r0, r0, lsr #0x1
+ b _020BCD40
+_020BCA44:
+ ands r1, r0, #0x3
+ beq _020BCBE0
+ cmp r0, r2
+ addhi r0, r1, r2, lsr #0x2
+ bhi _020BCD40
+ ands r1, r0, #0x1
+ beq _020BCBD8
+ ands r1, r0, #0x2
+ movne r9, r0, lsr #0x2
+ addne r0, r9, #0x1
+ moveq r0, r0, lsr #0x2
+ addeq r9, r0, #0x1
+ mov r0, r0, lsl #0x1
+ ldrh r3, [r8, r0]
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ mov r7, #0x0
+ bl getRotDataByIdx_
+ mov r1, r9, lsl #0x1
+ ldrh r3, [r8, r1]
+ orr r7, r7, r0
+ add r0, sp, #0x0
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ ldr r3, [sp, #0x0]
+ ldr r1, [r6, #0x0]
+ mov r2, #0x3
+ mla r3, r1, r2, r3
+ str r3, [r6, #0x0]
+ ldr r3, [sp, #0x4]
+ ldr r1, [r6, #0x4]
+ orr r7, r7, r0
+ mla r0, r1, r2, r3
+ str r0, [r6, #0x4]
+ ldr r3, [sp, #0x8]
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ mla r3, r1, r2, r3
+ str r3, [r6, #0x8]
+ ldr r4, [sp, #0xc]
+ ldr r3, [r6, #0xc]
+ mov r1, r6
+ mla r4, r3, r2, r4
+ str r4, [r6, #0xc]
+ ldr r4, [sp, #0x10]
+ ldr r3, [r6, #0x10]
+ mla r4, r3, r2, r4
+ str r4, [r6, #0x10]
+ ldr r4, [sp, #0x14]
+ ldr r3, [r6, #0x14]
+ mla r2, r3, r2, r4
+ str r2, [r6, #0x14]
+ bl VEC_Normalize
+ add r0, r6, #0xc
+ mov r1, r0
+ bl VEC_Normalize
+ cmp r7, #0x0
+ bne _020BCB7C
+ ldr r1, [sp, #0x18]
+ ldr r0, [r6, #0x18]
+ mov r2, #0x3
+ mla r1, r0, r2, r1
+ str r1, [r6, #0x18]
+ ldr r3, [sp, #0x1c]
+ ldr r1, [r6, #0x1c]
+ add r0, r6, #0x18
+ mla r3, r1, r2, r3
+ str r3, [r6, #0x1c]
+ ldr r4, [sp, #0x20]
+ ldr r3, [r6, #0x20]
+ mov r1, r0
+ mla r2, r3, r2, r4
+ str r2, [r6, #0x20]
+ bl VEC_Normalize
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r9,pc}
+_020BCB7C:
+ ldr r12, [r6, #0x14]
+ ldr r5, [r6, #0x4]
+ ldr r4, [r6, #0x10]
+ ldr r2, [r6, #0x8]
+ mul r1, r5, r12
+ mul r0, r2, r4
+ sub r0, r1, r0
+ ldr r7, [r6, #0xc]
+ ldr r8, [r6, #0x0]
+ mov r3, r0, asr #0xc
+ mul r1, r2, r7
+ mul r0, r8, r12
+ sub r2, r1, r0
+ mul r1, r8, r4
+ mul r0, r5, r7
+ sub r0, r1, r0
+ str r3, [r6, #0x18]
+ mov r1, r2, asr #0xc
+ str r1, [r6, #0x1c]
+ mov r0, r0, asr #0xc
+ add sp, sp, #0x4c
+ str r0, [r6, #0x20]
+ ldmia sp!, {r4-r9,pc}
+_020BCBD8:
+ mov r7, r0, lsr #0x2
+ b _020BCBE8
+_020BCBE0:
+ mov r0, r0, lsr #0x2
+ b _020BCD40
+_020BCBE8:
+ mov r0, r7, lsl #0x1
+ ldrh r3, [r8, r0]
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ add r1, r8, r7, lsl #0x1
+ ldrh r3, [r1, #0x2]
+ orr r7, r0, #0x0
+ add r0, sp, #0x24
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ ldr r2, [r6, #0x0]
+ ldr r1, [sp, #0x24]
+ orr r7, r7, r0
+ add r0, r2, r1
+ str r0, [r6, #0x0]
+ ldr r2, [r6, #0x4]
+ ldr r1, [sp, #0x28]
+ mov r0, r6
+ add r1, r2, r1
+ str r1, [r6, #0x4]
+ ldr r3, [r6, #0x8]
+ ldr r2, [sp, #0x2c]
+ mov r1, r6
+ add r2, r3, r2
+ str r2, [r6, #0x8]
+ ldr r3, [r6, #0xc]
+ ldr r2, [sp, #0x30]
+ add r2, r3, r2
+ str r2, [r6, #0xc]
+ ldr r3, [r6, #0x10]
+ ldr r2, [sp, #0x34]
+ add r2, r3, r2
+ str r2, [r6, #0x10]
+ ldr r3, [r6, #0x14]
+ ldr r2, [sp, #0x38]
+ add r2, r3, r2
+ str r2, [r6, #0x14]
+ bl VEC_Normalize
+ add r0, r6, #0xc
+ mov r1, r0
+ bl VEC_Normalize
+ cmp r7, #0x0
+ bne _020BCCE4
+ ldr r2, [r6, #0x18]
+ ldr r1, [sp, #0x3c]
+ add r0, r6, #0x18
+ add r1, r2, r1
+ str r1, [r6, #0x18]
+ ldr r3, [r6, #0x1c]
+ ldr r2, [sp, #0x40]
+ mov r1, r0
+ add r2, r3, r2
+ str r2, [r6, #0x1c]
+ ldr r3, [r6, #0x20]
+ ldr r2, [sp, #0x44]
+ add r2, r3, r2
+ str r2, [r6, #0x20]
+ bl VEC_Normalize
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r9,pc}
+_020BCCE4:
+ ldr r12, [r6, #0x14]
+ ldr r5, [r6, #0x4]
+ ldr r4, [r6, #0x10]
+ ldr r2, [r6, #0x8]
+ mul r1, r5, r12
+ mul r0, r2, r4
+ sub r0, r1, r0
+ ldr r7, [r6, #0xc]
+ ldr r8, [r6, #0x0]
+ mov r3, r0, asr #0xc
+ mul r1, r2, r7
+ mul r0, r8, r12
+ sub r2, r1, r0
+ mul r1, r8, r4
+ mul r0, r5, r7
+ sub r0, r1, r0
+ str r3, [r6, #0x18]
+ mov r1, r2, asr #0xc
+ str r1, [r6, #0x1c]
+ mov r0, r0, asr #0xc
+ add sp, sp, #0x4c
+ str r0, [r6, #0x20]
+ ldmia sp!, {r4-r9,pc}
+_020BCD40:
+ mov r0, r0, lsl #0x1
+ ldrh r3, [r8, r0]
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl getRotDataByIdx_
+ cmp r0, #0x0
+ addeq sp, sp, #0x4c
+ ldmeqia sp!, {r4-r9,pc}
+ ldr r12, [r6, #0x14]
+ ldr r5, [r6, #0x4]
+ ldr r8, [r6, #0x0]
+ ldr r4, [r6, #0x10]
+ ldr r2, [r6, #0x8]
+ ldr r7, [r6, #0xc]
+ mul r1, r5, r12
+ mul r0, r2, r4
+ sub r0, r1, r0
+ mov r3, r0, asr #0xc
+ mul r1, r2, r7
+ mul r0, r8, r12
+ sub r2, r1, r0
+ mul r1, r8, r4
+ mul r0, r5, r7
+ sub r0, r1, r0
+ str r3, [r6, #0x18]
+ mov r1, r2, asr #0xc
+ str r1, [r6, #0x1c]
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x20]
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020BCDC0: .word 0x1FFF0000
+ arm_func_end getRotData_
+
+ arm_func_start getScaleDataEx_
+getScaleDataEx_: ; 0x020BCDC4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldrh r4, [r3, #0x4]
+ ldr r6, [r2, #0x4]
+ mov r5, r1, asr #0xc
+ sub r4, r4, #0x1
+ cmp r5, r4
+ add r6, r3, r6
+ ldr r2, [r2, #0x0]
+ bne _020BCE58
+ ands r4, r2, #0xc0000000
+ beq _020BCE08
+ ands r4, r2, #0x40000000
+ andne r4, r5, #0x1
+ addne r5, r4, r5, lsr #0x1
+ andeq r4, r5, #0x3
+ addeq r5, r4, r5, lsr #0x2
+_020BCE08:
+ ldr r3, [r3, #0x8]
+ ands r3, r3, #0x2
+ movne r4, #0x0
+ bne _020BCED4
+ ands r1, r2, #0x20000000
+ ldreq r2, [r6, r5, lsl #0x3]
+ addeq r1, r6, r5, lsl #0x3
+ streq r2, [r0, #0x0]
+ ldreq r1, [r1, #0x4]
+ addeq sp, sp, #0x4
+ streq r1, [r0, #0x4]
+ ldmeqia sp!, {r4-r7,pc}
+ mov r1, r5, lsl #0x2
+ ldrsh r2, [r6, r1]
+ add r1, r6, r5, lsl #0x2
+ add sp, sp, #0x4
+ str r2, [r0, #0x0]
+ ldrsh r1, [r1, #0x2]
+ str r1, [r0, #0x4]
+ ldmia sp!, {r4-r7,pc}
+_020BCE58:
+ ands r3, r2, #0xc0000000
+ beq _020BCED0
+ ldr r3, _020BCF60 ; =0x1FFF0000
+ ands r4, r2, #0x40000000
+ and r3, r2, r3
+ mov r3, r3, lsr #0x10
+ beq _020BCEA0
+ cmp r5, r3
+ movcs r5, r3, lsr #0x1
+ addcs r4, r5, #0x1
+ bhs _020BCED4
+ ldr r3, _020BCF64 ; =0x00001FFF
+ mov r5, r5, lsr #0x1
+ add r4, r5, #0x1
+ and lr, r1, r3
+ mov r12, #0x2
+ mov r3, #0x1
+ b _020BCEE4
+_020BCEA0:
+ cmp r5, r3
+ andcs r3, r5, #0x3
+ addcs r5, r3, r5, lsr #0x2
+ addcs r4, r5, #0x1
+ bhs _020BCED4
+ ldr r3, _020BCF68 ; =0x00003FFF
+ mov r5, r5, lsr #0x2
+ add r4, r5, #0x1
+ and lr, r1, r3
+ mov r12, #0x4
+ mov r3, #0x2
+ b _020BCEE4
+_020BCED0:
+ add r4, r5, #0x1
+_020BCED4:
+ ldr r3, _020BCF6C ; =0x00000FFF
+ mov r12, #0x1
+ and lr, r1, r3
+ mov r3, #0x0
+_020BCEE4:
+ ands r1, r2, #0x20000000
+ beq _020BCF10
+ mov r2, r5, lsl #0x2
+ add r1, r6, r5, lsl #0x2
+ mov r5, r4, lsl #0x2
+ add r4, r6, r4, lsl #0x2
+ ldrsh r2, [r6, r2]
+ ldrsh r1, [r1, #0x2]
+ ldrsh r5, [r6, r5]
+ ldrsh r4, [r4, #0x2]
+ b _020BCF28
+_020BCF10:
+ add r1, r6, r5, lsl #0x3
+ add r7, r6, r4, lsl #0x3
+ ldr r2, [r6, r5, lsl #0x3]
+ ldr r1, [r1, #0x4]
+ ldr r5, [r6, r4, lsl #0x3]
+ ldr r4, [r7, #0x4]
+_020BCF28:
+ sub r5, r5, r2
+ sub r4, r4, r1
+ mul r6, r2, r12
+ mul r2, lr, r5
+ add r2, r6, r2, asr #0xc
+ mov r5, r2, asr r3
+ mul r2, r1, r12
+ mul r1, lr, r4
+ add r1, r2, r1, asr #0xc
+ mov r1, r1, asr r3
+ str r5, [r0, #0x0]
+ str r1, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020BCF60: .word 0x1FFF0000
+_020BCF64: .word 0x00001FFF
+_020BCF68: .word 0x00003FFF
+_020BCF6C: .word 0x00000FFF
+ arm_func_end getScaleDataEx_
+
+ arm_func_start getScaleData_
+getScaleData_: ; 0x020BCF70
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r4, [r2, #0x4]
+ ldr r12, [r2, #0x0]
+ mov r1, r1, asr #0xc
+ add r3, r3, r4
+ ands r2, r12, #0xc0000000
+ beq _020BD0D0
+ ldr r2, _020BD184 ; =0x1FFF0000
+ ands r4, r12, #0x40000000
+ and r2, r12, r2
+ mov r4, r2, lsr #0x10
+ beq _020BCFCC
+ ands r2, r1, #0x1
+ beq _020BCFC4
+ cmp r1, r4
+ movhi r1, r4, lsr #0x1
+ addhi r1, r1, #0x1
+ bhi _020BD0D0
+ mov r2, r1, lsr #0x1
+ b _020BD110
+_020BCFC4:
+ mov r1, r1, lsr #0x1
+ b _020BD0D0
+_020BCFCC:
+ ands r2, r1, #0x3
+ beq _020BD0CC
+ cmp r1, r4
+ addhi r1, r2, r4, lsr #0x2
+ bhi _020BD0D0
+ ands r2, r1, #0x1
+ beq _020BD0C4
+ ands r2, r1, #0x2
+ movne r1, r1, lsr #0x2
+ addne r2, r1, #0x1
+ moveq r2, r1, lsr #0x2
+ addeq r1, r2, #0x1
+ ands r4, r12, #0x20000000
+ beq _020BD04C
+ mov r5, r2, lsl #0x2
+ mov r4, r1, lsl #0x2
+ ldrsh r12, [r3, r5]
+ ldrsh r5, [r3, r4]
+ add r2, r3, r2, lsl #0x2
+ add r4, r12, r12, lsl #0x1
+ add r4, r5, r4
+ mov r4, r4, asr #0x2
+ str r4, [r0, #0x0]
+ add r1, r3, r1, lsl #0x2
+ ldrsh r3, [r2, #0x2]
+ ldrsh r2, [r1, #0x2]
+ add sp, sp, #0x4
+ add r1, r3, r3, lsl #0x1
+ add r1, r2, r1
+ mov r1, r1, asr #0x2
+ str r1, [r0, #0x4]
+ ldmia sp!, {r4-r5,pc}
+_020BD04C:
+ ldr r5, [r3, r2, lsl #0x3]
+ ldr r4, [r3, r1, lsl #0x3]
+ mov r12, r5, asr #0x1f
+ mov r12, r12, lsl #0x1
+ mov lr, r5, lsl #0x1
+ orr r12, r12, r5, lsr #0x1f
+ adds lr, lr, r5
+ adc r12, r12, r5, asr #0x1f
+ adds lr, lr, r4
+ adc r12, r12, r4, asr #0x1f
+ mov lr, lr, lsr #0x2
+ orr lr, lr, r12, lsl #0x1e
+ str lr, [r0, #0x0]
+ add r2, r3, r2, lsl #0x3
+ ldr r12, [r2, #0x4]
+ add r1, r3, r1, lsl #0x3
+ mov r2, r12, asr #0x1f
+ mov r2, r2, lsl #0x1
+ mov r3, r12, lsl #0x1
+ ldr r1, [r1, #0x4]
+ orr r2, r2, r12, lsr #0x1f
+ adds r3, r3, r12
+ adc r2, r2, r12, asr #0x1f
+ adds r3, r3, r1
+ adc r1, r2, r1, asr #0x1f
+ mov r2, r3, lsr #0x2
+ orr r2, r2, r1, lsl #0x1e
+ str r2, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020BD0C4:
+ mov r2, r1, lsr #0x2
+ b _020BD110
+_020BD0CC:
+ mov r1, r1, lsr #0x2
+_020BD0D0:
+ ands r2, r12, #0x20000000
+ ldreq r2, [r3, r1, lsl #0x3]
+ addeq r1, r3, r1, lsl #0x3
+ streq r2, [r0, #0x0]
+ ldreq r1, [r1, #0x4]
+ addeq sp, sp, #0x4
+ streq r1, [r0, #0x4]
+ ldmeqia sp!, {r4-r5,pc}
+ mov r2, r1, lsl #0x2
+ ldrsh r2, [r3, r2]
+ add r1, r3, r1, lsl #0x2
+ add sp, sp, #0x4
+ str r2, [r0, #0x0]
+ ldrsh r1, [r1, #0x2]
+ str r1, [r0, #0x4]
+ ldmia sp!, {r4-r5,pc}
+_020BD110:
+ ands r1, r12, #0x20000000
+ beq _020BD150
+ mov r1, r2, lsl #0x2
+ add r12, r3, r2, lsl #0x2
+ ldrsh r2, [r3, r1]
+ ldrsh r1, [r12, #0x4]
+ add sp, sp, #0x4
+ add r1, r2, r1
+ mov r1, r1, asr #0x1
+ str r1, [r0, #0x0]
+ ldrsh r2, [r12, #0x2]
+ ldrsh r1, [r12, #0x6]
+ add r1, r2, r1
+ mov r1, r1, asr #0x1
+ str r1, [r0, #0x4]
+ ldmia sp!, {r4-r5,pc}
+_020BD150:
+ add r12, r3, r2, lsl #0x3
+ ldr r2, [r3, r2, lsl #0x3]
+ ldr r1, [r12, #0x8]
+ add r1, r2, r1
+ mov r1, r1, asr #0x1
+ str r1, [r0, #0x0]
+ ldr r2, [r12, #0x4]
+ ldr r1, [r12, #0xc]
+ add r1, r2, r1
+ mov r1, r1, asr #0x1
+ str r1, [r0, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BD184: .word 0x1FFF0000
+ arm_func_end getScaleData_
+
+ arm_func_start getTransDataEx_
+getTransDataEx_: ; 0x020BD188
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldrh r4, [r3, #0x4]
+ ldr lr, [r2, #0x4]
+ mov r12, r1, asr #0xc
+ sub r4, r4, #0x1
+ cmp r12, r4
+ add r4, r3, lr
+ ldr lr, [r2, #0x0]
+ bne _020BD230
+ ands r2, lr, #0xc0000000
+ beq _020BD1CC
+ ands r2, lr, #0x40000000
+ andne r2, r12, #0x1
+ addne r12, r2, r12, lsr #0x1
+ andeq r2, r12, #0x3
+ addeq r12, r2, r12, lsr #0x2
+_020BD1CC:
+ ldr r2, [r3, #0x8]
+ ands r2, r2, #0x2
+ beq _020BD210
+ ldr r2, _020BD2E8 ; =0x00000FFF
+ ands r3, lr, #0x20000000
+ and r3, r1, r2
+ movne r1, r12, lsl #0x1
+ ldrnesh r2, [r4, r1]
+ ldrnesh r1, [r4, #0x0]
+ add sp, sp, #0x4
+ ldreq r2, [r4, r12, lsl #0x2]
+ ldreq r1, [r4, #0x0]
+ sub r1, r1, r2
+ mul r1, r3, r1
+ add r1, r2, r1, asr #0xc
+ str r1, [r0, #0x0]
+ ldmia sp!, {r4-r5,pc}
+_020BD210:
+ ands r1, lr, #0x20000000
+ movne r1, r12, lsl #0x1
+ ldrnesh r1, [r4, r1]
+ add sp, sp, #0x4
+ strne r1, [r0, #0x0]
+ ldreq r1, [r4, r12, lsl #0x2]
+ streq r1, [r0, #0x0]
+ ldmia sp!, {r4-r5,pc}
+_020BD230:
+ ands r2, lr, #0xc0000000
+ beq _020BD298
+ ldr r2, _020BD2EC ; =0x1FFF0000
+ ands r3, lr, #0x40000000
+ and r2, lr, r2
+ mov r2, r2, lsr #0x10
+ beq _020BD270
+ cmp r12, r2
+ movcs r12, r2, lsr #0x1
+ bhs _020BD298
+ ldr r2, _020BD2F0 ; =0x00001FFF
+ mov r12, r12, lsr #0x1
+ and r5, r1, r2
+ mov r2, #0x2
+ mov r1, #0x1
+ b _020BD2A8
+_020BD270:
+ cmp r12, r2
+ andcs r2, r12, #0x3
+ addcs r12, r2, r12, lsr #0x2
+ bhs _020BD298
+ ldr r2, _020BD2F4 ; =0x00003FFF
+ mov r12, r12, lsr #0x2
+ and r5, r1, r2
+ mov r2, #0x4
+ mov r1, #0x2
+ b _020BD2A8
+_020BD298:
+ ldr r3, _020BD2E8 ; =0x00000FFF
+ mov r2, #0x1
+ and r5, r1, r3
+ mov r1, #0x0
+_020BD2A8:
+ ands r3, lr, #0x20000000
+ addne r3, r4, r12, lsl #0x1
+ movne lr, r12, lsl #0x1
+ ldrnesh r12, [r4, lr]
+ ldrnesh r3, [r3, #0x2]
+ addeq r3, r4, r12, lsl #0x2
+ ldreq r12, [r4, r12, lsl #0x2]
+ ldreq r3, [r3, #0x4]
+ mul r4, r12, r2
+ sub r3, r3, r12
+ mul r2, r5, r3
+ add r2, r4, r2, asr #0xc
+ mov r1, r2, asr r1
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BD2E8: .word 0x00000FFF
+_020BD2EC: .word 0x1FFF0000
+_020BD2F0: .word 0x00001FFF
+_020BD2F4: .word 0x00003FFF
+ arm_func_end getTransDataEx_
+
+ arm_func_start getTransData_
+getTransData_: ; 0x020BD2F8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r12, [r2, #0x4]
+ ldr r2, [r2, #0x0]
+ mov r1, r1, asr #0xc
+ add r3, r3, r12
+ ands r12, r2, #0xc0000000
+ beq _020BD44C
+ ldr ip, _020BD46C ; =0x1FFF0000
+ ands lr, r2, #0x40000000
+ and r12, r2, r12
+ mov lr, r12, lsr #0x10
+ beq _020BD354
+ ands r12, r1, #0x1
+ beq _020BD34C
+ cmp r1, lr
+ movhi r1, lr, lsr #0x1
+ addhi r1, r1, #0x1
+ bhi _020BD44C
+ mov r12, r1, lsr #0x1
+ b _020BD400
+_020BD34C:
+ mov r1, r1, lsr #0x1
+ b _020BD44C
+_020BD354:
+ ands r12, r1, #0x3
+ beq _020BD3F8
+ cmp r1, lr
+ addhi r1, r12, lr, lsr #0x2
+ bhi _020BD44C
+ ands r12, r1, #0x1
+ beq _020BD3F0
+ ands r12, r1, #0x2
+ movne lr, r1, lsr #0x2
+ addne r12, lr, #0x1
+ moveq r12, r1, lsr #0x2
+ addeq lr, r12, #0x1
+ ands r1, r2, #0x20000000
+ beq _020BD3B4
+ mov r2, r12, lsl #0x1
+ mov r1, lr, lsl #0x1
+ ldrsh r12, [r3, r2]
+ ldrsh r2, [r3, r1]
+ mov r1, #0x3
+ add sp, sp, #0x4
+ smlabb r1, r12, r1, r2
+ mov r1, r1, asr #0x2
+ str r1, [r0, #0x0]
+ ldmia sp!, {pc}
+_020BD3B4:
+ ldr r12, [r3, r12, lsl #0x2]
+ ldr r1, [r3, lr, lsl #0x2]
+ mov r2, r12, asr #0x1f
+ mov r2, r2, lsl #0x1
+ mov r3, r12, lsl #0x1
+ orr r2, r2, r12, lsr #0x1f
+ adds r3, r3, r12
+ adc r2, r2, r12, asr #0x1f
+ adds r3, r3, r1
+ adc r1, r2, r1, asr #0x1f
+ mov r2, r3, lsr #0x2
+ orr r2, r2, r1, lsl #0x1e
+ str r2, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020BD3F0:
+ mov r12, r1, lsr #0x2
+ b _020BD400
+_020BD3F8:
+ mov r1, r1, lsr #0x2
+ b _020BD44C
+_020BD400:
+ ands r1, r2, #0x20000000
+ beq _020BD42C
+ mov r2, r12, lsl #0x1
+ add r1, r3, r12, lsl #0x1
+ ldrsh r2, [r3, r2]
+ ldrsh r1, [r1, #0x2]
+ add sp, sp, #0x4
+ add r1, r2, r1
+ mov r1, r1, asr #0x1
+ str r1, [r0, #0x0]
+ ldmia sp!, {pc}
+_020BD42C:
+ add r1, r3, r12, lsl #0x2
+ ldr r2, [r3, r12, lsl #0x2]
+ ldr r1, [r1, #0x4]
+ mov r2, r2, asr #0x1
+ add r1, r2, r1, asr #0x1
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020BD44C:
+ ands r2, r2, #0x20000000
+ movne r1, r1, lsl #0x1
+ ldrnesh r1, [r3, r1]
+ strne r1, [r0, #0x0]
+ ldreq r1, [r3, r1, lsl #0x2]
+ streq r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020BD46C: .word 0x1FFF0000
+ arm_func_end getTransData_
+
+ arm_func_start getJntSRTAnmResult_
+getJntSRTAnmResult_: ; 0x020BD470
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x34
+ mov r9, r0
+ add r0, r9, r1, lsl #0x1
+ ldrh r0, [r0, #0x14]
+ mov r7, r3
+ mov r8, r2
+ ldr r5, [r9, r0]
+ add r1, r9, r0
+ ands r0, r5, #0x1
+ movne r0, #0x7
+ strne r0, [r7, #0x0]
+ bne _020BD814
+ ldr r0, _020BD848 ; =0x00000FFF
+ add r4, r1, #0x4
+ ands r0, r8, r0
+ beq _020BD4C4
+ ldr r0, [r9, #0x8]
+ ands r0, r0, #0x1
+ movne r6, #0x1
+ bne _020BD4C8
+_020BD4C4:
+ mov r6, #0x0
+_020BD4C8:
+ mov r0, #0x0
+ str r0, [r7, #0x0]
+ ands r0, r5, #0x6
+ bne _020BD5C0
+ ands r0, r5, #0x8
+ bne _020BD51C
+ cmp r6, #0x0
+ beq _020BD500
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x4c
+ bl getTransDataEx_
+ b _020BD514
+_020BD500:
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x4c
+ bl getTransData_
+_020BD514:
+ add r4, r4, #0x8
+ b _020BD524
+_020BD51C:
+ ldr r0, [r4], #0x4
+ str r0, [r7, #0x4c]
+_020BD524:
+ ands r0, r5, #0x10
+ bne _020BD568
+ cmp r6, #0x0
+ beq _020BD54C
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x50
+ bl getTransDataEx_
+ b _020BD560
+_020BD54C:
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x50
+ bl getTransData_
+_020BD560:
+ add r4, r4, #0x8
+ b _020BD570
+_020BD568:
+ ldr r0, [r4], #0x4
+ str r0, [r7, #0x50]
+_020BD570:
+ ands r0, r5, #0x20
+ bne _020BD5B4
+ cmp r6, #0x0
+ beq _020BD598
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x54
+ bl getTransDataEx_
+ b _020BD5AC
+_020BD598:
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x54
+ bl getTransData_
+_020BD5AC:
+ add r4, r4, #0x8
+ b _020BD5DC
+_020BD5B4:
+ ldr r0, [r4], #0x4
+ str r0, [r7, #0x54]
+ b _020BD5DC
+_020BD5C0:
+ ands r0, r5, #0x2
+ ldrne r0, [r7, #0x0]
+ orrne r0, r0, #0x4
+ strne r0, [r7, #0x0]
+ bne _020BD5DC
+ mov r0, r7
+ bl getMdlTrans_
+_020BD5DC:
+ ands r0, r5, #0xc0
+ bne _020BD6A8
+ ands r0, r5, #0x100
+ bne _020BD628
+ cmp r6, #0x0
+ beq _020BD60C
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x28
+ bl getRotDataEx_
+ b _020BD620
+_020BD60C:
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ add r0, r7, #0x28
+ bl getRotData_
+_020BD620:
+ add r4, r4, #0x8
+ b _020BD6C4
+_020BD628:
+ ldr r1, [r9, #0xc]
+ ldr r2, [r9, #0x10]
+ ldr r3, [r4, #0x0]
+ add r0, r7, #0x28
+ add r1, r9, r1
+ add r2, r9, r2
+ bl getRotDataByIdx_
+ cmp r0, #0x0
+ beq _020BD6A0
+ ldr r12, [r7, #0x3c]
+ ldr r0, [r7, #0x2c]
+ ldr r3, [r7, #0x28]
+ ldr r11, [r7, #0x38]
+ ldr r1, [r7, #0x30]
+ ldr r2, [r7, #0x34]
+ mul r10, r0, r12
+ mul lr, r1, r11
+ sub r10, r10, lr
+ mov r10, r10, asr #0xc
+ mul lr, r1, r2
+ mul r1, r3, r12
+ sub r1, lr, r1
+ mul r11, r3, r11
+ mul r2, r0, r2
+ sub r0, r11, r2
+ str r10, [r7, #0x40]
+ mov r1, r1, asr #0xc
+ str r1, [r7, #0x44]
+ mov r0, r0, asr #0xc
+ str r0, [r7, #0x48]
+_020BD6A0:
+ add r4, r4, #0x4
+ b _020BD6C4
+_020BD6A8:
+ ands r0, r5, #0x40
+ ldrne r0, [r7, #0x0]
+ orrne r0, r0, #0x2
+ strne r0, [r7, #0x0]
+ bne _020BD6C4
+ mov r0, r7
+ bl getMdlRot_
+_020BD6C4:
+ ands r0, r5, #0x600
+ bne _020BD7F0
+ ands r0, r5, #0x800
+ bne _020BD71C
+ cmp r6, #0x0
+ beq _020BD6F4
+ add r0, sp, #0x0
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ bl getScaleDataEx_
+ b _020BD708
+_020BD6F4:
+ add r0, sp, #0x0
+ mov r1, r8
+ mov r2, r4
+ mov r3, r9
+ bl getScaleData_
+_020BD708:
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x24]
+ b _020BD72C
+_020BD71C:
+ ldr r0, [r4, #0x0]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x4]
+ str r0, [sp, #0x24]
+_020BD72C:
+ ands r0, r5, #0x1000
+ bne _020BD77C
+ cmp r6, #0x0
+ beq _020BD754
+ add r0, sp, #0x8
+ mov r1, r8
+ mov r3, r9
+ add r2, r4, #0x8
+ bl getScaleDataEx_
+ b _020BD768
+_020BD754:
+ add r0, sp, #0x8
+ mov r1, r8
+ mov r3, r9
+ add r2, r4, #0x8
+ bl getScaleData_
+_020BD768:
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #0x1c]
+ str r0, [sp, #0x28]
+ b _020BD78C
+_020BD77C:
+ ldr r0, [r4, #0x8]
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #0xc]
+ str r0, [sp, #0x28]
+_020BD78C:
+ ands r0, r5, #0x2000
+ bne _020BD7DC
+ cmp r6, #0x0
+ beq _020BD7B4
+ add r0, sp, #0x10
+ mov r1, r8
+ mov r3, r9
+ add r2, r4, #0x10
+ bl getScaleDataEx_
+ b _020BD7C8
+_020BD7B4:
+ add r0, sp, #0x10
+ mov r1, r8
+ mov r3, r9
+ add r2, r4, #0x10
+ bl getScaleData_
+_020BD7C8:
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x2c]
+ b _020BD814
+_020BD7DC:
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #0x20]
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x2c]
+ b _020BD814
+_020BD7F0:
+ ands r0, r5, #0x200
+ ldrne r0, [r7, #0x0]
+ orrne r0, r0, #0x1
+ strne r0, [r7, #0x0]
+ bne _020BD814
+ mov r0, r7
+ bl getMdlScale_
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r11,pc}
+_020BD814:
+ ldr r0, [r7, #0x0]
+ add r1, sp, #0x18
+ ands r0, r0, #0x1
+ ldr r0, _020BD84C ; =NNS_G3dRS
+ movne r3, #0x4
+ ldr r4, [r0, #0x0]
+ moveq r3, #0x0
+ ldr r2, [r4, #0x0]
+ ldr r4, [r4, #0xe8]
+ mov r0, r7
+ blx r4
+ add sp, sp, #0x34
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020BD848: .word 0x00000FFF
+_020BD84C: .word NNS_G3dRS
+ arm_func_end getJntSRTAnmResult_
+
+ arm_func_start getMdlRot_
+getMdlRot_: ; 0x020BD850
+ stmdb sp!, {r4-r8,lr}
+ ldr r1, _020BD990 ; =NNS_G3dRS
+ mov r8, r0
+ ldr r0, [r1, #0x0]
+ ldr r3, [r0, #0xd4]
+ ldr r0, [r0, #0x0]
+ ldrh r2, [r3, #0x6]
+ ldrb r0, [r0, #0x1]
+ ldrh r1, [r3, r2]
+ add r2, r3, r2
+ mla r0, r1, r0, r2
+ ldr r0, [r0, #0x4]
+ ldrh r2, [r3, r0]
+ add r4, r3, r0
+ add r1, r4, #0x4
+ ands r0, r2, #0x1
+ addeq r1, r1, #0xc
+ ands r0, r2, #0x2
+ bne _020BD980
+ ands r0, r2, #0x8
+ beq _020BD934
+ and r2, r2, #0xf0
+ add r0, r8, #0x28
+ mov r5, r2, asr #0x4
+ ldrsh r7, [r1, #0x0]
+ ldrsh r6, [r1, #0x2]
+ bl MI_Zero36B
+ ldrh r0, [r4, #0x0]
+ add r1, r8, r5, lsl #0x2
+ ands r0, r0, #0x100
+ movne r0, #0x1000
+ rsbne r2, r0, #0x0
+ moveq r2, #0x1000
+ ldr r0, _020BD994 ; =pivotUtil_
+ str r2, [r1, #0x28]
+ ldrb r1, [r0, r5, lsl #0x2]
+ ldr r0, _020BD998 ; =pivotUtil_ + 1
+ add r1, r8, r1, lsl #0x2
+ str r7, [r1, #0x28]
+ ldrb r0, [r0, r5, lsl #0x2]
+ add r0, r8, r0, lsl #0x2
+ str r6, [r0, #0x28]
+ ldrh r0, [r4, #0x0]
+ ands r0, r0, #0x200
+ ldr r0, _020BD99C ; =pivotUtil_ + 2
+ rsbne r6, r6, #0x0
+ ldrb r0, [r0, r5, lsl #0x2]
+ add r0, r8, r0, lsl #0x2
+ str r6, [r0, #0x28]
+ ldrh r0, [r4, #0x0]
+ ands r0, r0, #0x400
+ ldr r0, _020BD9A0 ; =pivotUtil_ + 3
+ rsbne r7, r7, #0x0
+ ldrb r0, [r0, r5, lsl #0x2]
+ add r0, r8, r0, lsl #0x2
+ str r7, [r0, #0x28]
+ ldmia sp!, {r4-r8,pc}
+_020BD934:
+ ldrsh r0, [r4, #0x2]
+ str r0, [r8, #0x28]
+ ldrsh r0, [r1, #0x0]
+ str r0, [r8, #0x2c]
+ ldrsh r0, [r1, #0x2]
+ str r0, [r8, #0x30]
+ ldrsh r0, [r1, #0x4]
+ str r0, [r8, #0x34]
+ ldrsh r0, [r1, #0x6]
+ str r0, [r8, #0x38]
+ ldrsh r0, [r1, #0x8]
+ str r0, [r8, #0x3c]
+ ldrsh r0, [r1, #0xa]
+ str r0, [r8, #0x40]
+ ldrsh r0, [r1, #0xc]
+ str r0, [r8, #0x44]
+ ldrsh r0, [r1, #0xe]
+ str r0, [r8, #0x48]
+ ldmia sp!, {r4-r8,pc}
+_020BD980:
+ ldr r0, [r8, #0x0]
+ orr r0, r0, #0x2
+ str r0, [r8, #0x0]
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020BD990: .word NNS_G3dRS
+_020BD994: .word pivotUtil_
+_020BD998: .word pivotUtil_ + 1
+_020BD99C: .word pivotUtil_ + 2
+_020BD9A0: .word pivotUtil_ + 3
+ arm_func_end getMdlRot_
+
+ arm_func_start getMdlScale_
+getMdlScale_: ; 0x020BD9A4
+ stmdb sp!, {r4,lr}
+ ldr r1, _020BDA04 ; =NNS_G3dRS
+ ldr r12, [r1, #0x0]
+ ldr r4, [r12, #0xd4]
+ ldr r2, [r12, #0x0]
+ ldrh lr, [r4, #0x6]
+ ldrb r1, [r2, #0x1]
+ ldrh r3, [r4, lr]
+ add lr, r4, lr
+ mla r1, r3, r1, lr
+ ldr r1, [r1, #0x4]
+ ldrh r3, [r4, r1]
+ add r1, r4, r1
+ add r1, r1, #0x4
+ ands lr, r3, #0x1
+ addeq r1, r1, #0xc
+ ands lr, r3, #0x2
+ bne _020BD9F8
+ ands lr, r3, #0x8
+ addne r1, r1, #0x4
+ addeq r1, r1, #0x10
+_020BD9F8:
+ ldr r12, [r12, #0xe8]
+ blx r12
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BDA04: .word NNS_G3dRS
+ arm_func_end getMdlScale_
+
+ arm_func_start getMdlTrans_
+getMdlTrans_: ; 0x020BDA08
+ ldr r1, _020BDA6C ; =NNS_G3dRS
+ ldr r1, [r1, #0x0]
+ ldr r12, [r1, #0xd4]
+ ldr r1, [r1, #0x0]
+ ldrh r3, [r12, #0x6]
+ ldrb r1, [r1, #0x1]
+ ldrh r2, [r12, r3]
+ add r3, r12, r3
+ mla r1, r2, r1, r3
+ ldr r2, [r1, #0x4]
+ ldrh r1, [r12, r2]
+ add r2, r12, r2
+ ands r1, r1, #0x1
+ ldrne r1, [r0, #0x0]
+ orrne r1, r1, #0x4
+ strne r1, [r0, #0x0]
+ bxne lr
+ ldr r1, [r2, #0x4]
+ add r2, r2, #0x4
+ str r1, [r0, #0x4c]
+ ldr r1, [r2, #0x4]
+ str r1, [r0, #0x50]
+ ldr r1, [r2, #0x8]
+ str r1, [r0, #0x54]
+ bx lr
+ .balign 4
+_020BDA6C: .word NNS_G3dRS
+ arm_func_end getMdlTrans_
+
+ arm_func_start NNSi_G3dAnmCalcNsBca
+NNSi_G3dAnmCalcNsBca: ; 0x020BDA70
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r3, r0
+ ldr r0, [r1, #0x8]
+ ldr r12, [r1, #0x0]
+ ldrh r1, [r0, #0x4]
+ mov r1, r1, lsl #0xc
+ cmp r12, r1
+ subge r12, r1, #0x1
+ bge _020BDAA0
+ cmp r12, #0x0
+ movlt r12, #0x0
+_020BDAA0:
+ mov r1, r2
+ mov r2, r12
+ bl getJntSRTAnmResult_
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNSi_G3dAnmCalcNsBca
+
+ arm_func_start NNSi_G3dAnmObjInitNsBca
+NNSi_G3dAnmObjInitNsBca: ; 0x020BDAB4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ ldr r0, _020BDB3C ; =NNS_G3dFuncAnmJntNsBcaDefault
+ str r4, [r5, #0x8]
+ ldr r0, [r0, #0x0]
+ add r1, r5, #0x1a
+ str r0, [r5, #0xc]
+ ldrb r2, [r2, #0x17]
+ mov r0, #0x0
+ strb r2, [r5, #0x19]
+ ldrb r2, [r5, #0x19]
+ mov r2, r2, lsl #0x1
+ bl MIi_CpuClear16
+ ldrh r0, [r4, #0x6]
+ add r2, r4, #0x14
+ mov r3, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r5,pc}
+_020BDB08:
+ mov r0, r3, lsl #0x1
+ ldrh r1, [r2, r0]
+ add r0, r5, r3, lsl #0x1
+ add r3, r3, #0x1
+ ldr r1, [r4, r1]
+ mov r1, r1, lsr #0x18
+ orr r1, r1, #0x100
+ strh r1, [r0, #0x1a]
+ ldrh r0, [r4, #0x6]
+ cmp r3, r0
+ blo _020BDB08
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BDB3C: .word NNS_G3dFuncAnmJntNsBcaDefault
+ arm_func_end NNSi_G3dAnmObjInitNsBca
diff --git a/arm9/asm/NNS_G3D_nsbma.s b/arm9/asm/NNS_G3D_nsbma.s
new file mode 100644
index 00000000..acadbe75
--- /dev/null
+++ b/arm9/asm/NNS_G3D_nsbma.s
@@ -0,0 +1,287 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dAnmCalcNsBma
+NNSi_G3dAnmCalcNsBma: ; 0x020BDB40
+ stmdb sp!, {r4-r8,lr}
+ ldr r7, [r1, #0x8]
+ mov r2, r2, lsl #0x10
+ ldrh r4, [r7, #0xe]
+ add r5, r7, #0x8
+ ldr r6, [r1, #0x0]
+ ldrh r3, [r5, r4]
+ mov r1, r2, lsr #0x10
+ add r2, r5, r4
+ mul r4, r3, r1
+ add r3, r2, #0x4
+ mov r6, r6, asr #0xc
+ mov r8, r0
+ ldr r1, [r3, r4]
+ mov r0, r7
+ mov r2, r6
+ add r5, r3, r4
+ bl GetMatColAnmValue_
+ mov r4, r0
+ ldr r1, [r5, #0x4]
+ mov r0, r7
+ mov r2, r6
+ bl GetMatColAnmValue_
+ ldr r1, [r8, #0x4]
+ mov r2, r6
+ and r1, r1, #0x8000
+ orr r1, r1, r4
+ orr r0, r1, r0, lsl #0x10
+ str r0, [r8, #0x4]
+ mov r0, r7
+ ldr r1, [r5, #0xc]
+ bl GetMatColAnmValue_
+ mov r4, r0
+ mov r0, r7
+ ldr r1, [r5, #0x8]
+ mov r2, r6
+ bl GetMatColAnmValue_
+ mov r2, r6
+ ldr r1, [r8, #0x8]
+ and r1, r1, #0x8000
+ orr r0, r1, r0
+ orr r0, r0, r4, lsl #0x10
+ str r0, [r8, #0x8]
+ mov r0, r7
+ ldr r1, [r5, #0x10]
+ bl GetMatColAnmuAlphaValue_
+ ldr r1, [r8, #0xc]
+ bic r1, r1, #0x1f0000
+ orr r0, r1, r0, lsl #0x10
+ str r0, [r8, #0xc]
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end NNSi_G3dAnmCalcNsBma
+
+ arm_func_start NNSi_G3dAnmObjInitNsBma
+NNSi_G3dAnmObjInitNsBma: ; 0x020BDC0C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r3, _020BDCB4 ; =NNS_G3dFuncAnmMatNsBmaDefault
+ ldr r4, [r2, #0x8]
+ ldr r3, [r3, #0x0]
+ mov r9, r0
+ str r3, [r9, #0xc]
+ ldrb r0, [r2, #0x18]
+ mov r8, r1
+ add r4, r2, r4
+ strb r0, [r9, #0x19]
+ ldrb r2, [r9, #0x19]
+ add r1, r9, #0x1a
+ mov r0, #0x0
+ mov r2, r2, lsl #0x1
+ bl MIi_CpuClear16
+ ldrb r0, [r8, #0x9]
+ mov r7, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r9,pc}
+ mov r6, r7
+ add r5, r8, #0x8
+ add r4, r4, #0x4
+_020BDC6C:
+ ldrh r1, [r8, #0xe]
+ mov r0, r4
+ add r2, r5, r1
+ ldrh r1, [r2, #0x2]
+ add r1, r2, r1
+ add r1, r1, r6
+ bl NNS_G3dGetResDictIdxByName
+ cmp r0, #0x0
+ orrge r1, r7, #0x100
+ addge r0, r9, r0, lsl #0x1
+ strgeh r1, [r0, #0x1a]
+ ldrb r0, [r8, #0x9]
+ add r7, r7, #0x1
+ add r6, r6, #0x10
+ cmp r7, r0
+ blo _020BDC6C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020BDCB4: .word NNS_G3dFuncAnmMatNsBmaDefault
+ arm_func_end NNSi_G3dAnmObjInitNsBma
+
+ arm_func_start GetMatColAnmuAlphaValue_
+GetMatColAnmuAlphaValue_: ; 0x020BDCB8
+ ands r3, r1, #0x20000000
+ movne r0, r1, lsl #0x10
+ movne r0, r0, lsr #0x10
+ bxne lr
+ ldr r3, _020BDDA4 ; =0x0000FFFF
+ ands r12, r1, #0xc0000000
+ and r3, r1, r3
+ add r0, r0, r3
+ ldreqb r0, [r0, r2]
+ bxeq lr
+ ldr r3, _020BDDA8 ; =0x1FFF0000
+ ands r12, r1, #0x40000000
+ and r1, r1, r3
+ mov r3, r1, lsr #0x10
+ beq _020BDD30
+ ands r1, r2, #0x1
+ beq _020BDD28
+ cmp r2, r3
+ addhi r0, r0, r3, lsr #0x1
+ ldrhib r0, [r0, #0x1]
+ bxhi lr
+ add r1, r0, r2, lsr #0x1
+ ldrb r2, [r0, r2, lsr #0x1]
+ ldrb r0, [r1, #0x1]
+ add r0, r2, r0
+ mov r0, r0, lsl #0xf
+ mov r0, r0, lsr #0x10
+ bx lr
+_020BDD28:
+ ldrb r0, [r0, r2, lsr #0x1]
+ bx lr
+_020BDD30:
+ ands r1, r2, #0x3
+ beq _020BDD9C
+ cmp r2, r3
+ addhi r0, r0, r3, lsr #0x2
+ ldrhib r0, [r1, r0]
+ bxhi lr
+ ands r1, r2, #0x1
+ beq _020BDD80
+ ands r1, r2, #0x2
+ movne r1, r2, lsr #0x2
+ addne r2, r1, #0x1
+ moveq r2, r2, lsr #0x2
+ addeq r1, r2, #0x1
+ ldrb r2, [r0, r2]
+ ldrb r1, [r0, r1]
+ mov r0, #0x3
+ mla r0, r2, r0, r1
+ mov r0, r0, lsl #0xe
+ mov r0, r0, lsr #0x10
+ bx lr
+_020BDD80:
+ add r1, r0, r2, lsr #0x2
+ ldrb r2, [r0, r2, lsr #0x2]
+ ldrb r0, [r1, #0x1]
+ add r0, r2, r0
+ mov r0, r0, lsl #0xf
+ mov r0, r0, lsr #0x10
+ bx lr
+_020BDD9C:
+ ldrb r0, [r0, r2, lsr #0x2]
+ bx lr
+ .balign 4
+_020BDDA4: .word 0x0000FFFF
+_020BDDA8: .word 0x1FFF0000
+ arm_func_end GetMatColAnmuAlphaValue_
+
+ arm_func_start GetMatColAnmValue_
+GetMatColAnmValue_: ; 0x020BDDAC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ands r3, r1, #0x20000000
+ movne r0, r1, lsl #0x10
+ addne sp, sp, #0x4
+ movne r0, r0, lsr #0x10
+ ldmneia sp!, {pc}
+ ldr r3, _020BDF2C ; =0x0000FFFF
+ ands r12, r1, #0xc0000000
+ and r3, r1, r3
+ add r0, r0, r3
+ moveq r1, r2, lsl #0x1
+ addeq sp, sp, #0x4
+ ldreqh r0, [r0, r1]
+ ldmeqia sp!, {pc}
+ ldr r3, _020BDF30 ; =0x1FFF0000
+ ands r12, r1, #0x40000000
+ and r1, r1, r3
+ mov r3, r1, lsr #0x10
+ beq _020BDE34
+ ands r1, r2, #0x1
+ beq _020BDE24
+ cmp r2, r3
+ bichi r1, r3, #0x1
+ addhi r0, r0, r1
+ addhi sp, sp, #0x4
+ ldrhih r0, [r0, #0x2]
+ ldmhiia sp!, {pc}
+ mov r1, r2, lsr #0x1
+ b _020BDEE0
+_020BDE24:
+ bic r1, r2, #0x1
+ add sp, sp, #0x4
+ ldrh r0, [r0, r1]
+ ldmia sp!, {pc}
+_020BDE34:
+ ands r1, r2, #0x3
+ beq _020BDECC
+ cmp r2, r3
+ movhi r2, r3, lsr #0x2
+ movhi r1, r1, lsl #0x1
+ addhi r0, r0, r2, lsl #0x1
+ addhi sp, sp, #0x4
+ ldrhih r0, [r1, r0]
+ ldmhiia sp!, {pc}
+ ands r1, r2, #0x1
+ beq _020BDEC4
+ ands r1, r2, #0x2
+ movne r1, r2, lsr #0x2
+ addne r2, r1, #0x1
+ moveq r2, r2, lsr #0x2
+ addeq r1, r2, #0x1
+ mov r2, r2, lsl #0x1
+ mov r1, r1, lsl #0x1
+ ldrh r12, [r0, r2]
+ ldrh lr, [r0, r1]
+ ldr r0, _020BDF34 ; =0x00007C1F
+ and r3, r12, #0x3e0
+ and r2, lr, #0x3e0
+ mov r1, #0x3
+ mla r2, r3, r1, r2
+ and r12, r12, r0
+ and r3, lr, r0
+ mla r1, r12, r1, r3
+ mov r2, r2, lsr #0x2
+ and r1, r0, r1, lsr #0x2
+ and r0, r2, #0x3e0
+ orr r0, r1, r0
+ mov r0, r0, lsl #0x10
+ add sp, sp, #0x4
+ mov r0, r0, lsr #0x10
+ ldmia sp!, {pc}
+_020BDEC4:
+ mov r1, r2, lsr #0x2
+ b _020BDEE0
+_020BDECC:
+ mov r1, r2, lsr #0x2
+ mov r1, r1, lsl #0x1
+ add sp, sp, #0x4
+ ldrh r0, [r0, r1]
+ ldmia sp!, {pc}
+_020BDEE0:
+ mov r2, r1, lsl #0x1
+ add r1, r0, r1, lsl #0x1
+ ldrh r3, [r0, r2]
+ ldrh r12, [r1, #0x2]
+ ldr r0, _020BDF34 ; =0x00007C1F
+ and r2, r3, #0x3e0
+ and r1, r12, #0x3e0
+ add r1, r2, r1
+ mov r1, r1, lsr #0x1
+ and r3, r3, r0
+ and r2, r12, r0
+ add r2, r3, r2
+ and r2, r0, r2, lsr #0x1
+ and r0, r1, #0x3e0
+ orr r0, r2, r0
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020BDF2C: .word 0x0000FFFF
+_020BDF30: .word 0x1FFF0000
+_020BDF34: .word 0x00007C1F
+ arm_func_end GetMatColAnmValue_
diff --git a/arm9/asm/NNS_G3D_nsbta.s b/arm9/asm/NNS_G3D_nsbta.s
new file mode 100644
index 00000000..a9fde7cb
--- /dev/null
+++ b/arm9/asm/NNS_G3D_nsbta.s
@@ -0,0 +1,299 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dAnmCalcNsBta
+NNSi_G3dAnmCalcNsBta: ; 0x020BDF38
+ stmdb sp!, {r4,lr}
+ ldr r12, [r1, #0x0]
+ mov r4, r0
+ mov r2, r2, lsl #0x10
+ ldr r0, [r1, #0x8]
+ mov r1, r2, lsr #0x10
+ mov r3, r4
+ mov r2, r12, asr #0xc
+ bl GetTexSRTAnm_
+ ldr r0, [r4, #0x10]
+ bic r0, r0, #0xc0000000
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x10]
+ orr r0, r0, #0x40000000
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x0]
+ orr r0, r0, #0x8
+ str r0, [r4, #0x0]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_G3dAnmCalcNsBta
+
+ arm_func_start NNSi_G3dAnmObjInitNsBta
+NNSi_G3dAnmObjInitNsBta: ; 0x020BDF84
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r3, _020BE02C ; =NNS_G3dFuncAnmMatNsBtaDefault
+ ldr r4, [r2, #0x8]
+ ldr r3, [r3, #0x0]
+ mov r9, r0
+ str r3, [r9, #0xc]
+ ldrb r0, [r2, #0x18]
+ mov r8, r1
+ add r4, r2, r4
+ strb r0, [r9, #0x19]
+ ldrb r2, [r9, #0x19]
+ add r1, r9, #0x1a
+ mov r0, #0x0
+ mov r2, r2, lsl #0x1
+ bl MIi_CpuClear16
+ ldrb r0, [r8, #0x9]
+ mov r7, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r9,pc}
+ mov r6, r7
+ add r5, r8, #0x8
+ add r4, r4, #0x4
+_020BDFE4:
+ ldrh r1, [r8, #0xe]
+ mov r0, r4
+ add r2, r5, r1
+ ldrh r1, [r2, #0x2]
+ add r1, r2, r1
+ add r1, r1, r6
+ bl NNS_G3dGetResDictIdxByName
+ cmp r0, #0x0
+ orrge r1, r7, #0x100
+ addge r0, r9, r0, lsl #0x1
+ strgeh r1, [r0, #0x1a]
+ ldrb r0, [r8, #0x9]
+ add r7, r7, #0x1
+ add r6, r6, #0x10
+ cmp r7, r0
+ blo _020BDFE4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020BE02C: .word NNS_G3dFuncAnmMatNsBtaDefault
+ arm_func_end NNSi_G3dAnmObjInitNsBta
+
+ arm_func_start GetTexSRTAnm_
+GetTexSRTAnm_: ; 0x020BE030
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r8, r0
+ ldrh r4, [r8, #0xe]
+ add r5, r8, #0x8
+ mov r6, r3
+ ldrh r3, [r5, r4]
+ add r4, r5, r4
+ add r4, r4, #0x4
+ mla r5, r3, r1, r4
+ mov r7, r2
+ ldr r1, [r5, #0x18]
+ ldr r2, [r5, #0x1c]
+ mov r3, r7
+ ldr r4, [r6, #0x0]
+ bl GetTexSRTAnmVectorVal_
+ mov r9, r0
+ ldr r1, [r5, #0x20]
+ mov r0, r8
+ ldr r2, [r5, #0x24]
+ mov r3, r7
+ bl GetTexSRTAnmVectorVal_
+ cmp r9, #0x0
+ bne _020BE09C
+ cmp r0, #0x0
+ orreq r4, r4, #0x4
+ beq _020BE0A8
+_020BE09C:
+ str r9, [r6, #0x24]
+ str r0, [r6, #0x28]
+ bic r4, r4, #0x4
+_020BE0A8:
+ ldr r1, [r5, #0x10]
+ ldr r2, [r5, #0x14]
+ mov r0, r8
+ mov r3, r7
+ bl GetTexSRTAnmSinCosVal_
+ cmp r0, #0x10000000
+ strneh r0, [r6, #0x20]
+ movne r0, r0, lsr #0x10
+ strneh r0, [r6, #0x22]
+ orreq r4, r4, #0x2
+ ldr r1, [r5, #0x0]
+ ldr r2, [r5, #0x4]
+ mov r0, r8
+ mov r3, r7
+ bicne r4, r4, #0x2
+ bl GetTexSRTAnmVectorVal_
+ mov r9, r0
+ ldr r1, [r5, #0x8]
+ ldr r2, [r5, #0xc]
+ mov r0, r8
+ mov r3, r7
+ bl GetTexSRTAnmVectorVal_
+ cmp r9, #0x1000
+ bne _020BE114
+ cmp r0, #0x1000
+ orreq r4, r4, #0x1
+ beq _020BE120
+_020BE114:
+ str r9, [r6, #0x18]
+ str r0, [r6, #0x1c]
+ bic r4, r4, #0x1
+_020BE120:
+ str r4, [r6, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ arm_func_end GetTexSRTAnm_
+
+ arm_func_start GetTexSRTAnmSinCosVal_
+GetTexSRTAnmSinCosVal_: ; 0x020BE12C
+ ands r12, r1, #0x20000000
+ movne r0, r2
+ bxne lr
+ add r0, r0, r2
+ ands r2, r1, #0xc0000000
+ beq _020BE1F8
+ ldr r2, _020BE234 ; =0x0000FFFF
+ ands r12, r1, #0x40000000
+ and r2, r1, r2
+ beq _020BE17C
+ ands r1, r3, #0x1
+ beq _020BE174
+ cmp r3, r2
+ movhi r1, r2, lsr #0x1
+ addhi r3, r1, #0x1
+ bhi _020BE1F8
+ mov r2, r3, lsr #0x1
+ b _020BE200
+_020BE174:
+ mov r3, r3, lsr #0x1
+ b _020BE1F8
+_020BE17C:
+ ands r1, r3, #0x3
+ beq _020BE1F4
+ cmp r3, r2
+ addhi r3, r1, r2, lsr #0x2
+ bhi _020BE1F8
+ ands r1, r3, #0x1
+ beq _020BE1EC
+ ands r1, r3, #0x2
+ movne r1, r3, lsr #0x2
+ addne r2, r1, #0x1
+ moveq r2, r3, lsr #0x2
+ addeq r1, r2, #0x1
+ mov r12, r2, lsl #0x2
+ add r3, r0, r2, lsl #0x2
+ mov r2, r1, lsl #0x2
+ add r1, r0, r1, lsl #0x2
+ ldrsh r12, [r0, r12]
+ ldrsh r2, [r0, r2]
+ mov r0, #0x3
+ ldrsh r3, [r3, #0x2]
+ ldrsh r1, [r1, #0x2]
+ mla r2, r12, r0, r2
+ mla r1, r3, r0, r1
+ ldr r0, _020BE234 ; =0x0000FFFF
+ mov r1, r1, asr #0x2
+ and r0, r0, r2, asr #0x2
+ orr r0, r0, r1, lsl #0x10
+ bx lr
+_020BE1EC:
+ mov r2, r3, lsr #0x2
+ b _020BE200
+_020BE1F4:
+ mov r3, r3, lsr #0x2
+_020BE1F8:
+ ldr r0, [r0, r3, lsl #0x2]
+ bx lr
+_020BE200:
+ add r1, r0, r2, lsl #0x2
+ mov r2, r2, lsl #0x2
+ ldrsh r12, [r0, r2]
+ ldrsh r3, [r1, #0x4]
+ ldrsh r2, [r1, #0x2]
+ ldrsh r1, [r1, #0x6]
+ ldr r0, _020BE234 ; =0x0000FFFF
+ add r3, r12, r3
+ add r1, r2, r1
+ and r2, r0, r3, asr #0x1
+ mov r0, r1, asr #0x1
+ orr r0, r2, r0, lsl #0x10
+ bx lr
+ .balign 4
+_020BE234: .word 0x0000FFFF
+ arm_func_end GetTexSRTAnmSinCosVal_
+
+ arm_func_start GetTexSRTAnmVectorVal_
+GetTexSRTAnmVectorVal_: ; 0x020BE238
+ ands r12, r1, #0x20000000
+ movne r0, r2
+ bxne lr
+ add r0, r0, r2
+ ands r2, r1, #0xc0000000
+ beq _020BE2F0
+ ldr r2, _020BE330 ; =0x0000FFFF
+ ands r12, r1, #0x40000000
+ and r12, r1, r2
+ beq _020BE288
+ ands r2, r3, #0x1
+ beq _020BE280
+ cmp r3, r12
+ movhi r2, r12, lsr #0x1
+ addhi r3, r2, #0x1
+ bhi _020BE2F0
+ mov r3, r3, lsr #0x1
+ b _020BE304
+_020BE280:
+ mov r3, r3, lsr #0x1
+ b _020BE2F0
+_020BE288:
+ ands r2, r3, #0x3
+ beq _020BE2EC
+ cmp r3, r12
+ addhi r3, r2, r12, lsr #0x2
+ bhi _020BE2F0
+ ands r2, r3, #0x1
+ beq _020BE2E4
+ ands r2, r3, #0x2
+ movne r3, r3, lsr #0x2
+ addne r2, r3, #0x1
+ moveq r2, r3, lsr #0x2
+ addeq r3, r2, #0x1
+ ands r1, r1, #0x10000000
+ movne r2, r2, lsl #0x1
+ movne r1, r3, lsl #0x1
+ ldrnesh r2, [r0, r2]
+ ldrnesh r1, [r0, r1]
+ ldreq r2, [r0, r2, lsl #0x2]
+ ldreq r1, [r0, r3, lsl #0x2]
+ mov r0, #0x3
+ mla r0, r2, r0, r1
+ mov r0, r0, asr #0x2
+ bx lr
+_020BE2E4:
+ mov r3, r3, lsr #0x2
+ b _020BE304
+_020BE2EC:
+ mov r3, r3, lsr #0x2
+_020BE2F0:
+ ands r1, r1, #0x10000000
+ movne r1, r3, lsl #0x1
+ ldrnesh r0, [r0, r1]
+ ldreq r0, [r0, r3, lsl #0x2]
+ bx lr
+_020BE304:
+ ands r1, r1, #0x10000000
+ movne r2, r3, lsl #0x1
+ addne r1, r0, r3, lsl #0x1
+ ldrnesh r2, [r0, r2]
+ ldrnesh r0, [r1, #0x2]
+ addeq r1, r0, r3, lsl #0x2
+ ldreq r2, [r0, r3, lsl #0x2]
+ ldreq r0, [r1, #0x4]
+ add r0, r2, r0
+ mov r0, r0, asr #0x1
+ bx lr
+ .balign 4
+_020BE330: .word 0x0000FFFF
+ arm_func_end GetTexSRTAnmVectorVal_
diff --git a/arm9/asm/NNS_G3D_nsbtp.s b/arm9/asm/NNS_G3D_nsbtp.s
new file mode 100644
index 00000000..0ae2aa13
--- /dev/null
+++ b/arm9/asm/NNS_G3D_nsbtp.s
@@ -0,0 +1,180 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dAnmCalcNsBtp
+NNSi_G3dAnmCalcNsBtp: ; 0x020BE334
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldr r3, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ mov r1, r2, lsl #0x10
+ mov r2, r3, lsl #0x4
+ mov r7, r0
+ mov r0, r5
+ mov r1, r1, lsr #0x10
+ mov r2, r2, lsr #0x10
+ bl NNSi_G3dGetTexPatAnmFV
+ mov r4, r0
+ ldrb r1, [r4, #0x2]
+ mov r0, r5
+ bl NNSi_G3dGetTexPatAnmTexNameByIdx
+ mov r1, r0
+ ldr r0, [r6, #0x14]
+ mov r2, r7
+ bl SetTexParamaters_
+ ldrb r1, [r4, #0x3]
+ cmp r1, #0xff
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ mov r0, r5
+ bl NNSi_G3dGetTexPatAnmPlttNameByIdx
+ mov r1, r0
+ ldr r0, [r6, #0x14]
+ mov r2, r7
+ bl SetPlttParamaters_
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNSi_G3dAnmCalcNsBtp
+
+ arm_func_start SetPlttParamaters_
+SetPlttParamaters_: ; 0x020BE3B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldrh r0, [r5, #0x34]
+ mov r4, r2
+ add r0, r5, r0
+ bl NNS_G3dGetResDataByName
+ ldr r1, [r5, #0x2c]
+ ldrh r2, [r0, #0x2]
+ mov r1, r1, lsl #0x10
+ mov r3, r1, lsr #0x10
+ ands r1, r2, #0x1
+ ldrh r0, [r0, #0x0]
+ moveq r1, r3, lsl #0xf
+ moveq r3, r1, lsr #0x10
+ moveq r0, r0, lsl #0xf
+ moveq r0, r0, lsr #0x10
+ add r0, r0, r3
+ str r0, [r4, #0x14]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end SetPlttParamaters_
+
+ arm_func_start SetTexParamaters_
+SetTexParamaters_: ; 0x020BE408
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ add r0, r5, #0x3c
+ mov r4, r2
+ bl NNS_G3dGetResDataByName
+ ldr r1, [r0, #0x0]
+ ldr r3, [r4, #0x10]
+ and r1, r1, #0x1c000000
+ cmp r1, #0x14000000
+ ldrne r2, [r5, #0x8]
+ ldrne r1, _020BE4E0 ; =0x0000FFFF
+ andne r5, r2, r1
+ ldreq r2, [r5, #0x18]
+ ldreq r1, _020BE4E0 ; =0x0000FFFF
+ andeq r5, r2, r1
+ ldr r1, _020BE4E4 ; =0xC00F0000
+ ldr r2, _020BE4E8 ; =0x000007FF
+ and r1, r3, r1
+ str r1, [r4, #0x10]
+ ldr r1, [r0, #0x0]
+ ldr r3, [r4, #0x10]
+ add r1, r1, r5
+ orr r1, r3, r1
+ str r1, [r4, #0x10]
+ ldr r3, [r0, #0x4]
+ ldr r1, _020BE4EC ; =0x003FF800
+ and r3, r3, r2
+ strh r3, [r4, #0x2c]
+ ldr r3, [r0, #0x4]
+ and r1, r3, r1
+ mov r1, r1, lsr #0xb
+ strh r1, [r4, #0x2e]
+ ldr r3, [r0, #0x4]
+ ldrh r1, [r4, #0x2c]
+ and r0, r3, r2
+ and r5, r2, r3, lsr #0xb
+ cmp r0, r1
+ moveq r0, #0x1000
+ beq _020BE4B4
+ mov r0, r0, lsl #0xc
+ mov r1, r1, lsl #0xc
+ bl FX_Div
+_020BE4B4:
+ str r0, [r4, #0x30]
+ ldrh r1, [r4, #0x2e]
+ cmp r5, r1
+ moveq r0, #0x1000
+ beq _020BE4D4
+ mov r0, r5, lsl #0xc
+ mov r1, r1, lsl #0xc
+ bl FX_Div
+_020BE4D4:
+ str r0, [r4, #0x34]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BE4E0: .word 0x0000FFFF
+_020BE4E4: .word 0xC00F0000
+_020BE4E8: .word 0x000007FF
+_020BE4EC: .word 0x003FF800
+ arm_func_end SetTexParamaters_
+
+ arm_func_start NNSi_G3dAnmObjInitNsBtp
+NNSi_G3dAnmObjInitNsBtp: ; 0x020BE4F0
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r3, _020BE59C ; =NNS_G3dFuncAnmMatNsBtpDefault
+ ldr r4, [r2, #0x8]
+ ldr r3, [r3, #0x0]
+ mov r9, r0
+ str r3, [r9, #0xc]
+ ldrb r0, [r2, #0x18]
+ mov r8, r1
+ add r4, r2, r4
+ strb r0, [r9, #0x19]
+ str r8, [r9, #0x8]
+ ldrb r2, [r9, #0x19]
+ add r1, r9, #0x1a
+ mov r0, #0x0
+ mov r2, r2, lsl #0x1
+ bl MIi_CpuClear16
+ ldrb r0, [r8, #0xd]
+ mov r7, #0x0
+ cmp r0, #0x0
+ addls sp, sp, #0x4
+ ldmlsia sp!, {r4-r9,pc}
+ mov r6, r7
+ add r5, r8, #0xc
+ add r4, r4, #0x4
+_020BE554:
+ ldrh r1, [r8, #0x12]
+ mov r0, r4
+ add r2, r5, r1
+ ldrh r1, [r2, #0x2]
+ add r1, r2, r1
+ add r1, r1, r6
+ bl NNS_G3dGetResDictIdxByName
+ cmp r0, #0x0
+ orrge r1, r7, #0x100
+ addge r0, r9, r0, lsl #0x1
+ strgeh r1, [r0, #0x1a]
+ ldrb r0, [r8, #0xd]
+ add r7, r7, #0x1
+ add r6, r6, #0x10
+ cmp r7, r0
+ blo _020BE554
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020BE59C: .word NNS_G3dFuncAnmMatNsBtpDefault
+ arm_func_end NNSi_G3dAnmObjInitNsBtp
diff --git a/arm9/asm/NNS_G3D_nsbva.s b/arm9/asm/NNS_G3D_nsbva.s
new file mode 100644
index 00000000..e8dc75e4
--- /dev/null
+++ b/arm9/asm/NNS_G3D_nsbva.s
@@ -0,0 +1,49 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dAnmCalcNsBva
+NNSi_G3dAnmCalcNsBva: ; 0x020BE5A0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr lr, [r1, #0x8]
+ ldr r3, [r1, #0x0]
+ ldrh r1, [lr, #0x6]
+ mov r12, r3, asr #0xc
+ mov r3, #0x1
+ mla r2, r12, r1, r2
+ mov r1, r2, lsr #0x5
+ add r1, lr, r1, lsl #0x2
+ ldr r1, [r1, #0xc]
+ and r2, r2, #0x1f
+ and r1, r1, r3, lsl r2
+ str r1, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNSi_G3dAnmCalcNsBva
+
+ arm_func_start NNSi_G3dAnmObjInitNsBva
+NNSi_G3dAnmObjInitNsBva: ; 0x020BE5E0
+ ldr r3, _020BE628 ; =NNS_G3dFuncAnmVisNsBvaDefault
+ mov r12, #0x0
+ ldr r3, [r3, #0x0]
+ str r3, [r0, #0xc]
+ ldrb r2, [r2, #0x17]
+ strb r2, [r0, #0x19]
+ str r1, [r0, #0x8]
+ ldrb r1, [r0, #0x19]
+ cmp r1, #0x0
+ bxls lr
+_020BE608:
+ orr r2, r12, #0x100
+ add r1, r0, r12, lsl #0x1
+ strh r2, [r1, #0x1a]
+ ldrb r1, [r0, #0x19]
+ add r12, r12, #0x1
+ cmp r12, r1
+ blo _020BE608
+ bx lr
+ .balign 4
+_020BE628: .word NNS_G3dFuncAnmVisNsBvaDefault
+ arm_func_end NNSi_G3dAnmObjInitNsBva
diff --git a/arm9/asm/NNS_G3D_res_struct_acce.s b/arm9/asm/NNS_G3D_res_struct_acce.s
new file mode 100644
index 00000000..e0420f9b
--- /dev/null
+++ b/arm9/asm/NNS_G3D_res_struct_acce.s
@@ -0,0 +1,317 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G3dGetTex
+NNS_G3dGetTex: ; 0x020BC0FC
+ ldrh r2, [r0, #0xc]
+ ldrh r1, [r0, #0xe]
+ add r3, r0, r2
+ cmp r1, #0x1
+ bne _020BC12C
+ ldr r2, [r0, #0x0]
+ ldr r1, _020BC138 ; =0x30585442
+ cmp r2, r1
+ ldreq r1, [r3, #0x0]
+ addeq r0, r0, r1
+ movne r0, #0x0
+ bx lr
+_020BC12C:
+ ldr r1, [r3, #0x4]
+ add r0, r0, r1
+ bx lr
+ .balign 4
+_020BC138: .word 0x30585442
+ arm_func_end NNS_G3dGetTex
+
+ arm_func_start NNS_G3dGetMdlSet
+NNS_G3dGetMdlSet: ; 0x020BC13C
+ ldrh r1, [r0, #0xc]
+ ldr r1, [r0, r1]
+ add r0, r0, r1
+ bx lr
+ arm_func_end NNS_G3dGetMdlSet
+
+ arm_func_start NNS_G3dGetResDictIdxByName
+NNS_G3dGetResDictIdxByName: ; 0x020BC14C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldrb r2, [r0, #0x1]
+ cmp r2, #0x10
+ bhs _020BC1E4
+ cmp r2, #0x0
+ ldr lr, [r1, #0x0]
+ ldr r12, [r1, #0x4]
+ ldr r3, [r1, #0x8]
+ ldr r2, [r1, #0xc]
+ mov r4, #0x0
+ bls _020BC294
+ ldrh r5, [r0, #0x6]
+ mov r1, r4
+ add r6, r0, r5
+ ldrh r5, [r6, #0x2]
+ add r6, r6, r5
+_020BC190:
+ ldr r5, [r6, r1]
+ add r7, r6, r1
+ cmp r5, lr
+ bne _020BC1CC
+ ldr r5, [r7, #0x4]
+ cmp r5, r12
+ bne _020BC1CC
+ ldr r5, [r7, #0x8]
+ cmp r5, r3
+ bne _020BC1CC
+ ldr r5, [r7, #0xc]
+ cmp r5, r2
+ addeq sp, sp, #0x4
+ moveq r0, r4
+ ldmeqia sp!, {r4-r7,pc}
+_020BC1CC:
+ ldrb r5, [r0, #0x1]
+ add r4, r4, #0x1
+ add r1, r1, #0x10
+ cmp r4, r5
+ blo _020BC190
+ b _020BC294
+_020BC1E4:
+ add r3, r0, #0x8
+ ldrb r2, [r3, #0x1]
+ cmp r2, #0x0
+ beq _020BC294
+ ldrb r5, [r3, r2, lsl #0x2]
+ ldrb r4, [r3, #0x0]
+ add r2, r3, r2, lsl #0x2
+ cmp r4, r5
+ bls _020BC238
+_020BC208:
+ mov r4, r5, asr #0x5
+ ldr r12, [r1, r4, lsl #0x2]
+ and r4, r5, #0x1f
+ mov r4, r12, lsr r4
+ and r4, r4, #0x1
+ add r4, r2, r4
+ ldrb r12, [r4, #0x1]
+ ldrb r4, [r2, #0x0]
+ ldrb r5, [r3, r12, lsl #0x2]
+ add r2, r3, r12, lsl #0x2
+ cmp r4, r5
+ bhi _020BC208
+_020BC238:
+ ldrh r4, [r0, #0x6]
+ ldr r3, [r1, #0x0]
+ add r12, r0, r4
+ ldrh r4, [r12, #0x2]
+ ldrb r0, [r2, #0x3]
+ add r4, r12, r4
+ ldr r2, [r4, r0, lsl #0x4]
+ add r4, r4, r0, lsl #0x4
+ cmp r2, r3
+ bne _020BC294
+ ldr r3, [r4, #0x4]
+ ldr r2, [r1, #0x4]
+ cmp r3, r2
+ bne _020BC294
+ ldr r3, [r4, #0x8]
+ ldr r2, [r1, #0x8]
+ cmp r3, r2
+ bne _020BC294
+ ldr r2, [r4, #0xc]
+ ldr r1, [r1, #0xc]
+ cmp r2, r1
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+_020BC294:
+ mvn r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G3dGetResDictIdxByName
+
+ arm_func_start NNS_G3dGetResDataByName
+NNS_G3dGetResDataByName: ; 0x020BC2A0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldrb r2, [r0, #0x1]
+ cmp r2, #0x10
+ bhs _020BC34C
+ cmp r2, #0x0
+ ldr lr, [r1, #0x0]
+ ldr r12, [r1, #0x4]
+ ldr r3, [r1, #0x8]
+ ldr r2, [r1, #0xc]
+ mov r4, #0x0
+ bls _020BC404
+ ldrh r5, [r0, #0x6]
+ mov r1, r4
+ add r6, r0, r5
+ ldrh r5, [r6, #0x2]
+ add r6, r6, r5
+_020BC2E4:
+ ldr r5, [r6, r1]
+ add r7, r6, r1
+ cmp r5, lr
+ bne _020BC334
+ ldr r5, [r7, #0x4]
+ cmp r5, r12
+ bne _020BC334
+ ldr r5, [r7, #0x8]
+ cmp r5, r3
+ bne _020BC334
+ ldr r5, [r7, #0xc]
+ cmp r5, r2
+ bne _020BC334
+ ldrh r2, [r0, #0x6]
+ add sp, sp, #0x4
+ ldrh r1, [r0, r2]
+ add r0, r0, r2
+ add r0, r0, #0x4
+ mla r0, r1, r4, r0
+ ldmia sp!, {r4-r7,pc}
+_020BC334:
+ ldrb r5, [r0, #0x1]
+ add r4, r4, #0x1
+ add r1, r1, #0x10
+ cmp r4, r5
+ blo _020BC2E4
+ b _020BC404
+_020BC34C:
+ add r3, r0, #0x8
+ ldrb r2, [r3, #0x1]
+ cmp r2, #0x0
+ beq _020BC404
+ ldrb r5, [r3, r2, lsl #0x2]
+ ldrb r4, [r3, #0x0]
+ add r2, r3, r2, lsl #0x2
+ cmp r4, r5
+ bls _020BC3A0
+_020BC370:
+ mov r4, r5, asr #0x5
+ ldr r12, [r1, r4, lsl #0x2]
+ and r4, r5, #0x1f
+ mov r4, r12, lsr r4
+ and r4, r4, #0x1
+ add r4, r2, r4
+ ldrb r12, [r4, #0x1]
+ ldrb r4, [r2, #0x0]
+ ldrb r5, [r3, r12, lsl #0x2]
+ add r2, r3, r12, lsl #0x2
+ cmp r4, r5
+ bhi _020BC370
+_020BC3A0:
+ ldrh r4, [r0, #0x6]
+ ldrb r2, [r2, #0x3]
+ ldr r3, [r1, #0x0]
+ add r0, r0, r4
+ ldrh r4, [r0, #0x2]
+ add r12, r0, r4
+ ldr r4, [r12, r2, lsl #0x4]
+ add r12, r12, r2, lsl #0x4
+ cmp r4, r3
+ bne _020BC404
+ ldr r4, [r12, #0x4]
+ ldr r3, [r1, #0x4]
+ cmp r4, r3
+ bne _020BC404
+ ldr r4, [r12, #0x8]
+ ldr r3, [r1, #0x8]
+ cmp r4, r3
+ bne _020BC404
+ ldr r3, [r12, #0xc]
+ ldr r1, [r1, #0xc]
+ cmp r3, r1
+ ldreqh r1, [r0], #0x4
+ addeq sp, sp, #0x4
+ mlaeq r0, r1, r2, r0
+ ldmeqia sp!, {r4-r7,pc}
+_020BC404:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end NNS_G3dGetResDataByName
+
+ arm_func_start NNSi_G3dGetTexPatAnmDataByIdx
+NNSi_G3dGetTexPatAnmDataByIdx: ; 0x020BC410
+ ldrh r3, [r0, #0x12]
+ add r0, r0, #0xc
+ ldrh r2, [r0, r3]
+ add r0, r0, r3
+ add r0, r0, #0x4
+ mla r0, r2, r1, r0
+ bx lr
+ arm_func_end NNSi_G3dGetTexPatAnmDataByIdx
+
+ arm_func_start NNSi_G3dGetTexPatAnmFV
+NNSi_G3dGetTexPatAnmFV: ; 0x020BC42C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r2
+ bl NNSi_G3dGetTexPatAnmDataByIdx
+ ldrsh r1, [r0, #0x4]
+ ldrh r3, [r0, #0x6]
+ mul r2, r1, r4
+ add r3, r5, r3
+ mov r2, r2, lsr #0xc
+ b _020BC45C
+_020BC458:
+ sub r2, r2, #0x1
+_020BC45C:
+ cmp r2, #0x0
+ beq _020BC474
+ mov r1, r2, lsl #0x2
+ ldrh r1, [r3, r1]
+ cmp r1, r4
+ bhs _020BC458
+_020BC474:
+ ldrh r1, [r0, #0x0]
+ b _020BC480
+_020BC47C:
+ add r2, r2, #0x1
+_020BC480:
+ add r0, r2, #0x1
+ cmp r0, r1
+ bhs _020BC49C
+ add r0, r3, r2, lsl #0x2
+ ldrh r0, [r0, #0x4]
+ cmp r0, r4
+ bls _020BC47C
+_020BC49C:
+ add r0, r3, r2, lsl #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNSi_G3dGetTexPatAnmFV
+
+ arm_func_start NNSi_G3dGetTexPatAnmPlttNameByIdx
+NNSi_G3dGetTexPatAnmPlttNameByIdx: ; 0x020BC4A8
+ ldrh r2, [r0, #0xa]
+ add r0, r0, r2
+ add r0, r0, r1, lsl #0x4
+ bx lr
+ arm_func_end NNSi_G3dGetTexPatAnmPlttNameByIdx
+
+ arm_func_start NNSi_G3dGetTexPatAnmTexNameByIdx
+NNSi_G3dGetTexPatAnmTexNameByIdx: ; 0x020BC4B8
+ ldrh r2, [r0, #0x8]
+ add r0, r0, r2
+ add r0, r0, r1, lsl #0x4
+ bx lr
+ arm_func_end NNSi_G3dGetTexPatAnmTexNameByIdx
+
+ arm_func_start NNS_G3dGetAnmByIdx
+NNS_G3dGetAnmByIdx: ; 0x020BC4C8
+ ldrh r2, [r0, #0xc]
+ ldr r2, [r0, r2]
+ add r12, r0, r2
+ ldrh r2, [r12, #0xe]
+ add r3, r12, #0x8
+ ldrh r0, [r3, r2]
+ add r2, r3, r2
+ add r2, r2, #0x4
+ mul r1, r0, r1
+ adds r0, r2, r1
+ ldrne r0, [r0, #0x0]
+ addne r0, r12, r0
+ moveq r0, #0x0
+ bx lr
+ arm_func_end NNS_G3dGetAnmByIdx
diff --git a/arm9/asm/NNS_G3D_sbc.s b/arm9/asm/NNS_G3D_sbc.s
new file mode 100644
index 00000000..86ee394f
--- /dev/null
+++ b/arm9/asm/NNS_G3D_sbc.s
@@ -0,0 +1,2738 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global matColorMask_$8998
+matColorMask_$8998: ; 0x020FF9D0
+ .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F
+ .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F
+ ; static const in function
+
+ .global pivotUtil_$9100
+pivotUtil_$9100: ; 0x020FF9F0
+ .byte 0x04, 0x05, 0x07, 0x08
+ .byte 0x03, 0x05, 0x06, 0x08
+ .byte 0x03, 0x04, 0x06, 0x07
+ .byte 0x01, 0x02, 0x07, 0x08
+ .byte 0x00, 0x02, 0x06, 0x08
+ .byte 0x00, 0x01, 0x06, 0x07
+ .byte 0x01, 0x02, 0x04, 0x05
+ .byte 0x00, 0x02, 0x03, 0x05
+ .byte 0x00, 0x01, 0x03, 0x04
+ ; static const in function
+
+ .section .data
+
+ .global cmd$9407
+cmd$9407: ; 0x02106630
+ .byte 0x2A, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global cmd$9366
+cmd$9366: ; 0x02106638
+ .byte 0x2A, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global NNS_G3dFuncSbcMatTable
+NNS_G3dFuncSbcMatTable: ; 0x02106640
+ .word NNSi_G3dFuncSbc_MAT_InternalDefault
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global NNS_G3dFuncSbcShpTable
+NNS_G3dFuncSbcShpTable: ; 0x02106650
+ .word NNSi_G3dFuncSbc_SHP_InternalDefault
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global mtx$9412
+mtx$9412: ; 0x02106660
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00
+
+ .global bbcmd1$9173
+bbcmd1$9173: ; 0x021066A0
+ .byte 0x12, 0x10, 0x17, 0x1B
+ .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global bbcmd1$9234
+bbcmd1$9234: ; 0x021066E8
+ .byte 0x12, 0x10, 0x17, 0x1B
+ .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x10, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global NNS_G3dFuncSbcTable
+NNS_G3dFuncSbcTable: ; 0x02106730
+ .word NNSi_G3dFuncSbc_NOP
+ .word NNSi_G3dFuncSbc_RET
+ .word NNSi_G3dFuncSbc_NODE
+ .word NNSi_G3dFuncSbc_MTX
+ .word NNSi_G3dFuncSbc_MAT
+ .word NNSi_G3dFuncSbc_SHP
+ .word NNSi_G3dFuncSbc_NODEDESC
+ .word NNSi_G3dFuncSbc_BB
+ .word NNSi_G3dFuncSbc_BBY
+ .word NNSi_G3dFuncSbc_NODEMIX
+ .word NNSi_G3dFuncSbc_CALLDL
+ .word NNSi_G3dFuncSbc_POSSCALE
+ .word NNSi_G3dFuncSbc_ENVMAP
+ .word NNSi_G3dFuncSbc_PRJMAP
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .section .bss
+
+ .global NNS_G3dRS
+NNS_G3dRS: ; 0x021CEF7C
+ .space 0x4
+
+ .global NNS_G3dRSOnGlb
+NNS_G3dRSOnGlb: ; 0x021CEF80
+ .space 0x2d00
+
+ .section .text
+
+ arm_func_start NNSi_G3dFuncSbc_PRJMAP
+NNSi_G3dFuncSbc_PRJMAP: ; 0x020B8A60
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x80
+ mov r5, r0
+ ldr r1, [r5, #0x8]
+ ands r0, r1, #0x200
+ bne _020B8DB4
+ ands r0, r1, #0x1
+ beq _020B8DB4
+ add r0, sp, #0x10
+ mov r1, #0x0
+ bl NNS_G3dGetCurrentMtx
+ mov r0, #0x1e
+ str r0, [sp, #0x0]
+ add r1, sp, #0x0
+ mov r0, #0x13
+ mov r2, #0x1
+ bl NNS_G3dGeBufferOP_N
+ ldr r2, [r5, #0xb0]
+ ldr r0, [r2, #0x10]
+ and r1, r0, #0xc0000000
+ cmp r1, #0xc0000000
+ beq _020B8AF0
+ bic r0, r0, #0xc0000000
+ str r0, [r2, #0x10]
+ ldr r2, [r5, #0xb0]
+ ldr r3, _020B8DC8 ; =cmd$9407
+ ldr r0, [r2, #0x10]
+ ldr r1, _020B8DCC ; =cmd$9407 + 0x4
+ orr r0, r0, #0xc0000000
+ str r0, [r2, #0x10]
+ ldr r2, [r5, #0xb0]
+ ldr r0, [r3, #0x0]
+ ldr r4, [r2, #0x10]
+ mov r2, #0x1
+ str r4, [r3, #0x4]
+ bl NNS_G3dGeBufferOP_N
+_020B8AF0:
+ ldr r0, [r5, #0x40]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x99]
+ moveq r4, #0x0
+ cmp r4, #0x1
+ bne _020B8B3C
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x40]
+ blx r1
+ ldr r0, [r5, #0x40]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x99]
+ ldr r0, [r5, #0x8]
+ moveq r4, #0x0
+ and r0, r0, #0x40
+ b _020B8B40
+_020B8B3C:
+ mov r0, #0x0
+_020B8B40:
+ cmp r0, #0x0
+ bne _020B8B84
+ ldr r0, [r5, #0xb0]
+ ldr r1, _020B8DD0 ; =mtx$9412
+ ldrh r6, [r0, #0x2e]
+ ldrh r3, [r0, #0x2c]
+ mov r0, #0x16
+ rsb r2, r6, #0x0
+ mov lr, r3, lsl #0xf
+ mov r12, r2, lsl #0xf
+ mov r3, r6, lsl #0xf
+ mov r2, #0x10
+ str lr, [r1, #0x0]
+ str r12, [r1, #0x14]
+ str lr, [r1, #0x30]
+ str r3, [r1, #0x34]
+ bl NNS_G3dGeBufferOP_N
+_020B8B84:
+ cmp r4, #0x2
+ bne _020B8BC0
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x40]
+ blx r1
+ ldr r0, [r5, #0x40]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x99]
+ ldr r0, [r5, #0x8]
+ moveq r4, #0x0
+ and r0, r0, #0x40
+ b _020B8BC4
+_020B8BC0:
+ mov r0, #0x0
+_020B8BC4:
+ cmp r0, #0x0
+ bne _020B8C28
+ ldr r12, [r5, #0xd8]
+ ldr r0, [r5, #0x0]
+ ldrh r2, [r12, #0xa]
+ add r3, r12, #0x4
+ ldrb r0, [r0, #0x1]
+ ldrh r1, [r3, r2]
+ add r2, r3, r2
+ mla r0, r1, r0, r2
+ ldr r0, [r0, #0x4]
+ add r1, r12, r0
+ ldrh r2, [r1, #0x1e]
+ ands r0, r2, #0x2000
+ beq _020B8C28
+ add r1, r1, #0x2c
+ ands r0, r2, #0x2
+ addeq r1, r1, #0x8
+ ands r0, r2, #0x4
+ addeq r1, r1, #0x4
+ ands r0, r2, #0x8
+ addeq r1, r1, #0x8
+ mov r0, #0x18
+ mov r2, #0x10
+ bl NNS_G3dGeBufferOP_N
+_020B8C28:
+ cmp r4, #0x3
+ movne r0, #0x0
+ bne _020B8C54
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x40]
+ blx r1
+ ldr r0, [r5, #0x8]
+ and r0, r0, #0x40
+_020B8C54:
+ cmp r0, #0x0
+ bne _020B8D84
+ ldr r0, _020B8DD4 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ ands r0, r1, #0x1
+ beq _020B8CA0
+ ldr r1, _020B8DD8 ; =NNS_G3dGlb + 0xE0
+ mov r0, #0x1c
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+ ldr r1, _020B8DDC ; =NNS_G3dGlb + 0xBC
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ add r1, sp, #0x10
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+ b _020B8CE0
+_020B8CA0:
+ ands r0, r1, #0x2
+ beq _020B8CBC
+ add r1, sp, #0x10
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+ b _020B8CE0
+_020B8CBC:
+ bl NNS_G3dGlbGetInvV
+ mov r1, r0
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+ add r1, sp, #0x10
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+_020B8CE0:
+ bl NNS_G3dGeFlushBuffer
+ ldr r0, _020B8DE0 ; =0x04000440
+ mov r2, #0x0
+ ldr r1, _020B8DE4 ; =0x04000444
+ str r2, [r0, #0x0]
+ ldr r0, _020B8DE8 ; =0x04000454
+ str r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ add r4, sp, #0x40
+_020B8D04:
+ mov r0, r4
+ bl G3X_GetClipMtx
+ cmp r0, #0x0
+ bne _020B8D04
+ ldr r1, _020B8DEC ; =0x04000448
+ mov r2, #0x1
+ str r2, [r1, #0x0]
+ ldr r0, _020B8DE0 ; =0x04000440
+ mov r2, #0x3
+ str r2, [r0, #0x0]
+ add r1, sp, #0x40
+ mov r0, #0x16
+ mov r2, #0x10
+ bl NNS_G3dGeBufferOP_N
+ ldr r1, [sp, #0x70]
+ ldr r0, [sp, #0x74]
+ mov r2, r1, asr #0x4
+ mov r1, r0, asr #0x4
+ mov r0, r2, lsl #0x8
+ mov r1, r1, lsl #0x8
+ mov r0, r0, asr #0x10
+ mov r1, r1, asr #0x10
+ mov r0, r0, lsl #0x10
+ mov r1, r1, lsl #0x10
+ mov r2, r0, lsr #0x10
+ mov r0, r1, lsr #0x10
+ orr r3, r2, r0, lsl #0x10
+ add r1, sp, #0x4
+ mov r0, #0x22
+ mov r2, #0x1
+ str r3, [sp, #0x4]
+ bl NNS_G3dGeBufferOP_N
+_020B8D84:
+ mov r3, #0x2
+ add r1, sp, #0x8
+ mov r0, #0x10
+ mov r2, #0x1
+ str r3, [sp, #0x8]
+ bl NNS_G3dGeBufferOP_N
+ mov r3, #0x1e
+ add r1, sp, #0xc
+ mov r0, #0x14
+ mov r2, #0x1
+ str r3, [sp, #0xc]
+ bl NNS_G3dGeBufferOP_N
+_020B8DB4:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x3
+ str r0, [r5, #0x0]
+ add sp, sp, #0x80
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020B8DC8: .word cmd$9407
+_020B8DCC: .word cmd$9407 + 0x4
+_020B8DD0: .word mtx$9412
+_020B8DD4: .word NNS_G3dGlb
+_020B8DD8: .word NNS_G3dGlb + 0xE0
+_020B8DDC: .word NNS_G3dGlb + 0xBC
+_020B8DE0: .word 0x04000440
+_020B8DE4: .word 0x04000444
+_020B8DE8: .word 0x04000454
+_020B8DEC: .word 0x04000448
+ arm_func_end NNSi_G3dFuncSbc_PRJMAP
+
+ arm_func_start NNSi_G3dFuncSbc_ENVMAP
+NNSi_G3dFuncSbc_ENVMAP: ; 0x020B8DF0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x44
+ mov r7, r0
+ ldr r1, [r7, #0x8]
+ ands r0, r1, #0x200
+ bne _020B90E8
+ ands r0, r1, #0x1
+ beq _020B90E8
+ ldr r2, [r7, #0xb0]
+ ldr r0, [r2, #0x10]
+ and r1, r0, #0xc0000000
+ cmp r1, #0x80000000
+ beq _020B8E5C
+ bic r0, r0, #0xc0000000
+ str r0, [r2, #0x10]
+ ldr r2, [r7, #0xb0]
+ ldr r3, _020B90FC ; =cmd$9366
+ ldr r0, [r2, #0x10]
+ ldr r1, _020B9100 ; =cmd$9366 + 0x4
+ orr r0, r0, #0x80000000
+ str r0, [r2, #0x10]
+ ldr r2, [r7, #0xb0]
+ ldr r0, [r3, #0x0]
+ ldr r4, [r2, #0x10]
+ mov r2, #0x1
+ str r4, [r3, #0x4]
+ bl NNS_G3dGeBufferOP_N
+_020B8E5C:
+ mov r0, #0x3
+ str r0, [sp, #0x0]
+ add r1, sp, #0x0
+ mov r0, #0x10
+ mov r2, #0x1
+ bl NNS_G3dGeBufferOP_N
+ ldr r0, [r7, #0x3c]
+ cmp r0, #0x0
+ ldrneb r6, [r7, #0x98]
+ moveq r6, #0x0
+ cmp r6, #0x1
+ bne _020B8EC0
+ ldr r1, [r7, #0x8]
+ mov r0, r7
+ bic r1, r1, #0x40
+ str r1, [r7, #0x8]
+ ldr r1, [r7, #0x3c]
+ blx r1
+ ldr r0, [r7, #0x3c]
+ cmp r0, #0x0
+ ldrneb r6, [r7, #0x98]
+ ldr r0, [r7, #0x8]
+ moveq r6, #0x0
+ and r0, r0, #0x40
+ b _020B8EC4
+_020B8EC0:
+ mov r0, #0x0
+_020B8EC4:
+ cmp r0, #0x0
+ bne _020B8F3C
+ ldr r0, [r7, #0xb0]
+ add r1, sp, #0x38
+ ldrh r4, [r0, #0x2e]
+ ldrh r5, [r0, #0x2c]
+ mov r3, #0x10000
+ rsb r0, r4, #0x0
+ mov r12, r0, lsl #0xf
+ mov lr, r5, lsl #0xf
+ mov r0, #0x1b
+ mov r2, #0x3
+ str lr, [sp, #0x38]
+ str r12, [sp, #0x3c]
+ str r3, [sp, #0x40]
+ bl NNS_G3dGeBufferOP_N
+ mov r0, r5, lsl #0x13
+ mov r1, r4, lsl #0x13
+ mov r0, r0, asr #0x10
+ mov r1, r1, asr #0x10
+ mov r0, r0, lsl #0x10
+ mov r1, r1, lsl #0x10
+ mov r2, r0, lsr #0x10
+ mov r0, r1, lsr #0x10
+ orr r3, r2, r0, lsl #0x10
+ add r1, sp, #0x4
+ mov r0, #0x22
+ mov r2, #0x1
+ str r3, [sp, #0x4]
+ bl NNS_G3dGeBufferOP_N
+_020B8F3C:
+ cmp r6, #0x2
+ bne _020B8F78
+ ldr r1, [r7, #0x8]
+ mov r0, r7
+ bic r1, r1, #0x40
+ str r1, [r7, #0x8]
+ ldr r1, [r7, #0x3c]
+ blx r1
+ ldr r0, [r7, #0x3c]
+ cmp r0, #0x0
+ ldrneb r6, [r7, #0x98]
+ ldr r0, [r7, #0x8]
+ moveq r6, #0x0
+ and r0, r0, #0x40
+ b _020B8F7C
+_020B8F78:
+ mov r0, #0x0
+_020B8F7C:
+ cmp r0, #0x0
+ bne _020B8FE0
+ ldr r4, [r7, #0xd8]
+ ldr r0, [r7, #0x0]
+ ldrh r2, [r4, #0xa]
+ add r3, r4, #0x4
+ ldrb r0, [r0, #0x1]
+ ldrh r1, [r3, r2]
+ add r2, r3, r2
+ mla r0, r1, r0, r2
+ ldr r0, [r0, #0x4]
+ add r1, r4, r0
+ ldrh r2, [r1, #0x1e]
+ ands r0, r2, #0x2000
+ beq _020B8FE0
+ add r1, r1, #0x2c
+ ands r0, r2, #0x2
+ addeq r1, r1, #0x8
+ ands r0, r2, #0x4
+ addeq r1, r1, #0x4
+ ands r0, r2, #0x8
+ addeq r1, r1, #0x8
+ mov r0, #0x18
+ mov r2, #0x10
+ bl NNS_G3dGeBufferOP_N
+_020B8FE0:
+ cmp r6, #0x3
+ movne r0, #0x0
+ bne _020B900C
+ ldr r1, [r7, #0x8]
+ mov r0, r7
+ bic r1, r1, #0x40
+ str r1, [r7, #0x8]
+ ldr r1, [r7, #0x3c]
+ blx r1
+ ldr r0, [r7, #0x8]
+ and r0, r0, #0x40
+_020B900C:
+ cmp r0, #0x0
+ bne _020B90D0
+ mov r3, #0x2
+ add r1, sp, #0x8
+ mov r0, #0x10
+ mov r2, #0x1
+ str r3, [sp, #0x8]
+ bl NNS_G3dGeBufferOP_N
+ add r1, sp, #0x14
+ mov r0, #0x0
+ bl NNS_G3dGetCurrentMtx
+ mov r3, #0x3
+ add r1, sp, #0xc
+ mov r0, #0x10
+ mov r2, #0x1
+ str r3, [sp, #0xc]
+ bl NNS_G3dGeBufferOP_N
+ ldr r0, _020B9104 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ ands r0, r1, #0x1
+ beq _020B9094
+ ldr r1, _020B9108 ; =NNS_G3dGlb + 0x4C
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ ldr r1, _020B910C ; =NNS_G3dGlb + 0xBC
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ add r1, sp, #0x14
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ b _020B90D0
+_020B9094:
+ ands r0, r1, #0x2
+ beq _020B90C0
+ ldr r1, _020B9108 ; =NNS_G3dGlb + 0x4C
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ add r1, sp, #0x14
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ b _020B90D0
+_020B90C0:
+ add r1, sp, #0x14
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+_020B90D0:
+ mov r3, #0x2
+ add r1, sp, #0x10
+ mov r0, #0x10
+ mov r2, #0x1
+ str r3, [sp, #0x10]
+ bl NNS_G3dGeBufferOP_N
+_020B90E8:
+ ldr r0, [r7, #0x0]
+ add r0, r0, #0x3
+ str r0, [r7, #0x0]
+ add sp, sp, #0x44
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020B90FC: .word cmd$9366
+_020B9100: .word cmd$9366 + 0x4
+_020B9104: .word NNS_G3dGlb
+_020B9108: .word NNS_G3dGlb + 0x4C
+_020B910C: .word NNS_G3dGlb + 0xBC
+ arm_func_end NNSi_G3dFuncSbc_ENVMAP
+
+ arm_func_start NNSi_G3dFuncSbc_POSSCALE
+NNSi_G3dFuncSbc_POSSCALE: ; 0x020B9110
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x10
+ mov r4, r0
+ ldr r2, [r4, #0x8]
+ ands r0, r2, #0x100
+ bne _020B9164
+ ands r0, r2, #0x200
+ bne _020B9164
+ cmp r1, #0x0
+ ldreq r0, [r4, #0xe0]
+ add r1, sp, #0x0
+ streq r0, [sp, #0x8]
+ streq r0, [sp, #0x4]
+ streq r0, [sp, #0x0]
+ ldrne r0, [r4, #0xe4]
+ mov r2, #0x3
+ strne r0, [sp, #0x8]
+ strne r0, [sp, #0x4]
+ strne r0, [sp, #0x0]
+ mov r0, #0x1b
+ bl NNS_G3dGeBufferOP_N
+_020B9164:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ add sp, sp, #0x10
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_G3dFuncSbc_POSSCALE
+
+ arm_func_start NNSi_G3dFuncSbc_CALLDL
+NNSi_G3dFuncSbc_CALLDL: ; 0x020B9178
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ ldr r0, [r5, #0x34]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x96]
+ moveq r4, #0x0
+ cmp r4, #0x1
+ bne _020B91CC
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x34]
+ blx r1
+ ldr r0, [r5, #0x34]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x96]
+ ldr r0, [r5, #0x8]
+ moveq r4, #0x0
+ and r1, r0, #0x40
+ b _020B91D0
+_020B91CC:
+ mov r1, #0x0
+_020B91D0:
+ ldr r0, [r5, #0x8]
+ ands r0, r0, #0x100
+ bne _020B9228
+ cmp r1, #0x0
+ bne _020B9228
+ ldr r0, [r5, #0x0]
+ ldrb r12, [r0, #0x1]
+ ldrb r3, [r0, #0x2]
+ ldrb lr, [r0, #0x3]
+ ldrb r2, [r0, #0x5]
+ ldrb r1, [r0, #0x6]
+ orr r3, r12, r3, lsl #0x8
+ ldrb r6, [r0, #0x4]
+ orr r12, r3, lr, lsl #0x10
+ ldrb r3, [r0, #0x7]
+ orr r1, r2, r1, lsl #0x8
+ orr r6, r12, r6, lsl #0x18
+ ldrb r2, [r0, #0x8]
+ orr r1, r1, r3, lsl #0x10
+ add r0, r0, r6
+ orr r1, r1, r2, lsl #0x18
+ bl NNS_G3dGeSendDL
+_020B9228:
+ cmp r4, #0x3
+ bne _020B9248
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x34]
+ blx r1
+_020B9248:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x9
+ str r0, [r5, #0x0]
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G3dFuncSbc_CALLDL
+
+ arm_func_start NNSi_G3dFuncSbc_NODEMIX
+NNSi_G3dFuncSbc_NODEMIX: ; 0x020B9258
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x8c
+ ldr r1, [r0, #0x4]
+ ldr r4, [r0, #0x0]
+ ldr r6, [r1, #0x4]
+ ldrb r2, [r4, #0x2]
+ ldr r3, [r6, #0x10]
+ mov r10, #0x0
+ str r0, [sp, #0x0]
+ str r2, [sp, #0x8]
+ add r3, r6, r3
+ add r1, sp, #0x34
+ mov r0, r10
+ mov r2, #0x54
+ mov r9, r10
+ str r3, [sp, #0x4]
+ add r8, r4, #0x3
+ bl MIi_CpuClearFast
+ bl NNS_G3dGeFlushBuffer
+ ldr r0, _020B98AC ; =0x04000440
+ mov r7, r10
+ str r7, [r0, #0x0]
+ mov r0, #0x1
+ ldr r2, _020B98B0 ; =0x0400044C
+ ldr r1, _020B98B4 ; =0x04000454
+ str r0, [r2, #0x0]
+ str r0, [sp, #0x10]
+ str r7, [r1, #0x0]
+ mov r1, #0x2
+ ldr r0, _020B98AC ; =0x04000440
+ str r1, [sp, #0x14]
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ bls _020B96CC
+_020B92E4:
+ ldrb r4, [r8, #0x1]
+ mov r0, #0x64
+ ldr r3, _020B98B8 ; =NNS_G3dRSOnGlb + 0x1400
+ mul r0, r4, r0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x0]
+ mov r1, r4, lsr #0x5
+ add r0, r0, r1, lsl #0x2
+ ldr r1, [sp, #0x10]
+ and r2, r4, #0x1f
+ mov r1, r1, lsl r2
+ ldr r11, [r0, #0xcc]
+ ldr r2, [sp, #0xc]
+ ands r11, r1, r11
+ add r6, r3, r2
+ bne _020B9358
+ ldr r3, [r0, #0xcc]
+ mov r2, #0x54
+ orr r1, r3, r1
+ str r1, [r0, #0xcc]
+ ldr r0, [sp, #0x4]
+ ldr r1, _020B98BC ; =0x04000450
+ mla r0, r4, r2, r0
+ ldrb r2, [r8, #0x0]
+ str r2, [r1, #0x0]
+ ldr r2, [sp, #0x10]
+ ldr r1, _020B98AC ; =0x04000440
+ str r2, [r1, #0x0]
+ bl G3_MultMtx43
+_020B9358:
+ cmp r7, #0x0
+ beq _020B9500
+ ldr r2, [sp, #0x6c]
+ ldr r1, [r5, #0x0]
+ str r2, [sp, #0x18]
+ ldr r2, [sp, #0x70]
+ mov r0, r1, asr #0x1f
+ str r2, [sp, #0x1c]
+ ldr r2, [sp, #0x74]
+ ldr r12, [sp, #0x64]
+ str r2, [sp, #0x20]
+ ldr r2, [sp, #0x78]
+ ldr lr, [sp, #0x68]
+ str r2, [sp, #0x24]
+ ldr r2, [sp, #0x7c]
+ str r2, [sp, #0x28]
+ ldr r2, [sp, #0x80]
+ str r2, [sp, #0x2c]
+ ldr r2, [sp, #0x84]
+ str r2, [sp, #0x30]
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r0, r3, lsr #0xc
+ orr r0, r0, r2, lsl #0x14
+ adds r0, r12, r0
+ str r0, [sp, #0x64]
+ ldr r1, [r5, #0x4]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r0, r3, lsr #0xc
+ orr r0, r0, r2, lsl #0x14
+ adds r0, lr, r0
+ str r0, [sp, #0x68]
+ ldr r1, [r5, #0x8]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x18]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x6c]
+ ldr r1, [r5, #0xc]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x1c]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x70]
+ ldr r1, [r5, #0x10]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x20]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x74]
+ ldr r1, [r5, #0x14]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x24]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x78]
+ ldr r1, [r5, #0x18]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x28]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x7c]
+ ldr r1, [r5, #0x1c]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x2c]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x80]
+ ldr r1, [r5, #0x20]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r1, r3, lsr #0xc
+ ldr r0, [sp, #0x30]
+ orr r1, r1, r2, lsl #0x14
+ adds r0, r0, r1
+ str r0, [sp, #0x84]
+_020B9500:
+ cmp r11, #0x0
+ bne _020B9538
+_020B9508:
+ mov r0, r6
+ bl G3X_GetClipMtx
+ cmp r0, #0x0
+ bne _020B9508
+ ldr r1, [sp, #0x14]
+ ldr r0, _020B98AC ; =0x04000440
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x54
+ mla r0, r4, r1, r0
+ add r0, r0, #0x30
+ bl G3_MultMtx33
+_020B9538:
+ ldrb r1, [r8, #0x2]
+ ldr r2, [sp, #0x34]
+ ldr r0, [r6, #0x0]
+ mov r10, r1, lsl #0x4
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x34]
+ mov r9, r10, asr #0x1f
+ ldr r2, [sp, #0x38]
+ ldr r0, [r6, #0x4]
+ ldr r3, [sp, #0x3c]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x38]
+ ldr r0, [r6, #0x8]
+ ldr r2, [sp, #0x40]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r3, r1
+ str r0, [sp, #0x3c]
+ ldr r0, [r6, #0x10]
+ ldr r3, [sp, #0x44]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x40]
+ ldr r0, [r6, #0x14]
+ ldr r2, [sp, #0x48]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r3, r1
+ str r0, [sp, #0x44]
+ ldr r0, [r6, #0x18]
+ ldr r3, [sp, #0x4c]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x48]
+ ldr r0, [r6, #0x20]
+ ldr r2, [sp, #0x50]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r3, r1
+ str r0, [sp, #0x4c]
+ ldr r0, [r6, #0x24]
+ ldr r3, [sp, #0x54]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x50]
+ ldr r0, [r6, #0x28]
+ ldr r2, [sp, #0x58]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r3, r1
+ str r0, [sp, #0x54]
+ ldr r0, [r6, #0x30]
+ ldr r3, [sp, #0x5c]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x58]
+ ldr r0, [r6, #0x34]
+ ldr r2, [sp, #0x60]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r3, r1
+ str r0, [sp, #0x5c]
+ ldr r0, [r6, #0x38]
+ smull r1, r0, r10, r0
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ adds r0, r2, r1
+ str r0, [sp, #0x60]
+ cmp r11, #0x0
+ ldr r1, _020B98C0 ; =NNS_G3dRSOnGlb + 0x1440
+ ldr r0, [sp, #0xc]
+ add r5, r1, r0
+ add r8, r8, #0x3
+ bne _020B96BC
+_020B96AC:
+ mov r0, r5
+ bl G3X_GetVectorMtx
+ cmp r0, #0x0
+ bne _020B96AC
+_020B96BC:
+ ldr r0, [sp, #0x8]
+ add r7, r7, #0x1
+ cmp r7, r0
+ blo _020B92E4
+_020B96CC:
+ ldr r1, [r5, #0x0]
+ ldr r4, [sp, #0x64]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r0, r3, lsr #0xc
+ orr r0, r0, r2, lsl #0x14
+ adds r0, r4, r0
+ str r0, [sp, #0x64]
+ ldr r1, [r5, #0x4]
+ ldr r4, [sp, #0x68]
+ mov r0, r1, asr #0x1f
+ umull r3, r2, r10, r1
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ mov r0, r3, lsr #0xc
+ orr r0, r0, r2, lsl #0x14
+ adds r0, r4, r0
+ str r0, [sp, #0x68]
+ ldr r1, [r5, #0x8]
+ ldr r4, [sp, #0x6c]
+ umull r0, r2, r10, r1
+ mov r3, r0, lsr #0xc
+ mov r0, r1, asr #0x1f
+ mla r2, r10, r0, r2
+ mla r2, r9, r1, r2
+ orr r3, r3, r2, lsl #0x14
+ adds r0, r4, r3
+ str r0, [sp, #0x6c]
+ ldr r7, [r5, #0xc]
+ ldr r12, [sp, #0x70]
+ mov r6, r7, asr #0x1f
+ umull r11, r8, r10, r7
+ mla r8, r10, r6, r8
+ mla r8, r9, r7, r8
+ mov r6, r11, lsr #0xc
+ orr r6, r6, r8, lsl #0x14
+ adds r6, r12, r6
+ str r6, [sp, #0x70]
+ ldr r7, [r5, #0x10]
+ ldr r4, [sp, #0x74]
+ mov r6, r7, asr #0x1f
+ umull r11, r8, r10, r7
+ mla r8, r10, r6, r8
+ mla r8, r9, r7, r8
+ mov r6, r11, lsr #0xc
+ orr r6, r6, r8, lsl #0x14
+ adds r4, r4, r6
+ str r4, [sp, #0x74]
+ ldr r6, [r5, #0x14]
+ ldr r3, [sp, #0x78]
+ mov r4, r6, asr #0x1f
+ umull r8, r7, r10, r6
+ mla r7, r10, r4, r7
+ mla r7, r9, r6, r7
+ mov r4, r8, lsr #0xc
+ orr r4, r4, r7, lsl #0x14
+ adds r3, r3, r4
+ str r3, [sp, #0x78]
+ ldr r4, [r5, #0x18]
+ ldr r2, [sp, #0x7c]
+ mov r3, r4, asr #0x1f
+ umull r7, r6, r10, r4
+ mla r6, r10, r3, r6
+ mla r6, r9, r4, r6
+ mov r3, r7, lsr #0xc
+ orr r3, r3, r6, lsl #0x14
+ adds r2, r2, r3
+ str r2, [sp, #0x7c]
+ ldr r3, [r5, #0x1c]
+ ldr r1, [sp, #0x80]
+ mov r2, r3, asr #0x1f
+ umull r6, r4, r10, r3
+ mla r4, r10, r2, r4
+ mla r4, r9, r3, r4
+ mov r2, r6, lsr #0xc
+ orr r2, r2, r4, lsl #0x14
+ adds r1, r1, r2
+ str r1, [sp, #0x80]
+ ldr r2, [r5, #0x20]
+ ldr lr, [sp, #0x84]
+ mov r1, r2, asr #0x1f
+ umull r4, r3, r10, r2
+ mla r3, r10, r1, r3
+ mla r3, r9, r2, r3
+ mov r1, r4, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ adds r1, lr, r1
+ add r0, sp, #0x64
+ str r1, [sp, #0x84]
+ bl G3_LoadMtx43
+ ldr r1, _020B98AC ; =0x04000440
+ mov r2, #0x1
+ add r0, sp, #0x34
+ str r2, [r1, #0x0]
+ bl G3_LoadMtx43
+ ldr r3, _020B98AC ; =0x04000440
+ mov r0, #0x0
+ str r0, [r3, #0x0]
+ ldr r1, _020B98BC ; =0x04000450
+ mov r2, #0x1
+ mov r0, #0x2
+ str r2, [r1, #0x0]
+ str r0, [r3, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r1, [r0, #0x0]
+ ldr r0, _020B98B0 ; =0x0400044C
+ ldrb r2, [r1, #0x1]
+ mov r1, #0x3
+ str r2, [r0, #0x0]
+ ldr r0, [sp, #0x0]
+ ldr r2, [r0, #0x0]
+ ldrb r0, [r2, #0x2]
+ add r0, r0, #0x1
+ mla r1, r0, r1, r2
+ ldr r0, [sp, #0x0]
+ str r1, [r0, #0x0]
+ add sp, sp, #0x8c
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B98AC: .word 0x04000440
+_020B98B0: .word 0x0400044C
+_020B98B4: .word 0x04000454
+_020B98B8: .word NNS_G3dRSOnGlb + 0x1400
+_020B98BC: .word 0x04000450
+_020B98C0: .word NNS_G3dRSOnGlb + 0x1440
+ arm_func_end NNSi_G3dFuncSbc_NODEMIX
+
+ arm_func_start NNSi_G3dFuncSbc_BBY
+NNSi_G3dFuncSbc_BBY: ; 0x020B98C4
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xcc
+ mov r10, r0
+ ldr r2, [r10, #0x8]
+ mov r9, r1
+ ands r0, r2, #0x200
+ mov r7, #0x2
+ ldr r6, _020B9C28 ; =bbcmd1$9234 + 0x30
+ ldr fp, _020B9C2C ; =bbcmd1$9234 + 0x3C
+ ldr r5, _020B9C30 ; =bbcmd1$9234 + 0xC
+ beq _020B992C
+ cmp r9, #0x40
+ beq _020B9900
+ cmp r9, #0x60
+ bne _020B9904
+_020B9900:
+ add r7, r7, #0x1
+_020B9904:
+ cmp r9, #0x20
+ beq _020B9914
+ cmp r9, #0x60
+ bne _020B9918
+_020B9914:
+ add r7, r7, #0x1
+_020B9918:
+ ldr r0, [r10, #0x0]
+ add sp, sp, #0xcc
+ add r0, r0, r7
+ str r0, [r10, #0x0]
+ ldmia sp!, {r4-r11,pc}
+_020B992C:
+ cmp r9, #0x40
+ beq _020B993C
+ cmp r9, #0x60
+ bne _020B9974
+_020B993C:
+ add r7, r7, #0x1
+ ands r0, r2, #0x100
+ bne _020B9974
+ cmp r9, #0x40
+ ldreq r0, [r10, #0x0]
+ add r1, sp, #0x0
+ ldreqb r0, [r0, #0x2]
+ mov r2, #0x1
+ streq r0, [sp, #0x0]
+ ldrne r0, [r10, #0x0]
+ ldrneb r0, [r0, #0x3]
+ strne r0, [sp, #0x0]
+ mov r0, #0x14
+ bl NNS_G3dGeBufferOP_N
+_020B9974:
+ ldr r0, [r10, #0x2c]
+ cmp r0, #0x0
+ ldrneb r8, [r10, #0x94]
+ moveq r8, #0x0
+ cmp r8, #0x1
+ bne _020B99C0
+ ldr r1, [r10, #0x8]
+ mov r0, r10
+ bic r1, r1, #0x40
+ str r1, [r10, #0x8]
+ ldr r1, [r10, #0x2c]
+ blx r1
+ ldr r0, [r10, #0x2c]
+ cmp r0, #0x0
+ ldrneb r8, [r10, #0x94]
+ ldr r0, [r10, #0x8]
+ moveq r8, #0x0
+ and r1, r0, #0x40
+ b _020B99C4
+_020B99C0:
+ mov r1, #0x0
+_020B99C4:
+ ldr r0, [r10, #0x8]
+ ands r0, r0, #0x100
+ bne _020B9BA4
+ cmp r1, #0x0
+ bne _020B9BA4
+ bl NNS_G3dGeFlushBuffer
+ ldr r2, _020B9C34 ; =0x00151110
+ ldr r1, _020B9C38 ; =0x04000400
+ mov r0, #0x0
+ str r2, [r1, #0x0]
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x0]
+ add r4, sp, #0x8
+_020B99F8:
+ mov r0, r4
+ bl G3X_GetClipMtx
+ cmp r0, #0x0
+ bne _020B99F8
+ ldr r0, _020B9C3C ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ ands r0, r1, #0x1
+ beq _020B9A38
+ bl NNS_G3dGlbGetWV
+ add r1, sp, #0x48
+ bl MTX_Copy43To44_
+ add r0, sp, #0x8
+ add r1, sp, #0x48
+ mov r2, r0
+ bl MTX_Concat44
+ b _020B9A5C
+_020B9A38:
+ ands r0, r1, #0x2
+ beq _020B9A5C
+ ldr r0, _020B9C40 ; =NNS_G3dGlb + 0x4C
+ add r1, sp, #0x88
+ bl MTX_Copy43To44_
+ add r0, sp, #0x8
+ add r1, sp, #0x88
+ mov r2, r0
+ bl MTX_Concat44
+_020B9A5C:
+ ldr r1, [sp, #0x38]
+ add r0, sp, #0x8
+ str r1, [r6, #0x0]
+ ldr r1, [sp, #0x3c]
+ str r1, [r6, #0x4]
+ ldr r1, [sp, #0x40]
+ str r1, [r6, #0x8]
+ bl VEC_Mag
+ str r0, [r11, #0x0]
+ add r0, sp, #0x18
+ bl VEC_Mag
+ str r0, [r11, #0x4]
+ add r0, sp, #0x28
+ bl VEC_Mag
+ str r0, [r11, #0x8]
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _020B9AB0
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ beq _020B9AD4
+_020B9AB0:
+ add r0, sp, #0x18
+ add r1, r5, #0xc
+ bl VEC_Normalize
+ ldr r0, [r5, #0x14]
+ rsb r0, r0, #0x0
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x10]
+ str r0, [r5, #0x20]
+ b _020B9AF4
+_020B9AD4:
+ add r0, sp, #0x28
+ add r1, r5, #0x18
+ bl VEC_Normalize
+ ldr r0, [r5, #0x1c]
+ rsb r0, r0, #0x0
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #0x20]
+ str r0, [r5, #0x10]
+_020B9AF4:
+ ldr r0, _020B9C3C ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ ands r0, r1, #0x1
+ beq _020B9B48
+ ldr r3, _020B9C44 ; =0x00171012
+ ldr r1, _020B9C38 ; =0x04000400
+ ldr r0, _020B9C48 ; =bbcmd1$9234 + 0x4
+ mov r2, #0x8
+ str r3, [r1, #0x0]
+ bl MIi_CpuSend32
+ bl NNS_G3dGlbGetInvWV
+ ldr r1, _020B9C38 ; =0x04000400
+ mov r2, #0x30
+ bl MIi_CpuSend32
+ ldr r2, _020B9C4C ; =0x00001B19
+ ldr r1, _020B9C38 ; =0x04000400
+ ldr r0, _020B9C30 ; =bbcmd1$9234 + 0xC
+ str r2, [r1, #0x0]
+ mov r2, #0x3c
+ bl MIi_CpuSend32
+ b _020B9BA4
+_020B9B48:
+ ands r0, r1, #0x2
+ beq _020B9B94
+ ldr r3, _020B9C44 ; =0x00171012
+ ldr r1, _020B9C38 ; =0x04000400
+ ldr r0, _020B9C48 ; =bbcmd1$9234 + 0x4
+ mov r2, #0x8
+ str r3, [r1, #0x0]
+ bl MIi_CpuSend32
+ bl NNS_G3dGlbGetInvV
+ ldr r1, _020B9C38 ; =0x04000400
+ mov r2, #0x30
+ bl MIi_CpuSend32
+ ldr r2, _020B9C4C ; =0x00001B19
+ ldr r1, _020B9C38 ; =0x04000400
+ ldr r0, _020B9C30 ; =bbcmd1$9234 + 0xC
+ str r2, [r1, #0x0]
+ mov r2, #0x3c
+ bl MIi_CpuSend32
+ b _020B9BA4
+_020B9B94:
+ ldr r0, _020B9C50 ; =bbcmd1$9234
+ ldr r1, _020B9C38 ; =0x04000400
+ mov r2, #0x48
+ bl MIi_CpuSend32
+_020B9BA4:
+ cmp r8, #0x3
+ movne r0, #0x0
+ bne _020B9BD0
+ ldr r1, [r10, #0x8]
+ mov r0, r10
+ bic r1, r1, #0x40
+ str r1, [r10, #0x8]
+ ldr r1, [r10, #0x2c]
+ blx r1
+ ldr r0, [r10, #0x8]
+ and r0, r0, #0x40
+_020B9BD0:
+ cmp r9, #0x20
+ beq _020B9BE0
+ cmp r9, #0x60
+ bne _020B9C14
+_020B9BE0:
+ cmp r0, #0x0
+ add r7, r7, #0x1
+ bne _020B9C14
+ ldr r0, [r10, #0x8]
+ ands r0, r0, #0x100
+ bne _020B9C14
+ ldr r0, [r10, #0x0]
+ add r1, sp, #0x4
+ ldrb r3, [r0, #0x2]
+ mov r0, #0x13
+ mov r2, #0x1
+ str r3, [sp, #0x4]
+ bl NNS_G3dGeBufferOP_N
+_020B9C14:
+ ldr r0, [r10, #0x0]
+ add r0, r0, r7
+ str r0, [r10, #0x0]
+ add sp, sp, #0xcc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020B9C28: .word bbcmd1$9234 + 0x30
+_020B9C2C: .word bbcmd1$9234 + 0x3C
+_020B9C30: .word bbcmd1$9234 + 0xC
+_020B9C34: .word 0x00151110
+_020B9C38: .word 0x04000400
+_020B9C3C: .word NNS_G3dGlb
+_020B9C40: .word NNS_G3dGlb + 0x4C
+_020B9C44: .word 0x00171012
+_020B9C48: .word bbcmd1$9234 + 0x4
+_020B9C4C: .word 0x00001B19
+_020B9C50: .word bbcmd1$9234
+ arm_func_end NNSi_G3dFuncSbc_BBY
+
+ arm_func_start NNSi_G3dFuncSbc_BB
+NNSi_G3dFuncSbc_BB: ; 0x020B9C54
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0xc8
+ mov r9, r0
+ ldr r2, [r9, #0x8]
+ mov r8, r1
+ ands r0, r2, #0x200
+ mov r6, #0x2
+ ldr r5, _020B9F58 ; =bbcmd1$9173 + 0x30
+ ldr r4, _020B9F5C ; =bbcmd1$9173 + 0x3C
+ beq _020B9CB8
+ cmp r8, #0x40
+ beq _020B9C8C
+ cmp r8, #0x60
+ bne _020B9C90
+_020B9C8C:
+ add r6, r6, #0x1
+_020B9C90:
+ cmp r8, #0x20
+ beq _020B9CA0
+ cmp r8, #0x60
+ bne _020B9CA4
+_020B9CA0:
+ add r6, r6, #0x1
+_020B9CA4:
+ ldr r0, [r9, #0x0]
+ add sp, sp, #0xc8
+ add r0, r0, r6
+ str r0, [r9, #0x0]
+ ldmia sp!, {r4-r10,pc}
+_020B9CB8:
+ cmp r8, #0x40
+ beq _020B9CC8
+ cmp r8, #0x60
+ bne _020B9D00
+_020B9CC8:
+ add r6, r6, #0x1
+ ands r0, r2, #0x100
+ bne _020B9D00
+ cmp r8, #0x40
+ ldreq r0, [r9, #0x0]
+ add r1, sp, #0x0
+ ldreqb r0, [r0, #0x2]
+ mov r2, #0x1
+ streq r0, [sp, #0x0]
+ ldrne r0, [r9, #0x0]
+ ldrneb r0, [r0, #0x3]
+ strne r0, [sp, #0x0]
+ mov r0, #0x14
+ bl NNS_G3dGeBufferOP_N
+_020B9D00:
+ ldr r0, [r9, #0x28]
+ cmp r0, #0x0
+ ldrneb r7, [r9, #0x93]
+ moveq r7, #0x0
+ cmp r7, #0x1
+ bne _020B9D4C
+ ldr r1, [r9, #0x8]
+ mov r0, r9
+ bic r1, r1, #0x40
+ str r1, [r9, #0x8]
+ ldr r1, [r9, #0x28]
+ blx r1
+ ldr r0, [r9, #0x28]
+ cmp r0, #0x0
+ ldrneb r7, [r9, #0x93]
+ ldr r0, [r9, #0x8]
+ moveq r7, #0x0
+ and r1, r0, #0x40
+ b _020B9D50
+_020B9D4C:
+ mov r1, #0x0
+_020B9D50:
+ ldr r0, [r9, #0x8]
+ ands r0, r0, #0x100
+ bne _020B9ED4
+ cmp r1, #0x0
+ bne _020B9ED4
+ bl NNS_G3dGeFlushBuffer
+ ldr r2, _020B9F60 ; =0x00151110
+ ldr r1, _020B9F64 ; =0x04000400
+ mov r0, #0x0
+ str r2, [r1, #0x0]
+ str r0, [r1, #0x0]
+ str r0, [r1, #0x0]
+ add r10, sp, #0x8
+_020B9D84:
+ mov r0, r10
+ bl G3X_GetClipMtx
+ cmp r0, #0x0
+ bne _020B9D84
+ ldr r0, _020B9F68 ; =NNS_G3dGlb
+ ldr r1, [r0, #0xfc]
+ ands r0, r1, #0x1
+ beq _020B9DC4
+ bl NNS_G3dGlbGetWV
+ add r1, sp, #0x48
+ bl MTX_Copy43To44_
+ add r0, sp, #0x8
+ add r1, sp, #0x48
+ mov r2, r0
+ bl MTX_Concat44
+ b _020B9DE8
+_020B9DC4:
+ ands r0, r1, #0x2
+ beq _020B9DE8
+ ldr r0, _020B9F6C ; =NNS_G3dGlb + 0x4C
+ add r1, sp, #0x88
+ bl MTX_Copy43To44_
+ add r0, sp, #0x8
+ add r1, sp, #0x88
+ mov r2, r0
+ bl MTX_Concat44
+_020B9DE8:
+ ldr r1, [sp, #0x38]
+ add r0, sp, #0x8
+ str r1, [r5, #0x0]
+ ldr r1, [sp, #0x3c]
+ str r1, [r5, #0x4]
+ ldr r1, [sp, #0x40]
+ str r1, [r5, #0x8]
+ bl VEC_Mag
+ str r0, [r4, #0x0]
+ add r0, sp, #0x18
+ bl VEC_Mag
+ str r0, [r4, #0x4]
+ add r0, sp, #0x28
+ bl VEC_Mag
+ ldr r1, _020B9F68 ; =NNS_G3dGlb
+ str r0, [r4, #0x8]
+ ldr r1, [r1, #0xfc]
+ ands r0, r1, #0x1
+ beq _020B9E78
+ ldr r3, _020B9F70 ; =0x00171012
+ ldr r1, _020B9F64 ; =0x04000400
+ ldr r0, _020B9F74 ; =bbcmd1$9173 + 0x4
+ mov r2, #0x8
+ str r3, [r1, #0x0]
+ bl MIi_CpuSend32
+ bl NNS_G3dGlbGetInvWV
+ ldr r1, _020B9F64 ; =0x04000400
+ mov r2, #0x30
+ bl MIi_CpuSend32
+ ldr r2, _020B9F78 ; =0x00001B19
+ ldr r1, _020B9F64 ; =0x04000400
+ ldr r0, _020B9F7C ; =bbcmd1$9173 + 0xC
+ str r2, [r1, #0x0]
+ mov r2, #0x3c
+ bl MIi_CpuSend32
+ b _020B9ED4
+_020B9E78:
+ ands r0, r1, #0x2
+ beq _020B9EC4
+ ldr r3, _020B9F70 ; =0x00171012
+ ldr r1, _020B9F64 ; =0x04000400
+ ldr r0, _020B9F74 ; =bbcmd1$9173 + 0x4
+ mov r2, #0x8
+ str r3, [r1, #0x0]
+ bl MIi_CpuSend32
+ bl NNS_G3dGlbGetInvV
+ ldr r1, _020B9F64 ; =0x04000400
+ mov r2, #0x30
+ bl MIi_CpuSend32
+ ldr r2, _020B9F78 ; =0x00001B19
+ ldr r1, _020B9F64 ; =0x04000400
+ ldr r0, _020B9F7C ; =bbcmd1$9173 + 0xC
+ str r2, [r1, #0x0]
+ mov r2, #0x3c
+ bl MIi_CpuSend32
+ b _020B9ED4
+_020B9EC4:
+ ldr r0, _020B9F80 ; =bbcmd1$9173
+ ldr r1, _020B9F64 ; =0x04000400
+ mov r2, #0x48
+ bl MIi_CpuSend32
+_020B9ED4:
+ cmp r7, #0x3
+ movne r0, #0x0
+ bne _020B9F00
+ ldr r1, [r9, #0x8]
+ mov r0, r9
+ bic r1, r1, #0x40
+ str r1, [r9, #0x8]
+ ldr r1, [r9, #0x28]
+ blx r1
+ ldr r0, [r9, #0x8]
+ and r0, r0, #0x40
+_020B9F00:
+ cmp r8, #0x20
+ beq _020B9F10
+ cmp r8, #0x60
+ bne _020B9F44
+_020B9F10:
+ cmp r0, #0x0
+ add r6, r6, #0x1
+ bne _020B9F44
+ ldr r0, [r9, #0x8]
+ ands r0, r0, #0x100
+ bne _020B9F44
+ ldr r0, [r9, #0x0]
+ add r1, sp, #0x4
+ ldrb r3, [r0, #0x2]
+ mov r0, #0x13
+ mov r2, #0x1
+ str r3, [sp, #0x4]
+ bl NNS_G3dGeBufferOP_N
+_020B9F44:
+ ldr r0, [r9, #0x0]
+ add r0, r0, r6
+ str r0, [r9, #0x0]
+ add sp, sp, #0xc8
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020B9F58: .word bbcmd1$9173 + 0x30
+_020B9F5C: .word bbcmd1$9173 + 0x3C
+_020B9F60: .word 0x00151110
+_020B9F64: .word 0x04000400
+_020B9F68: .word NNS_G3dGlb
+_020B9F6C: .word NNS_G3dGlb + 0x4C
+_020B9F70: .word 0x00171012
+_020B9F74: .word bbcmd1$9173 + 0x4
+_020B9F78: .word 0x00001B19
+_020B9F7C: .word bbcmd1$9173 + 0xC
+_020B9F80: .word bbcmd1$9173
+ arm_func_end NNSi_G3dFuncSbc_BB
+
+ arm_func_start NNSi_G3dFuncSbc_NODEDESC
+NNSi_G3dFuncSbc_NODEDESC: ; 0x020B9F84
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x14
+ mov r10, r0
+ ldr r0, [r10, #0x0]
+ mov r9, r1
+ ldrb r4, [r0, #0x1]
+ mov r7, #0x4
+ strb r4, [r10, #0xae]
+ ldr r0, [r10, #0x8]
+ orr r0, r0, #0x10
+ str r0, [r10, #0x8]
+ ldr r1, [r10, #0x8]
+ ands r0, r1, #0x400
+ beq _020BA01C
+ cmp r9, #0x40
+ beq _020B9FCC
+ cmp r9, #0x60
+ bne _020B9FD0
+_020B9FCC:
+ add r7, r7, #0x1
+_020B9FD0:
+ cmp r9, #0x20
+ beq _020B9FE0
+ cmp r9, #0x60
+ bne _020BA008
+_020B9FE0:
+ add r7, r7, #0x1
+ ands r0, r1, #0x100
+ bne _020BA008
+ ldr r0, [r10, #0x0]
+ add r1, sp, #0x8
+ ldrb r3, [r0, #0x4]
+ mov r0, #0x14
+ mov r2, #0x1
+ str r3, [sp, #0x8]
+ bl NNS_G3dGeBufferOP_N
+_020BA008:
+ ldr r0, [r10, #0x0]
+ add sp, sp, #0x14
+ add r0, r0, r7
+ str r0, [r10, #0x0]
+ ldmia sp!, {r4-r11,pc}
+_020BA01C:
+ cmp r9, #0x40
+ beq _020BA02C
+ cmp r9, #0x60
+ bne _020BA068
+_020BA02C:
+ cmp r9, #0x40
+ ldreq r0, [r10, #0x0]
+ add r7, r7, #0x1
+ ldreqb r0, [r0, #0x4]
+ streq r0, [sp, #0xc]
+ ldrne r0, [r10, #0x0]
+ ldrneb r0, [r0, #0x5]
+ strne r0, [sp, #0xc]
+ ldr r0, [r10, #0x8]
+ ands r0, r0, #0x100
+ bne _020BA068
+ add r1, sp, #0xc
+ mov r0, #0x14
+ mov r2, #0x1
+ bl NNS_G3dGeBufferOP_N
+_020BA068:
+ add r0, r10, #0x12c
+ str r0, [r10, #0xb4]
+ ldr r0, [r10, #0x24]
+ cmp r0, #0x0
+ ldrneb r8, [r10, #0x92]
+ moveq r8, #0x0
+ cmp r8, #0x1
+ bne _020BA0BC
+ ldr r1, [r10, #0x8]
+ mov r0, r10
+ bic r1, r1, #0x40
+ str r1, [r10, #0x8]
+ ldr r1, [r10, #0x24]
+ blx r1
+ ldr r0, [r10, #0x24]
+ cmp r0, #0x0
+ ldrneb r8, [r10, #0x92]
+ ldr r0, [r10, #0x8]
+ moveq r8, #0x0
+ and r0, r0, #0x40
+ b _020BA0C0
+_020BA0BC:
+ mov r0, #0x0
+_020BA0C0:
+ cmp r0, #0x0
+ bne _020BA2CC
+ ldr r0, [r10, #0x4]
+ ldr r1, [r0, #0x34]
+ cmp r1, #0x0
+ beq _020BA0F4
+ mov r0, #0x58
+ mla r6, r4, r0, r1
+ ldr r0, [r10, #0x8]
+ ands r0, r0, #0x80
+ moveq r0, #0x1
+ movne r0, #0x0
+ b _020BA0FC
+_020BA0F4:
+ add r6, r10, #0x12c
+ mov r0, #0x0
+_020BA0FC:
+ cmp r0, #0x0
+ bne _020BA2C8
+ mov r0, #0x0
+ str r0, [r6, #0x0]
+ ldr r0, [r10, #0x4]
+ ldr r1, [r0, #0x10]
+ cmp r1, #0x0
+ beq _020BA134
+ ldr r3, [r0, #0x14]
+ mov r0, r6
+ mov r2, r4
+ blx r3
+ cmp r0, #0x0
+ bne _020BA2C8
+_020BA134:
+ ldr r2, [r10, #0xd4]
+ ldrh r0, [r2, #0x6]
+ ldrh r1, [r2, r0]
+ add r0, r2, r0
+ mla r0, r1, r4, r0
+ ldr r1, [r0, #0x4]
+ ldrh r0, [r2, r1]
+ add r4, r2, r1
+ add r5, r4, #0x4
+ ands r0, r0, #0x1
+ ldrne r0, [r6, #0x0]
+ orrne r0, r0, #0x4
+ strne r0, [r6, #0x0]
+ bne _020BA188
+ ldr r0, [r5, #0x0]
+ str r0, [r6, #0x4c]
+ ldr r0, [r5, #0x4]
+ str r0, [r6, #0x50]
+ ldr r0, [r5, #0x8]
+ add r5, r5, #0xc
+ str r0, [r6, #0x54]
+_020BA188:
+ ldrh r1, [r4, #0x0]
+ ands r0, r1, #0x2
+ ldrne r0, [r6, #0x0]
+ orrne r0, r0, #0x2
+ strne r0, [r6, #0x0]
+ bne _020BA2B0
+ ands r0, r1, #0x8
+ beq _020BA264
+ and r1, r1, #0xf0
+ mov r11, r1, asr #0x4
+ ldrsh r1, [r5, #0x0]
+ add r0, r6, #0x28
+ str r1, [sp, #0x0]
+ ldrsh r1, [r5, #0x2]
+ str r1, [sp, #0x4]
+ bl MI_Zero36B
+ ldrh r0, [r4, #0x0]
+ add r1, r6, r11, lsl #0x2
+ add r5, r5, #0x4
+ ands r0, r0, #0x100
+ movne r0, #0x1000
+ rsbne r2, r0, #0x0
+ moveq r2, #0x1000
+ str r2, [r1, #0x28]
+ ldr r0, _020BA3B4 ; =pivotUtil_$9100
+ ldr r1, _020BA3B8 ; =pivotUtil_$9100 + 1
+ ldrb r0, [r0, r11, lsl #0x2]
+ add r2, r6, r0, lsl #0x2
+ ldr r0, [sp, #0x0]
+ str r0, [r2, #0x28]
+ ldrb r0, [r1, r11, lsl #0x2]
+ add r1, r6, r0, lsl #0x2
+ ldr r0, [sp, #0x4]
+ str r0, [r1, #0x28]
+ ldrh r0, [r4, #0x0]
+ ands r0, r0, #0x200
+ ldrne r0, [sp, #0x4]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x4]
+ ldr r0, _020BA3BC ; =pivotUtil_$9100 + 2
+ ldrb r0, [r0, r11, lsl #0x2]
+ add r1, r6, r0, lsl #0x2
+ ldr r0, [sp, #0x4]
+ str r0, [r1, #0x28]
+ ldrh r0, [r4, #0x0]
+ ands r0, r0, #0x400
+ ldrne r0, [sp, #0x0]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x0]
+ ldr r0, _020BA3C0 ; =pivotUtil_$9100 + 3
+ ldrb r0, [r0, r11, lsl #0x2]
+ add r1, r6, r0, lsl #0x2
+ ldr r0, [sp, #0x0]
+ str r0, [r1, #0x28]
+ b _020BA2B0
+_020BA264:
+ ldrsh r0, [r4, #0x2]
+ str r0, [r6, #0x28]
+ ldrsh r0, [r5, #0x0]
+ str r0, [r6, #0x2c]
+ ldrsh r0, [r5, #0x2]
+ str r0, [r6, #0x30]
+ ldrsh r0, [r5, #0x4]
+ str r0, [r6, #0x34]
+ ldrsh r0, [r5, #0x6]
+ str r0, [r6, #0x38]
+ ldrsh r0, [r5, #0x8]
+ str r0, [r6, #0x3c]
+ ldrsh r0, [r5, #0xa]
+ str r0, [r6, #0x40]
+ ldrsh r0, [r5, #0xc]
+ str r0, [r6, #0x44]
+ ldrsh r0, [r5, #0xe]
+ add r5, r5, #0x10
+ str r0, [r6, #0x48]
+_020BA2B0:
+ ldrh r3, [r4, #0x0]
+ ldr r2, [r10, #0x0]
+ ldr r4, [r10, #0xe8]
+ mov r0, r6
+ mov r1, r5
+ blx r4
+_020BA2C8:
+ str r6, [r10, #0xb4]
+_020BA2CC:
+ cmp r8, #0x2
+ bne _020BA308
+ ldr r1, [r10, #0x8]
+ mov r0, r10
+ bic r1, r1, #0x40
+ str r1, [r10, #0x8]
+ ldr r1, [r10, #0x24]
+ blx r1
+ ldr r0, [r10, #0x24]
+ cmp r0, #0x0
+ ldrneb r8, [r10, #0x92]
+ ldr r0, [r10, #0x8]
+ moveq r8, #0x0
+ and r0, r0, #0x40
+ b _020BA30C
+_020BA308:
+ mov r0, #0x0
+_020BA30C:
+ cmp r0, #0x0
+ bne _020BA32C
+ ldr r0, [r10, #0x8]
+ ands r0, r0, #0x100
+ bne _020BA32C
+ ldr r0, [r10, #0xb4]
+ ldr r1, [r10, #0xec]
+ blx r1
+_020BA32C:
+ mov r0, #0x0
+ str r0, [r10, #0xb4]
+ cmp r8, #0x3
+ bne _020BA35C
+ ldr r1, [r10, #0x8]
+ mov r0, r10
+ bic r1, r1, #0x40
+ str r1, [r10, #0x8]
+ ldr r1, [r10, #0x24]
+ blx r1
+ ldr r0, [r10, #0x8]
+ and r0, r0, #0x40
+_020BA35C:
+ cmp r9, #0x20
+ beq _020BA36C
+ cmp r9, #0x60
+ bne _020BA3A0
+_020BA36C:
+ cmp r0, #0x0
+ add r7, r7, #0x1
+ bne _020BA3A0
+ ldr r0, [r10, #0x8]
+ ands r0, r0, #0x100
+ bne _020BA3A0
+ ldr r0, [r10, #0x0]
+ add r1, sp, #0x10
+ ldrb r3, [r0, #0x4]
+ mov r0, #0x13
+ mov r2, #0x1
+ str r3, [sp, #0x10]
+ bl NNS_G3dGeBufferOP_N
+_020BA3A0:
+ ldr r0, [r10, #0x0]
+ add r0, r0, r7
+ str r0, [r10, #0x0]
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020BA3B4: .word pivotUtil_$9100
+_020BA3B8: .word pivotUtil_$9100 + 1
+_020BA3BC: .word pivotUtil_$9100 + 2
+_020BA3C0: .word pivotUtil_$9100 + 3
+ arm_func_end NNSi_G3dFuncSbc_NODEDESC
+
+ arm_func_start NNSi_G3dFuncSbc_SHP
+NNSi_G3dFuncSbc_SHP: ; 0x020BA3C4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ ldr r3, [r4, #0x8]
+ ands r2, r3, #0x200
+ bne _020BA420
+ ands r2, r3, #0x1
+ beq _020BA420
+ ands r2, r3, #0x2
+ bne _020BA420
+ ldr r5, [r4, #0xdc]
+ ldr r3, [r4, #0x0]
+ ldrh r2, [r5, #0x6]
+ ldrb r3, [r3, #0x1]
+ ldr ip, _020BA434 ; =NNS_G3dFuncSbcShpTable
+ ldrh lr, [r5, r2]
+ add r2, r5, r2
+ mla r2, lr, r3, r2
+ ldr r2, [r2, #0x4]
+ ldrh lr, [r5, r2]
+ add r2, r5, r2
+ ldr r12, [r12, lr, lsl #0x2]
+ blx r12
+_020BA420:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BA434: .word NNS_G3dFuncSbcShpTable
+ arm_func_end NNSi_G3dFuncSbc_SHP
+
+ arm_func_start NNSi_G3dFuncSbc_SHP_InternalDefault
+NNSi_G3dFuncSbc_SHP_InternalDefault: ; 0x020BA438
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldr r0, [r6, #0x20]
+ mov r5, r2
+ cmp r0, #0x0
+ ldrneb r4, [r6, #0x91]
+ moveq r4, #0x0
+ cmp r4, #0x1
+ bne _020BA490
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ bic r1, r1, #0x40
+ str r1, [r6, #0x8]
+ ldr r1, [r6, #0x20]
+ blx r1
+ ldr r0, [r6, #0x20]
+ cmp r0, #0x0
+ ldrneb r4, [r6, #0x91]
+ ldr r0, [r6, #0x8]
+ moveq r4, #0x0
+ and r0, r0, #0x40
+ b _020BA494
+_020BA490:
+ mov r0, #0x0
+_020BA494:
+ cmp r0, #0x0
+ bne _020BA4B8
+ ldr r0, [r6, #0x8]
+ ands r0, r0, #0x100
+ bne _020BA4B8
+ ldr r0, [r5, #0x8]
+ ldr r1, [r5, #0xc]
+ add r0, r5, r0
+ bl NNS_G3dGeSendDL
+_020BA4B8:
+ cmp r4, #0x2
+ bne _020BA4E8
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ bic r1, r1, #0x40
+ str r1, [r6, #0x8]
+ ldr r1, [r6, #0x20]
+ blx r1
+ ldr r0, [r6, #0x20]
+ cmp r0, #0x0
+ ldrneb r4, [r6, #0x91]
+ moveq r4, #0x0
+_020BA4E8:
+ cmp r4, #0x3
+ ldmneia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ bic r1, r1, #0x40
+ str r1, [r6, #0x8]
+ ldr r1, [r6, #0x20]
+ blx r1
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G3dFuncSbc_SHP_InternalDefault
+
+ arm_func_start NNSi_G3dFuncSbc_MAT
+NNSi_G3dFuncSbc_MAT: ; 0x020BA50C
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ ldr r5, [r4, #0x8]
+ ands r0, r5, #0x200
+ bne _020BA578
+ ldr r2, [r4, #0x0]
+ ands r0, r5, #0x1
+ ldrb r3, [r2, #0x1]
+ bne _020BA544
+ ands r0, r5, #0x8
+ beq _020BA544
+ ldrb r0, [r4, #0xad]
+ cmp r3, r0
+ beq _020BA578
+_020BA544:
+ ldr r6, [r4, #0xd8]
+ ldr ip, _020BA588 ; =NNS_G3dFuncSbcMatTable
+ ldrh r2, [r6, #0xa]
+ add r5, r6, #0x4
+ mov r0, r4
+ ldrh lr, [r5, r2]
+ add r2, r5, r2
+ mla r2, lr, r3, r2
+ ldr r2, [r2, #0x4]
+ ldrh lr, [r6, r2]
+ add r2, r6, r2
+ ldr r12, [r12, lr, lsl #0x2]
+ blx r12
+_020BA578:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x2
+ str r0, [r4, #0x0]
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020BA588: .word NNS_G3dFuncSbcMatTable
+ arm_func_end NNSi_G3dFuncSbc_MAT
+
+ arm_func_start NNSi_G3dFuncSbc_MAT_InternalDefault
+NNSi_G3dFuncSbc_MAT_InternalDefault: ; 0x020BA58C
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x20
+ mov r8, r0
+ mov r6, r3
+ strb r6, [r8, #0xad]
+ ldr r3, [r8, #0x8]
+ add r0, r8, #0xf4
+ orr r3, r3, #0x8
+ str r3, [r8, #0x8]
+ str r0, [r8, #0xb0]
+ ldr r0, [r8, #0x1c]
+ mov r4, r1
+ cmp r0, #0x0
+ ldrneb r5, [r8, #0x90]
+ mov r7, r2
+ moveq r5, #0x0
+ cmp r5, #0x1
+ bne _020BA608
+ ldr r1, [r8, #0x8]
+ mov r0, r8
+ bic r1, r1, #0x40
+ str r1, [r8, #0x8]
+ ldr r1, [r8, #0x1c]
+ blx r1
+ ldr r0, [r8, #0x1c]
+ cmp r0, #0x0
+ ldrneb r5, [r8, #0x90]
+ ldr r0, [r8, #0x8]
+ moveq r5, #0x0
+ and r0, r0, #0x40
+ b _020BA60C
+_020BA608:
+ mov r0, #0x0
+_020BA60C:
+ cmp r0, #0x0
+ bne _020BA8C0
+ ldr r0, [r8, #0x4]
+ ldr r0, [r0, #0x38]
+ cmp r0, #0x0
+ beq _020BA638
+ ldr r1, [r8, #0x8]
+ ands r1, r1, #0x80
+ moveq r1, #0x38
+ mlaeq r4, r6, r1, r0
+ beq _020BA8BC
+_020BA638:
+ cmp r4, #0x20
+ beq _020BA648
+ cmp r4, #0x40
+ bne _020BA684
+_020BA648:
+ mov r1, r6, lsr #0x5
+ add r1, r8, r1, lsl #0x2
+ and r2, r6, #0x1f
+ mov r3, #0x1
+ mov r2, r3, lsl r2
+ ldr r1, [r1, #0xbc]
+ ands r1, r2, r1
+ beq _020BA684
+ cmp r0, #0x0
+ movne r1, #0x38
+ mlane r4, r6, r1, r0
+ ldreq r1, _020BA9D8 ; =NNS_G3dRSOnGlb
+ moveq r0, #0x38
+ mlaeq r4, r6, r0, r1
+ b _020BA8BC
+_020BA684:
+ cmp r0, #0x0
+ beq _020BA6BC
+ add r4, r8, #0xbc
+ mov r3, r6, lsr #0x5
+ ldr r2, [r4, r3, lsl #0x2]
+ and r0, r6, #0x1f
+ mov r1, #0x1
+ orr r0, r2, r1, lsl r0
+ str r0, [r4, r3, lsl #0x2]
+ ldr r1, [r8, #0x4]
+ mov r0, #0x38
+ ldr r1, [r1, #0x38]
+ mla r4, r6, r0, r1
+ b _020BA6F0
+_020BA6BC:
+ cmp r4, #0x40
+ addne r4, r8, #0xf4
+ bne _020BA6F0
+ add lr, r8, #0xbc
+ mov r12, r6, lsr #0x5
+ ldr r1, _020BA9D8 ; =NNS_G3dRSOnGlb
+ ldr r4, [lr, r12, lsl #0x2]
+ mov r0, #0x38
+ and r2, r6, #0x1f
+ mov r3, #0x1
+ orr r2, r4, r3, lsl r2
+ mla r4, r6, r0, r1
+ str r2, [lr, r12, lsl #0x2]
+_020BA6F0:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ ldr r3, [r8, #0xd8]
+ ldrh r0, [r3, #0xa]
+ add r2, r3, #0x4
+ ldrh r1, [r2, r0]
+ add r0, r2, r0
+ mla r0, r1, r6, r0
+ ldr r0, [r0, #0x4]
+ ldr r1, _020BA9DC ; =NNS_G3dGlb
+ add r0, r3, r0
+ ldrh r0, [r0, #0x1e]
+ ands r0, r0, #0x20
+ ldrne r0, [r4, #0x0]
+ orrne r0, r0, #0x20
+ strne r0, [r4, #0x0]
+ ldrh r2, [r7, #0x1e]
+ ldr r0, _020BA9E0 ; =matColorMask_$8998
+ ldr r12, [r1, #0x94]
+ mov r2, r2, asr #0x6
+ and r2, r2, #0x7
+ ldr lr, [r0, r2, lsl #0x2]
+ ldr r2, [r7, #0x4]
+ mvn r3, lr
+ and r3, r12, r3
+ and r2, r2, lr
+ orr r2, r3, r2
+ str r2, [r4, #0x4]
+ ldrh r12, [r7, #0x1e]
+ ldr r3, [r1, #0x98]
+ ldr r2, [r7, #0x8]
+ mov r12, r12, asr #0x9
+ and r12, r12, #0x7
+ ldr r12, [r0, r12, lsl #0x2]
+ mvn r0, r12
+ and r3, r3, r0
+ and r0, r2, r12
+ orr r0, r3, r0
+ str r0, [r4, #0x8]
+ ldr r3, [r7, #0x10]
+ ldr r0, [r7, #0xc]
+ ldr r2, [r1, #0x9c]
+ mvn r1, r3
+ and r1, r2, r1
+ and r0, r0, r3
+ orr r0, r1, r0
+ str r0, [r4, #0xc]
+ ldr r0, [r7, #0x14]
+ str r0, [r4, #0x10]
+ ldrh r0, [r7, #0x1c]
+ str r0, [r4, #0x14]
+ ldrh r1, [r7, #0x1e]
+ ands r0, r1, #0x1
+ beq _020BA850
+ ands r1, r1, #0x2
+ ldrne r1, [r4, #0x0]
+ add r0, r7, #0x2c
+ orrne r1, r1, #0x1
+ strne r1, [r4, #0x0]
+ bne _020BA7F4
+ ldr r1, [r0, #0x0]
+ str r1, [r4, #0x18]
+ ldr r1, [r0, #0x4]
+ add r0, r0, #0x8
+ str r1, [r4, #0x1c]
+_020BA7F4:
+ ldrh r1, [r7, #0x1e]
+ ands r1, r1, #0x4
+ ldrne r1, [r4, #0x0]
+ orrne r1, r1, #0x2
+ strne r1, [r4, #0x0]
+ bne _020BA820
+ ldrsh r1, [r0, #0x0]
+ strh r1, [r4, #0x20]
+ ldrsh r1, [r0, #0x2]
+ add r0, r0, #0x4
+ strh r1, [r4, #0x22]
+_020BA820:
+ ldrh r1, [r7, #0x1e]
+ ands r1, r1, #0x8
+ ldreq r1, [r0, #0x0]
+ streq r1, [r4, #0x24]
+ ldreq r0, [r0, #0x4]
+ streq r0, [r4, #0x28]
+ ldrne r0, [r4, #0x0]
+ orrne r0, r0, #0x4
+ strne r0, [r4, #0x0]
+ ldr r0, [r4, #0x0]
+ orr r0, r0, #0x8
+ str r0, [r4, #0x0]
+_020BA850:
+ ldr r0, [r8, #0x4]
+ ldr r1, [r0, #0x8]
+ cmp r1, #0x0
+ beq _020BA890
+ mov r2, r6, lsr #0x5
+ add r2, r0, r2, lsl #0x2
+ and r3, r6, #0x1f
+ mov r12, #0x1
+ mov r3, r12, lsl r3
+ ldr r2, [r2, #0x3c]
+ ands r2, r3, r2
+ beq _020BA890
+ ldr r3, [r0, #0xc]
+ mov r0, r4
+ mov r2, r6
+ blx r3
+_020BA890:
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x18
+ beq _020BA8BC
+ ldrh r0, [r7, #0x20]
+ strh r0, [r4, #0x2c]
+ ldrh r0, [r7, #0x22]
+ strh r0, [r4, #0x2e]
+ ldr r0, [r7, #0x24]
+ str r0, [r4, #0x30]
+ ldr r0, [r7, #0x28]
+ str r0, [r4, #0x34]
+_020BA8BC:
+ str r4, [r8, #0xb0]
+_020BA8C0:
+ cmp r5, #0x2
+ bne _020BA8FC
+ ldr r1, [r8, #0x8]
+ mov r0, r8
+ bic r1, r1, #0x40
+ str r1, [r8, #0x8]
+ ldr r1, [r8, #0x1c]
+ blx r1
+ ldr r0, [r8, #0x1c]
+ cmp r0, #0x0
+ ldrneb r5, [r8, #0x90]
+ ldr r0, [r8, #0x8]
+ moveq r5, #0x0
+ and r0, r0, #0x40
+ b _020BA900
+_020BA8FC:
+ mov r0, #0x0
+_020BA900:
+ cmp r0, #0x0
+ bne _020BA9AC
+ ldr r4, [r8, #0xb0]
+ ldr r1, [r4, #0xc]
+ ands r0, r1, #0x1f0000
+ beq _020BA9A0
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x20
+ bicne r0, r1, #0x1f0000
+ strne r0, [r4, #0xc]
+ ldr r0, [r8, #0x8]
+ bic r0, r0, #0x2
+ str r0, [r8, #0x8]
+ ldr r0, [r8, #0x8]
+ ands r0, r0, #0x100
+ bne _020BA9AC
+ ldr r0, _020BA9E4 ; =0x00293130
+ ldr r3, _020BA9E8 ; =0x00002B2A
+ str r0, [sp, #0x0]
+ ldr r2, [r4, #0x4]
+ add r1, sp, #0x4
+ str r2, [sp, #0x4]
+ ldr r6, [r4, #0x8]
+ mov r2, #0x6
+ str r6, [sp, #0x8]
+ ldr r6, [r4, #0xc]
+ str r6, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r3, [r4, #0x10]
+ str r3, [sp, #0x14]
+ ldr r3, [r4, #0x14]
+ str r3, [sp, #0x18]
+ bl NNS_G3dGeBufferOP_N
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x18
+ beq _020BA9AC
+ ldr r1, [r8, #0xf0]
+ mov r0, r4
+ blx r1
+ b _020BA9AC
+_020BA9A0:
+ ldr r0, [r8, #0x8]
+ orr r0, r0, #0x2
+ str r0, [r8, #0x8]
+_020BA9AC:
+ cmp r5, #0x3
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4-r8,pc}
+ ldr r1, [r8, #0x8]
+ mov r0, r8
+ bic r1, r1, #0x40
+ str r1, [r8, #0x8]
+ ldr r1, [r8, #0x1c]
+ blx r1
+ add sp, sp, #0x20
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020BA9D8: .word NNS_G3dRSOnGlb
+_020BA9DC: .word NNS_G3dGlb
+_020BA9E0: .word matColorMask_$8998
+_020BA9E4: .word 0x00293130
+_020BA9E8: .word 0x00002B2A
+ arm_func_end NNSi_G3dFuncSbc_MAT_InternalDefault
+
+ arm_func_start NNSi_G3dFuncSbc_MTX
+NNSi_G3dFuncSbc_MTX: ; 0x020BA9EC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r1, [r5, #0x8]
+ ands r0, r1, #0x200
+ bne _020BAAAC
+ ands r0, r1, #0x1
+ beq _020BAAAC
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x8f]
+ moveq r4, #0x0
+ cmp r4, #0x1
+ bne _020BAA58
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x18]
+ blx r1
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x0
+ ldrneb r4, [r5, #0x8f]
+ ldr r0, [r5, #0x8]
+ moveq r4, #0x0
+ and r0, r0, #0x40
+ b _020BAA5C
+_020BAA58:
+ mov r0, #0x0
+_020BAA5C:
+ cmp r0, #0x0
+ bne _020BAA8C
+ ldr r0, [r5, #0x0]
+ ldrb r0, [r0, #0x1]
+ str r0, [sp, #0x0]
+ ldr r0, [r5, #0x8]
+ ands r0, r0, #0x100
+ bne _020BAA8C
+ add r1, sp, #0x0
+ mov r0, #0x14
+ mov r2, #0x1
+ bl NNS_G3dGeBufferOP_N
+_020BAA8C:
+ cmp r4, #0x3
+ bne _020BAAAC
+ ldr r1, [r5, #0x8]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r5, #0x8]
+ ldr r1, [r5, #0x18]
+ blx r1
+_020BAAAC:
+ ldr r0, [r5, #0x0]
+ add r0, r0, #0x2
+ str r0, [r5, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end NNSi_G3dFuncSbc_MTX
+
+ arm_func_start NNSi_G3dFuncSbc_NODE
+NNSi_G3dFuncSbc_NODE: ; 0x020BAAC0
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldr r0, [r6, #0x8]
+ ands r0, r0, #0x200
+ bne _020BAC38
+ ldr r1, [r6, #0x0]
+ add r0, r6, #0x184
+ ldrb r1, [r1, #0x1]
+ strb r1, [r6, #0xac]
+ ldr r1, [r6, #0x8]
+ ldrb r4, [r6, #0xac]
+ orr r1, r1, #0x4
+ str r1, [r6, #0x8]
+ str r0, [r6, #0xb8]
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ ldrneb r5, [r6, #0x8e]
+ moveq r5, #0x0
+ cmp r5, #0x1
+ bne _020BAB44
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ bic r1, r1, #0x40
+ str r1, [r6, #0x8]
+ ldr r1, [r6, #0x14]
+ blx r1
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ ldrneb r5, [r6, #0x8e]
+ ldr r0, [r6, #0x8]
+ moveq r5, #0x0
+ and r0, r0, #0x40
+ b _020BAB48
+_020BAB44:
+ mov r0, #0x0
+_020BAB48:
+ cmp r0, #0x0
+ bne _020BABAC
+ ldr r12, [r6, #0x4]
+ ldr r1, [r12, #0x18]
+ cmp r1, #0x0
+ beq _020BAB98
+ mov r0, r4, lsr #0x5
+ add r0, r12, r0, lsl #0x2
+ and r2, r4, #0x1f
+ mov r3, #0x1
+ mov r2, r3, lsl r2
+ ldr r0, [r0, #0x4c]
+ ands r0, r2, r0
+ beq _020BAB98
+ ldr r0, [r6, #0xb8]
+ ldr r3, [r12, #0x1c]
+ mov r2, r4
+ blx r3
+ cmp r0, #0x0
+ bne _020BABAC
+_020BAB98:
+ ldr r1, [r6, #0x0]
+ ldr r0, [r6, #0xb8]
+ ldrb r1, [r1, #0x2]
+ and r1, r1, #0x1
+ str r1, [r0, #0x0]
+_020BABAC:
+ cmp r5, #0x2
+ bne _020BABE8
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ bic r1, r1, #0x40
+ str r1, [r6, #0x8]
+ ldr r1, [r6, #0x14]
+ blx r1
+ ldr r0, [r6, #0x14]
+ cmp r0, #0x0
+ ldrneb r5, [r6, #0x8e]
+ ldr r0, [r6, #0x8]
+ moveq r5, #0x0
+ and r0, r0, #0x40
+ b _020BABEC
+_020BABE8:
+ mov r0, #0x0
+_020BABEC:
+ cmp r0, #0x0
+ bne _020BAC18
+ ldr r0, [r6, #0xb8]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ ldrne r0, [r6, #0x8]
+ orrne r0, r0, #0x1
+ strne r0, [r6, #0x8]
+ ldreq r0, [r6, #0x8]
+ biceq r0, r0, #0x1
+ streq r0, [r6, #0x8]
+_020BAC18:
+ cmp r5, #0x3
+ bne _020BAC38
+ ldr r1, [r6, #0x8]
+ mov r0, r6
+ bic r1, r1, #0x40
+ str r1, [r6, #0x8]
+ ldr r1, [r6, #0x14]
+ blx r1
+_020BAC38:
+ ldr r0, [r6, #0x0]
+ add r0, r0, #0x3
+ str r0, [r6, #0x0]
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G3dFuncSbc_NODE
+
+ arm_func_start NNSi_G3dFuncSbc_RET
+NNSi_G3dFuncSbc_RET: ; 0x020BAC48
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x0
+ beq _020BAC60
+ blx r1
+_020BAC60:
+ ldr r0, [r4, #0x8]
+ orr r0, r0, #0x20
+ str r0, [r4, #0x8]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_G3dFuncSbc_RET
+
+ arm_func_start NNSi_G3dFuncSbc_NOP
+NNSi_G3dFuncSbc_NOP: ; 0x020BAC70
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ beq _020BAC88
+ blx r1
+_020BAC88:
+ ldr r0, [r4, #0x0]
+ add r0, r0, #0x1
+ str r0, [r4, #0x0]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_G3dFuncSbc_NOP
+
+ arm_func_start NNS_G3dDraw
+NNS_G3dDraw: ; 0x020BAC98
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x188
+ mov r4, r0
+ ldr r0, [r4, #0x0]
+ and r0, r0, #0x10
+ cmp r0, #0x10
+ bne _020BAD2C
+ add r1, r4, #0x3c
+ mov r0, #0x0
+ mov r2, #0x8
+ bl MIi_CpuClear32
+ add r1, r4, #0x44
+ mov r0, #0x0
+ mov r2, #0x8
+ bl MIi_CpuClear32
+ add r1, r4, #0x4c
+ mov r0, #0x0
+ mov r2, #0x8
+ bl MIi_CpuClear32
+ ldr r1, [r4, #0x8]
+ cmp r1, #0x0
+ beq _020BACF8
+ add r0, r4, #0x3c
+ bl updateHintVec_
+_020BACF8:
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x0
+ beq _020BAD0C
+ add r0, r4, #0x44
+ bl updateHintVec_
+_020BAD0C:
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _020BAD20
+ add r0, r4, #0x4c
+ bl updateHintVec_
+_020BAD20:
+ ldr r0, [r4, #0x0]
+ bic r0, r0, #0x10
+ str r0, [r4, #0x0]
+_020BAD2C:
+ ldr r2, _020BAD70 ; =NNS_G3dRS
+ ldr r0, [r2, #0x0]
+ cmp r0, #0x0
+ beq _020BAD4C
+ mov r1, r4
+ bl G3dDrawInternal_
+ add sp, sp, #0x188
+ ldmia sp!, {r4,pc}
+_020BAD4C:
+ add r0, sp, #0x0
+ mov r1, r4
+ str r0, [r2, #0x0]
+ bl G3dDrawInternal_
+ ldr r0, _020BAD70 ; =NNS_G3dRS
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ add sp, sp, #0x188
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BAD70: .word NNS_G3dRS
+ arm_func_end NNS_G3dDraw
+
+ local_arm_func_start updateHintVec_
+updateHintVec_: ; 0x020BAD74
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ mov r3, #0x1
+ mov r4, #0x0
+_020BAD90:
+ ldrb r2, [r1, #0x19]
+ mov r5, r4
+ cmp r2, #0x0
+ ble _020BADD0
+_020BADA0:
+ add r2, r1, r5, lsl #0x1
+ ldrh r2, [r2, #0x1a]
+ ands r2, r2, #0x100
+ movne lr, r5, asr #0x5
+ andne r2, r5, #0x1f
+ ldrne r12, [r0, lr, lsl #0x2]
+ add r5, r5, #0x1
+ orrne r2, r12, r3, lsl r2
+ strne r2, [r0, lr, lsl #0x2]
+ ldrb r2, [r1, #0x19]
+ cmp r5, r2
+ blt _020BADA0
+_020BADD0:
+ ldr r1, [r1, #0x10]
+ cmp r1, #0x0
+ bne _020BAD90
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end updateHintVec_
+
+ arm_func_start G3dDrawInternal_
+G3dDrawInternal_: ; 0x020BADE4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ mov r1, r5
+ mov r0, #0x0
+ mov r2, #0x188
+ bl MIi_CpuClearFast
+ mov r0, #0x1
+ str r0, [r5, #0xc4]
+ str r0, [r5, #0x8]
+ ldr r0, [r4, #0x30]
+ ldr r2, _020BAF60 ; =NNS_G3dGetJointScale_FuncArray
+ cmp r0, #0x0
+ strne r0, [r5, #0x0]
+ ldreq r1, [r4, #0x4]
+ ldreq r0, [r1, #0x4]
+ addeq r0, r1, r0
+ streq r0, [r5, #0x0]
+ str r4, [r5, #0x4]
+ ldr r0, [r4, #0x4]
+ ldr r1, _020BAF64 ; =NNS_G3dSendJointSRT_FuncArray
+ add r0, r0, #0x40
+ str r0, [r5, #0xd4]
+ ldr r12, [r4, #0x4]
+ ldr r0, _020BAF68 ; =NNS_G3dSendTexSRT_FuncArray
+ ldr r3, [r12, #0x8]
+ add r3, r12, r3
+ str r3, [r5, #0xd8]
+ ldr r12, [r4, #0x4]
+ ldr r3, [r12, #0xc]
+ add r3, r12, r3
+ str r3, [r5, #0xdc]
+ ldr r3, [r4, #0x4]
+ ldrb r3, [r3, #0x15]
+ ldr r2, [r2, r3, lsl #0x2]
+ str r2, [r5, #0xe8]
+ ldr r2, [r4, #0x4]
+ ldrb r2, [r2, #0x15]
+ ldr r1, [r1, r2, lsl #0x2]
+ str r1, [r5, #0xec]
+ ldr r1, [r4, #0x4]
+ ldrb r1, [r1, #0x16]
+ ldr r0, [r0, r1, lsl #0x2]
+ str r0, [r5, #0xf0]
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x1c]
+ str r0, [r5, #0xe0]
+ ldr r0, [r4, #0x4]
+ ldr r0, [r0, #0x20]
+ str r0, [r5, #0xe4]
+ ldr r1, [r4, #0x20]
+ cmp r1, #0x0
+ beq _020BAEE0
+ ldrb r0, [r4, #0x24]
+ cmp r0, #0x20
+ bhs _020BAEE0
+ add r0, r5, r0, lsl #0x2
+ str r1, [r0, #0xc]
+ ldrb r0, [r4, #0x24]
+ ldrb r1, [r4, #0x25]
+ add r0, r5, r0
+ strb r1, [r0, #0x8c]
+_020BAEE0:
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x1
+ ldrne r0, [r5, #0x8]
+ orrne r0, r0, #0x80
+ strne r0, [r5, #0x8]
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x2
+ ldrne r0, [r5, #0x8]
+ orrne r0, r0, #0x100
+ strne r0, [r5, #0x8]
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x4
+ ldrne r0, [r5, #0x8]
+ orrne r0, r0, #0x200
+ strne r0, [r5, #0x8]
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x8
+ ldrne r0, [r5, #0x8]
+ orrne r0, r0, #0x400
+ strne r0, [r5, #0x8]
+ ldr r1, [r4, #0x28]
+ cmp r1, #0x0
+ beq _020BAF44
+ mov r0, r5
+ blx r1
+_020BAF44:
+ mov r0, r5
+ bl G3dDrawInternal_Loop_
+ ldr r0, [r4, #0x0]
+ bic r0, r0, #0x1
+ str r0, [r4, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020BAF60: .word NNS_G3dGetJointScale_FuncArray
+_020BAF64: .word NNS_G3dSendJointSRT_FuncArray
+_020BAF68: .word NNS_G3dSendTexSRT_FuncArray
+ arm_func_end G3dDrawInternal_
+
+ arm_func_start G3dDrawInternal_Loop_
+G3dDrawInternal_Loop_: ; 0x020BAF6C
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r0
+ ldr r6, _020BAFB4 ; =NNS_G3dFuncSbcTable
+ add r4, r5, #0x8
+_020BAF7C:
+ ldr r1, [r4, #0x0]
+ mov r0, r5
+ bic r1, r1, #0x40
+ str r1, [r4, #0x0]
+ ldr r1, [r5, #0x0]
+ ldrb r3, [r1, #0x0]
+ and r1, r3, #0x1f
+ ldr r2, [r6, r1, lsl #0x2]
+ and r1, r3, #0xe0
+ blx r2
+ ldr r0, [r5, #0x8]
+ ands r0, r0, #0x20
+ beq _020BAF7C
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020BAFB4: .word NNS_G3dFuncSbcTable
+ arm_func_end G3dDrawInternal_Loop_
diff --git a/arm9/asm/NNS_G3D_si3d.s b/arm9/asm/NNS_G3D_si3d.s
new file mode 100644
index 00000000..66bfe460
--- /dev/null
+++ b/arm9/asm/NNS_G3D_si3d.s
@@ -0,0 +1,359 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_G3dSendTexSRTSi3d
+NNSi_G3dSendTexSRTSi3d: ; 0x020BEF10
+ stmdb sp!, {lr}
+ sub sp, sp, #0x3c
+ ldr r1, [r0, #0x0]
+ mov r3, #0x0
+ ands r1, r1, #0x8
+ ldrne r1, _020BF0CC ; =0x00101710
+ mov r2, #0x3
+ strne r1, [sp, #0x0]
+ ldreq r1, _020BF0D0 ; =0x00101910
+ str r3, [sp, #0x34]
+ streq r1, [sp, #0x0]
+ mov r1, #0x2
+ str r1, [sp, #0x38]
+ str r3, [sp, #0x28]
+ str r3, [sp, #0x24]
+ str r3, [sp, #0x20]
+ str r3, [sp, #0x1c]
+ str r3, [sp, #0x14]
+ str r3, [sp, #0x10]
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x4]
+ ldr r2, [r0, #0x0]
+ ands r1, r2, #0x4
+ beq _020BEFA0
+ str r3, [sp, #0x2c]
+ str r3, [sp, #0x30]
+ ldr r1, [r0, #0x0]
+ ands r1, r1, #0x1
+ movne r1, #0x1000
+ strne r1, [sp, #0x8]
+ strne r1, [sp, #0x18]
+ ldreq r1, [r0, #0x18]
+ streq r1, [sp, #0x8]
+ ldreq r1, [r0, #0x1c]
+ streq r1, [sp, #0x18]
+ b _020BF040
+_020BEFA0:
+ ands r1, r2, #0x1
+ beq _020BEFE8
+ ldr r2, [r0, #0x24]
+ ldrh r1, [r0, #0x2c]
+ mov r2, r2, lsl #0x4
+ rsb r2, r2, #0x0
+ mul r1, r2, r1
+ str r1, [sp, #0x2c]
+ ldr r2, [r0, #0x28]
+ ldrh r1, [r0, #0x2e]
+ mov r2, r2, lsl #0x4
+ rsb r2, r2, #0x0
+ mul r3, r2, r1
+ mov r1, #0x1000
+ str r3, [sp, #0x30]
+ str r1, [sp, #0x8]
+ str r1, [sp, #0x18]
+ b _020BF040
+_020BEFE8:
+ ldr r2, [r0, #0x18]
+ ldr r1, [r0, #0x24]
+ ldrh r12, [r0, #0x2c]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0x8
+ orr r2, r2, r1, lsl #0x18
+ rsb r1, r2, #0x0
+ mul r1, r12, r1
+ str r1, [sp, #0x2c]
+ ldr r2, [r0, #0x1c]
+ ldr r1, [r0, #0x28]
+ ldrh r12, [r0, #0x2e]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0x8
+ orr r2, r2, r1, lsl #0x18
+ rsb r1, r2, #0x0
+ mul r1, r12, r1
+ str r1, [sp, #0x30]
+ ldr r1, [r0, #0x18]
+ str r1, [sp, #0x8]
+ ldr r1, [r0, #0x1c]
+ str r1, [sp, #0x18]
+_020BF040:
+ ldr r12, [r0, #0x30]
+ cmp r12, #0x1000
+ beq _020BF078
+ ldr r2, [sp, #0x8]
+ ldr r1, [sp, #0x2c]
+ smull r3, r2, r12, r2
+ mov r3, r3, lsr #0xc
+ orr r3, r3, r2, lsl #0x14
+ str r3, [sp, #0x8]
+ ldr r2, [r0, #0x30]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0x2c]
+_020BF078:
+ ldr r12, [r0, #0x34]
+ cmp r12, #0x1000
+ beq _020BF0B0
+ ldr r2, [sp, #0x18]
+ ldr r1, [sp, #0x30]
+ smull r3, r2, r12, r2
+ mov r3, r3, lsr #0xc
+ orr r3, r3, r2, lsl #0x14
+ str r3, [sp, #0x18]
+ ldr r0, [r0, #0x34]
+ smull r2, r1, r0, r1
+ mov r0, r2, lsr #0xc
+ orr r0, r0, r1, lsl #0x14
+ str r0, [sp, #0x30]
+_020BF0B0:
+ add r1, sp, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r1, #0x4
+ mov r2, #0xe
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x3c
+ ldmia sp!, {pc}
+ .balign 4
+_020BF0CC: .word 0x00101710
+_020BF0D0: .word 0x00101910
+ arm_func_end NNSi_G3dSendTexSRTSi3d
+
+ arm_func_start NNSi_G3dGetJointScaleSi3d
+NNSi_G3dGetJointScaleSi3d: ; 0x020BF0D4
+ stmdb sp!, {r4-r8,lr}
+ mov r5, r0
+ ands r0, r3, #0x4
+ ldrb r4, [r2, #0x1]
+ ldrb r0, [r2, #0x2]
+ beq _020BF174
+ ldr r2, [r5, #0x0]
+ ldr r1, _020BF2E0 ; =NNS_G3dRS
+ orr r2, r2, #0x1
+ str r2, [r5, #0x0]
+ ldr r3, [r1, #0x0]
+ mov r1, r0, lsr #0x5
+ add r1, r3, r1, lsl #0x2
+ and r2, r0, #0x1f
+ mov r6, #0x1
+ mov r2, r6, lsl r2
+ ldr r1, [r1, #0xc4]
+ ands r1, r2, r1
+ beq _020BF148
+ add r3, r3, #0xc4
+ mov r2, r4, lsr #0x5
+ ldr r1, [r3, r2, lsl #0x2]
+ and r0, r4, #0x1f
+ orr r0, r1, r6, lsl r0
+ str r0, [r3, r2, lsl #0x2]
+ ldr r0, [r5, #0x0]
+ orr r0, r0, #0x18
+ str r0, [r5, #0x0]
+ ldmia sp!, {r4-r8,pc}
+_020BF148:
+ ldr r1, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00
+ mov r2, #0x18
+ mla r6, r0, r2, r1
+ mla r1, r4, r2, r1
+ mov r0, r6
+ bl MIi_CpuCopy32
+ mov r0, r6
+ add r1, r5, #0x10
+ mov r2, #0x18
+ bl MIi_CpuCopy32
+ ldmia sp!, {r4-r8,pc}
+_020BF174:
+ ldr r3, [r1, #0x0]
+ ldr r2, _020BF2E0 ; =NNS_G3dRS
+ str r3, [r5, #0x4]
+ ldr r3, [r1, #0x4]
+ mov r7, r0, lsr #0x5
+ str r3, [r5, #0x8]
+ ldr r3, [r1, #0x8]
+ and r8, r0, #0x1f
+ str r3, [r5, #0xc]
+ ldr r6, [r2, #0x0]
+ mov r3, #0x1
+ add r2, r6, r7, lsl #0x2
+ mov r7, r3, lsl r8
+ ldr r2, [r2, #0xc4]
+ ands r2, r7, r2
+ beq _020BF200
+ ldr r3, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00
+ mov r2, #0x18
+ mov r0, r1
+ mla r1, r4, r2, r3
+ bl MIi_CpuCopy32
+ ldr r0, _020BF2E0 ; =NNS_G3dRS
+ mov r2, r4, lsr #0x5
+ ldr r1, [r0, #0x0]
+ and r0, r4, #0x1f
+ add r3, r1, #0xc4
+ mov r1, #0x1
+ mvn r0, r1, lsl r0
+ ldr r1, [r3, r2, lsl #0x2]
+ and r0, r1, r0
+ str r0, [r3, r2, lsl #0x2]
+ ldr r0, [r5, #0x0]
+ orr r0, r0, #0x18
+ str r0, [r5, #0x0]
+ ldmia sp!, {r4-r8,pc}
+_020BF200:
+ mov r2, #0x18
+ mul r12, r0, r2
+ and r7, r4, #0x1f
+ ldr r0, _020BF2E4 ; =NNS_G3dRSOnGlb + 0xE00
+ add r6, r6, #0xc4
+ mov lr, r4, lsr #0x5
+ mvn r7, r3, lsl r7
+ ldr r8, [r6, lr, lsl #0x2]
+ mul r3, r4, r2
+ and r4, r8, r7
+ str r4, [r6, lr, lsl #0x2]
+ ldr r7, [r1, #0x0]
+ ldr r4, [r0, r12]
+ ldr r6, _020BF2E8 ; =NNS_G3dRSOnGlb + 0xE04
+ smull r8, r4, r7, r4
+ mov r7, r8, lsr #0xc
+ orr r7, r7, r4, lsl #0x14
+ str r7, [r0, r3]
+ ldr r8, [r1, #0x4]
+ ldr r4, [r6, r12]
+ ldr r7, _020BF2EC ; =NNS_G3dRSOnGlb + 0xE08
+ smull lr, r4, r8, r4
+ mov r8, lr, lsr #0xc
+ orr r8, r8, r4, lsl #0x14
+ str r8, [r6, r3]
+ ldr r8, [r1, #0x8]
+ ldr r4, [r7, r12]
+ ldr r6, _020BF2F0 ; =NNS_G3dRSOnGlb + 0xE0C
+ smull lr, r4, r8, r4
+ mov r8, lr, lsr #0xc
+ orr r8, r8, r4, lsl #0x14
+ str r8, [r7, r3]
+ ldr r7, [r1, #0xc]
+ ldr r4, [r6, r12]
+ ldr lr, _020BF2F4 ; =NNS_G3dRSOnGlb + 0xE10
+ smull r8, r4, r7, r4
+ mov r7, r8, lsr #0xc
+ orr r7, r7, r4, lsl #0x14
+ str r7, [r6, r3]
+ ldr r7, [r1, #0x10]
+ ldr r4, [lr, r12]
+ ldr r6, _020BF2F8 ; =NNS_G3dRSOnGlb + 0xE14
+ smull r8, r4, r7, r4
+ add r0, r0, r12
+ mov r7, r8, lsr #0xc
+ orr r7, r7, r4, lsl #0x14
+ str r7, [lr, r3]
+ ldr lr, [r1, #0x14]
+ ldr r4, [r6, r12]
+ add r1, r5, #0x10
+ smull r5, r4, lr, r4
+ mov r5, r5, lsr #0xc
+ orr r5, r5, r4, lsl #0x14
+ str r5, [r6, r3]
+ bl MIi_CpuCopy32
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020BF2E0: .word NNS_G3dRS
+_020BF2E4: .word NNS_G3dRSOnGlb + 0xE00
+_020BF2E8: .word NNS_G3dRSOnGlb + 0xE04
+_020BF2EC: .word NNS_G3dRSOnGlb + 0xE08
+_020BF2F0: .word NNS_G3dRSOnGlb + 0xE0C
+_020BF2F4: .word NNS_G3dRSOnGlb + 0xE10
+_020BF2F8: .word NNS_G3dRSOnGlb + 0xE14
+ arm_func_end NNSi_G3dGetJointScaleSi3d
+
+ arm_func_start NNSi_G3dSendJointSRTSi3d
+NNSi_G3dSendJointSRTSi3d: ; 0x020BF2FC
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x10
+ mov r6, r0
+ ldr r0, [r6, #0x0]
+ mov r5, #0x0
+ ands r4, r0, #0x18
+ bne _020BF328
+ add r1, r6, #0x1c
+ mov r0, #0x1b
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+_020BF328:
+ ldr r0, [r6, #0x0]
+ ands r0, r0, #0x4
+ bne _020BF398
+ cmp r4, #0x0
+ movne r5, #0x1
+ bne _020BF398
+ ldr r2, [r6, #0x4c]
+ ldr r0, [r6, #0x10]
+ add r1, sp, #0x0
+ smull r3, r0, r2, r0
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x0]
+ ldr r3, [r6, #0x50]
+ ldr r2, [r6, #0x14]
+ mov r0, #0x1c
+ smull r12, r2, r3, r2
+ mov r3, r12, lsr #0xc
+ orr r3, r3, r2, lsl #0x14
+ str r3, [sp, #0x4]
+ ldr r12, [r6, #0x54]
+ ldr r3, [r6, #0x18]
+ mov r2, #0x3
+ smull lr, r3, r12, r3
+ mov r12, lr, lsr #0xc
+ orr r12, r12, r3, lsl #0x14
+ str r12, [sp, #0x8]
+ bl NNS_G3dGeBufferOP_N
+_020BF398:
+ ldr r0, [r6, #0x0]
+ ands r0, r0, #0x2
+ bne _020BF3D4
+ cmp r5, #0x0
+ beq _020BF3C0
+ add r1, r6, #0x28
+ mov r0, #0x19
+ mov r2, #0xc
+ bl NNS_G3dGeBufferOP_N
+ b _020BF3EC
+_020BF3C0:
+ add r1, r6, #0x28
+ mov r0, #0x1a
+ mov r2, #0x9
+ bl NNS_G3dGeBufferOP_N
+ b _020BF3EC
+_020BF3D4:
+ cmp r5, #0x0
+ beq _020BF3EC
+ add r1, r6, #0x4c
+ mov r0, #0x1c
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+_020BF3EC:
+ cmp r4, #0x0
+ bne _020BF404
+ add r1, r6, #0x10
+ mov r0, #0x1b
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+_020BF404:
+ ldr r0, [r6, #0x0]
+ ands r0, r0, #0x1
+ addne sp, sp, #0x10
+ ldmneia sp!, {r4-r6,pc}
+ add r1, r6, #0x4
+ mov r0, #0x1b
+ mov r2, #0x3
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_G3dSendJointSRTSi3d
diff --git a/arm9/asm/NNS_G3D_util.s b/arm9/asm/NNS_G3D_util.s
new file mode 100644
index 00000000..932cf871
--- /dev/null
+++ b/arm9/asm/NNS_G3D_util.s
@@ -0,0 +1,349 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNS_G3dWorldPosToScrPos
+NNS_G3dWorldPosToScrPos: ; 0x020BB408
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x1c
+ mov r5, r1
+ mov r4, r2
+ ldr r6, _020BB594 ; =NNS_G3dGlb + 0x8
+ ldr r1, _020BB598 ; =NNS_G3dGlb + 0x4C
+ add r2, sp, #0x10
+ bl MTX_MultVec43
+ ldr r1, [sp, #0x14]
+ ldr r0, [r6, #0x1c]
+ ldr r2, [sp, #0x10]
+ smull r8, r7, r1, r0
+ ldr r0, [r6, #0xc]
+ ldr r3, [sp, #0x18]
+ smlal r8, r7, r2, r0
+ ldr r1, [r6, #0x2c]
+ ldr r0, [r6, #0x3c]
+ smlal r8, r7, r3, r1
+ mov r1, r8, lsr #0xc
+ orr r1, r1, r7, lsl #0x14
+ add r0, r1, r0
+ bl FX_InvAsync
+ ldr r2, [sp, #0x14]
+ ldr r1, [r6, #0x10]
+ ldr r0, [r6, #0x14]
+ smull lr, r8, r2, r1
+ smull r12, r9, r2, r0
+ ldr r1, [sp, #0x10]
+ ldr r3, [r6, #0x0]
+ ldr r0, [sp, #0x18]
+ smlal lr, r8, r1, r3
+ ldr r7, [r6, #0x20]
+ ldr r2, [r6, #0x30]
+ smlal lr, r8, r0, r7
+ mov r3, lr, lsr #0xc
+ orr r3, r3, r8, lsl #0x14
+ add r7, r3, r2
+ ldr r3, [r6, #0x4]
+ ldr r8, [r6, #0x24]
+ smlal r12, r9, r1, r3
+ smlal r12, r9, r0, r8
+ mov r0, r12, lsr #0xc
+ ldr r2, [r6, #0x34]
+ orr r0, r0, r9, lsl #0x14
+ add r6, r0, r2
+ bl FX_GetDivResultFx64c
+ mov r2, r7, asr #0x1f
+ umull r9, lr, r0, r7
+ mla lr, r0, r2, lr
+ mov r3, #0x80000000
+ mla lr, r1, r7, lr
+ adds r9, r9, r3
+ adc r2, lr, #0x0
+ add r2, r2, #0x1000
+ add r2, r2, r2, lsr #0x1f
+ mov r7, r2, asr #0x1
+ umull lr, r2, r0, r6
+ mov r12, r6, asr #0x1f
+ mla r2, r0, r12, r2
+ mla r2, r1, r6, r2
+ adds r3, lr, r3
+ adc r0, r2, #0x0
+ add r0, r0, #0x1000
+ add r0, r0, r0, lsr #0x1f
+ mov r8, #0x0
+ mov r6, r0, asr #0x1
+ cmp r7, #0x0
+ blt _020BB530
+ cmp r6, #0x0
+ blt _020BB530
+ cmp r7, #0x1000
+ bgt _020BB530
+ cmp r6, #0x1000
+ ble _020BB534
+_020BB530:
+ mvn r8, #0x0
+_020BB534:
+ add r0, sp, #0x0
+ add r1, sp, #0x4
+ add r2, sp, #0x8
+ add r3, sp, #0xc
+ bl NNS_G3dGlbGetViewPort
+ ldr r2, [sp, #0x0]
+ ldr r0, [sp, #0x8]
+ ldr r12, [sp, #0xc]
+ sub r0, r0, r2
+ mul r0, r7, r0
+ add r1, r0, #0x800
+ ldr r3, [sp, #0x4]
+ add r1, r2, r1, asr #0xc
+ sub r0, r12, r3
+ mul r0, r6, r0
+ str r1, [r5, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x800
+ rsb r1, r1, #0xbf
+ sub r1, r1, r0, asr #0xc
+ mov r0, r8
+ str r1, [r4, #0x0]
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020BB594: .word NNS_G3dGlb + 0x8
+_020BB598: .word NNS_G3dGlb + 0x4C
+ arm_func_end NNS_G3dWorldPosToScrPos
+
+ arm_func_start NNS_G3dResDefaultSetup
+NNS_G3dResDefaultSetup: ; 0x020BB59C
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r1, [r5, #0x0]
+ ldr r0, _020BB7C8 ; =0x30415642
+ cmp r1, r0
+ bhi _020BB5F4
+ cmp r1, r0
+ bhs _020BB7B0
+ ldr r0, _020BB7CC ; =0x30414D42
+ cmp r1, r0
+ bhi _020BB5E4
+ cmp r1, r0
+ bhs _020BB7B0
+ ldr r0, _020BB7D0 ; =0x30414342
+ cmp r1, r0
+ beq _020BB7B0
+ b _020BB7BC
+_020BB5E4:
+ ldr r0, _020BB7D4 ; =0x30415442
+ cmp r1, r0
+ beq _020BB7B0
+ b _020BB7BC
+_020BB5F4:
+ ldr r0, _020BB7D8 ; =0x30505442
+ cmp r1, r0
+ bhi _020BB618
+ cmp r1, r0
+ bhs _020BB7B0
+ ldr r0, _020BB7DC ; =0x30444D42
+ cmp r1, r0
+ beq _020BB624
+ b _020BB7BC
+_020BB618:
+ ldr r0, _020BB7E0 ; =0x30585442
+ cmp r1, r0
+ bne _020BB7BC
+_020BB624:
+ mov r11, #0x1
+ mov r0, r5
+ mov r9, r11
+ mov r8, r11
+ bl NNS_G3dGetTex
+ movs r4, r0
+ beq _020BB77C
+ bl NNS_G3dTexGetRequiredSize
+ mov r7, r0
+ mov r0, r4
+ bl NNS_G3dTex4x4GetRequiredSize
+ mov r6, r0
+ mov r0, r4
+ bl NNS_G3dPlttGetRequiredSize
+ mov r10, r0
+ cmp r7, #0x0
+ beq _020BB68C
+ ldr r0, _020BB7E4 ; =NNS_GfdDefaultFuncAllocTexVram
+ mov r1, #0x0
+ ldr r3, [r0, #0x0]
+ mov r0, r7
+ mov r2, r1
+ blx r3
+ movs r7, r0
+ moveq r11, #0x0
+ b _020BB690
+_020BB68C:
+ mov r7, #0x0
+_020BB690:
+ cmp r6, #0x0
+ beq _020BB6BC
+ ldr r1, _020BB7E4 ; =NNS_GfdDefaultFuncAllocTexVram
+ mov r0, r6
+ ldr r3, [r1, #0x0]
+ mov r1, #0x1
+ mov r2, #0x0
+ blx r3
+ movs r6, r0
+ moveq r9, #0x0
+ b _020BB6C0
+_020BB6BC:
+ mov r6, #0x0
+_020BB6C0:
+ cmp r10, #0x0
+ beq _020BB6F0
+ ldr r1, _020BB7E8 ; =NNS_GfdDefaultFuncAllocPlttVram
+ ldrh r2, [r4, #0x20]
+ ldr r3, [r1, #0x0]
+ mov r0, r10
+ and r1, r2, #0x8000
+ mov r2, #0x0
+ blx r3
+ movs r10, r0
+ moveq r8, #0x0
+ b _020BB6F4
+_020BB6F0:
+ mov r10, #0x0
+_020BB6F4:
+ cmp r11, #0x0
+ beq _020BB70C
+ cmp r9, #0x0
+ beq _020BB70C
+ cmp r8, #0x0
+ bne _020BB748
+_020BB70C:
+ ldr r1, _020BB7EC ; =NNS_GfdDefaultFuncFreePlttVram
+ mov r0, r10
+ ldr r1, [r1, #0x0]
+ blx r1
+ ldr r1, _020BB7F0 ; =NNS_GfdDefaultFuncFreeTexVram
+ mov r0, r6
+ ldr r1, [r1, #0x0]
+ blx r1
+ ldr r1, _020BB7F0 ; =NNS_GfdDefaultFuncFreeTexVram
+ mov r0, r7
+ ldr r1, [r1, #0x0]
+ blx r1
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r4-r11,pc}
+_020BB748:
+ mov r0, r4
+ mov r1, r7
+ mov r2, r6
+ bl NNS_G3dTexSetTexKey
+ mov r0, r4
+ mov r1, r10
+ bl NNS_G3dPlttSetPlttKey
+ mov r0, r4
+ mov r1, #0x1
+ bl NNS_G3dTexLoad
+ mov r0, r4
+ mov r1, #0x1
+ bl NNS_G3dPlttLoad
+_020BB77C:
+ ldr r1, [r5, #0x0]
+ ldr r0, _020BB7DC ; =0x30444D42
+ cmp r1, r0
+ bne _020BB7A4
+ mov r0, r5
+ bl NNS_G3dGetMdlSet
+ cmp r4, #0x0
+ beq _020BB7A4
+ mov r1, r4
+ bl NNS_G3dBindMdlSet
+_020BB7A4:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,pc}
+_020BB7B0:
+ add sp, sp, #0x4
+ mov r0, #0x1
+ ldmia sp!, {r4-r11,pc}
+_020BB7BC:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020BB7C8: .word 0x30415642
+_020BB7CC: .word 0x30414D42
+_020BB7D0: .word 0x30414342
+_020BB7D4: .word 0x30415442
+_020BB7D8: .word 0x30505442
+_020BB7DC: .word 0x30444D42
+_020BB7E0: .word 0x30585442
+_020BB7E4: .word NNS_GfdDefaultFuncAllocTexVram
+_020BB7E8: .word NNS_GfdDefaultFuncAllocPlttVram
+_020BB7EC: .word NNS_GfdDefaultFuncFreePlttVram
+_020BB7F0: .word NNS_GfdDefaultFuncFreeTexVram
+ arm_func_end NNS_G3dResDefaultSetup
+
+ arm_func_start NNS_G3dInit
+NNS_G3dInit: ; 0x020BB7F4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl G3X_Init
+ bl NNS_G3dGlbInit
+ ldr r1, _020BB820 ; =0x04000600
+ ldr r0, [r1, #0x0]
+ bic r0, r0, #0xc0000000
+ orr r0, r0, #0x80000000
+ str r0, [r1, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020BB820: .word 0x04000600
+ arm_func_end NNS_G3dInit
+
+ arm_func_start NNS_G3dGetCurrentMtx
+NNS_G3dGetCurrentMtx: ; 0x020BB824
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x40
+ mov r6, r0
+ mov r5, r1
+ bl NNS_G3dGeFlushBuffer
+ ldr r0, _020BB8B4 ; =0x04000440
+ mov r2, #0x0
+ ldr r1, _020BB8B8 ; =0x04000444
+ str r2, [r0, #0x0]
+ ldr r0, _020BB8BC ; =0x04000454
+ str r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ cmp r6, #0x0
+ beq _020BB87C
+ add r4, sp, #0x0
+_020BB860:
+ mov r0, r4
+ bl G3X_GetClipMtx
+ cmp r0, #0x0
+ bne _020BB860
+ add r0, sp, #0x0
+ mov r1, r6
+ bl MTX_Copy44To43_
+_020BB87C:
+ cmp r5, #0x0
+ beq _020BB894
+_020BB884:
+ mov r0, r5
+ bl G3X_GetVectorMtx
+ cmp r0, #0x0
+ bne _020BB884
+_020BB894:
+ ldr r1, _020BB8C0 ; =0x04000448
+ mov r2, #0x1
+ ldr r0, _020BB8B4 ; =0x04000440
+ str r2, [r1, #0x0]
+ mov r1, #0x2
+ str r1, [r0, #0x0]
+ add sp, sp, #0x40
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020BB8B4: .word 0x04000440
+_020BB8B8: .word 0x04000444
+_020BB8BC: .word 0x04000454
+_020BB8C0: .word 0x04000448
+ arm_func_end NNS_G3dGetCurrentMtx
diff --git a/arm9/asm/NNS_G3D_xsi.s b/arm9/asm/NNS_G3D_xsi.s
new file mode 100644
index 00000000..63787926
--- /dev/null
+++ b/arm9/asm/NNS_G3D_xsi.s
@@ -0,0 +1,477 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global calcTexMtx_
+calcTexMtx_: ; 0x021067F0
+ .word texmtxCalc_flag_
+ .word texmtxCalc_flagS_
+ .word texmtxCalc_flagR_
+ .word texmtxCalc_flagRS_
+ .word texmtxCalc_flagT_
+ .word texmtxCalc_flagTS_
+ .word texmtxCalc_flagTR_
+ .word texmtxCalc_flagTRS_
+
+ .section .text
+
+ arm_func_start NNSi_G3dSendTexSRTXsi
+NNSi_G3dSendTexSRTXsi: ; 0x020BFA9C
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x50
+ mov r4, r0
+ ldr r0, [r4, #0x0]
+ mov r3, #0x3
+ ands r0, r0, #0x8
+ ldrne r0, _020BFC1C ; =0x00101610
+ mov r2, #0x2
+ strne r0, [sp, #0x0]
+ ldreq r0, _020BFC20 ; =0x00101810
+ mov r1, #0x1000
+ streq r0, [sp, #0x0]
+ mov r0, #0x0
+ str r3, [sp, #0x4]
+ str r2, [sp, #0x48]
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x30]
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x28]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x1
+ strne r1, [r4, #0x1c]
+ ldrne r0, [r4, #0x1c]
+ strne r0, [r4, #0x18]
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x2
+ movne r0, #0x1000
+ strneh r0, [r4, #0x22]
+ movne r0, #0x0
+ strneh r0, [r4, #0x20]
+ ldr r0, [r4, #0x0]
+ ands r0, r0, #0x4
+ movne r0, #0x0
+ strne r0, [r4, #0x28]
+ ldrne r0, [r4, #0x28]
+ strne r0, [r4, #0x24]
+ ldr r1, [r4, #0x0]
+ ldr r0, _020BFC24 ; =calcTexMtx_
+ and r1, r1, #0x7
+ ldr r2, [r0, r1, lsl #0x2]
+ add r0, sp, #0x8
+ mov r1, r4
+ blx r2
+ ldr r3, [r4, #0x30]
+ cmp r3, #0x1000
+ beq _020BFBB0
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ smull r2, r0, r3, r0
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x8]
+ ldr r2, [r4, #0x30]
+ ldr r0, [sp, #0x38]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0xc]
+ ldr r1, [r4, #0x30]
+ smull r2, r0, r1, r0
+ mov r1, r2, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ str r1, [sp, #0x38]
+_020BFBB0:
+ ldr r3, [r4, #0x34]
+ cmp r3, #0x1000
+ beq _020BFC00
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ smull r2, r0, r3, r0
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r0, lsl #0x14
+ str r2, [sp, #0x18]
+ ldr r2, [r4, #0x34]
+ ldr r0, [sp, #0x3c]
+ smull r3, r1, r2, r1
+ mov r2, r3, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [sp, #0x1c]
+ ldr r1, [r4, #0x34]
+ smull r2, r0, r1, r0
+ mov r1, r2, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ str r1, [sp, #0x3c]
+_020BFC00:
+ add r1, sp, #0x0
+ ldr r0, [sp, #0x0]
+ add r1, r1, #0x4
+ mov r2, #0x12
+ bl NNS_G3dGeBufferOP_N
+ add sp, sp, #0x50
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020BFC1C: .word 0x00101610
+_020BFC20: .word 0x00101810
+_020BFC24: .word calcTexMtx_
+ arm_func_end NNSi_G3dSendTexSRTXsi
+
+ arm_func_start texmtxCalc_flagTRS_
+texmtxCalc_flagTRS_: ; 0x020BFC28
+ mov r2, #0x1000
+ str r2, [r0, #0x0]
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+ str r1, [r0, #0x10]
+ str r2, [r0, #0x14]
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end texmtxCalc_flagTRS_
+
+ arm_func_start texmtxCalc_flagTR_
+texmtxCalc_flagTR_: ; 0x020BFC4C
+ ldr r2, [r1, #0x18]
+ mov r3, #0x0
+ str r2, [r0, #0x0]
+ ldr r2, [r1, #0x1c]
+ str r2, [r0, #0x14]
+ str r3, [r0, #0x4]
+ str r3, [r0, #0x30]
+ ldrh r2, [r1, #0x2e]
+ ldr r1, [r1, #0x1c]
+ rsb r2, r2, #0x0
+ sub r1, r1, #0x1000
+ mul r1, r2, r1
+ mov r1, r1, lsl #0x4
+ str r1, [r0, #0x34]
+ str r3, [r0, #0x10]
+ bx lr
+ arm_func_end texmtxCalc_flagTR_
+
+ arm_func_start texmtxCalc_flagTS_
+texmtxCalc_flagTS_: ; 0x020BFC8C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ mov r6, r0
+ mov r4, r2, lsl #0xc
+ mov r7, r1, lsl #0xc
+ mov r0, r7
+ mov r1, r4
+ bl FX_DivAsync
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x0]
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x14]
+ bl FX_GetDivResult
+ ldrsh r2, [r5, #0x20]
+ mov r1, r7
+ mul r0, r2, r0
+ mov r2, r0, asr #0xc
+ mov r0, r4
+ str r2, [r6, #0x4]
+ bl FX_DivAsync
+ ldrh r1, [r5, #0x2c]
+ ldrsh r0, [r5, #0x20]
+ mul r0, r1, r0
+ mov r0, r0, lsl #0x4
+ str r0, [r6, #0x30]
+ ldrh r1, [r5, #0x2e]
+ ldrsh r0, [r5, #0x22]
+ rsb r1, r1, #0x0
+ sub r0, r0, #0x1000
+ mul r0, r1, r0
+ mov r0, r0, lsl #0x4
+ str r0, [r6, #0x34]
+ bl FX_GetDivResult
+ ldrsh r1, [r5, #0x20]
+ rsb r1, r1, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end texmtxCalc_flagTS_
+
+ arm_func_start texmtxCalc_flagT_
+texmtxCalc_flagT_: ; 0x020BFD38
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r9, r1
+ ldrh r2, [r9, #0x2c]
+ ldrh r1, [r9, #0x2e]
+ mov r10, r0
+ mov r8, r2, lsl #0xc
+ mov r11, r1, lsl #0xc
+ mov r0, r11
+ mov r1, r8
+ bl FX_DivAsync
+ ldrsh r3, [r9, #0x22]
+ ldr r0, [r9, #0x18]
+ ldrsh r7, [r9, #0x20]
+ ldr r5, [r9, #0x1c]
+ smull r2, r1, r0, r3
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ str r2, [r10, #0x0]
+ smull r2, r1, r5, r3
+ mov r4, r2, lsr #0xc
+ orr r4, r4, r1, lsl #0x14
+ smull r2, r1, r0, r7
+ mov r6, r2, lsr #0xc
+ orr r6, r6, r1, lsl #0x14
+ str r4, [r10, #0x14]
+ bl FX_GetDivResult
+ smull r2, r1, r5, r7
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ mul r0, r2, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x4]
+ mov r0, r8
+ mov r1, r11
+ bl FX_DivAsync
+ sub r0, r4, #0x1000
+ ldrh r1, [r9, #0x2c]
+ mul r2, r1, r6
+ mov r1, r2, lsl #0x4
+ str r1, [r10, #0x30]
+ ldrh r1, [r9, #0x2e]
+ rsb r1, r1, #0x0
+ mul r0, r1, r0
+ mov r0, r0, lsl #0x4
+ str r0, [r10, #0x34]
+ bl FX_GetDivResult
+ rsb r1, r6, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r10, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end texmtxCalc_flagT_
+
+ arm_func_start texmtxCalc_flagRS_
+texmtxCalc_flagRS_: ; 0x020BFE0C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, #0x1000
+ str r2, [r0, #0x0]
+ str r2, [r0, #0x14]
+ mov lr, #0x0
+ str lr, [r0, #0x4]
+ ldr r2, [r1, #0x24]
+ ldrh r3, [r1, #0x2c]
+ rsb r2, r2, #0x0
+ ldr r12, [r1, #0x28]
+ mul r2, r3, r2
+ mov r2, r2, lsl #0x4
+ str r2, [r0, #0x30]
+ ldrh r1, [r1, #0x2e]
+ rsb r2, r12, #0x0
+ rsb r1, r1, #0x0
+ mul r2, r1, r2
+ mov r1, r2, lsl #0x4
+ str r1, [r0, #0x34]
+ str lr, [r0, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end texmtxCalc_flagRS_
+
+ arm_func_start texmtxCalc_flagR_
+texmtxCalc_flagR_: ; 0x020BFE68
+ stmdb sp!, {r4,lr}
+ ldr r3, [r1, #0x18]
+ mov r2, #0x0
+ str r3, [r0, #0x0]
+ ldr r3, [r1, #0x1c]
+ str r3, [r0, #0x14]
+ str r2, [r0, #0x4]
+ ldr r12, [r1, #0x24]
+ ldr r3, [r1, #0x18]
+ ldr r4, [r1, #0x28]
+ smull lr, r3, r12, r3
+ mov r12, lr, lsr #0xc
+ orr r12, r12, r3, lsl #0x14
+ ldrh lr, [r1, #0x2c]
+ rsb r3, r12, #0x0
+ ldr r12, [r1, #0x1c]
+ rsb r4, r4, #0x0
+ mul r3, lr, r3
+ smull lr, r12, r4, r12
+ mov r3, r3, lsl #0x4
+ str r3, [r0, #0x30]
+ mov r4, lr, lsr #0xc
+ ldrh r3, [r1, #0x2e]
+ ldr r1, [r1, #0x1c]
+ orr r4, r4, r12, lsl #0x14
+ add r1, r1, r4
+ rsb r3, r3, #0x0
+ sub r1, r1, #0x1000
+ mul r1, r3, r1
+ mov r1, r1, lsl #0x4
+ str r1, [r0, #0x34]
+ str r2, [r0, #0x10]
+ ldmia sp!, {r4,pc}
+ arm_func_end texmtxCalc_flagR_
+
+ arm_func_start texmtxCalc_flagS_
+texmtxCalc_flagS_: ; 0x020BFEEC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r1
+ ldrh r2, [r5, #0x2c]
+ ldrh r1, [r5, #0x2e]
+ mov r6, r0
+ mov r4, r2, lsl #0xc
+ mov r7, r1, lsl #0xc
+ mov r0, r7
+ mov r1, r4
+ bl FX_DivAsync
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x0]
+ ldrsh r0, [r5, #0x22]
+ str r0, [r6, #0x14]
+ bl FX_GetDivResult
+ ldrsh r2, [r5, #0x20]
+ mov r1, r7
+ mul r0, r2, r0
+ mov r2, r0, asr #0xc
+ mov r0, r4
+ str r2, [r6, #0x4]
+ bl FX_DivAsync
+ ldrsh lr, [r5, #0x20]
+ ldr r4, [r5, #0x28]
+ ldrsh r0, [r5, #0x22]
+ ldr r12, [r5, #0x24]
+ smull r3, r2, r4, lr
+ smlal r3, r2, r12, r0
+ smull r1, r0, r4, r0
+ mov r3, r3, lsr #0xc
+ orr r3, r3, r2, lsl #0x14
+ sub r4, lr, r3
+ smull r3, r2, r12, lr
+ subs r1, r3, r1
+ sbc r0, r2, r0
+ ldrh r2, [r5, #0x2c]
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r0, lsl #0x14
+ mul r0, r2, r4
+ mov r0, r0, lsl #0x4
+ str r0, [r6, #0x30]
+ ldrsh r0, [r5, #0x22]
+ ldrh r2, [r5, #0x2e]
+ add r0, r0, r1
+ rsb r1, r2, #0x0
+ sub r0, r0, #0x1000
+ mul r0, r1, r0
+ mov r0, r0, lsl #0x4
+ str r0, [r6, #0x34]
+ bl FX_GetDivResult
+ ldrsh r1, [r5, #0x20]
+ rsb r1, r1, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r6, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ arm_func_end texmtxCalc_flagS_
+
+ arm_func_start texmtxCalc_flag_
+texmtxCalc_flag_: ; 0x020BFFD4
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldrh r2, [r6, #0x2c]
+ ldrh r1, [r6, #0x2e]
+ mov r7, r0
+ mov r10, r2, lsl #0xc
+ mov r11, r1, lsl #0xc
+ mov r0, r11
+ mov r1, r10
+ bl FX_DivAsync
+ ldrsh r3, [r6, #0x22]
+ ldr r0, [r6, #0x18]
+ ldrsh r9, [r6, #0x20]
+ smull r2, r1, r0, r3
+ mov r2, r2, lsr #0xc
+ ldr r8, [r6, #0x1c]
+ orr r2, r2, r1, lsl #0x14
+ str r2, [r7, #0x0]
+ smull r2, r1, r8, r3
+ mov r4, r2, lsr #0xc
+ orr r4, r4, r1, lsl #0x14
+ smull r2, r1, r0, r9
+ mov r5, r2, lsr #0xc
+ orr r5, r5, r1, lsl #0x14
+ str r4, [r7, #0x14]
+ bl FX_GetDivResult
+ smull r2, r1, r8, r9
+ mov r2, r2, lsr #0xc
+ orr r2, r2, r1, lsl #0x14
+ mul r0, r2, r0
+ mov r0, r0, asr #0xc
+ str r0, [r7, #0x4]
+ mov r0, r10
+ mov r1, r11
+ bl FX_DivAsync
+ ldr lr, [r6, #0x1c]
+ ldrsh r2, [r6, #0x20]
+ ldr r8, [r6, #0x24]
+ ldr r0, [r6, #0x28]
+ smull r10, r9, r8, r2
+ ldrh r1, [r6, #0x2c]
+ smull r3, r2, r0, r2
+ ldrsh r12, [r6, #0x22]
+ str r1, [sp, #0x0]
+ mov r11, lr, asr #0x1f
+ smlal r3, r2, r8, r12
+ smull r8, r12, r0, r12
+ subs r8, r10, r8
+ sbc r0, r9, r12
+ mov r9, r8, lsr #0xc
+ mov r12, r3, lsr #0xc
+ orr r9, r9, r0, lsl #0x14
+ mov r3, r2, asr #0xc
+ orr r12, r12, r2, lsl #0x14
+ umull r10, r2, r9, lr
+ mla r2, r9, r11, r2
+ mov r8, r0, asr #0xc
+ mla r2, r8, lr, r2
+ ldr r1, [r6, #0x18]
+ mov r8, r10, lsr #0xc
+ orr r8, r8, r2, lsl #0x14
+ add r2, r4, r8
+ mov r0, r1, asr #0x1f
+ umull r8, r4, r12, r1
+ mla r4, r12, r0, r4
+ mla r4, r3, r1, r4
+ mov r0, r8, lsr #0xc
+ orr r0, r0, r4, lsl #0x14
+ sub r1, r5, r0
+ ldr r0, [sp, #0x0]
+ sub r2, r2, #0x1000
+ mul r1, r0, r1
+ mov r0, r1, lsl #0x4
+ str r0, [r7, #0x30]
+ ldrh r0, [r6, #0x2e]
+ rsb r0, r0, #0x0
+ mul r1, r0, r2
+ mov r0, r1, lsl #0x4
+ str r0, [r7, #0x34]
+ bl FX_GetDivResult
+ rsb r1, r5, #0x0
+ mul r0, r1, r0
+ mov r0, r0, asr #0xc
+ str r0, [r7, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+ arm_func_end texmtxCalc_flag_
diff --git a/arm9/asm/NNS_GFD_gfd_frameplttvr.s b/arm9/asm/NNS_GFD_gfd_frameplttvr.s
new file mode 100644
index 00000000..63d32aec
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_frameplttvr.s
@@ -0,0 +1,165 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global s_managerState_
+s_managerState_: ; 0x021CCD4C
+ .space 0xc
+
+ .section .text
+
+ arm_func_start NNS_GfdResetFrmPlttVramState
+NNS_GfdResetFrmPlttVramState: ; 0x020AEC60
+ ldr r0, _020AEC78 ; =s_managerState_
+ mov r2, #0x0
+ ldr r1, [r0, #0x8]
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+ bx lr
+ .balign 4
+_020AEC78: .word s_managerState_
+ arm_func_end NNS_GfdResetFrmPlttVramState
+
+ arm_func_start NNS_GfdSetFrmPlttVramState
+NNS_GfdSetFrmPlttVramState: ; 0x020AEC7C
+ ldr r2, [r0, #0x0]
+ ldr r1, _020AEC94 ; =s_managerState_
+ str r2, [r1, #0x0]
+ ldr r0, [r0, #0x4]
+ str r0, [r1, #0x4]
+ bx lr
+ .balign 4
+_020AEC94: .word s_managerState_
+ arm_func_end NNS_GfdSetFrmPlttVramState
+
+ arm_func_start NNS_GfdGetFrmPlttVramState
+NNS_GfdGetFrmPlttVramState: ; 0x020AEC98
+ ldr r1, _020AECB0 ; =s_managerState_
+ ldr r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ ldr r1, [r1, #0x4]
+ str r1, [r0, #0x4]
+ bx lr
+ .balign 4
+_020AECB0: .word s_managerState_
+ arm_func_end NNS_GfdGetFrmPlttVramState
+
+ arm_func_start NNS_GfdFreeFrmPlttVram
+NNS_GfdFreeFrmPlttVram: ; 0x020AECB4
+ mov r0, #0x0
+ bx lr
+ arm_func_end NNS_GfdFreeFrmPlttVram
+
+ arm_func_start NNS_GfdAllocFrmPlttVram
+NNS_GfdAllocFrmPlttVram: ; 0x020AECBC
+ stmdb sp!, {r4,lr}
+ cmp r0, #0x0
+ moveq r0, #0x8
+ addne r0, r0, #0x7
+ ldr ip, _020AEDE8 ; =0x0007FFF8
+ bicne r0, r0, #0x7
+ cmp r0, r12
+ mov r3, #0x0
+ movcs r0, #0x0
+ ldmcsia sp!, {r4,pc}
+ cmp r2, #0x1
+ bne _020AED64
+ ldr r2, _020AEDEC ; =s_managerState_
+ cmp r1, #0x0
+ ldr r12, [r2, #0x0]
+ andne r2, r12, #0x7
+ rsbne r2, r2, #0x8
+ andne r4, r2, #0x7
+ andeq r2, r12, #0xf
+ rsbeq r2, r2, #0x10
+ andeq r4, r2, #0xf
+ ldr r2, _020AEDEC ; =s_managerState_
+ add lr, r0, r4
+ ldr r2, [r2, #0x4]
+ sub r2, r2, r12
+ cmp r2, lr
+ blo _020AED5C
+ cmp r1, #0x0
+ add r1, r12, lr
+ beq _020AED40
+ cmp r1, #0x10000
+ movhi r12, #0x0
+ bhi _020AEDCC
+_020AED40:
+ ldr r1, _020AEDEC ; =s_managerState_
+ add r3, r12, r4
+ ldr r2, [r1, #0x0]
+ mov r12, #0x1
+ add r2, r2, lr
+ str r2, [r1, #0x0]
+ b _020AEDCC
+_020AED5C:
+ mov r12, #0x0
+ b _020AEDCC
+_020AED64:
+ ldr r2, _020AEDEC ; =s_managerState_
+ ldr r12, [r2, #0x4]
+ cmp r12, r0
+ blo _020AEDC8
+ sub r2, r12, r0
+ cmp r1, #0x0
+ andne r4, r2, #0x7
+ andeq r4, r2, #0xf
+ ldr r2, _020AEDEC ; =s_managerState_
+ add lr, r0, r4
+ ldr r2, [r2, #0x0]
+ sub r2, r12, r2
+ cmp r2, lr
+ blo _020AEDC8
+ cmp r1, #0x0
+ beq _020AEDB0
+ cmp r12, #0x10000
+ movhi r12, #0x0
+ bhi _020AEDCC
+_020AEDB0:
+ ldr r1, _020AEDEC ; =s_managerState_
+ mov r12, #0x1
+ ldr r2, [r1, #0x4]
+ sub r3, r2, lr
+ str r3, [r1, #0x4]
+ b _020AEDCC
+_020AEDC8:
+ mov r12, #0x0
+_020AEDCC:
+ cmp r12, #0x0
+ ldrne r1, _020AEDF0 ; =0x0000FFFF
+ movne r2, r0, lsr #0x3
+ andne r0, r1, r3, lsr #0x3
+ orrne r0, r0, r2, lsl #0x10
+ moveq r0, #0x0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020AEDE8: .word 0x0007FFF8
+_020AEDEC: .word s_managerState_
+_020AEDF0: .word 0x0000FFFF
+ arm_func_end NNS_GfdAllocFrmPlttVram
+
+ arm_func_start NNS_GfdInitFrmPlttVramManager
+NNS_GfdInitFrmPlttVramManager: ; 0x020AEDF4
+ stmdb sp!, {r4,lr}
+ ldr r2, _020AEE2C ; =s_managerState_
+ mov r4, r1
+ str r0, [r2, #0x8]
+ bl NNS_GfdResetFrmPlttVramState
+ cmp r4, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r3, _020AEE30 ; =NNS_GfdAllocFrmPlttVram
+ ldr r1, _020AEE34 ; =NNS_GfdDefaultFuncAllocPlttVram
+ ldr r2, _020AEE38 ; =NNS_GfdFreeFrmPlttVram
+ ldr r0, _020AEE3C ; =NNS_GfdDefaultFuncFreePlttVram
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020AEE2C: .word s_managerState_
+_020AEE30: .word NNS_GfdAllocFrmPlttVram
+_020AEE34: .word NNS_GfdDefaultFuncAllocPlttVram
+_020AEE38: .word NNS_GfdFreeFrmPlttVram
+_020AEE3C: .word NNS_GfdDefaultFuncFreePlttVram
+ arm_func_end NNS_GfdInitFrmPlttVramManager
diff --git a/arm9/asm/NNS_GFD_gfd_frametexvra.s b/arm9/asm/NNS_GFD_gfd_frametexvra.s
new file mode 100644
index 00000000..6cc4da87
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_frametexvra.s
@@ -0,0 +1,316 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global tex4x4SearchArray_
+tex4x4SearchArray_: ; 0x021064C8
+ .word vramRegions_
+ .word vramRegions_ + 0x48
+
+ .global texNrmSearchArray_
+texNrmSearchArray_: ; 0x021064D0
+ .word vramRegions_ + 0x60
+ .word vramRegions_ + 0x48
+ .word vramRegions_
+ .word vramRegions_ + 0x30
+ .word vramRegions_ + 0x18
+
+ .global vramRegions_
+vramRegions_: ; 0x021064E4
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+ .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00
+
+ .section .bss
+
+ .global frmExVramMan_
+frmExVramMan_: ; 0x021CCD48
+ .space 0x4
+
+ .section .text
+
+ arm_func_start NNS_GfdSetFrmTexVramState
+NNS_GfdSetFrmTexVramState: ; 0x020AE8CC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, #0x0
+ ldr r3, _020AE914 ; =vramRegions_
+ mov r12, lr
+ mov r2, #0x1
+_020AE8E4:
+ ldr r1, [r0, r12, lsl #0x2]
+ add lr, lr, #0x1
+ str r1, [r3, #0x0]
+ ldr r1, [r0, r2, lsl #0x2]
+ cmp lr, #0x5
+ str r1, [r3, #0x4]
+ add r12, r12, #0x2
+ add r3, r3, #0x18
+ add r2, r2, #0x2
+ blt _020AE8E4
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020AE914: .word vramRegions_
+ arm_func_end NNS_GfdSetFrmTexVramState
+
+ arm_func_start NNS_GfdGetFrmTexVramState
+NNS_GfdGetFrmTexVramState: ; 0x020AE918
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov lr, #0x0
+ ldr ip, _020AE960 ; =vramRegions_
+ mov r3, lr
+ mov r2, #0x1
+_020AE930:
+ ldr r1, [r12, #0x0]
+ add lr, lr, #0x1
+ str r1, [r0, r3, lsl #0x2]
+ ldr r1, [r12, #0x4]
+ cmp lr, #0x5
+ str r1, [r0, r2, lsl #0x2]
+ add r12, r12, #0x18
+ add r3, r3, #0x2
+ add r2, r2, #0x2
+ blt _020AE930
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020AE960: .word vramRegions_
+ arm_func_end NNS_GfdGetFrmTexVramState
+
+ arm_func_start NNS_GfdFreeFrmTexVram
+NNS_GfdFreeFrmTexVram: ; 0x020AE964
+ mov r0, #0x0
+ bx lr
+ arm_func_end NNS_GfdFreeFrmTexVram
+
+ arm_func_start NNS_GfdAllocFrmTexVram
+NNS_GfdAllocFrmTexVram: ; 0x020AE96C
+ stmdb sp!, {r4-r10,lr}
+ cmp r0, #0x0
+ moveq r7, #0x10
+ addne r0, r0, #0xf
+ bicne r7, r0, #0xf
+ ldr r0, _020AEADC ; =0x0007FFF0
+ cmp r7, r0
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r10,pc}
+ cmp r1, #0x0
+ beq _020AEA5C
+ mov lr, r7, lsr #0x1
+ mov r6, #0x0
+ ldr r2, _020AEAE0 ; =vramRegions_ + 0x30
+ ldr r3, _020AEAE4 ; =vramRegions_ + 0x18
+ ldr ip, _020AEAE8 ; =tex4x4SearchArray_
+ mov r0, r6
+_020AE9B0:
+ ldr r5, [r12, r6, lsl #0x2]
+ ldr r4, [r5, #0x8]
+ cmp r4, #0x0
+ beq _020AEA48
+ ldr r9, [r5, #0x4]
+ ldr r4, [r5, #0x0]
+ sub r4, r9, r4
+ cmp r4, r7
+ blo _020AEA48
+ ldrh r4, [r5, #0x10]
+ cmp r4, #0x0
+ beq _020AE9EC
+ cmp r4, #0x3
+ beq _020AE9F4
+ b _020AE9FC
+_020AE9EC:
+ mov r4, r3
+ b _020AEA00
+_020AE9F4:
+ mov r4, r2
+ b _020AEA00
+_020AE9FC:
+ mov r4, r0
+_020AEA00:
+ ldr r9, [r4, #0x8]
+ cmp r9, #0x0
+ beq _020AEA48
+ ldr r10, [r4, #0x4]
+ ldr r9, [r4, #0x0]
+ sub r9, r10, r9
+ cmp r9, lr
+ blo _020AEA48
+ ldr r3, [r5, #0x0]
+ mov r0, #0x1
+ add r2, r3, r7
+ str r2, [r5, #0x0]
+ ldr r2, [r4, #0x0]
+ add r2, r2, lr
+ str r2, [r4, #0x0]
+ ldr r2, [r5, #0x14]
+ add r8, r3, r2
+ b _020AEAB8
+_020AEA48:
+ add r6, r6, #0x1
+ cmp r6, #0x2
+ blt _020AE9B0
+ mov r0, #0x0
+ b _020AEAB8
+_020AEA5C:
+ ldr r3, _020AEAEC ; =texNrmSearchArray_
+ mov r5, #0x0
+_020AEA64:
+ ldr r4, [r3, r5, lsl #0x2]
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ beq _020AEAA8
+ ldr r2, [r4, #0x4]
+ ldr r0, [r4, #0x0]
+ sub r0, r2, r0
+ cmp r0, r7
+ blo _020AEAA8
+ ldr r2, [r4, #0x4]
+ mov r0, #0x1
+ sub r2, r2, r7
+ str r2, [r4, #0x4]
+ ldr r3, [r4, #0x4]
+ ldr r2, [r4, #0x14]
+ add r8, r3, r2
+ b _020AEAB8
+_020AEAA8:
+ add r5, r5, #0x1
+ cmp r5, #0x5
+ blt _020AEA64
+ mov r0, #0x0
+_020AEAB8:
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r10,pc}
+ ldr r0, _020AEAF0 ; =0x0000FFFF
+ mov r2, r7, lsr #0x4
+ and r0, r0, r8, lsr #0x3
+ orr r0, r0, r2, lsl #0x10
+ orr r0, r0, r1, lsl #0x1f
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020AEADC: .word 0x0007FFF0
+_020AEAE0: .word vramRegions_ + 0x30
+_020AEAE4: .word vramRegions_ + 0x18
+_020AEAE8: .word tex4x4SearchArray_
+_020AEAEC: .word texNrmSearchArray_
+_020AEAF0: .word 0x0000FFFF
+ arm_func_end NNS_GfdAllocFrmTexVram
+
+ arm_func_start NNS_GfdResetFrmTexVramState
+NNS_GfdResetFrmTexVramState: ; 0x020AEAF4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r0, _020AEB68 ; =frmExVramMan_
+ mov r6, #0x0
+ ldrh r7, [r0, #0x0]
+ ldr r5, _020AEB6C ; =vramRegions_
+ mov lr, r6
+ cmp r7, #0x1
+ addhi r7, r7, #0x1
+ mov r1, r6
+ mov r3, r6
+ mov r4, #0x1
+ mov r0, #0x20000
+ mov r2, #0x10000
+_020AEB2C:
+ cmp r6, r7
+ strlt r4, [r5, #0x8]
+ strge lr, [r5, #0x8]
+ ldr r12, [r5, #0xc]
+ add r6, r6, #0x1
+ cmp r12, #0x0
+ strne r3, [r5, #0x0]
+ strne r2, [r5, #0x4]
+ streq r1, [r5, #0x0]
+ streq r0, [r5, #0x4]
+ cmp r6, #0x5
+ add r5, r5, #0x18
+ blt _020AEB2C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020AEB68: .word frmExVramMan_
+_020AEB6C: .word vramRegions_
+ arm_func_end NNS_GfdResetFrmTexVramState
+
+ arm_func_start NNS_GfdInitFrmTexVramManager
+NNS_GfdInitFrmTexVramManager: ; 0x020AEB70
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ cmp r5, #0x2
+ bhi _020AEBA8
+ mov r12, #0x1
+ mov r0, #0x4
+ mov r1, #0x3
+ mov r2, #0x2
+ mov r3, #0x0
+ str r12, [sp, #0x0]
+ bl NNSi_GfdSetTexNrmSearchArray
+ b _020AEBC4
+_020AEBA8:
+ mov r12, #0x1
+ mov r0, #0x4
+ mov r1, #0x3
+ mov r2, #0x0
+ mov r3, #0x2
+ str r12, [sp, #0x0]
+ bl NNSi_GfdSetTexNrmSearchArray
+_020AEBC4:
+ ldr r0, _020AEBFC ; =frmExVramMan_
+ strh r5, [r0, #0x0]
+ bl NNS_GfdResetFrmTexVramState
+ cmp r4, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r3, _020AEC00 ; =NNS_GfdAllocFrmTexVram
+ ldr r1, _020AEC04 ; =NNS_GfdDefaultFuncAllocTexVram
+ ldr r2, _020AEC08 ; =NNS_GfdFreeFrmTexVram
+ ldr r0, _020AEC0C ; =NNS_GfdDefaultFuncFreeTexVram
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AEBFC: .word frmExVramMan_
+_020AEC00: .word NNS_GfdAllocFrmTexVram
+_020AEC04: .word NNS_GfdDefaultFuncAllocTexVram
+_020AEC08: .word NNS_GfdFreeFrmTexVram
+_020AEC0C: .word NNS_GfdDefaultFuncFreeTexVram
+ arm_func_end NNS_GfdInitFrmTexVramManager
+
+ arm_func_start NNSi_GfdSetTexNrmSearchArray
+NNSi_GfdSetTexNrmSearchArray: ; 0x020AEC10
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr lr, [sp, #0x18]
+ ldr r6, _020AEC58 ; =vramRegions_
+ mov r12, #0x18
+ mla r7, r0, r12, r6
+ ldr r0, _020AEC5C ; =texNrmSearchArray_
+ mla r5, r1, r12, r6
+ mla r4, r2, r12, r6
+ mla r2, r3, r12, r6
+ mla r1, lr, r12, r6
+ str r7, [r0, #0x0]
+ str r5, [r0, #0x4]
+ str r4, [r0, #0x8]
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020AEC58: .word vramRegions_
+_020AEC5C: .word texNrmSearchArray_
+ arm_func_end NNSi_GfdSetTexNrmSearchArray
diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistp.s b/arm9/asm/NNS_GFD_gfd_linkedlistp.s
new file mode 100644
index 00000000..dd1af2f9
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_linkedlistp.s
@@ -0,0 +1,152 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+mgr_: ; 0x021CCD88
+ .space 0x14
+
+ .section .text
+
+ arm_func_start NNS_GfdResetLnkPlttVramState
+NNS_GfdResetLnkPlttVramState: ; 0x020AFA30
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020AFA78 ; =mgr_
+ ldr r1, [r0, #0x10]
+ ldr r0, [r0, #0xc]
+ mov r1, r1, lsr #0x4
+ bl NNSi_GfdInitLnkVramBlockPool
+ ldr r1, _020AFA78 ; =mgr_
+ str r0, [r1, #0x4]
+ mov r0, r1
+ bl NNSi_GfdInitLnkVramMan
+ ldr r0, _020AFA78 ; =mgr_
+ ldr r1, _020AFA7C ; =mgr_ + 0x4
+ ldr r3, [r0, #0x8]
+ mov r2, #0x0
+ bl NNSi_GfdAddNewFreeBlock
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020AFA78: .word mgr_
+_020AFA7C: .word mgr_ + 0x4
+ arm_func_end NNS_GfdResetLnkPlttVramState
+
+ arm_func_start NNS_GfdFreeLnkPlttVram
+NNS_GfdFreeLnkPlttVram: ; 0x020AFA80
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r1, #0x10000
+ rsb r2, r1, #0x0
+ ldr r1, _020AFAC8 ; =0x0000FFFF
+ and r2, r0, r2
+ and r12, r0, r1
+ mov r3, r2, lsr #0x10
+ ldr r0, _020AFACC ; =mgr_
+ ldr r1, _020AFAD0 ; =mgr_ + 0x4
+ mov r2, r12, lsl #0x3
+ mov r3, r3, lsl #0x3
+ bl NNSi_GfdFreeLnkVram
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020AFAC8: .word 0x0000FFFF
+_020AFACC: .word mgr_
+_020AFAD0: .word mgr_ + 0x4
+ arm_func_end NNS_GfdFreeLnkPlttVram
+
+ arm_func_start NNS_GfdAllocLnkPlttVram
+NNS_GfdAllocLnkPlttVram: ; 0x020AFAD4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x8
+ cmp r0, #0x0
+ moveq r4, #0x8
+ addne r0, r0, #0x7
+ bicne r4, r0, #0x7
+ ldr r0, _020AFB98 ; =0x0007FFF8
+ cmp r4, r0
+ addcs sp, sp, #0x8
+ movcs r0, #0x0
+ ldmcsia sp!, {r4,pc}
+ cmp r1, #0x0
+ beq _020AFB50
+ mov r12, #0x8
+ ldr r0, _020AFB9C ; =mgr_
+ ldr r1, _020AFBA0 ; =mgr_ + 0x4
+ add r2, sp, #0x4
+ mov r3, r4
+ str r12, [sp, #0x0]
+ bl NNSi_GfdAllocLnkVramAligned
+ ldr r2, [sp, #0x4]
+ add r1, r2, r4
+ cmp r1, #0x10000
+ bls _020AFB6C
+ ldr r0, _020AFB9C ; =mgr_
+ ldr r1, _020AFBA0 ; =mgr_ + 0x4
+ mov r3, r4
+ bl NNSi_GfdFreeLnkVram
+ add sp, sp, #0x8
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+_020AFB50:
+ ldr r0, _020AFB9C ; =mgr_
+ mov r12, #0x10
+ ldr r1, _020AFBA0 ; =mgr_ + 0x4
+ add r2, sp, #0x4
+ mov r3, r4
+ str r12, [sp, #0x0]
+ bl NNSi_GfdAllocLnkVramAligned
+_020AFB6C:
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r1, [sp, #0x4]
+ ldr r0, _020AFBA4 ; =0x0000FFFF
+ mov r2, r4, lsr #0x3
+ and r0, r0, r1, lsr #0x3
+ orr r0, r0, r2, lsl #0x10
+ add sp, sp, #0x8
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020AFB98: .word 0x0007FFF8
+_020AFB9C: .word mgr_
+_020AFBA0: .word mgr_ + 0x4
+_020AFBA4: .word 0x0000FFFF
+ arm_func_end NNS_GfdAllocLnkPlttVram
+
+ arm_func_start NNS_GfdInitLnkPlttVramManager
+NNS_GfdInitLnkPlttVramManager: ; 0x020AFBA8
+ stmdb sp!, {r4,lr}
+ ldr ip, _020AFBE8 ; =mgr_
+ mov r4, r3
+ str r0, [r12, #0x8]
+ str r1, [r12, #0xc]
+ str r2, [r12, #0x10]
+ bl NNS_GfdResetLnkPlttVramState
+ cmp r4, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r3, _020AFBEC ; =NNS_GfdAllocLnkPlttVram
+ ldr r1, _020AFBF0 ; =NNS_GfdDefaultFuncAllocPlttVram
+ ldr r2, _020AFBF4 ; =NNS_GfdFreeLnkPlttVram
+ ldr r0, _020AFBF8 ; =NNS_GfdDefaultFuncFreePlttVram
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020AFBE8: .word mgr_
+_020AFBEC: .word NNS_GfdAllocLnkPlttVram
+_020AFBF0: .word NNS_GfdDefaultFuncAllocPlttVram
+_020AFBF4: .word NNS_GfdFreeLnkPlttVram
+_020AFBF8: .word NNS_GfdDefaultFuncFreePlttVram
+ arm_func_end NNS_GfdInitLnkPlttVramManager
+
+ arm_func_start NNS_GfdGetLnkPlttVramManagerWorkSize
+NNS_GfdGetLnkPlttVramManagerWorkSize: ; 0x020AFBFC
+ mov r0, r0, lsl #0x4
+ bx lr
+ arm_func_end NNS_GfdGetLnkPlttVramManagerWorkSize
diff --git a/arm9/asm/NNS_GFD_gfd_linkedlistt.s b/arm9/asm/NNS_GFD_gfd_linkedlistt.s
new file mode 100644
index 00000000..6522bf3b
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_linkedlistt.s
@@ -0,0 +1,283 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global __LOCAL_LABEL__$7929
+__LOCAL_LABEL__$7929: ; 0x020FF864
+ .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .section .bss
+
+mgr_: ; 0x021CCD6C
+ .space 0x1C
+
+ .section .text
+
+ arm_func_start NNS_GfdResetLnkTexVramState
+NNS_GfdResetLnkTexVramState: ; 0x020AF6A4
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x30
+ ldr r6, _020AF884 ; =__LOCAL_LABEL__$7929
+ add r5, sp, #0x0
+ ldmia r6!, {r0-r3}
+ mov r12, r5
+ stmia r5!, {r0-r3}
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldr r4, _020AF888 ; =mgr_
+ ldmia r6, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr lr, [r4, #0x10]
+ ldr r1, [r4, #0xc]
+ add r0, lr, lr, lsr #0x1
+ mov r4, lr, lsr #0x1
+ sub r0, r1, r0
+ mov r3, #0x0
+_020AF6EC:
+ cmp r3, #0x0
+ beq _020AF6FC
+ cmp r3, #0x2
+ bne _020AF734
+_020AF6FC:
+ ldr r2, [r12, #0x0]
+ cmp r2, #0x0
+ beq _020AF734
+ cmp lr, #0x0
+ beq _020AF734
+ ldr r1, [r12, #0x8]
+ cmp r2, lr
+ movhi r2, lr
+ add r1, r1, r2
+ str r1, [r12, #0x8]
+ ldr r1, [r12, #0x0]
+ sub lr, lr, r2
+ sub r1, r1, r2
+ str r1, [r12, #0x0]
+_020AF734:
+ add r3, r3, #0x1
+ cmp r3, #0x4
+ add r12, r12, #0xc
+ blo _020AF6EC
+ ldr r1, [sp, #0xc]
+ add r5, sp, #0x0
+ sub r1, r1, r4
+ str r1, [sp, #0xc]
+ mov r3, #0x0
+_020AF758:
+ ldr r2, [r5, #0x0]
+ cmp r2, #0x0
+ beq _020AF790
+ cmp r0, #0x0
+ beq _020AF790
+ ldr r1, [r5, #0x4]
+ cmp r2, r0
+ movhi r2, r0
+ add r1, r1, r2
+ str r1, [r5, #0x4]
+ ldr r1, [r5, #0x0]
+ sub r0, r0, r2
+ sub r1, r1, r2
+ str r1, [r5, #0x0]
+_020AF790:
+ add r3, r3, #0x1
+ cmp r3, #0x4
+ add r5, r5, #0xc
+ blo _020AF758
+ ldr r0, _020AF888 ; =mgr_
+ bl NNSi_GfdInitLnkVramMan
+ ldr r0, _020AF88C ; =mgr_ + 0x4
+ bl NNSi_GfdInitLnkVramMan
+ ldr r0, _020AF888 ; =mgr_
+ ldr r1, [r0, #0x18]
+ ldr r0, [r0, #0x14]
+ mov r1, r1, lsr #0x4
+ bl NNSi_GfdInitLnkVramBlockPool
+ ldr r3, [sp, #0x8]
+ ldr r1, _020AF888 ; =mgr_
+ cmp r3, #0x0
+ str r0, [r1, #0x8]
+ beq _020AF7E8
+ ldr r0, _020AF88C ; =mgr_ + 0x4
+ ldr r1, _020AF890 ; =mgr_ + 0x8
+ mov r2, #0x0
+ bl NNSi_GfdAddNewFreeBlock
+_020AF7E8:
+ ldr r3, [sp, #0x4]
+ ldr r2, [sp, #0x8]
+ cmp r3, #0x0
+ beq _020AF804
+ ldr r0, _020AF888 ; =mgr_
+ ldr r1, _020AF890 ; =mgr_ + 0x8
+ bl NNSi_GfdAddNewFreeBlock
+_020AF804:
+ ldr r3, [sp, #0x20]
+ cmp r3, #0x0
+ beq _020AF820
+ ldr r0, _020AF88C ; =mgr_ + 0x4
+ ldr r1, _020AF890 ; =mgr_ + 0x8
+ mov r2, #0x40000
+ bl NNSi_GfdAddNewFreeBlock
+_020AF820:
+ ldr r3, [sp, #0x1c]
+ ldr r0, [sp, #0x20]
+ cmp r3, #0x0
+ add r2, r0, #0x40000
+ beq _020AF840
+ ldr r0, _020AF888 ; =mgr_
+ ldr r1, _020AF890 ; =mgr_ + 0x8
+ bl NNSi_GfdAddNewFreeBlock
+_020AF840:
+ ldr r3, [sp, #0x28]
+ cmp r3, #0x0
+ beq _020AF85C
+ ldr r0, _020AF888 ; =mgr_
+ ldr r1, _020AF890 ; =mgr_ + 0x8
+ mov r2, #0x60000
+ bl NNSi_GfdAddNewFreeBlock
+_020AF85C:
+ ldr r3, [sp, #0x10]
+ cmp r3, #0x0
+ addeq sp, sp, #0x30
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r0, _020AF888 ; =mgr_
+ ldr r1, _020AF890 ; =mgr_ + 0x8
+ add r2, r4, #0x20000
+ bl NNSi_GfdAddNewFreeBlock
+ add sp, sp, #0x30
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020AF884: .word __LOCAL_LABEL__$7929
+_020AF888: .word mgr_
+_020AF88C: .word mgr_ + 0x4
+_020AF890: .word mgr_ + 0x8
+ arm_func_end NNS_GfdResetLnkTexVramState
+
+ arm_func_start NNS_GfdFreeLnkTexVram
+NNS_GfdFreeLnkTexVram: ; 0x020AF894
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, _020AF908 ; =0x7FFF0000
+ ldr r1, _020AF90C ; =0x0000FFFF
+ and r2, r0, r2
+ and r3, r0, r1
+ mov r1, r2, lsr #0x10
+ and r0, r0, #0x80000000
+ mov r2, r3, lsl #0x3
+ movs r3, r1, lsl #0x4
+ mov r0, r0, lsr #0x1f
+ beq _020AF8FC
+ cmp r0, #0x0
+ beq _020AF8DC
+ ldr r0, _020AF910 ; =mgr_ + 0x4
+ ldr r1, _020AF914 ; =mgr_ + 0x8
+ bl NNSi_GfdFreeLnkVram
+ b _020AF8E8
+_020AF8DC:
+ ldr r0, _020AF918 ; =mgr_
+ ldr r1, _020AF914 ; =mgr_ + 0x8
+ bl NNSi_GfdFreeLnkVram
+_020AF8E8:
+ cmp r0, #0x0
+ movne r0, #0x0
+ add sp, sp, #0x4
+ moveq r0, #0x1
+ ldmia sp!, {pc}
+_020AF8FC:
+ mov r0, #0x2
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020AF908: .word 0x7FFF0000
+_020AF90C: .word 0x0000FFFF
+_020AF910: .word mgr_ + 0x4
+_020AF914: .word mgr_ + 0x8
+_020AF918: .word mgr_
+ arm_func_end NNS_GfdFreeLnkTexVram
+
+ arm_func_start NNS_GfdAllocLnkTexVram
+NNS_GfdAllocLnkTexVram: ; 0x020AF91C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ moveq r5, #0x10
+ addne r0, r0, #0xf
+ bicne r5, r0, #0xf
+ ldr r0, _020AF9B0 ; =0x0007FFF0
+ mov r4, r1
+ cmp r5, r0
+ addcs sp, sp, #0x4
+ movcs r0, #0x0
+ ldmcsia sp!, {r4-r5,pc}
+ cmp r4, #0x0
+ beq _020AF96C
+ ldr r0, _020AF9B4 ; =mgr_ + 0x4
+ ldr r1, _020AF9B8 ; =mgr_ + 0x8
+ add r2, sp, #0x0
+ mov r3, r5
+ bl NNSi_GfdAllocLnkVram
+ b _020AF980
+_020AF96C:
+ ldr r0, _020AF9BC ; =mgr_
+ ldr r1, _020AF9B8 ; =mgr_ + 0x8
+ add r2, sp, #0x0
+ mov r3, r5
+ bl NNSi_GfdAllocLnkVram
+_020AF980:
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r1, [sp, #0x0]
+ ldr r0, _020AF9C0 ; =0x0000FFFF
+ mov r2, r5, lsr #0x4
+ and r0, r0, r1, lsr #0x3
+ orr r0, r0, r2, lsl #0x10
+ orr r0, r0, r4, lsl #0x1f
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AF9B0: .word 0x0007FFF0
+_020AF9B4: .word mgr_ + 0x4
+_020AF9B8: .word mgr_ + 0x8
+_020AF9BC: .word mgr_
+_020AF9C0: .word 0x0000FFFF
+ arm_func_end NNS_GfdAllocLnkTexVram
+
+ arm_func_start NNS_GfdInitLnkTexVramManager
+NNS_GfdInitLnkTexVramManager: ; 0x020AF9C4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr ip, _020AFA14 ; =mgr_
+ str r0, [r12, #0xc]
+ str r1, [r12, #0x10]
+ str r2, [r12, #0x14]
+ str r3, [r12, #0x18]
+ bl NNS_GfdResetLnkTexVramState
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r3, _020AFA18 ; =NNS_GfdAllocLnkTexVram
+ ldr r1, _020AFA1C ; =NNS_GfdDefaultFuncAllocTexVram
+ ldr r2, _020AFA20 ; =NNS_GfdFreeLnkTexVram
+ ldr r0, _020AFA24 ; =NNS_GfdDefaultFuncFreeTexVram
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020AFA14: .word mgr_
+_020AFA18: .word NNS_GfdAllocLnkTexVram
+_020AFA1C: .word NNS_GfdDefaultFuncAllocTexVram
+_020AFA20: .word NNS_GfdFreeLnkTexVram
+_020AFA24: .word NNS_GfdDefaultFuncFreeTexVram
+ arm_func_end NNS_GfdInitLnkTexVramManager
+
+ arm_func_start NNS_GfdGetLnkTexVramManagerWorkSize
+NNS_GfdGetLnkTexVramManagerWorkSize: ; 0x020AFA28
+ mov r0, r0, lsl #0x4
+ bx lr
+ arm_func_end NNS_GfdGetLnkTexVramManagerWorkSize
diff --git a/arm9/asm/NNS_GFD_gfd_plttvramman.s b/arm9/asm/NNS_GFD_gfd_plttvramman.s
new file mode 100644
index 00000000..c869a9a1
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_plttvramman.s
@@ -0,0 +1,26 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global NNS_GfdDefaultFuncAllocPlttVram
+NNS_GfdDefaultFuncAllocPlttVram: ; 0x021064C0
+ .word AllocPlttVram_
+
+ .global NNS_GfdDefaultFuncFreePlttVram
+NNS_GfdDefaultFuncFreePlttVram: ; 0x021064C4
+ .word FreePlttVram_
+
+ .section .text
+
+ arm_func_start FreePlttVram_
+FreePlttVram_: ; 0x020AE8BC
+ mvn r0, #0x0
+ bx lr
+ arm_func_end FreePlttVram_
+
+ arm_func_start AllocPlttVram_
+AllocPlttVram_: ; 0x020AE8C4
+ mov r0, #0x0
+ bx lr
+ arm_func_end AllocPlttVram_
diff --git a/arm9/asm/NNS_GFD_gfd_texvramman.s b/arm9/asm/NNS_GFD_gfd_texvramman.s
new file mode 100644
index 00000000..d2f6c88f
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_texvramman.s
@@ -0,0 +1,26 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .data
+
+ .global NNS_GfdDefaultFuncAllocTexVram
+NNS_GfdDefaultFuncAllocTexVram: ; 0x021064B8
+ .word AllocTexVram_
+
+ .global NNS_GfdDefaultFuncFreeTexVram
+NNS_GfdDefaultFuncFreeTexVram: ; 0x021064BC
+ .word FreeTexVram_
+
+ .section .text
+
+ arm_func_start FreeTexVram_
+FreeTexVram_: ; 0x020AE8AC
+ mvn r0, #0x0
+ bx lr
+ arm_func_end FreeTexVram_
+
+ arm_func_start AllocTexVram_
+AllocTexVram_: ; 0x020AE8B4
+ mov r0, #0x0
+ bx lr
+ arm_func_end AllocTexVram_
diff --git a/arm9/asm/NNS_GFD_gfd_vramtransfe.s b/arm9/asm/NNS_GFD_gfd_vramtransfe.s
new file mode 100644
index 00000000..9e3a8863
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfd_vramtransfe.s
@@ -0,0 +1,592 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .rodata
+
+ .global transFunc$7934
+transFunc$7934: ; 0x020FF7D4
+ .word DoTransfer3dTex
+ .word DoTransfer3dTexPltt
+ .word DoTransfer3dClearImageColor
+ .word DoTransfer3dClearImageDepth
+ .word DoTransfer2dBG0CharMain
+ .word DoTransfer2dBG1CharMain
+ .word DoTransfer2dBG2CharMain
+ .word DoTransfer2dBG3CharMain
+ .word DoTransfer2dBG0ScrMain
+ .word DoTransfer2dBG1ScrMain
+ .word DoTransfer2dBG2ScrMain
+ .word DoTransfer2dBG3ScrMain
+ .word DoTransfer2dBG2BmpMain
+ .word DoTransfer2dBG3BmpMain
+ .word DoTransfer2dObjPlttMain
+ .word DoTransfer2dBGPlttMain
+ .word DoTransfer2dObjExtPlttMain
+ .word DoTransfer2dBGExtPlttMain
+ .word DoTransfer2dObjOamMain
+ .word DoTransfer2dObjCharMain
+ .word DoTransfer2dBG0CharSub
+ .word DoTransfer2dBG1CharSub
+ .word DoTransfer2dBG2CharSub
+ .word DoTransfer2dBG3CharSub
+ .word DoTransfer2dBG0ScrSub
+ .word DoTransfer2dBG1ScrSub
+ .word DoTransfer2dBG2ScrSub
+ .word DoTransfer2dBG3ScrSub
+ .word DoTransfer2dBG2BmpSub
+ .word DoTransfer2dBG3BmpSub
+ .word DoTransfer2dObjPlttSub
+ .word DoTransfer2dBGPlttSub
+ .word DoTransfer2dObjExtPlttSub
+ .word DoTransfer2dBGExtPlttSub
+ .word DoTransfer2dObjOamSub
+ .word DoTransfer2dObjCharSub
+ ; const initializer
+
+ .section .bss
+
+ .global s_VramTransferManager
+s_VramTransferManager: ; 0x021CCD58
+ .space 0x14
+
+ .section .text
+
+ arm_func_start NNS_GfdRegisterNewVramTransferTask
+NNS_GfdRegisterNewVramTransferTask: ; 0x020AEE40
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020AEEB4 ; =s_VramTransferManager
+ mov r9, r0
+ mov r0, r5
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ bl IsVramTransferTaskQueueFull_
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ movne r0, #0x0
+ ldmneia sp!, {r4-r9,pc}
+ mov r0, r5
+ bl NNSi_GfdGetEndVramTransferTaskQueue
+ mov r4, r0
+ str r9, [r4, #0x0]
+ str r7, [r4, #0x4]
+ str r8, [r4, #0x8]
+ mov r0, r5
+ str r6, [r4, #0xc]
+ bl NNSi_GfdPushVramTransferTaskQueue
+ ldr r2, [r5, #0x10]
+ ldr r1, [r4, #0xc]
+ mov r0, #0x1
+ add r1, r2, r1
+ str r1, [r5, #0x10]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020AEEB4: .word s_VramTransferManager
+ arm_func_end NNS_GfdRegisterNewVramTransferTask
+
+ arm_func_start NNS_GfdDoVramTransfer
+NNS_GfdDoVramTransfer: ; 0x020AEEB8
+ stmdb sp!, {r4-r6,lr}
+ ldr r6, _020AEF18 ; =s_VramTransferManager
+ mov r0, r6
+ bl NNSi_GfdGetFrontVramTransferTaskQueue
+ mov r5, r0
+ mov r0, r6
+ bl NNSi_GfdPopVramTransferTaskQueue
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ add r4, r6, #0x10
+_020AEEE0:
+ mov r0, r5
+ bl DoTransfer_
+ ldr r2, [r4, #0x0]
+ ldr r1, [r5, #0xc]
+ mov r0, r6
+ sub r1, r2, r1
+ str r1, [r4, #0x0]
+ bl NNSi_GfdGetFrontVramTransferTaskQueue
+ mov r5, r0
+ mov r0, r6
+ bl NNSi_GfdPopVramTransferTaskQueue
+ cmp r0, #0x0
+ bne _020AEEE0
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020AEF18: .word s_VramTransferManager
+ arm_func_end NNS_GfdDoVramTransfer
+
+ arm_func_start NNS_GfdInitVramTransferManager
+NNS_GfdInitVramTransferManager: ; 0x020AEF1C
+ ldr r2, _020AEF34 ; =s_VramTransferManager
+ ldr ip, _020AEF38 ; =ResetTaskQueue_
+ str r0, [r2, #0x0]
+ mov r0, r2
+ str r1, [r2, #0x4]
+ bx r12
+ .balign 4
+_020AEF34: .word s_VramTransferManager
+_020AEF38: .word ResetTaskQueue_
+ arm_func_end NNS_GfdInitVramTransferManager
+
+ arm_func_start NNSi_GfdPopVramTransferTaskQueue
+NNSi_GfdPopVramTransferTaskQueue: ; 0x020AEF3C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl IsVramTransferTaskQueueEmpty_
+ cmp r0, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ ldrh r1, [r4, #0x8]
+ mov r0, r4
+ bl GetNextIndex_
+ strh r0, [r4, #0x8]
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x1
+ sub r1, r1, #0x1
+ strh r1, [r4, #0xc]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_GfdPopVramTransferTaskQueue
+
+ arm_func_start NNSi_GfdGetEndVramTransferTaskQueue
+NNSi_GfdGetEndVramTransferTaskQueue: ; 0x020AEF78
+ ldrh r1, [r0, #0xa]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r1, lsl #0x4
+ bx lr
+ arm_func_end NNSi_GfdGetEndVramTransferTaskQueue
+
+ arm_func_start NNSi_GfdGetFrontVramTransferTaskQueue
+NNSi_GfdGetFrontVramTransferTaskQueue: ; 0x020AEF88
+ ldrh r1, [r0, #0x8]
+ ldr r0, [r0, #0x0]
+ add r0, r0, r1, lsl #0x4
+ bx lr
+ arm_func_end NNSi_GfdGetFrontVramTransferTaskQueue
+
+ arm_func_start NNSi_GfdPushVramTransferTaskQueue
+NNSi_GfdPushVramTransferTaskQueue: ; 0x020AEF98
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl IsVramTransferTaskQueueFull_
+ cmp r0, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ ldrh r1, [r4, #0xa]
+ mov r0, r4
+ bl GetNextIndex_
+ strh r0, [r4, #0xa]
+ ldrh r1, [r4, #0xc]
+ mov r0, #0x1
+ add r1, r1, #0x1
+ strh r1, [r4, #0xc]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_GfdPushVramTransferTaskQueue
+
+ arm_func_start ResetTaskQueue_
+ResetTaskQueue_: ; 0x020AEFD4
+ mov r2, #0x0
+ strh r2, [r0, #0xa]
+ ldrh r1, [r0, #0xa]
+ strh r1, [r0, #0x8]
+ strh r2, [r0, #0xc]
+ str r2, [r0, #0x10]
+ bx lr
+ arm_func_end ResetTaskQueue_
+
+ arm_func_start DoTransfer_
+DoTransfer_: ; 0x020AEFF0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r3, [r5, #0x0]
+ ldr r2, _020AF02C ; =transFunc$7934
+ ldr r0, [r5, #0x4]
+ ldr r1, [r5, #0xc]
+ ldr r4, [r2, r3, lsl #0x2]
+ bl DC_FlushRange
+ ldr r0, [r5, #0x4]
+ ldr r1, [r5, #0x8]
+ ldr r2, [r5, #0xc]
+ blx r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020AF02C: .word transFunc$7934
+ arm_func_end DoTransfer_
+DoTransfer2dObjCharSub:
+ ldr ip, _020AF038 ; =GXS_LoadOBJ
+ bx r12
+ .balign 4
+_020AF038: .word GXS_LoadOBJ
+ arm_func_end DoTransfer2dObjCharSub
+
+ arm_func_start DoTransfer2dObjOamSub
+DoTransfer2dObjOamSub: ; 0x020AF03C
+ ldr ip, _020AF044 ; =GXS_LoadOAM
+ bx r12
+ .balign 4
+_020AF044: .word GXS_LoadOAM
+ arm_func_end DoTransfer2dObjOamSub
+
+ arm_func_start DoTransfer2dBGExtPlttSub
+DoTransfer2dBGExtPlttSub: ; 0x020AF048
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl GXS_BeginLoadBGExtPltt
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl GXS_LoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end DoTransfer2dBGExtPlttSub
+
+ arm_func_start DoTransfer2dObjExtPlttSub
+DoTransfer2dObjExtPlttSub: ; 0x020AF074
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl GXS_BeginLoadOBJExtPltt
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl GXS_LoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end DoTransfer2dObjExtPlttSub
+
+ arm_func_start DoTransfer2dBGPlttSub
+DoTransfer2dBGPlttSub: ; 0x020AF0A0
+ ldr ip, _020AF0A8 ; =GXS_LoadBGPltt
+ bx r12
+ .balign 4
+_020AF0A8: .word GXS_LoadBGPltt
+ arm_func_end DoTransfer2dBGPlttSub
+
+ arm_func_start DoTransfer2dObjPlttSub
+DoTransfer2dObjPlttSub: ; 0x020AF0AC
+ ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt
+ bx r12
+ .balign 4
+_020AF0B4: .word GXS_LoadOBJPltt
+ arm_func_end DoTransfer2dObjPlttSub
+
+ arm_func_start DoTransfer2dBG3BmpSub
+DoTransfer2dBG3BmpSub: ; 0x020AF0B8
+ ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr
+ bx r12
+ .balign 4
+_020AF0C0: .word GXS_LoadBG3Scr
+ arm_func_end DoTransfer2dBG3BmpSub
+
+ arm_func_start DoTransfer2dBG2BmpSub
+DoTransfer2dBG2BmpSub: ; 0x020AF0C4
+ ldr ip, _020AF0CC ; =GXS_LoadBG2Scr
+ bx r12
+ .balign 4
+_020AF0CC: .word GXS_LoadBG2Scr
+ arm_func_end DoTransfer2dBG2BmpSub
+
+ arm_func_start DoTransfer2dBG3ScrSub
+DoTransfer2dBG3ScrSub: ; 0x020AF0D0
+ ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr
+ bx r12
+ .balign 4
+_020AF0D8: .word GXS_LoadBG3Scr
+ arm_func_end DoTransfer2dBG3ScrSub
+
+ arm_func_start DoTransfer2dBG2ScrSub
+DoTransfer2dBG2ScrSub: ; 0x020AF0DC
+ ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr
+ bx r12
+ .balign 4
+_020AF0E4: .word GXS_LoadBG2Scr
+ arm_func_end DoTransfer2dBG2ScrSub
+
+ arm_func_start DoTransfer2dBG1ScrSub
+DoTransfer2dBG1ScrSub: ; 0x020AF0E8
+ ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr
+ bx r12
+ .balign 4
+_020AF0F0: .word GXS_LoadBG1Scr
+ arm_func_end DoTransfer2dBG1ScrSub
+
+ arm_func_start DoTransfer2dBG0ScrSub
+DoTransfer2dBG0ScrSub: ; 0x020AF0F4
+ ldr ip, _020AF0FC ; =GXS_LoadBG0Scr
+ bx r12
+ .balign 4
+_020AF0FC: .word GXS_LoadBG0Scr
+ arm_func_end DoTransfer2dBG0ScrSub
+
+ arm_func_start DoTransfer2dBG3CharSub
+DoTransfer2dBG3CharSub: ; 0x020AF100
+ ldr ip, _020AF108 ; =GXS_LoadBG3Char
+ bx r12
+ .balign 4
+_020AF108: .word GXS_LoadBG3Char
+ arm_func_end DoTransfer2dBG3CharSub
+
+ arm_func_start DoTransfer2dBG2CharSub
+DoTransfer2dBG2CharSub: ; 0x020AF10C
+ ldr ip, _020AF114 ; =GXS_LoadBG2Char
+ bx r12
+ .balign 4
+_020AF114: .word GXS_LoadBG2Char
+ arm_func_end DoTransfer2dBG2CharSub
+
+ arm_func_start DoTransfer2dBG1CharSub
+DoTransfer2dBG1CharSub: ; 0x020AF118
+ ldr ip, _020AF120 ; =GXS_LoadBG1Char
+ bx r12
+ .balign 4
+_020AF120: .word GXS_LoadBG1Char
+ arm_func_end DoTransfer2dBG1CharSub
+
+ arm_func_start DoTransfer2dBG0CharSub
+DoTransfer2dBG0CharSub: ; 0x020AF124
+ ldr ip, _020AF12C ; =GXS_LoadBG0Char
+ bx r12
+ .balign 4
+_020AF12C: .word GXS_LoadBG0Char
+ arm_func_end DoTransfer2dBG0CharSub
+
+ arm_func_start DoTransfer2dObjCharMain
+DoTransfer2dObjCharMain: ; 0x020AF130
+ ldr ip, _020AF138 ; =GX_LoadOBJ
+ bx r12
+ .balign 4
+_020AF138: .word GX_LoadOBJ
+ arm_func_end DoTransfer2dObjCharMain
+
+ arm_func_start DoTransfer2dObjOamMain
+DoTransfer2dObjOamMain: ; 0x020AF13C
+ ldr ip, _020AF144 ; =GX_LoadOAM
+ bx r12
+ .balign 4
+_020AF144: .word GX_LoadOAM
+ arm_func_end DoTransfer2dObjOamMain
+
+ arm_func_start DoTransfer2dBGExtPlttMain
+DoTransfer2dBGExtPlttMain: ; 0x020AF148
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl GX_BeginLoadBGExtPltt
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl GX_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end DoTransfer2dBGExtPlttMain
+
+ arm_func_start DoTransfer2dObjExtPlttMain
+DoTransfer2dObjExtPlttMain: ; 0x020AF174
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl GX_BeginLoadOBJExtPltt
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl GX_LoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end DoTransfer2dObjExtPlttMain
+
+ arm_func_start DoTransfer2dBGPlttMain
+DoTransfer2dBGPlttMain: ; 0x020AF1A0
+ ldr ip, _020AF1A8 ; =GX_LoadBGPltt
+ bx r12
+ .balign 4
+_020AF1A8: .word GX_LoadBGPltt
+ arm_func_end DoTransfer2dBGPlttMain
+
+ arm_func_start DoTransfer2dObjPlttMain
+DoTransfer2dObjPlttMain: ; 0x020AF1AC
+ ldr ip, _020AF1B4 ; =GX_LoadOBJPltt
+ bx r12
+ .balign 4
+_020AF1B4: .word GX_LoadOBJPltt
+ arm_func_end DoTransfer2dObjPlttMain
+
+ arm_func_start DoTransfer2dBG3BmpMain
+DoTransfer2dBG3BmpMain: ; 0x020AF1B8
+ ldr ip, _020AF1C0 ; =GX_LoadBG3Scr
+ bx r12
+ .balign 4
+_020AF1C0: .word GX_LoadBG3Scr
+ arm_func_end DoTransfer2dBG3BmpMain
+
+ arm_func_start DoTransfer2dBG2BmpMain
+DoTransfer2dBG2BmpMain: ; 0x020AF1C4
+ ldr ip, _020AF1CC ; =GX_LoadBG2Scr
+ bx r12
+ .balign 4
+_020AF1CC: .word GX_LoadBG2Scr
+ arm_func_end DoTransfer2dBG2BmpMain
+
+ arm_func_start DoTransfer2dBG3ScrMain
+DoTransfer2dBG3ScrMain: ; 0x020AF1D0
+ ldr ip, _020AF1D8 ; =GX_LoadBG3Scr
+ bx r12
+ .balign 4
+_020AF1D8: .word GX_LoadBG3Scr
+ arm_func_end DoTransfer2dBG3ScrMain
+
+ arm_func_start DoTransfer2dBG2ScrMain
+DoTransfer2dBG2ScrMain: ; 0x020AF1DC
+ ldr ip, _020AF1E4 ; =GX_LoadBG2Scr
+ bx r12
+ .balign 4
+_020AF1E4: .word GX_LoadBG2Scr
+ arm_func_end DoTransfer2dBG2ScrMain
+
+ arm_func_start DoTransfer2dBG1ScrMain
+DoTransfer2dBG1ScrMain: ; 0x020AF1E8
+ ldr ip, _020AF1F0 ; =GX_LoadBG1Scr
+ bx r12
+ .balign 4
+_020AF1F0: .word GX_LoadBG1Scr
+ arm_func_end DoTransfer2dBG1ScrMain
+
+ arm_func_start DoTransfer2dBG0ScrMain
+DoTransfer2dBG0ScrMain: ; 0x020AF1F4
+ ldr ip, _020AF1FC ; =GX_LoadBG0Scr
+ bx r12
+ .balign 4
+_020AF1FC: .word GX_LoadBG0Scr
+ arm_func_end DoTransfer2dBG0ScrMain
+
+ arm_func_start DoTransfer2dBG3CharMain
+DoTransfer2dBG3CharMain: ; 0x020AF200
+ ldr ip, _020AF208 ; =GX_LoadBG3Char
+ bx r12
+ .balign 4
+_020AF208: .word GX_LoadBG3Char
+ arm_func_end DoTransfer2dBG3CharMain
+
+ arm_func_start DoTransfer2dBG2CharMain
+DoTransfer2dBG2CharMain: ; 0x020AF20C
+ ldr ip, _020AF214 ; =GX_LoadBG2Char
+ bx r12
+ .balign 4
+_020AF214: .word GX_LoadBG2Char
+ arm_func_end DoTransfer2dBG2CharMain
+
+ arm_func_start DoTransfer2dBG1CharMain
+DoTransfer2dBG1CharMain: ; 0x020AF218
+ ldr ip, _020AF220 ; =GX_LoadBG1Char
+ bx r12
+ .balign 4
+_020AF220: .word GX_LoadBG1Char
+ arm_func_end DoTransfer2dBG1CharMain
+
+ arm_func_start DoTransfer2dBG0CharMain
+DoTransfer2dBG0CharMain: ; 0x020AF224
+ ldr ip, _020AF22C ; =GX_LoadBG0Char
+ bx r12
+ .balign 4
+_020AF22C: .word GX_LoadBG0Char
+ arm_func_end DoTransfer2dBG0CharMain
+
+ arm_func_start DoTransfer3dClearImageDepth
+DoTransfer3dClearImageDepth: ; 0x020AF230
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r2
+ bl GX_BeginLoadClearImage
+ mov r0, r5
+ mov r1, r4
+ bl GX_LoadClearImageDepth
+ bl GX_EndLoadClearImage
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end DoTransfer3dClearImageDepth
+
+ arm_func_start DoTransfer3dClearImageColor
+DoTransfer3dClearImageColor: ; 0x020AF25C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r2
+ bl GX_BeginLoadClearImage
+ mov r0, r5
+ mov r1, r4
+ bl GX_LoadClearImageColor
+ bl GX_EndLoadClearImage
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ arm_func_end DoTransfer3dClearImageColor
+
+ arm_func_start DoTransfer3dTexPltt
+DoTransfer3dTexPltt: ; 0x020AF288
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl GX_BeginLoadTexPltt
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl GX_LoadTexPltt
+ bl GX_EndLoadTexPltt
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end DoTransfer3dTexPltt
+
+ arm_func_start DoTransfer3dTex
+DoTransfer3dTex: ; 0x020AF2B4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl GX_BeginLoadTex
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl GX_LoadTex
+ bl GX_EndLoadTex
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end DoTransfer3dTex
+
+ arm_func_start IsVramTransferTaskQueueEmpty_
+IsVramTransferTaskQueueEmpty_: ; 0x020AF2E0
+ ldrh r0, [r0, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+ arm_func_end IsVramTransferTaskQueueEmpty_
+
+ arm_func_start IsVramTransferTaskQueueFull_
+IsVramTransferTaskQueueFull_: ; 0x020AF2F4
+ ldrh r1, [r0, #0xc]
+ ldr r0, [r0, #0x4]
+ cmp r1, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+ arm_func_end IsVramTransferTaskQueueFull_
+
+ arm_func_start GetNextIndex_
+GetNextIndex_: ; 0x020AF30C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r0
+ add r0, r1, #0x1
+ ldr r1, [r2, #0x4]
+ bl _u32_div_f
+ mov r0, r1, lsl #0x10
+ mov r0, r0, lsr #0x10
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end GetNextIndex_
diff --git a/arm9/asm/NNS_GFD_gfdi_linkedlist.s b/arm9/asm/NNS_GFD_gfdi_linkedlist.s
new file mode 100644
index 00000000..125a146e
--- /dev/null
+++ b/arm9/asm/NNS_GFD_gfdi_linkedlist.s
@@ -0,0 +1,261 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_GfdFreeLnkVram
+NNSi_GfdFreeLnkVram: ; 0x020AF334
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x10
+ add r3, r2, r3
+ str r2, [sp, #0x0]
+ str r2, [sp, #0x8]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0xc]
+ ldr r3, [r0, #0x0]
+ add r12, sp, #0x0
+ cmp r3, #0x0
+ beq _020AF418
+ mov r6, #0x0
+_020AF364:
+ ldr r5, [r3, #0x0]
+ ldr r4, [r12, #0x4]
+ ldr r2, [r3, #0xc]
+ cmp r5, r4
+ bne _020AF3B8
+ ldr r4, [r3, #0x4]
+ add r4, r5, r4
+ str r4, [sp, #0xc]
+ ldr r4, [r3, #0x8]
+ cmp r4, #0x0
+ strne r2, [r4, #0xc]
+ streq r2, [r0, #0x0]
+ cmp r2, #0x0
+ strne r4, [r2, #0x8]
+ ldr r4, [r1, #0x0]
+ cmp r4, #0x0
+ strne r3, [r4, #0x8]
+ ldr r4, [r1, #0x0]
+ str r4, [r3, #0xc]
+ str r6, [r3, #0x8]
+ str r3, [r1, #0x0]
+_020AF3B8:
+ ldr r5, [r3, #0x0]
+ ldr lr, [r3, #0x4]
+ ldr r4, [r12, #0x0]
+ add lr, r5, lr
+ cmp r4, lr
+ bne _020AF40C
+ str r5, [sp, #0x8]
+ ldr r5, [r3, #0x8]
+ ldr r4, [r3, #0xc]
+ cmp r5, #0x0
+ strne r4, [r5, #0xc]
+ streq r4, [r0, #0x0]
+ cmp r4, #0x0
+ strne r5, [r4, #0x8]
+ ldr lr, [r1, #0x0]
+ cmp lr, #0x0
+ strne r3, [lr, #0x8]
+ ldr lr, [r1, #0x0]
+ str lr, [r3, #0xc]
+ str r6, [r3, #0x8]
+ str r3, [r1, #0x0]
+_020AF40C:
+ mov r3, r2
+ cmp r2, #0x0
+ bne _020AF364
+_020AF418:
+ ldr r4, [r1, #0x0]
+ cmp r4, #0x0
+ ldrne r2, [r4, #0xc]
+ strne r2, [r1, #0x0]
+ cmp r4, #0x0
+ addeq sp, sp, #0x10
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r2, [sp, #0x8]
+ mov r1, #0x0
+ str r2, [r4, #0x0]
+ ldr r3, [sp, #0xc]
+ ldr r2, [sp, #0x8]
+ sub r2, r3, r2
+ str r2, [r4, #0x4]
+ str r1, [r4, #0x8]
+ str r1, [r4, #0xc]
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ strne r4, [r1, #0x8]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x0
+ str r2, [r4, #0xc]
+ str r1, [r4, #0x8]
+ str r4, [r0, #0x0]
+ mov r0, #0x1
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end NNSi_GfdFreeLnkVram
+
+ arm_func_start NNSi_GfdAllocLnkVramAligned
+NNSi_GfdAllocLnkVramAligned: ; 0x020AF488
+ stmdb sp!, {r4-r10,lr}
+ ldr r4, [r0, #0x0]
+ ldr r9, [sp, #0x20]
+ cmp r4, #0x0
+ mov r5, #0x0
+ beq _020AF4EC
+ sub r12, r9, #0x1
+ mvn lr, r12
+_020AF4A8:
+ cmp r9, #0x1
+ ldrls r8, [r4, #0x0]
+ movls r6, r5
+ movls r7, r3
+ bls _020AF4D0
+ ldr r7, [r4, #0x0]
+ add r6, r7, r12
+ and r8, lr, r6
+ sub r6, r8, r7
+ add r7, r3, r6
+_020AF4D0:
+ ldr r10, [r4, #0x4]
+ cmp r10, r7
+ movcs r5, r4
+ bhs _020AF4EC
+ ldr r4, [r4, #0xc]
+ cmp r4, #0x0
+ bne _020AF4A8
+_020AF4EC:
+ cmp r5, #0x0
+ beq _020AF5B8
+ cmp r6, #0x0
+ beq _020AF54C
+ ldr r9, [r1, #0x0]
+ cmp r9, #0x0
+ ldrne r3, [r9, #0xc]
+ strne r3, [r1, #0x0]
+ cmp r9, #0x0
+ beq _020AF5B8
+ ldr r4, [r5, #0x0]
+ mov r3, #0x0
+ str r4, [r9, #0x0]
+ str r6, [r9, #0x4]
+ str r3, [r9, #0x8]
+ str r3, [r9, #0xc]
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ strne r9, [r3, #0x8]
+ ldr r4, [r0, #0x0]
+ mov r3, #0x0
+ str r4, [r9, #0xc]
+ str r3, [r9, #0x8]
+ str r9, [r0, #0x0]
+_020AF54C:
+ ldr r3, [r5, #0x4]
+ sub r3, r3, r7
+ str r3, [r5, #0x4]
+ ldr r3, [r5, #0x0]
+ add r3, r3, r7
+ str r3, [r5, #0x0]
+ ldr r3, [r5, #0x4]
+ cmp r3, #0x0
+ bne _020AF5AC
+ ldr r4, [r5, #0x8]
+ ldr r3, [r5, #0xc]
+ cmp r4, #0x0
+ strne r3, [r4, #0xc]
+ streq r3, [r0, #0x0]
+ cmp r3, #0x0
+ strne r4, [r3, #0x8]
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ strne r5, [r0, #0x8]
+ ldr r3, [r1, #0x0]
+ mov r0, #0x0
+ str r3, [r5, #0xc]
+ str r0, [r5, #0x8]
+ str r5, [r1, #0x0]
+_020AF5AC:
+ str r8, [r2, #0x0]
+ mov r0, #0x1
+ ldmia sp!, {r4-r10,pc}
+_020AF5B8:
+ mov r0, #0x0
+ str r0, [r2, #0x0]
+ ldmia sp!, {r4-r10,pc}
+ arm_func_end NNSi_GfdAllocLnkVramAligned
+
+ arm_func_start NNSi_GfdAllocLnkVram
+NNSi_GfdAllocLnkVram: ; 0x020AF5C4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r12, #0x0
+ str r12, [sp, #0x0]
+ bl NNSi_GfdAllocLnkVramAligned
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNSi_GfdAllocLnkVram
+
+ arm_func_start NNSi_GfdAddNewFreeBlock
+NNSi_GfdAddNewFreeBlock: ; 0x020AF5E0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr lr, [r1, #0x0]
+ cmp lr, #0x0
+ ldrne r12, [lr, #0xc]
+ strne r12, [r1, #0x0]
+ cmp lr, #0x0
+ beq _020AF640
+ str r2, [lr, #0x0]
+ str r3, [lr, #0x4]
+ mov r1, #0x0
+ str r1, [lr, #0x8]
+ str r1, [lr, #0xc]
+ ldr r1, [r0, #0x0]
+ add sp, sp, #0x4
+ cmp r1, #0x0
+ strne lr, [r1, #0x8]
+ ldr r2, [r0, #0x0]
+ mov r1, #0x0
+ str r2, [lr, #0xc]
+ str r1, [lr, #0x8]
+ str lr, [r0, #0x0]
+ mov r0, #0x1
+ ldmia sp!, {pc}
+_020AF640:
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ arm_func_end NNSi_GfdAddNewFreeBlock
+
+ arm_func_start NNSi_GfdInitLnkVramBlockPool
+NNSi_GfdInitLnkVramBlockPool: ; 0x020AF64C
+ stmdb sp!, {r4,lr}
+ subs lr, r1, #0x1
+ mov r2, #0x0
+ beq _020AF684
+ mov r4, r0
+_020AF660:
+ add r12, r2, #0x1
+ add r2, r0, r2, lsl #0x4
+ add r3, r0, r12, lsl #0x4
+ str r3, [r2, #0xc]
+ str r4, [r3, #0x8]
+ mov r2, r12
+ cmp r12, lr
+ add r4, r4, #0x10
+ blo _020AF660
+_020AF684:
+ mov r2, #0x0
+ str r2, [r0, #0x8]
+ add r1, r0, r1, lsl #0x4
+ str r2, [r1, #-0x4]
+ ldmia sp!, {r4,pc}
+ arm_func_end NNSi_GfdInitLnkVramBlockPool
+
+ arm_func_start NNSi_GfdInitLnkVramMan
+NNSi_GfdInitLnkVramMan: ; 0x020AF698
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+ arm_func_end NNSi_GfdInitLnkVramMan
diff --git a/arm9/asm/NNS_SND_capture.s b/arm9/asm/NNS_SND_capture.s
new file mode 100644
index 00000000..a4e04212
--- /dev/null
+++ b/arm9/asm/NNS_SND_capture.s
@@ -0,0 +1,680 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sIsThreadCreated
+sIsThreadCreated: ; 0x021D27A4
+ .space 0x4
+
+ .global sCurEffectInfo
+sCurEffectInfo: ; 0x021D27A8
+ .space 0x4
+
+ .global sMesgQ
+sMesgQ: ; 0x021D27AC
+ .space 0x20
+
+ .global sCapParam
+sCapParam: ; 0x021D27CC
+ .space 0x54
+
+ .global sEffectInfoBuffer
+sEffectInfoBuffer: ; 0x021D2820
+ .space 0xa0
+
+ .section .text
+
+ local_arm_func_start AlarmCallback
+AlarmCallback: ; 0x020C177C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ ldr r4, [r7, #0x18]
+ ldr r0, [r7, #0x1c]
+ ldr r1, _020C186C ; =sIsThreadCreated
+ mul r0, r4, r0
+ ldr r3, [r7, #0xc]
+ ldr r2, [r7, #0x10]
+ ldr r1, [r1, #0x0]
+ add r6, r3, r0
+ cmp r1, #0x0
+ add r5, r2, r0
+ beq _020C180C
+ ldr r2, _020C1870 ; =sCurEffectInfo
+ mov r1, #0x14
+ ldr r2, [r2, #0x0]
+ ldr r3, _020C1874 ; =sEffectInfoBuffer
+ mul r1, r2, r1
+ str r7, [r3, r1]
+ add r1, r3, r1
+ str r4, [r1, #0x4]
+ str r0, [r1, #0x8]
+ str r6, [r1, #0xc]
+ ldr r0, _020C1878 ; =sMesgQ
+ mov r2, #0x0
+ str r5, [r1, #0x10]
+ bl OS_SendMessage
+ ldr r0, _020C1870 ; =sCurEffectInfo
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ cmp r1, #0x8
+ movge r1, #0x0
+ strge r1, [r0, #0x0]
+ b _020C1844
+_020C180C:
+ mov r0, r6
+ mov r1, r4
+ bl DC_InvalidateRange
+ mov r0, r5
+ mov r1, r4
+ bl DC_InvalidateRange
+ ldr r1, [r7, #0x38]
+ mov r0, r6
+ str r1, [sp, #0x0]
+ ldr r3, [r7, #0x8]
+ ldr r6, [r7, #0x34]
+ mov r1, r5
+ mov r2, r4
+ blx r6
+_020C1844:
+ ldr r0, [r7, #0x1c]
+ add r0, r0, #0x1
+ str r0, [r7, #0x1c]
+ ldr r1, [r7, #0x1c]
+ ldr r0, [r7, #0x30]
+ cmp r1, r0
+ movge r0, #0x0
+ strge r0, [r7, #0x1c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C186C: .word sIsThreadCreated
+_020C1870: .word sCurEffectInfo
+_020C1874: .word sEffectInfoBuffer
+_020C1878: .word sMesgQ
+
+ arm_func_start NNSi_SndCaptureEndSleep
+NNSi_SndCaptureEndSleep: ; 0x020C187C
+ stmdb sp!, {r4,lr}
+ ldr r4, _020C18F4 ; =sCapParam
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ mov r0, #0x0
+ str r0, [r4, #0x1c]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x14]
+ bl MIi_CpuClear32
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ mov r0, #0x0
+ bl MIi_CpuClear32
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ bl DC_FlushRange
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ bl DC_FlushRange
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x0
+ cmp r1, #0x0
+ movge r0, #0x1
+ movge r2, r0, lsl r1
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ movlt r2, #0x0
+ bl SND_StartTimer
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C18F4: .word sCapParam
+
+ arm_func_start NNSi_SndCaptureBeginSleep
+NNSi_SndCaptureBeginSleep: ; 0x020C18F8
+ stmdb sp!, {r4,lr}
+ ldr r3, _020C194C ; =sCapParam
+ ldr r0, [r3, #0x0]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r1, [r3, #0x2c]
+ cmp r1, #0x0
+ movge r0, #0x1
+ movge r2, r0, lsl r1
+ ldr r0, [r3, #0x24]
+ ldr r1, [r3, #0x28]
+ movlt r2, #0x0
+ mov r3, #0x0
+ bl SND_StopTimer
+ bl SND_GetCurrentCommandTag
+ mov r4, r0
+ mov r0, #0x1
+ bl SND_FlushCommand
+ mov r0, r4
+ bl SND_WaitForCommandProc
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C194C: .word sCapParam
+
+ arm_func_start NNSi_SndCaptureStop
+NNSi_SndCaptureStop: ; 0x020C1950
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r4, _020C1A3C ; =sCapParam
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x0
+ cmp r1, #0x0
+ movge r7, #0x1
+ movlt r7, #0x0
+ cmp r7, #0x0
+ movne r0, #0x1
+ movne r2, r0, lsl r1
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ moveq r2, #0x0
+ bl SND_StopTimer
+ cmp r7, #0x0
+ beq _020C19DC
+ bl SND_GetCurrentCommandTag
+ mov r5, r0
+ mov r0, #0x1
+ bl SND_FlushCommand
+ mov r0, r5
+ bl SND_WaitForCommandProc
+ ldr r6, _020C1A40 ; =sMesgQ
+ mov r5, #0x0
+_020C19C4:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r5
+ bl OS_ReceiveMessage
+ cmp r0, #0x0
+ bne _020C19C4
+_020C19DC:
+ ldr r0, [r4, #0x28]
+ cmp r0, #0x0
+ beq _020C19EC
+ bl NNS_SndUnlockCapture
+_020C19EC:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0x0
+ beq _020C19FC
+ bl NNS_SndUnlockChannel
+_020C19FC:
+ cmp r7, #0x0
+ beq _020C1A0C
+ ldr r0, [r4, #0x2c]
+ bl NNS_SndFreeAlarm
+_020C1A0C:
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x1
+ bne _020C1A2C
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r0
+ mov r3, r0
+ bl SND_SetOutputSelector
+_020C1A2C:
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C1A3C: .word sCapParam
+_020C1A40: .word sMesgQ
+
+ arm_func_start NNSi_SndCaptureStart
+NNSi_SndCaptureStart: ; 0x020C1A44
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x3c
+ mov r10, r3
+ str r0, [sp, #0x18]
+ str r2, [sp, #0x20]
+ mov r2, #0x0
+ str r1, [sp, #0x1c]
+ mov r0, r1
+ mov r1, r10
+ ldr r9, [sp, #0x6c]
+ ldr r8, [sp, #0x74]
+ str r2, [sp, #0x2c]
+ mvn r6, #0x0
+ ldr r4, _020C1D90 ; =sCapParam
+ bl DC_FlushRange
+ ldr r0, [sp, #0x20]
+ mov r1, r10
+ bl DC_FlushRange
+ ldr r0, [sp, #0x60]
+ ldr r1, [sp, #0x70]
+ cmp r0, #0x1
+ moveq r7, #0x1
+ ldr r0, _020C1D94 ; =0x00FFB0FF
+ movne r7, #0x0
+ bl _s32_div_f
+ ldr r1, [sp, #0x84]
+ mov r11, r0
+ cmp r1, #0x0
+ beq _020C1B00
+ add r1, r11, #0x10
+ bic r11, r1, #0x1f
+ mov r2, r11, asr #0x5
+ mov r0, r10
+ cmp r7, #0x0
+ ldr r1, [sp, #0x80]
+ moveq r0, r10, lsr #0x1
+ str r2, [sp, #0x34]
+ bl _u32_div_f
+ ldr r1, [sp, #0x34]
+ mov r5, #0x20
+ mul r0, r1, r0
+ str r0, [sp, #0x30]
+ cmp r7, #0x0
+ ldr r0, [sp, #0x34]
+ moveq r5, r5, lsr #0x1
+ mul r0, r5, r0
+ mov r5, r0
+_020C1B00:
+ cmp r7, #0x0
+ movne r0, #0x0
+ strne r0, [sp, #0x28]
+ moveq r0, #0x1
+ streq r0, [sp, #0x28]
+ cmp r7, #0x0
+ movne r0, #0x1
+ strne r0, [sp, #0x24]
+ moveq r0, #0x0
+ streq r0, [sp, #0x24]
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x2
+ movne r0, #0xa
+ strne r0, [sp, #0x2c]
+ ldr r0, [sp, #0x84]
+ cmp r0, #0x0
+ beq _020C1B58
+ bl NNS_SndAllocAlarm
+ movs r6, r0
+ addmi sp, sp, #0x3c
+ movmi r0, #0x0
+ ldmmiia sp!, {r4-r11,pc}
+_020C1B58:
+ mov r0, #0x3
+ bl NNS_SndLockCapture
+ cmp r0, #0x0
+ bne _020C1B84
+ cmp r6, #0x0
+ blt _020C1B78
+ mov r0, r6
+ bl NNS_SndFreeAlarm
+_020C1B78:
+ add sp, sp, #0x3c
+ mov r0, #0x0
+ ldmia sp!, {r4-r11,pc}
+_020C1B84:
+ mov r0, #0xa
+ bl NNS_SndLockChannel
+ cmp r0, #0x0
+ bne _020C1BB8
+ cmp r6, #0x0
+ blt _020C1BA4
+ mov r0, r6
+ bl NNS_SndFreeAlarm
+_020C1BA4:
+ mov r0, #0x3
+ bl NNS_SndUnlockCapture
+ add sp, sp, #0x3c
+ mov r0, #0x0
+ ldmia sp!, {r4-r11,pc}
+_020C1BB8:
+ mov r0, #0x0
+ mov r7, r10, lsr #0x2
+ str r0, [sp, #0x0]
+ str r7, [sp, #0x4]
+ str r8, [sp, #0x8]
+ str r0, [sp, #0xc]
+ cmp r9, #0x0
+ movne r3, #0x1
+ ldr r1, [sp, #0x78]
+ str r11, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x1c]
+ moveq r3, #0x2
+ mov r0, #0x1
+ bl SND_SetupChannelPcm
+ ldr r1, [sp, #0x64]
+ str r9, [sp, #0x0]
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x8]
+ ldr r2, [sp, #0x1c]
+ mov r0, #0x0
+ mov r3, r7
+ bl SND_SetupCapture
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ str r7, [sp, #0x4]
+ str r8, [sp, #0x8]
+ str r0, [sp, #0xc]
+ cmp r9, #0x0
+ movne r3, #0x1
+ ldr r2, [sp, #0x7c]
+ str r11, [sp, #0x10]
+ str r2, [sp, #0x14]
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x20]
+ moveq r3, #0x2
+ mov r0, #0x3
+ bl SND_SetupChannelPcm
+ ldr r2, [sp, #0x64]
+ str r9, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x8]
+ ldr r2, [sp, #0x20]
+ mov r3, r7
+ mov r0, #0x1
+ bl SND_SetupCapture
+ cmp r6, #0x0
+ blt _020C1CA8
+ ldr r2, [sp, #0x30]
+ ldr r3, _020C1D98 ; =AlarmCallback
+ mov r1, r2
+ mov r0, r6
+ add r1, r1, r5
+ str r4, [sp, #0x0]
+ bl SND_SetupAlarm
+_020C1CA8:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x1
+ bne _020C1CC8
+ mov r0, #0x1
+ mov r2, r0
+ mov r3, r0
+ mov r1, #0x2
+ bl SND_SetOutputSelector
+_020C1CC8:
+ cmp r6, #0x0
+ movge r0, #0x1
+ movge r2, r0, lsl r6
+ ldr r0, [sp, #0x2c]
+ movlt r2, #0x0
+ mov r1, #0x3
+ mov r3, #0x0
+ bl SND_StartTimer
+ mov r0, #0x1
+ str r0, [r4, #0x0]
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x80]
+ str r0, [r4, #0x4]
+ mov r0, #0xa
+ str r0, [r4, #0x20]
+ ldr r0, [sp, #0x2c]
+ str r0, [r4, #0x24]
+ mov r0, #0x3
+ str r0, [r4, #0x28]
+ ldr r0, [sp, #0x60]
+ str r6, [r4, #0x2c]
+ str r0, [r4, #0x8]
+ ldr r0, [sp, #0x1c]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x10]
+ mov r0, r10
+ str r10, [r4, #0x14]
+ bl _u32_div_f
+ str r0, [r4, #0x18]
+ mov r1, #0x0
+ str r1, [r4, #0x1c]
+ ldr r0, [sp, #0x80]
+ ldr r1, [sp, #0x84]
+ str r0, [r4, #0x30]
+ ldr r0, [sp, #0x88]
+ str r1, [r4, #0x34]
+ str r0, [r4, #0x38]
+ add r0, r4, #0x3c
+ str r8, [r4, #0x50]
+ bl NNSi_SndFaderInit
+ add r0, r4, #0x3c
+ mov r1, r8, lsl #0x8
+ mov r2, #0x1
+ bl NNSi_SndFaderSet
+ mov r0, #0x0
+ str r0, [r4, #0x4c]
+ mov r0, #0x1
+ add sp, sp, #0x3c
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020C1D90: .word sCapParam
+_020C1D94: .word 0x00FFB0FF
+_020C1D98: .word AlarmCallback
+
+ arm_func_start NNSi_SndCaptureMain
+NNSi_SndCaptureMain: ; 0x020C1D9C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020C1E34 ; =sCapParam
+ ldr r0, [r5, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r0, [r5, #0x4]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r5,pc}
+ add r4, r5, #0x3c
+ mov r0, r4
+ bl NNSi_SndFaderUpdate
+ ldr r0, [r5, #0x4c]
+ cmp r0, #0x0
+ beq _020C1DFC
+ mov r0, r4
+ bl NNSi_SndFaderIsFinished
+ cmp r0, #0x0
+ beq _020C1DFC
+ bl NNSi_SndCaptureStop
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+_020C1DFC:
+ mov r0, r4
+ bl NNSi_SndFaderGet
+ ldr r1, [r5, #0x50]
+ mov r4, r0, asr #0x8
+ cmp r4, r1
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r0, [r5, #0x24]
+ mov r1, r4
+ mov r2, #0x0
+ bl SND_SetChannelVolume
+ str r4, [r5, #0x50]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C1E34: .word sCapParam
+
+ arm_func_start NNSi_SndCaptureInit
+NNSi_SndCaptureInit: ; 0x020C1E38
+ ldr r1, _020C1E50 ; =sIsThreadCreated
+ mov r2, #0x0
+ ldr r0, _020C1E54 ; =sCapParam
+ str r2, [r1, #0x0]
+ str r2, [r0, #0x0]
+ bx lr
+ .balign 4
+_020C1E50: .word sIsThreadCreated
+_020C1E54: .word sCapParam
+
+ arm_func_start NNS_SndCaptureIsActive
+NNS_SndCaptureIsActive: ; 0x020C1E58
+ ldr r0, _020C1E64 ; =sCapParam
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020C1E64: .word sCapParam
+
+ arm_func_start NNS_SndCaptureStopEffect
+NNS_SndCaptureStopEffect: ; 0x020C1E68
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020C1EA0 ; =sCapParam
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x1
+ addne sp, sp, #0x4
+ ldmneia sp!, {pc}
+ bl NNSi_SndCaptureStop
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020C1EA0: .word sCapParam
+
+ arm_func_start NNS_SndCaptureStartEffect
+NNS_SndCaptureStartEffect: ; 0x020C1EA4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x2c
+ mov r5, r0
+ mov r4, r1
+ mov r7, r2
+ mov r6, r3
+ bl NNS_SndCaptureStopEffect
+ ldr r0, _020C1F50 ; =sCapParam
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x2c
+ movne r0, #0x0
+ ldmneia sp!, {r4-r7,pc}
+ mov r1, r5
+ mov r2, r4
+ mov r0, #0x0
+ bl MIi_CpuClear32
+ mov r0, r5
+ mov r1, r4
+ bl DC_FlushRange
+ str r7, [sp, #0x0]
+ mov r2, #0x0
+ str r2, [sp, #0x4]
+ str r2, [sp, #0x8]
+ mov r0, #0x1
+ str r0, [sp, #0xc]
+ str r6, [sp, #0x10]
+ mov r1, #0x7f
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ ldr r2, [sp, #0x40]
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x44]
+ str r2, [sp, #0x20]
+ ldr r12, [sp, #0x48]
+ str r1, [sp, #0x24]
+ mov r1, r5
+ mov r3, r4, lsr #0x1
+ add r2, r5, r4, lsr #0x1
+ str r12, [sp, #0x28]
+ bl NNSi_SndCaptureStart
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C1F50: .word sCapParam
+
+ arm_func_start NNS_SndCaptureStopReverb
+NNS_SndCaptureStopReverb: ; 0x020C1F54
+ stmdb sp!, {r4,lr}
+ ldr r4, _020C1FA0 ; =sCapParam
+ mov r2, r0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ ldmneia sp!, {r4,pc}
+ cmp r2, #0x0
+ bne _020C1F88
+ bl NNSi_SndCaptureStop
+ ldmia sp!, {r4,pc}
+_020C1F88:
+ add r0, r4, #0x3c
+ mov r1, #0x0
+ bl NNSi_SndFaderSet
+ mov r0, #0x1
+ str r0, [r4, #0x4c]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C1FA0: .word sCapParam
+
+ arm_func_start NNS_SndCaptureSetReverbVolume
+NNS_SndCaptureSetReverbVolume: ; 0x020C1FA4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, _020C1FEC ; =sCapParam
+ mov r12, r0
+ ldr r0, [r3, #0x0]
+ mov r2, r1
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r0, [r3, #0x4]
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {pc}
+ add r0, r3, #0x3c
+ mov r1, r12, lsl #0x8
+ bl NNSi_SndFaderSet
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020C1FEC: .word sCapParam
+
+ arm_func_start NNS_SndCaptureStartReverb
+NNS_SndCaptureStartReverb: ; 0x020C1FF0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x2c
+ mov r5, r0
+ mov r0, #0x0
+ mov r4, r1
+ mov r7, r2
+ mov r6, r3
+ bl NNS_SndCaptureStopReverb
+ ldr r0, _020C2098 ; =sCapParam
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addne sp, sp, #0x2c
+ movne r0, #0x0
+ ldmneia sp!, {r4-r7,pc}
+ mov r1, r5
+ mov r2, r4
+ mov r0, #0x0
+ bl MIi_CpuClear32
+ mov r0, r5
+ mov r1, r4
+ bl DC_FlushRange
+ str r7, [sp, #0x0]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ str r0, [sp, #0x8]
+ mov r1, #0x1
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x40]
+ str r6, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ mov r1, #0x7f
+ str r1, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ mov r1, r5
+ mov r3, r4, lsr #0x1
+ add r2, r5, r4, lsr #0x1
+ str r0, [sp, #0x28]
+ bl NNSi_SndCaptureStart
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C2098: .word sCapParam
diff --git a/arm9/asm/NNS_SND_fader.s b/arm9/asm/NNS_SND_fader.s
new file mode 100644
index 00000000..938456a9
--- /dev/null
+++ b/arm9/asm/NNS_SND_fader.s
@@ -0,0 +1,63 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_SndFaderIsFinished
+NNSi_SndFaderIsFinished: ; 0x020C3DDC
+ ldr r1, [r0, #0x8]
+ ldr r0, [r0, #0xc]
+ cmp r1, r0
+ movge r0, #0x1
+ movlt r0, #0x0
+ bx lr
+
+ arm_func_start NNSi_SndFaderUpdate
+NNSi_SndFaderUpdate: ; 0x020C3DF4
+ ldr r2, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ cmp r2, r1
+ addlt r1, r2, #0x1
+ strlt r1, [r0, #0x8]
+ bx lr
+
+ arm_func_start NNSi_SndFaderGet
+NNSi_SndFaderGet: ; 0x020C3E0C
+ stmdb sp!, {r4,lr}
+ ldr r1, [r0, #0xc]
+ ldr r2, [r0, #0x8]
+ cmp r2, r1
+ ldrge r0, [r0, #0x4]
+ ldmgeia sp!, {r4,pc}
+ ldr r4, [r0, #0x0]
+ ldr r0, [r0, #0x4]
+ sub r0, r0, r4
+ mul r0, r2, r0
+ bl _s32_div_f
+ add r0, r4, r0
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNSi_SndFaderSet
+NNSi_SndFaderSet: ; 0x020C3E40
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl NNSi_SndFaderGet
+ str r0, [r6, #0x0]
+ str r5, [r6, #0x4]
+ str r4, [r6, #0xc]
+ mov r0, #0x0
+ str r0, [r6, #0x8]
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start NNSi_SndFaderInit
+NNSi_SndFaderInit: ; 0x020C3E6C
+ mov r2, #0x0
+ str r2, [r0, #0x4]
+ ldr r1, [r0, #0x4]
+ str r1, [r0, #0x0]
+ str r2, [r0, #0xc]
+ ldr r1, [r0, #0xc]
+ str r1, [r0, #0x8]
+ bx lr
diff --git a/arm9/asm/NNS_SND_heap.s b/arm9/asm/NNS_SND_heap.s
new file mode 100644
index 00000000..554c6bab
--- /dev/null
+++ b/arm9/asm/NNS_SND_heap.s
@@ -0,0 +1,282 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start EraseSync
+EraseSync: ; 0x020C2774
+ stmdb sp!, {r4,lr}
+ bl SND_GetCurrentCommandTag
+ mov r4, r0
+ mov r0, #0x1
+ bl SND_FlushCommand
+ mov r0, r4
+ bl SND_WaitForCommandProc
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NewSection
+NewSection: ; 0x020C2794
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, [r5, #0x0]
+ mov r1, #0x14
+ mov r2, #0x4
+ bl NNS_FndAllocFromFrmHeapEx
+ movs r4, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5,pc}
+ bl InitHeapSection
+ mov r1, r4
+ add r0, r5, #0x4
+ bl NNS_FndAppendListObject
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start InitHeap
+InitHeap: ; 0x020C27DC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ add r0, r5, #0x4
+ mov r1, #0xc
+ bl NNS_FndInitList
+ mov r0, r5
+ str r4, [r5, #0x0]
+ bl NewSection
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start InitHeapSection
+InitHeapSection: ; 0x020C2818
+ ldr ip, _020C2824 ; =NNS_FndInitList
+ mov r1, #0x0
+ bx r12
+ .balign 4
+_020C2824: .word NNS_FndInitList
+
+ arm_func_start NNS_SndHeapLoadState
+NNS_SndHeapLoadState: ; 0x020C2828
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ mov r7, #0x0
+ movs r9, r1
+ mov r10, r0
+ mov r6, r7
+ bne _020C2850
+ bl NNS_SndHeapClear
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+_020C2850:
+ ldrh r0, [r10, #0xc]
+ cmp r9, r0
+ bge _020C28D8
+ mov r11, r7
+ add r5, r10, #0x4
+ mov r4, #0x1
+_020C2868:
+ mov r0, r5
+ mov r1, r11
+ bl NNS_FndGetPrevListObject
+ mov r1, r7
+ mov r8, r0
+ bl NNS_FndGetPrevListObject
+ movs r7, r0
+ beq _020C28C0
+_020C2888:
+ ldr r12, [r7, #0xc]
+ cmp r12, #0x0
+ beq _020C28AC
+ ldr r1, [r7, #0x8]
+ ldr r2, [r7, #0x10]
+ ldr r3, [r7, #0x14]
+ add r0, r7, #0x20
+ blx r12
+ mov r6, r4
+_020C28AC:
+ mov r0, r8
+ mov r1, r7
+ bl NNS_FndGetPrevListObject
+ movs r7, r0
+ bne _020C2888
+_020C28C0:
+ mov r0, r5
+ mov r1, r8
+ bl NNS_FndRemoveListObject
+ ldrh r0, [r10, #0xc]
+ cmp r9, r0
+ blt _020C2868
+_020C28D8:
+ ldr r0, [r10, #0x0]
+ mov r1, r9
+ bl NNS_FndFreeByStateToFrmHeap
+ cmp r6, #0x0
+ beq _020C28F0
+ bl EraseSync
+_020C28F0:
+ ldrh r1, [r10, #0xc]
+ ldr r0, [r10, #0x0]
+ bl NNS_FndRecordStateForFrmHeap
+ mov r0, r10
+ bl NewSection
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,pc}
+
+ arm_func_start NNS_SndHeapSaveState
+NNS_SndHeapSaveState: ; 0x020C290C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldrh r1, [r4, #0xc]
+ ldr r0, [r4, #0x0]
+ bl NNS_FndRecordStateForFrmHeap
+ cmp r0, #0x0
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ mov r0, r4
+ bl NewSection
+ cmp r0, #0x0
+ ldrneh r0, [r4, #0xc]
+ subne r0, r0, #0x1
+ ldmneia sp!, {r4,pc}
+ ldr r0, [r4, #0x0]
+ mov r1, #0x0
+ bl NNS_FndFreeByStateToFrmHeap
+ mvn r0, #0x0
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndHeapAlloc
+NNS_SndHeapAlloc: ; 0x020C2958
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r1
+ mov r8, r0
+ add r0, r7, #0x1f
+ bic r1, r0, #0x1f
+ mov r6, r2
+ ldr r0, [r8, #0x0]
+ add r1, r1, #0x20
+ mov r2, #0x20
+ mov r5, r3
+ bl NNS_FndAllocFromFrmHeapEx // some allocator?
+ movs r4, r0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ add r0, r8, #0x4
+ mov r1, #0x0
+ bl NNS_FndGetPrevListObject
+ str r7, [r4, #0x8]
+ str r6, [r4, #0xc]
+ ldr r2, [sp, #0x18]
+ str r5, [r4, #0x10]
+ mov r1, r4
+ str r2, [r4, #0x14]
+ bl NNS_FndAppendListObject
+ add r0, r4, #0x20
+ ldmia sp!, {r4-r8,pc}
+
+ arm_func_start NNS_SndHeapClear
+NNS_SndHeapClear: ; 0x020C29C0
+ stmdb sp!, {r4-r10,lr}
+ mov r8, r0
+ mov r5, #0x0
+ mov r1, r5
+ add r0, r8, #0x4
+ bl NNS_FndGetPrevListObject
+ movs r7, r0
+ beq _020C2A58
+ add r9, r8, #0x4
+ mov r10, #0x1
+ mov r4, r5
+_020C29EC:
+ mov r0, r7
+ mov r1, r4
+ bl NNS_FndGetPrevListObject
+ movs r6, r0
+ beq _020C2A38
+_020C2A00:
+ ldr r12, [r6, #0xc]
+ cmp r12, #0x0
+ beq _020C2A24
+ ldr r1, [r6, #0x8]
+ ldr r2, [r6, #0x10]
+ ldr r3, [r6, #0x14]
+ add r0, r6, #0x20
+ blx r12
+ mov r5, r10
+_020C2A24:
+ mov r0, r7
+ mov r1, r6
+ bl NNS_FndGetPrevListObject
+ movs r6, r0
+ bne _020C2A00
+_020C2A38:
+ mov r0, r9
+ mov r1, r7
+ bl NNS_FndRemoveListObject
+ mov r0, r9
+ mov r1, r4
+ bl NNS_FndGetPrevListObject
+ movs r7, r0
+ bne _020C29EC
+_020C2A58:
+ ldr r0, [r8, #0x0]
+ mov r1, #0x3
+ bl NNS_FndFreeToFrmHeap
+ cmp r5, #0x0
+ beq _020C2A70
+ bl EraseSync
+_020C2A70:
+ mov r0, r8
+ bl NewSection
+ ldmia sp!, {r4-r10,pc}
+
+ arm_func_start NNS_SndHeapDestroy
+NNS_SndHeapDestroy: ; 0x020C2A7C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl NNS_SndHeapClear
+ ldr r0, [r4, #0x0]
+ bl NNS_FndDestroyFrmHeap
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndHeapCreate
+NNS_SndHeapCreate: ; 0x020C2A94
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ add r2, r0, #0x3
+ add r0, r0, r1
+ bic r5, r2, #0x3
+ cmp r5, r0
+ addhi sp, sp, #0x4
+ movhi r0, #0x0
+ ldmhiia sp!, {r4-r5,pc}
+ sub r1, r0, r5
+ cmp r1, #0x10
+ addcc sp, sp, #0x4
+ movcc r0, #0x0
+ ldmccia sp!, {r4-r5,pc}
+ add r0, r5, #0x10
+ sub r1, r1, #0x10
+ mov r2, #0x0
+ bl NNS_FndCreateFrmHeapEx
+ movs r4, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5,pc}
+ mov r0, r5
+ mov r1, r4
+ bl InitHeap
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ movne r0, r5
+ ldmneia sp!, {r4-r5,pc}
+ mov r0, r4
+ bl NNS_FndDestroyFrmHeap
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
diff --git a/arm9/asm/NNS_SND_main.s b/arm9/asm/NNS_SND_main.s
new file mode 100644
index 00000000..4cbe3d65
--- /dev/null
+++ b/arm9/asm/NNS_SND_main.s
@@ -0,0 +1,125 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sCurDriverInfo
+sCurDriverInfo: ; 0x021D1C8C
+ .space 0x4
+
+ .global sDriverInfoFirstFlag
+sDriverInfoFirstFlag: ; 0x021D1C90
+ .space 0x4
+
+ .global initialized$8127
+initialized$8127: ; 0x021D1C94
+ .space 0x4
+
+ .global sPreSleepCallback
+sPreSleepCallback: ; 0x021D1C98
+ .space 0xc
+
+ .global sPostSleepCallback
+sPostSleepCallback: ; 0x021D1CA4
+ .space 0xc
+
+ .section .text
+
+ local_arm_func_start EndSleep
+EndSleep: ; 0x020C0130
+ ldr ip, _020C0138 ; =NNSi_SndCaptureEndSleep
+ bx r12
+ .balign 4
+_020C0138: .word NNSi_SndCaptureEndSleep
+
+ local_arm_func_start BeginSleep
+BeginSleep: ; 0x020C013C
+ stmdb sp!, {r4,lr}
+ bl NNSi_SndCaptureBeginSleep
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r0
+ mov r3, r0
+ bl SND_StopTimer
+ bl SND_GetCurrentCommandTag
+ mov r4, r0
+ mov r0, #0x1
+ bl SND_FlushCommand
+ mov r0, r4
+ bl SND_WaitForCommandProc
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndSetMonoFlag
+NNS_SndSetMonoFlag: ; 0x020C0174
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ cmp r0, #0x0
+ beq _020C0194
+ mov r0, #0x40
+ bl SND_SetMasterPan
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+_020C0194:
+ bl SND_ResetMasterPan
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndMain
+NNS_SndMain: ; 0x020C01A0
+ stmdb sp!, {r4,lr}
+ mov r4, #0x0
+_020C01A8:
+ mov r0, r4
+ bl SND_RecvCommandReply
+ cmp r0, #0x0
+ bne _020C01A8
+ bl NNSi_SndPlayerMain
+ bl NNSi_SndCaptureMain
+ bl NNSi_SndArcStrmMain
+ mov r0, #0x0
+ bl SND_FlushCommand
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndInit
+NNS_SndInit: ; 0x020C01D0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, _020C0254 ; =initialized$8127
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {pc}
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ bl SND_Init
+ ldr ip, _020C0258 ; =BeginSleep
+ ldr r0, _020C025C ; =sPreSleepCallback
+ mov r3, #0x0
+ ldr r1, _020C0260 ; =sPostSleepCallback
+ ldr r2, _020C0264 ; =EndSleep
+ str r12, [r0, #0x0]
+ str r3, [r0, #0x4]
+ str r2, [r1, #0x0]
+ str r3, [r1, #0x4]
+ bl PM_PrependPreSleepCallback
+ ldr r0, _020C0260 ; =sPostSleepCallback
+ bl PM_AppendPostSleepCallback
+ bl NNSi_SndInitResourceMgr
+ bl NNSi_SndCaptureInit
+ bl NNSi_SndPlayerInit
+ ldr r1, _020C0268 ; =sCurDriverInfo
+ mvn r3, #0x0
+ ldr r0, _020C026C ; =sDriverInfoFirstFlag
+ mov r2, #0x1
+ strb r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+ .balign 4
+_020C0254: .word initialized$8127
+_020C0258: .word BeginSleep
+_020C025C: .word sPreSleepCallback
+_020C0260: .word sPostSleepCallback
+_020C0264: .word EndSleep
+_020C0268: .word sCurDriverInfo
+_020C026C: .word sDriverInfoFirstFlag
diff --git a/arm9/asm/NNS_SND_player.s b/arm9/asm/NNS_SND_player.s
new file mode 100644
index 00000000..caaf345e
--- /dev/null
+++ b/arm9/asm/NNS_SND_player.s
@@ -0,0 +1,877 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sFreeList
+sFreeList: ; 0x021D1DFC
+ .space 0xc
+
+ .global sPrioList
+sPrioList: ; 0x021D1E08
+ .space 0xc
+
+ .global sSeqPlayer
+sSeqPlayer: ; 0x021D1E14
+ .space 0x440
+
+ .global sPlayer
+sPlayer: ; 0x021D2254
+ .space 0x480
+
+ .section .text
+
+ arm_func_start SetPlayerPriority
+SetPlayerPriority: ; 0x020C06CC
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ ldr r4, [r6, #0x4]
+ mov r5, r1
+ cmp r4, #0x0
+ beq _020C06F8
+ mov r0, r4
+ mov r1, r6
+ bl NNS_FndRemoveListObject
+ mov r0, #0x0
+ str r0, [r6, #0x4]
+_020C06F8:
+ ldr r0, _020C0728 ; =sPrioList
+ mov r1, r6
+ bl NNS_FndRemoveListObject
+ strb r5, [r6, #0x3d]
+ cmp r4, #0x0
+ beq _020C071C
+ mov r0, r4
+ mov r1, r6
+ bl InsertPlayerList
+_020C071C:
+ mov r0, r6
+ bl InsertPrioList
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C0728: .word sPrioList
+
+ arm_func_start PlayerHeapDisposeCallback
+PlayerHeapDisposeCallback: ; 0x020C072C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ bl NNS_SndHeapDestroy
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x0
+ movne r0, #0x0
+ strne r0, [r1, #0x8]
+ ldmneia sp!, {r4,pc}
+ ldr r1, [r4, #0x10]
+ ldr r2, _020C0778 ; =sPlayer
+ mov r0, #0x24
+ mla r0, r1, r0, r2
+ mov r1, r4
+ add r0, r0, #0xc
+ bl NNS_FndRemoveListObject
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C0778: .word sPlayer
+
+ local_arm_func_start ShutdownPlayer
+ShutdownPlayer: ; 0x020C077C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ ldr r1, [r4, #0x0]
+ cmp r1, #0x0
+ movne r0, #0x0
+ strne r0, [r1, #0x0]
+ strne r0, [r4, #0x0]
+ ldr r5, [r4, #0x4]
+ mov r1, r4
+ mov r0, r5
+ bl NNS_FndRemoveListObject
+ mov r0, #0x0
+ str r0, [r4, #0x4]
+ ldr r1, [r4, #0x8]
+ cmp r1, #0x0
+ beq _020C07D8
+ add r0, r5, #0xc
+ bl NNS_FndAppendListObject
+ ldr r0, [r4, #0x8]
+ mov r1, #0x0
+ str r1, [r0, #0xc]
+ str r1, [r4, #0x8]
+_020C07D8:
+ ldr r0, _020C0800 ; =sPrioList
+ mov r1, r4
+ bl NNS_FndRemoveListObject
+ ldr r0, _020C0804 ; =sFreeList
+ mov r1, r4
+ bl NNS_FndAppendListObject
+ mov r0, #0x0
+ strb r0, [r4, #0x2c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C0800: .word sPrioList
+_020C0804: .word sFreeList
+
+ arm_func_start AllocSeqPlayer
+AllocSeqPlayer: ; 0x020C0808
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, _020C0874 ; =sFreeList
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ movs r4, r0
+ bne _020C0850
+ ldr r0, _020C0878 ; =sPrioList
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ mov r4, r0
+ ldrb r1, [r4, #0x3d]
+ cmp r5, r1
+ addlt sp, sp, #0x4
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r5,pc}
+ bl ForceStopSeq
+_020C0850:
+ ldr r0, _020C0874 ; =sFreeList
+ mov r1, r4
+ bl NNS_FndRemoveListObject
+ mov r0, r4
+ strb r5, [r4, #0x3d]
+ bl InsertPrioList
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C0874: .word sFreeList
+_020C0878: .word sPrioList
+
+ arm_func_start ForceStopSeq
+ForceStopSeq: ; 0x020C087C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldrb r0, [r4, #0x2c]
+ cmp r0, #0x2
+ bne _020C089C
+ ldrb r0, [r4, #0x3c]
+ ldr r1, _020C08B0 ; =0xFFFFFD2D
+ bl SND_SetPlayerVolume
+_020C089C:
+ ldrb r0, [r4, #0x3c]
+ bl SND_StopSeq
+ mov r0, r4
+ bl ShutdownPlayer
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C08B0: .word 0xFFFFFD2D
+
+ arm_func_start InsertPrioList
+InsertPrioList: ; 0x020C08B4
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, _020C090C ; =sPrioList
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ movs r1, r0
+ beq _020C08F8
+ ldr r4, _020C090C ; =sPrioList
+_020C08D8:
+ ldrb r2, [r5, #0x3d]
+ ldrb r0, [r1, #0x3d]
+ cmp r2, r0
+ blo _020C08F8
+ mov r0, r4
+ bl NNS_FndGetNextListObject
+ movs r1, r0
+ bne _020C08D8
+_020C08F8:
+ ldr r0, _020C090C ; =sPrioList
+ mov r2, r5
+ bl NNS_FndInsertListObject
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C090C: .word sPrioList
+
+ arm_func_start InsertPlayerList
+InsertPlayerList: ; 0x020C0910
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r1, #0x0
+ mov r5, r0
+ bl NNS_FndGetNextListObject
+ movs r1, r0
+ beq _020C0950
+_020C0930:
+ ldrb r2, [r4, #0x3d]
+ ldrb r0, [r1, #0x3d]
+ cmp r2, r0
+ blo _020C0950
+ mov r0, r5
+ bl NNS_FndGetNextListObject
+ movs r1, r0
+ bne _020C0930
+_020C0950:
+ mov r0, r5
+ mov r2, r4
+ bl NNS_FndInsertListObject
+ str r5, [r4, #0x4]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start InitPlayer
+InitPlayer: ; 0x020C0968
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x0
+ strb r0, [r4, #0x2e]
+ strb r0, [r4, #0x2d]
+ strb r0, [r4, #0x2f]
+ strh r0, [r4, #0x34]
+ strh r0, [r4, #0x3e]
+ mov r1, #0x7f
+ strb r1, [r4, #0x40]
+ add r0, r4, #0x1c
+ strb r1, [r4, #0x41]
+ bl NNSi_SndFaderInit
+ add r0, r4, #0x1c
+ mov r1, #0x7f00
+ mov r2, #0x1
+ bl NNSi_SndFaderSet
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNSi_SndPlayerAllocHeap
+NNSi_SndPlayerAllocHeap: ; 0x020C09B0
+ stmdb sp!, {r4-r6,lr}
+ ldr r3, _020C0A00 ; =sPlayer
+ mov r2, #0x24
+ mla r5, r0, r2, r3
+ mov r6, r1
+ add r0, r5, #0xc
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ movs r4, r0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ mov r1, r4
+ add r0, r5, #0xc
+ bl NNS_FndRemoveListObject
+ str r6, [r4, #0xc]
+ str r4, [r6, #0x8]
+ ldr r0, [r4, #0x8]
+ bl NNS_SndHeapClear
+ ldr r0, [r4, #0x8]
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C0A00: .word sPlayer
+
+ arm_func_start NNSi_SndPlayerPause
+NNSi_SndPlayerPause: ; 0x020C0A04
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ movs r5, r0
+ mov r4, r1
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldrb r0, [r5, #0x2e]
+ cmp r4, r0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldrb r0, [r5, #0x3c]
+ bl SND_PauseSeq
+ strb r4, [r5, #0x2e]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start NNSi_SndPlayerStopSeq
+NNSi_SndPlayerStopSeq: ; 0x020C0A40
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ mov r2, r1
+ ldmeqia sp!, {r4,pc}
+ ldrb r1, [r4, #0x2c]
+ cmp r1, #0x0
+ ldmeqia sp!, {r4,pc}
+ cmp r2, #0x0
+ bne _020C0A6C
+ bl ForceStopSeq
+ ldmia sp!, {r4,pc}
+_020C0A6C:
+ add r0, r4, #0x1c
+ mov r1, #0x0
+ bl NNSi_SndFaderSet
+ mov r0, r4
+ mov r1, #0x0
+ bl SetPlayerPriority
+ mov r0, #0x2
+ strb r0, [r4, #0x2c]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNSi_SndPlayerStartSeq
+NNSi_SndPlayerStartSeq: ; 0x020C0A90
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldrb r0, [r5, #0x3c]
+ ldr r4, [r5, #0x4]
+ bl SND_PrepareSeq
+ ldr r2, [r4, #0x1c]
+ cmp r2, #0x0
+ beq _020C0AC0
+ ldrb r0, [r5, #0x3c]
+ ldr r1, _020C0AE4 ; =0x0000FFFF
+ bl SND_SetTrackAllocatableChannel
+_020C0AC0:
+ mov r0, r5
+ bl InitPlayer
+ bl SND_GetCurrentCommandTag
+ str r0, [r5, #0x30]
+ mov r0, #0x1
+ strb r0, [r5, #0x2f]
+ strb r0, [r5, #0x2c]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C0AE4: .word 0x0000FFFF
+
+ arm_func_start NNSi_SndPlayerFreeSeqPlayer
+NNSi_SndPlayerFreeSeqPlayer: ; 0x020C0AE8
+ ldr ip, _020C0AF0 ; =ShutdownPlayer
+ bx r12
+ .balign 4
+_020C0AF0: .word ShutdownPlayer
+
+ arm_func_start NNSi_SndPlayerAllocSeqPlayer
+NNSi_SndPlayerAllocSeqPlayer: ; 0x020C0AF4
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr ip, _020C0B9C ; =sPlayer
+ mov r3, #0x24
+ mov r4, r0
+ ldr r5, [r4, #0x0]
+ mla r6, r1, r3, r12
+ mov r7, r2
+ cmp r5, #0x0
+ beq _020C0B20
+ bl NNS_SndHandleReleaseSeq
+_020C0B20:
+ ldrh r1, [r6, #0x8]
+ ldr r0, [r6, #0x18]
+ cmp r1, r0
+ blo _020C0B64
+ mov r0, r6
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,pc}
+ ldrb r1, [r0, #0x3d]
+ cmp r7, r1
+ addlt sp, sp, #0x4
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r7,pc}
+ bl ForceStopSeq
+_020C0B64:
+ mov r0, r7
+ bl AllocSeqPlayer
+ movs r5, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,pc}
+ mov r0, r6
+ mov r1, r5
+ bl InsertPlayerList
+ str r4, [r5, #0x0]
+ mov r0, r5
+ str r5, [r4, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C0B9C: .word sPlayer
+
+ arm_func_start NNSi_SndPlayerMain
+NNSi_SndPlayerMain: ; 0x020C0BA0
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ bl SND_GetPlayerStatus
+ str r0, [sp, #0x0]
+ ldr r0, _020C0D14 ; =sPrioList
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ movs r10, r0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r11,pc}
+ mov r0, #0x8000
+ rsb r0, r0, #0x0
+ ldr r4, _020C0D18 ; =SNDi_DecibelTable
+ str r0, [sp, #0x4]
+ mov r5, #0x1
+ mov r11, #0x0
+_020C0BE0:
+ ldr r0, _020C0D14 ; =sPrioList
+ mov r1, r10
+ bl NNS_FndGetNextListObject
+ ldrb r1, [r10, #0x2d]
+ mov r9, r0
+ cmp r1, #0x0
+ bne _020C0C0C
+ ldr r0, [r10, #0x30]
+ bl SND_IsFinishedCommandTag
+ cmp r0, #0x0
+ strneb r5, [r10, #0x2d]
+_020C0C0C:
+ ldrb r0, [r10, #0x2d]
+ cmp r0, #0x0
+ beq _020C0C38
+ ldrb r0, [r10, #0x3c]
+ mov r1, r5, lsl r0
+ ldr r0, [sp, #0x0]
+ ands r0, r0, r1
+ bne _020C0C38
+ mov r0, r10
+ bl ShutdownPlayer
+ b _020C0D00
+_020C0C38:
+ add r0, r10, #0x1c
+ bl NNSi_SndFaderUpdate
+ ldr r0, [r10, #0x4]
+ ldrb r2, [r10, #0x41]
+ ldrb r1, [r10, #0x40]
+ ldrb r0, [r0, #0x20]
+ mov r3, r2, lsl #0x1
+ mov r2, r1, lsl #0x1
+ mov r1, r0, lsl #0x1
+ add r0, r10, #0x1c
+ ldrsh r8, [r4, r3]
+ ldrsh r7, [r4, r2]
+ ldrsh r6, [r4, r1]
+ bl NNSi_SndFaderGet
+ mov r0, r0, asr #0x8
+ mov r2, r0, lsl #0x1
+ add r1, r7, r8
+ mov r0, #0x8000
+ ldrsh r2, [r4, r2]
+ add r1, r6, r1
+ rsb r0, r0, #0x0
+ add r6, r2, r1
+ cmp r6, r0
+ ldrlt r6, [sp, #0x4]
+ blt _020C0CA8
+ ldr r0, _020C0D1C ; =0x00007FFF
+ cmp r6, r0
+ movgt r6, r0
+_020C0CA8:
+ ldrsh r0, [r10, #0x3e]
+ cmp r6, r0
+ beq _020C0CC4
+ ldrb r0, [r10, #0x3c]
+ mov r1, r6
+ bl SND_SetPlayerVolume
+ strh r6, [r10, #0x3e]
+_020C0CC4:
+ ldrb r0, [r10, #0x2c]
+ cmp r0, #0x2
+ bne _020C0CE8
+ add r0, r10, #0x1c
+ bl NNSi_SndFaderIsFinished
+ cmp r0, #0x0
+ beq _020C0CE8
+ mov r0, r10
+ bl ForceStopSeq
+_020C0CE8:
+ ldrb r0, [r10, #0x2f]
+ cmp r0, #0x0
+ beq _020C0D00
+ ldrb r0, [r10, #0x3c]
+ bl SND_StartPreparedSeq
+ strb r11, [r10, #0x2f]
+_020C0D00:
+ mov r10, r9
+ cmp r9, #0x0
+ bne _020C0BE0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020C0D14: .word sPrioList
+_020C0D18: .word SNDi_DecibelTable
+_020C0D1C: .word 0x00007FFF
+
+ arm_func_start NNSi_SndPlayerInit
+NNSi_SndPlayerInit: ; 0x020C0D20
+ stmdb sp!, {r4-r10,lr}
+ ldr r0, _020C0DC4 ; =sPrioList
+ mov r1, #0x14
+ bl NNS_FndInitList
+ ldr r0, _020C0DC8 ; =sFreeList
+ mov r1, #0x14
+ bl NNS_FndInitList
+ ldr r6, _020C0DCC ; =sSeqPlayer
+ mov r7, #0x0
+ ldr r4, _020C0DC8 ; =sFreeList
+ mov r5, r7
+_020C0D4C:
+ strb r5, [r6, #0x2c]
+ mov r0, r4
+ mov r1, r6
+ strb r7, [r6, #0x3c]
+ bl NNS_FndAppendListObject
+ add r7, r7, #0x1
+ cmp r7, #0x10
+ add r6, r6, #0x44
+ blt _020C0D4C
+ ldr sl, _020C0DD0 ; =sPlayer
+ mov r9, #0x0
+ mov r7, r9
+ mov r4, r9
+ mov r8, #0xc
+ mov r6, #0x7f
+ mov r5, #0x1
+_020C0D8C:
+ mov r0, r10
+ mov r1, r8
+ bl NNS_FndInitList
+ mov r1, r7
+ add r0, r10, #0xc
+ bl NNS_FndInitList
+ strb r6, [r10, #0x20]
+ str r5, [r10, #0x18]
+ add r9, r9, #0x1
+ str r4, [r10, #0x1c]
+ cmp r9, #0x20
+ add r10, r10, #0x24
+ blt _020C0D8C
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020C0DC4: .word sPrioList
+_020C0DC8: .word sFreeList
+_020C0DCC: .word sSeqPlayer
+_020C0DD0: .word sPlayer
+
+ arm_func_start NNS_SndPlayerGetTick
+NNS_SndPlayerGetTick: ; 0x020C0DD4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {pc}
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {pc}
+ ldrb r0, [r1, #0x3c]
+ bl SND_GetPlayerTickCounter
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndPlayerGetSeqNo
+NNS_SndPlayerGetSeqNo: ; 0x020C0E14
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ mvneq r0, #0x0
+ bxeq lr
+ ldrh r0, [r1, #0x34]
+ cmp r0, #0x1
+ mvnne r0, #0x0
+ ldreqh r0, [r1, #0x38]
+ bx lr
+
+ arm_func_start NNS_SndPlayerSetSeqArcNo
+NNS_SndPlayerSetSeqArcNo: ; 0x020C0E38
+ ldr r12, [r0, #0x0]
+ cmp r12, #0x0
+ bxeq lr
+ mov r3, #0x2
+ strh r3, [r12, #0x34]
+ ldr r3, [r0, #0x0]
+ strh r1, [r3, #0x38]
+ ldr r0, [r0, #0x0]
+ strh r2, [r0, #0x3a]
+ bx lr
+
+ arm_func_start NNS_SndPlayerSetSeqNo
+NNS_SndPlayerSetSeqNo: ; 0x020C0E60
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ movne r2, #0x1
+ strneh r2, [r3, #0x34]
+ ldrne r0, [r0, #0x0]
+ strneh r1, [r0, #0x38]
+ bx lr
+
+ arm_func_start NNS_SndPlayerSetTrackPan
+NNS_SndPlayerSetTrackPan: ; 0x020C0E7C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldrb r0, [r0, #0x3c]
+ bl SND_SetTrackPan
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndPlayerSetTrackPitch
+NNS_SndPlayerSetTrackPitch: ; 0x020C0EA4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldrb r0, [r0, #0x3c]
+ bl SND_SetTrackPitch
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndPlayerSetChannelPriority
+NNS_SndPlayerSetChannelPriority: ; 0x020C0ECC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldrb r0, [r0, #0x3c]
+ bl SND_SetPlayerChannelPriority
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndPlayerMoveVolume
+NNS_SndPlayerMoveVolume: ; 0x020C0EF4
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r3, [r0, #0x0]
+ cmp r3, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldrb r0, [r3, #0x2c]
+ cmp r0, #0x2
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ add r0, r3, #0x1c
+ mov r1, r1, lsl #0x8
+ bl NNSi_SndFaderSet
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndPlayerSetInitialVolume
+NNS_SndPlayerSetInitialVolume: ; 0x020C0F30
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ strneb r1, [r0, #0x40]
+ bx lr
+
+ arm_func_start NNS_SndPlayerSetVolume
+NNS_SndPlayerSetVolume: ; 0x020C0F40
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ strneb r1, [r0, #0x41]
+ bx lr
+
+ arm_func_start NNS_SndPlayerCountPlayingSeqByPlayerNo
+NNS_SndPlayerCountPlayingSeqByPlayerNo: ; 0x020C0F50
+ mov r1, #0x24
+ mul r1, r0, r1
+ ldr r0, _020C0F64 ; =sPlayer + 0x8
+ ldrh r0, [r0, r1]
+ bx lr
+ .balign 4
+_020C0F64: .word sPlayer + 0x8
+
+ arm_func_start NNS_SndHandleReleaseSeq
+NNS_SndHandleReleaseSeq: ; 0x020C0F68
+ ldr r2, [r0, #0x0]
+ cmp r2, #0x0
+ movne r1, #0x0
+ strne r1, [r2, #0x0]
+ strne r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start NNS_SndHandleInit
+NNS_SndHandleInit: ; 0x020C0F80
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+ bx lr
+
+ arm_func_start NNS_SndPlayerPause
+NNS_SndPlayerPause: ; 0x020C0F8C
+ ldr ip, _020C0F98 ; =NNSi_SndPlayerPause
+ ldr r0, [r0, #0x0]
+ bx r12
+ .balign 4
+_020C0F98: .word NNSi_SndPlayerPause
+
+ arm_func_start NNS_SndPlayerStopSeqAll
+NNS_SndPlayerStopSeqAll: ; 0x020C0F9C
+ stmdb sp!, {r4-r6,lr}
+ ldr r4, _020C0FD8 ; =sSeqPlayer
+ mov r6, r0
+ mov r5, #0x0
+_020C0FAC:
+ ldrb r0, [r4, #0x2c]
+ cmp r0, #0x0
+ beq _020C0FC4
+ mov r0, r4
+ mov r1, r6
+ bl NNSi_SndPlayerStopSeq
+_020C0FC4:
+ add r5, r5, #0x1
+ cmp r5, #0x10
+ add r4, r4, #0x44
+ blt _020C0FAC
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C0FD8: .word sSeqPlayer
+
+ arm_func_start NNS_SndPlayerStopSeqBySeqNo
+NNS_SndPlayerStopSeqBySeqNo: ; 0x020C0FDC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r4, _020C103C ; =sSeqPlayer
+ mov r7, r0
+ mov r6, r1
+ mov r5, #0x0
+_020C0FF4:
+ ldrb r0, [r4, #0x2c]
+ cmp r0, #0x0
+ beq _020C1024
+ ldrh r0, [r4, #0x34]
+ cmp r0, #0x1
+ bne _020C1024
+ ldrh r0, [r4, #0x38]
+ cmp r0, r7
+ bne _020C1024
+ mov r0, r4
+ mov r1, r6
+ bl NNSi_SndPlayerStopSeq
+_020C1024:
+ add r5, r5, #0x1
+ cmp r5, #0x10
+ add r4, r4, #0x44
+ blt _020C0FF4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C103C: .word sSeqPlayer
+
+ arm_func_start NNS_SndPlayerStopSeqByPlayerNo
+NNS_SndPlayerStopSeqByPlayerNo: ; 0x020C1040
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r3, _020C109C ; =sPlayer
+ mov r2, #0x24
+ mla r4, r0, r2, r3
+ ldr r5, _020C10A0 ; =sSeqPlayer
+ mov r7, r1
+ mov r6, #0x0
+_020C1060:
+ ldrb r0, [r5, #0x2c]
+ cmp r0, #0x0
+ beq _020C1084
+ ldr r0, [r5, #0x4]
+ cmp r0, r4
+ bne _020C1084
+ mov r0, r5
+ mov r1, r7
+ bl NNSi_SndPlayerStopSeq
+_020C1084:
+ add r6, r6, #0x1
+ cmp r6, #0x10
+ add r5, r5, #0x44
+ blt _020C1060
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C109C: .word sPlayer
+_020C10A0: .word sSeqPlayer
+
+ arm_func_start NNS_SndPlayerStopSeq
+NNS_SndPlayerStopSeq: ; 0x020C10A4
+ ldr ip, _020C10B0 ; =NNSi_SndPlayerStopSeq
+ ldr r0, [r0, #0x0]
+ bx r12
+ .balign 4
+_020C10B0: .word NNSi_SndPlayerStopSeq
+
+ arm_func_start NNS_SndPlayerCreateHeap
+NNS_SndPlayerCreateHeap: ; 0x020C10B4
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r5, r2
+ mov r6, r0
+ mov r0, r1
+ mov r3, #0x0
+ ldr r2, _020C1140 ; =PlayerHeapDisposeCallback
+ add r1, r5, #0x14
+ str r3, [sp, #0x0]
+ bl NNS_SndHeapAlloc
+ movs r4, r0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ mov r2, #0x0
+ str r2, [r4, #0xc]
+ str r6, [r4, #0x10]
+ mov r1, r5
+ add r0, r4, #0x14
+ str r2, [r4, #0x8]
+ bl NNS_SndHeapCreate
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r2, _020C1144 ; =sPlayer
+ mov r1, #0x24
+ mla r2, r6, r1, r2
+ str r0, [r4, #0x8]
+ mov r1, r4
+ add r0, r2, #0xc
+ bl NNS_FndAppendListObject
+ mov r0, #0x1
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C1140: .word PlayerHeapDisposeCallback
+_020C1144: .word sPlayer
+
+ arm_func_start NNS_SndPlayerSetAllocatableChannel
+NNS_SndPlayerSetAllocatableChannel: ; 0x020C1148
+ mov r2, #0x24
+ mul r2, r0, r2
+ ldr r0, _020C115C ; =sPlayer + 0x1C
+ str r1, [r0, r2]
+ bx lr
+ .balign 4
+_020C115C: .word sPlayer + 0x1C
+
+ arm_func_start NNS_SndPlayerSetPlayableSeqCount
+NNS_SndPlayerSetPlayableSeqCount: ; 0x020C1160
+ mov r2, #0x24
+ mul r2, r0, r2
+ mov r0, r1, lsl #0x10
+ ldr r1, _020C117C ; =sPlayer + 0x18
+ mov r0, r0, lsr #0x10
+ str r0, [r1, r2]
+ bx lr
+ .balign 4
+_020C117C: .word sPlayer + 0x18
+
+ arm_func_start NNS_SndPlayerSetPlayerVolume
+NNS_SndPlayerSetPlayerVolume: ; 0x020C1180
+ mov r2, #0x24
+ mul r2, r0, r2
+ ldr r0, _020C1194 ; =sPlayer + 0x20
+ strb r1, [r0, r2]
+ bx lr
+ .balign 4
+_020C1194: .word sPlayer + 0x20
diff --git a/arm9/asm/NNS_SND_resource_mgr.s b/arm9/asm/NNS_SND_resource_mgr.s
new file mode 100644
index 00000000..944754cc
--- /dev/null
+++ b/arm9/asm/NNS_SND_resource_mgr.s
@@ -0,0 +1,129 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sCaptureLock
+sCaptureLock: ; 0x021D1CB0
+ .space 0x4
+
+ .global sAlarmLock
+sAlarmLock: ; 0x021D1CB4
+ .space 0x4
+
+ .global sChannelLock
+sChannelLock: ; 0x021D1CB8
+ .space 0x4
+
+ .section .text
+
+ arm_func_start NNSi_SndInitResourceMgr
+NNSi_SndInitResourceMgr: ; 0x020C0270
+ ldr r2, _020C0290 ; =sChannelLock
+ mov r3, #0x0
+ ldr r1, _020C0294 ; =sCaptureLock
+ ldr r0, _020C0298 ; =sAlarmLock
+ str r3, [r2, #0x0]
+ str r3, [r1, #0x0]
+ str r3, [r0, #0x0]
+ bx lr
+ .balign 4
+_020C0290: .word sChannelLock
+_020C0294: .word sCaptureLock
+_020C0298: .word sAlarmLock
+
+ arm_func_start NNS_SndFreeAlarm
+NNS_SndFreeAlarm: ; 0x020C029C
+ ldr r1, _020C02B8 ; =sAlarmLock
+ mov r2, #0x1
+ mvn r0, r2, lsl r0
+ ldr r2, [r1, #0x0]
+ and r0, r2, r0
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020C02B8: .word sAlarmLock
+
+ arm_func_start NNS_SndAllocAlarm
+NNS_SndAllocAlarm: ; 0x020C02BC
+ ldr r0, _020C02FC ; =sAlarmLock
+ mov r3, #0x1
+ ldr r2, [r0, #0x0]
+ mov r0, #0x0
+_020C02CC:
+ ands r1, r2, r3
+ ldreq r1, _020C02FC ; =sAlarmLock
+ ldreq r2, [r1, #0x0]
+ orreq r2, r2, r3
+ streq r2, [r1, #0x0]
+ bxeq lr
+ add r0, r0, #0x1
+ cmp r0, #0x8
+ mov r3, r3, lsl #0x1
+ blt _020C02CC
+ mvn r0, #0x0
+ bx lr
+ .balign 4
+_020C02FC: .word sAlarmLock
+
+ arm_func_start NNS_SndUnlockCapture
+NNS_SndUnlockCapture: ; 0x020C0300
+ ldr r1, _020C0318 ; =sCaptureLock
+ mvn r0, r0
+ ldr r2, [r1, #0x0]
+ and r0, r2, r0
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020C0318: .word sCaptureLock
+
+ arm_func_start NNS_SndLockCapture
+NNS_SndLockCapture: ; 0x020C031C
+ ldr r1, _020C033C ; =sCaptureLock
+ ldr r2, [r1, #0x0]
+ ands r3, r0, r2
+ movne r0, #0x0
+ orreq r0, r2, r0
+ streq r0, [r1, #0x0]
+ moveq r0, #0x1
+ bx lr
+ .balign 4
+_020C033C: .word sCaptureLock
+
+ arm_func_start NNS_SndUnlockChannel
+NNS_SndUnlockChannel: ; 0x020C0340
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ ldmeqia sp!, {r4,pc}
+ mov r1, #0x0
+ bl SND_UnlockChannel
+ ldr r0, _020C036C ; =sChannelLock
+ mvn r1, r4
+ ldr r2, [r0, #0x0]
+ and r1, r2, r1
+ str r1, [r0, #0x0]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C036C: .word sChannelLock
+
+ arm_func_start NNS_SndLockChannel
+NNS_SndLockChannel: ; 0x020C0370
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4,pc}
+ ldr r1, _020C03B4 ; =sChannelLock
+ ldr r1, [r1, #0x0]
+ ands r1, r4, r1
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ mov r1, #0x0
+ bl SND_LockChannel
+ ldr r1, _020C03B4 ; =sChannelLock
+ mov r0, #0x1
+ ldr r2, [r1, #0x0]
+ orr r2, r2, r4
+ str r2, [r1, #0x0]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C03B4: .word sChannelLock
diff --git a/arm9/asm/NNS_SND_seqdata.s b/arm9/asm/NNS_SND_seqdata.s
new file mode 100644
index 00000000..60cf2420
--- /dev/null
+++ b/arm9/asm/NNS_SND_seqdata.s
@@ -0,0 +1,23 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start NNSi_SndSeqArcGetSeqInfo
+NNSi_SndSeqArcGetSeqInfo: ; 0x020C3D9C
+ cmp r1, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r2, [r0, #0x1c]
+ cmp r1, r2
+ movcs r0, #0x0
+ bxcs lr
+ mov r2, #0xc
+ mul r2, r1, r2
+ add r3, r0, #0x20
+ ldr r1, [r3, r2]
+ mvn r0, #0x0
+ cmp r1, r0
+ add r0, r3, r2
+ moveq r0, #0x0
+ bx lr
diff --git a/arm9/asm/NNS_SND_sndarc.s b/arm9/asm/NNS_SND_sndarc.s
new file mode 100644
index 00000000..aa46de46
--- /dev/null
+++ b/arm9/asm/NNS_SND_sndarc.s
@@ -0,0 +1,525 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sCurrent
+sCurrent: ; 0x021D28C0
+ .space 0x4
+
+ .section .text
+
+ arm_func_start SymbolDisposeCallback
+SymbolDisposeCallback: ; 0x020C209C
+ mov r0, #0x0
+ str r0, [r2, #0x88]
+ bx lr
+
+ arm_func_start FatDisposeCallback
+FatDisposeCallback: ; 0x020C20A8
+ mov r0, #0x0
+ str r0, [r2, #0x84]
+ bx lr
+
+ arm_func_start InfoDisposeCallback
+InfoDisposeCallback: ; 0x020C20B4
+ mov r0, #0x0
+ str r0, [r2, #0x8c]
+ bx lr
+
+ arm_func_start NNS_SndArcSetFileAddress
+NNS_SndArcSetFileAddress: ; 0x020C20C0
+ ldr r2, _020C20D8 ; =sCurrent
+ ldr r2, [r2, #0x0]
+ ldr r2, [r2, #0x84]
+ add r0, r2, r0, lsl #0x4
+ str r1, [r0, #0x14]
+ bx lr
+ .balign 4
+_020C20D8: .word sCurrent
+
+ arm_func_start NNS_SndArcGetFileAddress
+NNS_SndArcGetFileAddress: ; 0x020C20DC
+ ldr r1, _020C2100 ; =sCurrent
+ ldr r1, [r1, #0x0]
+ ldr r2, [r1, #0x84]
+ ldr r1, [r2, #0x8]
+ cmp r0, r1
+ movcs r0, #0x0
+ addcc r0, r2, r0, lsl #0x4
+ ldrcc r0, [r0, #0x14]
+ bx lr
+ .balign 4
+_020C2100: .word sCurrent
+
+ arm_func_start NNS_SndArcReadFile
+NNS_SndArcReadFile: ; 0x020C2104
+ stmdb sp!, {r4-r6,lr}
+ ldr r4, _020C2178 ; =sCurrent
+ mov r5, r2
+ ldr r4, [r4, #0x0]
+ mov r6, r1
+ ldr r2, [r4, #0x84]
+ ldr r1, [r2, #0x8]
+ cmp r0, r1
+ mvncs r0, #0x0
+ ldmcsia sp!, {r4-r6,pc}
+ add r1, r2, #0xc
+ add r1, r1, r0, lsl #0x4
+ ldr r0, [r1, #0x4]
+ ldr r1, [r1, #0x0]
+ sub r0, r0, r3
+ cmp r5, r0
+ movhi r5, r0
+ add r0, r4, #0x34
+ add r1, r1, r3
+ mov r2, #0x0
+ bl FS_SeekFile
+ cmp r0, #0x0
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ mov r1, r6
+ mov r2, r5
+ add r0, r4, #0x34
+ bl FS_ReadFile
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C2178: .word sCurrent
+
+ arm_func_start NNS_SndArcGetFileSize
+NNS_SndArcGetFileSize: ; 0x020C217C
+ ldr r1, _020C21A0 ; =sCurrent
+ ldr r1, [r1, #0x0]
+ ldr r2, [r1, #0x84]
+ ldr r1, [r2, #0x8]
+ cmp r0, r1
+ movcs r0, #0x0
+ addcc r0, r2, r0, lsl #0x4
+ ldrcc r0, [r0, #0x10]
+ bx lr
+ .balign 4
+_020C21A0: .word sCurrent
+
+ arm_func_start NNS_SndArcGetGroupInfo
+NNS_SndArcGetGroupInfo: ; 0x020C21A4
+ ldr r1, _020C2204 ; =sCurrent
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x8c]
+ ldr r1, [r2, #0x1c]
+ cmp r1, #0x0
+ moveq r2, #0x0
+ addne r2, r2, r1
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r1, [r2, #0x0]
+ cmp r0, r1
+ movcs r0, #0x0
+ bxcs lr
+ add r0, r2, r0, lsl #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, [r3, #0x8c]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ addne r0, r0, r1
+ bx lr
+ .balign 4
+_020C2204: .word sCurrent
+
+ arm_func_start NNS_SndArcGetPlayerInfo
+NNS_SndArcGetPlayerInfo: ; 0x020C2208
+ ldr r1, _020C2268 ; =sCurrent
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x8c]
+ ldr r1, [r2, #0x18]
+ cmp r1, #0x0
+ moveq r2, #0x0
+ addne r2, r2, r1
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r1, [r2, #0x0]
+ cmp r0, r1
+ movcs r0, #0x0
+ bxcs lr
+ add r0, r2, r0, lsl #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, [r3, #0x8c]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ addne r0, r0, r1
+ bx lr
+ .balign 4
+_020C2268: .word sCurrent
+
+ arm_func_start NNS_SndArcGetWaveArcInfo
+NNS_SndArcGetWaveArcInfo: ; 0x020C226C
+ ldr r1, _020C22CC ; =sCurrent
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x8c]
+ ldr r1, [r2, #0x14]
+ cmp r1, #0x0
+ moveq r2, #0x0
+ addne r2, r2, r1
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r1, [r2, #0x0]
+ cmp r0, r1
+ movcs r0, #0x0
+ bxcs lr
+ add r0, r2, r0, lsl #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, [r3, #0x8c]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ addne r0, r0, r1
+ bx lr
+ .balign 4
+_020C22CC: .word sCurrent
+
+ arm_func_start NNS_SndArcGetBankInfo
+NNS_SndArcGetBankInfo: ; 0x020C22D0
+ ldr r1, _020C2330 ; =sCurrent
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x8c]
+ ldr r1, [r2, #0x10]
+ cmp r1, #0x0
+ moveq r2, #0x0
+ addne r2, r2, r1
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r1, [r2, #0x0]
+ cmp r0, r1
+ movcs r0, #0x0
+ bxcs lr
+ add r0, r2, r0, lsl #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, [r3, #0x8c]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ addne r0, r0, r1
+ bx lr
+ .balign 4
+_020C2330: .word sCurrent
+
+ arm_func_start NNS_SndArcGetSeqArcInfo
+NNS_SndArcGetSeqArcInfo: ; 0x020C2334
+ ldr r1, _020C2394 ; =sCurrent
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x8c]
+ ldr r1, [r2, #0xc]
+ cmp r1, #0x0
+ moveq r2, #0x0
+ addne r2, r2, r1
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r1, [r2, #0x0]
+ cmp r0, r1
+ movcs r0, #0x0
+ bxcs lr
+ add r0, r2, r0, lsl #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, [r3, #0x8c]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ addne r0, r0, r1
+ bx lr
+ .balign 4
+_020C2394: .word sCurrent
+
+ arm_func_start NNS_SndArcGetSeqInfo
+NNS_SndArcGetSeqInfo: ; 0x020C2398
+ ldr r1, _020C23F8 ; =sCurrent
+ ldr r3, [r1, #0x0]
+ ldr r2, [r3, #0x8c]
+ ldr r1, [r2, #0x8]
+ cmp r1, #0x0
+ moveq r2, #0x0
+ addne r2, r2, r1
+ cmp r2, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ movlt r0, #0x0
+ bxlt lr
+ ldr r1, [r2, #0x0]
+ cmp r0, r1
+ movcs r0, #0x0
+ bxcs lr
+ add r0, r2, r0, lsl #0x2
+ ldr r1, [r0, #0x4]
+ ldr r0, [r3, #0x8c]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ addne r0, r0, r1
+ bx lr
+ .balign 4
+_020C23F8: .word sCurrent
+
+ arm_func_start NNS_SndArcGetSeqParam
+NNS_SndArcGetSeqParam: ; 0x020C23FC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl NNS_SndArcGetSeqInfo
+ cmp r0, #0x0
+ moveq r0, #0x0
+ addne r0, r0, #0x4
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndArcGetCurrent
+NNS_SndArcGetCurrent: ; 0x020C241C
+ ldr r0, _020C2428 ; =sCurrent
+ ldr r0, [r0, #0x0]
+ bx lr
+ .balign 4
+_020C2428: .word sCurrent
+
+ arm_func_start NNS_SndArcSetCurrent
+NNS_SndArcSetCurrent: ; 0x020C242C
+ ldr r1, _020C2440 ; =sCurrent
+ ldr r2, [r1, #0x0]
+ str r0, [r1, #0x0]
+ mov r0, r2
+ bx lr
+ .balign 4
+_020C2440: .word sCurrent
+
+ arm_func_start NNS_SndArcInitOnMemory
+NNS_SndArcInitOnMemory: ; 0x020C2444
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ mov r4, r1
+ mov r0, r4
+ mov r1, r5
+ mov r2, #0x30
+ bl MIi_CpuCopy32
+ ldr r0, [r5, #0x18]
+ mov r12, #0x0
+ cmp r0, #0x0
+ moveq r0, #0x0
+ addne r0, r4, r0
+ str r0, [r5, #0x8c]
+ ldr r0, [r5, #0x20]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ addne r0, r4, r0
+ str r0, [r5, #0x84]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ addne r0, r4, r0
+ str r0, [r5, #0x88]
+ ldr r2, [r5, #0x84]
+ ldr r0, [r2, #0x8]
+ cmp r0, #0x0
+ bls _020C24F0
+ mov r3, r12
+ mov r1, r12
+_020C24BC:
+ add r2, r2, #0xc
+ ldr r0, [r2, r3]
+ add r2, r2, r3
+ cmp r0, #0x0
+ moveq r0, r1
+ addne r0, r4, r0
+ str r0, [r2, #0x8]
+ ldr r2, [r5, #0x84]
+ add r12, r12, #0x1
+ ldr r0, [r2, #0x8]
+ add r3, r3, #0x10
+ cmp r12, r0
+ blo _020C24BC
+_020C24F0:
+ mov r1, #0x0
+ ldr r0, _020C2508 ; =sCurrent
+ str r1, [r5, #0x30]
+ str r5, [r0, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C2508: .word sCurrent
+SDATi_ReadHeaders:
+ stmdb sp!, {r4-r6,lr}
+ sub sp, sp, #0x8
+ mov r6, r0
+ mov r5, r1
+ mov r1, #0x0
+ mov r4, r2
+ mov r2, r1
+ add r0, r6, #0x34
+ bl FS_SeekFile
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ mov r1, r6
+ add r0, r6, #0x34
+ mov r2, #0x30
+ bl FS_ReadFile
+ cmp r0, #0x30
+ addne sp, sp, #0x8
+ movne r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+ cmp r5, #0x0
+ beq _020C26E0
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [r6, #0x1c]
+ ldr r2, _020C26EC ; =InfoDisposeCallback
+ mov r0, r5
+ mov r3, r6
+ bl NNS_SndHeapAlloc
+ str r0, [r6, #0x8c]
+ ldr r0, [r6, #0x8c]
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x18]
+ add r0, r6, #0x34
+ mov r2, #0x0
+ bl FS_SeekFile
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x8c]
+ ldr r2, [r6, #0x1c]
+ add r0, r6, #0x34
+ bl FS_ReadFile
+ ldr r1, [r6, #0x1c]
+ cmp r0, r1
+ addne sp, sp, #0x8
+ movne r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldr r1, [r6, #0x24]
+ ldr r2, _020C26F0 ; =FatDisposeCallback
+ mov r0, r5
+ mov r3, r6
+ bl NNS_SndHeapAlloc
+ str r0, [r6, #0x84]
+ ldr r0, [r6, #0x84]
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x20]
+ add r0, r6, #0x34
+ mov r2, #0x0
+ bl FS_SeekFile
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x84]
+ ldr r2, [r6, #0x24]
+ add r0, r6, #0x34
+ bl FS_ReadFile
+ ldr r1, [r6, #0x24]
+ cmp r0, r1
+ addne sp, sp, #0x8
+ movne r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+ cmp r4, #0x0
+ beq _020C26E0
+ ldr r1, [r6, #0x14]
+ cmp r1, #0x0
+ beq _020C26E0
+ mov r4, #0x0
+ ldr r2, _020C26F4 ; =SymbolDisposeCallback
+ mov r0, r5
+ mov r3, r6
+ str r4, [sp, #0x0]
+ bl NNS_SndHeapAlloc
+ str r0, [r6, #0x88]
+ ldr r0, [r6, #0x88]
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, r4
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x10]
+ add r0, r6, #0x34
+ mov r2, r4
+ bl FS_SeekFile
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, r4
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r1, [r6, #0x88]
+ ldr r2, [r6, #0x14]
+ add r0, r6, #0x34
+ bl FS_ReadFile
+ ldr r1, [r6, #0x14]
+ cmp r0, r1
+ addne sp, sp, #0x8
+ movne r0, r4
+ ldmneia sp!, {r4-r6,pc}
+_020C26E0:
+ mov r0, #0x1
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C26EC: .word InfoDisposeCallback
+_020C26F0: .word FatDisposeCallback
+_020C26F4: .word SymbolDisposeCallback
+
+ arm_func_start NNS_SndArcInit
+NNS_SndArcInit: ; 0x020C26F8
+ ; r0: &sSoundDataBuffer
+ ; r1: char* filename
+ ; r2: (&sSoundDataBuffer)->unk_0090
+ ; r3: 0
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r0
+ mov r12, #0x0
+ str r12, [r6, #0x8c]
+ str r12, [r6, #0x84]
+ add r0, r6, #0x7c
+ mov r5, r2
+ mov r4, r3
+ str r12, [r6, #0x88]
+ bl FS_ConvertPathToFileID
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ add r0, r6, #0x34
+ bl FS_InitFile
+ add r1, r6, #0x7c
+ add r0, r6, #0x34
+ ldmia r1, {r1-r2}
+ bl FS_OpenFileFast
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,pc}
+ mov r3, #0x1
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ str r3, [r6, #0x30]
+ bl SDATi_ReadHeaders
+ cmp r0, #0x0
+ ldrne r0, _020C2770 ; =sCurrent
+ strne r6, [r0, #0x0]
+ ldmia sp!, {r4-r6,pc}
+ .balign 4
+_020C2770: .word sCurrent
diff --git a/arm9/asm/NNS_SND_sndarc_loader.s b/arm9/asm/NNS_SND_sndarc_loader.s
new file mode 100644
index 00000000..26636305
--- /dev/null
+++ b/arm9/asm/NNS_SND_sndarc_loader.s
@@ -0,0 +1,872 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global waveArcHeader$8213
+waveArcHeader$8213: ; 0x021D28C4
+ .space 0x3c
+
+ .section .text
+
+ arm_func_start LoadSingleWaves
+LoadSingleWaves: ; 0x020C2B1C
+ stmdb sp!, {r4-r10,lr}
+ sub sp, sp, #0x20
+ mov r8, r0
+ add r0, sp, #0x8
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ ldr r4, [sp, #0x40]
+ bl SND_GetFirstInstDataPos
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ cmp r7, #0x0
+ add r2, sp, #0x0
+ addeq sp, sp, #0x20
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r10,pc}
+ add r1, sp, #0x10
+ mov r0, r7
+ bl SND_GetNextInstData
+ cmp r0, #0x0
+ beq _020C2BD4
+ add r10, sp, #0x10
+ add r9, sp, #0x0
+_020C2B80:
+ ldrb r0, [sp, #0x10]
+ cmp r0, #0x1
+ bne _020C2BBC
+ ldrh r0, [sp, #0x14]
+ cmp r6, r0
+ bne _020C2BBC
+ ldrh r1, [sp, #0x12]
+ mov r0, r8
+ mov r2, r5
+ mov r3, r4
+ bl LoadSingleWave
+ cmp r0, #0x0
+ addeq sp, sp, #0x20
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r10,pc}
+_020C2BBC:
+ mov r0, r7
+ mov r1, r10
+ mov r2, r9
+ bl SND_GetNextInstData
+ cmp r0, #0x0
+ bne _020C2B80
+_020C2BD4:
+ mov r0, #0x1
+ add sp, sp, #0x20
+ ldmia sp!, {r4-r10,pc}
+
+ arm_func_start LoadSingleWave
+LoadSingleWave: ; 0x020C2BE0
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl SND_GetWaveDataAddress
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ movne r0, #0x1
+ ldmneia sp!, {r4-r9,pc}
+ mov r0, r7
+ bl SND_GetWaveDataCount
+ ldr r1, [r7, #0x38]
+ sub r0, r0, #0x1
+ add r1, r1, r6
+ add r1, r7, r1, lsl #0x2
+ cmp r6, r0
+ ldrcc r0, [r1, #0x40]
+ ldr r8, [r1, #0x3c]
+ ldrcs r0, [r7, #0x8]
+ cmp r4, #0x0
+ sub r9, r0, r8
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9,pc}
+ ldr r2, _020C2CBC ; =SingleWaveDisposeCallback
+ mov r0, r4
+ mov r3, r7
+ add r1, r9, #0x20
+ str r6, [sp, #0x0]
+ bl NNS_SndHeapAlloc
+ movs r4, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9,pc}
+ mov r0, r5
+ mov r1, r4
+ mov r2, r9
+ mov r3, r8
+ bl NNS_SndArcReadFile
+ cmp r9, r0
+ addne sp, sp, #0x4
+ movne r0, #0x0
+ ldmneia sp!, {r4-r9,pc}
+ mov r0, r4
+ mov r1, r9
+ bl DC_StoreRange
+ mov r0, r7
+ mov r1, r6
+ mov r2, r4
+ bl SND_SetWaveDataAddress
+ mov r0, #0x1
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020C2CBC: .word SingleWaveDisposeCallback
+
+ arm_func_start SingleWaveDisposeCallback
+SingleWaveDisposeCallback: ; 0x020C2CC0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r5, r2
+ mov r7, r0
+ mov r4, r3
+ mov r6, r1
+ mov r0, r5
+ mov r1, r4
+ bl SND_GetWaveDataAddress
+ cmp r7, r0
+ bne _020C2CFC
+ mov r0, r5
+ mov r1, r4
+ mov r2, #0x0
+ bl SND_SetWaveDataAddress
+_020C2CFC:
+ mov r0, r7
+ add r1, r7, r6
+ bl SND_InvalidateWaveData
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+
+ arm_func_start WaveArcTableDisposeCallback
+WaveArcTableDisposeCallback: ; 0x020C2D10
+ stmdb sp!, {r4,lr}
+ mov r1, r2
+ mov r4, r0
+ mov r2, r3
+ bl DisposeCallback
+ mov r0, r4
+ bl SND_DestroyWaveArc
+ ldmia sp!, {r4,pc}
+
+ arm_func_start WaveArcDisposeCallback
+WaveArcDisposeCallback: ; 0x020C2D30
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r1, r2
+ mov r5, r0
+ mov r2, r3
+ bl DisposeCallback
+ mov r0, r5
+ add r1, r5, r4
+ bl SND_InvalidateWaveData
+ mov r0, r5
+ bl SND_DestroyWaveArc
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start BankDisposeCallback
+BankDisposeCallback: ; 0x020C2D68
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r1, r2
+ mov r5, r0
+ mov r2, r3
+ bl DisposeCallback
+ mov r0, r5
+ add r1, r5, r4
+ bl SND_InvalidateBankData
+ mov r0, r5
+ bl SND_DestroyBank
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start SeqDisposeCallback
+SeqDisposeCallback: ; 0x020C2DA0
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r1
+ mov r1, r2
+ mov r5, r0
+ mov r2, r3
+ bl DisposeCallback
+ mov r0, r5
+ add r1, r5, r4
+ bl SND_InvalidateSeqData
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start DisposeCallback
+DisposeCallback: ; 0x020C2DD0
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ movs r5, r1
+ mov r7, r0
+ mov r6, r2
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r7,pc}
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r0, r5
+ bl NNS_SndArcSetCurrent
+ mov r5, r0
+ mov r0, r6
+ bl NNS_SndArcGetFileAddress
+ cmp r7, r0
+ bne _020C2E1C
+ mov r0, r6
+ mov r1, #0x0
+ bl NNS_SndArcSetFileAddress
+_020C2E1C:
+ mov r0, r5
+ bl NNS_SndArcSetCurrent
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+
+ arm_func_start LoadWaveArcTable
+LoadWaveArcTable: ; 0x020C2E34
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r9, r0
+ mov r8, r1
+ mov r7, r2
+ bl NNS_SndArcGetFileAddress
+ movs r6, r0
+ bne _020C2F40
+ ldr r1, _020C2F4C ; =waveArcHeader$8213
+ mov r0, r9
+ mov r2, #0x3c
+ mov r3, #0x0
+ bl NNS_SndArcReadFile
+ cmp r0, #0x3c
+ addne sp, sp, #0x4
+ movne r0, #0x0
+ ldmneia sp!, {r4-r9,pc}
+ ldr r0, _020C2F4C ; =waveArcHeader$8213
+ cmp r8, #0x0
+ ldr r0, [r0, #0x38]
+ addeq sp, sp, #0x4
+ mov r4, r0, lsl #0x2
+ mov r0, r4, lsl #0x1
+ add r5, r0, #0x3c
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9,pc}
+ cmp r7, #0x0
+ moveq r3, #0x0
+ beq _020C2EB0
+ bl NNS_SndArcGetCurrent
+ mov r3, r0
+_020C2EB0:
+ ldr r2, _020C2F50 ; =WaveArcTableDisposeCallback
+ mov r0, r8
+ add r1, r5, #0x20
+ str r9, [sp, #0x0]
+ bl NNS_SndHeapAlloc
+ movs r6, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r9,pc}
+ mov r0, r9
+ mov r1, r6
+ add r2, r4, #0x3c
+ mov r3, #0x0
+ bl NNS_SndArcReadFile
+ add r1, r4, #0x3c
+ cmp r0, r1
+ addne sp, sp, #0x4
+ movne r0, #0x0
+ ldmneia sp!, {r4-r9,pc}
+ ldr r1, [r6, #0x38]
+ add r0, r6, #0x3c
+ mov r2, r4
+ add r1, r0, r1, lsl #0x2
+ bl MI_CpuCopy8
+ mov r2, r4
+ add r0, r6, #0x3c
+ mov r1, #0x0
+ bl MI_CpuFill8
+ mov r0, r6
+ mov r1, r5
+ bl DC_StoreRange
+ cmp r7, #0x0
+ beq _020C2F40
+ mov r0, r9
+ mov r1, r6
+ bl NNS_SndArcSetFileAddress
+_020C2F40:
+ mov r0, r6
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020C2F4C: .word waveArcHeader$8213
+_020C2F50: .word WaveArcTableDisposeCallback
+
+ arm_func_start LoadWaveArc
+LoadWaveArc: ; 0x020C2F54
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl NNS_SndArcGetFileAddress
+ movs r4, r0
+ bne _020C2FBC
+ cmp r5, #0x0
+ moveq r2, #0x0
+ beq _020C2F88
+ bl NNS_SndArcGetCurrent
+ mov r2, r0
+_020C2F88:
+ ldr r1, _020C2FC8 ; =WaveArcDisposeCallback
+ mov r0, r7
+ mov r3, r7
+ str r6, [sp, #0x0]
+ bl NNSi_SndArcLoadFile
+ mov r4, r0
+ cmp r5, #0x0
+ beq _020C2FBC
+ cmp r4, #0x0
+ beq _020C2FBC
+ mov r0, r7
+ mov r1, r4
+ bl NNS_SndArcSetFileAddress
+_020C2FBC:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C2FC8: .word WaveArcDisposeCallback
+
+ arm_func_start LoadBank
+LoadBank: ; 0x020C2FCC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl NNS_SndArcGetFileAddress
+ movs r4, r0
+ bne _020C3034
+ cmp r5, #0x0
+ moveq r2, #0x0
+ beq _020C3000
+ bl NNS_SndArcGetCurrent
+ mov r2, r0
+_020C3000:
+ ldr r1, _020C3040 ; =BankDisposeCallback
+ mov r0, r7
+ mov r3, r7
+ str r6, [sp, #0x0]
+ bl NNSi_SndArcLoadFile
+ mov r4, r0
+ cmp r5, #0x0
+ beq _020C3034
+ cmp r4, #0x0
+ beq _020C3034
+ mov r0, r7
+ mov r1, r4
+ bl NNS_SndArcSetFileAddress
+_020C3034:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C3040: .word BankDisposeCallback
+
+ arm_func_start LoadSeqArc
+LoadSeqArc: ; 0x020C3044
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl NNS_SndArcGetFileAddress
+ movs r4, r0
+ bne _020C30AC
+ cmp r5, #0x0
+ moveq r2, #0x0
+ beq _020C3078
+ bl NNS_SndArcGetCurrent
+ mov r2, r0
+_020C3078:
+ ldr r1, _020C30B8 ; =SeqDisposeCallback
+ mov r0, r7
+ mov r3, r7
+ str r6, [sp, #0x0]
+ bl NNSi_SndArcLoadFile
+ mov r4, r0
+ cmp r5, #0x0
+ beq _020C30AC
+ cmp r4, #0x0
+ beq _020C30AC
+ mov r0, r7
+ mov r1, r4
+ bl NNS_SndArcSetFileAddress
+_020C30AC:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C30B8: .word SeqDisposeCallback
+
+ arm_func_start LoadSeq
+LoadSeq: ; 0x020C30BC
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ bl NNS_SndArcGetFileAddress
+ movs r4, r0
+ bne _020C3124
+ cmp r5, #0x0
+ moveq r2, #0x0
+ beq _020C30F0
+ bl NNS_SndArcGetCurrent
+ mov r2, r0
+_020C30F0:
+ ldr r1, _020C3130 ; =SeqDisposeCallback
+ mov r0, r7
+ mov r3, r7
+ str r6, [sp, #0x0]
+ bl NNSi_SndArcLoadFile
+ mov r4, r0
+ cmp r5, #0x0
+ beq _020C3124
+ cmp r4, #0x0
+ beq _020C3124
+ mov r0, r7
+ mov r1, r4
+ bl NNS_SndArcSetFileAddress
+_020C3124:
+ mov r0, r4
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C3130: .word SeqDisposeCallback
+
+ arm_func_start NNSi_SndArcLoadFile
+NNSi_SndArcLoadFile: ; 0x020C3134
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x8
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r4, r3
+ bl NNS_SndArcGetFileSize
+ movs r5, r0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ ldr r0, [sp, #0x20]
+ cmp r0, #0x0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ mov r2, r7
+ mov r3, r6
+ add r1, r5, #0x20
+ str r4, [sp, #0x0]
+ bl NNS_SndHeapAlloc
+ movs r4, r0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ mov r0, r8
+ mov r1, r4
+ mov r2, r5
+ mov r3, #0x0
+ bl NNS_SndArcReadFile
+ cmp r5, r0
+ addne sp, sp, #0x8
+ movne r0, #0x0
+ ldmneia sp!, {r4-r8,pc}
+ mov r0, r4
+ mov r1, r5
+ bl DC_StoreRange
+ mov r0, r4
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r8,pc}
+
+ arm_func_start NNSi_SndArcLoadWaveArc
+NNSi_SndArcLoadWaveArc: ; 0x020C31D4
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl NNS_SndArcGetWaveArcInfo
+ cmp r0, #0x0
+ moveq r0, #0x5
+ ldmeqia sp!, {r4-r6,pc}
+ ands r1, r6, #0x4
+ beq _020C324C
+ ldrb r1, [r0, #0x3]
+ ands r1, r1, #0x1
+ beq _020C3224
+ ldr r0, [r0, #0x0]
+ mov r1, r5
+ mov r0, r0, lsl #0x8
+ mov r2, r4
+ mov r0, r0, lsr #0x8
+ bl LoadWaveArcTable
+ b _020C323C
+_020C3224:
+ ldr r0, [r0, #0x0]
+ mov r1, r5
+ mov r0, r0, lsl #0x8
+ mov r2, r4
+ mov r0, r0, lsr #0x8
+ bl LoadWaveArc
+_020C323C:
+ cmp r0, #0x0
+ bne _020C325C
+ mov r0, #0x9
+ ldmia sp!, {r4-r6,pc}
+_020C324C:
+ ldr r0, [r0, #0x0]
+ mov r0, r0, lsl #0x8
+ mov r0, r0, lsr #0x8
+ bl NNS_SndArcGetFileAddress
+_020C325C:
+ ldr r1, [sp, #0x10]
+ cmp r1, #0x0
+ strne r0, [r1, #0x0]
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start NNSi_SndArcLoadBank
+NNSi_SndArcLoadBank: ; 0x020C3270
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r10, r1
+ mov r9, r2
+ mov r11, r3
+ bl NNS_SndArcGetBankInfo
+ movs r8, r0
+ addeq sp, sp, #0xc
+ moveq r0, #0x4
+ ldmeqia sp!, {r4-r11,pc}
+ ands r0, r10, #0x2
+ beq _020C32C4
+ ldr r0, [r8, #0x0]
+ mov r1, r9
+ mov r2, r11
+ bl LoadBank
+ movs r7, r0
+ bne _020C32D0
+ add sp, sp, #0xc
+ mov r0, #0x8
+ ldmia sp!, {r4-r11,pc}
+_020C32C4:
+ ldr r0, [r8, #0x0]
+ bl NNS_SndArcGetFileAddress
+ mov r7, r0
+_020C32D0:
+ and r5, r10, #0x4
+ mov r6, #0x0
+_020C32D8:
+ add r0, r8, r6, lsl #0x1
+ ldrh r0, [r0, #0x4]
+ ldr r1, _020C33B4 ; =0x0000FFFF
+ cmp r0, r1
+ beq _020C3390
+ bl NNS_SndArcGetWaveArcInfo
+ movs r4, r0
+ addeq sp, sp, #0xc
+ moveq r0, #0x5
+ ldmeqia sp!, {r4-r11,pc}
+ add r0, sp, #0x4
+ str r0, [sp, #0x0]
+ add r0, r8, r6, lsl #0x1
+ ldrh r0, [r0, #0x4]
+ mov r1, r10
+ mov r2, r9
+ mov r3, r11
+ bl NNSi_SndArcLoadWaveArc
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r11,pc}
+ ldrb r0, [r4, #0x3]
+ ands r0, r0, #0x1
+ beq _020C3370
+ cmp r5, #0x0
+ beq _020C3370
+ str r9, [sp, #0x0]
+ ldr r1, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ mov r3, r1, lsl #0x8
+ mov r1, r7
+ mov r2, r6
+ mov r3, r3, lsr #0x8
+ bl LoadSingleWaves
+ cmp r0, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x9
+ ldmeqia sp!, {r4-r11,pc}
+_020C3370:
+ cmp r7, #0x0
+ beq _020C3390
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020C3390
+ mov r0, r7
+ mov r1, r6
+ bl SND_AssignWaveArc
+_020C3390:
+ add r6, r6, #0x1
+ cmp r6, #0x4
+ blt _020C32D8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ strne r7, [r0, #0x0]
+ mov r0, #0x0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020C33B4: .word 0x0000FFFF
+
+ arm_func_start NNSi_SndArcLoadSeqArc
+NNSi_SndArcLoadSeqArc: ; 0x020C33B8
+ stmdb sp!, {r4-r6,lr}
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl NNS_SndArcGetSeqArcInfo
+ cmp r0, #0x0
+ moveq r0, #0x3
+ ldmeqia sp!, {r4-r6,pc}
+ ands r1, r6, #0x8
+ beq _020C3400
+ ldr r0, [r0, #0x0]
+ mov r1, r5
+ mov r2, r4
+ bl LoadSeqArc
+ cmp r0, #0x0
+ bne _020C3408
+ mov r0, #0x7
+ ldmia sp!, {r4-r6,pc}
+_020C3400:
+ ldr r0, [r0, #0x0]
+ bl NNS_SndArcGetFileAddress
+_020C3408:
+ ldr r1, [sp, #0x10]
+ cmp r1, #0x0
+ strne r0, [r1, #0x0]
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start NNSi_SndArcLoadSeq
+NNSi_SndArcLoadSeq: ; 0x020C341C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ bl NNS_SndArcGetSeqInfo
+ movs r4, r0
+ addeq sp, sp, #0x4
+ moveq r0, #0x2
+ ldmeqia sp!, {r4-r7,pc}
+ mov r0, #0x0
+ str r0, [sp, #0x0]
+ ldrh r0, [r4, #0x4]
+ mov r1, r7
+ mov r2, r6
+ mov r3, r5
+ bl NNSi_SndArcLoadBank
+ cmp r0, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {r4-r7,pc}
+ ands r0, r7, #0x1
+ beq _020C3498
+ ldr r0, [r4, #0x0]
+ mov r1, r6
+ mov r2, r5
+ bl LoadSeq
+ cmp r0, #0x0
+ bne _020C34A0
+ add sp, sp, #0x4
+ mov r0, #0x6
+ ldmia sp!, {r4-r7,pc}
+_020C3498:
+ ldr r0, [r4, #0x0]
+ bl NNS_SndArcGetFileAddress
+_020C34A0:
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ strne r0, [r1, #0x0]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+
+ arm_func_start NNSi_SndArcLoadGroup
+NNSi_SndArcLoadGroup: ; 0x020C34B8
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ mov r9, r1
+ bl NNS_SndArcGetGroupInfo
+ movs r8, r0
+ addeq sp, sp, #0xc
+ moveq r0, #0x1
+ ldmeqia sp!, {r4-r11,pc}
+ ldr r0, [r8, #0x0]
+ mov r7, #0x0
+ cmp r0, #0x0
+ bls _020C35D4
+ add r6, r8, #0x4
+ str r7, [sp, #0x4]
+ mov r11, r7
+ mov r10, r7
+ mov r5, r7
+ mov r4, #0x1
+_020C3500:
+ ldrb r0, [r6, #0x0]
+ cmp r0, #0x3
+ addls pc, pc, r0, lsl #0x2
+ b _020C35C0
+ ; Jump table
+ b _020C3520 ; case 0
+ b _020C3570 ; case 1
+ b _020C3598 ; case 2
+ b _020C3548 ; case 3
+_020C3520:
+ str r5, [sp, #0x0]
+ ldrb r1, [r6, #0x1]
+ ldr r0, [r6, #0x4]
+ mov r2, r9
+ mov r3, r4
+ bl NNSi_SndArcLoadSeq
+ cmp r0, #0x0
+ beq _020C35C0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+_020C3548:
+ str r10, [sp, #0x0]
+ ldrb r1, [r6, #0x1]
+ ldr r0, [r6, #0x4]
+ mov r2, r9
+ mov r3, r4
+ bl NNSi_SndArcLoadSeqArc
+ cmp r0, #0x0
+ beq _020C35C0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+_020C3570:
+ str r11, [sp, #0x0]
+ ldrb r1, [r6, #0x1]
+ ldr r0, [r6, #0x4]
+ mov r2, r9
+ mov r3, r4
+ bl NNSi_SndArcLoadBank
+ cmp r0, #0x0
+ beq _020C35C0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+_020C3598:
+ ldr r0, [sp, #0x4]
+ mov r2, r9
+ str r0, [sp, #0x0]
+ ldrb r1, [r6, #0x1]
+ ldr r0, [r6, #0x4]
+ mov r3, r4
+ bl NNSi_SndArcLoadWaveArc
+ cmp r0, #0x0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4-r11,pc}
+_020C35C0:
+ ldr r0, [r8, #0x0]
+ add r7, r7, #0x1
+ cmp r7, r0
+ add r6, r6, #0x8
+ blo _020C3500
+_020C35D4:
+ mov r0, #0x0
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+
+ arm_func_start NNS_SndArcLoadSeqEx
+NNS_SndArcLoadSeqEx: ; 0x020C35E0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r12, #0x0
+ mov r3, #0x1
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadSeq
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndArcLoadWaveArc
+NNS_SndArcLoadWaveArc: ; 0x020C360C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r12, #0x0
+ mov r1, #0xff
+ mov r3, #0x1
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadWaveArc
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndArcLoadBank
+NNS_SndArcLoadBank: ; 0x020C3640
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r12, #0x0
+ mov r1, #0xff
+ mov r3, #0x1
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadBank
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndArcLoadSeq
+NNS_SndArcLoadSeq: ; 0x020C3674
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ mov r2, r1
+ mov r12, #0x0
+ mov r1, #0xff
+ mov r3, #0x1
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadSeq
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndArcLoadGroup
+NNS_SndArcLoadGroup: ; 0x020C36A8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ bl NNSi_SndArcLoadGroup
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
diff --git a/arm9/asm/NNS_SND_sndarc_player.s b/arm9/asm/NNS_SND_sndarc_player.s
new file mode 100644
index 00000000..c043967b
--- /dev/null
+++ b/arm9/asm/NNS_SND_sndarc_player.s
@@ -0,0 +1,261 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .text
+
+ arm_func_start StartSeqArc
+StartSeqArc: ; 0x020C36C8
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x8
+ mov r7, r2
+ mov r2, r3
+ ldr r6, [sp, #0x20]
+ mov r4, r0
+ mov r8, r1
+ bl NNSi_SndPlayerAllocSeqPlayer
+ movs r5, r0
+ addeq sp, sp, #0x8
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ mov r0, r8
+ mov r1, r5
+ bl NNSi_SndPlayerAllocHeap
+ add r12, sp, #0x4
+ mov r2, r0
+ mov r0, r7
+ mov r1, #0x6
+ mov r3, #0x0
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadBank
+ cmp r0, #0x0
+ beq _020C373C
+ mov r0, r5
+ bl NNSi_SndPlayerFreeSeqPlayer
+ add sp, sp, #0x8
+ mov r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020C373C:
+ ldr r12, [sp, #0x24]
+ ldr r2, [r6, #0x0]
+ ldr r1, [r12, #0x18]
+ ldr r3, [sp, #0x4]
+ mov r0, r5
+ add r1, r12, r1
+ bl NNSi_SndPlayerStartSeq
+ ldrb r1, [r6, #0x6]
+ mov r0, r4
+ bl NNS_SndPlayerSetInitialVolume
+ ldrb r1, [r6, #0x7]
+ mov r0, r4
+ bl NNS_SndPlayerSetChannelPriority
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x2c]
+ mov r0, r4
+ bl NNS_SndPlayerSetSeqArcNo
+ mov r0, #0x1
+ add sp, sp, #0x8
+ ldmia sp!, {r4-r8,pc}
+
+ arm_func_start StartSeq
+StartSeq: ; 0x020C378C
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ mov r8, r2
+ mov r2, r3
+ ldr r5, [sp, #0x28]
+ mov r6, r0
+ mov r7, r1
+ bl NNSi_SndPlayerAllocSeqPlayer
+ movs r4, r0
+ addeq sp, sp, #0x10
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ mov r0, r7
+ mov r1, r4
+ bl NNSi_SndPlayerAllocHeap
+ mov r7, r0
+ add r12, sp, #0x8
+ mov r0, r8
+ mov r2, r7
+ mov r1, #0x6
+ mov r3, #0x0
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadBank
+ cmp r0, #0x0
+ beq _020C3804
+ mov r0, r4
+ bl NNSi_SndPlayerFreeSeqPlayer
+ add sp, sp, #0x10
+ mov r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020C3804:
+ ldr r0, [sp, #0x2c]
+ add r12, sp, #0x4
+ mov r2, r7
+ mov r1, #0x1
+ mov r3, #0x0
+ str r12, [sp, #0x0]
+ bl NNSi_SndArcLoadSeq
+ cmp r0, #0x0
+ beq _020C383C
+ mov r0, r4
+ bl NNSi_SndPlayerFreeSeqPlayer
+ add sp, sp, #0x10
+ mov r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020C383C:
+ ldr r2, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ ldr r1, [r2, #0x18]
+ mov r0, r4
+ add r1, r2, r1
+ mov r2, #0x0
+ bl NNSi_SndPlayerStartSeq
+ ldrb r1, [r5, #0x6]
+ mov r0, r6
+ bl NNS_SndPlayerSetInitialVolume
+ ldrb r1, [r5, #0x7]
+ mov r0, r6
+ bl NNS_SndPlayerSetChannelPriority
+ ldr r1, [sp, #0x2c]
+ mov r0, r6
+ bl NNS_SndPlayerSetSeqNo
+ mov r0, #0x1
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+
+ arm_func_start NNS_SndArcPlayerStartSeqArc
+NNS_SndArcPlayerStartSeqArc: ; 0x020C3888
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x14
+ mov r6, r1
+ mov r7, r0
+ mov r0, r6
+ mov r5, r2
+ bl NNS_SndArcGetSeqArcInfo
+ cmp r0, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,pc}
+ ldr r0, [r0, #0x0]
+ bl NNS_SndArcGetFileAddress
+ movs r4, r0
+ addeq sp, sp, #0x14
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,pc}
+ mov r1, r5
+ bl NNSi_SndSeqArcGetSeqInfo
+ cmp r0, #0x0
+ addeq sp, sp, #0x14
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,pc}
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r6, [sp, #0x8]
+ str r5, [sp, #0xc]
+ ldrb r1, [r0, #0x9]
+ ldrh r2, [r0, #0x4]
+ ldrb r3, [r0, #0x8]
+ mov r0, r7
+ bl StartSeqArc
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r7,pc}
+
+ arm_func_start NNS_SndArcPlayerStartSeqEx
+NNS_SndArcPlayerStartSeqEx: ; 0x020C3910
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0xc
+ mov r7, r0
+ ldr r0, [sp, #0x20]
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl NNS_SndArcGetSeqInfo
+ cmp r0, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r7,pc}
+ cmp r4, #0x0
+ ldrltb r4, [r0, #0x8]
+ cmp r5, #0x0
+ ldrlth r5, [r0, #0x4]
+ cmp r6, #0x0
+ ldrltb r6, [r0, #0x9]
+ ldr r12, [sp, #0x20]
+ mov r2, r5
+ str r0, [sp, #0x0]
+ mov r0, r7
+ mov r1, r6
+ mov r3, r4
+ str r12, [sp, #0x4]
+ bl StartSeq
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r7,pc}
+
+ arm_func_start NNS_SndArcPlayerStartSeq
+NNS_SndArcPlayerStartSeq: ; 0x020C3980
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r4, r1
+ mov r5, r0
+ mov r0, r4
+ bl NNS_SndArcGetSeqInfo
+ cmp r0, #0x0
+ addeq sp, sp, #0xc
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r5,pc}
+ str r0, [sp, #0x0]
+ str r4, [sp, #0x4]
+ ldrb r1, [r0, #0x9]
+ ldrh r2, [r0, #0x4]
+ ldrb r3, [r0, #0x8]
+ mov r0, r5
+ bl StartSeq
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start NNS_SndArcPlayerSetup
+NNS_SndArcPlayerSetup: ; 0x020C39CC
+ stmdb sp!, {r4-r8,lr}
+ mov r6, r0
+ bl NNS_SndArcGetCurrent
+ mov r5, #0x0
+ mov r7, r5
+_020C39E0:
+ mov r0, r5
+ bl NNS_SndArcGetPlayerInfo
+ movs r4, r0
+ beq _020C3A58
+ ldrb r1, [r4, #0x0]
+ mov r0, r5
+ bl NNS_SndPlayerSetPlayableSeqCount
+ ldrh r1, [r4, #0x2]
+ mov r0, r5
+ bl NNS_SndPlayerSetAllocatableChannel
+ ldr r0, [r4, #0x4]
+ cmp r0, #0x0
+ beq _020C3A58
+ cmp r6, #0x0
+ beq _020C3A58
+ ldrb r0, [r4, #0x0]
+ mov r8, r7
+ cmp r0, #0x0
+ ble _020C3A58
+_020C3A2C:
+ ldr r2, [r4, #0x4]
+ mov r0, r5
+ mov r1, r6
+ bl NNS_SndPlayerCreateHeap
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4-r8,pc}
+ ldrb r0, [r4, #0x0]
+ add r8, r8, #0x1
+ cmp r8, r0
+ blt _020C3A2C
+_020C3A58:
+ add r5, r5, #0x1
+ cmp r5, #0x20
+ blt _020C39E0
+ mov r0, #0x1
+ ldmia sp!, {r4-r8,pc}
diff --git a/arm9/asm/NNS_SND_sndarc_stream.s b/arm9/asm/NNS_SND_sndarc_stream.s
new file mode 100644
index 00000000..1962bdcc
--- /dev/null
+++ b/arm9/asm/NNS_SND_sndarc_stream.s
@@ -0,0 +1,263 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sPrepareThread
+sPrepareThread: ; 0x021D2900
+ .space 0x4
+
+ .global sFreeCommandList
+sFreeCommandList: ; 0x021D2904
+ .space 0xC
+ ; sStrmThread
+ .global sStrmThread
+sStrmThread: ; 0x021D2910
+ .space 0x4EC
+
+ .global sStrmPlayer
+sStrmPlayer: ; 0x021D2DFC
+ .space 0x5c0
+
+ .section .text
+
+ arm_func_start FreeCommandBuffer
+FreeCommandBuffer: ; 0x020C3A6C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ ldr r0, _020C3A9C ; =sFreeCommandList
+ mov r1, r5
+ bl NNS_FndAppendListObject
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C3A9C: .word sFreeCommandList
+
+ arm_func_start RemoveCommandByPlayer
+RemoveCommandByPlayer: ; 0x020C3AA0
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ mov r7, r1
+ bl OS_DisableInterrupts
+ mov r6, r0
+ mov r0, r8
+ mov r1, #0x0
+ bl NNS_FndGetNextListObject
+ movs r5, r0
+ beq _020C3B04
+_020C3AC8:
+ mov r0, r8
+ mov r1, r5
+ bl NNS_FndGetNextListObject
+ ldr r1, [r5, #0x8]
+ mov r4, r0
+ cmp r1, r7
+ bne _020C3AF8
+ mov r0, r8
+ mov r1, r5
+ bl NNS_FndRemoveListObject
+ mov r0, r5
+ bl FreeCommandBuffer
+_020C3AF8:
+ mov r5, r4
+ cmp r4, #0x0
+ bne _020C3AC8
+_020C3B04:
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4-r8,pc}
+
+ arm_func_start FreeChannel
+FreeChannel: ; 0x020C3B10
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, [r0, #0x120]
+ cmp r1, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ sub r1, r1, #0x1
+ str r1, [r0, #0x120]
+ ldr r1, [r0, #0x120]
+ cmp r1, #0x0
+ addne sp, sp, #0x4
+ ldmneia sp!, {pc}
+ bl NNS_SndStrmFreeChannel
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ local_arm_func_start ShutdownPlayer
+ShutdownPlayer: ; 0x020C3B4C
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r1, [r4, #0x110]
+ mov r1, r1, lsl #0x1f
+ movs r1, r1, asr #0x1f
+ ldmeqia sp!, {r4,pc}
+ bl FreeChannel
+ ldr r1, [r4, #0x164]
+ mov r0, r4
+ blx r1
+ ldr r0, _020C3BA8 ; =sStrmThread + 0x4E0
+ mov r1, r4
+ bl RemoveCommandByPlayer
+ ldr r0, _020C3BAC ; =sPrepareThread
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020C3B9C
+ mov r1, r4
+ add r0, r0, #0x4e0
+ bl RemoveCommandByPlayer
+_020C3B9C:
+ mov r0, r4
+ bl FreePlayer
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C3BA8: .word sStrmThread + 0x4E0
+_020C3BAC: .word sPrepareThread
+
+ local_arm_func_start ForceStopStrm
+ForceStopStrm: ; 0x020C3BB0
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, _020C3C40 ; =sStrmThread + 0x4C8
+ bl OS_LockMutex
+ ldr r0, _020C3C44 ; =sPrepareThread
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ beq _020C3BDC
+ ldr r0, _020C3C48 ; =0x000004C8
+ add r0, r1, r0
+ bl OS_LockMutex
+_020C3BDC:
+ ldr r0, [r4, #0x110]
+ mov r0, r0, lsl #0x1e
+ movs r0, r0, asr #0x1f
+ beq _020C3BF4
+ mov r0, r4
+ bl NNS_SndStrmStop
+_020C3BF4:
+ ldr r0, [r4, #0x110]
+ mov r0, r0, lsl #0x1f
+ movs r0, r0, asr #0x1f
+ beq _020C3C10
+ ldr r1, [r4, #0x16c]
+ mov r0, r4
+ blx r1
+_020C3C10:
+ mov r0, r4
+ bl ShutdownPlayer
+ ldr r0, _020C3C40 ; =sStrmThread + 0x4C8
+ bl OS_UnlockMutex
+ ldr r0, _020C3C44 ; =sPrepareThread
+ ldr r1, [r0, #0x0]
+ cmp r1, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, _020C3C48 ; =0x000004C8
+ add r0, r1, r0
+ bl OS_UnlockMutex
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C3C40: .word sStrmThread + 0x4C8
+_020C3C44: .word sPrepareThread
+_020C3C48: .word 0x000004C8
+
+ arm_func_start FreePlayer
+FreePlayer: ; 0x020C3C4C
+ ldr r2, [r0, #0x14c]
+ cmp r2, #0x0
+ movne r1, #0x0
+ strne r1, [r2, #0x0]
+ strne r1, [r0, #0x14c]
+ ldr r1, [r0, #0x110]
+ bic r1, r1, #0x1
+ str r1, [r0, #0x110]
+ ldr r1, [r0, #0x110]
+ bic r1, r1, #0x4
+ str r1, [r0, #0x110]
+ ldr r1, [r0, #0x110]
+ bic r1, r1, #0x2
+ str r1, [r0, #0x110]
+ bx lr
+
+ arm_func_start NNSi_SndArcStrmMain
+NNSi_SndArcStrmMain: ; 0x020C3C88
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ ldr r5, _020C3D94 ; =sStrmPlayer
+ mov r7, #0x0
+ ldr r4, _020C3D98 ; =SNDi_DecibelTable
+_020C3C9C:
+ ldr r1, [r5, #0x110]
+ mov r0, r1, lsl #0x1f
+ movs r0, r0, asr #0x1f
+ beq _020C3D7C
+ ldr r0, [r5, #0x114]
+ cmp r0, #0x0
+ bne _020C3CC4
+ mov r0, r5
+ bl ForceStopStrm
+ b _020C3D7C
+_020C3CC4:
+ mov r0, r1, lsl #0x1d
+ movs r0, r0, asr #0x1f
+ beq _020C3CFC
+ ldr r0, [r5, #0x118]
+ cmp r0, #0x0
+ beq _020C3CFC
+ mov r0, r5
+ bl NNS_SndStrmStart
+ ldr r0, [r5, #0x110]
+ orr r0, r0, #0x2
+ str r0, [r5, #0x110]
+ ldr r0, [r5, #0x110]
+ bic r0, r0, #0x4
+ str r0, [r5, #0x110]
+_020C3CFC:
+ ldr r0, [r5, #0x110]
+ mov r0, r0, lsl #0x1e
+ movs r0, r0, asr #0x1f
+ beq _020C3D7C
+ add r0, r5, #0xe8
+ bl NNSi_SndFaderUpdate
+ ldr r1, [r5, #0x154]
+ add r0, r5, #0xe8
+ mov r1, r1, lsl #0x1
+ ldrsh r6, [r4, r1]
+ bl NNSi_SndFaderGet
+ mov r0, r0, asr #0x8
+ mov r0, r0, lsl #0x1
+ ldrsh r1, [r4, r0]
+ ldr r0, [r5, #0x158]
+ add r6, r1, r6
+ cmp r6, r0
+ beq _020C3D54
+ mov r0, r5
+ mov r1, r6
+ bl NNS_SndStrmSetVolume
+ str r6, [r5, #0x158]
+_020C3D54:
+ ldr r0, [r5, #0x110]
+ mov r0, r0, lsl #0x1c
+ movs r0, r0, asr #0x1f
+ beq _020C3D7C
+ add r0, r5, #0xe8
+ bl NNSi_SndFaderIsFinished
+ cmp r0, #0x0
+ beq _020C3D7C
+ mov r0, r5
+ bl ForceStopStrm
+_020C3D7C:
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ add r5, r5, #0x170
+ blt _020C3C9C
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020C3D94: .word sStrmPlayer
+_020C3D98: .word SNDi_DecibelTable
diff --git a/arm9/asm/NNS_SND_stream.s b/arm9/asm/NNS_SND_stream.s
new file mode 100644
index 00000000..53432742
--- /dev/null
+++ b/arm9/asm/NNS_SND_stream.s
@@ -0,0 +1,456 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global bInitialized$7761
+bInitialized$7761: ; 0x021D26D4
+ .space 0x4
+
+ .global sStrmList
+sStrmList: ; 0x021D26D8
+ .space 0xc
+
+ .global buffer$7877
+buffer$7877: ; 0x021D26E4
+ .space 0x40
+
+ .global sStrmChannel
+sStrmChannel: ; 0x021D2724
+ .space 0x80
+
+ .section .text
+
+ local_arm_func_start EndSleep
+EndSleep: ; 0x020C1198
+ stmdb sp!, {r4-r6,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x24]
+ mov r0, r0, lsl #0x1e
+ movs r0, r0, asr #0x1f
+ ldmeqia sp!, {r4-r6,pc}
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ beq _020C11E8
+ mov r5, #0x1
+_020C11C0:
+ bl OS_DisableInterrupts
+ mov r6, r0
+ mov r0, r4
+ mov r1, r5
+ bl StrmCallback
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ ldr r0, [r4, #0x38]
+ cmp r0, #0x0
+ bne _020C11C0
+_020C11E8:
+ ldr r0, [r4, #0x40]
+ mov r2, #0x1
+ mov r1, #0x0
+ mov r2, r2, lsl r0
+ ldr r0, [r4, #0x44]
+ mov r3, r1
+ bl SND_StartTimer
+ ldmia sp!, {r4-r6,pc}
+
+ local_arm_func_start BeginSleep
+BeginSleep: ; 0x020C1208
+ stmdb sp!, {r4,lr}
+ ldr r1, [r0, #0x24]
+ mov r1, r1, lsl #0x1e
+ movs r1, r1, asr #0x1f
+ ldmeqia sp!, {r4,pc}
+ ldr r2, [r0, #0x40]
+ mov r3, #0x1
+ mov r1, #0x0
+ mov r2, r3, lsl r2
+ ldr r0, [r0, #0x44]
+ mov r3, r1
+ bl SND_StopTimer
+ bl SND_GetCurrentCommandTag
+ mov r4, r0
+ mov r0, #0x1
+ bl SND_FlushCommand
+ mov r0, r4
+ bl SND_WaitForCommandProc
+ ldmia sp!, {r4,pc}
+
+ arm_func_start StrmCallback
+StrmCallback: ; 0x020C1254
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ bl _u32_div_f
+ ldr r1, [r5, #0x48]
+ ldr r2, [r5, #0x38]
+ mov r3, r0
+ mul lr, r3, r2
+ cmp r1, #0x0
+ mov r12, #0x0
+ ble _020C12B8
+ ldr r2, _020C1300 ; =sStrmChannel
+ ldr r0, _020C1304 ; =buffer$7877
+_020C1294:
+ add r1, r5, r12
+ ldrb r1, [r1, #0x4c]
+ ldr r1, [r2, r1, lsl #0x3]
+ add r1, r1, lr
+ str r1, [r0, r12, lsl #0x2]
+ ldr r1, [r5, #0x48]
+ add r12, r12, #0x1
+ cmp r12, r1
+ blt _020C1294
+_020C12B8:
+ ldr r0, [r5, #0x20]
+ ldr r2, _020C1304 ; =buffer$7877
+ str r0, [sp, #0x0]
+ ldr r12, [r5, #0x34]
+ mov r0, r4
+ str r12, [sp, #0x4]
+ ldr r4, [r5, #0x30]
+ blx r4
+ ldr r0, [r5, #0x38]
+ add r0, r0, #0x1
+ str r0, [r5, #0x38]
+ ldr r1, [r5, #0x38]
+ ldr r0, [r5, #0x2c]
+ cmp r1, r0
+ movge r0, #0x0
+ strge r0, [r5, #0x38]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C1300: .word sStrmChannel
+_020C1304: .word buffer$7877
+
+ local_arm_func_start AlarmCallback
+AlarmCallback: ; 0x020C1308
+ ldr ip, _020C1314 ; =StrmCallback
+ mov r1, #0x1
+ bx r12
+ .balign 4
+_020C1314: .word StrmCallback
+
+ arm_func_start ShutdownStrm
+ShutdownStrm: ; 0x020C1318
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x40]
+ bl NNS_SndFreeAlarm
+ ldr r0, _020C1344 ; =sStrmList
+ mov r1, r4
+ bl NNS_FndRemoveListObject
+ ldr r0, [r4, #0x24]
+ bic r0, r0, #0x1
+ str r0, [r4, #0x24]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C1344: .word sStrmList
+
+ local_arm_func_start ForceStopStrm
+ForceStopStrm: ; 0x020C1348
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ ldr r0, [r4, #0x24]
+ mov r0, r0, lsl #0x1e
+ movs r0, r0, asr #0x1f
+ beq _020C13B4
+ ldr r0, [r4, #0x40]
+ mov r2, #0x1
+ mov r1, #0x0
+ mov r2, r2, lsl r0
+ ldr r0, [r4, #0x44]
+ mov r3, r1
+ bl SND_StopTimer
+ add r0, r4, #0x8
+ bl PM_DeletePreSleepCallback
+ add r0, r4, #0x14
+ bl PM_DeletePostSleepCallback
+ ldr r0, [r4, #0x24]
+ bic r0, r0, #0x2
+ str r0, [r4, #0x24]
+ bl SND_GetCurrentCommandTag
+ mov r5, r0
+ mov r0, #0x1
+ bl SND_FlushCommand
+ mov r0, r5
+ bl SND_WaitForCommandProc
+_020C13B4:
+ mov r0, r4
+ bl ShutdownStrm
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+
+ arm_func_start NNS_SndStrmSetVolume
+NNS_SndStrmSetVolume: ; 0x020C13C4
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r0
+ str r1, [r7, #0x3c]
+ ldr r0, [r7, #0x48]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldmleia sp!, {r4-r8,pc}
+ ldr r4, _020C142C ; =sStrmChannel
+ mov r8, #0x1
+_020C13E8:
+ add r0, r7, r5
+ ldrb r6, [r0, #0x4c]
+ ldr r1, [r7, #0x3c]
+ add r0, r4, r6, lsl #0x3
+ ldr r0, [r0, #0x4]
+ add r0, r1, r0
+ bl SND_CalcChannelVolume
+ mov r2, r0
+ mov r0, r8, lsl r6
+ and r1, r2, #0xff
+ mov r2, r2, asr #0x8
+ bl SND_SetChannelVolume
+ ldr r0, [r7, #0x48]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020C13E8
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020C142C: .word sStrmChannel
+
+ arm_func_start NNS_SndStrmStop
+NNS_SndStrmStop: ; 0x020C1430
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r1, [r0, #0x24]
+ mov r1, r1, lsl #0x1f
+ movs r1, r1, asr #0x1f
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ bl ForceStopStrm
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndStrmStart
+NNS_SndStrmStart: ; 0x020C1458
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x40]
+ mov r2, #0x1
+ mov r1, #0x0
+ mov r2, r2, lsl r0
+ ldr r0, [r4, #0x44]
+ mov r3, r1
+ bl SND_StartTimer
+ ldr r0, [r4, #0x24]
+ mov r0, r0, lsl #0x1e
+ movs r0, r0, asr #0x1f
+ ldmneia sp!, {r4,pc}
+ add r0, r4, #0x8
+ bl PM_PrependPreSleepCallback
+ add r0, r4, #0x14
+ bl PM_AppendPostSleepCallback
+ ldr r0, [r4, #0x24]
+ orr r0, r0, #0x2
+ str r0, [r4, #0x24]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndStrmSetup
+NNS_SndStrmSetup: ; 0x020C14AC
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x24
+ mov r10, r0
+ ldr r4, [r10, #0x24]
+ mov r9, r1
+ mov r1, r4, lsl #0x1f
+ movs r1, r1, asr #0x1f
+ ldr r1, [sp, #0x4c]
+ str r2, [sp, #0x18]
+ mov r4, r3
+ str r1, [sp, #0x4c]
+ beq _020C14E0
+ bl NNS_SndStrmStop
+_020C14E0:
+ ldr r0, [sp, #0x4c]
+ ldr r2, [r10, #0x48]
+ mov r0, r0, lsl #0x5
+ mul r1, r2, r0
+ mov r0, r4
+ bl _u32_div_f
+ ldr r1, [sp, #0x4c]
+ ldr r2, [sp, #0x48]
+ mul r1, r0, r1
+ mov r0, r1, lsl #0x5
+ str r0, [r10, #0x28]
+ ldr r0, [r10, #0x28]
+ cmp r9, #0x1
+ moveq r0, r0, lsr #0x1
+ mul r0, r2, r0
+ ldr r1, [sp, #0x4c]
+ bl _u32_div_f
+ str r0, [sp, #0x1c]
+ bl NNS_SndAllocAlarm
+ str r0, [r10, #0x40]
+ ldr r0, [r10, #0x40]
+ cmp r0, #0x0
+ addlt sp, sp, #0x24
+ movlt r0, #0x0
+ ldmltia sp!, {r4-r11,pc}
+ ldr r0, [r10, #0x48]
+ mov r8, #0x0
+ cmp r0, #0x0
+ ble _020C15D4
+ ldr r0, [sp, #0x48]
+ mov r7, r0, lsl #0x5
+ ldr r6, _020C1668 ; =sStrmChannel
+ mov r5, r8
+ mov r4, #0x7f
+ mov r11, #0x40
+ mov r0, #0x1
+ str r0, [sp, #0x20]
+_020C1574:
+ ldr r2, [r10, #0x28]
+ ldr r1, [sp, #0x18]
+ add r0, r10, r8
+ mla r1, r2, r8, r1
+ ldrb r0, [r0, #0x4c]
+ ldr r3, [sp, #0x20]
+ str r1, [r6, r0, lsl #0x3]
+ add r1, r6, r0, lsl #0x3
+ str r5, [r1, #0x4]
+ str r5, [sp, #0x0]
+ ldr r2, [r10, #0x28]
+ mov r1, r9
+ mov r2, r2, lsr #0x2
+ str r2, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r5, [sp, #0xc]
+ str r7, [sp, #0x10]
+ str r11, [sp, #0x14]
+ ldr r2, [r6, r0, lsl #0x3]
+ bl SND_SetupChannelPcm
+ ldr r0, [r10, #0x48]
+ add r8, r8, #0x1
+ cmp r8, r0
+ blt _020C1574
+_020C15D4:
+ str r10, [sp, #0x0]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r10, #0x40]
+ ldr r3, _020C166C ; =AlarmCallback
+ mov r2, r1
+ bl SND_SetupAlarm
+ ldr r0, _020C1670 ; =sStrmList
+ mov r1, r10
+ bl NNS_FndAppendListObject
+ ldr r0, [sp, #0x4c]
+ str r9, [r10, #0x20]
+ str r0, [r10, #0x2c]
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ str r1, [r10, #0x30]
+ str r0, [r10, #0x34]
+ mov r0, #0x0
+ str r0, [r10, #0x38]
+ str r0, [r10, #0x3c]
+ ldr r0, [r10, #0x24]
+ bic r0, r0, #0x1
+ orr r0, r0, #0x1
+ str r0, [r10, #0x24]
+ bl OS_DisableInterrupts
+ mov r4, r0
+ mov r2, #0x1
+ mov r0, r10
+ mov r1, #0x0
+ str r2, [r10, #0x2c]
+ bl StrmCallback
+ ldr r1, [sp, #0x4c]
+ mov r0, r4
+ str r1, [r10, #0x2c]
+ bl OS_RestoreInterrupts
+ mov r0, #0x1
+ add sp, sp, #0x24
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020C1668: .word sStrmChannel
+_020C166C: .word AlarmCallback
+_020C1670: .word sStrmList
+
+ arm_func_start NNS_SndStrmFreeChannel
+NNS_SndStrmFreeChannel: ; 0x020C1674
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x44]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ bl NNS_SndUnlockChannel
+ mov r0, #0x0
+ str r0, [r4, #0x44]
+ str r0, [r4, #0x48]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndStrmAllocChannel
+NNS_SndStrmAllocChannel: ; 0x020C169C
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r1
+ mov r4, #0x0
+ mov r6, r0
+ mov r12, r4
+ cmp r5, #0x0
+ ble _020C16DC
+ mov r1, #0x1
+_020C16BC:
+ ldrb r3, [r2, r12]
+ add r0, r6, r12
+ strb r3, [r0, #0x4c]
+ ldrb r0, [r2, r12]
+ add r12, r12, #0x1
+ cmp r12, r5
+ orr r4, r4, r1, lsl r0
+ blt _020C16BC
+_020C16DC:
+ mov r0, r4
+ bl NNS_SndLockChannel
+ cmp r0, #0x0
+ moveq r0, #0x0
+ strne r5, [r6, #0x48]
+ strne r4, [r6, #0x44]
+ movne r0, #0x1
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start NNS_SndStrmInit
+NNS_SndStrmInit: ; 0x020C16FC
+ stmdb sp!, {r4,lr}
+ ldr r1, _020C176C ; =bInitialized$7761
+ mov r4, r0
+ ldr r0, [r1, #0x0]
+ cmp r0, #0x0
+ bne _020C172C
+ ldr r0, _020C1770 ; =sStrmList
+ mov r1, #0x0
+ bl NNS_FndInitList
+ ldr r0, _020C176C ; =bInitialized$7761
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020C172C:
+ ldr r1, _020C1774 ; =BeginSleep
+ ldr r0, _020C1778 ; =EndSleep
+ str r1, [r4, #0x8]
+ str r4, [r4, #0xc]
+ str r0, [r4, #0x14]
+ str r4, [r4, #0x18]
+ mov r0, #0x0
+ str r0, [r4, #0x44]
+ str r0, [r4, #0x48]
+ ldr r0, [r4, #0x24]
+ bic r0, r0, #0x1
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x24]
+ bic r0, r0, #0x2
+ str r0, [r4, #0x24]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C176C: .word bInitialized$7761
+_020C1770: .word sStrmList
+_020C1774: .word BeginSleep
+_020C1778: .word EndSleep
diff --git a/arm9/asm/NNS_SND_waveout.s b/arm9/asm/NNS_SND_waveout.s
new file mode 100644
index 00000000..b3c6591f
--- /dev/null
+++ b/arm9/asm/NNS_SND_waveout.s
@@ -0,0 +1,240 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .section .bss
+
+ .global sWaveOut
+sWaveOut: ; 0x021D1CBC
+ .space 0x140
+
+ .section .text
+
+ arm_func_start NNS_SndWaveOutIsPlaying
+NNS_SndWaveOutIsPlaying: ; 0x020C03B8
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, [r4, #0xc]
+ cmp r0, #0x0
+ bne _020C03F8
+ ldr r0, [r4, #0x10]
+ bl SND_IsFinishedCommandTag
+ cmp r0, #0x0
+ moveq r0, #0x1
+ ldmeqia sp!, {r4,pc}
+ mov r0, #0x1
+ str r0, [r4, #0xc]
+_020C03F8:
+ bl SND_GetChannelStatus
+ ldr r1, [r4, #0x0]
+ mov r2, #0x1
+ mov r1, r2, lsl r1
+ ands r0, r1, r0
+ movne r0, r2
+ moveq r0, #0x0
+ streq r0, [r4, #0x8]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndWaveOutSetPan
+NNS_SndWaveOutSetPan: ; 0x020C041C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x8]
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x0]
+ mov r2, #0x1
+ mov r0, r2, lsl r0
+ bl SND_SetChannelPan
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndWaveOutSetSpeed
+NNS_SndWaveOutSetSpeed: ; 0x020C044C
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4
+ mov r5, r0
+ ldr r0, [r5, #0x8]
+ mov r4, r1
+ cmp r0, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r5,pc}
+ ldr r2, [r5, #0x4]
+ ldr r0, _020C04D4 ; =0xD87F8000
+ mov r3, r2, asr #0x1f
+ mov r1, #0x7f
+ bl _ll_udiv
+ mov r2, r4
+ mov r3, r4, asr #0x1f
+ bl _ll_udiv
+ mov r2, #0x0
+ mov r3, r0
+ mov r0, #0x10
+ cmp r1, r2
+ cmpeq r3, r0
+ movcc r3, r0
+ blo _020C04B8
+ ldr r0, _020C04D8 ; =0x0000FFFF
+ cmp r1, r2
+ cmpeq r3, r0
+ movhi r3, r0
+_020C04B8:
+ ldr r0, [r5, #0x0]
+ mov r1, #0x1
+ mov r0, r1, lsl r0
+ mov r1, r3
+ bl SND_SetChannelTimer
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020C04D4: .word 0xD87F8000
+_020C04D8: .word 0x0000FFFF
+
+ arm_func_start NNS_SndWaveOutSetVolume
+NNS_SndWaveOutSetVolume: ; 0x020C04DC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr r2, [r0, #0x8]
+ cmp r2, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x0]
+ mov r2, #0x1
+ mov r0, r2, lsl r0
+ mov r2, #0x0
+ bl SND_SetChannelVolume
+ add sp, sp, #0x4
+ ldmia sp!, {pc}
+
+ arm_func_start NNS_SndWaveOutStop
+NNS_SndWaveOutStop: ; 0x020C0510
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, [r4, #0x0]
+ mov r2, #0x1
+ mov r1, #0x0
+ mov r0, r2, lsl r0
+ mov r2, r1
+ mov r3, r1
+ bl SND_StopTimer
+ mov r0, #0x0
+ str r0, [r4, #0x8]
+ ldmia sp!, {r4,pc}
+
+ arm_func_start NNS_SndWaveOutStart
+NNS_SndWaveOutStart: ; 0x020C054C
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x1c
+ movs r8, r1
+ mov r9, r0
+ mov r7, r2
+ mov r6, r3
+ beq _020C0584
+ cmp r8, #0x1
+ ldreq r0, [sp, #0x3c]
+ ldreq r1, [sp, #0x38]
+ moveq r0, r0, asr #0x1
+ moveq r5, r1, asr #0x1
+ subeq r4, r0, r1, asr #0x1
+ b _020C0598
+_020C0584:
+ ldr r0, [sp, #0x3c]
+ ldr r1, [sp, #0x38]
+ mov r0, r0, asr #0x2
+ mov r5, r1, asr #0x2
+ sub r4, r0, r1, asr #0x2
+_020C0598:
+ ldr r2, [sp, #0x40]
+ ldr r0, _020C0668 ; =0xD87F8000
+ mov r3, r2, asr #0x1f
+ mov r1, #0x7f
+ bl _ll_udiv
+ ldr r2, [sp, #0x48]
+ mov r3, r2, asr #0x1f
+ bl _ll_udiv
+ mov r3, #0x0
+ mov r2, #0x10
+ cmp r1, r3
+ cmpeq r0, r2
+ movcc r0, r2
+ blo _020C05E0
+ ldr r2, _020C066C ; =0x0000FFFF
+ cmp r1, r3
+ cmpeq r0, r2
+ movhi r0, r2
+_020C05E0:
+ str r5, [sp, #0x0]
+ ldr r1, [sp, #0x44]
+ str r4, [sp, #0x4]
+ str r1, [sp, #0x8]
+ mov r1, #0x0
+ str r1, [sp, #0xc]
+ cmp r6, #0x0
+ movne r3, #0x1
+ ldr r1, [sp, #0x4c]
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r0, [r9, #0x0]
+ moveq r3, #0x2
+ mov r1, r8
+ mov r2, r7
+ bl SND_SetupChannelPcm
+ mov r1, #0x0
+ ldr r0, [r9, #0x0]
+ mov r2, #0x1
+ mov r0, r2, lsl r0
+ mov r2, r1
+ mov r3, r1
+ bl SND_StartTimer
+ mov r0, #0x1
+ str r0, [r9, #0x8]
+ mov r0, #0x0
+ str r0, [r9, #0xc]
+ bl SND_GetCurrentCommandTag
+ str r0, [r9, #0x10]
+ ldr r1, [sp, #0x40]
+ mov r0, #0x1
+ str r1, [r9, #0x4]
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r9,pc}
+ .balign 4
+_020C0668: .word 0xD87F8000
+_020C066C: .word 0x0000FFFF
+
+ arm_func_start NNS_SndWaveOutFreeChannel
+NNS_SndWaveOutFreeChannel: ; 0x020C0670
+ ldr r0, [r0, #0x0]
+ mov r1, #0x1
+ ldr ip, _020C0684 ; =NNS_SndUnlockChannel
+ mov r0, r1, lsl r0
+ bx r12
+ .balign 4
+_020C0684: .word NNS_SndUnlockChannel
+
+ arm_func_start NNS_SndWaveOutAllocChannel
+NNS_SndWaveOutAllocChannel: ; 0x020C0688
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ mov r0, #0x1
+ mov r0, r0, lsl r4
+ bl NNS_SndLockChannel
+ cmp r0, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ mov r0, #0x14
+ mul r0, r4, r0
+ ldr r2, _020C06C8 ; =sWaveOut
+ mov r1, #0x0
+ str r4, [r2, r0]
+ add r0, r2, r0
+ str r1, [r0, #0x8]
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020C06C8: .word sWaveOut
diff --git a/arm9/asm/RTC_internal.s b/arm9/asm/RTC_internal.s
deleted file mode 100644
index 408b630c..00000000
--- a/arm9/asm/RTC_internal.s
+++ /dev/null
@@ -1,53 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start RtcSendPxiCommand
-RtcSendPxiCommand: ; 0x020D61D4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r0, r0, lsl #0x8
- and r1, r0, #0x7f00
- mov r0, #0x5
- mov r2, #0x0
- bl PXI_SendWordByFifo
-_020D61F0: ; 0x020D61F0
- cmp r0, #0x0
- movge r0, #0x1
- movlt r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start RTCi_WriteRawStatus2Async
-RTCi_WriteRawStatus2Async:
- ldr ip, _020D6214 ; =RtcSendPxiCommand
- mov r0, #0x27
- bx r12
- .balign 4
-_020D6214: .word RtcSendPxiCommand
-
- arm_func_start RTCi_ReadRawTimeAsync
-RTCi_ReadRawTimeAsync:
- ldr ip, _020D6224 ; =RtcSendPxiCommand
- mov r0, #0x12
- bx r12
- .balign 4
-_020D6224: .word RtcSendPxiCommand
-
- arm_func_start RTCi_ReadRawDateAsync
-RTCi_ReadRawDateAsync:
- ldr ip, _020D6234 ; =RtcSendPxiCommand
- mov r0, #0x11
- bx r12
- .balign 4
-_020D6234: .word RtcSendPxiCommand
-
- arm_func_start RTCi_ReadRawDateTimeAsync
-RTCi_ReadRawDateTimeAsync:
- ldr ip, _020D6244 ; =RtcSendPxiCommand
- mov r0, #0x10
- bx r12
- .balign 4
-_020D6244: .word RtcSendPxiCommand
diff --git a/arm9/asm/WIFI_stubsmd5_dummy.s b/arm9/asm/WIFI_stubsmd5_dummy.s
deleted file mode 100644
index dd3f79a7..00000000
--- a/arm9/asm/WIFI_stubsmd5_dummy.s
+++ /dev/null
@@ -1,25 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start MD5Final
-MD5Final: ; 0x020A8BA4
- ldr ip, _020A8BAC ; =DGT_Hash1GetDigest_R
- bx r12
- .balign 4
-_020A8BAC: .word DGT_Hash1GetDigest_R
-
- arm_func_start MD5Update
-MD5Update: ; 0x020A8BB0
- ldr ip, _020A8BB8 ; =DGT_Hash1SetSource
- bx r12
- .balign 4
-_020A8BB8: .word DGT_Hash1SetSource
-
- arm_func_start MD5Init
-MD5Init: ; 0x020A8BBC
- ldr ip, _020A8BC4 ; =DGT_Hash1Reset
- bx r12
- .balign 4
-_020A8BC4: .word DGT_Hash1Reset
diff --git a/arm9/asm/macros/function.inc b/arm9/asm/macros/function.inc
index 6b9e5f40..3323f53e 100644
--- a/arm9/asm/macros/function.inc
+++ b/arm9/asm/macros/function.inc
@@ -4,6 +4,11 @@
.arm
.endm
+ .macro local_arm_func_start name
+ .balign 4, 0
+ .arm
+ .endm
+
.macro arm_func_end name
.size \name, .-\name
.endm
diff --git a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s b/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s
deleted file mode 100644
index a590ef02..00000000
--- a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s
+++ /dev/null
@@ -1,92 +0,0 @@
-.section .text
-
-glabel GenerateFontHalfRowLookupTable
-
-.extern UNK_021C570C
-.extern UNK_021C5734
-
- push {r3-r7, lr}
- sub sp, #0x30
- ldr r3, _0201C0F8 ; =UNK_021C570C
- mov r5, #0x0
- str r5, [sp, #0x20]
- str r0, [sp, #0x24]
- str r2, [sp, #0x28]
- str r1, [sp, #0x2c]
- strh r1, [r3, #0x6]
- strh r0, [r3, #0x2]
- add r0, sp, #0x20
- strh r2, [r3, #0x4]
- str r5, [sp, #0x14]
- str r0, [sp, #0x8]
- mov r12, r0
- mov lr, r0
- str r0, [sp, #0x18]
-_0201C07E:
- mov r0, #0x0
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x18]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x8]
- ldr r0, [r0, #0x0]
- str r0, [sp, #0x1c]
-_0201C08C:
- mov r0, #0x0
- str r0, [sp, #0xc]
- mov r0, lr
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x4]
- ldr r0, [r0, #0x0]
- lsl r7, r0, #0x4
-_0201C09A:
- ldr r0, [sp, #0x0]
- mov r3, #0x0
- ldr r0, [r0, #0x0]
- mov r4, r12
- lsl r6, r0, #0x8
-_0201C0A4:
- ldr r0, [r4, #0x0]
- add r1, r7, #0x0
- lsl r0, r0, #0xc
- orr r0, r6
- orr r1, r0
- ldr r0, [sp, #0x1c]
- add r3, r3, #0x1
- add r2, r0, #0x0
- orr r2, r1
- lsl r1, r5, #0x1
- ldr r0, _0201C0FC ; =UNK_021C5734
- add r5, r5, #0x1
- add r4, r4, #0x4
- strh r2, [r0, r1]
- cmp r3, #0x4
- blt _0201C0A4
- ldr r0, [sp, #0x0]
- add r0, r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- cmp r0, #0x4
- blt _0201C09A
- ldr r0, [sp, #0x4]
- add r0, r0, #0x4
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x10]
- add r0, r0, #0x1
- str r0, [sp, #0x10]
- cmp r0, #0x4
- blt _0201C08C
- ldr r0, [sp, #0x8]
- add r0, r0, #0x4
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x14]
- add r0, r0, #0x1
- str r0, [sp, #0x14]
- cmp r0, #0x4
- blt _0201C07E
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-_0201C0F8: .word UNK_021C570C
-_0201C0FC: .word UNK_021C5734
diff --git a/arm9/asm/scrcmd_10.s b/arm9/asm/scrcmd_10.s
index ea5903d8..3235f5ae 100644
--- a/arm9/asm/scrcmd_10.s
+++ b/arm9/asm/scrcmd_10.s
@@ -27,8 +27,8 @@ UNK_020F4340: ; 0x020F4340
.text
- thumb_func_start FUN_02042354
-FUN_02042354: ; 0x02042354
+ thumb_func_start ScrCmd_Unk01DA
+ScrCmd_Unk01DA: ; 0x02042354
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -37,8 +37,8 @@ FUN_02042354: ; 0x02042354
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_02042364
-FUN_02042364: ; 0x02042364
+ thumb_func_start ScrCmd_Unk01DB
+ScrCmd_Unk01DB: ; 0x02042364
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -60,8 +60,8 @@ FUN_02042364: ; 0x02042364
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02042394
-FUN_02042394: ; 0x02042394
+ thumb_func_start ScrCmd_Unk01DC
+ScrCmd_Unk01DC: ; 0x02042394
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -76,8 +76,8 @@ FUN_02042394: ; 0x02042394
str r0, [r1, #0x0]
pop {r4, pc}
- thumb_func_start FUN_020423B0
-FUN_020423B0: ; 0x020423B0
+ thumb_func_start ScrCmd_Unk01DD
+ScrCmd_Unk01DD: ; 0x020423B0
push {r3-r7, lr}
sub sp, #0x8
add r7, r0, #0x0
@@ -502,8 +502,8 @@ _020426FA:
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_02042700
-FUN_02042700: ; 0x02042700
+ thumb_func_start ScrCmd_Unk01DE
+ScrCmd_Unk01DE: ; 0x02042700
push {r3-r7, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -561,8 +561,8 @@ FUN_02042700: ; 0x02042700
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02042780
-FUN_02042780: ; 0x02042780
+ thumb_func_start ScrCmd_Unk01DF
+ScrCmd_Unk01DF: ; 0x02042780
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -581,8 +581,8 @@ FUN_02042780: ; 0x02042780
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_020427A8
-FUN_020427A8: ; 0x020427A8
+ thumb_func_start ScrCmd_Unk01E0
+ScrCmd_Unk01E0: ; 0x020427A8
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -601,8 +601,8 @@ FUN_020427A8: ; 0x020427A8
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_020427D0
-FUN_020427D0: ; 0x020427D0
+ thumb_func_start ScrCmd_Unk01E1
+ScrCmd_Unk01E1: ; 0x020427D0
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -671,8 +671,8 @@ _0204284C:
_0204285C: .word 0x00000884
_02042860: .word 0x0000083E
- thumb_func_start FUN_02042864
-FUN_02042864: ; 0x02042864
+ thumb_func_start ScrCmd_Unk01E2
+ScrCmd_Unk01E2: ; 0x02042864
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -694,8 +694,8 @@ FUN_02042864: ; 0x02042864
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02042894
-FUN_02042894: ; 0x02042894
+ thumb_func_start ScrCmd_Unk01E3
+ScrCmd_Unk01E3: ; 0x02042894
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
@@ -729,8 +729,8 @@ FUN_02042894: ; 0x02042894
add sp, #0x4
pop {r3-r6, pc}
- thumb_func_start FUN_020428E0
-FUN_020428E0: ; 0x020428E0
+ thumb_func_start ScrCmd_Unk01E4
+ScrCmd_Unk01E4: ; 0x020428E0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -792,8 +792,8 @@ _02042948:
.balign 4
_0204294C: .word UNK_020F4334
- thumb_func_start FUN_02042950
-FUN_02042950: ; 0x02042950
+ thumb_func_start ScrCmd_Unk0294
+ScrCmd_Unk0294: ; 0x02042950
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -817,8 +817,8 @@ FUN_02042950: ; 0x02042950
mov r0, #0x0
pop {r3-r7, pc}
- thumb_func_start FUN_02042980
-FUN_02042980: ; 0x02042980
+ thumb_func_start ScrCmd_Unk0295
+ScrCmd_Unk0295: ; 0x02042980
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -830,8 +830,8 @@ FUN_02042980: ; 0x02042980
pop {r3, pc}
.balign 4
- thumb_func_start FUN_02042998
-FUN_02042998: ; 0x02042998
+ thumb_func_start ScrCmd_Unk0296
+ScrCmd_Unk0296: ; 0x02042998
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -847,8 +847,8 @@ FUN_02042998: ; 0x02042998
pop {r4, pc}
.balign 4
- thumb_func_start FUN_020429B8
-FUN_020429B8: ; 0x020429B8
+ thumb_func_start ScrCmd_Unk0297
+ScrCmd_Unk0297: ; 0x020429B8
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -870,8 +870,8 @@ FUN_020429B8: ; 0x020429B8
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_020429E8
-FUN_020429E8: ; 0x020429E8
+ thumb_func_start ScrCmd_Unk0298
+ScrCmd_Unk0298: ; 0x020429E8
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -893,8 +893,8 @@ FUN_020429E8: ; 0x020429E8
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02042A18
-FUN_02042A18: ; 0x02042A18
+ thumb_func_start ScrCmd_Unk0299
+ScrCmd_Unk0299: ; 0x02042A18
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -916,8 +916,8 @@ FUN_02042A18: ; 0x02042A18
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02042A48
-FUN_02042A48: ; 0x02042A48
+ thumb_func_start ScrCmd_Unk029A
+ScrCmd_Unk029A: ; 0x02042A48
push {r4-r6, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -955,8 +955,8 @@ _02042A90:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_02042A98
-FUN_02042A98: ; 0x02042A98
+ thumb_func_start ScrCmd_Unk029B
+ScrCmd_Unk029B: ; 0x02042A98
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s
index cc011b0f..25911feb 100644
--- a/arm9/asm/scrcmd_12.s
+++ b/arm9/asm/scrcmd_12.s
@@ -47,8 +47,8 @@ FUN_02042D10: ; 0x02042D10
bl FUN_0202B020
pop {r3, pc}
- thumb_func_start FUN_02042D1C
-FUN_02042D1C: ; 0x02042D1C
+ thumb_func_start ScrCmd_Unk023E
+ScrCmd_Unk023E: ; 0x02042D1C
push {r3-r7, lr}
sub sp, #0x20
add r4, r0, #0x0
diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s
index f0e027ed..3df4d6e4 100644
--- a/arm9/asm/scrcmd_17.s
+++ b/arm9/asm/scrcmd_17.s
@@ -16,8 +16,8 @@ UNK_020F4494: ; 0x020F4494
.text
- thumb_func_start FUN_02044158
-FUN_02044158: ; 0x02044158
+ thumb_func_start ScrCmd_Unk0215
+ScrCmd_Unk0215: ; 0x02044158
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -27,8 +27,8 @@ FUN_02044158: ; 0x02044158
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0204416C
-FUN_0204416C: ; 0x0204416C
+ thumb_func_start ScrCmd_Unk0216
+ScrCmd_Unk0216: ; 0x0204416C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -48,8 +48,8 @@ FUN_0204416C: ; 0x0204416C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02044198
-FUN_02044198: ; 0x02044198
+ thumb_func_start ScrCmd_Unk0217
+ScrCmd_Unk0217: ; 0x02044198
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s
index fe0e3aa9..25fe86b8 100644
--- a/arm9/asm/scrcmd_18.s
+++ b/arm9/asm/scrcmd_18.s
@@ -3,8 +3,8 @@
.text
- thumb_func_start ScrCmd_getpartyspecies
-ScrCmd_getpartyspecies: ; 0x0204434C
+ thumb_func_start ScrCmd_GetPartySpecies
+ScrCmd_GetPartySpecies: ; 0x0204434C
; getpartyspecies XXXX, YYYY
; Sets var YYYY to species of mon in party slot XXXX.
; If mon is an egg, the value is SPECIES_NONE.
@@ -49,8 +49,8 @@ _020443A2:
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start ScrCmd_checkpartymonotid
-ScrCmd_checkpartymonotid: ; 0x020443A8
+ thumb_func_start ScrCmd_CheckPartyMonOTID
+ScrCmd_CheckPartyMonOTID: ; 0x020443A8
push {r3-r7, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -98,8 +98,8 @@ _0204440E:
mov r0, #0x0
pop {r3-r7, pc}
- thumb_func_start ScrCmd_giveegg
-ScrCmd_giveegg: ; 0x02044414
+ thumb_func_start ScrCmd_GiveEgg
+ScrCmd_GiveEgg: ; 0x02044414
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -157,8 +157,8 @@ _02044494:
pop {r4-r7, pc}
.balign 4
- thumb_func_start ScrCmd_setpartymonmove
-ScrCmd_setpartymonmove: ; 0x0204449C
+ thumb_func_start ScrCmd_SetPartyMonMove
+ScrCmd_SetPartyMonMove: ; 0x0204449C
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -196,8 +196,8 @@ ScrCmd_setpartymonmove: ; 0x0204449C
pop {r3-r7, pc}
.balign 4
- thumb_func_start ScrCmd_partymonhasmove
-ScrCmd_partymonhasmove: ; 0x020444F4
+ thumb_func_start ScrCmd_PartyMonHasMove
+ScrCmd_PartyMonHasMove: ; 0x020444F4
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -271,8 +271,8 @@ _02044592:
pop {r3-r7, pc}
.balign 4
- thumb_func_start ScrCmd_findpartymonwithmove
-ScrCmd_findpartymonwithmove: ; 0x02044598
+ thumb_func_start ScrCmd_FindPartyMonWithMove
+ScrCmd_FindPartyMonWithMove: ; 0x02044598
push {r3-r7, lr}
sub sp, #0x8
add r4, r0, #0x0
@@ -359,8 +359,8 @@ _02044648:
_02044650: .word 0x00000006
_02044654: .word 0x00000000
- thumb_func_start ScrCmd_survivepsn
-ScrCmd_survivepsn: ; 0x02044658
+ thumb_func_start ScrCmd_SurvivePsn
+ScrCmd_SurvivePsn: ; 0x02044658
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -389,8 +389,8 @@ ScrCmd_survivepsn: ; 0x02044658
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start ScrCmd_countpartymonsatorbelowlevel
-ScrCmd_countpartymonsatorbelowlevel: ; 0x0204469C
+ thumb_func_start ScrCmd_CountPartyMonsAtOrBelowLevel
+ScrCmd_CountPartyMonsAtOrBelowLevel: ; 0x0204469C
push {r4-r7, lr}
sub sp, #0xc
add r4, r0, #0x0
@@ -459,8 +459,8 @@ _02044726:
add sp, #0xc
pop {r4-r7, pc}
- thumb_func_start ScrCmd_getpartymonlevel
-ScrCmd_getpartymonlevel: ; 0x02044730
+ thumb_func_start ScrCmd_GetPartyMonLevel
+ScrCmd_GetPartyMonLevel: ; 0x02044730
push {r4-r6, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -501,8 +501,8 @@ _02044786:
pop {r4-r6, pc}
.balign 4
- thumb_func_start ScrCmd_getpartymonnature
-ScrCmd_getpartymonnature: ; 0x0204478C
+ thumb_func_start ScrCmd_GetPartyMonNature
+ScrCmd_GetPartyMonNature: ; 0x0204478C
push {r4-r6, lr}
add r6, r0, #0x0
add r1, r6, #0x0
@@ -554,8 +554,8 @@ _020447F2:
pop {r4-r6, pc}
.balign 4
- thumb_func_start ScrCmd_findpartymonwithnature
-ScrCmd_findpartymonwithnature: ; 0x02044800
+ thumb_func_start ScrCmd_FindPartyMonWithNature
+ScrCmd_FindPartyMonWithNature: ; 0x02044800
push {r3-r7, lr}
sub sp, #0x8
add r4, r0, #0x0
@@ -619,8 +619,8 @@ _0204487E:
_02044884: .word 0x000000FF
_02044888: .word 0x00000000
- thumb_func_start ScrCmd_getpartymonfriendship
-ScrCmd_getpartymonfriendship: ; 0x0204488C
+ thumb_func_start ScrCmd_GetPartyMonFriendship
+ScrCmd_GetPartyMonFriendship: ; 0x0204488C
push {r4-r6, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -651,8 +651,8 @@ ScrCmd_getpartymonfriendship: ; 0x0204488C
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_020448D4
-FUN_020448D4: ; 0x020448D4
+ thumb_func_start ScrCmd_Unk01BA
+ScrCmd_Unk01BA: ; 0x020448D4
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -748,8 +748,8 @@ _02044994:
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_020449A4
-FUN_020449A4: ; 0x020449A4
+ thumb_func_start ScrCmd_Unk01BB
+ScrCmd_Unk01BB: ; 0x020449A4
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
@@ -797,8 +797,8 @@ _020449FA:
add sp, #0x4
pop {r3-r6, pc}
- thumb_func_start FUN_02044A0C
-FUN_02044A0C: ; 0x02044A0C
+ thumb_func_start ScrCmd_Unk0281
+ScrCmd_Unk0281: ; 0x02044A0C
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -839,8 +839,8 @@ FUN_02044A0C: ; 0x02044A0C
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02044A6C
-FUN_02044A6C: ; 0x02044A6C
+ thumb_func_start ScrCmd_Unk0247
+ScrCmd_Unk0247: ; 0x02044A6C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -859,8 +859,8 @@ FUN_02044A6C: ; 0x02044A6C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02044A94
-FUN_02044A94: ; 0x02044A94
+ thumb_func_start ScrCmd_Unk0248
+ScrCmd_Unk0248: ; 0x02044A94
push {r3-r7, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -906,8 +906,8 @@ FUN_02044A94: ; 0x02044A94
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02044B00
-FUN_02044B00: ; 0x02044B00
+ thumb_func_start ScrCmd_Unk0177
+ScrCmd_Unk0177: ; 0x02044B00
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -927,8 +927,8 @@ FUN_02044B00: ; 0x02044B00
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02044B2C
-FUN_02044B2C: ; 0x02044B2C
+ thumb_func_start ScrCmd_Unk019A
+ScrCmd_Unk019A: ; 0x02044B2C
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -970,8 +970,8 @@ _02044B7A:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02044B84
-FUN_02044B84: ; 0x02044B84
+ thumb_func_start ScrCmd_Unk019B
+ScrCmd_Unk019B: ; 0x02044B84
push {r4-r7, lr}
sub sp, #0xc
add r4, r0, #0x0
@@ -1034,8 +1034,8 @@ _02044C00:
pop {r4-r7, pc}
.balign 4
- thumb_func_start FUN_02044C0C
-FUN_02044C0C: ; 0x02044C0C
+ thumb_func_start ScrCmd_Unk019C
+ScrCmd_Unk019C: ; 0x02044C0C
push {r4-r7, lr}
sub sp, #0xc
add r4, r0, #0x0
@@ -1092,8 +1092,8 @@ _02044C76:
add sp, #0xc
pop {r4-r7, pc}
- thumb_func_start FUN_02044C88
-FUN_02044C88: ; 0x02044C88
+ thumb_func_start ScrCmd_Unk019D
+ScrCmd_Unk019D: ; 0x02044C88
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -1135,8 +1135,8 @@ _02044CD6:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02044CE0
-FUN_02044CE0: ; 0x02044CE0
+ thumb_func_start ScrCmd_Unk0119
+ScrCmd_Unk0119: ; 0x02044CE0
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -1184,8 +1184,8 @@ _02044D3C:
.balign 4
_02044D40: .word 0x00000000
- thumb_func_start FUN_02044D44
-FUN_02044D44: ; 0x02044D44
+ thumb_func_start ScrCmd_Unk011A
+ScrCmd_Unk011A: ; 0x02044D44
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1216,8 +1216,8 @@ FUN_02044D44: ; 0x02044D44
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02044D8C
-FUN_02044D8C: ; 0x02044D8C
+ thumb_func_start ScrCmd_Unk01C8
+ScrCmd_Unk01C8: ; 0x02044D8C
push {r4-r6, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -1297,8 +1297,8 @@ _02044E2C:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_02044E34
-FUN_02044E34: ; 0x02044E34
+ thumb_func_start ScrCmd_Unk01C9
+ScrCmd_Unk01C9: ; 0x02044E34
push {r4-r6, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -1327,8 +1327,8 @@ FUN_02044E34: ; 0x02044E34
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02044E78
-FUN_02044E78: ; 0x02044E78
+ thumb_func_start ScrCmd_Unk01CA
+ScrCmd_Unk01CA: ; 0x02044E78
push {r3-r7, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -1369,8 +1369,8 @@ FUN_02044E78: ; 0x02044E78
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02044ED8
-FUN_02044ED8: ; 0x02044ED8
+ thumb_func_start ScrCmd_Unk01EE
+ScrCmd_Unk01EE: ; 0x02044ED8
push {r4-r6, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -1401,8 +1401,8 @@ FUN_02044ED8: ; 0x02044ED8
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02044F20
-FUN_02044F20: ; 0x02044F20
+ thumb_func_start ScrCmd_Unk01F0
+ScrCmd_Unk01F0: ; 0x02044F20
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -1427,8 +1427,8 @@ FUN_02044F20: ; 0x02044F20
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_02044F58
-FUN_02044F58: ; 0x02044F58
+ thumb_func_start ScrCmd_Unk01C0
+ScrCmd_Unk01C0: ; 0x02044F58
push {r3-r7, lr}
sub sp, #0x8
add r4, r0, #0x0
@@ -1495,8 +1495,8 @@ _02044FDE:
.balign 4
_02044FE4: .word 0x00000000
- thumb_func_start FUN_02044FE8
-FUN_02044FE8: ; 0x02044FE8
+ thumb_func_start ScrCmd_Unk022E
+ScrCmd_Unk022E: ; 0x02044FE8
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1550,8 +1550,8 @@ _02045048:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0204505C
-FUN_0204505C: ; 0x0204505C
+ thumb_func_start ScrCmd_Unk022F
+ScrCmd_Unk022F: ; 0x0204505C
push {r3-r7, lr}
sub sp, #0x10
add r4, r0, #0x0
@@ -1632,8 +1632,8 @@ _020450E8:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02045104
-FUN_02045104: ; 0x02045104
+ thumb_func_start ScrCmd_Unk0230
+ScrCmd_Unk0230: ; 0x02045104
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1679,8 +1679,8 @@ FUN_02045104: ; 0x02045104
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02045170
-FUN_02045170: ; 0x02045170
+ thumb_func_start ScrCmd_Unk0231
+ScrCmd_Unk0231: ; 0x02045170
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
@@ -1722,8 +1722,8 @@ FUN_02045170: ; 0x02045170
pop {r3-r6, pc}
.balign 4
- thumb_func_start FUN_020451D0
-FUN_020451D0: ; 0x020451D0
+ thumb_func_start ScrCmd_Unk02B7
+ScrCmd_Unk02B7: ; 0x020451D0
push {r3-r7, lr}
sub sp, #0x8
add r4, r0, #0x0
@@ -1795,7 +1795,7 @@ _0204524C:
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_02045264
-FUN_02045264: ; 0x02045264
+ thumb_func_start ScrCmd_Unk00A0
+ScrCmd_Unk00A0: ; 0x02045264
mov r0, #0x0
bx lr
diff --git a/arm9/asm/scrcmd_2.s b/arm9/asm/scrcmd_2.s
deleted file mode 100644
index d7d98c66..00000000
--- a/arm9/asm/scrcmd_2.s
+++ /dev/null
@@ -1,391 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F40A0
-UNK_020F40A0: ; 0x020F40A0
- .byte 0x8E, 0x00, 0x0B, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40A6
-UNK_020F40A6: ; 0x020F40A6
- .byte 0x92, 0x00, 0x0E, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40AC
-UNK_020F40AC: ; 0x020F40AC
- .byte 0x8C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40B4
-UNK_020F40B4: ; 0x020F40B4
- .byte 0x8D, 0x00, 0x0E, 0x00, 0x06, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40BC
-UNK_020F40BC: ; 0x020F40BC
- .byte 0x92, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40C6
-UNK_020F40C6: ; 0x020F40C6
- .byte 0x24, 0x00, 0x22, 0x00, 0x23, 0x00, 0x25, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40D0
-UNK_020F40D0: ; 0x020F40D0
- .byte 0x90, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40DA
-UNK_020F40DA: ; 0x020F40DA
- .byte 0x92, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0D, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40E4
-UNK_020F40E4: ; 0x020F40E4
- .byte 0x92, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40EE
-UNK_020F40EE: ; 0x020F40EE
- .byte 0x92, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0xFF, 0xFF
-
- .global UNK_020F40F8
-UNK_020F40F8: ; 0x020F40F8
- .byte 0x8F, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4102
-UNK_020F4102: ; 0x020F4102
- .byte 0x92, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0xFF, 0xFF
-
- .global UNK_020F410C
-UNK_020F410C: ; 0x020F410C
- .byte 0x07, 0x00, 0x16, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4118
-UNK_020F4118: ; 0x020F4118
- .byte 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4126
-UNK_020F4126: ; 0x020F4126
- .byte 0x2E, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2D, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4134
-UNK_020F4134: ; 0x020F4134
- .byte 0x6D, 0x01, 0x60, 0x01, 0x55, 0x01, 0x5D, 0x01, 0x7B, 0x01, 0x56, 0x01, 0xFF, 0xFF
-
- .global UNK_020F4142
-UNK_020F4142: ; 0x020F4142
- .byte 0x02, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x25, 0x00, 0x2C, 0x00, 0x10, 0x00, 0x17, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4152
-UNK_020F4152: ; 0x020F4152
- .byte 0x1B, 0x00, 0x22, 0x00, 0x29, 0x00, 0x30, 0x00, 0x06, 0x00, 0x0D, 0x00, 0x14, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4162
-UNK_020F4162: ; 0x020F4162
- .byte 0x03, 0x00, 0x0A, 0x00, 0x1F, 0x00, 0x26, 0x00, 0x2D, 0x00, 0x11, 0x00, 0x18, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4172
-UNK_020F4172: ; 0x020F4172
- .byte 0x04, 0x00, 0x19, 0x00, 0x20, 0x00, 0x27, 0x00, 0x2E, 0x00, 0x0B, 0x00, 0x12, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4182
-UNK_020F4182: ; 0x020F4182
- .byte 0x9A, 0x01, 0x58, 0x01, 0x7D, 0x01, 0x5B, 0x01, 0x68, 0x01, 0x57, 0x01, 0x8D, 0x01, 0xFF, 0xFF
-
- .global UNK_020F4192
-UNK_020F4192: ; 0x020F4192
- .byte 0x01, 0x00, 0x08, 0x00, 0x1D, 0x00, 0x2B, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x24, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41A2
-UNK_020F41A2: ; 0x020F41A2
- .byte 0x1A, 0x00, 0x21, 0x00, 0x28, 0x00, 0x2F, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x13, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41B2
-UNK_020F41B2: ; 0x020F41B2
- .byte 0x07, 0x00, 0x31, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x0E, 0x00, 0x15, 0x00, 0x23, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41C2
-UNK_020F41C2: ; 0x020F41C2
- .byte 0x0E, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x0B, 0x00
- .byte 0xFF, 0xFF
-
- .global UNK_020F41D4
-UNK_020F41D4: ; 0x020F41D4
- .byte 0x3B, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00
- .byte 0xFF, 0xFF
-
- .global UNK_020F41E6
-UNK_020F41E6: ; 0x020F41E6
- .byte 0x11, 0x00, 0x1A, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x16, 0x00, 0x13, 0x00
- .byte 0x14, 0x00, 0x15, 0x00, 0x1B, 0x00, 0xFF, 0xFF
-
- .global UNK_020F41FE
-UNK_020F41FE: ; 0x020F41FE
- .byte 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x4E, 0x00, 0x3F, 0x00, 0x4F, 0x00, 0x4C, 0x00, 0x4D, 0x00
- .byte 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x91, 0x00, 0xFF, 0xFF
-
- .global UNK_020F4218
-UNK_020F4218: ; 0x020F4218
- .byte 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x11, 0x00, 0x01, 0x00
- .byte 0x1A, 0x00, 0x02, 0x00, 0x19, 0x00, 0x04, 0x00, 0x18, 0x00, 0x05, 0x00, 0x17, 0x00, 0x06, 0x00
- .byte 0x1C, 0x00, 0x03, 0x00, 0x12, 0x00, 0x01, 0x00, 0x16, 0x00, 0x01, 0x00, 0x15, 0x00, 0x02, 0x00
- .byte 0x13, 0x00, 0x02, 0x00, 0x14, 0x00, 0x02, 0x00, 0x1B, 0x00, 0x04, 0x00, 0x4E, 0x00, 0x02, 0x00
- .byte 0x4F, 0x00, 0x02, 0x00, 0x4C, 0x00, 0x03, 0x00, 0x4D, 0x00, 0x04, 0x00
-
- .section .data
-
- .balign 4, 0
- .global UNK_02105DEC
-UNK_02105DEC: ; 0x02105DEC
- .word UNK_020F410C
- .word UNK_020F4118
-
- .global UNK_02105DF4
-UNK_02105DF4: ; 0x02105DF4
- .word UNK_020F4192
- .word UNK_020F4142
- .word UNK_020F4162
- .word UNK_020F4172
- .word UNK_020F41A2
- .word UNK_020F4152
- .word UNK_020F41B2
-
- .global UNK_02105E10
-UNK_02105E10: ; 0x02105E10
- .word UNK_020F40A6
- .word UNK_020F40B4
- .word UNK_020F40AC
- .word UNK_020F40BC
- .word UNK_020F40C6
- .word UNK_020F40F8
- .word UNK_020F40DA
- .word UNK_020F40E4
- .word UNK_020F41E6
- .word UNK_020F41FE
- .word UNK_020F41D4
- .word UNK_020F4126
- .word UNK_020F4182
- .word UNK_020F4134
- .word UNK_020F40EE
- .word UNK_020F40D0
- .word UNK_020F4102
- .word UNK_020F40A0
- .word UNK_020F41C2
-
- .text
-
- thumb_func_start FUN_0203FCF4
-FUN_0203FCF4: ; 0x0203FCF4
- push {r4-r7, lr}
- sub sp, #0x84
- add r7, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r7, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- mov r4, #0x0
- add r6, r4, #0x0
- add r5, r4, #0x0
-_0203FD10:
- add r0, r7, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r5, #0x0
- bl PlayerProfile_TestBadgeFlag
- cmp r0, #0x1
- bne _0203FD2C
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
-_0203FD2C:
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #0x8
- blo _0203FD10
- cmp r6, #0x8
- bhi _0203FD70
- add r0, r6, r6
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0203FD46: ; jump table (using 16-bit offset)
- .short _0203FD58 - _0203FD46 - 2; case 0
- .short _0203FD5C - _0203FD46 - 2; case 1
- .short _0203FD5C - _0203FD46 - 2; case 2
- .short _0203FD60 - _0203FD46 - 2; case 3
- .short _0203FD60 - _0203FD46 - 2; case 4
- .short _0203FD64 - _0203FD46 - 2; case 5
- .short _0203FD64 - _0203FD46 - 2; case 6
- .short _0203FD68 - _0203FD46 - 2; case 7
- .short _0203FD6C - _0203FD46 - 2; case 8
-_0203FD58:
- mov r1, #0x1
- b _0203FD72
-_0203FD5C:
- mov r1, #0x2
- b _0203FD72
-_0203FD60:
- mov r1, #0x3
- b _0203FD72
-_0203FD64:
- mov r1, #0x4
- b _0203FD72
-_0203FD68:
- mov r1, #0x5
- b _0203FD72
-_0203FD6C:
- mov r1, #0x6
- b _0203FD72
-_0203FD70:
- mov r1, #0x1
-_0203FD72:
- ldr r0, _0203FDB4 ; =UNK_020F4218
- mov r2, #0x0
- add r6, sp, #0x4
-_0203FD78:
- lsl r3, r2, #0x2
- add r5, r0, r3
- ldrh r3, [r5, #0x2]
- cmp r1, r3
- blt _0203FD8E
- ldrh r5, [r5, #0x0]
- lsl r3, r4, #0x1
- strh r5, [r6, r3]
- add r3, r4, #0x1
- lsl r3, r3, #0x18
- lsr r4, r3, #0x18
-_0203FD8E:
- add r2, r2, #0x1
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- cmp r2, #0x13
- blo _0203FD78
- ldr r1, _0203FDB8 ; =0x0000FFFF
- lsl r0, r4, #0x1
- add r2, sp, #0x4
- strh r1, [r2, r0]
- mov r3, #0x0
- str r3, [sp, #0x0]
- ldr r0, [r7, #0x74]
- add r7, #0x80
- ldr r1, [r7, #0x0]
- bl MOD06_0223D3D0
- mov r0, #0x1
- add sp, #0x84
- pop {r4-r7, pc}
- .balign 4
-_0203FDB4: .word UNK_020F4218
-_0203FDB8: .word 0x0000FFFF
-
- thumb_func_start FUN_0203FDBC
-FUN_0203FDBC: ; 0x0203FDBC
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r2, r0, #0x0
- ldr r0, _0203FE00 ; =0x0000FFF8
- add r0, r2, r0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0x5
- bhi _0203FDE4
- mov r0, #0x1
- b _0203FDE6
-_0203FDE4:
- mov r0, #0x0
-_0203FDE6:
- lsl r3, r2, #0x2
- str r0, [sp, #0x0]
- ldr r2, _0203FE04 ; =UNK_02105E10
- ldr r0, [r4, #0x74]
- add r4, #0x80
- ldr r2, [r2, r3]
- ldr r1, [r4, #0x0]
- mov r3, #0x0
- bl MOD06_0223D3D0
- mov r0, #0x1
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-_0203FE00: .word 0x0000FFF8
-_0203FE04: .word UNK_02105E10
-
- thumb_func_start FUN_0203FE08
-FUN_0203FE08: ; 0x0203FE08
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r2, r0, #0x0
- cmp r2, #0x1
- bhi _0203FE28
- mov r0, #0x1
- b _0203FE2A
-_0203FE28:
- mov r0, #0x0
-_0203FE2A:
- lsl r3, r2, #0x2
- str r0, [sp, #0x0]
- ldr r2, _0203FE44 ; =UNK_02105DEC
- ldr r0, [r4, #0x74]
- add r4, #0x80
- ldr r2, [r2, r3]
- ldr r1, [r4, #0x0]
- mov r3, #0x1
- bl MOD06_0223D3D0
- mov r0, #0x1
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-_0203FE44: .word UNK_02105DEC
-
- thumb_func_start FUN_0203FE48
-FUN_0203FE48: ; 0x0203FE48
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r2, r0, #0x0
- mov r0, #0x0
- lsl r3, r2, #0x2
- str r0, [sp, #0x0]
- ldr r2, _0203FE7C ; =UNK_02105DF4
- ldr r0, [r4, #0x74]
- add r4, #0x80
- ldr r2, [r2, r3]
- ldr r1, [r4, #0x0]
- mov r3, #0x2
- bl MOD06_0223D3D0
- mov r0, #0x1
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-_0203FE7C: .word UNK_02105DF4
-
- thumb_func_start FUN_0203FE80
-FUN_0203FE80: ; 0x0203FE80
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x10]
- bl FUN_02038AD0
- mov r0, #0x1
- pop {r3, pc}
diff --git a/arm9/asm/scrcmd_21.s b/arm9/asm/scrcmd_21.s
deleted file mode 100644
index e1f03c4a..00000000
--- a/arm9/asm/scrcmd_21.s
+++ /dev/null
@@ -1,465 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F4574
-UNK_020F4574: ; 0x020F4574
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
-
- .text
-
- thumb_func_start FUN_020453F4
-FUN_020453F4: ; 0x020453F4
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_Pokedex_get
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl Pokedex_GetSinnohDexFlag
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045424
-FUN_02045424: ; 0x02045424
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_Pokedex_get
- bl Pokedex_SetSinnohDexFlag
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045438
-FUN_02045438: ; 0x02045438
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02034E30
- bl FUN_02034E20
- bl FUN_02055474
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045468
-FUN_02045468: ; 0x02045468
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02034E30
- bl FUN_02034E20
- mov r1, #0x1
- bl FUN_02055488
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02045484
-FUN_02045484: ; 0x02045484
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- cmp r4, #0x8
- blo _020454B6
- bl ErrorHandling
-_020454B6:
- add r5, #0x80
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r4, #0x0
- bl PlayerProfile_TestBadgeFlag
- strh r0, [r6, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_020454CC
-FUN_020454CC: ; 0x020454CC
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- cmp r4, #0x8
- blo _020454EA
- bl ErrorHandling
-_020454EA:
- add r5, #0x80
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r4, #0x0
- bl PlayerProfile_SetBadgeFlag
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045500
-FUN_02045500: ; 0x02045500
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ECE0
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204552C
-FUN_0204552C: ; 0x0204552C
- push {r3-r7, lr}
- add r6, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r6, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- mov r4, #0x0
- ldr r7, _02045578 ; =UNK_020F4574
- str r0, [sp, #0x0]
- add r5, r4, #0x0
-_02045548:
- add r0, r6, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- ldrb r1, [r7, r4]
- bl PlayerProfile_TestBadgeFlag
- cmp r0, #0x1
- bne _02045564
- add r0, r5, #0x1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
-_02045564:
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #0x8
- blo _02045548
- ldr r0, [sp, #0x0]
- strh r5, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- nop
-_02045578: .word UNK_020F4574
-
- thumb_func_start FUN_0204557C
-FUN_0204557C: ; 0x0204557C
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ECD4
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045590
-FUN_02045590: ; 0x02045590
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED3C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020455BC
-FUN_020455BC: ; 0x020455BC
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED1C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_020455D0
-FUN_020455D0: ; 0x020455D0
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED2C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_020455E4
-FUN_020455E4: ; 0x020455E4
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED6C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045610
-FUN_02045610: ; 0x02045610
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED4C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045624
-FUN_02045624: ; 0x02045624
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED5C
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045638
-FUN_02045638: ; 0x02045638
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ED0C
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045664
-FUN_02045664: ; 0x02045664
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- bl FUN_0205ECFC
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02045678
-FUN_02045678: ; 0x02045678
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- ldr r2, [r5, #0x8]
- add r4, r0, #0x0
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- beq _020456A6
- cmp r1, #0x1
- beq _0204569E
- cmp r1, #0x2
- beq _020456AE
- b _020456CC
-_0204569E:
- mov r1, #0x1
- bl FUN_0205F264
- b _020456D0
-_020456A6:
- mov r1, #0x0
- bl FUN_0205F264
- b _020456D0
-_020456AE:
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x2
- bl FUN_0205F264
- strh r0, [r5, #0x0]
- b _020456D0
-_020456CC:
- bl ErrorHandling
-_020456D0:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020456D4
-FUN_020456D4: ; 0x020456D4
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- ldr r2, [r5, #0x8]
- add r4, r0, #0x0
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- beq _02045700
- cmp r1, #0x1
- beq _020456FA
- cmp r1, #0x2
- beq _02045706
- b _02045722
-_020456FA:
- bl FUN_0205F274
- b _02045726
-_02045700:
- bl FUN_0205F284
- b _02045726
-_02045706:
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0205F294
- strh r0, [r5, #0x0]
- b _02045726
-_02045722:
- bl ErrorHandling
-_02045726:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204572C
-FUN_0204572C: ; 0x0204572C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_Flags_get
- ldr r2, [r5, #0x8]
- add r4, r0, #0x0
- add r1, r2, #0x1
- str r1, [r5, #0x8]
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- beq _02045758
- cmp r1, #0x1
- beq _02045752
- cmp r1, #0x2
- beq _0204575E
- b _0204577A
-_02045752:
- bl FUN_0205F2A4
- b _0204577E
-_02045758:
- bl FUN_0205F2B4
- b _0204577E
-_0204575E:
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0205F2C4
- strh r0, [r5, #0x0]
- b _0204577E
-_0204577A:
- bl ErrorHandling
-_0204577E:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_24.s b/arm9/asm/scrcmd_24.s
deleted file mode 100644
index b9569382..00000000
--- a/arm9/asm/scrcmd_24.s
+++ /dev/null
@@ -1,316 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02045D88
-FUN_02045D88: ; 0x02045D88
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- add r1, r5, #0x0
- add r1, #0x80
- lsl r2, r4, #0x18
- add r6, r0, #0x0
- ldr r1, [r1, #0x0]
- mov r0, #0x20
- lsr r2, r2, #0x18
- bl FUN_02037CF0
- str r0, [r6, #0x0]
- ldr r1, _02045DCC ; =FUN_0203BC04
- add r0, r5, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4-r6, pc}
- nop
-_02045DCC: .word FUN_0203BC04
-
- thumb_func_start FUN_02045DD0
-FUN_02045DD0: ; 0x02045DD0
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02045DFC
- bl ErrorHandling
-_02045DFC:
- ldr r0, [r4, #0x0]
- bl FUN_02037D5C
- strh r0, [r5, #0x0]
- ldrh r0, [r5, #0x0]
- cmp r0, #0x4
- bne _02045E0E
- mov r0, #0xff
- strh r0, [r5, #0x0]
-_02045E0E:
- ldr r0, [r4, #0x0]
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045E1C
-FUN_02045E1C: ; 0x02045E1C
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_02045E20
-FUN_02045E20: ; 0x02045E20
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, #0x80
- add r6, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x20
- bl FUN_02088DF8
- add r5, r0, #0x0
- bl FUN_02088EF8
- strh r0, [r4, #0x0]
- add r0, r5, #0x0
- bl FreeToHeap
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02045E74
-FUN_02045E74: ; 0x02045E74
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r0, #0x80
- add r7, r1, #0x0
- ldr r0, [r0, #0x0]
- mov r1, #0x13
- str r2, [sp, #0x0]
- add r6, r3, #0x0
- bl FUN_02039438
- str r0, [sp, #0x4]
- mov r0, #0x20
- bl FUN_02088DD8
- add r4, r0, #0x0
- ldr r0, [sp, #0x4]
- str r4, [r0, #0x0]
- ldr r0, [sp, #0x0]
- str r0, [r4, #0x0]
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- str r0, [r4, #0x4]
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetOptionsAddr
- str r0, [r4, #0x8]
- str r6, [r4, #0xc]
- add r0, r5, #0x0
- strb r7, [r4, #0x15]
- add r0, #0x80
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- bl FUN_02038864
- ldr r1, _02045EDC ; =FUN_0203BC04
- add r0, r5, #0x0
- bl SetupNativeScript
- add r0, r6, #0x0
- bl FreeToHeap
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_02045EDC: .word FUN_0203BC04
-
- thumb_func_start FUN_02045EE0
-FUN_02045EE0: ; 0x02045EE0
- mov r0, #0x1
- bx lr
-
- thumb_func_start FUN_02045EE4
-FUN_02045EE4: ; 0x02045EE4
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl GetPartyMonByIndex
- add r4, r0, #0x0
- mov r1, #0x20
- bl FUN_02088DF8
- add r3, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x1
- add r2, r4, #0x0
- bl FUN_02045E74
- mov r0, #0x1
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02045F24
-FUN_02045F24: ; 0x02045F24
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- add r6, r0, #0x0
- mov r0, #0x20
- mov r1, #0x4
- bl AllocFromHeap
- add r3, r0, #0x0
- ldr r0, _02045F80 ; =0x0000FFFF
- strh r4, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r0, r5, #0x0
- mov r1, #0x0
- add r2, r6, #0x0
- bl FUN_02045E74
- mov r0, #0x1
- pop {r4-r6, pc}
- .balign 4
-_02045F80: .word 0x0000FFFF
-
- thumb_func_start FUN_02045F84
-FUN_02045F84: ; 0x02045F84
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_02045F88
-FUN_02045F88: ; 0x02045F88
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- ldr r4, [r0, #0x0]
- cmp r4, #0x0
- bne _02045FB2
- bl ErrorHandling
-_02045FB2:
- ldrb r0, [r4, #0x16]
- cmp r0, #0x0
- bne _02045FBC
- mov r0, #0x0
- b _02045FBE
-_02045FBC:
- mov r0, #0xff
-_02045FBE:
- strh r0, [r5, #0x0]
- add r0, r4, #0x0
- bl FUN_02088DF0
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02045FCC
-FUN_02045FCC: ; 0x02045FCC
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- ldr r4, [r0, #0x0]
- cmp r4, #0x0
- bne _02045FF6
- bl ErrorHandling
-_02045FF6:
- ldrb r0, [r4, #0x16]
- cmp r0, #0x0
- bne _02046000
- mov r0, #0x0
- b _02046002
-_02046000:
- mov r0, #0xff
-_02046002:
- strh r0, [r5, #0x0]
- add r0, r4, #0x0
- bl FUN_02088DF0
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s
index 28df2444..b0a515ef 100644
--- a/arm9/asm/scrcmd_3.s
+++ b/arm9/asm/scrcmd_3.s
@@ -3,8 +3,8 @@
.text
- thumb_func_start FUN_0203FE90
-FUN_0203FE90: ; 0x0203FE90
+ thumb_func_start ScrCmd_Unk00F8
+ScrCmd_Unk00F8: ; 0x0203FE90
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -26,8 +26,8 @@ FUN_0203FE90: ; 0x0203FE90
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203FEC0
-FUN_0203FEC0: ; 0x0203FEC0
+ thumb_func_start ScrCmd_Unk00F9
+ScrCmd_Unk00F9: ; 0x0203FEC0
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -65,8 +65,8 @@ FUN_0203FEF4: ; 0x0203FEF4
bl FUN_02082158
pop {r4, pc}
- thumb_func_start FUN_0203FF10
-FUN_0203FF10: ; 0x0203FF10
+ thumb_func_start ScrCmd_Unk00FA
+ScrCmd_Unk00FA: ; 0x0203FF10
push {r3-r7, lr}
sub sp, #0x38
add r5, r0, #0x0
@@ -173,7 +173,7 @@ FUN_0203FF10: ; 0x0203FF10
str r0, [sp, #0x30]
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_02029EF8
+ bl Sav2_Chatot_get
str r0, [sp, #0x34]
add r0, sp, #0x14
bl FUN_02081214
@@ -185,8 +185,8 @@ FUN_0203FF10: ; 0x0203FF10
add sp, #0x38
pop {r3-r7, pc}
- thumb_func_start FUN_02040028
-FUN_02040028: ; 0x02040028
+ thumb_func_start ScrCmd_Unk00FB
+ScrCmd_Unk00FB: ; 0x02040028
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -220,8 +220,8 @@ FUN_02040028: ; 0x02040028
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_02040074
-FUN_02040074: ; 0x02040074
+ thumb_func_start ScrCmd_Unk00FC
+ScrCmd_Unk00FC: ; 0x02040074
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -258,8 +258,8 @@ FUN_02040074: ; 0x02040074
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_020400C8
-FUN_020400C8: ; 0x020400C8
+ thumb_func_start ScrCmd_Unk00FD
+ScrCmd_Unk00FD: ; 0x020400C8
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -296,8 +296,8 @@ FUN_020400C8: ; 0x020400C8
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0204011C
-FUN_0204011C: ; 0x0204011C
+ thumb_func_start ScrCmd_Unk00FE
+ScrCmd_Unk00FE: ; 0x0204011C
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -334,8 +334,8 @@ FUN_0204011C: ; 0x0204011C
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02040170
-FUN_02040170: ; 0x02040170
+ thumb_func_start ScrCmd_Unk00FF
+ScrCmd_Unk00FF: ; 0x02040170
push {r4-r6, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -376,8 +376,8 @@ FUN_02040170: ; 0x02040170
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_020401CC
-FUN_020401CC: ; 0x020401CC
+ thumb_func_start ScrCmd_Unk0100
+ScrCmd_Unk0100: ; 0x020401CC
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -405,8 +405,8 @@ FUN_020401F0: ; 0x020401F0
bl FUN_02081EB8
pop {r3, pc}
- thumb_func_start FUN_02040204
-FUN_02040204: ; 0x02040204
+ thumb_func_start ScrCmd_Unk0101
+ScrCmd_Unk0101: ; 0x02040204
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -420,8 +420,8 @@ FUN_02040204: ; 0x02040204
mov r0, #0x1
pop {r4, pc}
- thumb_func_start FUN_02040220
-FUN_02040220: ; 0x02040220
+ thumb_func_start ScrCmd_Unk0102
+ScrCmd_Unk0102: ; 0x02040220
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -448,8 +448,8 @@ FUN_02040220: ; 0x02040220
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0204025C
-FUN_0204025C: ; 0x0204025C
+ thumb_func_start ScrCmd_Unk0103
+ScrCmd_Unk0103: ; 0x0204025C
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -476,8 +476,8 @@ FUN_0204025C: ; 0x0204025C
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02040298
-FUN_02040298: ; 0x02040298
+ thumb_func_start ScrCmd_Unk0104
+ScrCmd_Unk0104: ; 0x02040298
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -504,8 +504,8 @@ FUN_02040298: ; 0x02040298
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_020402D4
-FUN_020402D4: ; 0x020402D4
+ thumb_func_start ScrCmd_Unk0105
+ScrCmd_Unk0105: ; 0x020402D4
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -527,8 +527,8 @@ FUN_020402D4: ; 0x020402D4
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02040304
-FUN_02040304: ; 0x02040304
+ thumb_func_start ScrCmd_Unk0106
+ScrCmd_Unk0106: ; 0x02040304
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -555,8 +555,8 @@ FUN_02040304: ; 0x02040304
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02040340
-FUN_02040340: ; 0x02040340
+ thumb_func_start ScrCmd_Unk0107
+ScrCmd_Unk0107: ; 0x02040340
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -578,8 +578,8 @@ FUN_02040340: ; 0x02040340
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02040370
-FUN_02040370: ; 0x02040370
+ thumb_func_start ScrCmd_Unk0108
+ScrCmd_Unk0108: ; 0x02040370
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -601,8 +601,8 @@ FUN_02040370: ; 0x02040370
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_020403A0
-FUN_020403A0: ; 0x020403A0
+ thumb_func_start ScrCmd_Unk0109
+ScrCmd_Unk0109: ; 0x020403A0
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -624,8 +624,8 @@ FUN_020403A0: ; 0x020403A0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_020403D0
-FUN_020403D0: ; 0x020403D0
+ thumb_func_start ScrCmd_Unk010A
+ScrCmd_Unk010A: ; 0x020403D0
push {r4-r6, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -655,8 +655,8 @@ FUN_020403D0: ; 0x020403D0
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02040414
-FUN_02040414: ; 0x02040414
+ thumb_func_start ScrCmd_Unk010B
+ScrCmd_Unk010B: ; 0x02040414
push {r4-r6, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -686,8 +686,8 @@ FUN_02040414: ; 0x02040414
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_02040458
-FUN_02040458: ; 0x02040458
+ thumb_func_start ScrCmd_Unk010C
+ScrCmd_Unk010C: ; 0x02040458
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -709,8 +709,8 @@ FUN_02040458: ; 0x02040458
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02040488
-FUN_02040488: ; 0x02040488
+ thumb_func_start ScrCmd_Unk0110
+ScrCmd_Unk0110: ; 0x02040488
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -760,8 +760,8 @@ FUN_02040488: ; 0x02040488
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_020404FC
-FUN_020404FC: ; 0x020404FC
+ thumb_func_start ScrCmd_Unk010D
+ScrCmd_Unk010D: ; 0x020404FC
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -783,8 +783,8 @@ FUN_020404FC: ; 0x020404FC
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0204052C
-FUN_0204052C: ; 0x0204052C
+ thumb_func_start ScrCmd_Unk010E
+ScrCmd_Unk010E: ; 0x0204052C
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -813,8 +813,8 @@ FUN_0204052C: ; 0x0204052C
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0204056C
-FUN_0204056C: ; 0x0204056C
+ thumb_func_start ScrCmd_Unk010F
+ScrCmd_Unk010F: ; 0x0204056C
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -836,8 +836,8 @@ FUN_0204056C: ; 0x0204056C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0204059C
-FUN_0204059C: ; 0x0204059C
+ thumb_func_start ScrCmd_Unk0117
+ScrCmd_Unk0117: ; 0x0204059C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -849,8 +849,8 @@ FUN_0204059C: ; 0x0204059C
pop {r3, pc}
.balign 4
- thumb_func_start FUN_020405B4
-FUN_020405B4: ; 0x020405B4
+ thumb_func_start ScrCmd_Unk0118
+ScrCmd_Unk0118: ; 0x020405B4
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -862,8 +862,8 @@ FUN_020405B4: ; 0x020405B4
pop {r3, pc}
.balign 4
- thumb_func_start FUN_020405CC
-FUN_020405CC: ; 0x020405CC
+ thumb_func_start ScrCmd_Unk0111
+ScrCmd_Unk0111: ; 0x020405CC
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -883,8 +883,8 @@ FUN_020405CC: ; 0x020405CC
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_020405F8
-FUN_020405F8: ; 0x020405F8
+ thumb_func_start ScrCmd_Unk0112
+ScrCmd_Unk0112: ; 0x020405F8
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -917,8 +917,8 @@ _02040632:
pop {r3, pc}
.balign 4
- thumb_func_start FUN_02040638
-FUN_02040638: ; 0x02040638
+ thumb_func_start ScrCmd_Unk0113
+ScrCmd_Unk0113: ; 0x02040638
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -929,8 +929,8 @@ FUN_02040638: ; 0x02040638
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0204064C
-FUN_0204064C: ; 0x0204064C
+ thumb_func_start ScrCmd_Unk0114
+ScrCmd_Unk0114: ; 0x0204064C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -941,8 +941,8 @@ FUN_0204064C: ; 0x0204064C
pop {r3, pc}
.balign 4
- thumb_func_start FUN_02040660
-FUN_02040660: ; 0x02040660
+ thumb_func_start ScrCmd_Unk0115
+ScrCmd_Unk0115: ; 0x02040660
push {r4-r5, lr}
sub sp, #0x1c
add r5, r0, #0x0
@@ -991,8 +991,8 @@ _020406BA:
add sp, #0x1c
pop {r4-r5, pc}
- thumb_func_start FUN_020406C0
-FUN_020406C0: ; 0x020406C0
+ thumb_func_start ScrCmd_Unk0116
+ScrCmd_Unk0116: ; 0x020406C0
push {r3, lr}
ldr r0, [r0, #0x74]
bl MOD06_0224D3E8
diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s
index a1aa5216..2f3bd42c 100644
--- a/arm9/asm/scrcmd_5.s
+++ b/arm9/asm/scrcmd_5.s
@@ -9,8 +9,8 @@ UNK_021C5A10: ; 0x021C5A10
.text
- thumb_func_start FUN_02041194
-FUN_02041194: ; 0x02041194
+ thumb_func_start ScrCmd_Unk024E
+ScrCmd_Unk024E: ; 0x02041194
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -32,8 +32,8 @@ FUN_02041194: ; 0x02041194
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_020411C4
-FUN_020411C4: ; 0x020411C4
+ thumb_func_start ScrCmd_Unk024F
+ScrCmd_Unk024F: ; 0x020411C4
push {r4-r7, lr}
sub sp, #0x24
add r4, r0, #0x0
@@ -213,8 +213,8 @@ _02041336:
.balign 4
_0204133C: .word 0x00000000
- thumb_func_start FUN_02041340
-FUN_02041340: ; 0x02041340
+ thumb_func_start ScrCmd_Unk0250
+ScrCmd_Unk0250: ; 0x02041340
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
diff --git a/arm9/asm/scrcmd_6.s b/arm9/asm/scrcmd_6.s
deleted file mode 100644
index 10b41ff7..00000000
--- a/arm9/asm/scrcmd_6.s
+++ /dev/null
@@ -1,399 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020413C0
-FUN_020413C0: ; 0x020413C0
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02005410
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020413E8
-FUN_020413E8: ; 0x020413E8
- push {r3, lr}
- bl ScriptReadHalfword
- bl FUN_0200521C
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020413F8
-FUN_020413F8: ; 0x020413F8
- push {r3, lr}
- bl ScriptReadHalfword
- bl FUN_02004124
- mov r1, #0x0
- bl FUN_02005350
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_0204140C
-FUN_0204140C: ; 0x0204140C
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x1c]
- ldr r1, [r1, #0x0]
- bl FUN_0204ABA8
- bl FUN_0200521C
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02041424
-FUN_02041424: ; 0x02041424
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl FUN_0204AB20
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0204143C
-FUN_0204143C: ; 0x0204143C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl FUN_020053CC
- ldr r1, _02041460 ; =FUN_02041464
- add r0, r5, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3-r5, pc}
- .balign 4
-_02041460: .word FUN_02041464
-
- thumb_func_start FUN_02041464
-FUN_02041464: ; 0x02041464
- push {r3, lr}
- bl FUN_02005404
- cmp r0, #0x0
- bne _02041472
- mov r0, #0x1
- pop {r3, pc}
-_02041472:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02041478
-FUN_02041478: ; 0x02041478
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- mov r0, #0x7f
- mov r2, #0x0
- bl FUN_0200538C
- ldr r1, _02041498 ; =FUN_02041464
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- nop
-_02041498: .word FUN_02041464
-
- thumb_func_start FUN_0204149C
-FUN_0204149C: ; 0x0204149C
- push {r3, lr}
- ldr r1, [r0, #0x8]
- add r3, r1, #0x1
- str r3, [r0, #0x8]
- ldrb r2, [r1, #0x0]
- add r1, r3, #0x1
- str r1, [r0, #0x8]
- ldrb r1, [r3, #0x0]
- add r0, r2, #0x0
- bl FUN_020047C8
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020414B8
-FUN_020414B8: ; 0x020414B8
- push {r3, lr}
- bl ScriptReadHalfword
- add r1, r0, #0x0
- mov r0, #0x4
- bl FUN_02005308
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020414CC
-FUN_020414CC: ; 0x020414CC
- push {r3, lr}
- ldr r2, [r0, #0x8]
- add r1, r2, #0x1
- str r1, [r0, #0x8]
- ldrb r0, [r2, #0x0]
- bl FUN_020040F4
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020414E0
-FUN_020414E0: ; 0x020414E0
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- bl FUN_020054C8
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020414FC
-FUN_020414FC: ; 0x020414FC
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- mov r1, #0x0
- bl FUN_020054F0
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02041518
-FUN_02041518: ; 0x02041518
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- str r0, [r4, #0x64]
- ldr r1, _0204153C ; =FUN_02041540
- add r0, r4, #0x0
- bl SetupNativeScript
- mov r0, #0x1
- pop {r4, pc}
- nop
-_0204153C: .word FUN_02041540
-
- thumb_func_start FUN_02041540
-FUN_02041540: ; 0x02041540
- push {r3, lr}
- ldr r0, [r0, #0x64]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_02005508
- cmp r0, #0x0
- bne _02041554
- mov r0, #0x1
- pop {r3, pc}
-_02041554:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02041558
-FUN_02041558: ; 0x02041558
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r0, r5, #0x0
- bl FUN_02005578
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start ScrCmd_waitcry
-ScrCmd_waitcry: ; 0x02041588
- push {r3, lr}
- ldr r1, _02041594 ; =FUN_02041598
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_02041594: .word FUN_02041598
-
- thumb_func_start FUN_02041598
-FUN_02041598: ; 0x02041598
- push {r3, lr}
- bl FUN_02005670
- cmp r0, #0x0
- bne _020415A6
- mov r0, #0x1
- pop {r3, pc}
-_020415A6:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start ScrCmd_playbgm
-ScrCmd_playbgm: ; 0x020415AC
- push {r3, lr}
- bl ScriptReadHalfword
- bl PlayBGM
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020415BC
-FUN_020415BC: ; 0x020415BC
- push {r3, lr}
- ldr r1, _020415C8 ; =FUN_020415CC
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_020415C8: .word FUN_020415CC
-
- thumb_func_start FUN_020415CC
-FUN_020415CC: ; 0x020415CC
- push {r3, lr}
- bl FUN_02005CBC
- cmp r0, #0x0
- bne _020415DA
- mov r0, #0x1
- pop {r3, pc}
-_020415DA:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020415E0
-FUN_020415E0: ; 0x020415E0
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02029EF8
- bl FUN_02005D20
- cmp r0, #0x1
- bne _02041610
- mov r0, #0x1
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
-_02041610:
- mov r0, #0x0
- strh r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02041618
-FUN_02041618: ; 0x02041618
- push {r4, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- bl FUN_02005E28
- cmp r0, #0x0
- bne _0204163C
- mov r0, #0x1
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4, pc}
-_0204163C:
- mov r0, #0x0
- strh r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02041644
-FUN_02041644: ; 0x02041644
- push {r3, lr}
- bl FUN_02005E64
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02041650
-FUN_02041650: ; 0x02041650
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02029EF8
- bl FUN_02005E6C
- mov r0, #0x1
- pop {r3, pc}
-
- thumb_func_start FUN_02041664
-FUN_02041664: ; 0x02041664
- push {r3, lr}
- mov r1, #0x0
- mov r0, #0x3f
- add r2, r1, #0x0
- bl FUN_0200433C
- mov r0, #0x1
- pop {r3, pc}
-
- thumb_func_start FUN_02041674
-FUN_02041674: ; 0x02041674
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0200488C
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_7.s b/arm9/asm/scrcmd_7.s
index 01c0425f..58f8b6dc 100644
--- a/arm9/asm/scrcmd_7.s
+++ b/arm9/asm/scrcmd_7.s
@@ -3,8 +3,8 @@
.text
- thumb_func_start FUN_020416A8
-FUN_020416A8: ; 0x020416A8
+ thumb_func_start ScrCmd_Unk00B6
+ScrCmd_Unk00B6: ; 0x020416A8
push {r3-r7, lr}
sub sp, #0x18
add r5, r0, #0x0
@@ -91,8 +91,8 @@ _02041748:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02041770
-FUN_02041770: ; 0x02041770
+ thumb_func_start ScrCmd_Unk00B7
+ScrCmd_Unk00B7: ; 0x02041770
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -146,8 +146,8 @@ _020417DC:
mov r0, #0x1
pop {r4-r6, pc}
- thumb_func_start FUN_020417E0
-FUN_020417E0: ; 0x020417E0
+ thumb_func_start ScrCmd_Unk00B8
+ScrCmd_Unk00B8: ; 0x020417E0
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -166,8 +166,8 @@ FUN_020417E0: ; 0x020417E0
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_02041808
-FUN_02041808: ; 0x02041808
+ thumb_func_start ScrCmd_Unk00B9
+ScrCmd_Unk00B9: ; 0x02041808
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -207,8 +207,8 @@ _02041854:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0204185C
-FUN_0204185C: ; 0x0204185C
+ thumb_func_start ScrCmd_Unk00E4
+ScrCmd_Unk00E4: ; 0x0204185C
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -230,8 +230,8 @@ FUN_0204185C: ; 0x0204185C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0204188C
-FUN_0204188C: ; 0x0204188C
+ thumb_func_start ScrCmd_Unk00E5
+ScrCmd_Unk00E5: ; 0x0204188C
push {r3-r7, lr}
sub sp, #0x10
add r5, r0, #0x0
@@ -287,8 +287,8 @@ _020418F2:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0204190C
-FUN_0204190C: ; 0x0204190C
+ thumb_func_start ScrCmd_Unk02A0
+ScrCmd_Unk02A0: ; 0x0204190C
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -332,8 +332,8 @@ FUN_0204190C: ; 0x0204190C
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_02041970
-FUN_02041970: ; 0x02041970
+ thumb_func_start ScrCmd_Unk00E7
+ScrCmd_Unk00E7: ; 0x02041970
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -396,8 +396,8 @@ _020419EC:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_020419F8
-FUN_020419F8: ; 0x020419F8
+ thumb_func_start ScrCmd_Unk00E8
+ScrCmd_Unk00E8: ; 0x020419F8
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -460,8 +460,8 @@ _02041A74:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_02041A80
-FUN_02041A80: ; 0x02041A80
+ thumb_func_start ScrCmd_Unk00E9
+ScrCmd_Unk00E9: ; 0x02041A80
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -484,8 +484,8 @@ FUN_02041A80: ; 0x02041A80
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02041AB4
-FUN_02041AB4: ; 0x02041AB4
+ thumb_func_start ScrCmd_Unk00EA
+ScrCmd_Unk00EA: ; 0x02041AB4
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -499,16 +499,16 @@ FUN_02041AB4: ; 0x02041AB4
pop {r4, pc}
.balign 4
- thumb_func_start FUN_02041AD4
-FUN_02041AD4: ; 0x02041AD4
+ thumb_func_start ScrCmd_Unk00EB
+ScrCmd_Unk00EB: ; 0x02041AD4
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_02048498
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_02041AE0
-FUN_02041AE0: ; 0x02041AE0
+ thumb_func_start ScrCmd_Unk00EC
+ScrCmd_Unk00EC: ; 0x02041AE0
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -530,8 +530,8 @@ FUN_02041AE0: ; 0x02041AE0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02041B10
-FUN_02041B10: ; 0x02041B10
+ thumb_func_start ScrCmd_Unk00ED
+ScrCmd_Unk00ED: ; 0x02041B10
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -553,8 +553,8 @@ FUN_02041B10: ; 0x02041B10
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02041B40
-FUN_02041B40: ; 0x02041B40
+ thumb_func_start ScrCmd_Unk02BC
+ScrCmd_Unk02BC: ; 0x02041B40
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -576,8 +576,8 @@ FUN_02041B40: ; 0x02041B40
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02041B70
-FUN_02041B70: ; 0x02041B70
+ thumb_func_start ScrCmd_Unk00EE
+ScrCmd_Unk00EE: ; 0x02041B70
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -597,8 +597,8 @@ FUN_02041B70: ; 0x02041B70
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_02041B9C
-FUN_02041B9C: ; 0x02041B9C
+ thumb_func_start ScrCmd_Unk00EF
+ScrCmd_Unk00EF: ; 0x02041B9C
push {r4, lr}
sub sp, #0x8
add r4, r0, #0x0
@@ -618,8 +618,8 @@ FUN_02041B9C: ; 0x02041B9C
add sp, #0x8
pop {r4, pc}
- thumb_func_start FUN_02041BC4
-FUN_02041BC4: ; 0x02041BC4
+ thumb_func_start ScrCmd_Unk00F0
+ScrCmd_Unk00F0: ; 0x02041BC4
push {r3-r5, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -639,8 +639,8 @@ FUN_02041BC4: ; 0x02041BC4
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_02041BF0
-FUN_02041BF0: ; 0x02041BF0
+ thumb_func_start ScrCmd_Unk00F1
+ScrCmd_Unk00F1: ; 0x02041BF0
push {r3-r7, lr}
add r6, r0, #0x0
add r0, #0x80
diff --git a/arm9/asm/scrcmd_8.s b/arm9/asm/scrcmd_8.s
deleted file mode 100644
index fbb5b223..00000000
--- a/arm9/asm/scrcmd_8.s
+++ /dev/null
@@ -1,234 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02041C38
-FUN_02041C38: ; 0x02041C38
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0xf
- bl FUN_02039438
- add r6, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_0202881C
- add r5, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r7, [r0, #0xc]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- cmp r0, #0x6
- bls _02041C6C
- b _02041E38
-_02041C6C:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02041C78: ; jump table (using 16-bit offset)
- .short _02041C86 - _02041C78 - 2; case 0
- .short _02041CBC - _02041C78 - 2; case 1
- .short _02041CF2 - _02041C78 - 2; case 2
- .short _02041D28 - _02041C78 - 2; case 3
- .short _02041D5E - _02041C78 - 2; case 4
- .short _02041D94 - _02041C78 - 2; case 5
- .short _02041DCE - _02041C78 - 2; case 6
-_02041C86:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02028828
- strh r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02041CBC:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02028840
- strh r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02041CF2:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r3, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r6, #0x0]
- add r1, r7, #0x0
- add r2, r5, #0x0
- bl BufferEasyChatWord
- b _02041E38
-_02041D28:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r3, r0, #0x0
- mov r0, #0x1
- str r0, [sp, #0x0]
- ldr r0, [r6, #0x0]
- add r1, r7, #0x0
- add r2, r5, #0x0
- bl BufferEasyChatWord
- b _02041E38
-_02041D5E:
- mov r1, #0x0
- add r0, r5, #0x0
- add r2, r1, #0x0
- bl FUN_020287A8
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- mov r2, #0x0
- str r2, [sp, #0x0]
- str r5, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x74]
- mov r1, #0x5
- mov r3, #0x7
- bl FUN_020385CC
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_02041D94:
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x1
- bl FUN_02028828
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r7, #0x0
- mov r2, #0x1
- bl FUN_02028700
- cmp r6, #0x0
- beq _02041DC8
- add r4, #0x80
- ldr r0, [r4, #0x0]
- bl FUN_020612F8
-_02041DC8:
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02041DCE:
- mov r0, #0x40
- mov r1, #0x20
- bl String_ctor
- add r6, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r1, r6, #0x0
- add r7, r0, #0x0
- bl PlayerName_FlatToString
- add r0, r5, #0x0
- mov r1, #0x0
- mov r2, #0x1
- add r3, r6, #0x0
- bl FUN_020287C0
- add r0, r7, #0x0
- bl PlayerProfile_GetTrainerGender
- add r2, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x0
- bl FUN_020287EC
- add r0, r5, #0x0
- mov r1, #0x0
- mov r2, #0x2
- bl FUN_02028810
- bl MTRandom
- add r2, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x0
- bl FUN_02028788
- add r0, r6, #0x0
- bl String_dtor
- add r0, r5, #0x0
- mov r1, #0x0
- mov r2, #0x1
- bl FUN_02028700
- add r4, #0x80
- ldr r0, [r4, #0x0]
- bl FUN_020612EC
-_02041E38:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s
index ad61ab32..bad1ef47 100644
--- a/arm9/asm/scrcmd_9.s
+++ b/arm9/asm/scrcmd_9.s
@@ -33,8 +33,8 @@ UNK_020F4270: ; 0x020F4270
.text
- thumb_func_start FUN_02041E40
-FUN_02041E40: ; 0x02041E40
+ thumb_func_start ScrCmd_Unk0235
+ScrCmd_Unk0235: ; 0x02041E40
push {r3-r7, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -217,8 +217,8 @@ _02041FD2:
nop
_02041FD8: .word 0x00000233
- thumb_func_start FUN_02041FDC
-FUN_02041FDC: ; 0x02041FDC
+ thumb_func_start ScrCmd_Unk0236
+ScrCmd_Unk0236: ; 0x02041FDC
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -235,8 +235,8 @@ FUN_02041FDC: ; 0x02041FDC
pop {r4, pc}
.balign 4
- thumb_func_start FUN_02042000
-FUN_02042000: ; 0x02042000
+ thumb_func_start ScrCmd_Unk02B8
+ScrCmd_Unk02B8: ; 0x02042000
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -261,8 +261,8 @@ FUN_02042000: ; 0x02042000
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_02042038
-FUN_02042038: ; 0x02042038
+ thumb_func_start ScrCmd_Unk0237
+ScrCmd_Unk0237: ; 0x02042038
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -356,8 +356,8 @@ _02042106:
nop
_0204210C: .word 0x00000232
- thumb_func_start FUN_02042110
-FUN_02042110: ; 0x02042110
+ thumb_func_start ScrCmd_Unk0238
+ScrCmd_Unk0238: ; 0x02042110
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -384,8 +384,8 @@ FUN_02042110: ; 0x02042110
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0204214C
-FUN_0204214C: ; 0x0204214C
+ thumb_func_start ScrCmd_Unk027C
+ScrCmd_Unk027C: ; 0x0204214C
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index 3d6645c2..af0e7940 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -14,52 +14,8 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- thumb_func_start FUN_0203AFC4
-FUN_0203AFC4: ; 0x0203AFC4
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadWord
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- add r1, r6, #0x0
- bl FUN_0203B120
- add r6, r0, #0x0
- bne _0203AFF6
- bl ErrorHandling
-_0203AFF6:
- ldr r1, [r5, #0x8]
- add r0, r6, #0x0
- add r1, r1, r4
- bl FUN_0205AEA4
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x4
- bl FUN_02039438
- ldrb r1, [r0, #0x0]
- add r5, #0x80
- mov r2, #0x0
- add r1, r1, #0x1
- strb r1, [r0, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r4, #0x0
- bl FUN_0203B174
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0203B024
-FUN_0203B024: ; 0x0203B024
+ thumb_func_start ScrCmd_Unk02A1
+ScrCmd_Unk02A1: ; 0x0203B024
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -94,7 +50,7 @@ FUN_0203B024: ; 0x0203B024
str r0, [sp, #0x4]
cmp r0, #0x0
bne _0203B07A
- bl ErrorHandling
+ bl GF_AssertFail
_0203B07A:
mov r0, #0x4
add r1, r0, #0x0
@@ -200,8 +156,8 @@ _0203B13E:
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203B148
-FUN_0203B148: ; 0x0203B148
+ thumb_func_start ScrCmd_Unk005F
+ScrCmd_Unk005F: ; 0x0203B148
push {r3, lr}
ldr r1, _0203B154 ; =FUN_0203B158
bl SetupNativeScript
@@ -238,7 +194,7 @@ FUN_0203B174: ; 0x0203B174
bl AllocFromHeap
add r4, r0, #0x0
bne _0203B18E
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_0203B18E:
str r5, [r4, #0xc]
@@ -279,7 +235,7 @@ _0203B1D6:
ldrb r0, [r4, #0x0]
cmp r0, #0x0
bne _0203B1E8
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r5, pc}
_0203B1E8:
sub r0, r0, #0x1
@@ -288,8 +244,8 @@ _0203B1EC:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B1F0
-FUN_0203B1F0: ; 0x0203B1F0
+ thumb_func_start ScrCmd_Unk0060
+ScrCmd_Unk0060: ; 0x0203B1F0
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -305,7 +261,7 @@ FUN_0203B1F0: ; 0x0203B1F0
b _0203B214
_0203B20E:
add r0, r5, #0x0
- bl FUN_0203B2E0
+ bl ScrCmd_Unk02B4
_0203B214:
mov r0, #0x1
pop {r3-r5, pc}
@@ -406,8 +362,8 @@ _0203B2D8:
.balign 4
_0203B2DC: .word UNK_021C5A0C
- thumb_func_start FUN_0203B2E0
-FUN_0203B2E0: ; 0x0203B2E0
+ thumb_func_start ScrCmd_Unk02B4
+ScrCmd_Unk02B4: ; 0x0203B2E0
push {r3-r7, lr}
sub sp, #0x8
str r0, [sp, #0x0]
@@ -499,8 +455,8 @@ _0203B398:
_0203B3A8: .word UNK_021C5A0C
_0203B3AC: .word FUN_0203B218
- thumb_func_start FUN_0203B3B0
-FUN_0203B3B0: ; 0x0203B3B0
+ thumb_func_start ScrCmd_Unk0061
+ScrCmd_Unk0061: ; 0x0203B3B0
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -509,8 +465,8 @@ FUN_0203B3B0: ; 0x0203B3B0
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203B3C0
-FUN_0203B3C0: ; 0x0203B3C0
+ thumb_func_start ScrCmd_Unk0062
+ScrCmd_Unk0062: ; 0x0203B3C0
push {r4, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -523,8 +479,8 @@ FUN_0203B3C0: ; 0x0203B3C0
mov r0, #0x0
pop {r4, pc}
- thumb_func_start FUN_0203B3DC
-FUN_0203B3DC: ; 0x0203B3DC
+ thumb_func_start ScrCmd_Unk0063
+ScrCmd_Unk0063: ; 0x0203B3DC
push {r4, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -537,8 +493,8 @@ FUN_0203B3DC: ; 0x0203B3DC
mov r0, #0x0
pop {r4, pc}
- thumb_func_start FUN_0203B3F8
-FUN_0203B3F8: ; 0x0203B3F8
+ thumb_func_start ScrCmd_Unk0064
+ScrCmd_Unk0064: ; 0x0203B3F8
push {r3-r6, lr}
sub sp, #0x4
add r4, r0, #0x0
@@ -565,14 +521,14 @@ FUN_0203B3F8: ; 0x0203B3F8
bl FUN_020575D4
cmp r0, #0x0
bne _0203B43A
- bl ErrorHandling
+ bl GF_AssertFail
_0203B43A:
mov r0, #0x0
add sp, #0x4
pop {r3-r6, pc}
- thumb_func_start FUN_0203B440
-FUN_0203B440: ; 0x0203B440
+ thumb_func_start ScrCmd_Unk0065
+ScrCmd_Unk0065: ; 0x0203B440
push {r3-r5, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -590,8 +546,8 @@ FUN_0203B440: ; 0x0203B440
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203B468
-FUN_0203B468: ; 0x0203B468
+ thumb_func_start ScrCmd_Unk0066
+ScrCmd_Unk0066: ; 0x0203B468
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -657,8 +613,8 @@ FUN_0203B468: ; 0x0203B468
pop {r4-r7, pc}
.balign 4
- thumb_func_start FUN_0203B500
-FUN_0203B500: ; 0x0203B500
+ thumb_func_start ScrCmd_Unk0067
+ScrCmd_Unk0067: ; 0x0203B500
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -688,8 +644,8 @@ FUN_0203B500: ; 0x0203B500
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203B544
-FUN_0203B544: ; 0x0203B544
+ thumb_func_start ScrCmd_Unk0068
+ScrCmd_Unk0068: ; 0x0203B544
push {r3-r5, lr}
add r0, #0x80
ldr r5, [r0, #0x0]
@@ -712,8 +668,8 @@ _0203B568:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B574
-FUN_0203B574: ; 0x0203B574
+ thumb_func_start ScrCmd_Unk0069
+ScrCmd_Unk0069: ; 0x0203B574
push {r4-r6, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -743,8 +699,8 @@ FUN_0203B574: ; 0x0203B574
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203B5B8
-FUN_0203B5B8: ; 0x0203B5B8
+ thumb_func_start ScrCmd_Unk006A
+ScrCmd_Unk006A: ; 0x0203B5B8
push {r4-r6, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -785,8 +741,8 @@ FUN_0203B5B8: ; 0x0203B5B8
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203B618
-FUN_0203B618: ; 0x0203B618
+ thumb_func_start ScrCmd_Unk01BD
+ScrCmd_Unk01BD: ; 0x0203B618
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -805,8 +761,8 @@ FUN_0203B618: ; 0x0203B618
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B640
-FUN_0203B640: ; 0x0203B640
+ thumb_func_start ScrCmd_Unk006B
+ScrCmd_Unk006B: ; 0x0203B640
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -904,8 +860,8 @@ _0203B6F8:
pop {r4-r7, pc}
.balign 4
- thumb_func_start FUN_0203B724
-FUN_0203B724: ; 0x0203B724
+ thumb_func_start ScrCmd_Unk006C
+ScrCmd_Unk006C: ; 0x0203B724
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -929,8 +885,8 @@ FUN_0203B724: ; 0x0203B724
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203B758
-FUN_0203B758: ; 0x0203B758
+ thumb_func_start ScrCmd_Unk006D
+ScrCmd_Unk006D: ; 0x0203B758
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -955,8 +911,8 @@ FUN_0203B758: ; 0x0203B758
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B790
-FUN_0203B790: ; 0x0203B790
+ thumb_func_start ScrCmd_Unk02AD
+ScrCmd_Unk02AD: ; 0x0203B790
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -989,8 +945,8 @@ _0203B7D2:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B7D8
-FUN_0203B7D8: ; 0x0203B7D8
+ thumb_func_start ScrCmd_Unk006E
+ScrCmd_Unk006E: ; 0x0203B7D8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -1002,8 +958,8 @@ FUN_0203B7D8: ; 0x0203B7D8
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203B7F0
-FUN_0203B7F0: ; 0x0203B7F0
+ thumb_func_start ScrCmd_Unk02AB
+ScrCmd_Unk02AB: ; 0x0203B7F0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1023,8 +979,8 @@ FUN_0203B7F0: ; 0x0203B7F0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B81C
-FUN_0203B81C: ; 0x0203B81C
+ thumb_func_start ScrCmd_Unk0093
+ScrCmd_Unk0093: ; 0x0203B81C
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1052,8 +1008,8 @@ FUN_0203B81C: ; 0x0203B81C
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203B85C
-FUN_0203B85C: ; 0x0203B85C
+ thumb_func_start ScrCmd_Unk0094
+ScrCmd_Unk0094: ; 0x0203B85C
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1083,8 +1039,8 @@ FUN_0203B85C: ; 0x0203B85C
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203B8A0
-FUN_0203B8A0: ; 0x0203B8A0
+ thumb_func_start ScrCmd_Unk0095
+ScrCmd_Unk0095: ; 0x0203B8A0
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1113,8 +1069,8 @@ FUN_0203B8A0: ; 0x0203B8A0
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203B8E4
-FUN_0203B8E4: ; 0x0203B8E4
+ thumb_func_start ScrCmd_Unk0191
+ScrCmd_Unk0191: ; 0x0203B8E4
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -1136,8 +1092,8 @@ FUN_0203B8E4: ; 0x0203B8E4
nop
_0203B910: .word FUN_0203BC04
- thumb_func_start FUN_0203B914
-FUN_0203B914: ; 0x0203B914
+ thumb_func_start ScrCmd_Unk02A5
+ScrCmd_Unk02A5: ; 0x0203B914
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -1159,8 +1115,8 @@ FUN_0203B914: ; 0x0203B914
nop
_0203B940: .word FUN_0203BC04
- thumb_func_start FUN_0203B944
-FUN_0203B944: ; 0x0203B944
+ thumb_func_start ScrCmd_Unk0192
+ScrCmd_Unk0192: ; 0x0203B944
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -1178,8 +1134,8 @@ FUN_0203B944: ; 0x0203B944
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B968
-FUN_0203B968: ; 0x0203B968
+ thumb_func_start ScrCmd_Unk0193
+ScrCmd_Unk0193: ; 0x0203B968
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -1197,7 +1153,7 @@ FUN_0203B968: ; 0x0203B968
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _0203B994
- bl ErrorHandling
+ bl GF_AssertFail
_0203B994:
ldr r0, [r4, #0x0]
bl FUN_02037A40
@@ -1215,8 +1171,8 @@ _0203B9A6:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203B9B4
-FUN_0203B9B4: ; 0x0203B9B4
+ thumb_func_start ScrCmd_Unk0194
+ScrCmd_Unk0194: ; 0x0203B9B4
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -1275,8 +1231,8 @@ FUN_0203B9B4: ; 0x0203B9B4
.balign 4
_0203BA38: .word FUN_0203BC04
- thumb_func_start FUN_0203BA3C
-FUN_0203BA3C: ; 0x0203BA3C
+ thumb_func_start ScrCmd_Unk0195
+ScrCmd_Unk0195: ; 0x0203BA3C
push {r4-r6, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -1302,7 +1258,7 @@ FUN_0203BA3C: ; 0x0203BA3C
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _0203BA7C
- bl ErrorHandling
+ bl GF_AssertFail
_0203BA7C:
ldr r0, [r4, #0x0]
bl FUN_02037A40
@@ -1331,8 +1287,8 @@ _0203BAA2:
str r0, [r4, #0x0]
pop {r4-r6, pc}
- thumb_func_start FUN_0203BAB0
-FUN_0203BAB0: ; 0x0203BAB0
+ thumb_func_start ScrCmd_Unk0196
+ScrCmd_Unk0196: ; 0x0203BAB0
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -1362,8 +1318,8 @@ FUN_0203BAB0: ; 0x0203BAB0
nop
_0203BAF0: .word FUN_0203BC04
- thumb_func_start FUN_0203BAF4
-FUN_0203BAF4: ; 0x0203BAF4
+ thumb_func_start ScrCmd_Unk0197
+ScrCmd_Unk0197: ; 0x0203BAF4
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -1381,7 +1337,7 @@ FUN_0203BAF4: ; 0x0203BAF4
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _0203BB20
- bl ErrorHandling
+ bl GF_AssertFail
_0203BB20:
ldr r0, [r4, #0x0]
bl FUN_02037A78
@@ -1392,8 +1348,8 @@ _0203BB20:
str r0, [r4, #0x0]
pop {r3-r5, pc}
- thumb_func_start FUN_0203BB34
-FUN_0203BB34: ; 0x0203BB34
+ thumb_func_start ScrCmd_Unk009B
+ScrCmd_Unk009B: ; 0x0203BB34
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -1427,23 +1383,23 @@ FUN_0203BB34: ; 0x0203BB34
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203BB80
-FUN_0203BB80: ; 0x0203BB80
+ thumb_func_start ScrCmd_Unk009C
+ScrCmd_Unk009C: ; 0x0203BB80
mov r0, #0x0
bx lr
- thumb_func_start FUN_0203BB84
-FUN_0203BB84: ; 0x0203BB84
+ thumb_func_start ScrCmd_Unk009D
+ScrCmd_Unk009D: ; 0x0203BB84
mov r0, #0x0
bx lr
- thumb_func_start FUN_0203BB88
-FUN_0203BB88: ; 0x0203BB88
+ thumb_func_start ScrCmd_Unk009E
+ScrCmd_Unk009E: ; 0x0203BB88
mov r0, #0x1
bx lr
- thumb_func_start FUN_0203BB8C
-FUN_0203BB8C: ; 0x0203BB8C
+ thumb_func_start ScrCmd_Unk009F
+ScrCmd_Unk009F: ; 0x0203BB8C
mov r0, #0x0
bx lr
@@ -1521,8 +1477,8 @@ _0203BC16:
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203BC1C
-FUN_0203BC1C: ; 0x0203BC1C
+ thumb_func_start ScrCmd_Unk00A1
+ScrCmd_Unk00A1: ; 0x0203BC1C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -1531,8 +1487,8 @@ FUN_0203BC1C: ; 0x0203BC1C
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203BC2C
-FUN_0203BC2C: ; 0x0203BC2C
+ thumb_func_start ScrCmd_Unk01F8
+ScrCmd_Unk01F8: ; 0x0203BC2C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -1608,8 +1564,8 @@ _0203BC90:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203BCBC
-FUN_0203BCBC: ; 0x0203BCBC
+ thumb_func_start ScrCmd_Unk00A2
+ScrCmd_Unk00A2: ; 0x0203BCBC
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -1618,16 +1574,16 @@ FUN_0203BCBC: ; 0x0203BCBC
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203BCCC
-FUN_0203BCCC: ; 0x0203BCCC
+ thumb_func_start ScrCmd_Unk00A3
+ScrCmd_Unk00A3: ; 0x0203BCCC
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_0206F3B8
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203BCD8
-FUN_0203BCD8: ; 0x0203BCD8
+ thumb_func_start ScrCmd_Unk00A4
+ScrCmd_Unk00A4: ; 0x0203BCD8
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -1649,8 +1605,8 @@ FUN_0203BCD8: ; 0x0203BCD8
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203BD08
-FUN_0203BD08: ; 0x0203BD08
+ thumb_func_start ScrCmd_Unk0207
+ScrCmd_Unk0207: ; 0x0203BD08
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -1665,8 +1621,8 @@ FUN_0203BD08: ; 0x0203BD08
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203BD28
-FUN_0203BD28: ; 0x0203BD28
+ thumb_func_start ScrCmd_Unk0208
+ScrCmd_Unk0208: ; 0x0203BD28
push {r4-r7, lr}
sub sp, #0x14
add r5, r0, #0x0
@@ -1732,8 +1688,8 @@ FUN_0203BD28: ; 0x0203BD28
.balign 4
_0203BDB4: .word 0x000003D9
- thumb_func_start FUN_0203BDB8
-FUN_0203BDB8: ; 0x0203BDB8
+ thumb_func_start ScrCmd_Unk028C
+ScrCmd_Unk028C: ; 0x0203BDB8
push {r4-r6, lr}
sub sp, #0x10
add r5, r0, #0x0
@@ -1802,8 +1758,8 @@ FUN_0203BDB8: ; 0x0203BDB8
.balign 4
_0203BE4C: .word 0x000003D9
- thumb_func_start FUN_0203BE50
-FUN_0203BE50: ; 0x0203BE50
+ thumb_func_start ScrCmd_Unk0209
+ScrCmd_Unk0209: ; 0x0203BE50
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -1816,8 +1772,8 @@ FUN_0203BE50: ; 0x0203BE50
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203BE68
-FUN_0203BE68: ; 0x0203BE68
+ thumb_func_start ScrCmd_Unk028D
+ScrCmd_Unk028D: ; 0x0203BE68
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -1830,8 +1786,8 @@ FUN_0203BE68: ; 0x0203BE68
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203BE80
-FUN_0203BE80: ; 0x0203BE80
+ thumb_func_start ScrCmd_Unk028E
+ScrCmd_Unk028E: ; 0x0203BE80
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -1870,8 +1826,8 @@ _0203BEC8:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203BECC
-FUN_0203BECC: ; 0x0203BECC
+ thumb_func_start ScrCmd_Unk020A
+ScrCmd_Unk020A: ; 0x0203BECC
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -1895,8 +1851,8 @@ FUN_0203BECC: ; 0x0203BECC
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203BF00
-FUN_0203BF00: ; 0x0203BF00
+ thumb_func_start ScrCmd_Unk020B
+ScrCmd_Unk020B: ; 0x0203BF00
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -1913,16 +1869,16 @@ _0203BF1C:
mov r0, #0x0
pop {r4, pc}
- thumb_func_start FUN_0203BF20
-FUN_0203BF20: ; 0x0203BF20
+ thumb_func_start ScrCmd_Unk00A5
+ScrCmd_Unk00A5: ; 0x0203BF20
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_0208A338
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203BF2C
-FUN_0203BF2C: ; 0x0203BF2C
+ thumb_func_start ScrCmd_Unk00A6
+ScrCmd_Unk00A6: ; 0x0203BF2C
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
@@ -1961,8 +1917,8 @@ FUN_0203BF2C: ; 0x0203BF2C
pop {r3-r6, pc}
.balign 4
- thumb_func_start FUN_0203BF84
-FUN_0203BF84: ; 0x0203BF84
+ thumb_func_start ScrCmd_Unk00A7
+ScrCmd_Unk00A7: ; 0x0203BF84
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2010,8 +1966,8 @@ _0203BFCC:
.balign 4
_0203BFE8: .word FUN_0203BB90
- thumb_func_start FUN_0203BFEC
-FUN_0203BFEC: ; 0x0203BFEC
+ thumb_func_start ScrCmd_Unk00A8
+ScrCmd_Unk00A8: ; 0x0203BFEC
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2059,8 +2015,8 @@ _0203C034:
.balign 4
_0203C050: .word FUN_0203BB90
- thumb_func_start FUN_0203C054
-FUN_0203C054: ; 0x0203C054
+ thumb_func_start ScrCmd_Unk012E
+ScrCmd_Unk012E: ; 0x0203C054
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2089,8 +2045,8 @@ _0203C088:
mov r0, #0x1
pop {r4-r6, pc}
- thumb_func_start FUN_0203C090
-FUN_0203C090: ; 0x0203C090
+ thumb_func_start ScrCmd_Unk012F
+ScrCmd_Unk012F: ; 0x0203C090
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2119,8 +2075,8 @@ _0203C0C4:
mov r0, #0x1
pop {r4-r6, pc}
- thumb_func_start FUN_0203C0CC
-FUN_0203C0CC: ; 0x0203C0CC
+ thumb_func_start ScrCmd_Unk0130
+ScrCmd_Unk0130: ; 0x0203C0CC
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2141,8 +2097,8 @@ FUN_0203C0CC: ; 0x0203C0CC
mov r0, #0x1
pop {r3-r5, pc}
- thumb_func_start FUN_0203C0FC
-FUN_0203C0FC: ; 0x0203C0FC
+ thumb_func_start ScrCmd_Unk0205
+ScrCmd_Unk0205: ; 0x0203C0FC
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -2156,8 +2112,8 @@ FUN_0203C0FC: ; 0x0203C0FC
.balign 4
_0203C114: .word FUN_0203BC04
- thumb_func_start FUN_0203C118
-FUN_0203C118: ; 0x0203C118
+ thumb_func_start ScrCmd_Unk00A9
+ScrCmd_Unk00A9: ; 0x0203C118
push {r3, lr}
add r1, r0, #0x0
ldr r0, [r1, #0x74]
@@ -2168,8 +2124,8 @@ FUN_0203C118: ; 0x0203C118
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203C12C
-FUN_0203C12C: ; 0x0203C12C
+ thumb_func_start ScrCmd_Unk00AA
+ScrCmd_Unk00AA: ; 0x0203C12C
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2201,8 +2157,8 @@ FUN_0203C12C: ; 0x0203C12C
nop
_0203C170: .word FUN_0203BB90
- thumb_func_start FUN_0203C174
-FUN_0203C174: ; 0x0203C174
+ thumb_func_start ScrCmd_Unk01D7
+ScrCmd_Unk01D7: ; 0x0203C174
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2228,8 +2184,8 @@ FUN_0203C174: ; 0x0203C174
.balign 4
_0203C1A8: .word FUN_0203BB90
- thumb_func_start FUN_0203C1AC
-FUN_0203C1AC: ; 0x0203C1AC
+ thumb_func_start ScrCmd_Unk01D8
+ScrCmd_Unk01D8: ; 0x0203C1AC
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2269,8 +2225,8 @@ _0203C1FA:
strh r0, [r4, #0x0]
pop {r3-r5, pc}
- thumb_func_start FUN_0203C200
-FUN_0203C200: ; 0x0203C200
+ thumb_func_start ScrCmd_Unk01D9
+ScrCmd_Unk01D9: ; 0x0203C200
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2323,8 +2279,8 @@ FUN_0203C200: ; 0x0203C200
.balign 4
_0203C274: .word FUN_0203BB90
- thumb_func_start ScrCmd_monstoragepc
-ScrCmd_monstoragepc: ; 0x0203C278
+ thumb_func_start ScrCmd_MonStoragePC
+ScrCmd_MonStoragePC: ; 0x0203C278
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2359,8 +2315,8 @@ ScrCmd_monstoragepc: ; 0x0203C278
nop
_0203C2C0: .word FUN_0203BBBC
- thumb_func_start FUN_0203C2C4
-FUN_0203C2C4: ; 0x0203C2C4
+ thumb_func_start ScrCmd_Unk00AC
+ScrCmd_Unk00AC: ; 0x0203C2C4
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -2374,8 +2330,8 @@ FUN_0203C2C4: ; 0x0203C2C4
.balign 4
_0203C2DC: .word FUN_0203BC04
- thumb_func_start FUN_0203C2E0
-FUN_0203C2E0: ; 0x0203C2E0
+ thumb_func_start ScrCmd_Unk00AD
+ScrCmd_Unk00AD: ; 0x0203C2E0
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -2384,8 +2340,8 @@ FUN_0203C2E0: ; 0x0203C2E0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203C2F0
-FUN_0203C2F0: ; 0x0203C2F0
+ thumb_func_start ScrCmd_Unk00AE
+ScrCmd_Unk00AE: ; 0x0203C2F0
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -2394,8 +2350,8 @@ FUN_0203C2F0: ; 0x0203C2F0
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203C300
-FUN_0203C300: ; 0x0203C300
+ thumb_func_start ScrCmd_Unk00AF
+ScrCmd_Unk00AF: ; 0x0203C300
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2416,8 +2372,8 @@ FUN_0203C300: ; 0x0203C300
.balign 4
_0203C328: .word FUN_0203BB90
- thumb_func_start ScrCmd_halloffame
-ScrCmd_halloffame: ; 0x0203C32C
+ thumb_func_start ScrCmd_HallOfFame
+ScrCmd_HallOfFame: ; 0x0203C32C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -2426,8 +2382,8 @@ ScrCmd_halloffame: ; 0x0203C32C
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203C33C
-FUN_0203C33C: ; 0x0203C33C
+ thumb_func_start ScrCmd_Unk00B1
+ScrCmd_Unk00B1: ; 0x0203C33C
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2448,8 +2404,8 @@ FUN_0203C33C: ; 0x0203C33C
.balign 4
_0203C364: .word FUN_0203BB90
- thumb_func_start FUN_0203C368
-FUN_0203C368: ; 0x0203C368
+ thumb_func_start ScrCmd_Unk00B2
+ScrCmd_Unk00B2: ; 0x0203C368
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2494,8 +2450,8 @@ _0203C3C0:
.balign 4
_0203C3C4: .word FUN_0203BC04
- thumb_func_start FUN_0203C3C8
-FUN_0203C3C8: ; 0x0203C3C8
+ thumb_func_start ScrCmd_Unk00B3
+ScrCmd_Unk00B3: ; 0x0203C3C8
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -2510,8 +2466,8 @@ FUN_0203C3C8: ; 0x0203C3C8
mov r0, #0x1
pop {r4, pc}
- thumb_func_start FUN_0203C3E8
-FUN_0203C3E8: ; 0x0203C3E8
+ thumb_func_start ScrCmd_Unk00B4
+ScrCmd_Unk00B4: ; 0x0203C3E8
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2543,8 +2499,8 @@ FUN_0203C3E8: ; 0x0203C3E8
nop
_0203C42C: .word FUN_0203BC04
- thumb_func_start FUN_0203C430
-FUN_0203C430: ; 0x0203C430
+ thumb_func_start ScrCmd_Unk00B5
+ScrCmd_Unk00B5: ; 0x0203C430
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2566,8 +2522,8 @@ FUN_0203C430: ; 0x0203C430
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203C460
-FUN_0203C460: ; 0x0203C460
+ thumb_func_start ScrCmd_Unk0178
+ScrCmd_Unk0178: ; 0x0203C460
push {r4-r6, lr}
add r5, r0, #0x0
ldr r1, [r5, #0x8]
@@ -2592,7 +2548,7 @@ _0203C476:
ldr r0, [r6, #0x0]
cmp r0, #0x0
beq _0203C492
- bl ErrorHandling
+ bl GF_AssertFail
_0203C492:
add r0, r5, #0x0
add r0, #0x80
@@ -2608,8 +2564,8 @@ _0203C492:
.balign 4
_0203C4AC: .word FUN_0203BC04
- thumb_func_start FUN_0203C4B0
-FUN_0203C4B0: ; 0x0203C4B0
+ thumb_func_start ScrCmd_Unk0179
+ScrCmd_Unk0179: ; 0x0203C4B0
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -2627,7 +2583,7 @@ FUN_0203C4B0: ; 0x0203C4B0
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _0203C4DC
- bl ErrorHandling
+ bl GF_AssertFail
_0203C4DC:
ldr r0, [r4, #0x0]
bl FUN_020378FC
@@ -2638,8 +2594,8 @@ _0203C4DC:
str r0, [r4, #0x0]
pop {r3-r5, pc}
- thumb_func_start FUN_0203C4F0
-FUN_0203C4F0: ; 0x0203C4F0
+ thumb_func_start ScrCmd_Unk00BA
+ScrCmd_Unk00BA: ; 0x0203C4F0
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
@@ -2662,8 +2618,8 @@ FUN_0203C4F0: ; 0x0203C4F0
pop {r3-r4, pc}
.balign 4
- thumb_func_start FUN_0203C520
-FUN_0203C520: ; 0x0203C520
+ thumb_func_start ScrCmd_Unk00BB
+ScrCmd_Unk00BB: ; 0x0203C520
push {r4-r7, lr}
sub sp, #0x34
add r5, r0, #0x0
@@ -2710,8 +2666,8 @@ FUN_0203C520: ; 0x0203C520
add sp, #0x34
pop {r4-r7, pc}
- thumb_func_start FUN_0203C58C
-FUN_0203C58C: ; 0x0203C58C
+ thumb_func_start ScrCmd_Unk0271
+ScrCmd_Unk0271: ; 0x0203C58C
push {r3-r4, lr}
sub sp, #0xc
add r4, r0, #0x0
@@ -2734,8 +2690,8 @@ FUN_0203C58C: ; 0x0203C58C
pop {r3-r4, pc}
.balign 4
- thumb_func_start FUN_0203C5BC
-FUN_0203C5BC: ; 0x0203C5BC
+ thumb_func_start ScrCmd_Unk0243
+ScrCmd_Unk0243: ; 0x0203C5BC
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2773,8 +2729,8 @@ FUN_0203C5BC: ; 0x0203C5BC
nop
_0203C610: .word 0x0000FFFF
- thumb_func_start FUN_0203C614
-FUN_0203C614: ; 0x0203C614
+ thumb_func_start ScrCmd_Unk0244
+ScrCmd_Unk0244: ; 0x0203C614
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -2821,8 +2777,8 @@ FUN_0203C614: ; 0x0203C614
.balign 4
_0203C67C: .word 0x0000FFFF
- thumb_func_start FUN_0203C680
-FUN_0203C680: ; 0x0203C680
+ thumb_func_start ScrCmd_Unk0245
+ScrCmd_Unk0245: ; 0x0203C680
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -2852,8 +2808,8 @@ FUN_0203C680: ; 0x0203C680
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203C6C4
-FUN_0203C6C4: ; 0x0203C6C4
+ thumb_func_start ScrCmd_Unk00BC
+ScrCmd_Unk00BC: ; 0x0203C6C4
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -2884,8 +2840,8 @@ FUN_0203C6C4: ; 0x0203C6C4
add sp, #0xc
pop {r4-r7, pc}
- thumb_func_start FUN_0203C70C
-FUN_0203C70C: ; 0x0203C70C
+ thumb_func_start ScrCmd_Unk00BD
+ScrCmd_Unk00BD: ; 0x0203C70C
push {r3, lr}
ldr r1, _0203C718 ; =FUN_0203C71C
bl SetupNativeScript
@@ -2907,8 +2863,8 @@ _0203C72A:
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203C730
-FUN_0203C730: ; 0x0203C730
+ thumb_func_start ScrCmd_Unk00BE
+ScrCmd_Unk00BE: ; 0x0203C730
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -2946,8 +2902,8 @@ FUN_0203C730: ; 0x0203C730
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_0203C788
-FUN_0203C788: ; 0x0203C788
+ thumb_func_start ScrCmd_Unk0203
+ScrCmd_Unk0203: ; 0x0203C788
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -2987,8 +2943,8 @@ FUN_0203C788: ; 0x0203C788
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_0203C7E4
-FUN_0203C7E4: ; 0x0203C7E4
+ thumb_func_start ScrCmd_Unk0204
+ScrCmd_Unk0204: ; 0x0203C7E4
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -2997,8 +2953,8 @@ FUN_0203C7E4: ; 0x0203C7E4
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203C7F4
-FUN_0203C7F4: ; 0x0203C7F4
+ thumb_func_start ScrCmd_Unk0200
+ScrCmd_Unk0200: ; 0x0203C7F4
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -3018,8 +2974,8 @@ FUN_0203C7F4: ; 0x0203C7F4
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203C820
-FUN_0203C820: ; 0x0203C820
+ thumb_func_start ScrCmd_Unk0201
+ScrCmd_Unk0201: ; 0x0203C820
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -3037,8 +2993,8 @@ FUN_0203C820: ; 0x0203C820
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203C844
-FUN_0203C844: ; 0x0203C844
+ thumb_func_start ScrCmd_Unk00BF
+ScrCmd_Unk00BF: ; 0x0203C844
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -3060,8 +3016,8 @@ FUN_0203C844: ; 0x0203C844
mov r0, #0x1
pop {r3-r5, pc}
- thumb_func_start FUN_0203C874
-FUN_0203C874: ; 0x0203C874
+ thumb_func_start ScrCmd_Unk00C0
+ScrCmd_Unk00C0: ; 0x0203C874
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3090,8 +3046,8 @@ FUN_0203C874: ; 0x0203C874
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203C8B4
-FUN_0203C8B4: ; 0x0203C8B4
+ thumb_func_start ScrCmd_Unk00C1
+ScrCmd_Unk00C1: ; 0x0203C8B4
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -3113,8 +3069,8 @@ FUN_0203C8B4: ; 0x0203C8B4
mov r0, #0x1
pop {r3-r5, pc}
- thumb_func_start FUN_0203C8E4
-FUN_0203C8E4: ; 0x0203C8E4
+ thumb_func_start ScrCmd_Unk00C2
+ScrCmd_Unk00C2: ; 0x0203C8E4
push {r4-r6, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -3148,8 +3104,8 @@ FUN_0203C8E4: ; 0x0203C8E4
add sp, #0x8
pop {r4-r6, pc}
- thumb_func_start FUN_0203C930
-FUN_0203C930: ; 0x0203C930
+ thumb_func_start ScrCmd_Unk00C3
+ScrCmd_Unk00C3: ; 0x0203C930
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -3171,8 +3127,8 @@ FUN_0203C930: ; 0x0203C930
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203C960
-FUN_0203C960: ; 0x0203C960
+ thumb_func_start ScrCmd_Unk00C4
+ScrCmd_Unk00C4: ; 0x0203C960
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -3194,8 +3150,8 @@ FUN_0203C960: ; 0x0203C960
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203C990
-FUN_0203C990: ; 0x0203C990
+ thumb_func_start ScrCmd_Unk00C5
+ScrCmd_Unk00C5: ; 0x0203C990
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3261,16 +3217,16 @@ _0203CA1A:
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203CA20
-FUN_0203CA20: ; 0x0203CA20
+ thumb_func_start ScrCmd_Unk00C6
+ScrCmd_Unk00C6: ; 0x0203CA20
push {r3, lr}
ldr r0, [r0, #0x74]
bl MOD05_021E7030
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203CA2C
-FUN_0203CA2C: ; 0x0203CA2C
+ thumb_func_start ScrCmd_Unk00C7
+ScrCmd_Unk00C7: ; 0x0203CA2C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -3295,8 +3251,8 @@ _0203CA56:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203CA5C
-FUN_0203CA5C: ; 0x0203CA5C
+ thumb_func_start ScrCmd_Unk00C8
+ScrCmd_Unk00C8: ; 0x0203CA5C
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x8]
@@ -3361,8 +3317,8 @@ _0203CAE4:
mov r0, #0x0
pop {r4, pc}
- thumb_func_start FUN_0203CAE8
-FUN_0203CAE8: ; 0x0203CAE8
+ thumb_func_start ScrCmd_Unk02BF
+ScrCmd_Unk02BF: ; 0x0203CAE8
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -3378,8 +3334,8 @@ FUN_0203CAE8: ; 0x0203CAE8
mov r0, #0x0
pop {r4, pc}
- thumb_func_start FUN_0203CB08
-FUN_0203CB08: ; 0x0203CB08
+ thumb_func_start ScrCmd_Unk00C9
+ScrCmd_Unk00C9: ; 0x0203CB08
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -3392,8 +3348,8 @@ FUN_0203CB08: ; 0x0203CB08
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203CB20
-FUN_0203CB20: ; 0x0203CB20
+ thumb_func_start ScrCmd_Unk00CA
+ScrCmd_Unk00CA: ; 0x0203CB20
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -3412,8 +3368,8 @@ FUN_0203CB20: ; 0x0203CB20
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203CB48
-FUN_0203CB48: ; 0x0203CB48
+ thumb_func_start ScrCmd_Unk00CB
+ScrCmd_Unk00CB: ; 0x0203CB48
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -3425,8 +3381,8 @@ FUN_0203CB48: ; 0x0203CB48
mov r0, #0x1
pop {r4, pc}
- thumb_func_start FUN_0203CB60
-FUN_0203CB60: ; 0x0203CB60
+ thumb_func_start ScrCmd_Unk00CC
+ScrCmd_Unk00CC: ; 0x0203CB60
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -3435,8 +3391,8 @@ FUN_0203CB60: ; 0x0203CB60
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203CB70
-FUN_0203CB70: ; 0x0203CB70
+ thumb_func_start ScrCmd_Unk00E3
+ScrCmd_Unk00E3: ; 0x0203CB70
push {r4-r6, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -3469,8 +3425,8 @@ FUN_0203CB70: ; 0x0203CB70
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203CBBC
-FUN_0203CBBC: ; 0x0203CBBC
+ thumb_func_start ScrCmd_Unk00DE
+ScrCmd_Unk00DE: ; 0x0203CBBC
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -3490,8 +3446,8 @@ FUN_0203CBBC: ; 0x0203CBBC
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203CBE8
-FUN_0203CBE8: ; 0x0203CBE8
+ thumb_func_start ScrCmd_Unk00E6
+ScrCmd_Unk00E6: ; 0x0203CBE8
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3534,7 +3490,7 @@ FUN_0203CBE8: ; 0x0203CBE8
mov r1, #0x1
bl FUN_02039438
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
mov r1, #0x1
bl FUN_02039438
@@ -3558,8 +3514,8 @@ FUN_0203CBE8: ; 0x0203CBE8
.balign 4
_0203CC84: .word FUN_0203A2F0
- thumb_func_start FUN_0203CC88
-FUN_0203CC88: ; 0x0203CC88
+ thumb_func_start ScrCmd_Unk00F2
+ScrCmd_Unk00F2: ; 0x0203CC88
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -3629,8 +3585,8 @@ _0203CD18:
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203CD20
-FUN_0203CD20: ; 0x0203CD20
+ thumb_func_start ScrCmd_Unk00F3
+ScrCmd_Unk00F3: ; 0x0203CD20
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -3700,24 +3656,24 @@ _0203CDB0:
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203CDB8
-FUN_0203CDB8: ; 0x0203CDB8
+ thumb_func_start ScrCmd_Unk00F4
+ScrCmd_Unk00F4: ; 0x0203CDB8
push {r3, lr}
bl ScriptReadHalfword
mov r0, #0x1
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203CDC4
-FUN_0203CDC4: ; 0x0203CDC4
+ thumb_func_start ScrCmd_Unk00F5
+ScrCmd_Unk00F5: ; 0x0203CDC4
push {r3, lr}
bl ScriptReadHalfword
mov r0, #0x1
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203CDD0
-FUN_0203CDD0: ; 0x0203CDD0
+ thumb_func_start ScrCmd_Unk00F6
+ScrCmd_Unk00F6: ; 0x0203CDD0
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3740,16 +3696,16 @@ FUN_0203CDD0: ; 0x0203CDD0
mov r0, #0x1
pop {r4-r6, pc}
- thumb_func_start FUN_0203CE00
-FUN_0203CE00: ; 0x0203CE00
+ thumb_func_start ScrCmd_Unk00F7
+ScrCmd_Unk00F7: ; 0x0203CE00
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_02080C38
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203CE0C
-FUN_0203CE0C: ; 0x0203CE0C
+ thumb_func_start ScrCmd_Unk011B
+ScrCmd_Unk011B: ; 0x0203CE0C
push {r3-r4, lr}
sub sp, #0x14
add r4, r0, #0x0
@@ -3803,8 +3759,8 @@ FUN_0203CE0C: ; 0x0203CE0C
pop {r3-r4, pc}
.balign 4
- thumb_func_start FUN_0203CE8C
-FUN_0203CE8C: ; 0x0203CE8C
+ thumb_func_start ScrCmd_Unk011C
+ScrCmd_Unk011C: ; 0x0203CE8C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -3825,8 +3781,8 @@ FUN_0203CE8C: ; 0x0203CE8C
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203CEBC
-FUN_0203CEBC: ; 0x0203CEBC
+ thumb_func_start ScrCmd_Unk011D
+ScrCmd_Unk011D: ; 0x0203CEBC
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -3860,8 +3816,8 @@ FUN_0203CEBC: ; 0x0203CEBC
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_0203CF04
-FUN_0203CF04: ; 0x0203CF04
+ thumb_func_start ScrCmd_Unk011E
+ScrCmd_Unk011E: ; 0x0203CF04
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3883,8 +3839,8 @@ FUN_0203CF04: ; 0x0203CF04
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203CF34
-FUN_0203CF34: ; 0x0203CF34
+ thumb_func_start ScrCmd_Unk011F
+ScrCmd_Unk011F: ; 0x0203CF34
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3906,8 +3862,8 @@ FUN_0203CF34: ; 0x0203CF34
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203CF64
-FUN_0203CF64: ; 0x0203CF64
+ thumb_func_start ScrCmd_Unk0120
+ScrCmd_Unk0120: ; 0x0203CF64
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3929,8 +3885,8 @@ FUN_0203CF64: ; 0x0203CF64
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203CF94
-FUN_0203CF94: ; 0x0203CF94
+ thumb_func_start ScrCmd_Unk0121
+ScrCmd_Unk0121: ; 0x0203CF94
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -3952,13 +3908,13 @@ FUN_0203CF94: ; 0x0203CF94
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203CFC4
-FUN_0203CFC4: ; 0x0203CFC4
+ thumb_func_start ScrCmd_Unk0122
+ScrCmd_Unk0122: ; 0x0203CFC4
mov r0, #0x0
bx lr
- thumb_func_start FUN_0203CFC8
-FUN_0203CFC8: ; 0x0203CFC8
+ thumb_func_start ScrCmd_Unk0123
+ScrCmd_Unk0123: ; 0x0203CFC8
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -4019,8 +3975,8 @@ _0203D048:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203D050
-FUN_0203D050: ; 0x0203D050
+ thumb_func_start ScrCmd_Unk0124
+ScrCmd_Unk0124: ; 0x0203D050
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
@@ -4058,8 +4014,8 @@ FUN_0203D050: ; 0x0203D050
pop {r3-r6, pc}
.balign 4
- thumb_func_start FUN_0203D0A4
-FUN_0203D0A4: ; 0x0203D0A4
+ thumb_func_start ScrCmd_Unk02BD
+ScrCmd_Unk02BD: ; 0x0203D0A4
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
@@ -4097,8 +4053,8 @@ FUN_0203D0A4: ; 0x0203D0A4
pop {r3-r6, pc}
.balign 4
- thumb_func_start FUN_0203D0F8
-FUN_0203D0F8: ; 0x0203D0F8
+ thumb_func_start ScrCmd_Unk0125
+ScrCmd_Unk0125: ; 0x0203D0F8
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -4125,16 +4081,16 @@ FUN_0203D0F8: ; 0x0203D0F8
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D134
-FUN_0203D134: ; 0x0203D134
+ thumb_func_start ScrCmd_Unk0126
+ScrCmd_Unk0126: ; 0x0203D134
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_020470AC
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203D140
-FUN_0203D140: ; 0x0203D140
+ thumb_func_start ScrCmd_Unk0127
+ScrCmd_Unk0127: ; 0x0203D140
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -4143,8 +4099,8 @@ FUN_0203D140: ; 0x0203D140
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D150
-FUN_0203D150: ; 0x0203D150
+ thumb_func_start ScrCmd_Unk0128
+ScrCmd_Unk0128: ; 0x0203D150
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -4163,8 +4119,8 @@ FUN_0203D150: ; 0x0203D150
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D178
-FUN_0203D178: ; 0x0203D178
+ thumb_func_start ScrCmd_Unk0129
+ScrCmd_Unk0129: ; 0x0203D178
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4178,8 +4134,8 @@ FUN_0203D178: ; 0x0203D178
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203D194
-FUN_0203D194: ; 0x0203D194
+ thumb_func_start ScrCmd_Unk012A
+ScrCmd_Unk012A: ; 0x0203D194
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -4188,8 +4144,8 @@ FUN_0203D194: ; 0x0203D194
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D1A4
-FUN_0203D1A4: ; 0x0203D1A4
+ thumb_func_start ScrCmd_Unk012B
+ScrCmd_Unk012B: ; 0x0203D1A4
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4203,8 +4159,8 @@ FUN_0203D1A4: ; 0x0203D1A4
.balign 4
_0203D1BC: .word FUN_0203BC04
- thumb_func_start FUN_0203D1C0
-FUN_0203D1C0: ; 0x0203D1C0
+ thumb_func_start ScrCmd_Unk012C
+ScrCmd_Unk012C: ; 0x0203D1C0
push {r3-r5, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -4247,8 +4203,8 @@ _0203D210:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203D214
-FUN_0203D214: ; 0x0203D214
+ thumb_func_start ScrCmd_Unk012D
+ScrCmd_Unk012D: ; 0x0203D214
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -4267,16 +4223,16 @@ FUN_0203D214: ; 0x0203D214
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D23C
-FUN_0203D23C: ; 0x0203D23C
+ thumb_func_start ScrCmd_Unk0131
+ScrCmd_Unk0131: ; 0x0203D23C
push {r3, lr}
ldr r0, [r0, #0x74]
bl MOD05_021E3424
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203D248
-FUN_0203D248: ; 0x0203D248
+ thumb_func_start ScrCmd_Unk0132
+ScrCmd_Unk0132: ; 0x0203D248
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -4298,8 +4254,8 @@ FUN_0203D248: ; 0x0203D248
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D278
-FUN_0203D278: ; 0x0203D278
+ thumb_func_start ScrCmd_Unk0133
+ScrCmd_Unk0133: ; 0x0203D278
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -4319,8 +4275,8 @@ FUN_0203D278: ; 0x0203D278
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D2A4
-FUN_0203D2A4: ; 0x0203D2A4
+ thumb_func_start ScrCmd_Unk0134
+ScrCmd_Unk0134: ; 0x0203D2A4
push {r4-r6, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -4348,8 +4304,8 @@ FUN_0203D2A4: ; 0x0203D2A4
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203D2E4
-FUN_0203D2E4: ; 0x0203D2E4
+ thumb_func_start ScrCmd_Unk0135
+ScrCmd_Unk0135: ; 0x0203D2E4
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -4386,16 +4342,16 @@ _0203D324:
bl FUN_020315D8
pop {r4, pc}
- thumb_func_start FUN_0203D330
-FUN_0203D330: ; 0x0203D330
+ thumb_func_start ScrCmd_Unk0136
+ScrCmd_Unk0136: ; 0x0203D330
push {r3, lr}
bl FUN_0203168C
mov r0, #0x0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D33C
-FUN_0203D33C: ; 0x0203D33C
+ thumb_func_start ScrCmd_Unk0137
+ScrCmd_Unk0137: ; 0x0203D33C
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -4417,8 +4373,8 @@ FUN_0203D33C: ; 0x0203D33C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D36C
-FUN_0203D36C: ; 0x0203D36C
+ thumb_func_start ScrCmd_Unk0138
+ScrCmd_Unk0138: ; 0x0203D36C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -4444,8 +4400,8 @@ FUN_0203D36C: ; 0x0203D36C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D3A4
-FUN_0203D3A4: ; 0x0203D3A4
+ thumb_func_start ScrCmd_Unk0139
+ScrCmd_Unk0139: ; 0x0203D3A4
push {r4, lr}
bl ScriptReadHalfword
add r4, r0, #0x0
@@ -4474,8 +4430,8 @@ _0203D3D8:
mov r0, #0x0
pop {r4, pc}
- thumb_func_start FUN_0203D3DC
-FUN_0203D3DC: ; 0x0203D3DC
+ thumb_func_start ScrCmd_Unk013C
+ScrCmd_Unk013C: ; 0x0203D3DC
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -4524,8 +4480,8 @@ _0203D434:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203D448
-FUN_0203D448: ; 0x0203D448
+ thumb_func_start ScrCmd_Unk013D
+ScrCmd_Unk013D: ; 0x0203D448
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -4534,8 +4490,8 @@ FUN_0203D448: ; 0x0203D448
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D458
-FUN_0203D458: ; 0x0203D458
+ thumb_func_start ScrCmd_Unk013E
+ScrCmd_Unk013E: ; 0x0203D458
push {r4, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4564,8 +4520,8 @@ _0203D48A:
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D490
-FUN_0203D490: ; 0x0203D490
+ thumb_func_start ScrCmd_Unk013F
+ScrCmd_Unk013F: ; 0x0203D490
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -4604,8 +4560,8 @@ FUN_0203D490: ; 0x0203D490
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203D4E8
-FUN_0203D4E8: ; 0x0203D4E8
+ thumb_func_start ScrCmd_Unk02BA
+ScrCmd_Unk02BA: ; 0x0203D4E8
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -4635,8 +4591,8 @@ _0203D522:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D528
-FUN_0203D528: ; 0x0203D528
+ thumb_func_start ScrCmd_Unk0140
+ScrCmd_Unk0140: ; 0x0203D528
push {r4-r6, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4661,8 +4617,8 @@ FUN_0203D528: ; 0x0203D528
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203D560
-FUN_0203D560: ; 0x0203D560
+ thumb_func_start ScrCmd_Unk0146
+ScrCmd_Unk0146: ; 0x0203D560
push {r3-r7, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4697,8 +4653,8 @@ FUN_0203D560: ; 0x0203D560
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203D5B0
-FUN_0203D5B0: ; 0x0203D5B0
+ thumb_func_start ScrCmd_Unk0141
+ScrCmd_Unk0141: ; 0x0203D5B0
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -4735,8 +4691,8 @@ _0203D5F0:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203D5F8
-FUN_0203D5F8: ; 0x0203D5F8
+ thumb_func_start ScrCmd_Unk0142
+ScrCmd_Unk0142: ; 0x0203D5F8
push {r3, lr}
add r0, #0x80
ldr r1, [r0, #0x0]
@@ -4747,8 +4703,8 @@ FUN_0203D5F8: ; 0x0203D5F8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D60C
-FUN_0203D60C: ; 0x0203D60C
+ thumb_func_start ScrCmd_Unk013A
+ScrCmd_Unk013A: ; 0x0203D60C
push {r3, lr}
mov r0, #0x4
bl FUN_02052B74
@@ -4756,8 +4712,8 @@ FUN_0203D60C: ; 0x0203D60C
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203D61C
-FUN_0203D61C: ; 0x0203D61C
+ thumb_func_start ScrCmd_Unk013B
+ScrCmd_Unk013B: ; 0x0203D61C
push {r3, lr}
bl FUN_02031C64
bl FUN_02031B50
@@ -4766,8 +4722,8 @@ FUN_0203D61C: ; 0x0203D61C
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203D630
-FUN_0203D630: ; 0x0203D630
+ thumb_func_start ScrCmd_Unk0143
+ScrCmd_Unk0143: ; 0x0203D630
push {r4-r6, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -4794,8 +4750,8 @@ FUN_0203D630: ; 0x0203D630
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203D66C
-FUN_0203D66C: ; 0x0203D66C
+ thumb_func_start ScrCmd_Unk0144
+ScrCmd_Unk0144: ; 0x0203D66C
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -4839,8 +4795,8 @@ _0203D6BC:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D6C4
-FUN_0203D6C4: ; 0x0203D6C4
+ thumb_func_start ScrCmd_Unk0145
+ScrCmd_Unk0145: ; 0x0203D6C4
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -4891,8 +4847,8 @@ _0203D720:
.balign 4
_0203D724: .word gMain
- thumb_func_start FUN_0203D728
-FUN_0203D728: ; 0x0203D728
+ thumb_func_start ScrCmd_Unk0153
+ScrCmd_Unk0153: ; 0x0203D728
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -4901,8 +4857,8 @@ FUN_0203D728: ; 0x0203D728
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203D738
-FUN_0203D738: ; 0x0203D738
+ thumb_func_start ScrCmd_Unk0154
+ScrCmd_Unk0154: ; 0x0203D738
push {r4-r6, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4928,8 +4884,8 @@ FUN_0203D738: ; 0x0203D738
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203D774
-FUN_0203D774: ; 0x0203D774
+ thumb_func_start ScrCmd_Unk0155
+ScrCmd_Unk0155: ; 0x0203D774
push {r3-r7, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -4972,8 +4928,8 @@ FUN_0203D774: ; 0x0203D774
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203D7DC
-FUN_0203D7DC: ; 0x0203D7DC
+ thumb_func_start ScrCmd_Unk029C
+ScrCmd_Unk029C: ; 0x0203D7DC
push {r3-r7, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -5010,8 +4966,8 @@ FUN_0203D7DC: ; 0x0203D7DC
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203D834
-FUN_0203D834: ; 0x0203D834
+ thumb_func_start ScrCmd_Unk0156
+ScrCmd_Unk0156: ; 0x0203D834
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -5034,16 +4990,16 @@ FUN_0203D834: ; 0x0203D834
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D868
-FUN_0203D868: ; 0x0203D868
+ thumb_func_start ScrCmd_Unk014B
+ScrCmd_Unk014B: ; 0x0203D868
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_02048498
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203D874
-FUN_0203D874: ; 0x0203D874
+ thumb_func_start ScrCmd_Unk014C
+ScrCmd_Unk014C: ; 0x0203D874
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5063,8 +5019,8 @@ FUN_0203D874: ; 0x0203D874
pop {r3-r5, pc}
.balign 4
- thumb_func_start ScrCmd_getplayergender
-ScrCmd_getplayergender: ; 0x0203D8A0
+ thumb_func_start ScrCmd_GetPlayerGender
+ScrCmd_GetPlayerGender: ; 0x0203D8A0
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -5085,8 +5041,8 @@ ScrCmd_getplayergender: ; 0x0203D8A0
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start ScrCmd_healparty
-ScrCmd_healparty: ; 0x0203D8D0
+ thumb_func_start ScrCmd_HealParty
+ScrCmd_HealParty: ; 0x0203D8D0
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_02046528
@@ -5097,13 +5053,13 @@ ScrCmd_healparty: ; 0x0203D8D0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D8E8
-FUN_0203D8E8: ; 0x0203D8E8
+ thumb_func_start ScrCmd_Unk014F
+ScrCmd_Unk014F: ; 0x0203D8E8
mov r0, #0x0
bx lr
- thumb_func_start FUN_0203D8EC
-FUN_0203D8EC: ; 0x0203D8EC
+ thumb_func_start ScrCmd_Unk0150
+ScrCmd_Unk0150: ; 0x0203D8EC
push {r4, lr}
add r4, r0, #0x0
bl FUN_02050024
@@ -5131,8 +5087,8 @@ _0203D91A:
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D920
-FUN_0203D920: ; 0x0203D920
+ thumb_func_start ScrCmd_Unk02BB
+ScrCmd_Unk02BB: ; 0x0203D920
push {r4, lr}
add r4, r0, #0x0
bl FUN_02050048
@@ -5144,8 +5100,8 @@ FUN_0203D920: ; 0x0203D920
.balign 4
_0203D934: .word FUN_0203D904
- thumb_func_start FUN_0203D938
-FUN_0203D938: ; 0x0203D938
+ thumb_func_start ScrCmd_Unk0151
+ScrCmd_Unk0151: ; 0x0203D938
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5154,8 +5110,8 @@ FUN_0203D938: ; 0x0203D938
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D948
-FUN_0203D948: ; 0x0203D948
+ thumb_func_start ScrCmd_Unk0152
+ScrCmd_Unk0152: ; 0x0203D948
push {r3, lr}
bl ScriptReadHalfword
bl FUN_0204F6DC
@@ -5163,8 +5119,8 @@ FUN_0203D948: ; 0x0203D948
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203D958
-FUN_0203D958: ; 0x0203D958
+ thumb_func_start ScrCmd_Unk017A
+ScrCmd_Unk017A: ; 0x0203D958
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5192,8 +5148,8 @@ FUN_0203D958: ; 0x0203D958
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203D998
-FUN_0203D998: ; 0x0203D998
+ thumb_func_start ScrCmd_Unk0186
+ScrCmd_Unk0186: ; 0x0203D998
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5228,8 +5184,8 @@ FUN_0203D998: ; 0x0203D998
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203D9E8
-FUN_0203D9E8: ; 0x0203D9E8
+ thumb_func_start ScrCmd_Unk0187
+ScrCmd_Unk0187: ; 0x0203D9E8
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -5290,8 +5246,8 @@ FUN_0203D9E8: ; 0x0203D9E8
pop {r4-r7, pc}
.balign 4
- thumb_func_start FUN_0203DA78
-FUN_0203DA78: ; 0x0203DA78
+ thumb_func_start ScrCmd_Unk0188
+ScrCmd_Unk0188: ; 0x0203DA78
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5316,8 +5272,8 @@ FUN_0203DA78: ; 0x0203DA78
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DAB0
-FUN_0203DAB0: ; 0x0203DAB0
+ thumb_func_start ScrCmd_Unk0189
+ScrCmd_Unk0189: ; 0x0203DAB0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5342,8 +5298,8 @@ FUN_0203DAB0: ; 0x0203DAB0
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DAE8
-FUN_0203DAE8: ; 0x0203DAE8
+ thumb_func_start ScrCmd_Unk018A
+ScrCmd_Unk018A: ; 0x0203DAE8
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5378,8 +5334,8 @@ FUN_0203DAE8: ; 0x0203DAE8
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203DB38
-FUN_0203DB38: ; 0x0203DB38
+ thumb_func_start ScrCmd_Unk018B
+ScrCmd_Unk018B: ; 0x0203DB38
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5414,8 +5370,8 @@ FUN_0203DB38: ; 0x0203DB38
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203DB88
-FUN_0203DB88: ; 0x0203DB88
+ thumb_func_start ScrCmd_Unk018C
+ScrCmd_Unk018C: ; 0x0203DB88
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5440,7 +5396,7 @@ FUN_0203DB88: ; 0x0203DB88
bl FUN_02058060
add r5, r0, #0x0
bne _0203DBC6
- bl ErrorHandling
+ bl GF_AssertFail
_0203DBC6:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -5449,8 +5405,8 @@ _0203DBC6:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203DBD4
-FUN_0203DBD4: ; 0x0203DBD4
+ thumb_func_start ScrCmd_Unk018F
+ScrCmd_Unk018F: ; 0x0203DBD4
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -5472,8 +5428,8 @@ _0203DBFC:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DC00
-FUN_0203DC00: ; 0x0203DC00
+ thumb_func_start ScrCmd_Unk0168
+ScrCmd_Unk0168: ; 0x0203DC00
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5512,8 +5468,8 @@ FUN_0203DC00: ; 0x0203DC00
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203DC58
-FUN_0203DC58: ; 0x0203DC58
+ thumb_func_start ScrCmd_Unk0169
+ScrCmd_Unk0169: ; 0x0203DC58
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -5526,8 +5482,8 @@ FUN_0203DC58: ; 0x0203DC58
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DC70
-FUN_0203DC70: ; 0x0203DC70
+ thumb_func_start ScrCmd_Unk016A
+ScrCmd_Unk016A: ; 0x0203DC70
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -5540,8 +5496,8 @@ FUN_0203DC70: ; 0x0203DC70
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DC88
-FUN_0203DC88: ; 0x0203DC88
+ thumb_func_start ScrCmd_Unk016B
+ScrCmd_Unk016B: ; 0x0203DC88
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -5554,8 +5510,8 @@ FUN_0203DC88: ; 0x0203DC88
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DCA0
-FUN_0203DCA0: ; 0x0203DCA0
+ thumb_func_start ScrCmd_Unk016C
+ScrCmd_Unk016C: ; 0x0203DCA0
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -5568,8 +5524,8 @@ FUN_0203DCA0: ; 0x0203DCA0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DCB8
-FUN_0203DCB8: ; 0x0203DCB8
+ thumb_func_start ScrCmd_Unk016F
+ScrCmd_Unk016F: ; 0x0203DCB8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5578,8 +5534,8 @@ FUN_0203DCB8: ; 0x0203DCB8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DCC8
-FUN_0203DCC8: ; 0x0203DCC8
+ thumb_func_start ScrCmd_Unk0170
+ScrCmd_Unk0170: ; 0x0203DCC8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5588,8 +5544,8 @@ FUN_0203DCC8: ; 0x0203DCC8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DCD8
-FUN_0203DCD8: ; 0x0203DCD8
+ thumb_func_start ScrCmd_Unk0171
+ScrCmd_Unk0171: ; 0x0203DCD8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5598,8 +5554,8 @@ FUN_0203DCD8: ; 0x0203DCD8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DCE8
-FUN_0203DCE8: ; 0x0203DCE8
+ thumb_func_start ScrCmd_Unk0172
+ScrCmd_Unk0172: ; 0x0203DCE8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5608,8 +5564,8 @@ FUN_0203DCE8: ; 0x0203DCE8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DCF8
-FUN_0203DCF8: ; 0x0203DCF8
+ thumb_func_start ScrCmd_Unk0173
+ScrCmd_Unk0173: ; 0x0203DCF8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5618,8 +5574,8 @@ FUN_0203DCF8: ; 0x0203DCF8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DD08
-FUN_0203DD08: ; 0x0203DD08
+ thumb_func_start ScrCmd_Unk0174
+ScrCmd_Unk0174: ; 0x0203DD08
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5628,8 +5584,8 @@ FUN_0203DD08: ; 0x0203DD08
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DD18
-FUN_0203DD18: ; 0x0203DD18
+ thumb_func_start ScrCmd_Unk0175
+ScrCmd_Unk0175: ; 0x0203DD18
push {r3, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -5644,8 +5600,8 @@ FUN_0203DD18: ; 0x0203DD18
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DD34
-FUN_0203DD34: ; 0x0203DD34
+ thumb_func_start ScrCmd_Unk0176
+ScrCmd_Unk0176: ; 0x0203DD34
push {r3, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -5660,8 +5616,8 @@ FUN_0203DD34: ; 0x0203DD34
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DD50
-FUN_0203DD50: ; 0x0203DD50
+ thumb_func_start ScrCmd_Unk01AC
+ScrCmd_Unk01AC: ; 0x0203DD50
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -5670,8 +5626,8 @@ FUN_0203DD50: ; 0x0203DD50
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DD60
-FUN_0203DD60: ; 0x0203DD60
+ thumb_func_start ScrCmd_Unk019E
+ScrCmd_Unk019E: ; 0x0203DD60
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -5745,8 +5701,8 @@ _0203DDF6:
nop
_0203DDFC: .word 0x0000FFFE
- thumb_func_start FUN_0203DE00
-FUN_0203DE00: ; 0x0203DE00
+ thumb_func_start ScrCmd_Unk019F
+ScrCmd_Unk019F: ; 0x0203DE00
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -5782,16 +5738,16 @@ FUN_0203DE38: ; 0x0203DE38
bl FUN_020546C8
pop {r3, pc}
- thumb_func_start FUN_0203DE4C
-FUN_0203DE4C: ; 0x0203DE4C
+ thumb_func_start ScrCmd_Unk01A0
+ScrCmd_Unk01A0: ; 0x0203DE4C
push {r3, lr}
bl MOD11_0224CA94
mov r0, #0x0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DE58
-FUN_0203DE58: ; 0x0203DE58
+ thumb_func_start ScrCmd_Unk01A1
+ScrCmd_Unk01A1: ; 0x0203DE58
push {r3-r5, lr}
add r4, r0, #0x0
ldr r2, [r4, #0x8]
@@ -5810,8 +5766,8 @@ FUN_0203DE58: ; 0x0203DE58
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203DE80
-FUN_0203DE80: ; 0x0203DE80
+ thumb_func_start ScrCmd_Unk01A2
+ScrCmd_Unk01A2: ; 0x0203DE80
push {r3-r5, lr}
add r4, r0, #0x0
ldr r2, [r4, #0x8]
@@ -5830,8 +5786,8 @@ FUN_0203DE80: ; 0x0203DE80
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203DEA8
-FUN_0203DEA8: ; 0x0203DEA8
+ thumb_func_start ScrCmd_Unk003F
+ScrCmd_Unk003F: ; 0x0203DEA8
push {r3, lr}
sub sp, #0x8
mov r3, #0x0
@@ -5846,8 +5802,8 @@ FUN_0203DEA8: ; 0x0203DEA8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203DEC4
-FUN_0203DEC4: ; 0x0203DEC4
+ thumb_func_start ScrCmd_Unk01B1
+ScrCmd_Unk01B1: ; 0x0203DEC4
push {r3-r5, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -5863,7 +5819,7 @@ FUN_0203DEC4: ; 0x0203DEC4
bl FUN_02058060
add r4, r0, #0x0
bne _0203DEEC
- bl ErrorHandling
+ bl GF_AssertFail
_0203DEEC:
add r0, r4, #0x0
mov r1, #0x0
@@ -5871,8 +5827,8 @@ _0203DEEC:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DEF8
-FUN_0203DEF8: ; 0x0203DEF8
+ thumb_func_start ScrCmd_Unk01B2
+ScrCmd_Unk01B2: ; 0x0203DEF8
push {r3-r5, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -5888,7 +5844,7 @@ FUN_0203DEF8: ; 0x0203DEF8
bl FUN_02058060
add r4, r0, #0x0
bne _0203DF20
- bl ErrorHandling
+ bl GF_AssertFail
_0203DF20:
add r0, r4, #0x0
mov r1, #0x1
@@ -5896,16 +5852,16 @@ _0203DF20:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DF2C
-FUN_0203DF2C: ; 0x0203DF2C
+ thumb_func_start ScrCmd_Unk01B3
+ScrCmd_Unk01B3: ; 0x0203DF2C
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_02066818
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203DF38
-FUN_0203DF38: ; 0x0203DF38
+ thumb_func_start ScrCmd_Unk01B4
+ScrCmd_Unk01B4: ; 0x0203DF38
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -5925,8 +5881,8 @@ FUN_0203DF38: ; 0x0203DF38
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DF64
-FUN_0203DF64: ; 0x0203DF64
+ thumb_func_start ScrCmd_Unk01B5
+ScrCmd_Unk01B5: ; 0x0203DF64
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -5941,8 +5897,8 @@ FUN_0203DF64: ; 0x0203DF64
mov r0, #0x1
pop {r4, pc}
- thumb_func_start FUN_0203DF84
-FUN_0203DF84: ; 0x0203DF84
+ thumb_func_start ScrCmd_Unk01B6
+ScrCmd_Unk01B6: ; 0x0203DF84
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -5959,8 +5915,8 @@ FUN_0203DF84: ; 0x0203DF84
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203DFA8
-FUN_0203DFA8: ; 0x0203DFA8
+ thumb_func_start ScrCmd_Unk01B7
+ScrCmd_Unk01B7: ; 0x0203DFA8
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -5984,8 +5940,8 @@ FUN_0203DFA8: ; 0x0203DFA8
mov r0, #0x1
pop {r3-r5, pc}
- thumb_func_start FUN_0203DFE0
-FUN_0203DFE0: ; 0x0203DFE0
+ thumb_func_start ScrCmd_Unk01B8
+ScrCmd_Unk01B8: ; 0x0203DFE0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6009,8 +5965,8 @@ FUN_0203DFE0: ; 0x0203DFE0
mov r0, #0x1
pop {r3-r5, pc}
- thumb_func_start FUN_0203E018
-FUN_0203E018: ; 0x0203E018
+ thumb_func_start ScrCmd_Unk01C1
+ScrCmd_Unk01C1: ; 0x0203E018
push {r4-r6, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -6037,8 +5993,8 @@ FUN_0203E018: ; 0x0203E018
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203E054
-FUN_0203E054: ; 0x0203E054
+ thumb_func_start ScrCmd_Unk01C2
+ScrCmd_Unk01C2: ; 0x0203E054
push {r3-r5, lr}
add r4, r0, #0x0
add r1, r4, #0x0
@@ -6055,8 +6011,8 @@ FUN_0203E054: ; 0x0203E054
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203E078
-FUN_0203E078: ; 0x0203E078
+ thumb_func_start ScrCmd_Unk01C3
+ScrCmd_Unk01C3: ; 0x0203E078
push {r3-r7, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -6093,8 +6049,8 @@ FUN_0203E078: ; 0x0203E078
mov r0, #0x0
pop {r3-r7, pc}
- thumb_func_start FUN_0203E0CC
-FUN_0203E0CC: ; 0x0203E0CC
+ thumb_func_start ScrCmd_Unk01C4
+ScrCmd_Unk01C4: ; 0x0203E0CC
push {r3-r7, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -6131,8 +6087,8 @@ FUN_0203E0CC: ; 0x0203E0CC
mov r0, #0x0
pop {r3-r7, pc}
- thumb_func_start FUN_0203E120
-FUN_0203E120: ; 0x0203E120
+ thumb_func_start ScrCmd_Unk01C5
+ScrCmd_Unk01C5: ; 0x0203E120
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -6144,8 +6100,8 @@ FUN_0203E120: ; 0x0203E120
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203E138
-FUN_0203E138: ; 0x0203E138
+ thumb_func_start ScrCmd_Unk01CC
+ScrCmd_Unk01CC: ; 0x0203E138
push {r4, lr}
add r0, #0x80
ldr r4, [r0, #0x0]
@@ -6166,8 +6122,8 @@ FUN_0203E138: ; 0x0203E138
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203E168
-FUN_0203E168: ; 0x0203E168
+ thumb_func_start ScrCmd_Unk01CD
+ScrCmd_Unk01CD: ; 0x0203E168
push {r3-r7, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -6278,13 +6234,13 @@ _0203E23E:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203E254
-FUN_0203E254: ; 0x0203E254
+ thumb_func_start ScrCmd_Unk01CE
+ScrCmd_Unk01CE: ; 0x0203E254
mov r0, #0x0
bx lr
- thumb_func_start FUN_0203E258
-FUN_0203E258: ; 0x0203E258
+ thumb_func_start ScrCmd_Unk01D2
+ScrCmd_Unk01D2: ; 0x0203E258
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6313,8 +6269,8 @@ FUN_0203E258: ; 0x0203E258
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203E29C
-FUN_0203E29C: ; 0x0203E29C
+ thumb_func_start ScrCmd_Unk01D3
+ScrCmd_Unk01D3: ; 0x0203E29C
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6353,8 +6309,8 @@ FUN_0203E29C: ; 0x0203E29C
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203E2F8
-FUN_0203E2F8: ; 0x0203E2F8
+ thumb_func_start ScrCmd_Unk01D4
+ScrCmd_Unk01D4: ; 0x0203E2F8
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6399,8 +6355,8 @@ _0203E354:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203E35C
-FUN_0203E35C: ; 0x0203E35C
+ thumb_func_start ScrCmd_Unk01D5
+ScrCmd_Unk01D5: ; 0x0203E35C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6421,8 +6377,8 @@ FUN_0203E35C: ; 0x0203E35C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E38C
-FUN_0203E38C: ; 0x0203E38C
+ thumb_func_start ScrCmd_Unk01D6
+ScrCmd_Unk01D6: ; 0x0203E38C
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6451,8 +6407,8 @@ FUN_0203E38C: ; 0x0203E38C
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203E3D0
-FUN_0203E3D0: ; 0x0203E3D0
+ thumb_func_start ScrCmd_Unk01E8
+ScrCmd_Unk01E8: ; 0x0203E3D0
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -6479,8 +6435,8 @@ _0203E404:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203E408
-FUN_0203E408: ; 0x0203E408
+ thumb_func_start ScrCmd_Unk01E9
+ScrCmd_Unk01E9: ; 0x0203E408
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -6507,8 +6463,8 @@ _0203E43C:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203E440
-FUN_0203E440: ; 0x0203E440
+ thumb_func_start ScrCmd_Unk01EA
+ScrCmd_Unk01EA: ; 0x0203E440
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -6531,8 +6487,8 @@ FUN_0203E440: ; 0x0203E440
.balign 4
_0203E46C: .word FUN_0203BB90
- thumb_func_start FUN_0203E470
-FUN_0203E470: ; 0x0203E470
+ thumb_func_start ScrCmd_Unk01EB
+ScrCmd_Unk01EB: ; 0x0203E470
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -6555,8 +6511,8 @@ FUN_0203E470: ; 0x0203E470
.balign 4
_0203E49C: .word FUN_0203BB90
- thumb_func_start FUN_0203E4A0
-FUN_0203E4A0: ; 0x0203E4A0
+ thumb_func_start ScrCmd_Unk01EC
+ScrCmd_Unk01EC: ; 0x0203E4A0
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -6565,8 +6521,8 @@ FUN_0203E4A0: ; 0x0203E4A0
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203E4B0
-FUN_0203E4B0: ; 0x0203E4B0
+ thumb_func_start ScrCmd_Unk01ED
+ScrCmd_Unk01ED: ; 0x0203E4B0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6585,8 +6541,8 @@ FUN_0203E4B0: ; 0x0203E4B0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E4D8
-FUN_0203E4D8: ; 0x0203E4D8
+ thumb_func_start ScrCmd_Unk01EF
+ScrCmd_Unk01EF: ; 0x0203E4D8
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -6598,8 +6554,8 @@ FUN_0203E4D8: ; 0x0203E4D8
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203E4F0
-FUN_0203E4F0: ; 0x0203E4F0
+ thumb_func_start ScrCmd_Unk01E5
+ScrCmd_Unk01E5: ; 0x0203E4F0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6614,8 +6570,8 @@ FUN_0203E4F0: ; 0x0203E4F0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E510
-FUN_0203E510: ; 0x0203E510
+ thumb_func_start ScrCmd_Unk01E6
+ScrCmd_Unk01E6: ; 0x0203E510
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6654,8 +6610,8 @@ FUN_0203E510: ; 0x0203E510
.balign 4
_0203E564: .word 0xFFFF0000
- thumb_func_start FUN_0203E568
-FUN_0203E568: ; 0x0203E568
+ thumb_func_start ScrCmd_Unk01E7
+ScrCmd_Unk01E7: ; 0x0203E568
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6710,8 +6666,8 @@ _0203E5D6:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203E5DC
-FUN_0203E5DC: ; 0x0203E5DC
+ thumb_func_start ScrCmd_Unk0202
+ScrCmd_Unk0202: ; 0x0203E5DC
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -6781,8 +6737,8 @@ _0203E66E:
add sp, #0x8
pop {r3-r7, pc}
- thumb_func_start FUN_0203E674
-FUN_0203E674: ; 0x0203E674
+ thumb_func_start ScrCmd_Unk0206
+ScrCmd_Unk0206: ; 0x0203E674
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -6791,8 +6747,8 @@ FUN_0203E674: ; 0x0203E674
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203E684
-FUN_0203E684: ; 0x0203E684
+ thumb_func_start ScrCmd_Unk020D
+ScrCmd_Unk020D: ; 0x0203E684
push {r4-r6, lr}
add r5, r0, #0x0
ldr r2, [r5, #0x8]
@@ -6815,8 +6771,8 @@ FUN_0203E684: ; 0x0203E684
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203E6B4
-FUN_0203E6B4: ; 0x0203E6B4
+ thumb_func_start ScrCmd_Unk020E
+ScrCmd_Unk020E: ; 0x0203E6B4
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -6825,8 +6781,8 @@ FUN_0203E6B4: ; 0x0203E6B4
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203E6C4
-FUN_0203E6C4: ; 0x0203E6C4
+ thumb_func_start ScrCmd_Unk020F
+ScrCmd_Unk020F: ; 0x0203E6C4
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6851,8 +6807,8 @@ FUN_0203E6C4: ; 0x0203E6C4
mov r0, #0x1
pop {r4-r6, pc}
- thumb_func_start FUN_0203E6FC
-FUN_0203E6FC: ; 0x0203E6FC
+ thumb_func_start ScrCmd_Unk0210
+ScrCmd_Unk0210: ; 0x0203E6FC
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6874,8 +6830,8 @@ FUN_0203E6FC: ; 0x0203E6FC
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203E72C
-FUN_0203E72C: ; 0x0203E72C
+ thumb_func_start ScrCmd_Unk0211
+ScrCmd_Unk0211: ; 0x0203E72C
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -6888,8 +6844,8 @@ FUN_0203E72C: ; 0x0203E72C
mov r0, #0x1
pop {r3, pc}
- thumb_func_start FUN_0203E744
-FUN_0203E744: ; 0x0203E744
+ thumb_func_start ScrCmd_Unk0214
+ScrCmd_Unk0214: ; 0x0203E744
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -6911,8 +6867,8 @@ FUN_0203E744: ; 0x0203E744
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E774
-FUN_0203E774: ; 0x0203E774
+ thumb_func_start ScrCmd_Unk0218
+ScrCmd_Unk0218: ; 0x0203E774
push {r3-r7, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -6972,8 +6928,8 @@ _0203E7E8:
.balign 4
_0203E7EC: .word 0x000001ED
- thumb_func_start FUN_0203E7F0
-FUN_0203E7F0: ; 0x0203E7F0
+ thumb_func_start ScrCmd_Unk0219
+ScrCmd_Unk0219: ; 0x0203E7F0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -6993,8 +6949,8 @@ FUN_0203E7F0: ; 0x0203E7F0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E81C
-FUN_0203E81C: ; 0x0203E81C
+ thumb_func_start ScrCmd_Unk021A
+ScrCmd_Unk021A: ; 0x0203E81C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7014,8 +6970,8 @@ FUN_0203E81C: ; 0x0203E81C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E848
-FUN_0203E848: ; 0x0203E848
+ thumb_func_start ScrCmd_Unk021B
+ScrCmd_Unk021B: ; 0x0203E848
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7024,8 +6980,8 @@ FUN_0203E848: ; 0x0203E848
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203E858
-FUN_0203E858: ; 0x0203E858
+ thumb_func_start ScrCmd_Unk021C
+ScrCmd_Unk021C: ; 0x0203E858
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
@@ -7038,8 +6994,8 @@ FUN_0203E858: ; 0x0203E858
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203E870
-FUN_0203E870: ; 0x0203E870
+ thumb_func_start ScrCmd_Unk0226
+ScrCmd_Unk0226: ; 0x0203E870
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -7057,8 +7013,8 @@ FUN_0203E870: ; 0x0203E870
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203E894
-FUN_0203E894: ; 0x0203E894
+ thumb_func_start ScrCmd_Unk0227
+ScrCmd_Unk0227: ; 0x0203E894
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -7080,8 +7036,8 @@ FUN_0203E894: ; 0x0203E894
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E8C4
-FUN_0203E8C4: ; 0x0203E8C4
+ thumb_func_start ScrCmd_Unk0228
+ScrCmd_Unk0228: ; 0x0203E8C4
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -7103,8 +7059,8 @@ FUN_0203E8C4: ; 0x0203E8C4
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E8F4
-FUN_0203E8F4: ; 0x0203E8F4
+ thumb_func_start ScrCmd_Unk0229
+ScrCmd_Unk0229: ; 0x0203E8F4
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -7128,8 +7084,8 @@ FUN_0203E8F4: ; 0x0203E8F4
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203E928
-FUN_0203E928: ; 0x0203E928
+ thumb_func_start ScrCmd_Unk022A
+ScrCmd_Unk022A: ; 0x0203E928
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7141,8 +7097,8 @@ FUN_0203E928: ; 0x0203E928
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203E940
-FUN_0203E940: ; 0x0203E940
+ thumb_func_start ScrCmd_Unk022B
+ScrCmd_Unk022B: ; 0x0203E940
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7152,8 +7108,8 @@ FUN_0203E940: ; 0x0203E940
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203E954
-FUN_0203E954: ; 0x0203E954
+ thumb_func_start ScrCmd_Unk022C
+ScrCmd_Unk022C: ; 0x0203E954
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7163,8 +7119,8 @@ FUN_0203E954: ; 0x0203E954
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203E968
-FUN_0203E968: ; 0x0203E968
+ thumb_func_start ScrCmd_Unk022D
+ScrCmd_Unk022D: ; 0x0203E968
push {r4-r6, lr}
add r5, r0, #0x0
ldr r2, [r5, #0x8]
@@ -7205,13 +7161,13 @@ _0203E9AE:
strh r0, [r6, #0x0]
b _0203E9C8
_0203E9C4:
- bl ErrorHandling
+ bl GF_AssertFail
_0203E9C8:
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203E9CC
-FUN_0203E9CC: ; 0x0203E9CC
+ thumb_func_start ScrCmd_Unk0233
+ScrCmd_Unk0233: ; 0x0203E9CC
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -7279,8 +7235,8 @@ FUN_0203E9CC: ; 0x0203E9CC
pop {r4-r7, pc}
.balign 4
- thumb_func_start FUN_0203EA68
-FUN_0203EA68: ; 0x0203EA68
+ thumb_func_start ScrCmd_Unk0234
+ScrCmd_Unk0234: ; 0x0203EA68
push {r4, lr}
sub sp, #0x10
add r4, r0, #0x0
@@ -7299,8 +7255,8 @@ FUN_0203EA68: ; 0x0203EA68
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203EA90
-FUN_0203EA90: ; 0x0203EA90
+ thumb_func_start ScrCmd_Unk0239
+ScrCmd_Unk0239: ; 0x0203EA90
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -7315,8 +7271,8 @@ FUN_0203EA90: ; 0x0203EA90
mov r0, #0x1
pop {r4, pc}
- thumb_func_start FUN_0203EAB0
-FUN_0203EAB0: ; 0x0203EAB0
+ thumb_func_start ScrCmd_Unk023A
+ScrCmd_Unk023A: ; 0x0203EAB0
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7363,8 +7319,8 @@ FUN_0203EAB0: ; 0x0203EAB0
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203EB20
-FUN_0203EB20: ; 0x0203EB20
+ thumb_func_start ScrCmd_Unk023B
+ScrCmd_Unk023B: ; 0x0203EB20
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -7383,8 +7339,8 @@ FUN_0203EB20: ; 0x0203EB20
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203EB48
-FUN_0203EB48: ; 0x0203EB48
+ thumb_func_start ScrCmd_Unk023C
+ScrCmd_Unk023C: ; 0x0203EB48
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7413,8 +7369,8 @@ FUN_0203EB48: ; 0x0203EB48
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203EB88
-FUN_0203EB88: ; 0x0203EB88
+ thumb_func_start ScrCmd_Unk023D
+ScrCmd_Unk023D: ; 0x0203EB88
push {r4-r7, lr}
sub sp, #0xc
add r5, r0, #0x0
@@ -7444,8 +7400,8 @@ FUN_0203EB88: ; 0x0203EB88
add sp, #0xc
pop {r4-r7, pc}
- thumb_func_start ScrCmd_gameversion
-ScrCmd_gameversion: ; 0x0203EBC8
+ thumb_func_start ScrCmd_GameVersion
+ScrCmd_GameVersion: ; 0x0203EBC8
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -7459,8 +7415,8 @@ ScrCmd_gameversion: ; 0x0203EBC8
pop {r4, pc}
.balign 4
- thumb_func_start ScrCmd_givewallpaper
-ScrCmd_givewallpaper: ; 0x0203EBE4
+ thumb_func_start ScrCmd_GiveWallpaper
+ScrCmd_GiveWallpaper: ; 0x0203EBE4
push {r3-r7, lr}
sub sp, #0x10
add r5, r0, #0x0
@@ -7550,8 +7506,8 @@ _0203ECA2:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203ECAC
-FUN_0203ECAC: ; 0x0203ECAC
+ thumb_func_start ScrCmd_Unk024A
+ScrCmd_Unk024A: ; 0x0203ECAC
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -7571,8 +7527,8 @@ FUN_0203ECAC: ; 0x0203ECAC
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203ECD8
-FUN_0203ECD8: ; 0x0203ECD8
+ thumb_func_start ScrCmd_Unk024B
+ScrCmd_Unk024B: ; 0x0203ECD8
push {r3, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -7587,8 +7543,8 @@ FUN_0203ECD8: ; 0x0203ECD8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203ECF4
-FUN_0203ECF4: ; 0x0203ECF4
+ thumb_func_start ScrCmd_Unk024C
+ScrCmd_Unk024C: ; 0x0203ECF4
push {r3, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -7603,8 +7559,8 @@ FUN_0203ECF4: ; 0x0203ECF4
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203ED10
-FUN_0203ED10: ; 0x0203ED10
+ thumb_func_start ScrCmd_Unk024D
+ScrCmd_Unk024D: ; 0x0203ED10
push {r3, lr}
add r1, r0, #0x0
add r1, #0x80
@@ -7650,8 +7606,8 @@ FUN_0203ED2C: ; 0x0203ED2C
pop {r4-r6, pc}
.balign 4
- thumb_func_start ScrCmd_pcfreespace
-ScrCmd_pcfreespace: ; 0x0203ED70
+ thumb_func_start ScrCmd_PCFreeSpace
+ScrCmd_PCFreeSpace: ; 0x0203ED70
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7675,8 +7631,8 @@ ScrCmd_pcfreespace: ; 0x0203ED70
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203EDA4
-FUN_0203EDA4: ; 0x0203EDA4
+ thumb_func_start ScrCmd_Unk0258
+ScrCmd_Unk0258: ; 0x0203EDA4
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -7694,8 +7650,8 @@ FUN_0203EDA4: ; 0x0203EDA4
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203EDC8
-FUN_0203EDC8: ; 0x0203EDC8
+ thumb_func_start ScrCmd_Unk0259
+ScrCmd_Unk0259: ; 0x0203EDC8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7707,8 +7663,8 @@ FUN_0203EDC8: ; 0x0203EDC8
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203EDE0
-FUN_0203EDE0: ; 0x0203EDE0
+ thumb_func_start ScrCmd_Unk025A
+ScrCmd_Unk025A: ; 0x0203EDE0
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -7727,8 +7683,8 @@ FUN_0203EDE0: ; 0x0203EDE0
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203EE08
-FUN_0203EE08: ; 0x0203EE08
+ thumb_func_start ScrCmd_Unk025B
+ScrCmd_Unk025B: ; 0x0203EE08
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7737,8 +7693,8 @@ FUN_0203EE08: ; 0x0203EE08
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203EE18
-FUN_0203EE18: ; 0x0203EE18
+ thumb_func_start ScrCmd_Unk025C
+ScrCmd_Unk025C: ; 0x0203EE18
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7747,8 +7703,8 @@ FUN_0203EE18: ; 0x0203EE18
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203EE28
-FUN_0203EE28: ; 0x0203EE28
+ thumb_func_start ScrCmd_Unk025D
+ScrCmd_Unk025D: ; 0x0203EE28
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7773,8 +7729,8 @@ _0203EE50:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203EE58
-FUN_0203EE58: ; 0x0203EE58
+ thumb_func_start ScrCmd_Unk025E
+ScrCmd_Unk025E: ; 0x0203EE58
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7783,8 +7739,8 @@ FUN_0203EE58: ; 0x0203EE58
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203EE68
-FUN_0203EE68: ; 0x0203EE68
+ thumb_func_start ScrCmd_Unk025F
+ScrCmd_Unk025F: ; 0x0203EE68
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -7793,8 +7749,8 @@ FUN_0203EE68: ; 0x0203EE68
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203EE78
-FUN_0203EE78: ; 0x0203EE78
+ thumb_func_start ScrCmd_Unk0260
+ScrCmd_Unk0260: ; 0x0203EE78
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7809,8 +7765,8 @@ FUN_0203EE78: ; 0x0203EE78
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203EE98
-FUN_0203EE98: ; 0x0203EE98
+ thumb_func_start ScrCmd_Unk0262
+ScrCmd_Unk0262: ; 0x0203EE98
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -7838,8 +7794,8 @@ FUN_0203EE98: ; 0x0203EE98
mov r0, #0x1
pop {r4-r6, pc}
- thumb_func_start FUN_0203EED8
-FUN_0203EED8: ; 0x0203EED8
+ thumb_func_start ScrCmd_Unk0263
+ScrCmd_Unk0263: ; 0x0203EED8
push {r3-r7, lr}
sub sp, #0x8
add r4, r0, #0x0
@@ -7898,8 +7854,8 @@ _0203EF4E:
.balign 4
_0203EF54: .word 0x00000182
- thumb_func_start FUN_0203EF58
-FUN_0203EF58: ; 0x0203EF58
+ thumb_func_start ScrCmd_Unk0264
+ScrCmd_Unk0264: ; 0x0203EF58
push {r3-r7, lr}
sub sp, #0x30
add r4, r0, #0x0
@@ -7990,8 +7946,8 @@ _0203EFFC:
.balign 4
_0203F008: .word UNK_020F34FC
- thumb_func_start FUN_0203F00C
-FUN_0203F00C: ; 0x0203F00C
+ thumb_func_start ScrCmd_Unk0265
+ScrCmd_Unk0265: ; 0x0203F00C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -8001,8 +7957,8 @@ FUN_0203F00C: ; 0x0203F00C
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203F020
-FUN_0203F020: ; 0x0203F020
+ thumb_func_start ScrCmd_Unk0266
+ScrCmd_Unk0266: ; 0x0203F020
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -8012,8 +7968,8 @@ FUN_0203F020: ; 0x0203F020
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203F034
-FUN_0203F034: ; 0x0203F034
+ thumb_func_start ScrCmd_Unk0267
+ScrCmd_Unk0267: ; 0x0203F034
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -8030,8 +7986,8 @@ FUN_0203F034: ; 0x0203F034
mov r0, #0x1
pop {r4, pc}
- thumb_func_start FUN_0203F058
-FUN_0203F058: ; 0x0203F058
+ thumb_func_start ScrCmd_Unk0268
+ScrCmd_Unk0268: ; 0x0203F058
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -8048,8 +8004,8 @@ FUN_0203F058: ; 0x0203F058
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203F07C
-FUN_0203F07C: ; 0x0203F07C
+ thumb_func_start ScrCmd_Unk0269
+ScrCmd_Unk0269: ; 0x0203F07C
push {r3-r7, lr}
sub sp, #0x10
add r5, r0, #0x0
@@ -8100,7 +8056,7 @@ FUN_0203F07C: ; 0x0203F07C
bl FUN_02058060
add r7, r0, #0x0
bne _0203F0FA
- bl ErrorHandling
+ bl GF_AssertFail
_0203F0FA:
str r6, [sp, #0x0]
str r4, [sp, #0x4]
@@ -8113,8 +8069,8 @@ _0203F0FA:
add sp, #0x10
pop {r3-r7, pc}
- thumb_func_start FUN_0203F110
-FUN_0203F110: ; 0x0203F110
+ thumb_func_start ScrCmd_Unk026A
+ScrCmd_Unk026A: ; 0x0203F110
push {r3-r7, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -8148,7 +8104,7 @@ FUN_0203F110: ; 0x0203F110
bl FUN_02058060
add r5, r0, #0x0
bne _0203F164
- bl ErrorHandling
+ bl GF_AssertFail
_0203F164:
ldr r0, [r4, #0x74]
add r1, r5, #0x0
@@ -8158,8 +8114,8 @@ _0203F164:
mov r0, #0x1
pop {r3-r7, pc}
- thumb_func_start FUN_0203F174
-FUN_0203F174: ; 0x0203F174
+ thumb_func_start ScrCmd_Unk026B
+ScrCmd_Unk026B: ; 0x0203F174
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8178,8 +8134,8 @@ FUN_0203F174: ; 0x0203F174
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F19C
-FUN_0203F19C: ; 0x0203F19C
+ thumb_func_start ScrCmd_Unk026C
+ScrCmd_Unk026C: ; 0x0203F19C
push {r4-r7, lr}
sub sp, #0x24
add r4, r0, #0x0
@@ -8244,7 +8200,7 @@ _0203F212:
_0203F21A:
cmp r4, #0x10
blt _0203F222
- bl ErrorHandling
+ bl GF_AssertFail
_0203F222:
ldr r0, [sp, #0x0]
add r4, #0x22
@@ -8255,8 +8211,8 @@ _0203F222:
nop
_0203F230: .word 0x0000FFFF
- thumb_func_start FUN_0203F234
-FUN_0203F234: ; 0x0203F234
+ thumb_func_start ScrCmd_Unk026E
+ScrCmd_Unk026E: ; 0x0203F234
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -8272,8 +8228,8 @@ FUN_0203F234: ; 0x0203F234
.balign 4
_0203F250: .word gMain + 0x60
- thumb_func_start FUN_0203F254
-FUN_0203F254: ; 0x0203F254
+ thumb_func_start ScrCmd_Unk026F
+ScrCmd_Unk026F: ; 0x0203F254
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -8285,8 +8241,8 @@ FUN_0203F254: ; 0x0203F254
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203F26C
-FUN_0203F26C: ; 0x0203F26C
+ thumb_func_start ScrCmd_Unk0270
+ScrCmd_Unk0270: ; 0x0203F26C
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8317,8 +8273,8 @@ _0203F2A6:
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203F2AC
-FUN_0203F2AC: ; 0x0203F2AC
+ thumb_func_start ScrCmd_Unk0273
+ScrCmd_Unk0273: ; 0x0203F2AC
push {r4-r6, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -8344,8 +8300,8 @@ FUN_0203F2AC: ; 0x0203F2AC
pop {r4-r6, pc}
.balign 4
- thumb_func_start FUN_0203F2E4
-FUN_0203F2E4: ; 0x0203F2E4
+ thumb_func_start ScrCmd_Unk0275
+ScrCmd_Unk0275: ; 0x0203F2E4
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -8373,8 +8329,8 @@ _0203F316:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203F31C
-FUN_0203F31C: ; 0x0203F31C
+ thumb_func_start ScrCmd_Unk0277
+ScrCmd_Unk0277: ; 0x0203F31C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8394,8 +8350,8 @@ FUN_0203F31C: ; 0x0203F31C
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F348
-FUN_0203F348: ; 0x0203F348
+ thumb_func_start ScrCmd_Unk0279
+ScrCmd_Unk0279: ; 0x0203F348
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8424,8 +8380,8 @@ FUN_0203F348: ; 0x0203F348
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203F38C
-FUN_0203F38C: ; 0x0203F38C
+ thumb_func_start ScrCmd_Unk027A
+ScrCmd_Unk027A: ; 0x0203F38C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -8434,8 +8390,8 @@ FUN_0203F38C: ; 0x0203F38C
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203F39C
-FUN_0203F39C: ; 0x0203F39C
+ thumb_func_start ScrCmd_Unk027B
+ScrCmd_Unk027B: ; 0x0203F39C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -8444,8 +8400,8 @@ FUN_0203F39C: ; 0x0203F39C
mov r0, #0x0
pop {r3, pc}
- thumb_func_start FUN_0203F3AC
-FUN_0203F3AC: ; 0x0203F3AC
+ thumb_func_start ScrCmd_Unk027D
+ScrCmd_Unk027D: ; 0x0203F3AC
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8492,8 +8448,8 @@ _0203F3FE:
nop
_0203F414: .word 0x0000FFFF
- thumb_func_start FUN_0203F418
-FUN_0203F418: ; 0x0203F418
+ thumb_func_start ScrCmd_Unk027F
+ScrCmd_Unk027F: ; 0x0203F418
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8519,8 +8475,8 @@ _0203F446:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203F44C
-FUN_0203F44C: ; 0x0203F44C
+ thumb_func_start ScrCmd_Unk027E
+ScrCmd_Unk027E: ; 0x0203F44C
push {r3-r5, lr}
add r4, r0, #0x0
add r0, #0x80
@@ -8548,8 +8504,8 @@ _0203F47E:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203F484
-FUN_0203F484: ; 0x0203F484
+ thumb_func_start ScrCmd_Unk0282
+ScrCmd_Unk0282: ; 0x0203F484
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8588,8 +8544,8 @@ _0203F4D2:
pop {r3-r7, pc}
.balign 4
- thumb_func_start FUN_0203F4D8
-FUN_0203F4D8: ; 0x0203F4D8
+ thumb_func_start ScrCmd_Unk0284
+ScrCmd_Unk0284: ; 0x0203F4D8
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -8611,8 +8567,8 @@ FUN_0203F4D8: ; 0x0203F4D8
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F508
-FUN_0203F508: ; 0x0203F508
+ thumb_func_start ScrCmd_Unk0285
+ScrCmd_Unk0285: ; 0x0203F508
push {r3-r7, lr}
add r6, r0, #0x0
bl ScriptReadHalfword
@@ -8715,8 +8671,8 @@ _0203F5C8: .word 0x0000010E
_0203F5CC: .word 0x0000010D
_0203F5D0: .word UNK_020F3538
- thumb_func_start FUN_0203F5D4
-FUN_0203F5D4: ; 0x0203F5D4
+ thumb_func_start ScrCmd_Unk0286
+ScrCmd_Unk0286: ; 0x0203F5D4
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -8738,8 +8694,8 @@ FUN_0203F5D4: ; 0x0203F5D4
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F604
-FUN_0203F604: ; 0x0203F604
+ thumb_func_start ScrCmd_Unk0287
+ScrCmd_Unk0287: ; 0x0203F604
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -8761,8 +8717,8 @@ FUN_0203F604: ; 0x0203F604
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F634
-FUN_0203F634: ; 0x0203F634
+ thumb_func_start ScrCmd_Unk0288
+ScrCmd_Unk0288: ; 0x0203F634
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -8784,8 +8740,8 @@ FUN_0203F634: ; 0x0203F634
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F664
-FUN_0203F664: ; 0x0203F664
+ thumb_func_start ScrCmd_Unk0289
+ScrCmd_Unk0289: ; 0x0203F664
push {r3-r7, lr}
sub sp, #0x8
add r5, r0, #0x0
@@ -8847,8 +8803,8 @@ _0203F6DA:
.balign 4
_0203F6E0: .word 0x0000FFFF
- thumb_func_start FUN_0203F6E4
-FUN_0203F6E4: ; 0x0203F6E4
+ thumb_func_start ScrCmd_Unk028A
+ScrCmd_Unk028A: ; 0x0203F6E4
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8877,8 +8833,8 @@ _0203F714:
nop
_0203F71C: .word 0x0000FFFF
- thumb_func_start FUN_0203F720
-FUN_0203F720: ; 0x0203F720
+ thumb_func_start ScrCmd_Unk028B
+ScrCmd_Unk028B: ; 0x0203F720
push {r4-r6, lr}
add r5, r0, #0x0
ldr r2, [r5, #0x8]
@@ -8899,7 +8855,7 @@ FUN_0203F720: ; 0x0203F720
add r5, r0, #0x0
cmp r4, #0x3
bls _0203F752
- bl ErrorHandling
+ bl GF_AssertFail
_0203F752:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -8908,8 +8864,8 @@ _0203F752:
mov r0, #0x0
pop {r4-r6, pc}
- thumb_func_start FUN_0203F760
-FUN_0203F760: ; 0x0203F760
+ thumb_func_start ScrCmd_Unk028F
+ScrCmd_Unk028F: ; 0x0203F760
push {r3-r5, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -8959,8 +8915,8 @@ _0203F7BE:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F7C8
-FUN_0203F7C8: ; 0x0203F7C8
+ thumb_func_start ScrCmd_Unk0290
+ScrCmd_Unk0290: ; 0x0203F7C8
push {r4-r6, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -8991,8 +8947,8 @@ FUN_0203F7C8: ; 0x0203F7C8
.balign 4
_0203F808: .word FUN_0203BC04
- thumb_func_start FUN_0203F80C
-FUN_0203F80C: ; 0x0203F80C
+ thumb_func_start ScrCmd_Unk0291
+ScrCmd_Unk0291: ; 0x0203F80C
push {r4-r6, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -9018,7 +8974,7 @@ FUN_0203F80C: ; 0x0203F80C
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _0203F84C
- bl ErrorHandling
+ bl GF_AssertFail
_0203F84C:
ldr r0, [r4, #0x0]
bl FUN_02037A40
@@ -9047,8 +9003,8 @@ _0203F872:
str r0, [r4, #0x0]
pop {r4-r6, pc}
- thumb_func_start FUN_0203F880
-FUN_0203F880: ; 0x0203F880
+ thumb_func_start ScrCmd_Unk0292
+ScrCmd_Unk0292: ; 0x0203F880
push {r3-r5, lr}
add r5, r0, #0x0
ldr r2, [r5, #0x8]
@@ -9081,8 +9037,8 @@ _0203F8BA:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203F8C0
-FUN_0203F8C0: ; 0x0203F8C0
+ thumb_func_start ScrCmd_Unk029E
+ScrCmd_Unk029E: ; 0x0203F8C0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9125,14 +9081,14 @@ _0203F910:
bl MOD06_0224F12C
b _0203F91E
_0203F91A:
- bl ErrorHandling
+ bl GF_AssertFail
_0203F91E:
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F924
-FUN_0203F924: ; 0x0203F924
+ thumb_func_start ScrCmd_Unk0293
+ScrCmd_Unk0293: ; 0x0203F924
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -9154,8 +9110,8 @@ FUN_0203F924: ; 0x0203F924
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F954
-FUN_0203F954: ; 0x0203F954
+ thumb_func_start ScrCmd_Unk029F
+ScrCmd_Unk029F: ; 0x0203F954
push {r4, lr}
add r4, r0, #0x0
bl ScriptReadHalfword
@@ -9181,8 +9137,8 @@ _0203F982:
pop {r4, pc}
.balign 4
- thumb_func_start FUN_0203F988
-FUN_0203F988: ; 0x0203F988
+ thumb_func_start ScrCmd_Unk02A3
+ScrCmd_Unk02A3: ; 0x0203F988
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9201,8 +9157,8 @@ FUN_0203F988: ; 0x0203F988
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F9B0
-FUN_0203F9B0: ; 0x0203F9B0
+ thumb_func_start ScrCmd_Unk02A4
+ScrCmd_Unk02A4: ; 0x0203F9B0
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9222,8 +9178,8 @@ FUN_0203F9B0: ; 0x0203F9B0
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203F9DC
-FUN_0203F9DC: ; 0x0203F9DC
+ thumb_func_start ScrCmd_Unk02A2
+ScrCmd_Unk02A2: ; 0x0203F9DC
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9250,8 +9206,8 @@ _0203FA0C:
.balign 4
_0203FA10: .word 0x0000FF79
- thumb_func_start FUN_0203FA14
-FUN_0203FA14: ; 0x0203FA14
+ thumb_func_start ScrCmd_Unk02A7
+ScrCmd_Unk02A7: ; 0x0203FA14
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9283,8 +9239,8 @@ _0203FA4E:
nop
_0203FA54: .word 0x0000012A
- thumb_func_start FUN_0203FA58
-FUN_0203FA58: ; 0x0203FA58
+ thumb_func_start ScrCmd_Unk02AA
+ScrCmd_Unk02AA: ; 0x0203FA58
push {r3-r7, lr}
sub sp, #0x10
add r4, r0, #0x0
@@ -9386,8 +9342,8 @@ _0203FB26:
nop
_0203FB48: .word 0x00000147
- thumb_func_start FUN_0203FB4C
-FUN_0203FB4C: ; 0x0203FB4C
+ thumb_func_start ScrCmd_Unk02AC
+ScrCmd_Unk02AC: ; 0x0203FB4C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -9399,8 +9355,8 @@ FUN_0203FB4C: ; 0x0203FB4C
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203FB64
-FUN_0203FB64: ; 0x0203FB64
+ thumb_func_start ScrCmd_Unk02AF
+ScrCmd_Unk02AF: ; 0x0203FB64
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -9422,24 +9378,24 @@ FUN_0203FB64: ; 0x0203FB64
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203FB94
-FUN_0203FB94: ; 0x0203FB94
+ thumb_func_start ScrCmd_Unk02B0
+ScrCmd_Unk02B0: ; 0x0203FB94
push {r3, lr}
bl FUN_02033E74
mov r0, #0x0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203FBA0
-FUN_0203FBA0: ; 0x0203FBA0
+ thumb_func_start ScrCmd_Unk02B1
+ScrCmd_Unk02B1: ; 0x0203FBA0
push {r3, lr}
bl FUN_02033ED0
mov r0, #0x0
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203FBAC
-FUN_0203FBAC: ; 0x0203FBAC
+ thumb_func_start ScrCmd_Unk02B2
+ScrCmd_Unk02B2: ; 0x0203FBAC
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -9448,8 +9404,8 @@ FUN_0203FBAC: ; 0x0203FBAC
pop {r3, pc}
.balign 4
- thumb_func_start FUN_0203FBBC
-FUN_0203FBBC: ; 0x0203FBBC
+ thumb_func_start ScrCmd_Unk02B5
+ScrCmd_Unk02B5: ; 0x0203FBBC
push {r3-r7, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9491,8 +9447,8 @@ FUN_0203FBBC: ; 0x0203FBBC
mov r0, #0x0
pop {r3-r7, pc}
- thumb_func_start FUN_0203FC1C
-FUN_0203FC1C: ; 0x0203FC1C
+ thumb_func_start ScrCmd_Unk02B6
+ScrCmd_Unk02B6: ; 0x0203FC1C
push {r3-r5, lr}
add r5, r0, #0x0
bl ScriptReadHalfword
@@ -9512,7 +9468,7 @@ FUN_0203FC1C: ; 0x0203FC1C
bl FUN_02058060
add r5, r0, #0x0
bne _0203FC4C
- bl ErrorHandling
+ bl GF_AssertFail
_0203FC4C:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -9520,8 +9476,8 @@ _0203FC4C:
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203FC58
-FUN_0203FC58: ; 0x0203FC58
+ thumb_func_start ScrCmd_Unk02BE
+ScrCmd_Unk02BE: ; 0x0203FC58
push {r3-r5, lr}
add r5, r0, #0x0
add r1, r5, #0x0
@@ -9540,8 +9496,8 @@ FUN_0203FC58: ; 0x0203FC58
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203FC80
-FUN_0203FC80: ; 0x0203FC80
+ thumb_func_start ScrCmd_Unk02C1
+ScrCmd_Unk02C1: ; 0x0203FC80
push {r3-r5, lr}
add r0, #0x80
ldr r5, [r0, #0x0]
@@ -9564,8 +9520,8 @@ _0203FCAA:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203FCB0
-FUN_0203FCB0: ; 0x0203FCB0
+ thumb_func_start ScrCmd_Unk02C2
+ScrCmd_Unk02C2: ; 0x0203FCB0
push {r3-r5, lr}
add r0, #0x80
ldr r5, [r0, #0x0]
@@ -9586,8 +9542,8 @@ _0203FCD6:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203FCDC
-FUN_0203FCDC: ; 0x0203FCDC
+ thumb_func_start ScrCmd_Unk02C3
+ScrCmd_Unk02C3: ; 0x0203FCDC
push {r3, lr}
ldr r2, [r0, #0x8]
add r1, r2, #0x1
diff --git a/arm9/asm/sndlib.s b/arm9/asm/sndlib.s
deleted file mode 100644
index 840e72d3..00000000
--- a/arm9/asm/sndlib.s
+++ /dev/null
@@ -1,4758 +0,0 @@
- ; Compiled with MWCCARM 1.2 sp3
-
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern SNDi_DecibelTable
-
- .bss
-
- .global UNK_021D1C8C
-UNK_021D1C8C: ; 0x021D1C8C
- .space 0x4
-
- .global UNK_021D1C90
-UNK_021D1C90: ; 0x021D1C90
- .space 0x4
-
- .global UNK_021D1C94
-UNK_021D1C94: ; 0x021D1C94
- .space 0x4
-
- .global UNK_021D1C98
-UNK_021D1C98: ; 0x021D1C98
- .space 0xc
-
- .global UNK_021D1CA4
-UNK_021D1CA4: ; 0x021D1CA4
- .space 0xc
-
- .global UNK_021D1CB0
-UNK_021D1CB0: ; 0x021D1CB0
- .space 0x4
-
- .global UNK_021D1CB4
-UNK_021D1CB4: ; 0x021D1CB4
- .space 0x4
-
- .global UNK_021D1CB8
-UNK_021D1CB8: ; 0x021D1CB8
- .space 0x4
-
- .global UNK_021D1CBC
-UNK_021D1CBC: ; 0x021D1CBC
- .space 0x140
-
- .global UNK_021D1DFC
-UNK_021D1DFC: ; 0x021D1DFC
- .space 0xc
-
- .global UNK_021D1E08
-UNK_021D1E08: ; 0x021D1E08
- .space 0xc
-
- .global UNK_021D1E14
-UNK_021D1E14: ; 0x021D1E14
- .space 0x440
-
- .global UNK_021D2254
-UNK_021D2254: ; 0x021D2254
- .space 0x8
-
- .global UNK_021D225C
-UNK_021D225C: ; 0x021D225C
- .space 0x10
-
- .global UNK_021D226C
-UNK_021D226C: ; 0x021D226C
- .space 0x4
-
- .global UNK_021D2270
-UNK_021D2270: ; 0x021D2270
- .space 0x4
-
- .global UNK_021D2274
-UNK_021D2274: ; 0x021D2274
- .space 0x460
-
- .global UNK_021D26D4
-UNK_021D26D4: ; 0x021D26D4
- .space 0x4
-
- .global UNK_021D26D8
-UNK_021D26D8: ; 0x021D26D8
- .space 0xc
-
- .global UNK_021D26E4
-UNK_021D26E4: ; 0x021D26E4
- .space 0x40
-
- .global UNK_021D2724
-UNK_021D2724: ; 0x021D2724
- .space 0x80
-
- .global UNK_021D27A4
-UNK_021D27A4: ; 0x021D27A4
- .space 0x4
-
- .global UNK_021D27A8
-UNK_021D27A8: ; 0x021D27A8
- .space 0x4
-
- .global UNK_021D27AC
-UNK_021D27AC: ; 0x021D27AC
- .space 0x20
-
- .global UNK_021D27CC
-UNK_021D27CC: ; 0x021D27CC
- .space 0x54
-
- .global UNK_021D2820
-UNK_021D2820: ; 0x021D2820
- .space 0xa0
-
- .global UNK_021D28C0
-UNK_021D28C0: ; 0x021D28C0
- .space 0x4
-
- .global UNK_021D28C4
-UNK_021D28C4: ; 0x021D28C4
- .space 0x3c
-
- .global UNK_021D2900
-UNK_021D2900: ; 0x021D2900
- .space 0x4
-
- .global UNK_021D2904
-UNK_021D2904: ; 0x021D2904
- .space 0x4d4
-
- .global UNK_021D2DD8
-UNK_021D2DD8: ; 0x021D2DD8
- .space 0x18
-
- .global UNK_021D2DF0
-UNK_021D2DF0: ; 0x021D2DF0
- .space 0xc
-
- .global UNK_021D2DFC
-UNK_021D2DFC: ; 0x021D2DFC
- .space 0x5c0
-
- .text
-
- arm_func_start FUN_020C0130
-FUN_020C0130: ; 0x020C0130
- ldr ip, _020C0138 ; =FUN_020C187C
- bx r12
- .balign 4
-_020C0138: .word FUN_020C187C
-
- arm_func_start FUN_020C013C
-FUN_020C013C: ; 0x020C013C
- stmdb sp!, {r4,lr}
- bl FUN_020C18F8
- mov r0, #0x0
- mov r1, r0
- mov r2, r0
- mov r3, r0
- bl SND_StopTimer
- bl SND_GetCurrentCommandTag
- mov r4, r0
- mov r0, #0x1
- bl SND_FlushCommand
- mov r0, r4
- bl SND_WaitForCommandProc
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C0174
-FUN_020C0174: ; 0x020C0174
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r0, #0x0
- beq _020C0194
- mov r0, #0x40
- bl SND_SetMasterPan
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020C0194:
- bl SND_ResetMasterPan
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C01A0
-FUN_020C01A0: ; 0x020C01A0
- stmdb sp!, {r4,lr}
- mov r4, #0x0
-_020C01A8:
- mov r0, r4
- bl SND_RecvCommandReply
- cmp r0, #0x0
- bne _020C01A8
- bl FUN_020C0BA0
- bl FUN_020C1D9C
- bl FUN_020C3C88
- mov r0, #0x0
- bl SND_FlushCommand
- ldmia sp!, {r4,pc}
-
- arm_func_start SDAT_Init
-SDAT_Init: ; 0x020C01D0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020C0254 ; =UNK_021D1C94
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {pc}
- mov r1, #0x1
- str r1, [r0, #0x0]
- bl SND_Init
- ldr ip, _020C0258 ; =FUN_020C013C
- ldr r0, _020C025C ; =UNK_021D1C98
- mov r3, #0x0
- ldr r1, _020C0260 ; =UNK_021D1CA4
- ldr r2, _020C0264 ; =FUN_020C0130
- str r12, [r0, #0x0]
- str r3, [r0, #0x4]
- str r2, [r1, #0x0]
- str r3, [r1, #0x4]
- bl PM_PrependPreSleepCallback
- ldr r0, _020C0260 ; =UNK_021D1CA4
- bl PM_AppendPostSleepCallback
- bl FUN_020C0270
- bl FUN_020C1E38
- bl FUN_020C0D20
- ldr r1, _020C0268 ; =UNK_021D1C8C
- mvn r3, #0x0
- ldr r0, _020C026C ; =UNK_021D1C90
- mov r2, #0x1
- strb r3, [r1, #0x0]
- str r2, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020C0254: .word UNK_021D1C94
-_020C0258: .word FUN_020C013C
-_020C025C: .word UNK_021D1C98
-_020C0260: .word UNK_021D1CA4
-_020C0264: .word FUN_020C0130
-_020C0268: .word UNK_021D1C8C
-_020C026C: .word UNK_021D1C90
-
- arm_func_start FUN_020C0270
-FUN_020C0270: ; 0x020C0270
- ldr r2, _020C0290 ; =UNK_021D1CB8
- mov r3, #0x0
- ldr r1, _020C0294 ; =UNK_021D1CB0
- ldr r0, _020C0298 ; =UNK_021D1CB4
- str r3, [r2, #0x0]
- str r3, [r1, #0x0]
- str r3, [r0, #0x0]
- bx lr
- .balign 4
-_020C0290: .word UNK_021D1CB8
-_020C0294: .word UNK_021D1CB0
-_020C0298: .word UNK_021D1CB4
-
- arm_func_start FUN_020C029C
-FUN_020C029C: ; 0x020C029C
- ldr r1, _020C02B8 ; =UNK_021D1CB4
- mov r2, #0x1
- mvn r0, r2, lsl r0
- ldr r2, [r1, #0x0]
- and r0, r2, r0
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020C02B8: .word UNK_021D1CB4
-
- arm_func_start FUN_020C02BC
-FUN_020C02BC: ; 0x020C02BC
- ldr r0, _020C02FC ; =UNK_021D1CB4
- mov r3, #0x1
- ldr r2, [r0, #0x0]
- mov r0, #0x0
-_020C02CC:
- ands r1, r2, r3
- ldreq r1, _020C02FC ; =UNK_021D1CB4
- ldreq r2, [r1, #0x0]
- orreq r2, r2, r3
- streq r2, [r1, #0x0]
- bxeq lr
- add r0, r0, #0x1
- cmp r0, #0x8
- mov r3, r3, lsl #0x1
- blt _020C02CC
- mvn r0, #0x0
- bx lr
- .balign 4
-_020C02FC: .word UNK_021D1CB4
-
- arm_func_start FUN_020C0300
-FUN_020C0300: ; 0x020C0300
- ldr r1, _020C0318 ; =UNK_021D1CB0
- mvn r0, r0
- ldr r2, [r1, #0x0]
- and r0, r2, r0
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020C0318: .word UNK_021D1CB0
-
- arm_func_start FUN_020C031C
-FUN_020C031C:
- ldr r1, _020C033C ; =UNK_021D1CB0
- ldr r2, [r1, #0x0]
- ands r3, r0, r2
- movne r0, #0x0
- orreq r0, r2, r0
- streq r0, [r1, #0x0]
- moveq r0, #0x1
- bx lr
- .balign 4
-_020C033C: .word UNK_021D1CB0
-
- arm_func_start FUN_020C0340
-FUN_020C0340:
- stmdb sp!, {r4,lr}
- movs r4, r0
- ldmeqia sp!, {r4,pc}
- mov r1, #0x0
- bl SND_UnlockChannel
- ldr r0, _020C036C ; =UNK_021D1CB8
- mvn r1, r4
- ldr r2, [r0, #0x0]
- and r1, r2, r1
- str r1, [r0, #0x0]
- ldmia sp!, {r4,pc}
- .balign 4
-_020C036C: .word UNK_021D1CB8
-
- arm_func_start FUN_020C0370
-FUN_020C0370:
- stmdb sp!, {r4,lr}
- movs r4, r0
- moveq r0, #0x1
- ldmeqia sp!, {r4,pc}
- ldr r1, _020C03B4 ; =UNK_021D1CB8
- ldr r1, [r1, #0x0]
- ands r1, r4, r1
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- mov r1, #0x0
- bl SND_LockChannel
- ldr r1, _020C03B4 ; =UNK_021D1CB8
- mov r0, #0x1
- ldr r2, [r1, #0x0]
- orr r2, r2, r4
- str r2, [r1, #0x0]
- ldmia sp!, {r4,pc}
- .balign 4
-_020C03B4: .word UNK_021D1CB8
-
- arm_func_start FUN_020C03B8
-FUN_020C03B8: ; 0x020C03B8
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, [r4, #0xc]
- cmp r0, #0x0
- bne _020C03F8
- ldr r0, [r4, #0x10]
- bl SND_IsFinishedCommandTag
- cmp r0, #0x0
- moveq r0, #0x1
- ldmeqia sp!, {r4,pc}
- mov r0, #0x1
- str r0, [r4, #0xc]
-_020C03F8:
- bl SND_GetChannelStatus
- ldr r1, [r4, #0x0]
- mov r2, #0x1
- mov r1, r2, lsl r1
- ands r0, r1, r0
- movne r0, r2
- moveq r0, #0x0
- streq r0, [r4, #0x8]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C041C
-FUN_020C041C: ; 0x020C041C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x8]
- cmp r2, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x0]
- mov r2, #0x1
- mov r0, r2, lsl r0
- bl SND_SetChannelPan
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C044C
-FUN_020C044C: ; 0x020C044C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r0, [r5, #0x8]
- mov r4, r1
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldr r2, [r5, #0x4]
- ldr r0, _020C04D4 ; =0xD87F8000
- mov r3, r2, asr #0x1f
- mov r1, #0x7f
- bl _ll_udiv
- mov r2, r4
- mov r3, r4, asr #0x1f
- bl _ll_udiv
- mov r2, #0x0
- mov r3, r0
- mov r0, #0x10
- cmp r1, r2
- cmpeq r3, r0
- movcc r3, r0
- blo _020C04B8
- ldr r0, _020C04D8 ; =0x0000FFFF
- cmp r1, r2
- cmpeq r3, r0
- movhi r3, r0
-_020C04B8:
- ldr r0, [r5, #0x0]
- mov r1, #0x1
- mov r0, r1, lsl r0
- mov r1, r3
- bl SND_SetChannelTimer
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C04D4: .word 0xD87F8000
-_020C04D8: .word 0x0000FFFF
-
- arm_func_start FUN_020C04DC
-FUN_020C04DC: ; 0x020C04DC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x8]
- cmp r2, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x0]
- mov r2, #0x1
- mov r0, r2, lsl r0
- mov r2, #0x0
- bl SND_SetChannelVolume
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C0510
-FUN_020C0510: ; 0x020C0510
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, [r4, #0x0]
- mov r2, #0x1
- mov r1, #0x0
- mov r0, r2, lsl r0
- mov r2, r1
- mov r3, r1
- bl SND_StopTimer
- mov r0, #0x0
- str r0, [r4, #0x8]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C054C
-FUN_020C054C: ; 0x020C054C
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x1c
- movs r8, r1
- mov r9, r0
- mov r7, r2
- mov r6, r3
- beq _020C0584
- cmp r8, #0x1
- ldreq r0, [sp, #0x3c]
- ldreq r1, [sp, #0x38]
- moveq r0, r0, asr #0x1
- moveq r5, r1, asr #0x1
- subeq r4, r0, r1, asr #0x1
- b _020C0598
-_020C0584:
- ldr r0, [sp, #0x3c]
- ldr r1, [sp, #0x38]
- mov r0, r0, asr #0x2
- mov r5, r1, asr #0x2
- sub r4, r0, r1, asr #0x2
-_020C0598:
- ldr r2, [sp, #0x40]
- ldr r0, _020C0668 ; =0xD87F8000
- mov r3, r2, asr #0x1f
- mov r1, #0x7f
- bl _ll_udiv
- ldr r2, [sp, #0x48]
- mov r3, r2, asr #0x1f
- bl _ll_udiv
- mov r3, #0x0
- mov r2, #0x10
- cmp r1, r3
- cmpeq r0, r2
- movcc r0, r2
- blo _020C05E0
- ldr r2, _020C066C ; =0x0000FFFF
- cmp r1, r3
- cmpeq r0, r2
- movhi r0, r2
-_020C05E0:
- str r5, [sp, #0x0]
- ldr r1, [sp, #0x44]
- str r4, [sp, #0x4]
- str r1, [sp, #0x8]
- mov r1, #0x0
- str r1, [sp, #0xc]
- cmp r6, #0x0
- movne r3, #0x1
- ldr r1, [sp, #0x4c]
- str r0, [sp, #0x10]
- str r1, [sp, #0x14]
- ldr r0, [r9, #0x0]
- moveq r3, #0x2
- mov r1, r8
- mov r2, r7
- bl SND_SetupChannelPcm
- mov r1, #0x0
- ldr r0, [r9, #0x0]
- mov r2, #0x1
- mov r0, r2, lsl r0
- mov r2, r1
- mov r3, r1
- bl SND_StartTimer
- mov r0, #0x1
- str r0, [r9, #0x8]
- mov r0, #0x0
- str r0, [r9, #0xc]
- bl SND_GetCurrentCommandTag
- str r0, [r9, #0x10]
- ldr r1, [sp, #0x40]
- mov r0, #0x1
- str r1, [r9, #0x4]
- add sp, sp, #0x1c
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020C0668: .word 0xD87F8000
-_020C066C: .word 0x0000FFFF
-
- arm_func_start FUN_020C0670
-FUN_020C0670: ; 0x020C0670
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- ldr ip, _020C0684 ; =FUN_020C0340
- mov r0, r1, lsl r0
- bx r12
- .balign 4
-_020C0684: .word FUN_020C0340
-
- arm_func_start FUN_020C0688
-FUN_020C0688: ; 0x020C0688
- stmdb sp!, {r4,lr}
- mov r4, r0
- mov r0, #0x1
- mov r0, r0, lsl r4
- bl FUN_020C0370
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- mov r0, #0x14
- mul r0, r4, r0
- ldr r2, _020C06C8 ; =UNK_021D1CBC
- mov r1, #0x0
- str r4, [r2, r0]
- add r0, r2, r0
- str r1, [r0, #0x8]
- ldmia sp!, {r4,pc}
- .balign 4
-_020C06C8: .word UNK_021D1CBC
-
- arm_func_start FUN_020C06CC
-FUN_020C06CC: ; 0x020C06CC
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldr r4, [r6, #0x4]
- mov r5, r1
- cmp r4, #0x0
- beq _020C06F8
- mov r0, r4
- mov r1, r6
- bl FUN_020ADAB0
- mov r0, #0x0
- str r0, [r6, #0x4]
-_020C06F8:
- ldr r0, _020C0728 ; =UNK_021D1E08
- mov r1, r6
- bl FUN_020ADAB0
- strb r5, [r6, #0x3d]
- cmp r4, #0x0
- beq _020C071C
- mov r0, r4
- mov r1, r6
- bl FUN_020C0910
-_020C071C:
- mov r0, r6
- bl FUN_020C08B4
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C0728: .word UNK_021D1E08
-
- arm_func_start FUN_020C072C
-FUN_020C072C: ; 0x020C072C
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- bl FUN_020C2A7C
- ldr r1, [r4, #0xc]
- cmp r1, #0x0
- movne r0, #0x0
- strne r0, [r1, #0x8]
- ldmneia sp!, {r4,pc}
- ldr r1, [r4, #0x10]
- ldr r2, _020C0778 ; =UNK_021D2254
- mov r0, #0x24
- mla r0, r1, r0, r2
- mov r1, r4
- add r0, r0, #0xc
- bl FUN_020ADAB0
- ldmia sp!, {r4,pc}
- .balign 4
-_020C0778: .word UNK_021D2254
-
- arm_func_start FUN_020C077C
-FUN_020C077C: ; 0x020C077C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r0
- ldr r1, [r4, #0x0]
- cmp r1, #0x0
- movne r0, #0x0
- strne r0, [r1, #0x0]
- strne r0, [r4, #0x0]
- ldr r5, [r4, #0x4]
- mov r1, r4
- mov r0, r5
- bl FUN_020ADAB0
- mov r0, #0x0
- str r0, [r4, #0x4]
- ldr r1, [r4, #0x8]
- cmp r1, #0x0
- beq _020C07D8
- add r0, r5, #0xc
- bl FUN_020ADBE8
- ldr r0, [r4, #0x8]
- mov r1, #0x0
- str r1, [r0, #0xc]
- str r1, [r4, #0x8]
-_020C07D8:
- ldr r0, _020C0800 ; =UNK_021D1E08
- mov r1, r4
- bl FUN_020ADAB0
- ldr r0, _020C0804 ; =UNK_021D1DFC
- mov r1, r4
- bl FUN_020ADBE8
- mov r0, #0x0
- strb r0, [r4, #0x2c]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C0800: .word UNK_021D1E08
-_020C0804: .word UNK_021D1DFC
-
- arm_func_start FUN_020C0808
-FUN_020C0808: ; 0x020C0808
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r0, _020C0874 ; =UNK_021D1DFC
- mov r1, #0x0
- bl FUN_020ADA98
- movs r4, r0
- bne _020C0850
- ldr r0, _020C0878 ; =UNK_021D1E08
- mov r1, #0x0
- bl FUN_020ADA98
- mov r4, r0
- ldrb r1, [r4, #0x3d]
- cmp r5, r1
- addlt sp, sp, #0x4
- movlt r0, #0x0
- ldmltia sp!, {r4-r5,pc}
- bl FUN_020C087C
-_020C0850:
- ldr r0, _020C0874 ; =UNK_021D1DFC
- mov r1, r4
- bl FUN_020ADAB0
- mov r0, r4
- strb r5, [r4, #0x3d]
- bl FUN_020C08B4
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C0874: .word UNK_021D1DFC
-_020C0878: .word UNK_021D1E08
-
- arm_func_start FUN_020C087C
-FUN_020C087C: ; 0x020C087C
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldrb r0, [r4, #0x2c]
- cmp r0, #0x2
- bne _020C089C
- ldrb r0, [r4, #0x3c]
- ldr r1, _020C08B0 ; =0xFFFFFD2D
- bl SND_SetPlayerVolume
-_020C089C:
- ldrb r0, [r4, #0x3c]
- bl SND_StopSeq
- mov r0, r4
- bl FUN_020C077C
- ldmia sp!, {r4,pc}
- .balign 4
-_020C08B0: .word 0xFFFFFD2D
-
- arm_func_start FUN_020C08B4
-FUN_020C08B4: ; 0x020C08B4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r0, _020C090C ; =UNK_021D1E08
- mov r1, #0x0
- bl FUN_020ADA98
- movs r1, r0
- beq _020C08F8
- ldr r4, _020C090C ; =UNK_021D1E08
-_020C08D8:
- ldrb r2, [r5, #0x3d]
- ldrb r0, [r1, #0x3d]
- cmp r2, r0
- blo _020C08F8
- mov r0, r4
- bl FUN_020ADA98
- movs r1, r0
- bne _020C08D8
-_020C08F8:
- ldr r0, _020C090C ; =UNK_021D1E08
- mov r2, r5
- bl FUN_020ADB18
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C090C: .word UNK_021D1E08
-
- arm_func_start FUN_020C0910
-FUN_020C0910: ; 0x020C0910
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r1, #0x0
- mov r5, r0
- bl FUN_020ADA98
- movs r1, r0
- beq _020C0950
-_020C0930:
- ldrb r2, [r4, #0x3d]
- ldrb r0, [r1, #0x3d]
- cmp r2, r0
- blo _020C0950
- mov r0, r5
- bl FUN_020ADA98
- movs r1, r0
- bne _020C0930
-_020C0950:
- mov r0, r5
- mov r2, r4
- bl FUN_020ADB18
- str r5, [r4, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C0968
-FUN_020C0968: ; 0x020C0968
- stmdb sp!, {r4,lr}
- mov r4, r0
- mov r0, #0x0
- strb r0, [r4, #0x2e]
- strb r0, [r4, #0x2d]
- strb r0, [r4, #0x2f]
- strh r0, [r4, #0x34]
- strh r0, [r4, #0x3e]
- mov r1, #0x7f
- strb r1, [r4, #0x40]
- add r0, r4, #0x1c
- strb r1, [r4, #0x41]
- bl FUN_020C3E6C
- add r0, r4, #0x1c
- mov r1, #0x7f00
- mov r2, #0x1
- bl FUN_020C3E40
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C09B0
-FUN_020C09B0: ; 0x020C09B0
- stmdb sp!, {r4-r6,lr}
- ldr r3, _020C0A00 ; =UNK_021D2254
- mov r2, #0x24
- mla r5, r0, r2, r3
- mov r6, r1
- add r0, r5, #0xc
- mov r1, #0x0
- bl FUN_020ADA98
- movs r4, r0
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- mov r1, r4
- add r0, r5, #0xc
- bl FUN_020ADAB0
- str r6, [r4, #0xc]
- str r4, [r6, #0x8]
- ldr r0, [r4, #0x8]
- bl FUN_020C29C0
- ldr r0, [r4, #0x8]
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C0A00: .word UNK_021D2254
-
- arm_func_start FUN_020C0A04
-FUN_020C0A04: ; 0x020C0A04
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- movs r5, r0
- mov r4, r1
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldrb r0, [r5, #0x2e]
- cmp r4, r0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldrb r0, [r5, #0x3c]
- bl SND_PauseSeq
- strb r4, [r5, #0x2e]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C0A40
-FUN_020C0A40: ; 0x020C0A40
- stmdb sp!, {r4,lr}
- movs r4, r0
- mov r2, r1
- ldmeqia sp!, {r4,pc}
- ldrb r1, [r4, #0x2c]
- cmp r1, #0x0
- ldmeqia sp!, {r4,pc}
- cmp r2, #0x0
- bne _020C0A6C
- bl FUN_020C087C
- ldmia sp!, {r4,pc}
-_020C0A6C:
- add r0, r4, #0x1c
- mov r1, #0x0
- bl FUN_020C3E40
- mov r0, r4
- mov r1, #0x0
- bl FUN_020C06CC
- mov r0, #0x2
- strb r0, [r4, #0x2c]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C0A90
-FUN_020C0A90: ; 0x020C0A90
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldrb r0, [r5, #0x3c]
- ldr r4, [r5, #0x4]
- bl SND_PrepareSeq
- ldr r2, [r4, #0x1c]
- cmp r2, #0x0
- beq _020C0AC0
- ldrb r0, [r5, #0x3c]
- ldr r1, _020C0AE4 ; =0x0000FFFF
- bl SND_SetTrackAllocatableChannel
-_020C0AC0:
- mov r0, r5
- bl FUN_020C0968
- bl SND_GetCurrentCommandTag
- str r0, [r5, #0x30]
- mov r0, #0x1
- strb r0, [r5, #0x2f]
- strb r0, [r5, #0x2c]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C0AE4: .word 0x0000FFFF
-
- arm_func_start thunk_FUN_020c077c
-thunk_FUN_020c077c: ; 0x020C0AE8
- ldr ip, _020C0AF0 ; =FUN_020C077C
- bx r12
- .balign 4
-_020C0AF0: .word FUN_020C077C
-
- arm_func_start FUN_020C0AF4
-FUN_020C0AF4: ; 0x020C0AF4
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr ip, _020C0B9C ; =UNK_021D2254
- mov r3, #0x24
- mov r4, r0
- ldr r5, [r4, #0x0]
- mla r6, r1, r3, r12
- mov r7, r2
- cmp r5, #0x0
- beq _020C0B20
- bl FUN_020C0F68
-_020C0B20:
- ldrh r1, [r6, #0x8]
- ldr r0, [r6, #0x18]
- cmp r1, r0
- blo _020C0B64
- mov r0, r6
- mov r1, #0x0
- bl FUN_020ADA98
- cmp r0, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,pc}
- ldrb r1, [r0, #0x3d]
- cmp r7, r1
- addlt sp, sp, #0x4
- movlt r0, #0x0
- ldmltia sp!, {r4-r7,pc}
- bl FUN_020C087C
-_020C0B64:
- mov r0, r7
- bl FUN_020C0808
- movs r5, r0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,pc}
- mov r0, r6
- mov r1, r5
- bl FUN_020C0910
- str r4, [r5, #0x0]
- mov r0, r5
- str r5, [r4, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C0B9C: .word UNK_021D2254
-
- arm_func_start FUN_020C0BA0
-FUN_020C0BA0: ; 0x020C0BA0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- bl SND_GetPlayerStatus
- str r0, [sp, #0x0]
- ldr r0, _020C0D14 ; =UNK_021D1E08
- mov r1, #0x0
- bl FUN_020ADA98
- movs r10, r0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4-r11,pc}
- mov r0, #0x8000
- rsb r0, r0, #0x0
- ldr r4, _020C0D18 ; =SNDi_DecibelTable
- str r0, [sp, #0x4]
- mov r5, #0x1
- mov r11, #0x0
-_020C0BE0:
- ldr r0, _020C0D14 ; =UNK_021D1E08
- mov r1, r10
- bl FUN_020ADA98
- ldrb r1, [r10, #0x2d]
- mov r9, r0
- cmp r1, #0x0
- bne _020C0C0C
- ldr r0, [r10, #0x30]
- bl SND_IsFinishedCommandTag
- cmp r0, #0x0
- strneb r5, [r10, #0x2d]
-_020C0C0C:
- ldrb r0, [r10, #0x2d]
- cmp r0, #0x0
- beq _020C0C38
- ldrb r0, [r10, #0x3c]
- mov r1, r5, lsl r0
- ldr r0, [sp, #0x0]
- ands r0, r0, r1
- bne _020C0C38
- mov r0, r10
- bl FUN_020C077C
- b _020C0D00
-_020C0C38:
- add r0, r10, #0x1c
- bl FUN_020C3DF4
- ldr r0, [r10, #0x4]
- ldrb r2, [r10, #0x41]
- ldrb r1, [r10, #0x40]
- ldrb r0, [r0, #0x20]
- mov r3, r2, lsl #0x1
- mov r2, r1, lsl #0x1
- mov r1, r0, lsl #0x1
- add r0, r10, #0x1c
- ldrsh r8, [r4, r3]
- ldrsh r7, [r4, r2]
- ldrsh r6, [r4, r1]
- bl FUN_020C3E0C
- mov r0, r0, asr #0x8
- mov r2, r0, lsl #0x1
- add r1, r7, r8
- mov r0, #0x8000
- ldrsh r2, [r4, r2]
- add r1, r6, r1
- rsb r0, r0, #0x0
- add r6, r2, r1
- cmp r6, r0
- ldrlt r6, [sp, #0x4]
- blt _020C0CA8
- ldr r0, _020C0D1C ; =0x00007FFF
- cmp r6, r0
- movgt r6, r0
-_020C0CA8:
- ldrsh r0, [r10, #0x3e]
- cmp r6, r0
- beq _020C0CC4
- ldrb r0, [r10, #0x3c]
- mov r1, r6
- bl SND_SetPlayerVolume
- strh r6, [r10, #0x3e]
-_020C0CC4:
- ldrb r0, [r10, #0x2c]
- cmp r0, #0x2
- bne _020C0CE8
- add r0, r10, #0x1c
- bl FUN_020C3DDC
- cmp r0, #0x0
- beq _020C0CE8
- mov r0, r10
- bl FUN_020C087C
-_020C0CE8:
- ldrb r0, [r10, #0x2f]
- cmp r0, #0x0
- beq _020C0D00
- ldrb r0, [r10, #0x3c]
- bl SND_StartPreparedSeq
- strb r11, [r10, #0x2f]
-_020C0D00:
- mov r10, r9
- cmp r9, #0x0
- bne _020C0BE0
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020C0D14: .word UNK_021D1E08
-_020C0D18: .word SNDi_DecibelTable
-_020C0D1C: .word 0x00007FFF
-
- arm_func_start FUN_020C0D20
-FUN_020C0D20: ; 0x020C0D20
- stmdb sp!, {r4-r10,lr}
- ldr r0, _020C0DC4 ; =UNK_021D1E08
- mov r1, #0x14
- bl FUN_020ADC74
- ldr r0, _020C0DC8 ; =UNK_021D1DFC
- mov r1, #0x14
- bl FUN_020ADC74
- ldr r6, _020C0DCC ; =UNK_021D1E14
- mov r7, #0x0
- ldr r4, _020C0DC8 ; =UNK_021D1DFC
- mov r5, r7
-_020C0D4C:
- strb r5, [r6, #0x2c]
- mov r0, r4
- mov r1, r6
- strb r7, [r6, #0x3c]
- bl FUN_020ADBE8
- add r7, r7, #0x1
- cmp r7, #0x10
- add r6, r6, #0x44
- blt _020C0D4C
- ldr sl, _020C0DD0 ; =UNK_021D2254
- mov r9, #0x0
- mov r7, r9
- mov r4, r9
- mov r8, #0xc
- mov r6, #0x7f
- mov r5, #0x1
-_020C0D8C:
- mov r0, r10
- mov r1, r8
- bl FUN_020ADC74
- mov r1, r7
- add r0, r10, #0xc
- bl FUN_020ADC74
- strb r6, [r10, #0x20]
- str r5, [r10, #0x18]
- add r9, r9, #0x1
- str r4, [r10, #0x1c]
- cmp r9, #0x20
- add r10, r10, #0x24
- blt _020C0D8C
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020C0DC4: .word UNK_021D1E08
-_020C0DC8: .word UNK_021D1DFC
-_020C0DCC: .word UNK_021D1E14
-_020C0DD0: .word UNK_021D2254
-
- arm_func_start FUN_020C0DD4
-FUN_020C0DD4: ; 0x020C0DD4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {pc}
- ldrb r0, [r1, #0x2d]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {pc}
- ldrb r0, [r1, #0x3c]
- bl SND_GetPlayerTickCounter
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C0E14
-FUN_020C0E14: ; 0x020C0E14
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- mvneq r0, #0x0
- bxeq lr
- ldrh r0, [r1, #0x34]
- cmp r0, #0x1
- mvnne r0, #0x0
- ldreqh r0, [r1, #0x38]
- bx lr
-
- arm_func_start FUN_020C0E38
-FUN_020C0E38: ; 0x020C0E38
- ldr r12, [r0, #0x0]
- cmp r12, #0x0
- bxeq lr
- mov r3, #0x2
- strh r3, [r12, #0x34]
- ldr r3, [r0, #0x0]
- strh r1, [r3, #0x38]
- ldr r0, [r0, #0x0]
- strh r2, [r0, #0x3a]
- bx lr
-
- arm_func_start FUN_020C0E60
-FUN_020C0E60: ; 0x020C0E60
- ldr r3, [r0, #0x0]
- cmp r3, #0x0
- movne r2, #0x1
- strneh r2, [r3, #0x34]
- ldrne r0, [r0, #0x0]
- strneh r1, [r0, #0x38]
- bx lr
-
- arm_func_start FUN_020C0E7C
-FUN_020C0E7C: ; 0x020C0E7C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldrb r0, [r0, #0x3c]
- bl SND_SetTrackPan
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C0EA4
-FUN_020C0EA4: ; 0x020C0EA4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldrb r0, [r0, #0x3c]
- bl SND_SetTrackPitch
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C0ECC
-FUN_020C0ECC: ; 0x020C0ECC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldrb r0, [r0, #0x3c]
- bl SND_SetPlayerChannelPriority
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C0EF4
-FUN_020C0EF4: ; 0x020C0EF4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x0]
- cmp r3, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldrb r0, [r3, #0x2c]
- cmp r0, #0x2
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- add r0, r3, #0x1c
- mov r1, r1, lsl #0x8
- bl FUN_020C3E40
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C0F30
-FUN_020C0F30: ; 0x020C0F30
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- strneb r1, [r0, #0x40]
- bx lr
-
- arm_func_start FUN_020C0F40
-FUN_020C0F40: ; 0x020C0F40
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- strneb r1, [r0, #0x41]
- bx lr
-
- arm_func_start FUN_020C0F50
-FUN_020C0F50: ; 0x020C0F50
- mov r1, #0x24
- mul r1, r0, r1
- ldr r0, _020C0F64 ; =UNK_021D225C
- ldrh r0, [r0, r1]
- bx lr
- .balign 4
-_020C0F64: .word UNK_021D225C
-
- arm_func_start FUN_020C0F68
-FUN_020C0F68: ; 0x020C0F68
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- movne r1, #0x0
- strne r1, [r2, #0x0]
- strne r1, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020C0F80
-FUN_020C0F80: ; 0x020C0F80
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020C0F8C
-FUN_020C0F8C: ; 0x020C0F8C
- ldr ip, _020C0F98 ; =FUN_020C0A04
- ldr r0, [r0, #0x0]
- bx r12
- .balign 4
-_020C0F98: .word FUN_020C0A04
-
- arm_func_start FUN_020C0F9C
-FUN_020C0F9C: ; 0x020C0F9C
- stmdb sp!, {r4-r6,lr}
- ldr r4, _020C0FD8 ; =UNK_021D1E14
- mov r6, r0
- mov r5, #0x0
-_020C0FAC:
- ldrb r0, [r4, #0x2c]
- cmp r0, #0x0
- beq _020C0FC4
- mov r0, r4
- mov r1, r6
- bl FUN_020C0A40
-_020C0FC4:
- add r5, r5, #0x1
- cmp r5, #0x10
- add r4, r4, #0x44
- blt _020C0FAC
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C0FD8: .word UNK_021D1E14
-
- arm_func_start FUN_020C0FDC
-FUN_020C0FDC: ; 0x020C0FDC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r4, _020C103C ; =UNK_021D1E14
- mov r7, r0
- mov r6, r1
- mov r5, #0x0
-_020C0FF4:
- ldrb r0, [r4, #0x2c]
- cmp r0, #0x0
- beq _020C1024
- ldrh r0, [r4, #0x34]
- cmp r0, #0x1
- bne _020C1024
- ldrh r0, [r4, #0x38]
- cmp r0, r7
- bne _020C1024
- mov r0, r4
- mov r1, r6
- bl FUN_020C0A40
-_020C1024:
- add r5, r5, #0x1
- cmp r5, #0x10
- add r4, r4, #0x44
- blt _020C0FF4
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C103C: .word UNK_021D1E14
-
- arm_func_start FUN_020C1040
-FUN_020C1040: ; 0x020C1040
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r3, _020C109C ; =UNK_021D2254
- mov r2, #0x24
- mla r4, r0, r2, r3
- ldr r5, _020C10A0 ; =UNK_021D1E14
- mov r7, r1
- mov r6, #0x0
-_020C1060:
- ldrb r0, [r5, #0x2c]
- cmp r0, #0x0
- beq _020C1084
- ldr r0, [r5, #0x4]
- cmp r0, r4
- bne _020C1084
- mov r0, r5
- mov r1, r7
- bl FUN_020C0A40
-_020C1084:
- add r6, r6, #0x1
- cmp r6, #0x10
- add r5, r5, #0x44
- blt _020C1060
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C109C: .word UNK_021D2254
-_020C10A0: .word UNK_021D1E14
-
- arm_func_start FUN_020C10A4
-FUN_020C10A4: ; 0x020C10A4
- ldr ip, _020C10B0 ; =FUN_020C0A40
- ldr r0, [r0, #0x0]
- bx r12
- .balign 4
-_020C10B0: .word FUN_020C0A40
-
- arm_func_start FUN_020C10B4
-FUN_020C10B4:
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- mov r5, r2
- mov r6, r0
- mov r0, r1
- mov r3, #0x0
- ldr r2, _020C1140 ; =FUN_020C072C
- add r1, r5, #0x14
- str r3, [sp, #0x0]
- bl SDATi_AllocAndInitChunk
- movs r4, r0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- mov r2, #0x0
- str r2, [r4, #0xc]
- str r6, [r4, #0x10]
- mov r1, r5
- add r0, r4, #0x14
- str r2, [r4, #0x8]
- bl FUN_020C2A94
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r2, _020C1144 ; =UNK_021D2254
- mov r1, #0x24
- mla r2, r6, r1, r2
- str r0, [r4, #0x8]
- mov r1, r4
- add r0, r2, #0xc
- bl FUN_020ADBE8
- mov r0, #0x1
- add sp, sp, #0x8
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C1140: .word FUN_020C072C
-_020C1144: .word UNK_021D2254
-
- arm_func_start FUN_020C1148
-FUN_020C1148: ; 0x020C1148
- mov r2, #0x24
- mul r2, r0, r2
- ldr r0, _020C115C ; =UNK_021D2270
- str r1, [r0, r2]
- bx lr
- .balign 4
-_020C115C: .word UNK_021D2270
-
- arm_func_start FUN_020C1160
-FUN_020C1160: ; 0x020C1160
- mov r2, #0x24
- mul r2, r0, r2
- mov r0, r1, lsl #0x10
- ldr r1, _020C117C ; =UNK_021D226C
- mov r0, r0, lsr #0x10
- str r0, [r1, r2]
- bx lr
- .balign 4
-_020C117C: .word UNK_021D226C
-
- arm_func_start FUN_020C1180
-FUN_020C1180: ; 0x020C1180
- mov r2, #0x24
- mul r2, r0, r2
- ldr r0, _020C1194 ; =UNK_021D2274
- strb r1, [r0, r2]
- bx lr
- .balign 4
-_020C1194: .word UNK_021D2274
-
- arm_func_start FUN_020C1198
-FUN_020C1198: ; 0x020C1198
- stmdb sp!, {r4-r6,lr}
- mov r4, r0
- ldr r0, [r4, #0x24]
- mov r0, r0, lsl #0x1e
- movs r0, r0, asr #0x1f
- ldmeqia sp!, {r4-r6,pc}
- ldr r0, [r4, #0x38]
- cmp r0, #0x0
- beq _020C11E8
- mov r5, #0x1
-_020C11C0:
- bl OS_DisableInterrupts
- mov r6, r0
- mov r0, r4
- mov r1, r5
- bl FUN_020C1254
- mov r0, r6
- bl OS_RestoreInterrupts
- ldr r0, [r4, #0x38]
- cmp r0, #0x0
- bne _020C11C0
-_020C11E8:
- ldr r0, [r4, #0x40]
- mov r2, #0x1
- mov r1, #0x0
- mov r2, r2, lsl r0
- ldr r0, [r4, #0x44]
- mov r3, r1
- bl SND_StartTimer
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020C1208
-FUN_020C1208: ; 0x020C1208
- stmdb sp!, {r4,lr}
- ldr r1, [r0, #0x24]
- mov r1, r1, lsl #0x1e
- movs r1, r1, asr #0x1f
- ldmeqia sp!, {r4,pc}
- ldr r2, [r0, #0x40]
- mov r3, #0x1
- mov r1, #0x0
- mov r2, r3, lsl r2
- ldr r0, [r0, #0x44]
- mov r3, r1
- bl SND_StopTimer
- bl SND_GetCurrentCommandTag
- mov r4, r0
- mov r0, #0x1
- bl SND_FlushCommand
- mov r0, r4
- bl SND_WaitForCommandProc
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C1254
-FUN_020C1254: ; 0x020C1254
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- mov r4, r1
- ldr r0, [r5, #0x28]
- ldr r1, [r5, #0x2c]
- bl _u32_div_f
- ldr r1, [r5, #0x48]
- ldr r2, [r5, #0x38]
- mov r3, r0
- mul lr, r3, r2
- cmp r1, #0x0
- mov r12, #0x0
- ble _020C12B8
- ldr r2, _020C1300 ; =UNK_021D2724
- ldr r0, _020C1304 ; =UNK_021D26E4
-_020C1294:
- add r1, r5, r12
- ldrb r1, [r1, #0x4c]
- ldr r1, [r2, r1, lsl #0x3]
- add r1, r1, lr
- str r1, [r0, r12, lsl #0x2]
- ldr r1, [r5, #0x48]
- add r12, r12, #0x1
- cmp r12, r1
- blt _020C1294
-_020C12B8:
- ldr r0, [r5, #0x20]
- ldr r2, _020C1304 ; =UNK_021D26E4
- str r0, [sp, #0x0]
- ldr r12, [r5, #0x34]
- mov r0, r4
- str r12, [sp, #0x4]
- ldr r4, [r5, #0x30]
- blx r4
- ldr r0, [r5, #0x38]
- add r0, r0, #0x1
- str r0, [r5, #0x38]
- ldr r1, [r5, #0x38]
- ldr r0, [r5, #0x2c]
- cmp r1, r0
- movge r0, #0x0
- strge r0, [r5, #0x38]
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C1300: .word UNK_021D2724
-_020C1304: .word UNK_021D26E4
-
- arm_func_start FUN_020C1308
-FUN_020C1308: ; 0x020C1308
- ldr ip, _020C1314 ; =FUN_020C1254
- mov r1, #0x1
- bx r12
- .balign 4
-_020C1314: .word FUN_020C1254
-
- arm_func_start FUN_020C1318
-FUN_020C1318: ; 0x020C1318
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x40]
- bl FUN_020C029C
- ldr r0, _020C1344 ; =UNK_021D26D8
- mov r1, r4
- bl FUN_020ADAB0
- ldr r0, [r4, #0x24]
- bic r0, r0, #0x1
- str r0, [r4, #0x24]
- ldmia sp!, {r4,pc}
- .balign 4
-_020C1344: .word UNK_021D26D8
-
- arm_func_start FUN_020C1348
-FUN_020C1348: ; 0x020C1348
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r0
- ldr r0, [r4, #0x24]
- mov r0, r0, lsl #0x1e
- movs r0, r0, asr #0x1f
- beq _020C13B4
- ldr r0, [r4, #0x40]
- mov r2, #0x1
- mov r1, #0x0
- mov r2, r2, lsl r0
- ldr r0, [r4, #0x44]
- mov r3, r1
- bl SND_StopTimer
- add r0, r4, #0x8
- bl PM_DeletePreSleepCallback
- add r0, r4, #0x14
- bl PM_DeletePostSleepCallback
- ldr r0, [r4, #0x24]
- bic r0, r0, #0x2
- str r0, [r4, #0x24]
- bl SND_GetCurrentCommandTag
- mov r5, r0
- mov r0, #0x1
- bl SND_FlushCommand
- mov r0, r5
- bl SND_WaitForCommandProc
-_020C13B4:
- mov r0, r4
- bl FUN_020C1318
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C13C4
-FUN_020C13C4: ; 0x020C13C4
- stmdb sp!, {r4-r8,lr}
- mov r7, r0
- str r1, [r7, #0x3c]
- ldr r0, [r7, #0x48]
- mov r5, #0x0
- cmp r0, #0x0
- ldmleia sp!, {r4-r8,pc}
- ldr r4, _020C142C ; =UNK_021D2724
- mov r8, #0x1
-_020C13E8:
- add r0, r7, r5
- ldrb r6, [r0, #0x4c]
- ldr r1, [r7, #0x3c]
- add r0, r4, r6, lsl #0x3
- ldr r0, [r0, #0x4]
- add r0, r1, r0
- bl SND_CalcChannelVolume
- mov r2, r0
- mov r0, r8, lsl r6
- and r1, r2, #0xff
- mov r2, r2, asr #0x8
- bl SND_SetChannelVolume
- ldr r0, [r7, #0x48]
- add r5, r5, #0x1
- cmp r5, r0
- blt _020C13E8
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020C142C: .word UNK_021D2724
-
- arm_func_start FUN_020C1430
-FUN_020C1430: ; 0x020C1430
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, [r0, #0x24]
- mov r1, r1, lsl #0x1f
- movs r1, r1, asr #0x1f
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- bl FUN_020C1348
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C1458
-FUN_020C1458: ; 0x020C1458
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x40]
- mov r2, #0x1
- mov r1, #0x0
- mov r2, r2, lsl r0
- ldr r0, [r4, #0x44]
- mov r3, r1
- bl SND_StartTimer
- ldr r0, [r4, #0x24]
- mov r0, r0, lsl #0x1e
- movs r0, r0, asr #0x1f
- ldmneia sp!, {r4,pc}
- add r0, r4, #0x8
- bl PM_PrependPreSleepCallback
- add r0, r4, #0x14
- bl PM_AppendPostSleepCallback
- ldr r0, [r4, #0x24]
- orr r0, r0, #0x2
- str r0, [r4, #0x24]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C14AC
-FUN_020C14AC: ; 0x020C14AC
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x24
- mov r10, r0
- ldr r4, [r10, #0x24]
- mov r9, r1
- mov r1, r4, lsl #0x1f
- movs r1, r1, asr #0x1f
- ldr r1, [sp, #0x4c]
- str r2, [sp, #0x18]
- mov r4, r3
- str r1, [sp, #0x4c]
- beq _020C14E0
- bl FUN_020C1430
-_020C14E0:
- ldr r0, [sp, #0x4c]
- ldr r2, [r10, #0x48]
- mov r0, r0, lsl #0x5
- mul r1, r2, r0
- mov r0, r4
- bl _u32_div_f
- ldr r1, [sp, #0x4c]
- ldr r2, [sp, #0x48]
- mul r1, r0, r1
- mov r0, r1, lsl #0x5
- str r0, [r10, #0x28]
- ldr r0, [r10, #0x28]
- cmp r9, #0x1
- moveq r0, r0, lsr #0x1
- mul r0, r2, r0
- ldr r1, [sp, #0x4c]
- bl _u32_div_f
- str r0, [sp, #0x1c]
- bl FUN_020C02BC
- str r0, [r10, #0x40]
- ldr r0, [r10, #0x40]
- cmp r0, #0x0
- addlt sp, sp, #0x24
- movlt r0, #0x0
- ldmltia sp!, {r4-r11,pc}
- ldr r0, [r10, #0x48]
- mov r8, #0x0
- cmp r0, #0x0
- ble _020C15D4
- ldr r0, [sp, #0x48]
- mov r7, r0, lsl #0x5
- ldr r6, _020C1668 ; =UNK_021D2724
- mov r5, r8
- mov r4, #0x7f
- mov r11, #0x40
- mov r0, #0x1
- str r0, [sp, #0x20]
-_020C1574:
- ldr r2, [r10, #0x28]
- ldr r1, [sp, #0x18]
- add r0, r10, r8
- mla r1, r2, r8, r1
- ldrb r0, [r0, #0x4c]
- ldr r3, [sp, #0x20]
- str r1, [r6, r0, lsl #0x3]
- add r1, r6, r0, lsl #0x3
- str r5, [r1, #0x4]
- str r5, [sp, #0x0]
- ldr r2, [r10, #0x28]
- mov r1, r9
- mov r2, r2, lsr #0x2
- str r2, [sp, #0x4]
- str r4, [sp, #0x8]
- str r5, [sp, #0xc]
- str r7, [sp, #0x10]
- str r11, [sp, #0x14]
- ldr r2, [r6, r0, lsl #0x3]
- bl SND_SetupChannelPcm
- ldr r0, [r10, #0x48]
- add r8, r8, #0x1
- cmp r8, r0
- blt _020C1574
-_020C15D4:
- str r10, [sp, #0x0]
- ldr r1, [sp, #0x1c]
- ldr r0, [r10, #0x40]
- ldr r3, _020C166C ; =FUN_020C1308
- mov r2, r1
- bl SND_SetupAlarm
- ldr r0, _020C1670 ; =UNK_021D26D8
- mov r1, r10
- bl FUN_020ADBE8
- ldr r0, [sp, #0x4c]
- str r9, [r10, #0x20]
- str r0, [r10, #0x2c]
- ldr r1, [sp, #0x50]
- ldr r0, [sp, #0x54]
- str r1, [r10, #0x30]
- str r0, [r10, #0x34]
- mov r0, #0x0
- str r0, [r10, #0x38]
- str r0, [r10, #0x3c]
- ldr r0, [r10, #0x24]
- bic r0, r0, #0x1
- orr r0, r0, #0x1
- str r0, [r10, #0x24]
- bl OS_DisableInterrupts
- mov r4, r0
- mov r2, #0x1
- mov r0, r10
- mov r1, #0x0
- str r2, [r10, #0x2c]
- bl FUN_020C1254
- ldr r1, [sp, #0x4c]
- mov r0, r4
- str r1, [r10, #0x2c]
- bl OS_RestoreInterrupts
- mov r0, #0x1
- add sp, sp, #0x24
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020C1668: .word UNK_021D2724
-_020C166C: .word FUN_020C1308
-_020C1670: .word UNK_021D26D8
-
- arm_func_start FUN_020C1674
-FUN_020C1674: ; 0x020C1674
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x44]
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- bl FUN_020C0340
- mov r0, #0x0
- str r0, [r4, #0x44]
- str r0, [r4, #0x48]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C169C
-FUN_020C169C: ; 0x020C169C
- stmdb sp!, {r4-r6,lr}
- mov r5, r1
- mov r4, #0x0
- mov r6, r0
- mov r12, r4
- cmp r5, #0x0
- ble _020C16DC
- mov r1, #0x1
-_020C16BC:
- ldrb r3, [r2, r12]
- add r0, r6, r12
- strb r3, [r0, #0x4c]
- ldrb r0, [r2, r12]
- add r12, r12, #0x1
- cmp r12, r5
- orr r4, r4, r1, lsl r0
- blt _020C16BC
-_020C16DC:
- mov r0, r4
- bl FUN_020C0370
- cmp r0, #0x0
- moveq r0, #0x0
- strne r5, [r6, #0x48]
- strne r4, [r6, #0x44]
- movne r0, #0x1
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020C16FC
-FUN_020C16FC: ; 0x020C16FC
- stmdb sp!, {r4,lr}
- ldr r1, _020C176C ; =UNK_021D26D4
- mov r4, r0
- ldr r0, [r1, #0x0]
- cmp r0, #0x0
- bne _020C172C
- ldr r0, _020C1770 ; =UNK_021D26D8
- mov r1, #0x0
- bl FUN_020ADC74
- ldr r0, _020C176C ; =UNK_021D26D4
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020C172C:
- ldr r1, _020C1774 ; =FUN_020C1208
- ldr r0, _020C1778 ; =FUN_020C1198
- str r1, [r4, #0x8]
- str r4, [r4, #0xc]
- str r0, [r4, #0x14]
- str r4, [r4, #0x18]
- mov r0, #0x0
- str r0, [r4, #0x44]
- str r0, [r4, #0x48]
- ldr r0, [r4, #0x24]
- bic r0, r0, #0x1
- str r0, [r4, #0x24]
- ldr r0, [r4, #0x24]
- bic r0, r0, #0x2
- str r0, [r4, #0x24]
- ldmia sp!, {r4,pc}
- .balign 4
-_020C176C: .word UNK_021D26D4
-_020C1770: .word UNK_021D26D8
-_020C1774: .word FUN_020C1208
-_020C1778: .word FUN_020C1198
-
- arm_func_start FUN_020C177C
-FUN_020C177C: ; 0x020C177C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- ldr r4, [r7, #0x18]
- ldr r0, [r7, #0x1c]
- ldr r1, _020C186C ; =UNK_021D27A4
- mul r0, r4, r0
- ldr r3, [r7, #0xc]
- ldr r2, [r7, #0x10]
- ldr r1, [r1, #0x0]
- add r6, r3, r0
- cmp r1, #0x0
- add r5, r2, r0
- beq _020C180C
- ldr r2, _020C1870 ; =UNK_021D27A8
- mov r1, #0x14
- ldr r2, [r2, #0x0]
- ldr r3, _020C1874 ; =UNK_021D2820
- mul r1, r2, r1
- str r7, [r3, r1]
- add r1, r3, r1
- str r4, [r1, #0x4]
- str r0, [r1, #0x8]
- str r6, [r1, #0xc]
- ldr r0, _020C1878 ; =UNK_021D27AC
- mov r2, #0x0
- str r5, [r1, #0x10]
- bl OS_SendMessage
- ldr r0, _020C1870 ; =UNK_021D27A8
- ldr r1, [r0, #0x0]
- add r1, r1, #0x1
- str r1, [r0, #0x0]
- cmp r1, #0x8
- movge r1, #0x0
- strge r1, [r0, #0x0]
- b _020C1844
-_020C180C:
- mov r0, r6
- mov r1, r4
- bl DC_InvalidateRange
- mov r0, r5
- mov r1, r4
- bl DC_InvalidateRange
- ldr r1, [r7, #0x38]
- mov r0, r6
- str r1, [sp, #0x0]
- ldr r3, [r7, #0x8]
- ldr r6, [r7, #0x34]
- mov r1, r5
- mov r2, r4
- blx r6
-_020C1844:
- ldr r0, [r7, #0x1c]
- add r0, r0, #0x1
- str r0, [r7, #0x1c]
- ldr r1, [r7, #0x1c]
- ldr r0, [r7, #0x30]
- cmp r1, r0
- movge r0, #0x0
- strge r0, [r7, #0x1c]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C186C: .word UNK_021D27A4
-_020C1870: .word UNK_021D27A8
-_020C1874: .word UNK_021D2820
-_020C1878: .word UNK_021D27AC
-
- arm_func_start FUN_020C187C
-FUN_020C187C: ; 0x020C187C
- stmdb sp!, {r4,lr}
- ldr r4, _020C18F4 ; =UNK_021D27CC
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- mov r0, #0x0
- str r0, [r4, #0x1c]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x14]
- bl MIi_CpuClear32
- ldr r1, [r4, #0x10]
- ldr r2, [r4, #0x14]
- mov r0, #0x0
- bl MIi_CpuClear32
- ldr r0, [r4, #0xc]
- ldr r1, [r4, #0x14]
- bl DC_FlushRange
- ldr r0, [r4, #0x10]
- ldr r1, [r4, #0x14]
- bl DC_FlushRange
- ldr r1, [r4, #0x2c]
- mov r3, #0x0
- cmp r1, #0x0
- movge r0, #0x1
- movge r2, r0, lsl r1
- ldr r0, [r4, #0x24]
- ldr r1, [r4, #0x28]
- movlt r2, #0x0
- bl SND_StartTimer
- ldmia sp!, {r4,pc}
- .balign 4
-_020C18F4: .word UNK_021D27CC
-
- arm_func_start FUN_020C18F8
-FUN_020C18F8:
- stmdb sp!, {r4,lr}
- ldr r3, _020C194C ; =UNK_021D27CC
- ldr r0, [r3, #0x0]
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r1, [r3, #0x2c]
- cmp r1, #0x0
- movge r0, #0x1
- movge r2, r0, lsl r1
- ldr r0, [r3, #0x24]
- ldr r1, [r3, #0x28]
- movlt r2, #0x0
- mov r3, #0x0
- bl SND_StopTimer
- bl SND_GetCurrentCommandTag
- mov r4, r0
- mov r0, #0x1
- bl SND_FlushCommand
- mov r0, r4
- bl SND_WaitForCommandProc
- ldmia sp!, {r4,pc}
- .balign 4
-_020C194C: .word UNK_021D27CC
-
- arm_func_start FUN_020C1950
-FUN_020C1950: ; 0x020C1950
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r4, _020C1A3C ; =UNK_021D27CC
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- ldr r1, [r4, #0x2c]
- mov r3, #0x0
- cmp r1, #0x0
- movge r7, #0x1
- movlt r7, #0x0
- cmp r7, #0x0
- movne r0, #0x1
- movne r2, r0, lsl r1
- ldr r0, [r4, #0x24]
- ldr r1, [r4, #0x28]
- moveq r2, #0x0
- bl SND_StopTimer
- cmp r7, #0x0
- beq _020C19DC
- bl SND_GetCurrentCommandTag
- mov r5, r0
- mov r0, #0x1
- bl SND_FlushCommand
- mov r0, r5
- bl SND_WaitForCommandProc
- ldr r6, _020C1A40 ; =UNK_021D27AC
- mov r5, #0x0
-_020C19C4:
- mov r0, r6
- mov r1, r5
- mov r2, r5
- bl OS_ReceiveMessage
- cmp r0, #0x0
- bne _020C19C4
-_020C19DC:
- ldr r0, [r4, #0x28]
- cmp r0, #0x0
- beq _020C19EC
- bl FUN_020C0300
-_020C19EC:
- ldr r0, [r4, #0x20]
- cmp r0, #0x0
- beq _020C19FC
- bl FUN_020C0340
-_020C19FC:
- cmp r7, #0x0
- beq _020C1A0C
- ldr r0, [r4, #0x2c]
- bl FUN_020C029C
-_020C1A0C:
- ldr r0, [r4, #0x4]
- cmp r0, #0x1
- bne _020C1A2C
- mov r0, #0x0
- mov r1, r0
- mov r2, r0
- mov r3, r0
- bl SND_SetOutputSelector
-_020C1A2C:
- mov r0, #0x0
- str r0, [r4, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C1A3C: .word UNK_021D27CC
-_020C1A40: .word UNK_021D27AC
-
- arm_func_start FUN_020C1A44
-FUN_020C1A44: ; 0x020C1A44
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x3c
- mov r10, r3
- str r0, [sp, #0x18]
- str r2, [sp, #0x20]
- mov r2, #0x0
- str r1, [sp, #0x1c]
- mov r0, r1
- mov r1, r10
- ldr r9, [sp, #0x6c]
- ldr r8, [sp, #0x74]
- str r2, [sp, #0x2c]
- mvn r6, #0x0
- ldr r4, _020C1D90 ; =UNK_021D27CC
- bl DC_FlushRange
- ldr r0, [sp, #0x20]
- mov r1, r10
- bl DC_FlushRange
- ldr r0, [sp, #0x60]
- ldr r1, [sp, #0x70]
- cmp r0, #0x1
- moveq r7, #0x1
- ldr r0, _020C1D94 ; =0x00FFB0FF
- movne r7, #0x0
- bl _s32_div_f
- ldr r1, [sp, #0x84]
- mov r11, r0
- cmp r1, #0x0
- beq _020C1B00
- add r1, r11, #0x10
- bic r11, r1, #0x1f
- mov r2, r11, asr #0x5
- mov r0, r10
- cmp r7, #0x0
- ldr r1, [sp, #0x80]
- moveq r0, r10, lsr #0x1
- str r2, [sp, #0x34]
- bl _u32_div_f
- ldr r1, [sp, #0x34]
- mov r5, #0x20
- mul r0, r1, r0
- str r0, [sp, #0x30]
- cmp r7, #0x0
- ldr r0, [sp, #0x34]
- moveq r5, r5, lsr #0x1
- mul r0, r5, r0
- mov r5, r0
-_020C1B00:
- cmp r7, #0x0
- movne r0, #0x0
- strne r0, [sp, #0x28]
- moveq r0, #0x1
- streq r0, [sp, #0x28]
- cmp r7, #0x0
- movne r0, #0x1
- strne r0, [sp, #0x24]
- moveq r0, #0x0
- streq r0, [sp, #0x24]
- ldr r0, [sp, #0x18]
- cmp r0, #0x2
- movne r0, #0xa
- strne r0, [sp, #0x2c]
- ldr r0, [sp, #0x84]
- cmp r0, #0x0
- beq _020C1B58
- bl FUN_020C02BC
- movs r6, r0
- addmi sp, sp, #0x3c
- movmi r0, #0x0
- ldmmiia sp!, {r4-r11,pc}
-_020C1B58:
- mov r0, #0x3
- bl FUN_020C031C
- cmp r0, #0x0
- bne _020C1B84
- cmp r6, #0x0
- blt _020C1B78
- mov r0, r6
- bl FUN_020C029C
-_020C1B78:
- add sp, sp, #0x3c
- mov r0, #0x0
- ldmia sp!, {r4-r11,pc}
-_020C1B84:
- mov r0, #0xa
- bl FUN_020C0370
- cmp r0, #0x0
- bne _020C1BB8
- cmp r6, #0x0
- blt _020C1BA4
- mov r0, r6
- bl FUN_020C029C
-_020C1BA4:
- mov r0, #0x3
- bl FUN_020C0300
- add sp, sp, #0x3c
- mov r0, #0x0
- ldmia sp!, {r4-r11,pc}
-_020C1BB8:
- mov r0, #0x0
- mov r7, r10, lsr #0x2
- str r0, [sp, #0x0]
- str r7, [sp, #0x4]
- str r8, [sp, #0x8]
- str r0, [sp, #0xc]
- cmp r9, #0x0
- movne r3, #0x1
- ldr r1, [sp, #0x78]
- str r11, [sp, #0x10]
- str r1, [sp, #0x14]
- ldr r1, [sp, #0x28]
- ldr r2, [sp, #0x1c]
- moveq r3, #0x2
- mov r0, #0x1
- bl SND_SetupChannelPcm
- ldr r1, [sp, #0x64]
- str r9, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x24]
- str r0, [sp, #0x8]
- ldr r2, [sp, #0x1c]
- mov r0, #0x0
- mov r3, r7
- bl SND_SetupCapture
- mov r0, #0x0
- str r0, [sp, #0x0]
- str r7, [sp, #0x4]
- str r8, [sp, #0x8]
- str r0, [sp, #0xc]
- cmp r9, #0x0
- movne r3, #0x1
- ldr r2, [sp, #0x7c]
- str r11, [sp, #0x10]
- str r2, [sp, #0x14]
- ldr r1, [sp, #0x28]
- ldr r2, [sp, #0x20]
- moveq r3, #0x2
- mov r0, #0x3
- bl SND_SetupChannelPcm
- ldr r2, [sp, #0x64]
- str r9, [sp, #0x0]
- str r2, [sp, #0x4]
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x24]
- str r0, [sp, #0x8]
- ldr r2, [sp, #0x20]
- mov r3, r7
- mov r0, #0x1
- bl SND_SetupCapture
- cmp r6, #0x0
- blt _020C1CA8
- ldr r2, [sp, #0x30]
- ldr r3, _020C1D98 ; =FUN_020C177C
- mov r1, r2
- mov r0, r6
- add r1, r1, r5
- str r4, [sp, #0x0]
- bl SND_SetupAlarm
-_020C1CA8:
- ldr r0, [sp, #0x18]
- cmp r0, #0x1
- bne _020C1CC8
- mov r0, #0x1
- mov r2, r0
- mov r3, r0
- mov r1, #0x2
- bl SND_SetOutputSelector
-_020C1CC8:
- cmp r6, #0x0
- movge r0, #0x1
- movge r2, r0, lsl r6
- ldr r0, [sp, #0x2c]
- movlt r2, #0x0
- mov r1, #0x3
- mov r3, #0x0
- bl SND_StartTimer
- mov r0, #0x1
- str r0, [r4, #0x0]
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0x80]
- str r0, [r4, #0x4]
- mov r0, #0xa
- str r0, [r4, #0x20]
- ldr r0, [sp, #0x2c]
- str r0, [r4, #0x24]
- mov r0, #0x3
- str r0, [r4, #0x28]
- ldr r0, [sp, #0x60]
- str r6, [r4, #0x2c]
- str r0, [r4, #0x8]
- ldr r0, [sp, #0x1c]
- str r0, [r4, #0xc]
- ldr r0, [sp, #0x20]
- str r0, [r4, #0x10]
- mov r0, r10
- str r10, [r4, #0x14]
- bl _u32_div_f
- str r0, [r4, #0x18]
- mov r1, #0x0
- str r1, [r4, #0x1c]
- ldr r0, [sp, #0x80]
- ldr r1, [sp, #0x84]
- str r0, [r4, #0x30]
- ldr r0, [sp, #0x88]
- str r1, [r4, #0x34]
- str r0, [r4, #0x38]
- add r0, r4, #0x3c
- str r8, [r4, #0x50]
- bl FUN_020C3E6C
- add r0, r4, #0x3c
- mov r1, r8, lsl #0x8
- mov r2, #0x1
- bl FUN_020C3E40
- mov r0, #0x0
- str r0, [r4, #0x4c]
- mov r0, #0x1
- add sp, sp, #0x3c
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020C1D90: .word UNK_021D27CC
-_020C1D94: .word 0x00FFB0FF
-_020C1D98: .word FUN_020C177C
-
- arm_func_start FUN_020C1D9C
-FUN_020C1D9C: ; 0x020C1D9C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r5, _020C1E34 ; =UNK_021D27CC
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldr r0, [r5, #0x4]
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r5,pc}
- add r4, r5, #0x3c
- mov r0, r4
- bl FUN_020C3DF4
- ldr r0, [r5, #0x4c]
- cmp r0, #0x0
- beq _020C1DFC
- mov r0, r4
- bl FUN_020C3DDC
- cmp r0, #0x0
- beq _020C1DFC
- bl FUN_020C1950
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020C1DFC:
- mov r0, r4
- bl FUN_020C3E0C
- ldr r1, [r5, #0x50]
- mov r4, r0, asr #0x8
- cmp r4, r1
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldr r0, [r5, #0x24]
- mov r1, r4
- mov r2, #0x0
- bl SND_SetChannelVolume
- str r4, [r5, #0x50]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C1E34: .word UNK_021D27CC
-
- arm_func_start FUN_020C1E38
-FUN_020C1E38: ; 0x020C1E38
- ldr r1, _020C1E50 ; =UNK_021D27A4
- mov r2, #0x0
- ldr r0, _020C1E54 ; =UNK_021D27CC
- str r2, [r1, #0x0]
- str r2, [r0, #0x0]
- bx lr
- .balign 4
-_020C1E50: .word UNK_021D27A4
-_020C1E54: .word UNK_021D27CC
-
- arm_func_start FUN_020C1E58
-FUN_020C1E58: ; 0x020C1E58
- ldr r0, _020C1E64 ; =UNK_021D27CC
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020C1E64: .word UNK_021D27CC
-
- arm_func_start FUN_020C1E68
-FUN_020C1E68: ; 0x020C1E68
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020C1EA0 ; =UNK_021D27CC
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x4]
- cmp r0, #0x1
- addne sp, sp, #0x4
- ldmneia sp!, {pc}
- bl FUN_020C1950
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020C1EA0: .word UNK_021D27CC
-
- arm_func_start FUN_020C1EA4
-FUN_020C1EA4: ; 0x020C1EA4
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x2c
- mov r5, r0
- mov r4, r1
- mov r7, r2
- mov r6, r3
- bl FUN_020C1E68
- ldr r0, _020C1F50 ; =UNK_021D27CC
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addne sp, sp, #0x2c
- movne r0, #0x0
- ldmneia sp!, {r4-r7,pc}
- mov r1, r5
- mov r2, r4
- mov r0, #0x0
- bl MIi_CpuClear32
- mov r0, r5
- mov r1, r4
- bl DC_FlushRange
- str r7, [sp, #0x0]
- mov r2, #0x0
- str r2, [sp, #0x4]
- str r2, [sp, #0x8]
- mov r0, #0x1
- str r0, [sp, #0xc]
- str r6, [sp, #0x10]
- mov r1, #0x7f
- str r1, [sp, #0x14]
- str r2, [sp, #0x18]
- ldr r2, [sp, #0x40]
- str r1, [sp, #0x1c]
- ldr r1, [sp, #0x44]
- str r2, [sp, #0x20]
- ldr r12, [sp, #0x48]
- str r1, [sp, #0x24]
- mov r1, r5
- mov r3, r4, lsr #0x1
- add r2, r5, r4, lsr #0x1
- str r12, [sp, #0x28]
- bl FUN_020C1A44
- add sp, sp, #0x2c
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C1F50: .word UNK_021D27CC
-
- arm_func_start FUN_020C1F54
-FUN_020C1F54: ; 0x020C1F54
- stmdb sp!, {r4,lr}
- ldr r4, _020C1FA0 ; =UNK_021D27CC
- mov r2, r0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- ldmneia sp!, {r4,pc}
- cmp r2, #0x0
- bne _020C1F88
- bl FUN_020C1950
- ldmia sp!, {r4,pc}
-_020C1F88:
- add r0, r4, #0x3c
- mov r1, #0x0
- bl FUN_020C3E40
- mov r0, #0x1
- str r0, [r4, #0x4c]
- ldmia sp!, {r4,pc}
- .balign 4
-_020C1FA0: .word UNK_021D27CC
-
- arm_func_start FUN_020C1FA4
-FUN_020C1FA4: ; 0x020C1FA4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, _020C1FEC ; =UNK_021D27CC
- mov r12, r0
- ldr r0, [r3, #0x0]
- mov r2, r1
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r0, [r3, #0x4]
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {pc}
- add r0, r3, #0x3c
- mov r1, r12, lsl #0x8
- bl FUN_020C3E40
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020C1FEC: .word UNK_021D27CC
-
- arm_func_start FUN_020C1FF0
-FUN_020C1FF0: ; 0x020C1FF0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x2c
- mov r5, r0
- mov r0, #0x0
- mov r4, r1
- mov r7, r2
- mov r6, r3
- bl FUN_020C1F54
- ldr r0, _020C2098 ; =UNK_021D27CC
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addne sp, sp, #0x2c
- movne r0, #0x0
- ldmneia sp!, {r4-r7,pc}
- mov r1, r5
- mov r2, r4
- mov r0, #0x0
- bl MIi_CpuClear32
- mov r0, r5
- mov r1, r4
- bl DC_FlushRange
- str r7, [sp, #0x0]
- mov r0, #0x0
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r1, #0x1
- str r1, [sp, #0xc]
- ldr r1, [sp, #0x40]
- str r6, [sp, #0x10]
- str r1, [sp, #0x14]
- str r0, [sp, #0x18]
- mov r1, #0x7f
- str r1, [sp, #0x1c]
- str r0, [sp, #0x20]
- str r0, [sp, #0x24]
- mov r1, r5
- mov r3, r4, lsr #0x1
- add r2, r5, r4, lsr #0x1
- str r0, [sp, #0x28]
- bl FUN_020C1A44
- add sp, sp, #0x2c
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C2098: .word UNK_021D27CC
-
- arm_func_start SDATi_SymbDtor
-SDATi_SymbDtor: ; 0x020C209C
- mov r0, #0x0
- str r0, [r2, #0x88]
- bx lr
-
- arm_func_start SDATi_FatDtor
-SDATi_FatDtor: ; 0x020C20A8
- mov r0, #0x0
- str r0, [r2, #0x84]
- bx lr
-
- arm_func_start SDATi_InfoDtor
-SDATi_InfoDtor: ; 0x020C20B4
- mov r0, #0x0
- str r0, [r2, #0x8c]
- bx lr
-
- arm_func_start FUN_020C20C0
-FUN_020C20C0: ; 0x020C20C0
- ldr r2, _020C20D8 ; =UNK_021D28C0
- ldr r2, [r2, #0x0]
- ldr r2, [r2, #0x84]
- add r0, r2, r0, lsl #0x4
- str r1, [r0, #0x14]
- bx lr
- .balign 4
-_020C20D8: .word UNK_021D28C0
-
- arm_func_start FUN_020C20DC
-FUN_020C20DC:
- ldr r1, _020C2100 ; =UNK_021D28C0
- ldr r1, [r1, #0x0]
- ldr r2, [r1, #0x84]
- ldr r1, [r2, #0x8]
- cmp r0, r1
- movcs r0, #0x0
- addcc r0, r2, r0, lsl #0x4
- ldrcc r0, [r0, #0x14]
- bx lr
- .balign 4
-_020C2100: .word UNK_021D28C0
-
- arm_func_start FUN_020C2104
-FUN_020C2104:
- stmdb sp!, {r4-r6,lr}
- ldr r4, _020C2178 ; =UNK_021D28C0
- mov r5, r2
- ldr r4, [r4, #0x0]
- mov r6, r1
- ldr r2, [r4, #0x84]
- ldr r1, [r2, #0x8]
- cmp r0, r1
- mvncs r0, #0x0
- ldmcsia sp!, {r4-r6,pc}
- add r1, r2, #0xc
- add r1, r1, r0, lsl #0x4
- ldr r0, [r1, #0x4]
- ldr r1, [r1, #0x0]
- sub r0, r0, r3
- cmp r5, r0
- movhi r5, r0
- add r0, r4, #0x34
- add r1, r1, r3
- mov r2, #0x0
- bl FS_SeekFile
- cmp r0, #0x0
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- mov r1, r6
- mov r2, r5
- add r0, r4, #0x34
- bl FS_ReadFile
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C2178: .word UNK_021D28C0
-
- arm_func_start FUN_020C217C
-FUN_020C217C: ; 0x020C217C
- ldr r1, _020C21A0 ; =UNK_021D28C0
- ldr r1, [r1, #0x0]
- ldr r2, [r1, #0x84]
- ldr r1, [r2, #0x8]
- cmp r0, r1
- movcs r0, #0x0
- addcc r0, r2, r0, lsl #0x4
- ldrcc r0, [r0, #0x10]
- bx lr
- .balign 4
-_020C21A0: .word UNK_021D28C0
-
- arm_func_start FUN_020C21A4
-FUN_020C21A4: ; 0x020C21A4
- ldr r1, _020C2204 ; =UNK_021D28C0
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0x8c]
- ldr r1, [r2, #0x1c]
- cmp r1, #0x0
- moveq r2, #0x0
- addne r2, r2, r1
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r1, [r2, #0x0]
- cmp r0, r1
- movcs r0, #0x0
- bxcs lr
- add r0, r2, r0, lsl #0x2
- ldr r1, [r0, #0x4]
- ldr r0, [r3, #0x8c]
- cmp r1, #0x0
- moveq r0, #0x0
- addne r0, r0, r1
- bx lr
- .balign 4
-_020C2204: .word UNK_021D28C0
-
- arm_func_start FUN_020C2208
-FUN_020C2208: ; 0x020C2208
- ldr r1, _020C2268 ; =UNK_021D28C0
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0x8c]
- ldr r1, [r2, #0x18]
- cmp r1, #0x0
- moveq r2, #0x0
- addne r2, r2, r1
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r1, [r2, #0x0]
- cmp r0, r1
- movcs r0, #0x0
- bxcs lr
- add r0, r2, r0, lsl #0x2
- ldr r1, [r0, #0x4]
- ldr r0, [r3, #0x8c]
- cmp r1, #0x0
- moveq r0, #0x0
- addne r0, r0, r1
- bx lr
- .balign 4
-_020C2268: .word UNK_021D28C0
-
- arm_func_start FUN_020C226C
-FUN_020C226C:
- ldr r1, _020C22CC ; =UNK_021D28C0
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0x8c]
- ldr r1, [r2, #0x14]
- cmp r1, #0x0
- moveq r2, #0x0
- addne r2, r2, r1
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r1, [r2, #0x0]
- cmp r0, r1
- movcs r0, #0x0
- bxcs lr
- add r0, r2, r0, lsl #0x2
- ldr r1, [r0, #0x4]
- ldr r0, [r3, #0x8c]
- cmp r1, #0x0
- moveq r0, #0x0
- addne r0, r0, r1
- bx lr
- .balign 4
-_020C22CC: .word UNK_021D28C0
-
- arm_func_start FUN_020C22D0
-FUN_020C22D0: ; 0x020C22D0
- ldr r1, _020C2330 ; =UNK_021D28C0
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0x8c]
- ldr r1, [r2, #0x10]
- cmp r1, #0x0
- moveq r2, #0x0
- addne r2, r2, r1
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r1, [r2, #0x0]
- cmp r0, r1
- movcs r0, #0x0
- bxcs lr
- add r0, r2, r0, lsl #0x2
- ldr r1, [r0, #0x4]
- ldr r0, [r3, #0x8c]
- cmp r1, #0x0
- moveq r0, #0x0
- addne r0, r0, r1
- bx lr
- .balign 4
-_020C2330: .word UNK_021D28C0
-
- arm_func_start FUN_020C2334
-FUN_020C2334:
- ldr r1, _020C2394 ; =UNK_021D28C0
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0x8c]
- ldr r1, [r2, #0xc]
- cmp r1, #0x0
- moveq r2, #0x0
- addne r2, r2, r1
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r1, [r2, #0x0]
- cmp r0, r1
- movcs r0, #0x0
- bxcs lr
- add r0, r2, r0, lsl #0x2
- ldr r1, [r0, #0x4]
- ldr r0, [r3, #0x8c]
- cmp r1, #0x0
- moveq r0, #0x0
- addne r0, r0, r1
- bx lr
- .balign 4
-_020C2394: .word UNK_021D28C0
-
- arm_func_start FUN_020C2398
-FUN_020C2398:
- ldr r1, _020C23F8 ; =UNK_021D28C0
- ldr r3, [r1, #0x0]
- ldr r2, [r3, #0x8c]
- ldr r1, [r2, #0x8]
- cmp r1, #0x0
- moveq r2, #0x0
- addne r2, r2, r1
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r1, [r2, #0x0]
- cmp r0, r1
- movcs r0, #0x0
- bxcs lr
- add r0, r2, r0, lsl #0x2
- ldr r1, [r0, #0x4]
- ldr r0, [r3, #0x8c]
- cmp r1, #0x0
- moveq r0, #0x0
- addne r0, r0, r1
- bx lr
- .balign 4
-_020C23F8: .word UNK_021D28C0
-
- arm_func_start FUN_020C23FC
-FUN_020C23FC: ; 0x020C23FC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl FUN_020C2398
- cmp r0, #0x0
- moveq r0, #0x0
- addne r0, r0, #0x4
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C241C
-FUN_020C241C: ; 0x020C241C
- ldr r0, _020C2428 ; =UNK_021D28C0
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020C2428: .word UNK_021D28C0
-
- arm_func_start FUN_020C242C
-FUN_020C242C: ; 0x020C242C
- ldr r1, _020C2440 ; =UNK_021D28C0
- ldr r2, [r1, #0x0]
- str r0, [r1, #0x0]
- mov r0, r2
- bx lr
- .balign 4
-_020C2440: .word UNK_021D28C0
-
- arm_func_start FUN_020C2444
-FUN_020C2444: ; 0x020C2444
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- mov r0, r4
- mov r1, r5
- mov r2, #0x30
- bl MIi_CpuCopy32
- ldr r0, [r5, #0x18]
- mov r12, #0x0
- cmp r0, #0x0
- moveq r0, #0x0
- addne r0, r4, r0
- str r0, [r5, #0x8c]
- ldr r0, [r5, #0x20]
- cmp r0, #0x0
- moveq r0, #0x0
- addne r0, r4, r0
- str r0, [r5, #0x84]
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- moveq r0, #0x0
- addne r0, r4, r0
- str r0, [r5, #0x88]
- ldr r2, [r5, #0x84]
- ldr r0, [r2, #0x8]
- cmp r0, #0x0
- bls _020C24F0
- mov r3, r12
- mov r1, r12
-_020C24BC:
- add r2, r2, #0xc
- ldr r0, [r2, r3]
- add r2, r2, r3
- cmp r0, #0x0
- moveq r0, r1
- addne r0, r4, r0
- str r0, [r2, #0x8]
- ldr r2, [r5, #0x84]
- add r12, r12, #0x1
- ldr r0, [r2, #0x8]
- add r3, r3, #0x10
- cmp r12, r0
- blo _020C24BC
-_020C24F0:
- mov r1, #0x0
- ldr r0, _020C2508 ; =UNK_021D28C0
- str r1, [r5, #0x30]
- str r5, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C2508: .word UNK_021D28C0
-
- arm_func_start SDATi_ReadHeaders
-SDATi_ReadHeaders:
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- mov r6, r0
- mov r5, r1
- mov r1, #0x0
- mov r4, r2
- mov r2, r1
- add r0, r6, #0x34
- bl FS_SeekFile
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- mov r1, r6
- add r0, r6, #0x34
- mov r2, #0x30
- bl FS_ReadFile
- cmp r0, #0x30
- addne sp, sp, #0x8
- movne r0, #0x0
- ldmneia sp!, {r4-r6,pc}
- cmp r5, #0x0
- beq _020C26E0
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldr r1, [r6, #0x1c]
- ldr r2, _020C26EC ; =SDATi_InfoDtor
- mov r0, r5
- mov r3, r6
- bl SDATi_AllocAndInitChunk
- str r0, [r6, #0x8c]
- ldr r0, [r6, #0x8c]
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x18]
- add r0, r6, #0x34
- mov r2, #0x0
- bl FS_SeekFile
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x8c]
- ldr r2, [r6, #0x1c]
- add r0, r6, #0x34
- bl FS_ReadFile
- ldr r1, [r6, #0x1c]
- cmp r0, r1
- addne sp, sp, #0x8
- movne r0, #0x0
- ldmneia sp!, {r4-r6,pc}
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldr r1, [r6, #0x24]
- ldr r2, _020C26F0 ; =SDATi_FatDtor
- mov r0, r5
- mov r3, r6
- bl SDATi_AllocAndInitChunk
- str r0, [r6, #0x84]
- ldr r0, [r6, #0x84]
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x20]
- add r0, r6, #0x34
- mov r2, #0x0
- bl FS_SeekFile
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x84]
- ldr r2, [r6, #0x24]
- add r0, r6, #0x34
- bl FS_ReadFile
- ldr r1, [r6, #0x24]
- cmp r0, r1
- addne sp, sp, #0x8
- movne r0, #0x0
- ldmneia sp!, {r4-r6,pc}
- cmp r4, #0x0
- beq _020C26E0
- ldr r1, [r6, #0x14]
- cmp r1, #0x0
- beq _020C26E0
- mov r4, #0x0
- ldr r2, _020C26F4 ; =SDATi_SymbDtor
- mov r0, r5
- mov r3, r6
- str r4, [sp, #0x0]
- bl SDATi_AllocAndInitChunk
- str r0, [r6, #0x88]
- ldr r0, [r6, #0x88]
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, r4
- ldmeqia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x10]
- add r0, r6, #0x34
- mov r2, r4
- bl FS_SeekFile
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, r4
- ldmeqia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x88]
- ldr r2, [r6, #0x14]
- add r0, r6, #0x34
- bl FS_ReadFile
- ldr r1, [r6, #0x14]
- cmp r0, r1
- addne sp, sp, #0x8
- movne r0, r4
- ldmneia sp!, {r4-r6,pc}
-_020C26E0:
- mov r0, #0x1
- add sp, sp, #0x8
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C26EC: .word SDATi_InfoDtor
-_020C26F0: .word SDATi_FatDtor
-_020C26F4: .word SDATi_SymbDtor
-
- arm_func_start SDAT_Open
-SDAT_Open: ; 0x020C26F8
- ; r0: &sSoundDataBuffer
- ; r1: char* filename
- ; r2: (&sSoundDataBuffer)->unk_0090
- ; r3: 0
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r12, #0x0
- str r12, [r6, #0x8c]
- str r12, [r6, #0x84]
- add r0, r6, #0x7c
- mov r5, r2
- mov r4, r3
- str r12, [r6, #0x88]
- bl FS_ConvertPathToFileID
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- add r0, r6, #0x34
- bl FS_InitFile
- add r1, r6, #0x7c
- add r0, r6, #0x34
- ldmia r1, {r1-r2}
- bl FS_OpenFileFast
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- mov r3, #0x1
- mov r0, r6
- mov r1, r5
- mov r2, r4
- str r3, [r6, #0x30]
- bl SDATi_ReadHeaders
- cmp r0, #0x0
- ldrne r0, _020C2770 ; =UNK_021D28C0
- strne r6, [r0, #0x0]
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020C2770: .word UNK_021D28C0
-
- arm_func_start FUN_020C2774
-FUN_020C2774: ; 0x020C2774
- stmdb sp!, {r4,lr}
- bl SND_GetCurrentCommandTag
- mov r4, r0
- mov r0, #0x1
- bl SND_FlushCommand
- mov r0, r4
- bl SND_WaitForCommandProc
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C2794
-FUN_020C2794:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r0, [r5, #0x0]
- mov r1, #0x14
- mov r2, #0x4
- bl FUN_020AE638
- movs r4, r0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r5,pc}
- bl FUN_020C2818
- mov r1, r4
- add r0, r5, #0x4
- bl FUN_020ADBE8
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C27DC
-FUN_020C27DC:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- add r0, r5, #0x4
- mov r1, #0xc
- bl FUN_020ADC74
- mov r0, r5
- str r4, [r5, #0x0]
- bl FUN_020C2794
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C2818
-FUN_020C2818: ; 0x020C2818
- ldr ip, _020C2824 ; =FUN_020ADC74
- mov r1, #0x0
- bx r12
- .balign 4
-_020C2824: .word FUN_020ADC74
-
- arm_func_start FUN_020C2828
-FUN_020C2828: ; 0x020C2828
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r7, #0x0
- movs r9, r1
- mov r10, r0
- mov r6, r7
- bne _020C2850
- bl FUN_020C29C0
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-_020C2850:
- ldrh r0, [r10, #0xc]
- cmp r9, r0
- bge _020C28D8
- mov r11, r7
- add r5, r10, #0x4
- mov r4, #0x1
-_020C2868:
- mov r0, r5
- mov r1, r11
- bl FUN_020ADA84
- mov r1, r7
- mov r8, r0
- bl FUN_020ADA84
- movs r7, r0
- beq _020C28C0
-_020C2888:
- ldr r12, [r7, #0xc]
- cmp r12, #0x0
- beq _020C28AC
- ldr r1, [r7, #0x8]
- ldr r2, [r7, #0x10]
- ldr r3, [r7, #0x14]
- add r0, r7, #0x20
- blx r12
- mov r6, r4
-_020C28AC:
- mov r0, r8
- mov r1, r7
- bl FUN_020ADA84
- movs r7, r0
- bne _020C2888
-_020C28C0:
- mov r0, r5
- mov r1, r8
- bl FUN_020ADAB0
- ldrh r0, [r10, #0xc]
- cmp r9, r0
- blt _020C2868
-_020C28D8:
- ldr r0, [r10, #0x0]
- mov r1, r9
- bl FUN_020AE554
- cmp r6, #0x0
- beq _020C28F0
- bl FUN_020C2774
-_020C28F0:
- ldrh r1, [r10, #0xc]
- ldr r0, [r10, #0x0]
- bl FUN_020AE5B0
- mov r0, r10
- bl FUN_020C2794
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020C290C
-FUN_020C290C: ; 0x020C290C
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldrh r1, [r4, #0xc]
- ldr r0, [r4, #0x0]
- bl FUN_020AE5B0
- cmp r0, #0x0
- mvneq r0, #0x0
- ldmeqia sp!, {r4,pc}
- mov r0, r4
- bl FUN_020C2794
- cmp r0, #0x0
- ldrneh r0, [r4, #0xc]
- subne r0, r0, #0x1
- ldmneia sp!, {r4,pc}
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl FUN_020AE554
- mvn r0, #0x0
- ldmia sp!, {r4,pc}
-
- arm_func_start SDATi_AllocAndInitChunk
-SDATi_AllocAndInitChunk: ; 0x020C2958
- stmdb sp!, {r4-r8,lr}
- mov r7, r1
- mov r8, r0
- add r0, r7, #0x1f
- bic r1, r0, #0x1f
- mov r6, r2
- ldr r0, [r8, #0x0]
- add r1, r1, #0x20
- mov r2, #0x20
- mov r5, r3
- bl FUN_020AE638 // some allocator?
- movs r4, r0
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- add r0, r8, #0x4
- mov r1, #0x0
- bl FUN_020ADA84
- str r7, [r4, #0x8]
- str r6, [r4, #0xc]
- ldr r2, [sp, #0x18]
- str r5, [r4, #0x10]
- mov r1, r4
- str r2, [r4, #0x14]
- bl FUN_020ADBE8
- add r0, r4, #0x20
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020C29C0
-FUN_020C29C0:
- stmdb sp!, {r4-r10,lr}
- mov r8, r0
- mov r5, #0x0
- mov r1, r5
- add r0, r8, #0x4
- bl FUN_020ADA84
- movs r7, r0
- beq _020C2A58
- add r9, r8, #0x4
- mov r10, #0x1
- mov r4, r5
-_020C29EC:
- mov r0, r7
- mov r1, r4
- bl FUN_020ADA84
- movs r6, r0
- beq _020C2A38
-_020C2A00:
- ldr r12, [r6, #0xc]
- cmp r12, #0x0
- beq _020C2A24
- ldr r1, [r6, #0x8]
- ldr r2, [r6, #0x10]
- ldr r3, [r6, #0x14]
- add r0, r6, #0x20
- blx r12
- mov r5, r10
-_020C2A24:
- mov r0, r7
- mov r1, r6
- bl FUN_020ADA84
- movs r6, r0
- bne _020C2A00
-_020C2A38:
- mov r0, r9
- mov r1, r7
- bl FUN_020ADAB0
- mov r0, r9
- mov r1, r4
- bl FUN_020ADA84
- movs r7, r0
- bne _020C29EC
-_020C2A58:
- ldr r0, [r8, #0x0]
- mov r1, #0x3
- bl FUN_020AE600
- cmp r5, #0x0
- beq _020C2A70
- bl FUN_020C2774
-_020C2A70:
- mov r0, r8
- bl FUN_020C2794
- ldmia sp!, {r4-r10,pc}
-
- arm_func_start FUN_020C2A7C
-FUN_020C2A7C: ; 0x020C2A7C
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020C29C0
- ldr r0, [r4, #0x0]
- bl thunk_FUN_020adc8c_2
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C2A94
-FUN_020C2A94:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- add r2, r0, #0x3
- add r0, r0, r1
- bic r5, r2, #0x3
- cmp r5, r0
- addhi sp, sp, #0x4
- movhi r0, #0x0
- ldmhiia sp!, {r4-r5,pc}
- sub r1, r0, r5
- cmp r1, #0x10
- addcc sp, sp, #0x4
- movcc r0, #0x0
- ldmccia sp!, {r4-r5,pc}
- add r0, r5, #0x10
- sub r1, r1, #0x10
- mov r2, #0x0
- bl FUN_020AE684
- movs r4, r0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r5,pc}
- mov r0, r5
- mov r1, r4
- bl FUN_020C27DC
- cmp r0, #0x0
- addne sp, sp, #0x4
- movne r0, r5
- ldmneia sp!, {r4-r5,pc}
- mov r0, r4
- bl thunk_FUN_020adc8c_2
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C2B1C
-FUN_020C2B1C:
- stmdb sp!, {r4-r10,lr}
- sub sp, sp, #0x20
- mov r8, r0
- add r0, sp, #0x8
- mov r7, r1
- mov r6, r2
- mov r5, r3
- ldr r4, [sp, #0x40]
- bl SND_GetFirstInstDataPos
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- str r1, [sp, #0x0]
- str r0, [sp, #0x4]
- cmp r7, #0x0
- add r2, sp, #0x0
- addeq sp, sp, #0x20
- moveq r0, #0x0
- ldmeqia sp!, {r4-r10,pc}
- add r1, sp, #0x10
- mov r0, r7
- bl SND_GetNextInstData
- cmp r0, #0x0
- beq _020C2BD4
- add r10, sp, #0x10
- add r9, sp, #0x0
-_020C2B80:
- ldrb r0, [sp, #0x10]
- cmp r0, #0x1
- bne _020C2BBC
- ldrh r0, [sp, #0x14]
- cmp r6, r0
- bne _020C2BBC
- ldrh r1, [sp, #0x12]
- mov r0, r8
- mov r2, r5
- mov r3, r4
- bl FUN_020C2BE0
- cmp r0, #0x0
- addeq sp, sp, #0x20
- moveq r0, #0x0
- ldmeqia sp!, {r4-r10,pc}
-_020C2BBC:
- mov r0, r7
- mov r1, r10
- mov r2, r9
- bl SND_GetNextInstData
- cmp r0, #0x0
- bne _020C2B80
-_020C2BD4:
- mov r0, #0x1
- add sp, sp, #0x20
- ldmia sp!, {r4-r10,pc}
-
- arm_func_start FUN_020C2BE0
-FUN_020C2BE0:
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl SND_GetWaveDataAddress
- cmp r0, #0x0
- addne sp, sp, #0x4
- movne r0, #0x1
- ldmneia sp!, {r4-r9,pc}
- mov r0, r7
- bl SND_GetWaveDataCount
- ldr r1, [r7, #0x38]
- sub r0, r0, #0x1
- add r1, r1, r6
- add r1, r7, r1, lsl #0x2
- cmp r6, r0
- ldrcc r0, [r1, #0x40]
- ldr r8, [r1, #0x3c]
- ldrcs r0, [r7, #0x8]
- cmp r4, #0x0
- sub r9, r0, r8
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9,pc}
- ldr r2, _020C2CBC ; =FUN_020C2CC0
- mov r0, r4
- mov r3, r7
- add r1, r9, #0x20
- str r6, [sp, #0x0]
- bl SDATi_AllocAndInitChunk
- movs r4, r0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9,pc}
- mov r0, r5
- mov r1, r4
- mov r2, r9
- mov r3, r8
- bl FUN_020C2104
- cmp r9, r0
- addne sp, sp, #0x4
- movne r0, #0x0
- ldmneia sp!, {r4-r9,pc}
- mov r0, r4
- mov r1, r9
- bl DC_StoreRange
- mov r0, r7
- mov r1, r6
- mov r2, r4
- bl SND_SetWaveDataAddress
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020C2CBC: .word FUN_020C2CC0
-
- arm_func_start FUN_020C2CC0
-FUN_020C2CC0: ; 0x020C2CC0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r2
- mov r7, r0
- mov r4, r3
- mov r6, r1
- mov r0, r5
- mov r1, r4
- bl SND_GetWaveDataAddress
- cmp r7, r0
- bne _020C2CFC
- mov r0, r5
- mov r1, r4
- mov r2, #0x0
- bl SND_SetWaveDataAddress
-_020C2CFC:
- mov r0, r7
- add r1, r7, r6
- bl SND_InvalidateWaveData
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020C2D10
-FUN_020C2D10: ; 0x020C2D10
- stmdb sp!, {r4,lr}
- mov r1, r2
- mov r4, r0
- mov r2, r3
- bl FUN_020C2DD0
- mov r0, r4
- bl SND_DestroyWaveArc
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C2D30
-FUN_020C2D30: ; 0x020C2D30
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r1, r2
- mov r5, r0
- mov r2, r3
- bl FUN_020C2DD0
- mov r0, r5
- add r1, r5, r4
- bl SND_InvalidateWaveData
- mov r0, r5
- bl SND_DestroyWaveArc
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C2D68
-FUN_020C2D68: ; 0x020C2D68
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r1, r2
- mov r5, r0
- mov r2, r3
- bl FUN_020C2DD0
- mov r0, r5
- add r1, r5, r4
- bl SND_InvalidateBankData
- mov r0, r5
- bl SND_DestroyBank
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C2DA0
-FUN_020C2DA0: ; 0x020C2DA0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r1, r2
- mov r5, r0
- mov r2, r3
- bl FUN_020C2DD0
- mov r0, r5
- add r1, r5, r4
- bl SND_InvalidateSeqData
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C2DD0
-FUN_020C2DD0: ; 0x020C2DD0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- movs r5, r1
- mov r7, r0
- mov r6, r2
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- bl OS_DisableInterrupts
- mov r4, r0
- mov r0, r5
- bl FUN_020C242C
- mov r5, r0
- mov r0, r6
- bl FUN_020C20DC
- cmp r7, r0
- bne _020C2E1C
- mov r0, r6
- mov r1, #0x0
- bl FUN_020C20C0
-_020C2E1C:
- mov r0, r5
- bl FUN_020C242C
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020C2E34
-FUN_020C2E34: ; 0x020C2E34
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r9, r0
- mov r8, r1
- mov r7, r2
- bl FUN_020C20DC
- movs r6, r0
- bne _020C2F40
- ldr r1, _020C2F4C ; =UNK_021D28C4
- mov r0, r9
- mov r2, #0x3c
- mov r3, #0x0
- bl FUN_020C2104
- cmp r0, #0x3c
- addne sp, sp, #0x4
- movne r0, #0x0
- ldmneia sp!, {r4-r9,pc}
- ldr r0, _020C2F4C ; =UNK_021D28C4
- cmp r8, #0x0
- ldr r0, [r0, #0x38]
- addeq sp, sp, #0x4
- mov r4, r0, lsl #0x2
- mov r0, r4, lsl #0x1
- add r5, r0, #0x3c
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9,pc}
- cmp r7, #0x0
- moveq r3, #0x0
- beq _020C2EB0
- bl FUN_020C241C
- mov r3, r0
-_020C2EB0:
- ldr r2, _020C2F50 ; =FUN_020C2D10
- mov r0, r8
- add r1, r5, #0x20
- str r9, [sp, #0x0]
- bl SDATi_AllocAndInitChunk
- movs r6, r0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9,pc}
- mov r0, r9
- mov r1, r6
- add r2, r4, #0x3c
- mov r3, #0x0
- bl FUN_020C2104
- add r1, r4, #0x3c
- cmp r0, r1
- addne sp, sp, #0x4
- movne r0, #0x0
- ldmneia sp!, {r4-r9,pc}
- ldr r1, [r6, #0x38]
- add r0, r6, #0x3c
- mov r2, r4
- add r1, r0, r1, lsl #0x2
- bl MI_CpuCopy8
- mov r2, r4
- add r0, r6, #0x3c
- mov r1, #0x0
- bl MI_CpuFill8
- mov r0, r6
- mov r1, r5
- bl DC_StoreRange
- cmp r7, #0x0
- beq _020C2F40
- mov r0, r9
- mov r1, r6
- bl FUN_020C20C0
-_020C2F40:
- mov r0, r6
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020C2F4C: .word UNK_021D28C4
-_020C2F50: .word FUN_020C2D10
-
- arm_func_start FUN_020C2F54
-FUN_020C2F54:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- bl FUN_020C20DC
- movs r4, r0
- bne _020C2FBC
- cmp r5, #0x0
- moveq r2, #0x0
- beq _020C2F88
- bl FUN_020C241C
- mov r2, r0
-_020C2F88:
- ldr r1, _020C2FC8 ; =FUN_020C2D30
- mov r0, r7
- mov r3, r7
- str r6, [sp, #0x0]
- bl FUN_020C3134
- mov r4, r0
- cmp r5, #0x0
- beq _020C2FBC
- cmp r4, #0x0
- beq _020C2FBC
- mov r0, r7
- mov r1, r4
- bl FUN_020C20C0
-_020C2FBC:
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C2FC8: .word FUN_020C2D30
-
- arm_func_start FUN_020C2FCC
-FUN_020C2FCC: ; 0x020C2FCC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- bl FUN_020C20DC
- movs r4, r0
- bne _020C3034
- cmp r5, #0x0
- moveq r2, #0x0
- beq _020C3000
- bl FUN_020C241C
- mov r2, r0
-_020C3000:
- ldr r1, _020C3040 ; =FUN_020C2D68
- mov r0, r7
- mov r3, r7
- str r6, [sp, #0x0]
- bl FUN_020C3134
- mov r4, r0
- cmp r5, #0x0
- beq _020C3034
- cmp r4, #0x0
- beq _020C3034
- mov r0, r7
- mov r1, r4
- bl FUN_020C20C0
-_020C3034:
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C3040: .word FUN_020C2D68
-
- arm_func_start FUN_020C3044
-FUN_020C3044:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- bl FUN_020C20DC
- movs r4, r0
- bne _020C30AC
- cmp r5, #0x0
- moveq r2, #0x0
- beq _020C3078
- bl FUN_020C241C
- mov r2, r0
-_020C3078:
- ldr r1, _020C30B8 ; =FUN_020C2DA0
- mov r0, r7
- mov r3, r7
- str r6, [sp, #0x0]
- bl FUN_020C3134
- mov r4, r0
- cmp r5, #0x0
- beq _020C30AC
- cmp r4, #0x0
- beq _020C30AC
- mov r0, r7
- mov r1, r4
- bl FUN_020C20C0
-_020C30AC:
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C30B8: .word FUN_020C2DA0
-
- arm_func_start FUN_020C30BC
-FUN_020C30BC:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- bl FUN_020C20DC
- movs r4, r0
- bne _020C3124
- cmp r5, #0x0
- moveq r2, #0x0
- beq _020C30F0
- bl FUN_020C241C
- mov r2, r0
-_020C30F0:
- ldr r1, _020C3130 ; =FUN_020C2DA0
- mov r0, r7
- mov r3, r7
- str r6, [sp, #0x0]
- bl FUN_020C3134
- mov r4, r0
- cmp r5, #0x0
- beq _020C3124
- cmp r4, #0x0
- beq _020C3124
- mov r0, r7
- mov r1, r4
- bl FUN_020C20C0
-_020C3124:
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C3130: .word FUN_020C2DA0
-
- arm_func_start FUN_020C3134
-FUN_020C3134: ; 0x020C3134
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x8
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r4, r3
- bl FUN_020C217C
- movs r5, r0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- ldr r0, [sp, #0x20]
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- mov r2, r7
- mov r3, r6
- add r1, r5, #0x20
- str r4, [sp, #0x0]
- bl SDATi_AllocAndInitChunk
- movs r4, r0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- mov r0, r8
- mov r1, r4
- mov r2, r5
- mov r3, #0x0
- bl FUN_020C2104
- cmp r5, r0
- addne sp, sp, #0x8
- movne r0, #0x0
- ldmneia sp!, {r4-r8,pc}
- mov r0, r4
- mov r1, r5
- bl DC_StoreRange
- mov r0, r4
- add sp, sp, #0x8
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020C31D4
-FUN_020C31D4:
- stmdb sp!, {r4-r6,lr}
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl FUN_020C226C
- cmp r0, #0x0
- moveq r0, #0x5
- ldmeqia sp!, {r4-r6,pc}
- ands r1, r6, #0x4
- beq _020C324C
- ldrb r1, [r0, #0x3]
- ands r1, r1, #0x1
- beq _020C3224
- ldr r0, [r0, #0x0]
- mov r1, r5
- mov r0, r0, lsl #0x8
- mov r2, r4
- mov r0, r0, lsr #0x8
- bl FUN_020C2E34
- b _020C323C
-_020C3224:
- ldr r0, [r0, #0x0]
- mov r1, r5
- mov r0, r0, lsl #0x8
- mov r2, r4
- mov r0, r0, lsr #0x8
- bl FUN_020C2F54
-_020C323C:
- cmp r0, #0x0
- bne _020C325C
- mov r0, #0x9
- ldmia sp!, {r4-r6,pc}
-_020C324C:
- ldr r0, [r0, #0x0]
- mov r0, r0, lsl #0x8
- mov r0, r0, lsr #0x8
- bl FUN_020C20DC
-_020C325C:
- ldr r1, [sp, #0x10]
- cmp r1, #0x0
- strne r0, [r1, #0x0]
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020C3270
-FUN_020C3270:
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- mov r10, r1
- mov r9, r2
- mov r11, r3
- bl FUN_020C22D0
- movs r8, r0
- addeq sp, sp, #0xc
- moveq r0, #0x4
- ldmeqia sp!, {r4-r11,pc}
- ands r0, r10, #0x2
- beq _020C32C4
- ldr r0, [r8, #0x0]
- mov r1, r9
- mov r2, r11
- bl FUN_020C2FCC
- movs r7, r0
- bne _020C32D0
- add sp, sp, #0xc
- mov r0, #0x8
- ldmia sp!, {r4-r11,pc}
-_020C32C4:
- ldr r0, [r8, #0x0]
- bl FUN_020C20DC
- mov r7, r0
-_020C32D0:
- and r5, r10, #0x4
- mov r6, #0x0
-_020C32D8:
- add r0, r8, r6, lsl #0x1
- ldrh r0, [r0, #0x4]
- ldr r1, _020C33B4 ; =0x0000FFFF
- cmp r0, r1
- beq _020C3390
- bl FUN_020C226C
- movs r4, r0
- addeq sp, sp, #0xc
- moveq r0, #0x5
- ldmeqia sp!, {r4-r11,pc}
- add r0, sp, #0x4
- str r0, [sp, #0x0]
- add r0, r8, r6, lsl #0x1
- ldrh r0, [r0, #0x4]
- mov r1, r10
- mov r2, r9
- mov r3, r11
- bl FUN_020C31D4
- cmp r0, #0x0
- addne sp, sp, #0xc
- ldmneia sp!, {r4-r11,pc}
- ldrb r0, [r4, #0x3]
- ands r0, r0, #0x1
- beq _020C3370
- cmp r5, #0x0
- beq _020C3370
- str r9, [sp, #0x0]
- ldr r1, [r4, #0x0]
- ldr r0, [sp, #0x4]
- mov r3, r1, lsl #0x8
- mov r1, r7
- mov r2, r6
- mov r3, r3, lsr #0x8
- bl FUN_020C2B1C
- cmp r0, #0x0
- addeq sp, sp, #0xc
- moveq r0, #0x9
- ldmeqia sp!, {r4-r11,pc}
-_020C3370:
- cmp r7, #0x0
- beq _020C3390
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020C3390
- mov r0, r7
- mov r1, r6
- bl SND_AssignWaveArc
-_020C3390:
- add r6, r6, #0x1
- cmp r6, #0x4
- blt _020C32D8
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- strne r7, [r0, #0x0]
- mov r0, #0x0
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020C33B4: .word 0x0000FFFF
-
- arm_func_start FUN_020C33B8
-FUN_020C33B8:
- stmdb sp!, {r4-r6,lr}
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl FUN_020C2334
- cmp r0, #0x0
- moveq r0, #0x3
- ldmeqia sp!, {r4-r6,pc}
- ands r1, r6, #0x8
- beq _020C3400
- ldr r0, [r0, #0x0]
- mov r1, r5
- mov r2, r4
- bl FUN_020C3044
- cmp r0, #0x0
- bne _020C3408
- mov r0, #0x7
- ldmia sp!, {r4-r6,pc}
-_020C3400:
- ldr r0, [r0, #0x0]
- bl FUN_020C20DC
-_020C3408:
- ldr r1, [sp, #0x10]
- cmp r1, #0x0
- strne r0, [r1, #0x0]
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020C341C
-FUN_020C341C:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r1
- mov r6, r2
- mov r5, r3
- bl FUN_020C2398
- movs r4, r0
- addeq sp, sp, #0x4
- moveq r0, #0x2
- ldmeqia sp!, {r4-r7,pc}
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldrh r0, [r4, #0x4]
- mov r1, r7
- mov r2, r6
- mov r3, r5
- bl FUN_020C3270
- cmp r0, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r7,pc}
- ands r0, r7, #0x1
- beq _020C3498
- ldr r0, [r4, #0x0]
- mov r1, r6
- mov r2, r5
- bl FUN_020C30BC
- cmp r0, #0x0
- bne _020C34A0
- add sp, sp, #0x4
- mov r0, #0x6
- ldmia sp!, {r4-r7,pc}
-_020C3498:
- ldr r0, [r4, #0x0]
- bl FUN_020C20DC
-_020C34A0:
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- strne r0, [r1, #0x0]
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020C34B8
-FUN_020C34B8:
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- mov r9, r1
- bl FUN_020C21A4
- movs r8, r0
- addeq sp, sp, #0xc
- moveq r0, #0x1
- ldmeqia sp!, {r4-r11,pc}
- ldr r0, [r8, #0x0]
- mov r7, #0x0
- cmp r0, #0x0
- bls _020C35D4
- add r6, r8, #0x4
- str r7, [sp, #0x4]
- mov r11, r7
- mov r10, r7
- mov r5, r7
- mov r4, #0x1
-_020C3500:
- ldrb r0, [r6, #0x0]
- cmp r0, #0x3
- addls pc, pc, r0, lsl #0x2
- b _020C35C0
- ; Jump table
- b _020C3520 ; case 0
- b _020C3570 ; case 1
- b _020C3598 ; case 2
- b _020C3548 ; case 3
-_020C3520:
- str r5, [sp, #0x0]
- ldrb r1, [r6, #0x1]
- ldr r0, [r6, #0x4]
- mov r2, r9
- mov r3, r4
- bl FUN_020C341C
- cmp r0, #0x0
- beq _020C35C0
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-_020C3548:
- str r10, [sp, #0x0]
- ldrb r1, [r6, #0x1]
- ldr r0, [r6, #0x4]
- mov r2, r9
- mov r3, r4
- bl FUN_020C33B8
- cmp r0, #0x0
- beq _020C35C0
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-_020C3570:
- str r11, [sp, #0x0]
- ldrb r1, [r6, #0x1]
- ldr r0, [r6, #0x4]
- mov r2, r9
- mov r3, r4
- bl FUN_020C3270
- cmp r0, #0x0
- beq _020C35C0
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-_020C3598:
- ldr r0, [sp, #0x4]
- mov r2, r9
- str r0, [sp, #0x0]
- ldrb r1, [r6, #0x1]
- ldr r0, [r6, #0x4]
- mov r3, r4
- bl FUN_020C31D4
- cmp r0, #0x0
- addne sp, sp, #0xc
- ldmneia sp!, {r4-r11,pc}
-_020C35C0:
- ldr r0, [r8, #0x0]
- add r7, r7, #0x1
- cmp r7, r0
- add r6, r6, #0x8
- blo _020C3500
-_020C35D4:
- mov r0, #0x0
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020C35E0
-FUN_020C35E0: ; 0x020C35E0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r12, #0x0
- mov r3, #0x1
- str r12, [sp, #0x0]
- bl FUN_020C341C
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C360C
-FUN_020C360C: ; 0x020C360C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r2, r1
- mov r12, #0x0
- mov r1, #0xff
- mov r3, #0x1
- str r12, [sp, #0x0]
- bl FUN_020C31D4
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C3640
-FUN_020C3640: ; 0x020C3640
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r2, r1
- mov r12, #0x0
- mov r1, #0xff
- mov r3, #0x1
- str r12, [sp, #0x0]
- bl FUN_020C3270
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C3674
-FUN_020C3674: ; 0x020C3674
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r2, r1
- mov r12, #0x0
- mov r1, #0xff
- mov r3, #0x1
- str r12, [sp, #0x0]
- bl FUN_020C341C
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C36A8
-FUN_020C36A8: ; 0x020C36A8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl FUN_020C34B8
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C36C8
-FUN_020C36C8: ; 0x020C36C8
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x8
- mov r7, r2
- mov r2, r3
- ldr r6, [sp, #0x20]
- mov r4, r0
- mov r8, r1
- bl FUN_020C0AF4
- movs r5, r0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- mov r0, r8
- mov r1, r5
- bl FUN_020C09B0
- add r12, sp, #0x4
- mov r2, r0
- mov r0, r7
- mov r1, #0x6
- mov r3, #0x0
- str r12, [sp, #0x0]
- bl FUN_020C3270
- cmp r0, #0x0
- beq _020C373C
- mov r0, r5
- bl thunk_FUN_020c077c
- add sp, sp, #0x8
- mov r0, #0x0
- ldmia sp!, {r4-r8,pc}
-_020C373C:
- ldr r12, [sp, #0x24]
- ldr r2, [r6, #0x0]
- ldr r1, [r12, #0x18]
- ldr r3, [sp, #0x4]
- mov r0, r5
- add r1, r12, r1
- bl FUN_020C0A90
- ldrb r1, [r6, #0x6]
- mov r0, r4
- bl FUN_020C0F30
- ldrb r1, [r6, #0x7]
- mov r0, r4
- bl FUN_020C0ECC
- ldr r1, [sp, #0x28]
- ldr r2, [sp, #0x2c]
- mov r0, r4
- bl FUN_020C0E38
- mov r0, #0x1
- add sp, sp, #0x8
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020C378C
-FUN_020C378C: ; 0x020C378C
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- mov r8, r2
- mov r2, r3
- ldr r5, [sp, #0x28]
- mov r6, r0
- mov r7, r1
- bl FUN_020C0AF4
- movs r4, r0
- addeq sp, sp, #0x10
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- mov r0, r7
- mov r1, r4
- bl FUN_020C09B0
- mov r7, r0
- add r12, sp, #0x8
- mov r0, r8
- mov r2, r7
- mov r1, #0x6
- mov r3, #0x0
- str r12, [sp, #0x0]
- bl FUN_020C3270
- cmp r0, #0x0
- beq _020C3804
- mov r0, r4
- bl thunk_FUN_020c077c
- add sp, sp, #0x10
- mov r0, #0x0
- ldmia sp!, {r4-r8,pc}
-_020C3804:
- ldr r0, [sp, #0x2c]
- add r12, sp, #0x4
- mov r2, r7
- mov r1, #0x1
- mov r3, #0x0
- str r12, [sp, #0x0]
- bl FUN_020C341C
- cmp r0, #0x0
- beq _020C383C
- mov r0, r4
- bl thunk_FUN_020c077c
- add sp, sp, #0x10
- mov r0, #0x0
- ldmia sp!, {r4-r8,pc}
-_020C383C:
- ldr r2, [sp, #0x4]
- ldr r3, [sp, #0x8]
- ldr r1, [r2, #0x18]
- mov r0, r4
- add r1, r2, r1
- mov r2, #0x0
- bl FUN_020C0A90
- ldrb r1, [r5, #0x6]
- mov r0, r6
- bl FUN_020C0F30
- ldrb r1, [r5, #0x7]
- mov r0, r6
- bl FUN_020C0ECC
- ldr r1, [sp, #0x2c]
- mov r0, r6
- bl FUN_020C0E60
- mov r0, #0x1
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020C3888
-FUN_020C3888: ; 0x020C3888
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x14
- mov r6, r1
- mov r7, r0
- mov r0, r6
- mov r5, r2
- bl FUN_020C2334
- cmp r0, #0x0
- addeq sp, sp, #0x14
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,pc}
- ldr r0, [r0, #0x0]
- bl FUN_020C20DC
- movs r4, r0
- addeq sp, sp, #0x14
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,pc}
- mov r1, r5
- bl FUN_020C3D9C
- cmp r0, #0x0
- addeq sp, sp, #0x14
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,pc}
- str r0, [sp, #0x0]
- str r4, [sp, #0x4]
- str r6, [sp, #0x8]
- str r5, [sp, #0xc]
- ldrb r1, [r0, #0x9]
- ldrh r2, [r0, #0x4]
- ldrb r3, [r0, #0x8]
- mov r0, r7
- bl FUN_020C36C8
- add sp, sp, #0x14
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020C3910
-FUN_020C3910: ; 0x020C3910
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0xc
- mov r7, r0
- ldr r0, [sp, #0x20]
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl FUN_020C2398
- cmp r0, #0x0
- addeq sp, sp, #0xc
- moveq r0, #0x0
- ldmeqia sp!, {r4-r7,pc}
- cmp r4, #0x0
- ldrltb r4, [r0, #0x8]
- cmp r5, #0x0
- ldrlth r5, [r0, #0x4]
- cmp r6, #0x0
- ldrltb r6, [r0, #0x9]
- ldr r12, [sp, #0x20]
- mov r2, r5
- str r0, [sp, #0x0]
- mov r0, r7
- mov r1, r6
- mov r3, r4
- str r12, [sp, #0x4]
- bl FUN_020C378C
- add sp, sp, #0xc
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020C3980
-FUN_020C3980: ; 0x020C3980
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r4, r1
- mov r5, r0
- mov r0, r4
- bl FUN_020C2398
- cmp r0, #0x0
- addeq sp, sp, #0xc
- moveq r0, #0x0
- ldmeqia sp!, {r4-r5,pc}
- str r0, [sp, #0x0]
- str r4, [sp, #0x4]
- ldrb r1, [r0, #0x9]
- ldrh r2, [r0, #0x4]
- ldrb r3, [r0, #0x8]
- mov r0, r5
- bl FUN_020C378C
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020C39CC
-FUN_020C39CC: ; 0x020C39CC
- stmdb sp!, {r4-r8,lr}
- mov r6, r0
- bl FUN_020C241C
- mov r5, #0x0
- mov r7, r5
-_020C39E0:
- mov r0, r5
- bl FUN_020C2208
- movs r4, r0
- beq _020C3A58
- ldrb r1, [r4, #0x0]
- mov r0, r5
- bl FUN_020C1160
- ldrh r1, [r4, #0x2]
- mov r0, r5
- bl FUN_020C1148
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _020C3A58
- cmp r6, #0x0
- beq _020C3A58
- ldrb r0, [r4, #0x0]
- mov r8, r7
- cmp r0, #0x0
- ble _020C3A58
-_020C3A2C:
- ldr r2, [r4, #0x4]
- mov r0, r5
- mov r1, r6
- bl FUN_020C10B4
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,pc}
- ldrb r0, [r4, #0x0]
- add r8, r8, #0x1
- cmp r8, r0
- blt _020C3A2C
-_020C3A58:
- add r5, r5, #0x1
- cmp r5, #0x20
- blt _020C39E0
- mov r0, #0x1
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020C3A6C
-FUN_020C3A6C: ; 0x020C3A6C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- bl OS_DisableInterrupts
- mov r4, r0
- ldr r0, _020C3A9C ; =UNK_021D2904
- mov r1, r5
- bl FUN_020ADBE8
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020C3A9C: .word UNK_021D2904
-
- arm_func_start FUN_020C3AA0
-FUN_020C3AA0: ; 0x020C3AA0
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- mov r7, r1
- bl OS_DisableInterrupts
- mov r6, r0
- mov r0, r8
- mov r1, #0x0
- bl FUN_020ADA98
- movs r5, r0
- beq _020C3B04
-_020C3AC8:
- mov r0, r8
- mov r1, r5
- bl FUN_020ADA98
- ldr r1, [r5, #0x8]
- mov r4, r0
- cmp r1, r7
- bne _020C3AF8
- mov r0, r8
- mov r1, r5
- bl FUN_020ADAB0
- mov r0, r5
- bl FUN_020C3A6C
-_020C3AF8:
- mov r5, r4
- cmp r4, #0x0
- bne _020C3AC8
-_020C3B04:
- mov r0, r6
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020C3B10
-FUN_020C3B10: ; 0x020C3B10
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, [r0, #0x120]
- cmp r1, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- sub r1, r1, #0x1
- str r1, [r0, #0x120]
- ldr r1, [r0, #0x120]
- cmp r1, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {pc}
- bl FUN_020C1674
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020C3B4C
-FUN_020C3B4C: ; 0x020C3B4C
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r1, [r4, #0x110]
- mov r1, r1, lsl #0x1f
- movs r1, r1, asr #0x1f
- ldmeqia sp!, {r4,pc}
- bl FUN_020C3B10
- ldr r1, [r4, #0x164]
- mov r0, r4
- blx r1
- ldr r0, _020C3BA8 ; =UNK_021D2DF0
- mov r1, r4
- bl FUN_020C3AA0
- ldr r0, _020C3BAC ; =UNK_021D2900
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020C3B9C
- mov r1, r4
- add r0, r0, #0x4e0
- bl FUN_020C3AA0
-_020C3B9C:
- mov r0, r4
- bl FUN_020C3C4C
- ldmia sp!, {r4,pc}
- .balign 4
-_020C3BA8: .word UNK_021D2DF0
-_020C3BAC: .word UNK_021D2900
-
- arm_func_start FUN_020C3BB0
-FUN_020C3BB0: ; 0x020C3BB0
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, _020C3C40 ; =UNK_021D2DD8
- bl OS_LockMutex
- ldr r0, _020C3C44 ; =UNK_021D2900
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _020C3BDC
- ldr r0, _020C3C48 ; =0x000004C8
- add r0, r1, r0
- bl OS_LockMutex
-_020C3BDC:
- ldr r0, [r4, #0x110]
- mov r0, r0, lsl #0x1e
- movs r0, r0, asr #0x1f
- beq _020C3BF4
- mov r0, r4
- bl FUN_020C1430
-_020C3BF4:
- ldr r0, [r4, #0x110]
- mov r0, r0, lsl #0x1f
- movs r0, r0, asr #0x1f
- beq _020C3C10
- ldr r1, [r4, #0x16c]
- mov r0, r4
- blx r1
-_020C3C10:
- mov r0, r4
- bl FUN_020C3B4C
- ldr r0, _020C3C40 ; =UNK_021D2DD8
- bl OS_UnlockMutex
- ldr r0, _020C3C44 ; =UNK_021D2900
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, _020C3C48 ; =0x000004C8
- add r0, r1, r0
- bl OS_UnlockMutex
- ldmia sp!, {r4,pc}
- .balign 4
-_020C3C40: .word UNK_021D2DD8
-_020C3C44: .word UNK_021D2900
-_020C3C48: .word 0x000004C8
-
- arm_func_start FUN_020C3C4C
-FUN_020C3C4C: ; 0x020C3C4C
- ldr r2, [r0, #0x14c]
- cmp r2, #0x0
- movne r1, #0x0
- strne r1, [r2, #0x0]
- strne r1, [r0, #0x14c]
- ldr r1, [r0, #0x110]
- bic r1, r1, #0x1
- str r1, [r0, #0x110]
- ldr r1, [r0, #0x110]
- bic r1, r1, #0x4
- str r1, [r0, #0x110]
- ldr r1, [r0, #0x110]
- bic r1, r1, #0x2
- str r1, [r0, #0x110]
- bx lr
-
- arm_func_start FUN_020C3C88
-FUN_020C3C88:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r5, _020C3D94 ; =UNK_021D2DFC
- mov r7, #0x0
- ldr r4, _020C3D98 ; =SNDi_DecibelTable
-_020C3C9C:
- ldr r1, [r5, #0x110]
- mov r0, r1, lsl #0x1f
- movs r0, r0, asr #0x1f
- beq _020C3D7C
- ldr r0, [r5, #0x114]
- cmp r0, #0x0
- bne _020C3CC4
- mov r0, r5
- bl FUN_020C3BB0
- b _020C3D7C
-_020C3CC4:
- mov r0, r1, lsl #0x1d
- movs r0, r0, asr #0x1f
- beq _020C3CFC
- ldr r0, [r5, #0x118]
- cmp r0, #0x0
- beq _020C3CFC
- mov r0, r5
- bl FUN_020C1458
- ldr r0, [r5, #0x110]
- orr r0, r0, #0x2
- str r0, [r5, #0x110]
- ldr r0, [r5, #0x110]
- bic r0, r0, #0x4
- str r0, [r5, #0x110]
-_020C3CFC:
- ldr r0, [r5, #0x110]
- mov r0, r0, lsl #0x1e
- movs r0, r0, asr #0x1f
- beq _020C3D7C
- add r0, r5, #0xe8
- bl FUN_020C3DF4
- ldr r1, [r5, #0x154]
- add r0, r5, #0xe8
- mov r1, r1, lsl #0x1
- ldrsh r6, [r4, r1]
- bl FUN_020C3E0C
- mov r0, r0, asr #0x8
- mov r0, r0, lsl #0x1
- ldrsh r1, [r4, r0]
- ldr r0, [r5, #0x158]
- add r6, r1, r6
- cmp r6, r0
- beq _020C3D54
- mov r0, r5
- mov r1, r6
- bl FUN_020C13C4
- str r6, [r5, #0x158]
-_020C3D54:
- ldr r0, [r5, #0x110]
- mov r0, r0, lsl #0x1c
- movs r0, r0, asr #0x1f
- beq _020C3D7C
- add r0, r5, #0xe8
- bl FUN_020C3DDC
- cmp r0, #0x0
- beq _020C3D7C
- mov r0, r5
- bl FUN_020C3BB0
-_020C3D7C:
- add r7, r7, #0x1
- cmp r7, #0x4
- add r5, r5, #0x170
- blt _020C3C9C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020C3D94: .word UNK_021D2DFC
-_020C3D98: .word SNDi_DecibelTable
-
- arm_func_start FUN_020C3D9C
-FUN_020C3D9C:
- cmp r1, #0x0
- movlt r0, #0x0
- bxlt lr
- ldr r2, [r0, #0x1c]
- cmp r1, r2
- movcs r0, #0x0
- bxcs lr
- mov r2, #0xc
- mul r2, r1, r2
- add r3, r0, #0x20
- ldr r1, [r3, r2]
- mvn r0, #0x0
- cmp r1, r0
- add r0, r3, r2
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020C3DDC
-FUN_020C3DDC:
- ldr r1, [r0, #0x8]
- ldr r0, [r0, #0xc]
- cmp r1, r0
- movge r0, #0x1
- movlt r0, #0x0
- bx lr
-
- arm_func_start FUN_020C3DF4
-FUN_020C3DF4: ; 0x020C3DF4
- ldr r2, [r0, #0x8]
- ldr r1, [r0, #0xc]
- cmp r2, r1
- addlt r1, r2, #0x1
- strlt r1, [r0, #0x8]
- bx lr
-
- arm_func_start FUN_020C3E0C
-FUN_020C3E0C:
- stmdb sp!, {r4,lr}
- ldr r1, [r0, #0xc]
- ldr r2, [r0, #0x8]
- cmp r2, r1
- ldrge r0, [r0, #0x4]
- ldmgeia sp!, {r4,pc}
- ldr r4, [r0, #0x0]
- ldr r0, [r0, #0x4]
- sub r0, r0, r4
- mul r0, r2, r0
- bl _s32_div_f
- add r0, r4, r0
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020C3E40
-FUN_020C3E40:
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl FUN_020C3E0C
- str r0, [r6, #0x0]
- str r5, [r6, #0x4]
- str r4, [r6, #0xc]
- mov r0, #0x0
- str r0, [r6, #0x8]
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020C3E6C
-FUN_020C3E6C: ; 0x020C3E6C
- mov r2, #0x0
- str r2, [r0, #0x4]
- ldr r1, [r0, #0x4]
- str r1, [r0, #0x0]
- str r2, [r0, #0xc]
- ldr r1, [r0, #0xc]
- str r1, [r0, #0x8]
- bx lr
diff --git a/arm9/asm/unk_020010A8.s b/arm9/asm/unk_020010A8.s
deleted file mode 100644
index 440ba8e2..00000000
--- a/arm9/asm/unk_020010A8.s
+++ /dev/null
@@ -1,1514 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
-
- .text
-
- thumb_func_start FUN_020010A8
-FUN_020010A8: ; 0x020010A8
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r0, r3, #0x0
- mov r1, #0x38
- add r7, r2, #0x0
- str r3, [sp, #0x0]
- bl AllocFromHeap
- add r4, r0, #0x0
- add r3, r5, #0x0
- add r2, r4, #0x0
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldr r0, [sp, #0x0]
- bl FUN_02013690
- str r0, [r4, #0x28]
- strh r6, [r4, #0x2c]
- add r1, r4, #0x0
- strh r7, [r4, #0x2e]
- mov r0, #0x0
- add r1, #0x30
- strb r0, [r1, #0x0]
- add r1, r4, #0x0
- add r1, #0x31
- strb r0, [r1, #0x0]
- add r1, r4, #0x0
- mov r2, #0xff
- add r1, #0x32
- strb r2, [r1, #0x0]
- add r1, r4, #0x0
- add r1, #0x33
- strb r0, [r1, #0x0]
- add r1, r4, #0x0
- ldr r0, [sp, #0x0]
- add r1, #0x34
- strb r0, [r1, #0x0]
- add r0, r4, #0x0
- ldrb r1, [r4, #0x17]
- add r0, #0x20
- ldrb r2, [r0, #0x0]
- lsl r1, r1, #0x18
- mov r0, #0xf
- lsr r3, r1, #0x1c
- mov r1, #0xf
- bic r2, r0
- and r3, r1
- orr r3, r2
- add r2, r4, #0x0
- add r2, #0x20
- strb r3, [r2, #0x0]
- add r2, r4, #0x0
- add r2, #0x20
- ldrb r2, [r2, #0x0]
- mov r3, #0xf0
- bic r2, r3
- ldrb r3, [r4, #0x18]
- lsl r3, r3, #0x1c
- lsr r3, r3, #0x1c
- lsl r3, r3, #0x1c
- lsr r3, r3, #0x18
- orr r3, r2
- add r2, r4, #0x0
- add r2, #0x20
- strb r3, [r2, #0x0]
- add r2, r4, #0x0
- add r2, #0x21
- ldrb r2, [r2, #0x0]
- bic r2, r0
- ldrb r0, [r4, #0x18]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1c
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- add r0, r4, #0x0
- add r0, #0x21
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x22
- ldrb r0, [r0, #0x0]
- mov r1, #0x3f
- bic r0, r1
- ldrh r1, [r4, #0x1a]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1d
- lsl r1, r1, #0x18
- lsr r2, r1, #0x18
- mov r1, #0x3f
- and r1, r2
- orr r1, r0
- add r0, r4, #0x0
- add r0, #0x22
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x24
- ldrb r0, [r0, #0x0]
- mov r1, #0x7f
- bic r0, r1
- ldrh r1, [r4, #0x1a]
- lsl r1, r1, #0x11
- lsr r1, r1, #0x1a
- lsl r1, r1, #0x18
- lsr r2, r1, #0x18
- mov r1, #0x7f
- and r1, r2
- orr r1, r0
- add r0, r4, #0x0
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x24
- ldrb r1, [r0, #0x0]
- mov r0, #0x80
- bic r1, r0
- add r0, r4, #0x0
- add r0, #0x24
- strb r1, [r0, #0x0]
- ldrh r1, [r4, #0x10]
- ldrh r0, [r4, #0x12]
- cmp r1, r0
- bhs _020011AC
- strh r1, [r4, #0x12]
-_020011AC:
- ldrb r2, [r4, #0x18]
- ldr r0, [r4, #0x28]
- lsl r1, r2, #0x1c
- lsr r1, r1, #0x1c
- lsl r1, r1, #0x18
- lsr r3, r1, #0x18
- ldrb r1, [r4, #0x17]
- lsl r2, r2, #0x18
- lsr r2, r2, #0x1c
- lsl r1, r1, #0x18
- lsr r1, r1, #0x1c
- lsl r1, r1, #0x18
- lsl r2, r2, #0x18
- lsr r1, r1, #0x8
- lsr r2, r2, #0x10
- orr r1, r2
- orr r1, r3
- bl FUN_020136E0
- ldrb r1, [r4, #0x18]
- ldr r0, [r4, #0xc]
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- bl FUN_02019620
- ldrh r1, [r4, #0x2c]
- ldrh r3, [r4, #0x12]
- add r0, r4, #0x0
- mov r2, #0x0
- bl FUN_02001714
- add r0, r4, #0x0
- bl FUN_020017AC
- add r0, r4, #0x0
- mov r1, #0x1
- bl FUN_02001B64
- ldr r0, [r5, #0xc]
- bl CopyWindowToVram
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02001204
-FUN_02001204: ; 0x02001204
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- ldr r6, _020012FC ; =gMain
- mov r3, #0x0
- add r1, #0x33
- strb r3, [r1, #0x0]
- ldr r1, [r6, #0x48]
- mov r2, #0x1
- add r5, r1, #0x0
- tst r5, r2
- beq _0200122C
- ldrh r1, [r4, #0x2c]
- ldrh r0, [r4, #0x2e]
- ldr r2, [r4, #0x0]
- add r0, r1, r0
- lsl r0, r0, #0x3
- add r0, r2, r0
- ldr r0, [r0, #0x4]
- pop {r4-r6, pc}
-_0200122C:
- mov r5, #0x2
- tst r1, r5
- beq _02001236
- sub r0, r5, #0x4
- pop {r4-r6, pc}
-_02001236:
- ldr r5, [r6, #0x4c]
- mov r1, #0x40
- tst r1, r5
- beq _02001254
- add r1, r2, #0x0
- bl FUN_02001AA4
- cmp r0, #0x0
- bne _0200124E
- mov r0, #0x1
- add r4, #0x33
- strb r0, [r4, #0x0]
-_0200124E:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_02001254:
- mov r1, #0x80
- add r3, r5, #0x0
- tst r3, r1
- beq _02001274
- add r1, r2, #0x0
- add r3, r2, #0x0
- bl FUN_02001AA4
- cmp r0, #0x0
- bne _0200126E
- mov r0, #0x2
- add r4, #0x33
- strb r0, [r4, #0x0]
-_0200126E:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_02001274:
- ldrh r0, [r4, #0x1a]
- lsl r0, r0, #0x17
- lsr r0, r0, #0x1e
- beq _02001284
- cmp r0, #0x1
- beq _0200128A
- cmp r0, #0x2
- beq _0200129C
-_02001284:
- mov r0, #0x0
- add r1, r0, #0x0
- b _020012AC
-_0200128A:
- mov r0, #0x20
- mov r1, #0x10
- and r0, r5
- and r1, r5
- lsl r0, r0, #0x10
- lsl r1, r1, #0x10
- lsr r0, r0, #0x10
- lsr r1, r1, #0x10
- b _020012AC
-_0200129C:
- lsl r0, r1, #0x2
- add r1, #0x80
- and r0, r5
- and r1, r5
- lsl r0, r0, #0x10
- lsl r1, r1, #0x10
- lsr r0, r0, #0x10
- lsr r1, r1, #0x10
-_020012AC:
- cmp r0, #0x0
- beq _020012D0
- ldrh r2, [r4, #0x12]
- add r0, r4, #0x0
- mov r1, #0x1
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- mov r3, #0x0
- bl FUN_02001AA4
- cmp r0, #0x0
- bne _020012CA
- mov r0, #0x3
- add r4, #0x33
- strb r0, [r4, #0x0]
-_020012CA:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_020012D0:
- cmp r1, #0x0
- beq _020012F4
- ldrh r2, [r4, #0x12]
- mov r1, #0x1
- add r0, r4, #0x0
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- add r3, r1, #0x0
- bl FUN_02001AA4
- cmp r0, #0x0
- bne _020012EE
- mov r0, #0x4
- add r4, #0x33
- strb r0, [r4, #0x0]
-_020012EE:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_020012F4:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
- nop
-_020012FC: .word gMain
-
- thumb_func_start FUN_02001300
-FUN_02001300: ; 0x02001300
- push {r4, lr}
- add r4, r0, #0x0
- cmp r1, #0x0
- beq _0200130C
- ldrh r0, [r4, #0x2c]
- strh r0, [r1, #0x0]
-_0200130C:
- cmp r2, #0x0
- beq _02001314
- ldrh r0, [r4, #0x2e]
- strh r0, [r2, #0x0]
-_02001314:
- ldr r0, [r4, #0x28]
- bl FUN_020136C0
- add r0, r4, #0x0
- add r0, #0x34
- ldrb r0, [r0, #0x0]
- add r1, r4, #0x0
- bl FUN_02016A8C
- pop {r4, pc}
-
- thumb_func_start FUN_02001328
-FUN_02001328: ; 0x02001328
- push {r4, lr}
- add r4, r0, #0x0
- ldrb r1, [r4, #0x18]
- ldr r0, [r4, #0xc]
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- bl FUN_02019620
- ldrh r1, [r4, #0x2c]
- ldrh r3, [r4, #0x12]
- add r0, r4, #0x0
- mov r2, #0x0
- bl FUN_02001714
- add r0, r4, #0x0
- bl FUN_020017AC
- ldr r0, [r4, #0xc]
- bl CopyWindowToVram
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02001354
-FUN_02001354: ; 0x02001354
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r6, r1, #0x0
- beq _0200136E
- add r5, r4, #0x0
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r5!, {r0-r1}
-_0200136E:
- strh r2, [r4, #0x2c]
- add r0, r4, #0x0
- strh r3, [r4, #0x2e]
- mov r3, #0x0
- add r0, #0x30
- strb r3, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x31
- add r1, sp, #0x0
- strb r3, [r0, #0x0]
- ldrh r0, [r1, #0x14]
- cmp r0, #0x40
- bne _02001398
- ldrh r1, [r1, #0x10]
- add r0, r4, #0x0
- mov r2, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02001AA4
- b _020013AC
-_02001398:
- cmp r0, #0x80
- bne _020013AC
- ldrh r1, [r1, #0x10]
- mov r2, #0x1
- add r0, r4, #0x0
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r3, r2, #0x0
- bl FUN_02001AA4
-_020013AC:
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- beq _020013B6
- ldrh r0, [r4, #0x2c]
- strh r0, [r1, #0x0]
-_020013B6:
- ldr r1, [sp, #0x1c]
- cmp r1, #0x0
- beq _020013C0
- ldrh r0, [r4, #0x2e]
- strh r0, [r1, #0x0]
-_020013C0:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020013C8
-FUN_020013C8: ; 0x020013C8
- push {r4, lr}
- sub sp, #0x10
- mov r4, #0x0
- str r4, [sp, #0x0]
- add r4, sp, #0x8
- ldrh r4, [r4, #0x10]
- str r4, [sp, #0x4]
- ldr r4, [sp, #0x1c]
- str r4, [sp, #0x8]
- ldr r4, [sp, #0x20]
- str r4, [sp, #0xc]
- bl FUN_02001354
- add sp, #0x10
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020013E8
-FUN_020013E8: ; 0x020013E8
- push {r3-r6}
- add r4, r0, #0x0
- add r4, #0x20
- ldrb r6, [r4, #0x0]
- mov r4, #0xf
- mov r5, #0xf
- bic r6, r4
- and r1, r5
- orr r6, r1
- add r1, r0, #0x0
- add r1, #0x20
- strb r6, [r1, #0x0]
- add r1, r0, #0x0
- add r1, #0x20
- lsl r2, r2, #0x1c
- ldrb r1, [r1, #0x0]
- mov r6, #0xf0
- lsr r2, r2, #0x18
- bic r1, r6
- orr r2, r1
- add r1, r0, #0x0
- add r1, #0x20
- strb r2, [r1, #0x0]
- add r1, r0, #0x0
- add r1, #0x21
- ldrb r2, [r1, #0x0]
- add r1, r3, #0x0
- and r1, r5
- bic r2, r4
- orr r2, r1
- add r1, r0, #0x0
- add r1, #0x21
- strb r2, [r1, #0x0]
- add r1, r0, #0x0
- add r1, #0x24
- ldrb r2, [r1, #0x0]
- mov r1, #0x80
- add r0, #0x24
- orr r1, r2
- strb r1, [r0, #0x0]
- pop {r3-r6}
- bx lr
-
- thumb_func_start FUN_0200143C
-FUN_0200143C: ; 0x0200143C
- ldrh r2, [r0, #0x2c]
- ldrh r0, [r0, #0x2e]
- add r0, r2, r0
- strh r0, [r1, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02001448
-FUN_02001448: ; 0x02001448
- cmp r1, #0x0
- beq _02001450
- ldrh r3, [r0, #0x2c]
- strh r3, [r1, #0x0]
-_02001450:
- cmp r2, #0x0
- beq _02001458
- ldrh r0, [r0, #0x2e]
- strh r0, [r2, #0x0]
-_02001458:
- bx lr
- .balign 4
-
- thumb_func_start FUN_0200145C
-FUN_0200145C: ; 0x0200145C
- add r0, #0x33
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02001464
-FUN_02001464: ; 0x02001464
- ldr r2, [r0, #0x0]
- lsl r0, r1, #0x3
- add r0, r2, r0
- ldr r0, [r0, #0x4]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02001470
-FUN_02001470: ; 0x02001470
- push {r4, lr}
- add r4, r0, #0x0
- cmp r1, #0x13
- bhi _02001532
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02001484: ; jump table (using 16-bit offset)
- .short _020014AC - _02001484 - 2; case 0
- .short _020014B0 - _02001484 - 2; case 1
- .short _020014B4 - _02001484 - 2; case 2
- .short _020014B8 - _02001484 - 2; case 3
- .short _02001532 - _02001484 - 2; case 4
- .short _020014BC - _02001484 - 2; case 5
- .short _020014C0 - _02001484 - 2; case 6
- .short _020014C4 - _02001484 - 2; case 7
- .short _020014C8 - _02001484 - 2; case 8
- .short _020014D0 - _02001484 - 2; case 9
- .short _020014EA - _02001484 - 2; case 10
- .short _020014F2 - _02001484 - 2; case 11
- .short _020014FA - _02001484 - 2; case 12
- .short _02001502 - _02001484 - 2; case 13
- .short _0200150A - _02001484 - 2; case 14
- .short _02001512 - _02001484 - 2; case 15
- .short _0200151A - _02001484 - 2; case 16
- .short _02001522 - _02001484 - 2; case 17
- .short _0200152A - _02001484 - 2; case 18
- .short _0200152E - _02001484 - 2; case 19
-_020014AC:
- ldr r0, [r4, #0x4]
- pop {r4, pc}
-_020014B0:
- ldr r0, [r4, #0x8]
- pop {r4, pc}
-_020014B4:
- ldrh r0, [r4, #0x10]
- pop {r4, pc}
-_020014B8:
- ldrh r0, [r4, #0x12]
- pop {r4, pc}
-_020014BC:
- ldrb r0, [r4, #0x14]
- pop {r4, pc}
-_020014C0:
- ldrb r0, [r4, #0x15]
- pop {r4, pc}
-_020014C4:
- ldrb r0, [r4, #0x16]
- pop {r4, pc}
-_020014C8:
- ldrb r0, [r4, #0x17]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- pop {r4, pc}
-_020014D0:
- ldrh r0, [r4, #0x1a]
- mov r1, #0x1
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_02002E4C
- ldrh r1, [r4, #0x1a]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x1c
- add r0, r1, r0
- pop {r4, pc}
-_020014EA:
- ldrb r0, [r4, #0x17]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1c
- pop {r4, pc}
-_020014F2:
- ldrb r0, [r4, #0x18]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- pop {r4, pc}
-_020014FA:
- ldrb r0, [r4, #0x18]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1c
- pop {r4, pc}
-_02001502:
- ldrh r0, [r4, #0x1a]
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1d
- pop {r4, pc}
-_0200150A:
- ldrh r0, [r4, #0x1a]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x1c
- pop {r4, pc}
-_02001512:
- ldrh r0, [r4, #0x1a]
- lsl r0, r0, #0x17
- lsr r0, r0, #0x1e
- pop {r4, pc}
-_0200151A:
- ldrh r0, [r4, #0x1a]
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- pop {r4, pc}
-_02001522:
- ldrh r0, [r4, #0x1a]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x1f
- pop {r4, pc}
-_0200152A:
- ldr r0, [r4, #0xc]
- pop {r4, pc}
-_0200152E:
- ldr r0, [r4, #0x1c]
- pop {r4, pc}
-_02001532:
- mov r0, #0x0
- mvn r0, r0
- pop {r4, pc}
-
- thumb_func_start FUN_02001538
-FUN_02001538: ; 0x02001538
- cmp r1, #0x13
- bls _0200153E
- b _02001648
-_0200153E:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0200154A: ; jump table (using 16-bit offset)
- .short _02001572 - _0200154A - 2; case 0
- .short _02001576 - _0200154A - 2; case 1
- .short _0200157A - _0200154A - 2; case 2
- .short _0200157E - _0200154A - 2; case 3
- .short _02001648 - _0200154A - 2; case 4
- .short _02001582 - _0200154A - 2; case 5
- .short _02001586 - _0200154A - 2; case 6
- .short _0200158A - _0200154A - 2; case 7
- .short _0200158E - _0200154A - 2; case 8
- .short _02001648 - _0200154A - 2; case 9
- .short _020015A2 - _0200154A - 2; case 10
- .short _020015B6 - _0200154A - 2; case 11
- .short _020015CA - _0200154A - 2; case 12
- .short _020015DE - _0200154A - 2; case 13
- .short _020015F2 - _0200154A - 2; case 14
- .short _02001606 - _0200154A - 2; case 15
- .short _0200161A - _0200154A - 2; case 16
- .short _0200162E - _0200154A - 2; case 17
- .short _02001642 - _0200154A - 2; case 18
- .short _02001646 - _0200154A - 2; case 19
-_02001572:
- str r2, [r0, #0x4]
- bx lr
-_02001576:
- str r2, [r0, #0x8]
- bx lr
-_0200157A:
- strh r2, [r0, #0x10]
- bx lr
-_0200157E:
- strh r2, [r0, #0x12]
- bx lr
-_02001582:
- strb r2, [r0, #0x14]
- bx lr
-_02001586:
- strb r2, [r0, #0x15]
- bx lr
-_0200158A:
- strb r2, [r0, #0x16]
- bx lr
-_0200158E:
- ldrb r3, [r0, #0x17]
- mov r1, #0xf
- bic r3, r1
- lsl r1, r2, #0x18
- lsr r2, r1, #0x18
- mov r1, #0xf
- and r1, r2
- orr r1, r3
- strb r1, [r0, #0x17]
- bx lr
-_020015A2:
- ldrb r3, [r0, #0x17]
- mov r1, #0xf0
- bic r3, r1
- lsl r1, r2, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x18
- orr r1, r3
- strb r1, [r0, #0x17]
- bx lr
-_020015B6:
- ldrb r3, [r0, #0x18]
- mov r1, #0xf
- bic r3, r1
- lsl r1, r2, #0x18
- lsr r2, r1, #0x18
- mov r1, #0xf
- and r1, r2
- orr r1, r3
- strb r1, [r0, #0x18]
- bx lr
-_020015CA:
- ldrb r3, [r0, #0x18]
- mov r1, #0xf0
- bic r3, r1
- lsl r1, r2, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x18
- orr r1, r3
- strb r1, [r0, #0x18]
- bx lr
-_020015DE:
- ldrh r3, [r0, #0x1a]
- mov r1, #0x7
- bic r3, r1
- lsl r1, r2, #0x18
- lsr r2, r1, #0x18
- mov r1, #0x7
- and r1, r2
- orr r1, r3
- strh r1, [r0, #0x1a]
- bx lr
-_020015F2:
- ldrh r3, [r0, #0x1a]
- mov r1, #0x78
- bic r3, r1
- lsl r1, r2, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x19
- orr r1, r3
- strh r1, [r0, #0x1a]
- bx lr
-_02001606:
- ldrh r3, [r0, #0x1a]
- ldr r1, _0200164C ; =0xFFFFFE7F
- and r3, r1
- lsl r1, r2, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1e
- lsr r1, r1, #0x17
- orr r1, r3
- strh r1, [r0, #0x1a]
- bx lr
-_0200161A:
- ldrh r3, [r0, #0x1a]
- ldr r1, _02001650 ; =0xFFFF81FF
- and r3, r1
- lsl r1, r2, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1a
- lsr r1, r1, #0x11
- orr r1, r3
- strh r1, [r0, #0x1a]
- bx lr
-_0200162E:
- ldrh r3, [r0, #0x1a]
- ldr r1, _02001654 ; =0xFFFF7FFF
- and r3, r1
- lsl r1, r2, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1f
- lsr r1, r1, #0x10
- orr r1, r3
- strh r1, [r0, #0x1a]
- bx lr
-_02001642:
- str r2, [r0, #0xc]
- bx lr
-_02001646:
- str r2, [r0, #0x1c]
-_02001648:
- bx lr
- nop
-_0200164C: .word 0xFFFFFE7F
-_02001650: .word 0xFFFF81FF
-_02001654: .word 0xFFFF7FFF
-
- thumb_func_start FUN_02001658
-FUN_02001658: ; 0x02001658
- str r1, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_0200165C
-FUN_0200165C: ; 0x0200165C
- push {r4-r6, lr}
- sub sp, #0x18
- add r5, r1, #0x0
- add r6, r0, #0x0
- add r4, r2, #0x0
- cmp r5, #0x0
- beq _02001710
- add r0, #0x24
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1f
- str r3, [sp, #0x0]
- beq _020016CC
- mov r0, #0xff
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- add r0, #0x20
- ldrb r2, [r0, #0x0]
- add r3, r4, #0x0
- lsl r0, r2, #0x18
- lsr r0, r0, #0x1c
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- lsl r0, r2, #0x1c
- add r2, r6, #0x0
- add r2, #0x21
- ldrb r2, [r2, #0x0]
- lsr r0, r0, #0x1c
- lsl r0, r0, #0x18
- lsl r2, r2, #0x1c
- lsr r2, r2, #0x1c
- lsl r2, r2, #0x18
- lsr r0, r0, #0x8
- lsr r2, r2, #0x10
- orr r0, r2
- orr r0, r1
- str r0, [sp, #0x8]
- add r0, r6, #0x0
- add r0, #0x22
- ldrb r0, [r0, #0x0]
- add r2, r5, #0x0
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x1a
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- ldr r0, [r6, #0xc]
- add r6, #0x24
- ldrb r1, [r6, #0x0]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x19
- bl AddTextPrinterParameterized3
- add sp, #0x18
- pop {r4-r6, pc}
-_020016CC:
- mov r0, #0xff
- str r0, [sp, #0x4]
- ldrb r1, [r6, #0x18]
- add r3, r4, #0x0
- lsl r0, r1, #0x1c
- lsr r0, r0, #0x1c
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- ldrb r0, [r6, #0x17]
- lsl r1, r1, #0x18
- lsr r1, r1, #0x1c
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1c
- lsl r0, r0, #0x18
- lsl r1, r1, #0x18
- lsr r0, r0, #0x8
- lsr r1, r1, #0x10
- orr r0, r1
- orr r0, r2
- str r0, [sp, #0x8]
- ldrh r0, [r6, #0x1a]
- add r2, r5, #0x0
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1d
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- str r0, [sp, #0x14]
- ldrh r1, [r6, #0x1a]
- ldr r0, [r6, #0xc]
- lsl r1, r1, #0x11
- lsr r1, r1, #0x1a
- bl AddTextPrinterParameterized3
-_02001710:
- add sp, #0x18
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02001714
-FUN_02001714: ; 0x02001714
- push {r4-r7, lr}
- sub sp, #0x14
- add r5, r0, #0x0
- str r3, [sp, #0x0]
- ldrh r0, [r5, #0x1a]
- add r4, r1, #0x0
- mov r1, #0x1
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- add r6, r2, #0x0
- bl FUN_02002E4C
- ldrh r1, [r5, #0x1a]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x1c
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- ble _020017A6
-_02001748:
- ldr r1, [r5, #0x0]
- lsl r0, r4, #0x3
- str r0, [sp, #0x8]
- add r0, r1, r0
- ldr r1, [r0, #0x4]
- mov r0, #0x2
- mvn r0, r0
- cmp r1, r0
- beq _02001760
- ldrb r0, [r5, #0x15]
- str r0, [sp, #0x4]
- b _02001764
-_02001760:
- ldrb r0, [r5, #0x14]
- str r0, [sp, #0x4]
-_02001764:
- ldrb r0, [r5, #0x17]
- lsl r0, r0, #0x1c
- lsr r3, r0, #0x1c
- ldr r0, [sp, #0xc]
- add r2, r0, #0x0
- mul r2, r6
- add r0, r3, r2
- lsl r0, r0, #0x18
- ldr r3, [r5, #0x8]
- lsr r7, r0, #0x18
- cmp r3, #0x0
- beq _02001782
- add r0, r5, #0x0
- add r2, r7, #0x0
- blx r3
-_02001782:
- ldr r2, [r5, #0x0]
- ldr r1, [sp, #0x8]
- add r0, r5, #0x0
- ldr r1, [r2, r1]
- ldr r2, [sp, #0x4]
- add r3, r7, #0x0
- bl FUN_0200165C
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- ldr r0, [sp, #0x10]
- add r6, r6, #0x1
- add r1, r0, #0x1
- ldr r0, [sp, #0x0]
- str r1, [sp, #0x10]
- cmp r1, r0
- blt _02001748
-_020017A6:
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020017AC
-FUN_020017AC: ; 0x020017AC
- push {r3-r5, lr}
- add r4, r0, #0x0
- ldrh r0, [r4, #0x1a]
- mov r1, #0x1
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_02002E4C
- ldrh r1, [r4, #0x1a]
- ldrh r5, [r4, #0x2e]
- lsl r2, r1, #0x19
- lsr r2, r2, #0x1c
- add r0, r2, r0
- lsl r0, r0, #0x18
- lsr r3, r0, #0x18
- ldrb r0, [r4, #0x17]
- mul r3, r5
- ldrb r2, [r4, #0x16]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- add r0, r0, r3
- lsl r0, r0, #0x18
- lsr r3, r0, #0x18
- lsl r0, r1, #0x10
- lsr r0, r0, #0x1f
- cmp r0, #0x3
- bhi _02001802
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020017F2: ; jump table (using 16-bit offset)
- .short _020017FA - _020017F2 - 2; case 0
- .short _02001802 - _020017F2 - 2; case 1
- .short _02001802 - _020017F2 - 2; case 2
- .short _02001802 - _020017F2 - 2; case 3
-_020017FA:
- ldr r0, [r4, #0x28]
- ldr r1, [r4, #0xc]
- bl FUN_020136F8
-_02001802:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02001804
-FUN_02001804: ; 0x02001804
- push {r3-r5, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- ldrh r0, [r4, #0x1a]
- add r5, r1, #0x0
- lsl r1, r0, #0x10
- lsr r1, r1, #0x1f
- cmp r1, #0x3
- bhi _02001868
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02001822: ; jump table (using 16-bit offset)
- .short _0200182A - _02001822 - 2; case 0
- .short _02001868 - _02001822 - 2; case 1
- .short _02001868 - _02001822 - 2; case 2
- .short _02001868 - _02001822 - 2; case 3
-_0200182A:
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r1, #0x1
- bl FUN_02002E4C
- ldrh r1, [r4, #0x1a]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x1c
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r3, r0, #0x18
- mov r0, #0x8
- str r0, [sp, #0x0]
- mov r0, #0x10
- str r0, [sp, #0x4]
- ldrb r1, [r4, #0x18]
- ldr r0, [r4, #0xc]
- ldrb r2, [r4, #0x16]
- ldrb r4, [r4, #0x17]
- lsl r1, r1, #0x1c
- mul r3, r5
- lsl r4, r4, #0x1c
- lsr r4, r4, #0x1c
- add r3, r4, r3
- lsl r3, r3, #0x10
- lsr r1, r1, #0x1c
- lsr r3, r3, #0x10
- bl FUN_020196F4
-_02001868:
- add sp, #0x8
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200186C
-FUN_0200186C: ; 0x0200186C
- push {r4-r7}
- ldrh r4, [r0, #0x2e]
- ldrh r3, [r0, #0x2c]
- cmp r1, #0x0
- ldrh r2, [r0, #0x12]
- bne _020018FE
- cmp r2, #0x1
- bne _02001880
- mov r1, #0x0
- b _02001898
-_02001880:
- lsr r7, r2, #0x1f
- lsl r6, r2, #0x1f
- sub r6, r6, r7
- mov r5, #0x1f
- ror r6, r5
- lsr r1, r2, #0x1
- add r5, r7, r6
- add r1, r1, r5
- sub r1, r2, r1
- sub r1, r1, #0x1
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
-_02001898:
- cmp r3, #0x0
- bne _020018CC
- cmp r4, #0x0
- beq _020018C6
- ldr r2, [r0, #0x0]
- lsl r1, r3, #0x3
- mov r3, #0x2
- add r1, r2, r1
- mvn r3, r3
-_020018AA:
- sub r2, r4, #0x1
- lsl r2, r2, #0x10
- lsr r4, r2, #0x10
- lsl r2, r4, #0x3
- add r2, r1, r2
- ldr r2, [r2, #0x4]
- cmp r2, r3
- beq _020018C2
- strh r4, [r0, #0x2e]
- mov r0, #0x1
- pop {r4-r7}
- bx lr
-_020018C2:
- cmp r4, #0x0
- bne _020018AA
-_020018C6:
- mov r0, #0x0
- pop {r4-r7}
- bx lr
-_020018CC:
- cmp r4, r1
- bls _020018F6
- ldr r5, [r0, #0x0]
- lsl r2, r3, #0x3
- add r2, r5, r2
- mov r5, #0x2
- mvn r5, r5
-_020018DA:
- sub r4, r4, #0x1
- lsl r4, r4, #0x10
- lsr r4, r4, #0x10
- lsl r6, r4, #0x3
- add r6, r2, r6
- ldr r6, [r6, #0x4]
- cmp r6, r5
- beq _020018F2
- strh r4, [r0, #0x2e]
- mov r0, #0x1
- pop {r4-r7}
- bx lr
-_020018F2:
- cmp r4, r1
- bhi _020018DA
-_020018F6:
- strh r1, [r0, #0x2e]
- sub r1, r3, #0x1
- strh r1, [r0, #0x2c]
- b _02001984
-_020018FE:
- cmp r2, #0x1
- bne _02001906
- mov r5, #0x0
- b _0200191A
-_02001906:
- lsr r7, r2, #0x1f
- lsl r6, r2, #0x1f
- sub r6, r6, r7
- mov r5, #0x1f
- ror r6, r5
- lsr r1, r2, #0x1
- add r5, r7, r6
- add r1, r1, r5
- lsl r1, r1, #0x10
- lsr r5, r1, #0x10
-_0200191A:
- ldrh r1, [r0, #0x10]
- sub r1, r1, r2
- cmp r3, r1
- bne _02001954
- sub r2, r2, #0x1
- cmp r4, r2
- bge _0200194E
- ldr r5, [r0, #0x0]
- lsl r1, r3, #0x3
- add r1, r5, r1
- mov r5, #0x2
- mvn r5, r5
-_02001932:
- add r3, r4, #0x1
- lsl r3, r3, #0x10
- lsr r4, r3, #0x10
- lsl r3, r4, #0x3
- add r3, r1, r3
- ldr r3, [r3, #0x4]
- cmp r3, r5
- beq _0200194A
- strh r4, [r0, #0x2e]
- mov r0, #0x1
- pop {r4-r7}
- bx lr
-_0200194A:
- cmp r4, r2
- blt _02001932
-_0200194E:
- mov r0, #0x0
- pop {r4-r7}
- bx lr
-_02001954:
- cmp r4, r5
- bhs _0200197E
- ldr r2, [r0, #0x0]
- lsl r1, r3, #0x3
- mov r6, #0x2
- add r1, r2, r1
- mvn r6, r6
-_02001962:
- add r2, r4, #0x1
- lsl r2, r2, #0x10
- lsr r4, r2, #0x10
- lsl r2, r4, #0x3
- add r2, r1, r2
- ldr r2, [r2, #0x4]
- cmp r2, r6
- beq _0200197A
- strh r4, [r0, #0x2e]
- mov r0, #0x1
- pop {r4-r7}
- bx lr
-_0200197A:
- cmp r4, r5
- blo _02001962
-_0200197E:
- strh r5, [r0, #0x2e]
- add r1, r3, #0x1
- strh r1, [r0, #0x2c]
-_02001984:
- mov r0, #0x2
- pop {r4-r7}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0200198C
-FUN_0200198C: ; 0x0200198C
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- ldrh r0, [r5, #0x12]
- add r4, r1, #0x0
- add r7, r2, #0x0
- cmp r4, r0
- blt _020019B8
- ldrb r1, [r5, #0x18]
- ldr r0, [r5, #0xc]
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- bl FUN_02019620
- ldrh r1, [r5, #0x2c]
- ldrh r3, [r5, #0x12]
- add r0, r5, #0x0
- mov r2, #0x0
- bl FUN_02001714
- add sp, #0x8
- pop {r3-r7, pc}
-_020019B8:
- ldrh r0, [r5, #0x1a]
- mov r1, #0x1
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_02002E4C
- ldrh r1, [r5, #0x1a]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x1c
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r7, #0x0
- ldrb r0, [r5, #0x18]
- bne _02001A46
- lsl r0, r0, #0x1c
- lsr r7, r0, #0x1c
- add r2, r4, #0x0
- lsl r3, r7, #0x4
- mul r2, r6
- orr r3, r7
- lsl r2, r2, #0x18
- lsl r3, r3, #0x18
- ldr r0, [r5, #0xc]
- mov r1, #0x1
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- bl FUN_0201A8C8
- ldrh r1, [r5, #0x2c]
- add r0, r5, #0x0
- mov r2, #0x0
- add r3, r4, #0x0
- bl FUN_02001714
- ldrb r0, [r5, #0x17]
- lsl r0, r0, #0x1c
- lsr r2, r0, #0x1c
- ldrh r0, [r5, #0x12]
- add r1, r0, #0x0
- mul r1, r6
- add r0, r2, r1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- ldr r0, [r5, #0xc]
- bl FUN_0201AB0C
- add r6, r0, #0x0
- ldr r0, [r5, #0xc]
- bl FUN_0201AB10
- lsl r0, r0, #0x3
- lsl r1, r6, #0x13
- sub r0, r0, r4
- lsr r1, r1, #0x10
- lsl r0, r0, #0x10
- str r1, [sp, #0x0]
- lsr r0, r0, #0x10
- str r0, [sp, #0x4]
- ldrb r1, [r5, #0x18]
- ldr r0, [r5, #0xc]
- mov r2, #0x0
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- add r3, r4, #0x0
- bl FUN_020196F4
- add sp, #0x8
- pop {r3-r7, pc}
-_02001A46:
- lsl r0, r0, #0x1c
- lsr r3, r0, #0x1c
- add r2, r4, #0x0
- mul r2, r6
- lsl r6, r3, #0x4
- orr r3, r6
- lsl r2, r2, #0x18
- lsl r3, r3, #0x18
- ldr r0, [r5, #0xc]
- mov r1, #0x0
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- bl FUN_0201A8C8
- ldrh r0, [r5, #0x12]
- ldrh r1, [r5, #0x2c]
- add r3, r4, #0x0
- sub r2, r0, r4
- add r1, r1, r2
- lsl r1, r1, #0x10
- lsl r2, r2, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- lsr r2, r2, #0x10
- bl FUN_02001714
- ldr r0, [r5, #0xc]
- bl FUN_0201AB0C
- lsl r0, r0, #0x13
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- ldrb r0, [r5, #0x17]
- mov r2, #0x0
- add r3, r2, #0x0
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- str r0, [sp, #0x4]
- ldrb r1, [r5, #0x18]
- ldr r0, [r5, #0xc]
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- bl FUN_020196F4
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02001AA4
-FUN_02001AA4: ; 0x02001AA4
- push {r3-r7, lr}
- sub sp, #0x10
- str r1, [sp, #0x0]
- str r2, [sp, #0x4]
- add r4, r0, #0x0
- str r3, [sp, #0x8]
- ldrh r0, [r4, #0x2e]
- mov r6, #0x0
- add r5, r6, #0x0
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x4]
- add r7, r6, #0x0
- cmp r0, #0x0
- bls _02001AF6
-_02001AC0:
- ldr r1, [sp, #0x8]
- add r0, r4, #0x0
- bl FUN_0200186C
- orr r5, r0
- cmp r0, #0x2
- bne _02001AEA
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- ldrh r1, [r4, #0x2c]
- ldrh r0, [r4, #0x2e]
- ldr r2, [r4, #0x0]
- add r0, r1, r0
- lsl r0, r0, #0x3
- add r0, r2, r0
- ldr r1, [r0, #0x4]
- mov r0, #0x2
- mvn r0, r0
- cmp r1, r0
- beq _02001AC0
-_02001AEA:
- add r0, r7, #0x1
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- ldr r0, [sp, #0x4]
- cmp r7, r0
- blo _02001AC0
-_02001AF6:
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- beq _02001B5E
- cmp r5, #0x3
- bhi _02001B14
- add r0, r5, r5
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02001B0C: ; jump table (using 16-bit offset)
- .short _02001B14 - _02001B0C - 2; case 0
- .short _02001B1A - _02001B0C - 2; case 1
- .short _02001B38 - _02001B0C - 2; case 2
- .short _02001B38 - _02001B0C - 2; case 3
-_02001B14:
- add sp, #0x10
- mov r0, #0x1
- pop {r3-r7, pc}
-_02001B1A:
- ldr r1, [sp, #0xc]
- add r0, r4, #0x0
- bl FUN_02001804
- add r0, r4, #0x0
- bl FUN_020017AC
- add r0, r4, #0x0
- mov r1, #0x0
- bl FUN_02001B64
- ldr r0, [r4, #0xc]
- bl CopyWindowToVram
- b _02001B5E
-_02001B38:
- ldr r1, [sp, #0xc]
- add r0, r4, #0x0
- bl FUN_02001804
- ldr r2, [sp, #0x8]
- add r0, r4, #0x0
- add r1, r6, #0x0
- bl FUN_0200198C
- add r0, r4, #0x0
- bl FUN_020017AC
- add r0, r4, #0x0
- mov r1, #0x0
- bl FUN_02001B64
- ldr r0, [r4, #0xc]
- bl CopyWindowToVram
-_02001B5E:
- mov r0, #0x0
- add sp, #0x10
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02001B64
-FUN_02001B64: ; 0x02001B64
- push {r3-r5, lr}
- ldr r3, [r0, #0x4]
- add r2, r1, #0x0
- cmp r3, #0x0
- beq _02001B7E
- ldrh r5, [r0, #0x2c]
- ldrh r4, [r0, #0x2e]
- ldr r1, [r0, #0x0]
- add r4, r5, r4
- lsl r4, r4, #0x3
- add r1, r1, r4
- ldr r1, [r1, #0x4]
- blx r3
-_02001B7E:
- pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s
index 4962171d..18e10da6 100644
--- a/arm9/asm/unk_02001B80.s
+++ b/arm9/asm/unk_02001B80.s
@@ -12,14 +12,6 @@ UNK_020ECAC8: ; 0x020ECAC8
.text
- thumb_func_start FUN_02001B80
-FUN_02001B80: ; 0x02001B80
- ldr r3, _02001B88 ; =CopyWindowToVram
- ldr r0, [r0, #0xc]
- bx r3
- nop
-_02001B88: .word CopyWindowToVram
-
thumb_func_start FUN_02001B8C
FUN_02001B8C: ; 0x02001B8C
push {r3-r7, lr}
@@ -41,7 +33,7 @@ FUN_02001B8C: ; 0x02001B8C
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
ldr r0, [sp, #0x4]
- bl FUN_02013690
+ bl ListMenuCursorNew
str r0, [r4, #0xc]
ldr r0, [sp, #0x24]
str r0, [r4, #0x10]
@@ -57,20 +49,20 @@ FUN_02001B8C: ; 0x02001B8C
strb r6, [r4, #0x17]
strb r7, [r4, #0x18]
ldrb r0, [r5, #0x8]
- bl FUN_02002E4C
+ bl GetFontAttribute
add r6, r0, #0x0
ldrb r0, [r5, #0x8]
mov r1, #0x2
- bl FUN_02002E4C
+ bl GetFontAttribute
add r0, r6, r0
strb r0, [r4, #0x19]
ldrb r0, [r5, #0x8]
mov r1, #0x1
- bl FUN_02002E4C
+ bl GetFontAttribute
add r6, r0, #0x0
ldrb r0, [r5, #0x8]
mov r1, #0x3
- bl FUN_02002E4C
+ bl GetFontAttribute
add r0, r6, r0
strb r0, [r4, #0x1a]
add r0, r4, #0x0
@@ -108,7 +100,7 @@ FUN_02001C34: ; 0x02001C34
add r6, r1, #0x0
add r4, r2, #0x0
mov r1, #0x0
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0x0
str r4, [sp, #0x0]
mov r0, #0x2
@@ -130,10 +122,10 @@ FUN_02001C5C: ; 0x02001C5C
strb r0, [r1, #0x0]
_02001C68:
ldr r0, [r4, #0xc]
- bl FUN_020136C0
+ bl DestroyListMenuCursorObj
ldrb r0, [r4, #0x1c]
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
thumb_func_start FUN_02001C78
@@ -420,7 +412,7 @@ FUN_02001E64: ; 0x02001E64
_02001E7C:
ldrb r0, [r5, #0x8]
mov r1, #0x6
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, sp, #0x8
add r7, r0, #0x0
add r0, r5, #0x0
@@ -437,7 +429,7 @@ _02001E7C:
ldrb r2, [r3, #0x1]
ldrb r3, [r3, #0x0]
ldr r0, [r5, #0x4]
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r5, #0x0
bl FUN_02002080
add r0, r6, #0x0
@@ -631,10 +623,10 @@ FUN_02001FF4: ; 0x02001FF4
add r5, r0, #0x0
ldrb r0, [r5, #0x8]
mov r1, #0x6
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0x0
ldr r0, [r5, #0x4]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrb r0, [r5, #0x19]
ldrb r1, [r5, #0x16]
ldrb r7, [r5, #0x17]
@@ -718,7 +710,7 @@ FUN_02002080: ; 0x02002080
ldrb r3, [r3, #0x0]
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x4]
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
_020020AA:
add sp, #0x4
pop {r3-r4, pc}
@@ -772,24 +764,24 @@ CreateYesNoMenu: ; 0x020020EC
add r4, r0, #0x0
mov r0, #0x2
add r1, r5, #0x0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r4, #0x0
mov r2, #0x29
mov r3, #0x0
add r6, r0, #0x0
- bl ListMenu_ItemFromMsgData ; YES
+ bl ListMenuItems_AppendFromMsgData ; YES
mov r3, #0x2a
add r2, r3, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
sub r3, #0x2c
- bl ListMenu_ItemFromMsgData ; NO
+ bl ListMenuItems_AppendFromMsgData ; NO
add r0, r4, #0x0
bl DestroyMsgData
add r0, r5, #0x0
mov r1, #0x1
str r6, [sp, #0x14]
- bl FUN_02018FF4
+ bl AllocWindows
add r1, r0, #0x0
str r1, [sp, #0x18]
mov r0, #0x0
@@ -894,9 +886,9 @@ FUN_020021EC: ; 0x020021EC
bl FUN_02019178
ldr r1, [r5, #0x4]
add r0, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [r5, #0x0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0x0
mov r1, #0x0
bl FUN_02001C5C
@@ -921,7 +913,7 @@ FUN_02002218: ; 0x02002218
mov r2, #0x0
str r3, [sp, #0x14]
add r3, r2, #0x0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add sp, #0x18
pop {r4, pc}
nop
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
index baa1b890..dc304639 100644
--- a/arm9/asm/unk_020023C0.s
+++ b/arm9/asm/unk_020023C0.s
@@ -147,7 +147,7 @@ _0200248C:
lsl r0, r0, #0x8
cmp r5, r0
bne _020024B0
- bl ErrorHandling
+ bl GF_AssertFail
_020024B0:
ldr r0, _02002664 ; =0x0000F0FD
cmp r5, r0
@@ -193,7 +193,7 @@ _020024F2:
mov r1, #0x1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x9]
- bl FUN_02002E4C
+ bl GetFontAttribute
ldrb r1, [r4, #0xf]
ldrb r2, [r4, #0xd]
add sp, #0xc
@@ -500,7 +500,7 @@ _0200275C:
bl FUN_02002A00
ldrb r1, [r4, #0x12]
ldr r0, [r4, #0x4]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrb r0, [r4, #0xa]
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xb]
@@ -520,7 +520,7 @@ _02002786:
bl FUN_02002A00
ldrb r0, [r4, #0x9]
mov r1, #0x1
- bl FUN_02002E4C
+ bl GetFontAttribute
ldrb r1, [r4, #0xf]
add r1, r1, r0
add r0, r4, #0x0
@@ -549,7 +549,7 @@ _020027B6:
ldr r0, [r4, #0x4]
mov r1, #0x0
lsr r3, r3, #0x18
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r1, #0x0
b _020027F2
_020027D8:
@@ -560,7 +560,7 @@ _020027D8:
mov r1, #0x0
mov r2, #0x4
lsr r3, r3, #0x18
- bl FUN_0201A8C8
+ bl ScrollWindow
add r0, r4, #0x0
add r0, #0x27
ldrb r0, [r0, #0x0]
@@ -686,7 +686,7 @@ _020028AC:
bl FUN_0201AB18
str r0, [sp, #0x28]
ldr r0, [r5, #0x4]
- bl FUN_0201AB0C
+ bl GetWindowWidth
ldr r1, _020029F8 ; =gTextFlags
ldrh r6, [r1, #0x2]
ldr r1, [sp, #0x28]
@@ -853,7 +853,7 @@ FUN_02002A00: ; 0x02002A00
bl FUN_0201AB18
add r6, r0, #0x0
ldr r0, [r5, #0x4]
- bl FUN_0201AB0C
+ bl GetWindowWidth
ldr r1, _02002A90 ; =gTextFlags
add r7, r6, #0x2
ldrh r4, [r1, #0x2]
diff --git a/arm9/asm/unk_02002C14.s b/arm9/asm/unk_02002C14.s
index c4049d4b..119c68ff 100644
--- a/arm9/asm/unk_02002C14.s
+++ b/arm9/asm/unk_02002C14.s
@@ -92,7 +92,7 @@ FUN_02002C84: ; 0x02002C84
add r5, r1, #0x0
cmp r4, #0x4
blt _02002C92
- bl ErrorHandling
+ bl GF_AssertFail
_02002C92:
ldr r0, _02002CBC ; =UNK_02106FC8
lsl r4, r4, #0x2
@@ -102,7 +102,7 @@ _02002C92:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02002CA6
- bl ErrorHandling
+ bl GF_AssertFail
_02002CA6:
ldr r0, _02002CBC ; =UNK_02106FC8
mov r1, #0x0
@@ -122,7 +122,7 @@ FUN_02002CC0: ; 0x02002CC0
add r4, r0, #0x0
cmp r4, #0x4
blt _02002CCC
- bl ErrorHandling
+ bl GF_AssertFail
_02002CCC:
ldr r0, _02002CF4 ; =UNK_02106FC8
lsl r4, r4, #0x2
@@ -132,7 +132,7 @@ _02002CCC:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02002CE0
- bl ErrorHandling
+ bl GF_AssertFail
_02002CE0:
ldr r0, _02002CF4 ; =UNK_02106FC8
mov r1, #0x1
@@ -152,7 +152,7 @@ FUN_02002CF8: ; 0x02002CF8
add r4, r0, #0x0
cmp r4, #0x4
blt _02002D04
- bl ErrorHandling
+ bl GF_AssertFail
_02002D04:
ldr r0, _02002D8C ; =UNK_02106FC8
lsl r6, r4, #0x2
@@ -284,7 +284,7 @@ FUN_02002DE0: ; 0x02002DE0
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02002DFA
- bl ErrorHandling
+ bl GF_AssertFail
_02002DFA:
ldr r0, _02002E10 ; =UNK_02106FC8
add r1, r5, #0x0
@@ -311,7 +311,7 @@ FUN_02002E14: ; 0x02002E14
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02002E2E
- bl ErrorHandling
+ bl GF_AssertFail
_02002E2E:
add r0, r5, #0x0
bl String_c_str
@@ -327,8 +327,8 @@ _02002E2E:
.balign 4
_02002E48: .word UNK_02106FC8
- thumb_func_start FUN_02002E4C
-FUN_02002E4C: ; 0x02002E4C
+ thumb_func_start GetFontAttribute
+GetFontAttribute: ; 0x02002E4C
mov r2, #0x0
cmp r1, #0x7
bhi _02002EAC
@@ -411,7 +411,7 @@ FUN_02002ED0: ; 0x02002ED0
mov r0, #0xe
mov r1, #0x6
add r2, r4, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x8
pop {r4, pc}
@@ -427,6 +427,6 @@ FUN_02002EEC: ; 0x02002EEC
mov r0, #0xe
mov r1, #0x7
add r2, r4, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x8
pop {r4, pc}
diff --git a/arm9/asm/unk_02002F08.s b/arm9/asm/unk_02002F08.s
index b844da17..fb6f96ff 100644
--- a/arm9/asm/unk_02002F08.s
+++ b/arm9/asm/unk_02002F08.s
@@ -18,7 +18,7 @@ FUN_02002F08: ; 0x02002F08
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02002F22
- bl ErrorHandling
+ bl GF_AssertFail
_02002F22:
add r0, r5, #0x0
bl String_c_str
@@ -103,7 +103,7 @@ FUN_02002F9C: ; 0x02002F9C
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02002FB4
- bl ErrorHandling
+ bl GF_AssertFail
_02002FB4:
add r0, r5, #0x0
bl String_c_str
@@ -226,10 +226,10 @@ FUN_02003084: ; 0x02003084
add r1, r2, #0x0
add r2, sp, #0x4
ldr r4, [sp, #0x1c]
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r6, r0, #0x0
bne _0200309E
- bl ErrorHandling
+ bl GF_AssertFail
_0200309E:
cmp r4, #0x0
bne _020030A6
@@ -247,7 +247,7 @@ _020030A6:
add r0, r4, r0
cmp r0, r1
bls _020030C0
- bl ErrorHandling
+ bl GF_AssertFail
_020030C0:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
diff --git a/arm9/asm/unk_020030E8.s b/arm9/asm/unk_020030E8.s
index 8e1d3360..f9b9de1f 100644
--- a/arm9/asm/unk_020030E8.s
+++ b/arm9/asm/unk_020030E8.s
@@ -18,7 +18,7 @@ FUN_02003108: ; 0x02003108
add r0, r7, r0
cmp r0, r1
bls _02003126
- bl ErrorHandling
+ bl GF_AssertFail
_02003126:
cmp r4, #0x3
bhi _0200315E
@@ -50,7 +50,7 @@ _02003156:
add r1, r0, #0x0
b _02003164
_0200315E:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_02003164:
lsl r0, r7, #0x10
@@ -72,10 +72,10 @@ FUN_0200317C: ; 0x0200317C
add r5, r3, #0x0
add r2, sp, #0x0
add r3, r4, #0x0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0x0
bne _02003192
- bl ErrorHandling
+ bl GF_AssertFail
_02003192:
cmp r5, #0x0
bne _0200319A
@@ -1089,7 +1089,7 @@ FUN_02003914: ; 0x02003914
ldr r0, [r0, #0x8]
cmp r1, r0
bls _0200393A
- bl ErrorHandling
+ bl GF_AssertFail
_0200393A:
sub r0, r7, #0x1
cmp r0, #0x1
@@ -1207,7 +1207,7 @@ FUN_020039E8: ; 0x020039E8
_02003A0A:
cmp r0, #0x0
bne _02003A12
- bl ErrorHandling
+ bl GF_AssertFail
_02003A12:
add r3, sp, #0x10
ldrh r0, [r3, #0x14]
@@ -1281,7 +1281,7 @@ FUN_02003A64: ; 0x02003A64
_02003A8E:
cmp r0, #0x0
bne _02003A96
- bl ErrorHandling
+ bl GF_AssertFail
_02003A96:
cmp r5, #0x0
beq _02003AC0
@@ -1387,10 +1387,10 @@ FUN_02003B40: ; 0x02003B40
add r0, r1, #0x0
add r1, r2, #0x0
add r2, sp, #0x4
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0x0
bne _02003B58
- bl ErrorHandling
+ bl GF_AssertFail
_02003B58:
ldr r0, [sp, #0x1c]
cmp r0, #0x0
diff --git a/arm9/asm/unk_020040F4.s b/arm9/asm/unk_020040F4.s
index e2418c14..cfd9551f 100644
--- a/arm9/asm/unk_020040F4.s
+++ b/arm9/asm/unk_020040F4.s
@@ -203,133 +203,133 @@ _0200421A: ; jump table (using 16-bit offset)
.short _020042AE - _0200421A - 2; case 3
_02004222:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200422C:
mov r0, #0x2
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004236:
mov r0, #0xd
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004240:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200424A:
mov r0, #0x2
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004254:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200425E:
mov r0, #0xb
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004268:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004272:
mov r0, #0xe
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200427C:
mov r0, #0x3
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004286:
mov r0, #0x6
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004290:
mov r0, #0x5
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200429A:
mov r0, #0x9
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042A4:
mov r0, #0xa
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042AE:
ldr r0, _02004330 ; =0x000005E5
- bl FUN_02003FDC
+ bl GF_Snd_LoadBank
ldr r0, _02004330 ; =0x000005E5
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
b _0200432C
_020042BE:
mov r0, #0xc
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042C8:
mov r0, #0x7
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042D2:
mov r0, #0x8
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042DC:
mov r0, #0xf
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042E6:
mov r0, #0x3
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042F0:
mov r0, #0x5
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042FA:
mov r0, #0xf
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004304:
mov r0, #0x4
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200430E:
ldr r0, _02004334 ; =0x000005ED
- bl FUN_02003FDC
+ bl GF_Snd_LoadBank
ldr r0, _02004334 ; =0x000005ED
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
b _0200432C
_0200431E:
ldr r0, _02004338 ; =0x000005EC
- bl FUN_02003FDC
+ bl GF_Snd_LoadBank
ldr r0, _02004338 ; =0x000005EC
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
_0200432C:
add r0, r1, #0x0
@@ -536,15 +536,15 @@ FUN_020044A8: ; 0x020044A8
mov r0, #0x17
bl FUN_02003D38
ldr r0, [r0, #0x0]
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
mov r0, #0x18
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
add r0, r4, #0x0
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
pop {r4, pc}
thumb_func_start FUN_020044D4
@@ -588,12 +588,12 @@ _02004528:
bne _02004560
mov r0, #0x2
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
mov r0, #0x4
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
cmp r4, r5
beq _02004554
mov r0, #0x1
@@ -628,17 +628,17 @@ FUN_02004568: ; 0x02004568
beq _02004594
add r0, r5, #0x0
mov r1, #0x4
- bl FUN_02003FA8
- bl ErrorHandling
+ bl GF_Snd_LoadSeqEx
+ bl GF_AssertFail
b _0200459C
_02004594:
ldrh r0, [r4, #0x0]
mov r1, #0x6
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
_0200459C:
mov r0, #0x1a
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
mov r0, #0x1
mov r1, #0x0
bl FUN_020047C8
@@ -671,18 +671,18 @@ FUN_020045C4: ; 0x020045C4
_020045E4:
mov r0, #0x1
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
ldrh r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
mov r0, #0x18
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
mov r0, #0x4
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
ldrh r0, [r4, #0x0]
bl FUN_02004900
ldr r1, _02004644 ; =0x000003E9
@@ -693,17 +693,17 @@ _020045E4:
beq _02004630
add r0, r7, #0x0
mov r1, #0x4
- bl FUN_02003FA8
- bl ErrorHandling
+ bl GF_Snd_LoadSeqEx
+ bl GF_AssertFail
b _02004638
_02004630:
ldrh r0, [r4, #0x0]
mov r1, #0x4
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
_02004638:
mov r0, #0x1a
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
_02004642:
pop {r3-r7, pc}
.balign 4
@@ -718,12 +718,12 @@ FUN_02004648: ; 0x02004648
bl FUN_020051AC
mov r0, #0x2
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
mov r0, #0x5
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
mov r0, #0x1
bl FUN_02004DBC
add r0, r4, #0x0
@@ -786,7 +786,7 @@ FUN_020046E8: ; 0x020046E8
bl FUN_02004180
mov r0, #0x1b
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
pop {r4, pc}
.balign 4
@@ -820,7 +820,7 @@ FUN_02004738: ; 0x02004738
push {r3, lr}
mov r0, #0x4
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
pop {r3, pc}
.balign 4
@@ -831,7 +831,7 @@ FUN_02004748: ; 0x02004748
bl GetSoundDataPointer
cmp r4, #0x7
blt _02004762
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x1a
bl FUN_02003D38
ldr r0, [r0, #0x0]
@@ -922,7 +922,7 @@ _02004800:
add r0, r4, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C0F8C
+ bl NNS_SndPlayerPause
strb r5, [r6, #0x0]
_0200480E:
pop {r4-r6, pc}
@@ -948,7 +948,7 @@ FUN_02004828: ; 0x02004828
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- bl FUN_020C0EF4
+ bl NNS_SndPlayerMoveVolume
pop {r3-r5, pc}
thumb_func_start FUN_0200483C
@@ -964,7 +964,7 @@ _02004844:
_0200484A:
bl FUN_02003FF4
add r1, r4, #0x0
- bl FUN_020C0F30
+ bl NNS_SndPlayerSetInitialVolume
pop {r4, pc}
.balign 4
@@ -972,7 +972,7 @@ _0200484A:
FUN_02004858: ; 0x02004858
push {r3-r5, lr}
add r5, r1, #0x0
- bl FUN_020C23FC
+ bl NNS_SndArcGetSeqParam
cmp r5, #0x1
beq _02004868
cmp r5, #0x8
@@ -1018,7 +1018,7 @@ FUN_020048A0: ; 0x020048A0
add r1, r5, #0x0
add r3, r2, #0x0
str r4, [sp, #0x0]
- bl FUN_020C3910
+ bl NNS_SndArcPlayerStartSeqEx
pop {r3-r5, pc}
.balign 4
@@ -1027,10 +1027,10 @@ FUN_020048BC: ; 0x020048BC
push {r4, lr}
add r4, r0, #0x0
bpl _020048C6
- bl ErrorHandling
+ bl GF_AssertFail
_020048C6:
add r0, r4, #0x0
- bl FUN_020C0F50
+ bl NNS_SndPlayerCountPlayingSeqByPlayerNo
pop {r4, pc}
.balign 4
@@ -1042,7 +1042,7 @@ FUN_020048D0: ; 0x020048D0
mov r0, #0xff
pop {r3, pc}
_020048DA:
- bl FUN_020C23FC
+ bl NNS_SndArcGetSeqParam
cmp r0, #0x0
bne _020048E6
mov r0, #0xff
@@ -1054,22 +1054,22 @@ _020048E6:
thumb_func_start FUN_020048EC
FUN_020048EC: ; 0x020048EC
- ldr r3, _020048F0 ; =FUN_020C0E14
+ ldr r3, _020048F0 ; =NNS_SndPlayerGetSeqNo
bx r3
.balign 4
-_020048F0: .word FUN_020C0E14
+_020048F0: .word NNS_SndPlayerGetSeqNo
thumb_func_start FUN_020048F4
FUN_020048F4: ; 0x020048F4
push {r3, lr}
bl FUN_02004900
- bl FUN_020C22D0
+ bl NNS_SndArcGetBankInfo
pop {r3, pc}
thumb_func_start FUN_02004900
FUN_02004900: ; 0x02004900
push {r3, lr}
- bl FUN_020C23FC
+ bl NNS_SndArcGetSeqParam
cmp r0, #0x0
bne _0200490E
mov r0, #0x0
@@ -1114,21 +1114,21 @@ FUN_02004930: ; 0x02004930
beq _02004954
cmp r5, #0xf
beq _02004954
- bl ErrorHandling
+ bl GF_AssertFail
_02004954:
cmp r5, #0xe
bne _02004962
ldrb r0, [r6, #0x0]
cmp r0, #0x0
bne _02004962
- bl ErrorHandling
+ bl GF_AssertFail
_02004962:
cmp r5, #0xf
bne _02004970
ldrb r0, [r4, #0x0]
cmp r0, #0x0
bne _02004970
- bl ErrorHandling
+ bl GF_AssertFail
_02004970:
cmp r5, #0xe
bne _0200497C
@@ -1155,7 +1155,7 @@ FUN_02004984: ; 0x02004984
beq _020049A8
cmp r5, #0xf
beq _020049A8
- bl ErrorHandling
+ bl GF_AssertFail
_020049A8:
cmp r5, #0xe
bne _020049D6
@@ -1166,7 +1166,7 @@ _020049A8:
bl FUN_02003D38
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_020C0688
+ bl NNS_SndWaveOutAllocChannel
str r0, [r4, #0x0]
cmp r0, #0x0
bne _020049CA
@@ -1177,7 +1177,7 @@ _020049CA:
strb r0, [r6, #0x0]
b _020049FE
_020049D0:
- bl ErrorHandling
+ bl GF_AssertFail
b _020049FE
_020049D6:
ldrb r0, [r4, #0x0]
@@ -1187,7 +1187,7 @@ _020049D6:
bl FUN_02003D38
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_020C0688
+ bl NNS_SndWaveOutAllocChannel
str r0, [r6, #0x0]
cmp r0, #0x0
bne _020049F4
@@ -1198,7 +1198,7 @@ _020049F4:
strb r0, [r4, #0x0]
b _020049FE
_020049FA:
- bl ErrorHandling
+ bl GF_AssertFail
_020049FE:
mov r0, #0x1
pop {r4-r6, pc}
@@ -1219,7 +1219,7 @@ FUN_02004A04: ; 0x02004A04
beq _02004A2A
cmp r5, #0xf
beq _02004A2A
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
_02004A2A:
cmp r5, #0xe
@@ -1230,12 +1230,12 @@ _02004A2A:
add r0, r5, #0x0
bl FUN_02004930
ldr r0, [r0, #0x0]
- bl FUN_020C0670
+ bl NNS_SndWaveOutFreeChannel
mov r0, #0x0
strb r0, [r6, #0x0]
pop {r4-r6, pc}
_02004A46:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
_02004A4C:
ldrb r0, [r4, #0x0]
@@ -1244,12 +1244,12 @@ _02004A4C:
add r0, r5, #0x0
bl FUN_02004930
ldr r0, [r0, #0x0]
- bl FUN_020C0670
+ bl NNS_SndWaveOutFreeChannel
mov r0, #0x0
strb r0, [r4, #0x0]
pop {r4-r6, pc}
_02004A64:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
.balign 4
@@ -1276,7 +1276,7 @@ FUN_02004A6C: ; 0x02004A6C
ldr r2, [r3, #0x8]
ldr r0, [r0, #0x0]
ldr r3, [r3, #0xc]
- bl FUN_020C054C
+ bl NNS_SndWaveOutStart
add r5, r0, #0x0
bne _02004AA4
add r0, r4, #0x0
@@ -1292,7 +1292,7 @@ FUN_02004AAC: ; 0x02004AAC
push {r3, lr}
bl FUN_02004930
ldr r0, [r0, #0x0]
- bl FUN_020C0510
+ bl NNS_SndWaveOutStop
pop {r3, pc}
.balign 4
@@ -1301,7 +1301,7 @@ FUN_02004ABC: ; 0x02004ABC
push {r3, lr}
bl FUN_02004930
ldr r0, [r0, #0x0]
- bl FUN_020C03B8
+ bl NNS_SndWaveOutIsPlaying
pop {r3, pc}
.balign 4
@@ -1316,7 +1316,7 @@ _02004AD6:
bl FUN_02004930
ldr r0, [r0, #0x0]
add r1, r4, #0x0
- bl FUN_020C041C
+ bl NNS_SndWaveOutSetPan
pop {r4, pc}
thumb_func_start FUN_02004AE4
@@ -1326,7 +1326,7 @@ FUN_02004AE4: ; 0x02004AE4
bl FUN_02004930
ldr r0, [r0, #0x0]
add r1, r4, #0x0
- bl FUN_020C044C
+ bl NNS_SndWaveOutSetSpeed
pop {r4, pc}
.balign 4
@@ -1346,14 +1346,14 @@ FUN_02004AF8: ; 0x02004AF8
bl _s32_div_f
add r1, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_020C04DC
+ bl NNS_SndWaveOutSetVolume
pop {r3-r5, pc}
_02004B20:
add r0, r4, #0x0
bl FUN_02004930
ldr r0, [r0, #0x0]
add r1, r5, #0x0
- bl FUN_020C04DC
+ bl NNS_SndWaveOutSetVolume
pop {r3-r5, pc}
thumb_func_start FUN_02004B30
@@ -1372,13 +1372,13 @@ FUN_02004B30: ; 0x02004B30
beq _02004B54
cmp r5, #0xf
beq _02004B54
- bl ErrorHandling
+ bl GF_AssertFail
_02004B54:
add r0, r6, #0x0
- bl FUN_020C226C
+ bl NNS_SndArcGetWaveArcInfo
add r7, r0, #0x0
bne _02004B68
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x30
mov r0, #0x0
pop {r3-r7, pc}
@@ -1386,10 +1386,10 @@ _02004B68:
ldr r0, [r7, #0x0]
lsl r0, r0, #0x8
lsr r0, r0, #0x8
- bl FUN_020C217C
+ bl NNS_SndArcGetFileSize
add r6, r0, #0x0
bne _02004B80
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x30
mov r0, #0x0
pop {r3-r7, pc}
@@ -1402,7 +1402,7 @@ _02004B80:
str r0, [r4, #0x0]
cmp r0, #0x0
bne _02004B9C
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x30
mov r0, #0x0
pop {r3-r7, pc}
@@ -1416,12 +1416,12 @@ _02004B9C:
lsr r0, r0, #0x8
add r2, r6, #0x0
mov r3, #0x0
- bl FUN_020C2104
+ bl NNS_SndArcReadFile
mov r1, #0x0
mvn r1, r1
cmp r0, r1
bne _02004BC6
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x30
mov r0, #0x0
pop {r3-r7, pc}
@@ -1502,7 +1502,7 @@ FUN_02004C3C: ; 0x02004C3C
beq _02004C60
cmp r5, #0xf
beq _02004C60
- bl ErrorHandling
+ bl GF_AssertFail
_02004C60:
add r0, r5, #0x0
bl FUN_02004AAC
@@ -1518,10 +1518,10 @@ _02004C76:
thumb_func_start FUN_02004C78
FUN_02004C78: ; 0x02004C78
- ldr r3, _02004C7C ; =FUN_020C1E58
+ ldr r3, _02004C7C ; =NNS_SndCaptureIsActive
bx r3
.balign 4
-_02004C7C: .word FUN_020C1E58
+_02004C7C: .word NNS_SndCaptureIsActive
thumb_func_start FUN_02004C80
FUN_02004C80: ; 0x02004C80
@@ -1537,23 +1537,23 @@ FUN_02004C80: ; 0x02004C80
mov r2, #0x0
lsl r3, r3, #0x6
str r4, [sp, #0x0]
- bl FUN_020C1FF0
+ bl NNS_SndCaptureStartReverb
add sp, #0x4
pop {r3-r4, pc}
thumb_func_start FUN_02004CA4
FUN_02004CA4: ; 0x02004CA4
- ldr r3, _02004CA8 ; =FUN_020C1F54
+ ldr r3, _02004CA8 ; =NNS_SndCaptureStopReverb
bx r3
.balign 4
-_02004CA8: .word FUN_020C1F54
+_02004CA8: .word NNS_SndCaptureStopReverb
thumb_func_start FUN_02004CAC
FUN_02004CAC: ; 0x02004CAC
- ldr r3, _02004CB0 ; =FUN_020C1FA4
+ ldr r3, _02004CB0 ; =NNS_SndCaptureSetReverbVolume
bx r3
.balign 4
-_02004CB0: .word FUN_020C1FA4
+_02004CB0: .word NNS_SndCaptureSetReverbVolume
thumb_func_start FUN_02004CB4
FUN_02004CB4: ; 0x02004CB4
@@ -1579,7 +1579,7 @@ FUN_02004CB4: ; 0x02004CB4
ldr r3, _02004CF8 ; =0x000055F0
add r0, r4, #0x0
mov r2, #0x0
- bl FUN_020C1EA4
+ bl NNS_SndCaptureStartEffect
add sp, #0xc
pop {r3-r4, pc}
nop
@@ -1588,10 +1588,10 @@ _02004CF8: .word 0x000055F0
thumb_func_start FUN_02004CFC
FUN_02004CFC: ; 0x02004CFC
- ldr r3, _02004D00 ; =FUN_020C1E68
+ ldr r3, _02004D00 ; =NNS_SndCaptureStopEffect
bx r3
.balign 4
-_02004D00: .word FUN_020C1E68
+_02004D00: .word NNS_SndCaptureStopEffect
thumb_func_start FUN_02004D04
FUN_02004D04: ; 0x02004D04
@@ -1619,7 +1619,7 @@ FUN_02004D20: ; 0x02004D20
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- bl FUN_020C0EA4
+ bl NNS_SndPlayerSetTrackPitch
pop {r3-r5, pc}
thumb_func_start FUN_02004D34
@@ -1642,14 +1642,14 @@ FUN_02004D4C: ; 0x02004D4C
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- bl FUN_020C0E7C
+ bl NNS_SndPlayerSetTrackPan
pop {r3-r5, pc}
thumb_func_start FUN_02004D60
FUN_02004D60: ; 0x02004D60
push {r4, lr}
add r4, r0, #0x0
- bl FUN_020C0174
+ bl NNS_SndSetMonoFlag
ldr r0, _02004D70 ; =UNK_021C3DD8
str r4, [r0, #0x0]
pop {r4, pc}
@@ -1824,7 +1824,7 @@ FUN_02004E98: ; 0x02004E98
add r5, r0, #0x0
mov r0, #0x5
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
lsl r0, r5, #0x10
lsr r4, r0, #0x10
ldr r0, _02004ECC ; =0x000001B9
@@ -1839,7 +1839,7 @@ _02004EBA:
mov r4, #0x1
_02004EBC:
add r0, r4, #0x0
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r0, r4, #0x0
bl FUN_02004ED0
pop {r3-r5, pc}
@@ -1866,20 +1866,20 @@ FUN_02004ED0: ; 0x02004ED0
_02004EF0:
mov r0, #0x1
_02004EF2:
- bl FUN_020C226C
+ bl NNS_SndArcGetWaveArcInfo
cmp r0, #0x0
bne _02004F02
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_02004F02:
ldr r0, [r0, #0x0]
lsl r0, r0, #0x8
lsr r0, r0, #0x8
- bl FUN_020C20DC
+ bl NNS_SndArcGetFileAddress
cmp r0, #0x0
bne _02004F18
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_02004F18:
@@ -1928,7 +1928,7 @@ _02004F62:
FUN_02004F64: ; 0x02004F64
push {r3, lr}
bl FUN_02003FF4
- bl FUN_020C0DD4
+ bl NNS_SndPlayerGetTick
pop {r3, pc}
thumb_func_start FUN_02004F70
@@ -2216,12 +2216,12 @@ _0200515A:
thumb_func_start FUN_02005160
FUN_02005160: ; 0x02005160
- ldr r3, _02005168 ; =FUN_020C1148
+ ldr r3, _02005168 ; =NNS_SndPlayerSetAllocatableChannel
add r1, r0, #0x0
mov r0, #0x7
bx r3
.balign 4
-_02005168: .word FUN_020C1148
+_02005168: .word NNS_SndPlayerSetAllocatableChannel
thumb_func_start FUN_0200516C
FUN_0200516C: ; 0x0200516C
@@ -2282,7 +2282,7 @@ _020051E8: .word 0x0000047E
thumb_func_start FUN_020051EC
FUN_020051EC: ; 0x020051EC
- ldr r3, _020051F0 ; =FUN_020C1180
+ ldr r3, _020051F0 ; =NNS_SndPlayerSetPlayerVolume
bx r3
.balign 4
-_020051F0: .word FUN_020C1180
+_020051F0: .word NNS_SndPlayerSetPlayerVolume
diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s
index ccb8d272..c2d91fe9 100644
--- a/arm9/asm/unk_020051F4.s
+++ b/arm9/asm/unk_020051F4.s
@@ -12,7 +12,7 @@ FUN_020051F4: ; 0x020051F4
add r4, r0, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C3980
+ bl NNS_SndArcPlayerStartSeq
add r6, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -47,7 +47,7 @@ _0200523E:
add r4, r0, #0x0
b _02005258
_02005250:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r4-r6, pc}
_02005258:
@@ -81,16 +81,16 @@ FUN_02005288: ; 0x02005288
mov r0, #0x3
add r4, r2, #0x0
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
add r0, r5, #0x0
- bl FUN_02003F90
+ bl GF_Snd_LoadSeq
mov r0, #0x1a
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
add r0, r4, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C3980
+ bl NNS_SndArcPlayerStartSeq
pop {r3-r5, pc}
.balign 4
@@ -123,7 +123,7 @@ FUN_020052B8: ; 0x020052B8
add r0, r6, #0x0
add r3, r1, #0x0
str r5, [sp, #0x0]
- bl FUN_020C3910
+ bl NNS_SndArcPlayerStartSeqEx
add sp, #0x4
pop {r3-r6, pc}
.balign 4
@@ -134,7 +134,7 @@ FUN_02005308: ; 0x02005308
add r5, r1, #0x0
cmp r0, #0x4
beq _02005318
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_02005318:
@@ -142,17 +142,17 @@ _02005318:
bl FUN_020048D0
cmp r0, #0x7
beq _0200532A
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0200532A:
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
mov r0, #0x7
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C3980
+ bl NNS_SndArcPlayerStartSeq
add r4, r0, #0x0
add r0, r5, #0x0
bl FUN_02004110
@@ -165,14 +165,14 @@ _0200532A:
FUN_02005350: ; 0x02005350
push {r4, lr}
add r4, r0, #0x0
- bl FUN_020C0FDC
+ bl NNS_SndPlayerStopSeqBySeqNo
add r0, r4, #0x0
bl FUN_020048D0
cmp r0, #0xff
beq _0200536E
bl FUN_02004018
bl FUN_02003FF4
- bl FUN_020C0F68
+ bl NNS_SndHandleReleaseSeq
_0200536E:
bl FUN_02005374
pop {r4, pc}
@@ -270,7 +270,7 @@ FUN_0200541C: ; 0x0200541C
bl FUN_02003D38
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_020C0F9C
+ bl NNS_SndPlayerStopSeqAll
ldrb r0, [r5, #0x0]
cmp r0, #0x1
bne _02005440
@@ -299,7 +299,7 @@ FUN_02005454: ; 0x02005454
mov r0, #0x7
bl FUN_02003FF4
mov r1, #0x0
- bl FUN_020C10A4
+ bl NNS_SndPlayerStopSeq
bl FUN_02005374
mov r5, #0x0
add r4, r5, #0x0
@@ -351,7 +351,7 @@ FUN_020054C8: ; 0x020054C8
add r4, r0, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C3980
+ bl NNS_SndArcPlayerStartSeq
add r6, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -362,10 +362,10 @@ FUN_020054C8: ; 0x020054C8
thumb_func_start FUN_020054F0
FUN_020054F0: ; 0x020054F0
- ldr r3, _020054F4 ; =FUN_020C0FDC
+ ldr r3, _020054F4 ; =NNS_SndPlayerStopSeqBySeqNo
bx r3
.balign 4
-_020054F4: .word FUN_020C0FDC
+_020054F4: .word NNS_SndPlayerStopSeqBySeqNo
thumb_func_start FUN_020054F8
FUN_020054F8: ; 0x020054F8
@@ -373,7 +373,7 @@ FUN_020054F8: ; 0x020054F8
add r4, r1, #0x0
bl FUN_02003FF4
add r1, r4, #0x0
- bl FUN_020C10A4
+ bl NNS_SndPlayerStopSeq
pop {r4, pc}
thumb_func_start FUN_02005508
@@ -411,7 +411,7 @@ FUN_02005530: ; 0x02005530
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- bl FUN_020C0E7C
+ bl NNS_SndPlayerSetTrackPan
pop {r3-r5, pc}
thumb_func_start FUN_0200554C
@@ -428,7 +428,7 @@ _0200555C:
bl FUN_02003FF4
add r1, r7, #0x0
add r2, r6, #0x0
- bl FUN_020C0E7C
+ bl NNS_SndPlayerSetTrackPan
add r5, r5, #0x1
cmp r5, #0x4
blt _0200555C
@@ -483,7 +483,7 @@ _020055BC:
sub r1, r1, #0x3
add r2, r5, #0x0
add r3, r1, #0x0
- bl FUN_020C3910
+ bl NNS_SndArcPlayerStartSeqEx
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x1
@@ -497,7 +497,7 @@ _020055E8:
sub r1, r1, #0x3
add r2, r5, #0x0
add r3, r1, #0x0
- bl FUN_020C3910
+ bl NNS_SndArcPlayerStartSeqEx
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x8
@@ -525,11 +525,11 @@ FUN_02005614: ; 0x02005614
mov r0, #0x1
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C10A4
+ bl NNS_SndPlayerStopSeq
mov r0, #0x8
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C10A4
+ bl NNS_SndPlayerStopSeq
ldrb r0, [r6, #0x0]
cmp r0, #0x1
bne _02005658
@@ -1072,7 +1072,7 @@ FUN_02005AE0: ; 0x02005AE0
bl AllocFromHeap
add r4, r0, #0x0
bne _02005B04
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
_02005B04:
mov r2, #0x0
@@ -1216,8 +1216,8 @@ FUN_02005BF8: ; 0x02005BF8
pop {r3-r6, pc}
.balign 4
- thumb_func_start PlayBGM
-PlayBGM: ; 0x02005C28
+ thumb_func_start PlaySound
+PlaySound: ; 0x02005C28
push {r3-r5, lr}
add r5, r0, #0x0
bl FUN_020048F4
@@ -1232,14 +1232,14 @@ PlayBGM: ; 0x02005C28
_02005C48:
mov r0, #0x1c
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
add r0, r5, #0x0
mov r1, #0x3
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
mov r0, #0x2
bl FUN_02003FF4
add r1, r5, #0x0
- bl FUN_020C3980
+ bl NNS_SndArcPlayerStartSeq
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x2
@@ -1279,10 +1279,10 @@ FUN_02005CA0: ; 0x02005CA0
mov r0, #0x2
bl FUN_02003FF4
add r1, r4, #0x0
- bl FUN_020C10A4
+ bl NNS_SndPlayerStopSeq
mov r0, #0x6
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
pop {r4, pc}
thumb_func_start FUN_02005CBC
diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s
index 6a601c58..7a7010b0 100644
--- a/arm9/asm/unk_02005CFC.s
+++ b/arm9/asm/unk_02005CFC.s
@@ -30,7 +30,7 @@ FUN_02005D20: ; 0x02005D20
bl FUN_02003D38
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02029F04
+ bl Chatot_exists
cmp r0, #0x0
bne _02005D3A
mov r0, #0x0
@@ -80,10 +80,10 @@ _02005D70:
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r6, #0x0
- bl FUN_02029F10
+ bl Chatot_GetData
add r1, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_02029F14
+ bl Chatot_Decode
mov r0, #0xe
bl FUN_02004930
str r0, [sp, #0x8]
@@ -192,7 +192,7 @@ FUN_02005E6C: ; 0x02005E6C
bl FUN_02004DB4
add r1, r0, #0x0
add r0, r4, #0x0
- bl FUN_02029F4C
+ bl Chatot_Encode
pop {r4, pc}
.balign 4
@@ -250,14 +250,14 @@ _02005EDC: .word 0x000001B9
FUN_02005EE0: ; 0x02005EE0
push {r4, lr}
add r4, r0, #0x0
- bl FUN_02029F04
+ bl Chatot_exists
cmp r0, #0x0
bne _02005EF0
mov r0, #0x0
pop {r4, pc}
_02005EF0:
add r0, r4, #0x0
- bl FUN_02029F10
+ bl Chatot_GetData
mov r1, #0xf
ldrsb r0, [r0, r1]
sub r1, #0x2d
diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s
deleted file mode 100644
index 5528150d..00000000
--- a/arm9/asm/unk_02006864.s
+++ /dev/null
@@ -1,698 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020ECB98
-UNK_020ECB98: ; 0x020ECB98
- .word FUN_020B1768
- .word FUN_020B1528
-
- .global UNK_020ECBA0
-UNK_020ECBA0: ; 0x020ECBA0
- .word GX_LoadOBJ, GXS_LoadOBJ
-
- .global UNK_020ECBA8
-UNK_020ECBA8: ; 0x020ECBA8
- .word FUN_020B1768, FUN_020B1528
-
- .global UNK_020ECBB0
-UNK_020ECBB0: ; 0x020ECBB0
- .word GX_LoadBGPltt, GX_LoadOBJPltt, GX_LoadBGExtPltt, GX_LoadOBJExtPltt
- .word GXS_LoadBGPltt, GXS_LoadOBJPltt, GXS_LoadBGExtPltt, GXS_LoadOBJExtPltt
-
- .text
-
- thumb_func_start FUN_0200687C
-FUN_0200687C: ; 0x0200687C
- push {r3-r7, lr}
- sub sp, #0x8
- add r6, r2, #0x0
- mov r2, #0x0
- add r5, r3, #0x0
- str r2, [sp, #0x0]
- ldr r2, [sp, #0x28]
- ldr r3, [sp, #0x2c]
- ldr r4, [sp, #0x24]
- bl UncompressFromNarc
- add r7, r0, #0x0
- beq _020068C2
- add r1, sp, #0x4
- bl FUN_020B0030
- cmp r0, #0x0
- beq _020068BC
- cmp r4, #0x0
- bne _020068A8
- ldr r0, [sp, #0x4]
- ldr r4, [r0, #0x10]
-_020068A8:
- ldr r0, [sp, #0x20]
- lsl r1, r5, #0x18
- str r0, [sp, #0x0]
- ldr r2, [sp, #0x4]
- add r0, r6, #0x0
- ldr r2, [r2, #0x14]
- lsr r1, r1, #0x18
- add r3, r4, #0x0
- bl FUN_02017E14
-_020068BC:
- add r0, r7, #0x0
- bl FreeToHeap
-_020068C2:
- add r0, r4, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020068C8
-FUN_020068C8: ; 0x020068C8
- push {r3-r7, lr}
- sub sp, #0x8
- add r6, r2, #0x0
- mov r2, #0x1
- add r5, r3, #0x0
- str r2, [sp, #0x0]
- ldr r2, [sp, #0x28]
- ldr r3, [sp, #0x2c]
- ldr r4, [sp, #0x24]
- bl UncompressFromNarc
- add r7, r0, #0x0
- beq _0200692C
- add r1, sp, #0x4
- bl FUN_020B0180
- cmp r0, #0x0
- beq _02006926
- cmp r4, #0x0
- bne _020068F4
- ldr r0, [sp, #0x4]
- ldr r4, [r0, #0x8]
-_020068F4:
- lsl r1, r5, #0x18
- add r0, r6, #0x0
- lsr r1, r1, #0x18
- bl FUN_0201886C
- cmp r0, #0x0
- beq _02006912
- ldr r2, [sp, #0x4]
- lsl r1, r5, #0x18
- add r0, r6, #0x0
- lsr r1, r1, #0x18
- add r2, #0xc
- add r3, r4, #0x0
- bl FUN_02017DFC
-_02006912:
- ldr r0, [sp, #0x20]
- lsl r1, r5, #0x18
- str r0, [sp, #0x0]
- ldr r2, [sp, #0x4]
- add r0, r6, #0x0
- lsr r1, r1, #0x18
- add r2, #0xc
- add r3, r4, #0x0
- bl FUN_02017CE8
-_02006926:
- add r0, r7, #0x0
- bl FreeToHeap
-_0200692C:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02006930
-FUN_02006930: ; 0x02006930
- push {lr}
- sub sp, #0xc
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x10]
- str r3, [sp, #0x4]
- ldr r3, [sp, #0x14]
- str r3, [sp, #0x8]
- mov r3, #0x0
- bl FUN_02006948
- add sp, #0xc
- pop {pc}
-
- thumb_func_start FUN_02006948
-FUN_02006948: ; 0x02006948
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r2, #0x0
- add r7, r3, #0x0
- mov r2, #0x1
- str r2, [sp, #0x0]
- ldr r3, [sp, #0x28]
- mov r2, #0x0
- ldr r6, [sp, #0x20]
- ldr r5, [sp, #0x24]
- bl UncompressFromNarc
- str r0, [sp, #0x4]
- cmp r0, #0x0
- beq _02006A2A
- add r1, sp, #0x8
- bl FUN_020B0138
- cmp r0, #0x0
- beq _02006A24
- ldr r0, [sp, #0x8]
- ldr r1, [r0, #0xc]
- add r1, r1, r7
- str r1, [r0, #0xc]
- cmp r5, #0x0
- bne _02006982
- ldr r0, [sp, #0x8]
- ldr r0, [r0, #0x8]
- sub r5, r0, r7
-_02006982:
- ldr r0, [sp, #0x8]
- add r1, r5, #0x0
- ldr r0, [r0, #0xc]
- bl DC_FlushRange
- cmp r4, #0x7
- bhi _02006A14
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0200699C: ; jump table (using 16-bit offset)
- .short _02006A14 - _0200699C - 2; case 0
- .short _02006A14 - _0200699C - 2; case 1
- .short _020069AC - _0200699C - 2; case 2
- .short _020069E0 - _0200699C - 2; case 3
- .short _02006A14 - _0200699C - 2; case 4
- .short _02006A14 - _0200699C - 2; case 5
- .short _020069C6 - _0200699C - 2; case 6
- .short _020069FA - _0200699C - 2; case 7
-_020069AC:
- bl GX_BeginLoadBGExtPltt
- ldr r0, [sp, #0x8]
- ldr r3, _02006A30 ; =UNK_020ECBB0
- lsl r4, r4, #0x2
- ldr r0, [r0, #0xc]
- ldr r3, [r3, r4]
- add r1, r6, #0x0
- add r2, r5, #0x0
- blx r3
- bl GX_EndLoadBGExtPltt
- b _02006A24
-_020069C6:
- bl GXS_BeginLoadBGExtPltt
- ldr r0, [sp, #0x8]
- ldr r3, _02006A30 ; =UNK_020ECBB0
- lsl r4, r4, #0x2
- ldr r0, [r0, #0xc]
- ldr r3, [r3, r4]
- add r1, r6, #0x0
- add r2, r5, #0x0
- blx r3
- bl GXS_EndLoadBGExtPltt
- b _02006A24
-_020069E0:
- bl GX_BeginLoadOBJExtPltt
- ldr r0, [sp, #0x8]
- ldr r3, _02006A30 ; =UNK_020ECBB0
- lsl r4, r4, #0x2
- ldr r0, [r0, #0xc]
- ldr r3, [r3, r4]
- add r1, r6, #0x0
- add r2, r5, #0x0
- blx r3
- bl GX_EndLoadOBJExtPltt
- b _02006A24
-_020069FA:
- bl GXS_BeginLoadOBJExtPltt
- ldr r0, [sp, #0x8]
- ldr r3, _02006A30 ; =UNK_020ECBB0
- lsl r4, r4, #0x2
- ldr r0, [r0, #0xc]
- ldr r3, [r3, r4]
- add r1, r6, #0x0
- add r2, r5, #0x0
- blx r3
- bl GXS_EndLoadOBJExtPltt
- b _02006A24
-_02006A14:
- ldr r0, [sp, #0x8]
- ldr r3, _02006A30 ; =UNK_020ECBB0
- lsl r4, r4, #0x2
- ldr r0, [r0, #0xc]
- ldr r3, [r3, r4]
- add r1, r6, #0x0
- add r2, r5, #0x0
- blx r3
-_02006A24:
- ldr r0, [sp, #0x4]
- bl FreeToHeap
-_02006A2A:
- add sp, #0xc
- pop {r4-r7, pc}
- nop
-_02006A30: .word UNK_020ECBB0
-
- thumb_func_start FUN_02006A34
-FUN_02006A34: ; 0x02006A34
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r2, #0x0
- mov r2, #0x1
- add r6, r3, #0x0
- str r2, [sp, #0x0]
- ldr r2, [sp, #0x24]
- ldr r3, [sp, #0x28]
- ldr r4, [sp, #0x20]
- bl UncompressFromNarc
- add r7, r0, #0x0
- beq _02006A80
- add r1, sp, #0x4
- bl FUN_020B0088
- cmp r0, #0x0
- beq _02006A7A
- cmp r4, #0x0
- bne _02006A60
- ldr r0, [sp, #0x4]
- ldr r4, [r0, #0x10]
-_02006A60:
- ldr r0, [sp, #0x4]
- add r1, r4, #0x0
- ldr r0, [r0, #0x14]
- bl DC_FlushRange
- ldr r0, [sp, #0x4]
- ldr r3, _02006A88 ; =UNK_020ECBA0
- lsl r5, r5, #0x2
- ldr r0, [r0, #0x14]
- ldr r3, [r3, r5]
- add r1, r6, #0x0
- add r2, r4, #0x0
- blx r3
-_02006A7A:
- add r0, r7, #0x0
- bl FreeToHeap
-_02006A80:
- add r0, r4, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- nop
-_02006A88: .word UNK_020ECBA0
-
- thumb_func_start FUN_02006A8C
-FUN_02006A8C: ; 0x02006A8C
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r2, #0x0
- add r4, r3, #0x0
- mov r2, #0x1
- str r2, [sp, #0x0]
- ldr r3, [sp, #0x20]
- mov r2, #0x0
- bl UncompressFromNarc
- add r6, r0, #0x0
- beq _02006AE0
- add r1, sp, #0x4
- bl FUN_020B00F0
- add r7, r0, #0x0
- add r0, r6, #0x0
- add r1, sp, #0x8
- bl FUN_020B0138
- cmp r0, #0x0
- beq _02006ADA
- cmp r7, #0x0
- beq _02006ACE
- ldr r0, [sp, #0x24]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0x4]
- add r3, r5, #0x0
- bl FUN_020B10E8
- b _02006ADA
-_02006ACE:
- ldr r0, [sp, #0x8]
- ldr r3, [sp, #0x24]
- add r1, r4, #0x0
- add r2, r5, #0x0
- bl FUN_020B1240
-_02006ADA:
- add r0, r6, #0x0
- bl FreeToHeap
-_02006AE0:
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02006AE4
-FUN_02006AE4: ; 0x02006AE4
- push {r4-r6, lr}
- sub sp, #0x8
- add r5, r3, #0x0
- mov r3, #0x1
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x24]
- bl UncompressFromNarc
- add r6, r0, #0x0
- ldr r4, _02006B30 ; =0x00000000
- beq _02006B28
- add r1, sp, #0x4
- bl FUN_020B0088
- cmp r0, #0x0
- beq _02006B22
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- beq _02006B0E
- ldr r0, [sp, #0x4]
- str r1, [r0, #0x10]
-_02006B0E:
- ldr r4, _02006B34 ; =UNK_020ECBA8
- lsl r5, r5, #0x2
- ldr r0, [sp, #0x4]
- ldr r1, [sp, #0x20]
- ldr r2, [sp, #0x1c]
- ldr r3, [sp, #0x28]
- ldr r4, [r4, r5]
- blx r4
- ldr r0, [sp, #0x4]
- ldr r4, [r0, #0x10]
-_02006B22:
- add r0, r6, #0x0
- bl FreeToHeap
-_02006B28:
- add r0, r4, #0x0
- add sp, #0x8
- pop {r4-r6, pc}
- nop
-_02006B30: .word 0x00000000
-_02006B34: .word UNK_020ECBA8
-
- thumb_func_start FUN_02006B38
-FUN_02006B38: ; 0x02006B38
- push {r4-r6, lr}
- sub sp, #0x8
- add r5, r3, #0x0
- mov r3, #0x1
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x24]
- bl UncompressFromNarc
- add r4, r0, #0x0
- beq _02006B9E
- add r1, sp, #0x4
- bl FUN_020B0088
- cmp r0, #0x0
- beq _02006B98
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- beq _02006B60
- ldr r0, [sp, #0x4]
- str r1, [r0, #0x10]
-_02006B60:
- ldr r0, [sp, #0x1c]
- cmp r0, #0x1
- beq _02006B6C
- cmp r0, #0x2
- beq _02006B7C
- b _02006B88
-_02006B6C:
- mov r0, #0x1
- lsl r0, r0, #0x1a
- ldr r1, [r0, #0x0]
- ldr r0, _02006BA4 ; =0x00300010
- and r1, r0
- ldr r0, [sp, #0x4]
- str r1, [r0, #0x8]
- b _02006B88
-_02006B7C:
- ldr r0, _02006BA8 ; =0x04001000
- ldr r1, [r0, #0x0]
- ldr r0, _02006BA4 ; =0x00300010
- and r1, r0
- ldr r0, [sp, #0x4]
- str r1, [r0, #0x8]
-_02006B88:
- lsl r6, r5, #0x2
- ldr r5, _02006BAC ; =UNK_020ECB98
- ldr r0, [sp, #0x4]
- ldr r1, [sp, #0x20]
- ldr r2, [sp, #0x1c]
- ldr r3, [sp, #0x28]
- ldr r5, [r5, r6]
- blx r5
-_02006B98:
- add r0, r4, #0x0
- bl FreeToHeap
-_02006B9E:
- add sp, #0x8
- pop {r4-r6, pc}
- nop
-_02006BA4: .word 0x00300010
-_02006BA8: .word 0x04001000
-_02006BAC: .word UNK_020ECB98
-
- thumb_func_start FUN_02006BB0
-FUN_02006BB0: ; 0x02006BB0
- push {r3-r5, lr}
- add r4, r3, #0x0
- mov r3, #0x0
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x10]
- bl UncompressFromNarc
- add r5, r0, #0x0
- beq _02006BD6
- add r1, r4, #0x0
- bl FUN_020B0030
- cmp r0, #0x0
- bne _02006BD6
- add r0, r5, #0x0
- bl FreeToHeap
- mov r0, #0x0
- pop {r3-r5, pc}
-_02006BD6:
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02006BDC
-FUN_02006BDC: ; 0x02006BDC
- push {r3-r5, lr}
- add r4, r3, #0x0
- mov r3, #0x0
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x10]
- bl UncompressFromNarc
- add r5, r0, #0x0
- beq _02006C02
- add r1, r4, #0x0
- bl FUN_020B0180
- cmp r0, #0x0
- bne _02006C02
- add r0, r5, #0x0
- bl FreeToHeap
- mov r0, #0x0
- pop {r3-r5, pc}
-_02006C02:
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02006C08
-FUN_02006C08: ; 0x02006C08
- push {r3-r5, lr}
- add r5, r2, #0x0
- mov r2, #0x0
- str r2, [sp, #0x0]
- bl UncompressFromNarc
- add r4, r0, #0x0
- beq _02006C2C
- add r1, r5, #0x0
- bl FUN_020B0138
- cmp r0, #0x0
- bne _02006C2C
- add r0, r4, #0x0
- bl FreeToHeap
- mov r0, #0x0
- pop {r3-r5, pc}
-_02006C2C:
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02006C30
-FUN_02006C30: ; 0x02006C30
- push {r3-r5, lr}
- add r4, r3, #0x0
- mov r3, #0x0
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x10]
- bl UncompressFromNarc
- add r5, r0, #0x0
- beq _02006C56
- add r1, r4, #0x0
- bl FUN_020AFEB8
- cmp r0, #0x0
- bne _02006C56
- add r0, r5, #0x0
- bl FreeToHeap
- mov r0, #0x0
- pop {r3-r5, pc}
-_02006C56:
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02006C5C
-FUN_02006C5C: ; 0x02006C5C
- push {r3-r5, lr}
- add r4, r3, #0x0
- mov r3, #0x0
- str r3, [sp, #0x0]
- ldr r3, [sp, #0x10]
- bl UncompressFromNarc
- add r5, r0, #0x0
- beq _02006C82
- add r1, r4, #0x0
- bl thunk_FUN_020afda0_2
- cmp r0, #0x0
- bne _02006C82
- add r0, r5, #0x0
- bl FreeToHeap
- mov r0, #0x0
- pop {r3-r5, pc}
-_02006C82:
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02006C88
-FUN_02006C88: ; 0x02006C88
- push {r3, lr}
- add r3, r2, #0x0
- mov r2, #0x0
- str r2, [sp, #0x0]
- mov r2, #0x1
- bl UncompressFromNarc
- pop {r3, pc}
-
- thumb_func_start UncompressFromNarc
-UncompressFromNarc: ; 0x02006C98
- ; BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4)
- push {r3-r7, lr}
- add r5, r2, #0x0
- add r7, r0, #0x0
- add r6, r3, #0x0
- str r1, [sp, #0x0]
- cmp r5, #0x0
- bne _02006CAC
- ldr r2, [sp, #0x18]
- cmp r2, #0x1
- bne _02006CC0
-_02006CAC:
- ldr r1, [sp, #0x0]
- add r0, r7, #0x0
- bl GetNarcMemberSizeByIdPair
- add r1, r0, #0x0
- add r0, r6, #0x0
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- b _02006CCE
-_02006CC0:
- bl GetNarcMemberSizeByIdPair
- add r1, r0, #0x0
- add r0, r6, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
-_02006CCE:
- cmp r4, #0x0
- beq _02006D12
- ldr r2, [sp, #0x0]
- add r0, r4, #0x0
- add r1, r7, #0x0
- bl ReadWholeNarcMemberByIdPair
- cmp r5, #0x0
- beq _02006D12
- ldr r0, [sp, #0x18]
- cmp r0, #0x0
- bne _02006CF2
- ldr r1, [r4, #0x0]
- add r0, r6, #0x0
- lsr r1, r1, #0x8
- bl AllocFromHeap
- b _02006CFC
-_02006CF2:
- ldr r1, [r4, #0x0]
- add r0, r6, #0x0
- lsr r1, r1, #0x8
- bl AllocFromHeapAtEnd
-_02006CFC:
- add r5, r0, #0x0
- cmp r5, #0x0
- beq _02006D10
- add r0, r4, #0x0
- add r1, r5, #0x0
- bl MI_UncompressLZ8
- add r0, r4, #0x0
- bl FreeToHeap
-_02006D10:
- add r4, r5, #0x0
-_02006D12:
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02006D18
-FUN_02006D18: ; 0x02006D18
- push {r3-r7, lr}
- sub sp, #0x8
- ldr r5, [sp, #0x24]
- str r0, [sp, #0x0]
- str r1, [sp, #0x4]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl GetNarcMemberSizeByIdPair
- str r0, [r5, #0x0]
- cmp r6, #0x0
- bne _02006D36
- ldr r0, [sp, #0x20]
- cmp r0, #0x1
- bne _02006D42
-_02006D36:
- ldr r1, [r5, #0x0]
- add r0, r7, #0x0
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- b _02006D4C
-_02006D42:
- ldr r1, [r5, #0x0]
- add r0, r7, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
-_02006D4C:
- cmp r4, #0x0
- beq _02006D92
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0x4]
- add r0, r4, #0x0
- bl ReadWholeNarcMemberByIdPair
- cmp r6, #0x0
- beq _02006D92
- ldr r0, [r4, #0x0]
- lsr r0, r0, #0x8
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x20]
- cmp r0, #0x0
- bne _02006D74
- ldr r1, [r5, #0x0]
- add r0, r7, #0x0
- bl AllocFromHeap
- b _02006D7C
-_02006D74:
- ldr r1, [r5, #0x0]
- add r0, r7, #0x0
- bl AllocFromHeapAtEnd
-_02006D7C:
- add r5, r0, #0x0
- cmp r5, #0x0
- beq _02006D90
- add r0, r4, #0x0
- add r1, r5, #0x0
- bl MI_UncompressLZ8
- add r0, r4, #0x0
- bl FreeToHeap
-_02006D90:
- add r4, r5, #0x0
-_02006D92:
- add r0, r4, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s
index 0e1ff930..07650c04 100644
--- a/arm9/asm/unk_02006D98.s
+++ b/arm9/asm/unk_02006D98.s
@@ -2,7 +2,7 @@
.include "global.inc"
.extern UNK_020ECD4C
- .extern UNK_020FFA38
+ .extern FX_SinCosTable_
.section .rodata
@@ -144,7 +144,7 @@ _02006E12:
add r5, #0x98
cmp r6, #0x4
blt _02006E12
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r2, _02006EC8 ; =0x000002E3
mov r0, #0x0
strb r0, [r4, r2]
@@ -155,7 +155,7 @@ _02006E12:
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0xc
str r0, [sp, #0x4]
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0xc]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -235,7 +235,7 @@ FUN_02006ED4: ; 0x02006ED4
bl FUN_020082A8
add r0, r5, #0x0
bl FUN_020086F4
- bl FUN_020BB394
+ bl NNS_G3dGeFlushBuffer
mov r6, #0x9f
mov r0, #0x0
ldr r4, _02007250 ; =0x04000444
@@ -295,7 +295,7 @@ _02006F48:
add r1, #0x24
blx r2
_02006F56:
- bl FUN_020BB394
+ bl NNS_G3dGeFlushBuffer
ldr r0, _02007258 ; =0x000002E3
ldrb r0, [r5, r0]
cmp r0, #0x1
@@ -349,7 +349,7 @@ _02006F7E:
ldrh r0, [r4, #0x38]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _02007268 ; =UNK_020FFA38
+ ldr r0, _02007268 ; =FX_SinCosTable_
add r2, r0, r1
ldrsh r0, [r0, r1]
mov r1, #0x2
@@ -358,7 +358,7 @@ _02006F7E:
ldrh r0, [r4, #0x3a]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _02007268 ; =UNK_020FFA38
+ ldr r0, _02007268 ; =FX_SinCosTable_
add r2, r0, r1
ldrsh r0, [r0, r1]
mov r1, #0x2
@@ -367,7 +367,7 @@ _02006F7E:
ldrh r0, [r4, #0x3c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _02007268 ; =UNK_020FFA38
+ ldr r0, _02007268 ; =FX_SinCosTable_
add r2, r0, r1
ldrsh r0, [r0, r1]
mov r1, #0x2
@@ -505,7 +505,7 @@ _02006F7E:
add r2, r3, r2
asr r1, r1, #0x10
mov r3, r12
- bl FUN_020B0250
+ bl NNS_G2dDrawSpriteFast
b _02007174
_02007104:
mov r0, #0x34
@@ -562,7 +562,7 @@ _02007104:
lsl r1, r1, #0x10
asr r1, r1, #0x10
add r2, r6, r2
- bl FUN_020B0250
+ bl NNS_G2dDrawSpriteFast
_02007174:
add r0, r4, #0x0
add r0, #0x6c
@@ -689,7 +689,7 @@ _02007258: .word 0x000002E3
_0200725C: .word 0x04000454
_02007260: .word 0x040004AC
_02007264: .word 0x04000470
-_02007268: .word UNK_020FFA38
+_02007268: .word FX_SinCosTable_
_0200726C: .word 0x040004C0
_02007270: .word 0x00004210
_02007274: .word 0x040004A4
@@ -725,7 +725,7 @@ _0200727C:
lsl r1, r1, #0x10
ldr r2, _020072E0 ; =0xFFFFFC18
asr r1, r1, #0x10
- bl FUN_020B0250
+ bl NNS_G2dDrawSpriteFast
_020072BC:
ldr r0, [sp, #0x14]
add r4, #0x98
@@ -873,7 +873,7 @@ _020073AE:
_020073BE:
cmp r4, #0x4
bne _020073C6
- bl ErrorHandling
+ bl GF_AssertFail
_020073C6:
ldr r0, [sp, #0x30]
ldr r3, [sp, #0x14]
@@ -908,7 +908,7 @@ FUN_020073E8: ; 0x020073E8
str r3, [sp, #0x4]
lsr r0, r0, #0x1f
beq _02007408
- bl ErrorHandling
+ bl GF_AssertFail
_02007408:
add r5, r4, r6
mov r0, #0x0
@@ -1747,7 +1747,7 @@ _020079CC:
lsr r0, r0, #0x1e
pop {r3, pc}
_020079D6:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -2884,7 +2884,7 @@ FUN_020081C4: ; 0x020081C4
strb r1, [r4, r0]
sub r0, #0x81
add r0, r4, r0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0xae
lsl r3, r3, #0x2
mov r1, #0x20
@@ -2910,7 +2910,7 @@ FUN_020081C4: ; 0x020081C4
ldr r1, [r4, r1]
mov r2, #0x0
add r3, r4, r3
- bl FUN_020B1528
+ bl NNS_G2dLoadImage2DMapping
_02008212:
ldr r0, _02008258 ; =0x000002E2
ldrb r1, [r4, r0]
@@ -2920,7 +2920,7 @@ _02008212:
strb r1, [r4, r0]
sub r0, #0x5e
add r0, r4, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r3, #0xaa
lsl r3, r3, #0x2
add r0, r3, #0x0
@@ -2941,7 +2941,7 @@ _02008212:
add r0, r4, r0
mov r2, #0x0
add r3, r4, r3
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
_02008252:
pop {r4, pc}
.balign 4
@@ -2961,7 +2961,7 @@ FUN_02008268: ; 0x02008268
push {r4, lr}
add r4, r0, #0x0
bne _02008272
- bl ErrorHandling
+ bl GF_AssertFail
_02008272:
ldr r0, [r4, #0x0]
lsl r0, r0, #0x1f
@@ -3037,7 +3037,7 @@ _020082CC:
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x58
str r0, [sp, #0x4c]
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0x58]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -3600,7 +3600,7 @@ _02008706:
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x18
str r0, [sp, #0x10]
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r0, [sp, #0x18]
mov r7, #0x0
ldr r1, [r0, #0x0]
@@ -3646,7 +3646,7 @@ _0200874A:
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x18
str r0, [sp, #0x4]
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r0, [sp, #0x18]
mov r7, #0xad
ldr r0, [r0, #0xc]
diff --git a/arm9/asm/unk_02008AA4.s b/arm9/asm/unk_02008AA4.s
index 45b46079..e6b5abcc 100644
--- a/arm9/asm/unk_02008AA4.s
+++ b/arm9/asm/unk_02008AA4.s
@@ -18,33 +18,33 @@ FUN_02008AA4: ; 0x02008AA4
str r4, [sp, #0xc]
cmp r0, #0x0
bne _02008AC2
- bl ErrorHandling
+ bl GF_AssertFail
_02008AC2:
ldr r0, [sp, #0x48]
cmp r0, #0x0
bne _02008ACC
- bl ErrorHandling
+ bl GF_AssertFail
_02008ACC:
ldr r0, [sp, #0x50]
cmp r0, #0x0
bne _02008AD6
- bl ErrorHandling
+ bl GF_AssertFail
_02008AD6:
ldr r0, [sp, #0x4c]
cmp r0, #0x0
bne _02008AE0
- bl ErrorHandling
+ bl GF_AssertFail
_02008AE0:
cmp r5, #0x0
bne _02008AE8
- bl ErrorHandling
+ bl GF_AssertFail
_02008AE8:
ldr r0, [sp, #0x44]
add r1, r6, #0x0
bl FUN_020094F0
add r7, r0, #0x0
bne _02008AF8
- bl ErrorHandling
+ bl GF_AssertFail
_02008AF8:
ldr r0, [sp, #0x48]
ldr r1, [sp, #0x0]
@@ -52,7 +52,7 @@ _02008AF8:
str r0, [sp, #0x14]
cmp r0, #0x0
bne _02008B0A
- bl ErrorHandling
+ bl GF_AssertFail
_02008B0A:
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x4]
@@ -60,7 +60,7 @@ _02008B0A:
str r0, [sp, #0x10]
cmp r0, #0x0
bne _02008B1C
- bl ErrorHandling
+ bl GF_AssertFail
_02008B1C:
ldr r0, [sp, #0x50]
cmp r0, #0x0
@@ -74,7 +74,7 @@ _02008B1C:
str r0, [sp, #0xc]
cmp r0, #0x0
bne _02008B3A
- bl ErrorHandling
+ bl GF_AssertFail
_02008B3A:
ldr r0, [sp, #0x54]
cmp r0, #0x0
@@ -104,7 +104,7 @@ _02008B62:
bl FUN_02009C80
add r6, r0, #0x0
bne _02008B78
- bl ErrorHandling
+ bl GF_AssertFail
_02008B78:
add r0, r7, #0x0
bl FUN_02009544
@@ -115,7 +115,7 @@ _02008B82:
bl FUN_02009C5C
add r6, r0, #0x0
bne _02008B90
- bl ErrorHandling
+ bl GF_AssertFail
_02008B90:
mov r0, #0x0
str r0, [r5, #0x4]
@@ -247,7 +247,7 @@ FUN_02008C80: ; 0x02008C80
push {r4, lr}
add r4, r0, #0x0
bne _02008C8A
- bl ErrorHandling
+ bl GF_AssertFail
_02008C8A:
ldr r0, [r4, #0x0]
cmp r0, #0x0
@@ -409,7 +409,7 @@ _02008DB6:
bl FUN_0201D194
pop {r4, pc}
_02008DC4:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
nop
_02008DCC: .word 0x00100010
diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s
index 1b0161ae..31aabcc3 100644
--- a/arm9/asm/unk_02008DEC.s
+++ b/arm9/asm/unk_02008DEC.s
@@ -39,17 +39,17 @@ FUN_02008E2C: ; 0x02008E2C
push {r4, lr}
add r4, r0, #0x0
bne _02008E36
- bl ErrorHandling
+ bl GF_AssertFail
_02008E36:
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _02008E40
- bl ErrorHandling
+ bl GF_AssertFail
_02008E40:
ldr r0, [r4, #0x4]
cmp r0, #0x0
bne _02008E4A
- bl ErrorHandling
+ bl GF_AssertFail
_02008E4A:
add r0, r4, #0x0
bl FUN_020094C4
@@ -75,29 +75,29 @@ FUN_02008E6C: ; 0x02008E6C
add r7, r3, #0x0
cmp r5, #0x0
bne _02008E80
- bl ErrorHandling
+ bl GF_AssertFail
_02008E80:
cmp r4, #0x0
bne _02008E88
- bl ErrorHandling
+ bl GF_AssertFail
_02008E88:
ldr r0, [r4, #0x4]
cmp r0, r6
bgt _02008E92
- bl ErrorHandling
+ bl GF_AssertFail
_02008E92:
ldr r1, [r5, #0x10]
ldr r0, [r4, #0x8]
cmp r1, r0
beq _02008E9E
- bl ErrorHandling
+ bl GF_AssertFail
_02008E9E:
add r0, r5, #0x0
bl FUN_020097D0
str r0, [sp, #0x1c]
cmp r0, #0x0
bne _02008EAE
- bl ErrorHandling
+ bl GF_AssertFail
_02008EAE:
ldrb r0, [r4, #0xc]
cmp r0, #0x0
@@ -112,7 +112,7 @@ _02008EAE:
bl FUN_0200945C
cmp r0, #0x1
beq _02008ECE
- bl ErrorHandling
+ bl GF_AssertFail
_02008ECE:
ldr r0, [r6, #0x44]
ldr r1, [sp, #0x1c]
@@ -137,7 +137,7 @@ _02008EEA:
bl FUN_0200945C
cmp r0, #0x1
beq _02008F02
- bl ErrorHandling
+ bl GF_AssertFail
_02008F02:
ldr r0, [r6, #0x8]
ldr r1, [sp, #0x1c]
@@ -175,18 +175,18 @@ FUN_02008F34: ; 0x02008F34
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _02008F48
- bl ErrorHandling
+ bl GF_AssertFail
_02008F48:
ldr r0, [r5, #0x10]
cmp r0, #0x0
beq _02008F52
- bl ErrorHandling
+ bl GF_AssertFail
_02008F52:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _02008F60
- bl ErrorHandling
+ bl GF_AssertFail
_02008F60:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -222,18 +222,18 @@ FUN_02008F90: ; 0x02008F90
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _02008FA4
- bl ErrorHandling
+ bl GF_AssertFail
_02008FA4:
ldr r0, [r5, #0x10]
cmp r0, #0x0
beq _02008FAE
- bl ErrorHandling
+ bl GF_AssertFail
_02008FAE:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _02008FBC
- bl ErrorHandling
+ bl GF_AssertFail
_02008FBC:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -269,18 +269,18 @@ FUN_02008FEC: ; 0x02008FEC
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _02009000
- bl ErrorHandling
+ bl GF_AssertFail
_02009000:
ldr r0, [r5, #0x10]
cmp r0, #0x1
beq _0200900A
- bl ErrorHandling
+ bl GF_AssertFail
_0200900A:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _02009018
- bl ErrorHandling
+ bl GF_AssertFail
_02009018:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -318,18 +318,18 @@ FUN_0200904C: ; 0x0200904C
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _02009060
- bl ErrorHandling
+ bl GF_AssertFail
_02009060:
ldr r0, [r5, #0x10]
cmp r0, #0x1
beq _0200906A
- bl ErrorHandling
+ bl GF_AssertFail
_0200906A:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _02009078
- bl ErrorHandling
+ bl GF_AssertFail
_02009078:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -367,13 +367,13 @@ FUN_020090AC: ; 0x020090AC
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _020090C0
- bl ErrorHandling
+ bl GF_AssertFail
_020090C0:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _020090CE
- bl ErrorHandling
+ bl GF_AssertFail
_020090CE:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -408,21 +408,21 @@ FUN_020090FC: ; 0x020090FC
str r3, [sp, #0x20]
cmp r5, #0x0
bne _02009110
- bl ErrorHandling
+ bl GF_AssertFail
_02009110:
ldr r0, [r5, #0x10]
cmp r0, #0x0
beq _0200911A
- bl ErrorHandling
+ bl GF_AssertFail
_0200911A:
cmp r4, #0x0
bne _02009122
- bl ErrorHandling
+ bl GF_AssertFail
_02009122:
ldr r0, [r4, #0x4]
cmp r0, #0x0
beq _0200912C
- bl ErrorHandling
+ bl GF_AssertFail
_0200912C:
add r0, r4, #0x0
bl FUN_02009530
@@ -461,21 +461,21 @@ FUN_02009168: ; 0x02009168
str r3, [sp, #0x20]
cmp r5, #0x0
bne _0200917C
- bl ErrorHandling
+ bl GF_AssertFail
_0200917C:
ldr r0, [r5, #0x10]
cmp r0, #0x1
beq _02009186
- bl ErrorHandling
+ bl GF_AssertFail
_02009186:
cmp r4, #0x0
bne _0200918E
- bl ErrorHandling
+ bl GF_AssertFail
_0200918E:
ldr r0, [r4, #0x4]
cmp r0, #0x1
beq _02009198
- bl ErrorHandling
+ bl GF_AssertFail
_02009198:
add r0, r4, #0x0
bl FUN_02009530
@@ -519,18 +519,18 @@ FUN_020091E0: ; 0x020091E0
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _020091F4
- bl ErrorHandling
+ bl GF_AssertFail
_020091F4:
ldr r0, [r5, #0x10]
cmp r0, #0x0
beq _020091FE
- bl ErrorHandling
+ bl GF_AssertFail
_020091FE:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _0200920C
- bl ErrorHandling
+ bl GF_AssertFail
_0200920C:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -566,18 +566,18 @@ FUN_0200923C: ; 0x0200923C
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _02009250
- bl ErrorHandling
+ bl GF_AssertFail
_02009250:
ldr r0, [r5, #0x10]
cmp r0, #0x0
beq _0200925A
- bl ErrorHandling
+ bl GF_AssertFail
_0200925A:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _02009268
- bl ErrorHandling
+ bl GF_AssertFail
_02009268:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -613,18 +613,18 @@ FUN_02009298: ; 0x02009298
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _020092AC
- bl ErrorHandling
+ bl GF_AssertFail
_020092AC:
ldr r0, [r5, #0x10]
cmp r0, #0x1
beq _020092B6
- bl ErrorHandling
+ bl GF_AssertFail
_020092B6:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _020092C4
- bl ErrorHandling
+ bl GF_AssertFail
_020092C4:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -662,18 +662,18 @@ FUN_020092F8: ; 0x020092F8
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _0200930C
- bl ErrorHandling
+ bl GF_AssertFail
_0200930C:
ldr r0, [r5, #0x10]
cmp r0, #0x1
beq _02009316
- bl ErrorHandling
+ bl GF_AssertFail
_02009316:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _02009324
- bl ErrorHandling
+ bl GF_AssertFail
_02009324:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -711,13 +711,13 @@ FUN_02009358: ; 0x02009358
str r2, [sp, #0x1c]
cmp r5, #0x0
bne _0200936C
- bl ErrorHandling
+ bl GF_AssertFail
_0200936C:
add r0, r5, #0x0
bl FUN_020097D0
add r6, r0, #0x0
bne _0200937A
- bl ErrorHandling
+ bl GF_AssertFail
_0200937A:
ldr r0, [sp, #0x38]
str r4, [sp, #0x0]
@@ -752,11 +752,11 @@ FUN_020093A8: ; 0x020093A8
add r7, r3, #0x0
cmp r5, #0x0
bne _020093BC
- bl ErrorHandling
+ bl GF_AssertFail
_020093BC:
cmp r4, #0x0
bne _020093C4
- bl ErrorHandling
+ bl GF_AssertFail
_020093C4:
str r6, [sp, #0x0]
str r7, [sp, #0x4]
@@ -848,7 +848,7 @@ FUN_0200945C: ; 0x0200945C
add r4, r1, #0x0
cmp r5, #0x0
bne _0200946A
- bl ErrorHandling
+ bl GF_AssertFail
_0200946A:
ldr r0, [r5, #0x0]
add r1, r4, #0x0
@@ -860,7 +860,7 @@ FUN_02009474: ; 0x02009474
push {r4, lr}
add r4, r0, #0x0
bne _0200947E
- bl ErrorHandling
+ bl GF_AssertFail
_0200947E:
add r0, r4, #0x0
bl FUN_02009920
@@ -877,12 +877,12 @@ FUN_02009490: ; 0x02009490
add r4, r1, #0x0
cmp r5, #0x0
bne _0200949E
- bl ErrorHandling
+ bl GF_AssertFail
_0200949E:
ldr r0, [r5, #0x4]
cmp r0, #0x0
bne _020094A8
- bl ErrorHandling
+ bl GF_AssertFail
_020094A8:
add r0, r4, #0x0
bl FUN_02009920
@@ -931,7 +931,7 @@ FUN_020094F0: ; 0x020094F0
add r7, r1, #0x0
cmp r5, #0x0
bne _020094FE
- bl ErrorHandling
+ bl GF_AssertFail
_020094FE:
ldr r0, [r5, #0x8]
mov r6, #0x0
@@ -966,7 +966,7 @@ FUN_02009530: ; 0x02009530
push {r4, lr}
add r4, r0, #0x0
bne _0200953A
- bl ErrorHandling
+ bl GF_AssertFail
_0200953A:
ldr r0, [r4, #0x0]
bl FUN_02020E38
@@ -980,7 +980,7 @@ FUN_02009544: ; 0x02009544
ldr r0, [r4, #0x4]
cmp r0, #0x0
beq _02009552
- bl ErrorHandling
+ bl GF_AssertFail
_02009552:
add r0, r4, #0x0
bl FUN_02009934
@@ -994,7 +994,7 @@ FUN_0200955C: ; 0x0200955C
ldr r0, [r4, #0x4]
cmp r0, #0x1
beq _0200956A
- bl ErrorHandling
+ bl GF_AssertFail
_0200956A:
add r0, r4, #0x0
bl FUN_02009934
@@ -1008,7 +1008,7 @@ FUN_02009574: ; 0x02009574
ldr r0, [r4, #0x4]
cmp r0, #0x2
beq _02009582
- bl ErrorHandling
+ bl GF_AssertFail
_02009582:
add r0, r4, #0x0
bl FUN_02009934
@@ -1022,7 +1022,7 @@ FUN_0200958C: ; 0x0200958C
ldr r0, [r4, #0x4]
cmp r0, #0x3
beq _0200959A
- bl ErrorHandling
+ bl GF_AssertFail
_0200959A:
add r0, r4, #0x0
bl FUN_02009934
@@ -1036,7 +1036,7 @@ FUN_020095A4: ; 0x020095A4
ldr r0, [r4, #0x4]
cmp r0, #0x4
beq _020095B2
- bl ErrorHandling
+ bl GF_AssertFail
_020095B2:
add r0, r4, #0x0
bl FUN_02009934
@@ -1050,7 +1050,7 @@ FUN_020095BC: ; 0x020095BC
ldr r0, [r4, #0x4]
cmp r0, #0x5
beq _020095CA
- bl ErrorHandling
+ bl GF_AssertFail
_020095CA:
add r0, r4, #0x0
bl FUN_02009934
@@ -1062,7 +1062,7 @@ FUN_020095D4: ; 0x020095D4
push {r4, lr}
add r4, r0, #0x0
bne _020095DE
- bl ErrorHandling
+ bl GF_AssertFail
_020095DE:
ldr r0, [r4, #0x4]
pop {r4, pc}
@@ -1073,7 +1073,7 @@ FUN_020095E4: ; 0x020095E4
push {r4, lr}
add r4, r0, #0x0
bne _020095EE
- bl ErrorHandling
+ bl GF_AssertFail
_020095EE:
ldr r0, [r4, #0x4]
cmp r0, #0x0
@@ -1098,7 +1098,7 @@ FUN_02009610: ; 0x02009610
push {r4, lr}
add r4, r0, #0x0
bne _0200961A
- bl ErrorHandling
+ bl GF_AssertFail
_0200961A:
ldr r0, [r4, #0x4]
cmp r0, #0x1
@@ -1119,7 +1119,7 @@ FUN_02009630: ; 0x02009630
add r4, r1, #0x0
cmp r5, #0x0
bne _0200963E
- bl ErrorHandling
+ bl GF_AssertFail
_0200963E:
ldr r0, [r5, #0x4]
cmp r0, #0x0
@@ -1157,7 +1157,7 @@ FUN_02009668: ; 0x02009668
add r6, r2, #0x0
cmp r4, #0x0
bne _02009678
- bl ErrorHandling
+ bl GF_AssertFail
_02009678:
ldr r0, [r5, #0x0]
str r0, [r4, #0x8]
@@ -1210,7 +1210,7 @@ FUN_020096CC: ; 0x020096CC
push {r4, lr}
add r4, r0, #0x0
bne _020096D6
- bl ErrorHandling
+ bl GF_AssertFail
_020096D6:
ldr r0, [r4, #0x4]
pop {r4, pc}
@@ -1223,12 +1223,12 @@ FUN_020096DC: ; 0x020096DC
add r4, r1, #0x0
cmp r5, #0x0
bne _020096EA
- bl ErrorHandling
+ bl GF_AssertFail
_020096EA:
ldr r0, [r5, #0x4]
cmp r0, r4
bgt _020096F4
- bl ErrorHandling
+ bl GF_AssertFail
_020096F4:
ldrb r0, [r5, #0xc]
ldr r1, [r5, #0x0]
@@ -1253,12 +1253,12 @@ FUN_02009710: ; 0x02009710
add r4, r1, #0x0
cmp r5, #0x0
bne _0200971E
- bl ErrorHandling
+ bl GF_AssertFail
_0200971E:
ldr r0, [r5, #0x4]
cmp r0, r4
bgt _02009728
- bl ErrorHandling
+ bl GF_AssertFail
_02009728:
ldrb r0, [r5, #0xc]
cmp r0, #0x1
@@ -1279,12 +1279,12 @@ FUN_0200973C: ; 0x0200973C
add r4, r1, #0x0
cmp r5, #0x0
bne _0200974A
- bl ErrorHandling
+ bl GF_AssertFail
_0200974A:
ldr r0, [r5, #0x4]
cmp r0, r4
bgt _02009754
- bl ErrorHandling
+ bl GF_AssertFail
_02009754:
ldrb r0, [r5, #0xc]
cmp r0, #0x1
@@ -1305,12 +1305,12 @@ FUN_02009768: ; 0x02009768
add r4, r1, #0x0
cmp r5, #0x0
bne _02009776
- bl ErrorHandling
+ bl GF_AssertFail
_02009776:
ldr r0, [r5, #0x4]
cmp r0, r4
bgt _02009780
- bl ErrorHandling
+ bl GF_AssertFail
_02009780:
ldrb r0, [r5, #0xc]
ldr r1, [r5, #0x0]
@@ -1335,12 +1335,12 @@ FUN_0200979C: ; 0x0200979C
add r4, r1, #0x0
cmp r5, #0x0
bne _020097AA
- bl ErrorHandling
+ bl GF_AssertFail
_020097AA:
ldr r0, [r5, #0x4]
cmp r0, r4
bgt _020097B4
- bl ErrorHandling
+ bl GF_AssertFail
_020097B4:
ldrb r0, [r5, #0xc]
ldr r1, [r5, #0x0]
@@ -1457,7 +1457,7 @@ FUN_0200986C: ; 0x0200986C
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
str r5, [r4, #0x4]
add r0, r4, #0x0
pop {r4-r6, pc}
@@ -1475,7 +1475,7 @@ FUN_0200988C: ; 0x0200988C
add r4, r0, #0x0
add r0, r7, #0x0
add r1, r4, #0x0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
str r5, [r4, #0x4]
str r6, [r4, #0x8]
add r0, r4, #0x0
@@ -1492,7 +1492,7 @@ FUN_020098B0: ; 0x020098B0
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- bl FUN_020AFEB8
+ bl NNS_G2dGetUnpackedCellBank
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -1507,7 +1507,7 @@ FUN_020098CC: ; 0x020098CC
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- bl thunk_FUN_020afda0_2
+ bl NNS_G2dGetUnpackedAnimBank
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -1522,7 +1522,7 @@ FUN_020098E8: ; 0x020098E8
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- bl FUN_020AFFD8
+ bl NNS_G2dGetUnpackedMultiCellBank
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -1537,7 +1537,7 @@ FUN_02009904: ; 0x02009904
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- bl thunk_FUN_020afda0
+ bl NNS_G2dGetUnpackedMCAnimBank
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -1560,12 +1560,12 @@ FUN_02009934: ; 0x02009934
push {r4, lr}
add r4, r0, #0x0
bne _0200993E
- bl ErrorHandling
+ bl GF_AssertFail
_0200993E:
ldr r0, [r4, #0x8]
cmp r0, #0x0
bne _02009948
- bl ErrorHandling
+ bl GF_AssertFail
_02009948:
ldr r0, [r4, #0x8]
pop {r4, pc}
@@ -1604,7 +1604,7 @@ FUN_02009978: ; 0x02009978
add r1, r3, #0x0
ldr r2, [sp, #0x10]
ldr r3, [sp, #0x24]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r1, r0, #0x0
ldr r0, [r5, #0x0]
ldr r2, [sp, #0x14]
@@ -1714,13 +1714,13 @@ FUN_02009A50: ; 0x02009A50
sub sp, #0x10
add r4, r0, #0x0
bne _02009A5C
- bl ErrorHandling
+ bl GF_AssertFail
_02009A5C:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009A6A
- bl ErrorHandling
+ bl GF_AssertFail
_02009A6A:
add r0, r4, #0x0
bl FUN_02009544
@@ -1743,7 +1743,7 @@ FUN_02009A90: ; 0x02009A90
push {r4-r6, lr}
add r5, r0, #0x0
bne _02009A9A
- bl ErrorHandling
+ bl GF_AssertFail
_02009A9A:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -1758,7 +1758,7 @@ _02009AA4:
bl FUN_02009A50
cmp r0, #0x0
bne _02009AB8
- bl ErrorHandling
+ bl GF_AssertFail
_02009AB8:
ldr r0, [r5, #0x4]
add r6, r6, #0x1
@@ -1774,13 +1774,13 @@ FUN_02009AC4: ; 0x02009AC4
sub sp, #0x10
add r4, r0, #0x0
bne _02009AD0
- bl ErrorHandling
+ bl GF_AssertFail
_02009AD0:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009ADE
- bl ErrorHandling
+ bl GF_AssertFail
_02009ADE:
add r0, r4, #0x0
bl FUN_02009544
@@ -1804,13 +1804,13 @@ FUN_02009B04: ; 0x02009B04
sub sp, #0x10
add r4, r0, #0x0
bne _02009B10
- bl ErrorHandling
+ bl GF_AssertFail
_02009B10:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009B1E
- bl ErrorHandling
+ bl GF_AssertFail
_02009B1E:
add r0, r4, #0x0
bl FUN_02009544
@@ -1833,7 +1833,7 @@ FUN_02009B44: ; 0x02009B44
push {r4-r6, lr}
add r5, r0, #0x0
bne _02009B4E
- bl ErrorHandling
+ bl GF_AssertFail
_02009B4E:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -1848,7 +1848,7 @@ _02009B58:
bl FUN_02009B04
cmp r0, #0x0
bne _02009B6C
- bl ErrorHandling
+ bl GF_AssertFail
_02009B6C:
ldr r0, [r5, #0x4]
add r6, r6, #0x1
@@ -1864,13 +1864,13 @@ FUN_02009B78: ; 0x02009B78
sub sp, #0x10
add r4, r0, #0x0
bne _02009B84
- bl ErrorHandling
+ bl GF_AssertFail
_02009B84:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009B92
- bl ErrorHandling
+ bl GF_AssertFail
_02009B92:
add r0, r4, #0x0
bl FUN_02009544
@@ -1895,11 +1895,11 @@ FUN_02009BB8: ; 0x02009BB8
add r5, r1, #0x0
cmp r4, #0x0
bne _02009BC6
- bl ErrorHandling
+ bl GF_AssertFail
_02009BC6:
cmp r5, #0x0
bne _02009BCE
- bl ErrorHandling
+ bl GF_AssertFail
_02009BCE:
add r0, r4, #0x0
bl FUN_02009530
@@ -1917,7 +1917,7 @@ FUN_02009BE8: ; 0x02009BE8
push {r3-r5, lr}
add r5, r0, #0x0
bne _02009BF2
- bl ErrorHandling
+ bl GF_AssertFail
_02009BF2:
add r0, r5, #0x0
bl FUN_02009530
@@ -1935,13 +1935,13 @@ FUN_02009C0C: ; 0x02009C0C
push {r4, lr}
add r4, r0, #0x0
bne _02009C16
- bl ErrorHandling
+ bl GF_AssertFail
_02009C16:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009C24
- bl ErrorHandling
+ bl GF_AssertFail
_02009C24:
add r0, r4, #0x0
bl FUN_02009530
@@ -1953,7 +1953,7 @@ FUN_02009C30: ; 0x02009C30
push {r4-r6, lr}
add r5, r0, #0x0
bne _02009C3A
- bl ErrorHandling
+ bl GF_AssertFail
_02009C3A:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -1980,13 +1980,13 @@ FUN_02009C5C: ; 0x02009C5C
push {r4, lr}
add r4, r0, #0x0
bne _02009C66
- bl ErrorHandling
+ bl GF_AssertFail
_02009C66:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009C74
- bl ErrorHandling
+ bl GF_AssertFail
_02009C74:
add r0, r4, #0x0
bl FUN_02009530
@@ -2000,23 +2000,23 @@ FUN_02009C80: ; 0x02009C80
add r5, r1, #0x0
cmp r4, #0x0
bne _02009C8E
- bl ErrorHandling
+ bl GF_AssertFail
_02009C8E:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x0
beq _02009C9C
- bl ErrorHandling
+ bl GF_AssertFail
_02009C9C:
cmp r5, #0x0
bne _02009CA4
- bl ErrorHandling
+ bl GF_AssertFail
_02009CA4:
add r0, r5, #0x0
bl FUN_020095D4
cmp r0, #0x2
beq _02009CB2
- bl ErrorHandling
+ bl GF_AssertFail
_02009CB2:
add r0, r4, #0x0
bl FUN_02009530
@@ -2041,7 +2041,7 @@ FUN_02009CDC: ; 0x02009CDC
push {r4, lr}
add r4, r0, #0x0
bne _02009CE6
- bl ErrorHandling
+ bl GF_AssertFail
_02009CE6:
add r0, r4, #0x0
bl FUN_0201D4F0
@@ -2054,13 +2054,13 @@ FUN_02009CF0: ; 0x02009CF0
sub sp, #0x10
add r4, r0, #0x0
bne _02009CFC
- bl ErrorHandling
+ bl GF_AssertFail
_02009CFC:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x1
beq _02009D0A
- bl ErrorHandling
+ bl GF_AssertFail
_02009D0A:
add r0, r4, #0x0
bl FUN_0200955C
@@ -2084,7 +2084,7 @@ FUN_02009D34: ; 0x02009D34
push {r4-r6, lr}
add r5, r0, #0x0
bne _02009D3E
- bl ErrorHandling
+ bl GF_AssertFail
_02009D3E:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -2099,7 +2099,7 @@ _02009D48:
bl FUN_02009CF0
cmp r0, #0x0
bne _02009D5C
- bl ErrorHandling
+ bl GF_AssertFail
_02009D5C:
ldr r0, [r5, #0x4]
add r6, r6, #0x1
@@ -2115,13 +2115,13 @@ FUN_02009D68: ; 0x02009D68
sub sp, #0x10
add r4, r0, #0x0
bne _02009D74
- bl ErrorHandling
+ bl GF_AssertFail
_02009D74:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x1
beq _02009D82
- bl ErrorHandling
+ bl GF_AssertFail
_02009D82:
add r0, r4, #0x0
bl FUN_0200955C
@@ -2145,7 +2145,7 @@ FUN_02009DAC: ; 0x02009DAC
push {r4-r6, lr}
add r5, r0, #0x0
bne _02009DB6
- bl ErrorHandling
+ bl GF_AssertFail
_02009DB6:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -2160,7 +2160,7 @@ _02009DC0:
bl FUN_02009D68
cmp r0, #0x0
bne _02009DD4
- bl ErrorHandling
+ bl GF_AssertFail
_02009DD4:
ldr r0, [r5, #0x4]
add r6, r6, #0x1
@@ -2175,7 +2175,7 @@ FUN_02009DE0: ; 0x02009DE0
push {r3-r5, lr}
add r5, r0, #0x0
bne _02009DEA
- bl ErrorHandling
+ bl GF_AssertFail
_02009DEA:
add r0, r5, #0x0
bl FUN_02009530
@@ -2193,13 +2193,13 @@ FUN_02009E04: ; 0x02009E04
push {r4, lr}
add r4, r0, #0x0
bne _02009E0E
- bl ErrorHandling
+ bl GF_AssertFail
_02009E0E:
add r0, r4, #0x0
bl FUN_020095D4
cmp r0, #0x1
beq _02009E1C
- bl ErrorHandling
+ bl GF_AssertFail
_02009E1C:
add r0, r4, #0x0
bl FUN_02009530
@@ -2211,7 +2211,7 @@ FUN_02009E28: ; 0x02009E28
push {r4-r6, lr}
add r5, r0, #0x0
bne _02009E32
- bl ErrorHandling
+ bl GF_AssertFail
_02009E32:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -2240,13 +2240,13 @@ FUN_02009E54: ; 0x02009E54
add r4, r1, #0x0
cmp r5, #0x0
bne _02009E62
- bl ErrorHandling
+ bl GF_AssertFail
_02009E62:
add r0, r5, #0x0
bl FUN_020095D4
cmp r0, #0x1
beq _02009E70
- bl ErrorHandling
+ bl GF_AssertFail
_02009E70:
add r0, r5, #0x0
bl FUN_02009530
@@ -2266,7 +2266,7 @@ FUN_02009E88: ; 0x02009E88
mov r1, #0x0
bl FUN_02009E54
add r1, r4, #0x0
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
mov r1, #0x0
mvn r1, r1
cmp r0, r1
diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s
index a6a7e7d7..95a1773a 100644
--- a/arm9/asm/unk_02009EAC.s
+++ b/arm9/asm/unk_02009EAC.s
@@ -68,7 +68,7 @@ FUN_02009EF0: ; 0x02009EF0
add r7, r3, #0x0
cmp r0, #0x0
beq _02009F08
- bl ErrorHandling
+ bl GF_AssertFail
_02009F08:
ldr r0, [sp, #0x30]
mov r1, #0x3c
@@ -77,7 +77,7 @@ _02009F08:
cmp r0, #0x0
str r0, [r1, #0x0]
bne _02009F1C
- bl ErrorHandling
+ bl GF_AssertFail
_02009F1C:
ldr r1, _02009F7C ; =UNK_021C4670
lsl r3, r6, #0x10
@@ -95,10 +95,10 @@ _02009F1C:
lsl r2, r4, #0x10
lsr r1, r1, #0x10
lsr r2, r2, #0x10
- bl FUN_020B0E34
+ bl NNS_G2dGetNewOamManagerInstance
cmp r0, #0x0
bne _02009F48
- bl ErrorHandling
+ bl GF_AssertFail
_02009F48:
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x20]
@@ -118,10 +118,10 @@ _02009F48:
lsr r1, r1, #0x10
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020B0E34
+ bl NNS_G2dGetNewOamManagerInstance
cmp r0, #0x0
bne _02009F78
- bl ErrorHandling
+ bl GF_AssertFail
_02009F78:
add sp, #0x8
pop {r3-r7, pc}
@@ -135,11 +135,11 @@ FUN_02009F80: ; 0x02009F80
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02009F98
- bl FUN_020B0870
+ bl NNS_G2dApplyAndResetOamManagerBuffer
ldr r0, _02009F9C ; =UNK_021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- bl FUN_020B0870
+ bl NNS_G2dApplyAndResetOamManagerBuffer
_02009F98:
pop {r3, pc}
nop
@@ -152,7 +152,7 @@ FUN_02009FA0: ; 0x02009FA0
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02009FAE
- bl ErrorHandling
+ bl GF_AssertFail
_02009FAE:
ldr r0, _02009FD4 ; =UNK_021C4670
ldr r0, [r0, #0x0]
@@ -184,7 +184,7 @@ FUN_02009FD8: ; 0x02009FD8
add r4, r3, #0x0
cmp r0, #0x0
bne _02009FF0
- bl ErrorHandling
+ bl GF_AssertFail
_02009FF0:
cmp r5, #0x1
bne _0200A00C
@@ -227,7 +227,7 @@ FUN_0200A03C: ; 0x0200A03C
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0200A04C
- bl ErrorHandling
+ bl GF_AssertFail
_0200A04C:
cmp r4, #0x0
bne _0200A056
@@ -264,10 +264,10 @@ FUN_0200A074: ; 0x0200A074
add r2, r1, #0x0
ldr r0, [r0, #0x0]
add r1, r3, #0x0
- bl FUN_020B0C7C
+ bl NNS_G2dEntryOamManagerOamWithAffineIdx
add r4, r0, #0x0
bne _0200A08C
- bl ErrorHandling
+ bl GF_AssertFail
_0200A08C:
add r0, r4, #0x0
pop {r4, pc}
@@ -283,10 +283,10 @@ FUN_0200A094: ; 0x0200A094
ldr r0, [r0, #0x0]
add r1, r3, #0x0
add r0, #0x1c
- bl FUN_020B0C7C
+ bl NNS_G2dEntryOamManagerOamWithAffineIdx
add r4, r0, #0x0
bne _0200A0AE
- bl ErrorHandling
+ bl GF_AssertFail
_0200A0AE:
add r0, r4, #0x0
pop {r4, pc}
@@ -299,12 +299,12 @@ FUN_0200A0B8: ; 0x0200A0B8
add r1, r0, #0x0
ldr r0, _0200A0D4 ; =UNK_021C4670
ldr r0, [r0, #0x0]
- bl FUN_020B0BB0
+ bl NNS_G2dEntryOamManagerAffine
add r4, r0, #0x0
ldr r0, _0200A0D8 ; =0x0000FFFE
cmp r4, r0
bne _0200A0D0
- bl ErrorHandling
+ bl GF_AssertFail
_0200A0D0:
add r0, r4, #0x0
pop {r4, pc}
@@ -319,12 +319,12 @@ FUN_0200A0DC: ; 0x0200A0DC
ldr r0, _0200A0FC ; =UNK_021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- bl FUN_020B0BB0
+ bl NNS_G2dEntryOamManagerAffine
add r4, r0, #0x0
ldr r0, _0200A100 ; =0x0000FFFE
cmp r4, r0
bne _0200A0F6
- bl ErrorHandling
+ bl GF_AssertFail
_0200A0F6:
add r0, r4, #0x0
pop {r4, pc}
@@ -426,7 +426,7 @@ FUN_0200A1A0: ; 0x0200A1A0
add r7, r3, #0x0
cmp r0, #0x0
beq _0200A1B4
- bl ErrorHandling
+ bl GF_AssertFail
_0200A1B4:
ldr r1, [sp, #0x18]
mov r0, #0x1
diff --git a/arm9/asm/unk_0200BA78.s b/arm9/asm/unk_0200BA78.s
deleted file mode 100644
index fccd5c4c..00000000
--- a/arm9/asm/unk_0200BA78.s
+++ /dev/null
@@ -1,86 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0200BA78
-FUN_0200BA78: ; 0x0200BA78
- push {r3-r6, lr}
- sub sp, #0xc
- add r4, r2, #0x0
- ldr r2, [sp, #0x2c]
- add r6, r3, #0x0
- str r2, [sp, #0x0]
- ldr r2, [sp, #0x24]
- ldr r3, [sp, #0x28]
- add r5, r0, #0x0
- bl FUN_0200B9A8
- ldr r0, [sp, #0x24]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x28]
- add r1, r4, #0x0
- add r0, #0x10
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x2c]
- add r2, r6, #0x0
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- bl FUN_0200B9EC
- add sp, #0xc
- pop {r3-r6, pc}
-
- thumb_func_start FUN_0200BAAC
-FUN_0200BAAC: ; 0x0200BAAC
- push {r3-r7, lr}
- add r7, r0, #0x0
- add r4, r2, #0x0
- ldr r2, [r7, #0x28]
- ldr r6, [sp, #0x18]
- lsl r0, r2, #0x4
- orr r0, r2
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- add r0, r7, #0x0
- add r2, r3, #0x0
- add r0, #0x8
- add r3, r4, #0x0
- bl ConvertUIntToDecimalString
- ldrh r1, [r7, #0x8]
- ldr r0, _0200BB10 ; =0x0000FFFF
- cmp r1, r0
- beq _0200BB0C
- add r4, r7, #0x0
- mov r5, #0x0
-_0200BAD8:
- ldrh r2, [r4, #0x8]
- cmp r2, #0xa2
- blo _0200BAF6
- cmp r2, #0xab
- bhi _0200BAF6
- ldr r0, [r7, #0x4]
- sub r2, #0xa2
- ldr r1, [r0, #0x14]
- lsl r0, r2, #0x5
- add r0, r1, r0
- add r1, r6, r5
- mov r2, #0x20
- bl MIi_CpuCopy32
- b _0200BB00
-_0200BAF6:
- ldr r1, [sp, #0x0]
- add r0, r6, r5
- mov r2, #0x20
- bl MI_CpuFill8
-_0200BB00:
- add r4, r4, #0x2
- ldrh r1, [r4, #0x8]
- ldr r0, _0200BB10 ; =0x0000FFFF
- add r5, #0x20
- cmp r1, r0
- bne _0200BAD8
-_0200BB0C:
- pop {r3-r7, pc}
- nop
-_0200BB10: .word 0x0000FFFF
diff --git a/arm9/asm/unk_0200BB14.s b/arm9/asm/unk_0200BB14.s
deleted file mode 100644
index 04f67c6e..00000000
--- a/arm9/asm/unk_0200BB14.s
+++ /dev/null
@@ -1,2135 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0200BB14
-FUN_0200BB14: ; 0x0200BB14
- push {r4, lr}
- mov r1, #0x4e
- lsl r1, r1, #0x2
- add r4, r0, #0x0
- bl AllocFromHeap
- cmp r0, #0x0
- bne _0200BB28
- mov r0, #0x0
- pop {r4, pc}
-_0200BB28:
- str r4, [r0, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x4]
- mov r1, #0x1
- str r1, [r0, #0x8]
- pop {r4, pc}
-
- thumb_func_start FUN_0200BB34
-FUN_0200BB34: ; 0x0200BB34
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200BB3E
- bl ErrorHandling
-_0200BB3E:
- ldr r0, [r4, #0x0]
- mov r1, #0x58
- bl AllocFromHeap
- cmp r0, #0x0
- bne _0200BB4E
- mov r0, #0x0
- pop {r4, pc}
-_0200BB4E:
- ldr r1, [r4, #0x4]
- mov r2, #0x0
- add r1, r1, #0x1
- str r1, [r4, #0x4]
- add r3, r0, #0x0
- add r1, r2, #0x0
-_0200BB5A:
- add r2, r2, #0x1
- str r1, [r3, #0xc]
- add r3, r3, #0x4
- cmp r2, #0x6
- blt _0200BB5A
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BB68
-FUN_0200BB68: ; 0x0200BB68
- add r0, #0x10
- bx lr
-
- thumb_func_start FUN_0200BB6C
-FUN_0200BB6C: ; 0x0200BB6C
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r5, #0x0
- bne _0200BB80
- bl ErrorHandling
-_0200BB80:
- cmp r5, #0x0
- bne _0200BB8A
- add sp, #0x24
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200BB8A:
- ldr r0, [r6, #0x0]
- str r0, [sp, #0x14]
- ldr r0, [r6, #0x4]
- str r0, [sp, #0x18]
- ldr r0, [r6, #0x8]
- str r0, [sp, #0x1c]
- ldr r0, [r5, #0x0]
- str r0, [sp, #0x20]
- ldr r1, [r6, #0xc]
- ldr r2, [r6, #0x10]
- add r0, sp, #0x14
- bl FUN_0201D060
- ldr r1, [r5, #0x0]
- add r0, r7, #0x0
- bl FUN_0201E00C
- bl FUN_020B0FC0
- ldr r0, [r5, #0x8]
- cmp r0, #0x1
- bne _0200BBD6
- ldr r0, [r4, #0x10]
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x4]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x1c]
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x0]
- str r0, [sp, #0x10]
- ldr r0, [r4, #0x0]
- ldr r1, [r4, #0x4]
- ldr r2, [r4, #0x8]
- ldr r3, [r4, #0xc]
- bl FUN_02009EAC
-_0200BBD6:
- ldr r1, [r5, #0x0]
- mov r0, #0x20
- bl FUN_0201C328
- str r0, [r5, #0xc]
- bl FUN_0201D168
- bl FUN_0201E0BC
- mov r0, #0x1
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200BBF0
-FUN_0200BBF0: ; 0x0200BBF0
- push {r4, lr}
- add r3, r0, #0x0
- add r4, r1, #0x0
- cmp r3, #0x0
- beq _0200BBFE
- cmp r4, #0x0
- bne _0200BC02
-_0200BBFE:
- mov r0, #0x0
- pop {r4, pc}
-_0200BC02:
- add r0, r2, #0x0
- add r1, r3, #0x0
- ldr r2, [r3, #0x0]
- add r1, #0x10
- bl FUN_02008C9C
- str r0, [r4, #0x0]
- mov r0, #0x1
- pop {r4, pc}
-
- thumb_func_start FUN_0200BC14
-FUN_0200BC14: ; 0x0200BC14
- ldr r3, _0200BC18 ; =FUN_0201FFC8
- bx r3
- .balign 4
-_0200BC18: .word FUN_0201FFC8
-
- thumb_func_start FUN_0200BC1C
-FUN_0200BC1C: ; 0x0200BC1C
- push {r4, lr}
- add r4, r0, #0x0
- bne _0200BC26
- bl ErrorHandling
-_0200BC26:
- ldr r0, [r4, #0x0]
- bl FUN_0201FDEC
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BC30
-FUN_0200BC30: ; 0x0200BC30
- ldr r3, _0200BC34 ; =FUN_02009F80
- bx r3
- .balign 4
-_0200BC34: .word FUN_02009F80
-
- thumb_func_start FUN_0200BC38
-FUN_0200BC38: ; 0x0200BC38
- ldr r3, _0200BC3C ; =FUN_0201C348
- bx r3
- .balign 4
-_0200BC3C: .word FUN_0201C348
-
- thumb_func_start FUN_0200BC40
-FUN_0200BC40: ; 0x0200BC40
- ldr r3, _0200BC48 ; =FUN_0201FD58
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200BC48: .word FUN_0201FD58
-
- thumb_func_start FUN_0200BC4C
-FUN_0200BC4C: ; 0x0200BC4C
- push {r3, lr}
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0200BC58
- bl FUN_02008C80
-_0200BC58:
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200BC5C
-FUN_0200BC5C: ; 0x0200BC5C
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, [r5, #0x54]
- mov r4, #0x0
- cmp r0, #0x0
- ble _0200BC7C
-_0200BC68:
- ldr r0, [r5, #0x8]
- add r1, r4, #0x0
- bl FUN_02009660
- bl FUN_020096B4
- ldr r0, [r5, #0x54]
- add r4, r4, #0x1
- cmp r4, r0
- blt _0200BC68
-_0200BC7C:
- ldr r0, [r5, #0x8]
- bl FreeToHeap
- ldr r0, [r5, #0x24]
- bl FUN_02009C30
- ldr r0, [r5, #0x28]
- bl FUN_02009E28
- ldr r0, [r5, #0x54]
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200BCAE
- add r4, r5, #0x0
-_0200BC98:
- ldr r0, [r4, #0x24]
- bl FUN_02009448
- ldr r0, [r4, #0xc]
- bl FUN_02008E2C
- ldr r0, [r5, #0x54]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200BC98
-_0200BCAE:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0200BCB0
-FUN_0200BCB0: ; 0x0200BCB0
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0xc]
- bl FUN_0201C350
- bl FUN_0201D12C
- bl FUN_0201E08C
- ldr r0, [r4, #0x8]
- cmp r0, #0x1
- bne _0200BCCC
- bl FUN_02009FA0
-_0200BCCC:
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BCD0
-FUN_0200BCD0: ; 0x0200BCD0
- ldr r2, [r0, #0x4]
- ldr r3, _0200BCDC ; =FreeToHeap
- sub r2, r2, #0x1
- str r2, [r0, #0x4]
- add r0, r1, #0x0
- bx r3
- .balign 4
-_0200BCDC: .word FreeToHeap
-
- thumb_func_start FUN_0200BCE0
-FUN_0200BCE0: ; 0x0200BCE0
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl FUN_0200BC40
- add r0, r4, #0x0
- bl FUN_0200BC4C
- add r0, r4, #0x0
- bl FUN_0200BC5C
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200BCD0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0200BD04
-FUN_0200BD04: ; 0x0200BD04
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _0200BD12
- bl ErrorHandling
-_0200BD12:
- add r0, r4, #0x0
- bl FUN_0200BCB0
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start FUN_0200BD20
-FUN_0200BD20: ; 0x0200BD20
- push {r4-r7, lr}
- sub sp, #0x24
- add r5, r0, #0x0
- mov r0, #0x6
- add r4, r1, #0x0
- str r2, [sp, #0x10]
- str r0, [sp, #0x14]
- cmp r5, #0x0
- beq _0200BD36
- cmp r4, #0x0
- bne _0200BD3C
-_0200BD36:
- add sp, #0x24
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200BD3C:
- add r0, r2, #0x0
- ldr r0, [r0, #0x10]
- cmp r0, #0x0
- bne _0200BD48
- mov r0, #0x4
- str r0, [sp, #0x14]
-_0200BD48:
- ldr r0, [sp, #0x14]
- str r0, [r4, #0x54]
- bl FUN_0200965C
- add r2, r0, #0x0
- ldr r1, [sp, #0x14]
- ldr r0, [r5, #0x0]
- mul r1, r2
- bl AllocFromHeap
- str r0, [r4, #0x8]
- ldr r0, [sp, #0x14]
- mov r7, #0x0
- cmp r0, #0x0
- ble _0200BD94
- ldr r6, [sp, #0x10]
-_0200BD68:
- ldr r0, [r4, #0x8]
- add r1, r7, #0x0
- bl FUN_02009660
- str r0, [sp, #0x18]
- ldr r0, [r5, #0x0]
- ldr r1, [r6, #0x0]
- bl FUN_020161A4
- ldr r1, [sp, #0x18]
- ldr r2, [r5, #0x0]
- str r0, [sp, #0x1c]
- bl FUN_02009668
- ldr r0, [sp, #0x1c]
- bl FreeToHeap
- ldr r0, [sp, #0x14]
- add r7, r7, #0x1
- add r6, r6, #0x4
- cmp r7, r0
- blt _0200BD68
-_0200BD94:
- ldr r0, [sp, #0x14]
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200BDBE
- add r7, r4, #0x0
-_0200BD9E:
- ldr r0, [r4, #0x8]
- add r1, r6, #0x0
- bl FUN_02009660
- bl FUN_020096CC
- ldr r2, [r5, #0x0]
- add r1, r6, #0x0
- bl FUN_02008DEC
- str r0, [r7, #0xc]
- ldr r0, [sp, #0x14]
- add r6, r6, #0x1
- add r7, r7, #0x4
- cmp r6, r0
- blt _0200BD9E
-_0200BDBE:
- ldr r0, [sp, #0x14]
- mov r7, #0x0
- cmp r0, #0x0
- ble _0200BDF6
- add r6, r4, #0x0
-_0200BDC8:
- ldr r0, [r4, #0x8]
- add r1, r7, #0x0
- bl FUN_02009660
- str r0, [sp, #0x20]
- bl FUN_020096CC
- ldr r1, [r5, #0x0]
- bl FUN_02009424
- add r2, r0, #0x0
- str r2, [r6, #0x24]
- ldr r0, [r6, #0xc]
- ldr r1, [sp, #0x20]
- ldr r3, [r5, #0x0]
- bl FUN_020093A8
- str r0, [r6, #0x3c]
- ldr r0, [sp, #0x14]
- add r7, r7, #0x1
- add r6, r6, #0x4
- cmp r7, r0
- blt _0200BDC8
-_0200BDF6:
- ldr r0, [r4, #0x24]
- bl FUN_02009A90
- ldr r0, [r4, #0x28]
- bl FUN_02009D34
- ldr r1, [sp, #0x10]
- ldr r0, [r5, #0x0]
- ldr r1, [r1, #0x18]
- bl FUN_020161A4
- ldr r1, [r4, #0x14]
- add r6, r0, #0x0
- str r1, [sp, #0x0]
- ldr r1, [r4, #0x18]
- str r1, [sp, #0x4]
- ldr r1, [r4, #0x1c]
- str r1, [sp, #0x8]
- ldr r1, [r4, #0x20]
- str r1, [sp, #0xc]
- ldr r1, [r5, #0x0]
- ldr r2, [r4, #0xc]
- ldr r3, [r4, #0x10]
- bl FUN_02008BE0
- str r0, [r4, #0x4]
- add r0, r6, #0x0
- bl FreeToHeap
- mov r0, #0x1
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200BE38
-FUN_0200BE38: ; 0x0200BE38
- push {r4, lr}
- sub sp, #0x28
- mov r3, #0x4
- mov r4, #0x6
- ldrsh r3, [r2, r3]
- ldrsh r4, [r2, r4]
- str r4, [sp, #0x0]
- str r3, [sp, #0x4]
- ldrh r4, [r2, #0xa]
- str r4, [sp, #0x8]
- ldr r4, [r2, #0xc]
- str r4, [sp, #0xc]
- ldr r4, [r2, #0x10]
- str r4, [sp, #0x10]
- ldr r4, [r2, #0x14]
- str r4, [sp, #0x14]
- ldr r4, [r2, #0x18]
- str r4, [sp, #0x18]
- ldr r4, [r2, #0x1c]
- str r4, [sp, #0x1c]
- ldr r4, [r2, #0x20]
- str r4, [sp, #0x20]
- ldr r4, [r2, #0x24]
- str r4, [sp, #0x24]
- ldr r2, [r2, #0x0]
- bl FUN_0200BE74
- add sp, #0x28
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200BE74
-FUN_0200BE74: ; 0x0200BE74
- push {r4, lr}
- sub sp, #0x30
- add r4, r0, #0x0
- ldr r0, [r1, #0x0]
- str r0, [sp, #0x0]
- ldr r0, [r1, #0x4]
- ldr r1, [r0, #0x0]
- mov r0, #0x24
- mul r0, r2
- add r0, r1, r0
- str r0, [sp, #0x4]
- cmp r3, #0x0
- ble _0200BEA0
- lsl r0, r3, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200BEAE
-_0200BEA0:
- lsl r0, r3, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200BEAE:
- bl _ffix
- str r0, [sp, #0x8]
- add r1, sp, #0x28
- mov r0, #0x10
- ldrsh r0, [r1, r0]
- cmp r0, #0x0
- ble _0200BED0
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200BEDE
-_0200BED0:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200BEDE:
- bl _ffix
- str r0, [sp, #0xc]
- add r1, sp, #0x28
- mov r0, #0x14
- ldrsh r0, [r1, r0]
- cmp r0, #0x0
- ble _0200BF00
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200BF0E
-_0200BF00:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200BF0E:
- bl _ffix
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x4c]
- cmp r0, #0x2
- bne _0200BF24
- mov r0, #0x3
- ldr r1, [sp, #0xc]
- lsl r0, r0, #0x12
- add r0, r1, r0
- str r0, [sp, #0xc]
-_0200BF24:
- mov r0, #0x1
- lsl r0, r0, #0xc
- str r0, [sp, #0x14]
- str r0, [sp, #0x18]
- str r0, [sp, #0x1c]
- mov r1, #0x0
- add r0, sp, #0x0
- strh r1, [r0, #0x20]
- ldr r0, [sp, #0x44]
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x4c]
- str r0, [sp, #0x28]
- ldr r0, [r4, #0x0]
- str r0, [sp, #0x2c]
- add r0, sp, #0x0
- bl FUN_0201FE94
- add r4, r0, #0x0
- beq _0200BF5A
- add r1, sp, #0x28
- ldrh r1, [r1, #0x18]
- bl FUN_02020130
- ldr r1, [sp, #0x48]
- add r0, r4, #0x0
- bl FUN_02020248
-_0200BF5A:
- add r0, r4, #0x0
- add sp, #0x30
- pop {r4, pc}
-
- thumb_func_start FUN_0200BF60
-FUN_0200BF60: ; 0x0200BF60
- push {r4-r7, lr}
- sub sp, #0xc
- str r0, [sp, #0x0]
- mov r0, #0x6
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x0]
- add r5, r1, #0x0
- add r6, r2, #0x0
- cmp r0, #0x0
- beq _0200BF78
- cmp r5, #0x0
- bne _0200BF7E
-_0200BF78:
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200BF7E:
- ldr r0, [r6, #0x10]
- cmp r0, #0x0
- beq _0200BF8A
- ldr r0, [r6, #0x14]
- cmp r0, #0x0
- bne _0200BF8E
-_0200BF8A:
- mov r0, #0x4
- str r0, [sp, #0x4]
-_0200BF8E:
- ldr r0, [sp, #0x4]
- str r0, [r5, #0x54]
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ble _0200BFBE
- add r7, r6, #0x0
- add r4, r5, #0x0
-_0200BFA0:
- ldr r2, [sp, #0x0]
- ldr r0, [r7, #0x0]
- ldr r1, [sp, #0x8]
- ldr r2, [r2, #0x0]
- bl FUN_02008DEC
- str r0, [r4, #0xc]
- ldr r0, [sp, #0x8]
- add r7, r7, #0x4
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- add r4, r4, #0x4
- str r1, [sp, #0x8]
- cmp r1, r0
- blt _0200BFA0
-_0200BFBE:
- ldr r0, [sp, #0x4]
- mov r7, #0x0
- cmp r0, #0x0
- ble _0200C004
- add r4, r7, #0x0
-_0200BFC8:
- ldr r0, [r6, #0x0]
- cmp r0, #0x0
- beq _0200BFF8
- ldr r1, [sp, #0x0]
- ldr r1, [r1, #0x0]
- bl FUN_02009424
- str r0, [r5, #0x24]
- mov r0, #0x0
- str r0, [r5, #0x3c]
- ldr r3, [r5, #0x24]
- add r1, r0, #0x0
- ldr r0, [r3, #0x4]
- cmp r0, #0x0
- ble _0200BFF8
- add r2, r1, #0x0
-_0200BFE8:
- ldr r0, [r3, #0x0]
- add r1, r1, #0x1
- str r4, [r0, r2]
- ldr r3, [r5, #0x24]
- add r2, r2, #0x4
- ldr r0, [r3, #0x4]
- cmp r1, r0
- blt _0200BFE8
-_0200BFF8:
- ldr r0, [sp, #0x4]
- add r7, r7, #0x1
- add r6, r6, #0x4
- add r5, r5, #0x4
- cmp r7, r0
- blt _0200BFC8
-_0200C004:
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C00C
-FUN_0200C00C: ; 0x0200C00C
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x28]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C02A
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C02A:
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r4, #0xc]
- bl FUN_02008F34
- add r5, r0, #0x0
- beq _0200C058
- bl FUN_02009B04
- ldr r0, [r4, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C058:
- bl ErrorHandling
- cmp r5, #0x0
- beq _0200C066
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C066:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C06C
-FUN_0200C06C: ; 0x0200C06C
- push {r3-r7, lr}
- sub sp, #0x10
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0x10]
- ldr r1, [sp, #0x34]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C08C
- mov r0, #0x0
- add sp, #0x10
- mvn r0, r0
- pop {r3-r7, pc}
-_0200C08C:
- ldr r0, [sp, #0x34]
- ldr r3, [sp, #0x28]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x30]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x2c]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r5, #0x0]
- str r0, [sp, #0xc]
- ldr r0, [r4, #0x10]
- bl FUN_02008FEC
- add r5, r0, #0x0
- beq _0200C0D0
- bl FUN_02009D68
- cmp r0, #0x1
- beq _0200C0B8
- bl ErrorHandling
-_0200C0B8:
- ldr r0, [r4, #0x28]
- add r1, r5, #0x0
- bl FUN_0200C474
- ldr r1, [sp, #0x30]
- add r0, r5, #0x0
- bl FUN_02009E88
- lsl r0, r0, #0x18
- add sp, #0x10
- asr r0, r0, #0x18
- pop {r3-r7, pc}
-_0200C0D0:
- bl ErrorHandling
- mov r0, #0x0
- mvn r0, r0
- add sp, #0x10
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C0DC
-FUN_0200C0DC: ; 0x0200C0DC
- push {r4-r6, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- ldr r0, [sp, #0x28]
- add r6, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- add r1, r3, #0x0
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x30]
- ldr r3, [sp, #0x24]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x34]
- str r0, [sp, #0xc]
- add r0, r2, #0x0
- ldr r2, [sp, #0x20]
- bl FUN_0200C06C
- add r4, r0, #0x0
- mov r0, #0x0
- mvn r0, r0
- cmp r4, r0
- beq _0200C11A
- ldr r3, [sp, #0x2c]
- lsl r2, r4, #0x14
- add r0, r5, #0x0
- add r1, r6, #0x0
- lsr r2, r2, #0x10
- lsl r3, r3, #0x5
- bl FUN_02003108
-_0200C11A:
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- add sp, #0x10
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200C124
-FUN_0200C124: ; 0x0200C124
- push {r3-r4, lr}
- sub sp, #0xc
- ldr r4, [sp, #0x18]
- str r4, [sp, #0x0]
- mov r4, #0x2
- str r4, [sp, #0x4]
- ldr r4, [sp, #0x1c]
- str r4, [sp, #0x8]
- bl FUN_0200C404
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0200C13C
-FUN_0200C13C: ; 0x0200C13C
- push {r3-r4, lr}
- sub sp, #0xc
- ldr r4, [sp, #0x18]
- str r4, [sp, #0x0]
- mov r4, #0x3
- str r4, [sp, #0x4]
- ldr r4, [sp, #0x1c]
- str r4, [sp, #0x8]
- bl FUN_0200C404
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0200C154
-FUN_0200C154: ; 0x0200C154
- push {r4-r7, lr}
- sub sp, #0x74
- add r7, r0, #0x0
- ldr r0, [r7, #0x0]
- add r6, r1, #0x0
- mov r1, #0x10
- add r5, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _0200C170
- add sp, #0x74
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C170:
- ldr r0, [r7, #0x0]
- mov r1, #0x8
- bl AllocFromHeap
- str r0, [r4, #0x8]
- cmp r0, #0x0
- bne _0200C184
- add sp, #0x74
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C184:
- ldr r0, [r7, #0x0]
- mov r1, #0x24
- bl AllocFromHeap
- ldr r1, [r4, #0x8]
- str r0, [r1, #0x0]
- ldr r0, [r4, #0x8]
- ldr r0, [r0, #0x0]
- str r0, [r4, #0x4]
- ldr r0, [r4, #0x8]
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- bne _0200C1AC
- cmp r0, #0x0
- beq _0200C1A6
- bl FreeToHeap
-_0200C1A6:
- add sp, #0x74
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C1AC:
- mov r1, #0x0
- add r2, r5, #0x0
- add r3, sp, #0x2c
-_0200C1B2:
- ldr r0, [r2, #0x14]
- add r1, r1, #0x1
- add r2, r2, #0x4
- stmia r3!, {r0}
- cmp r1, #0x6
- blt _0200C1B2
- ldr r0, [r6, #0x1c]
- cmp r0, #0x0
- beq _0200C1CA
- ldr r1, [r6, #0x20]
- cmp r1, #0x0
- bne _0200C1D4
-_0200C1CA:
- mov r0, #0x0
- mvn r0, r0
- str r0, [sp, #0x3c]
- str r0, [sp, #0x40]
- b _0200C206
-_0200C1D4:
- mov r2, #0x0
- ldr r1, [sp, #0x3c]
- mvn r2, r2
- cmp r1, r2
- beq _0200C1EC
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C1EC
- mov r0, #0x0
- mvn r0, r0
- str r0, [sp, #0x3c]
-_0200C1EC:
- mov r0, #0x0
- ldr r1, [sp, #0x40]
- mvn r0, r0
- cmp r1, r0
- beq _0200C206
- ldr r0, [r6, #0x20]
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C206
- mov r0, #0x0
- mvn r0, r0
- str r0, [sp, #0x40]
-_0200C206:
- ldr r0, [sp, #0x38]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x3c]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x40]
- str r0, [sp, #0x8]
- ldr r0, [r5, #0x30]
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x2c]
- str r0, [sp, #0x10]
- ldr r0, [r6, #0xc]
- str r0, [sp, #0x14]
- ldr r0, [r6, #0x10]
- str r0, [sp, #0x18]
- ldr r0, [r6, #0x14]
- str r0, [sp, #0x1c]
- ldr r0, [r6, #0x18]
- str r0, [sp, #0x20]
- ldr r0, [r6, #0x1c]
- str r0, [sp, #0x24]
- ldr r0, [r6, #0x20]
- str r0, [sp, #0x28]
- ldr r0, [r4, #0x4]
- ldr r1, [sp, #0x2c]
- ldr r2, [sp, #0x30]
- ldr r3, [sp, #0x34]
- bl FUN_02008AA4
- ldr r0, [r6, #0x0]
- str r0, [sp, #0x44]
- ldr r0, [r4, #0x4]
- str r0, [sp, #0x48]
- mov r0, #0x0
- ldrsh r0, [r5, r0]
- cmp r0, #0x0
- ble _0200C260
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200C26E
-_0200C260:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200C26E:
- bl _ffix
- str r0, [sp, #0x4c]
- mov r0, #0x2
- ldrsh r0, [r5, r0]
- cmp r0, #0x0
- ble _0200C28E
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200C29C
-_0200C28E:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200C29C:
- bl _ffix
- str r0, [sp, #0x50]
- mov r0, #0x4
- ldrsh r0, [r5, r0]
- cmp r0, #0x0
- ble _0200C2BC
- lsl r0, r0, #0xc
- bl _fflt
- add r1, r0, #0x0
- mov r0, #0x3f
- lsl r0, r0, #0x18
- bl _fadd
- b _0200C2CA
-_0200C2BC:
- lsl r0, r0, #0xc
- bl _fflt
- mov r1, #0x3f
- lsl r1, r1, #0x18
- bl _fsub
-_0200C2CA:
- bl _ffix
- str r0, [sp, #0x54]
- ldr r0, [r5, #0x10]
- cmp r0, #0x2
- bne _0200C2E0
- mov r0, #0x3
- ldr r1, [sp, #0x50]
- lsl r0, r0, #0x12
- add r0, r1, r0
- str r0, [sp, #0x50]
-_0200C2E0:
- mov r0, #0x1
- lsl r0, r0, #0xc
- str r0, [sp, #0x58]
- str r0, [sp, #0x5c]
- str r0, [sp, #0x60]
- mov r1, #0x0
- add r0, sp, #0x2c
- strh r1, [r0, #0x38]
- ldr r0, [r5, #0x8]
- str r0, [sp, #0x68]
- ldr r0, [r5, #0x10]
- str r0, [sp, #0x6c]
- ldr r0, [r7, #0x0]
- str r0, [sp, #0x70]
- add r0, sp, #0x44
- bl FUN_0201FE94
- str r0, [r4, #0x0]
- ldr r0, [r5, #0x30]
- str r0, [r4, #0xc]
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _0200C328
- bl FUN_020202A0
- add r6, r0, #0x0
- ldrh r1, [r5, #0x6]
- ldr r0, [r4, #0x0]
- bl FUN_02020130
- ldr r1, [r5, #0xc]
- ldr r0, [r4, #0x0]
- add r1, r6, r1
- bl FUN_02020248
- b _0200C32C
-_0200C328:
- bl ErrorHandling
-_0200C32C:
- add r0, r4, #0x0
- add sp, #0x74
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C334
-FUN_0200C334: ; 0x0200C334
- push {r3, lr}
- ldr r0, [r0, #0x10]
- bl FUN_020094F0
- mov r1, #0x0
- bl FUN_02009E54
- pop {r3, pc}
-
- thumb_func_start FUN_0200C344
-FUN_0200C344: ; 0x0200C344
- push {r4, lr}
- ldr r0, [r0, #0x10]
- add r4, r2, #0x0
- bl FUN_020094F0
- add r1, r4, #0x0
- bl FUN_02009E88
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200C358
-FUN_0200C358: ; 0x0200C358
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0xc]
- ldr r1, [r3, #0x24]
- ldr r3, _0200C364 ; =FUN_0200C4F4
- bx r3
- .balign 4
-_0200C364: .word FUN_0200C4F4
-
- thumb_func_start FUN_0200C368
-FUN_0200C368: ; 0x0200C368
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0x10]
- ldr r1, [r3, #0x28]
- ldr r3, _0200C374 ; =FUN_0200C548
- bx r3
- .balign 4
-_0200C374: .word FUN_0200C548
-
- thumb_func_start FUN_0200C378
-FUN_0200C378: ; 0x0200C378
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0x14]
- ldr r1, [r3, #0x2c]
- ldr r3, _0200C384 ; =FUN_0200C4A8
- bx r3
- .balign 4
-_0200C384: .word FUN_0200C4A8
-
- thumb_func_start FUN_0200C388
-FUN_0200C388: ; 0x0200C388
- add r3, r0, #0x0
- add r2, r1, #0x0
- ldr r0, [r3, #0x18]
- ldr r1, [r3, #0x30]
- ldr r3, _0200C394 ; =FUN_0200C4A8
- bx r3
- .balign 4
-_0200C394: .word FUN_0200C4A8
-
- thumb_func_start FUN_0200C398
-FUN_0200C398: ; 0x0200C398
- push {r3-r7, lr}
- add r6, r1, #0x0
- add r7, r0, #0x0
- add r0, r6, #0x0
- bl FUN_0200BC40
- ldr r0, [r6, #0x24]
- bl FUN_02009C30
- ldr r0, [r6, #0x28]
- bl FUN_02009E28
- ldr r0, [r6, #0x54]
- mov r4, #0x0
- cmp r0, #0x0
- ble _0200C3D0
- add r5, r6, #0x0
-_0200C3BA:
- ldr r0, [r5, #0x24]
- bl FUN_02009448
- ldr r0, [r5, #0xc]
- bl FUN_02008E2C
- ldr r0, [r6, #0x54]
- add r4, r4, #0x1
- add r5, r5, #0x4
- cmp r4, r0
- blt _0200C3BA
-_0200C3D0:
- add r0, r7, #0x0
- add r1, r6, #0x0
- bl FUN_0200BCD0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C3DC
-FUN_0200C3DC: ; 0x0200C3DC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0xc]
- cmp r0, #0x0
- beq _0200C3EE
- ldr r0, [r4, #0x4]
- ldr r0, [r0, #0x0]
- bl FUN_02009CDC
-_0200C3EE:
- ldr r0, [r4, #0x0]
- bl FUN_0201FFC8
- ldr r0, [r4, #0x8]
- bl FUN_02008C80
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200C404
-FUN_0200C404: ; 0x0200C404
- push {r4-r7, lr}
- sub sp, #0x14
- add r6, r1, #0x0
- add r7, r0, #0x0
- ldr r0, [sp, #0x2c]
- add r5, r6, #0x0
- lsl r4, r0, #0x2
- add r5, #0xc
- ldr r0, [r5, r4]
- ldr r1, [sp, #0x30]
- str r2, [sp, #0xc]
- str r3, [sp, #0x10]
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C42A
- add sp, #0x14
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C42A:
- ldr r0, [sp, #0x30]
- ldr r1, [sp, #0xc]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- ldr r2, [sp, #0x10]
- str r0, [sp, #0x4]
- ldr r0, [r7, #0x0]
- ldr r3, [sp, #0x28]
- str r0, [sp, #0x8]
- ldr r0, [r5, r4]
- bl FUN_020090AC
- add r5, r0, #0x0
- beq _0200C460
- add r0, r6, r4
- ldr r0, [r0, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add r4, r0, #0x0
- cmp r4, #0x1
- beq _0200C45A
- bl ErrorHandling
-_0200C45A:
- add sp, #0x14
- add r0, r4, #0x0
- pop {r4-r7, pc}
-_0200C460:
- bl ErrorHandling
- cmp r5, #0x0
- beq _0200C46E
- add sp, #0x14
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C46E:
- mov r0, #0x0
- add sp, #0x14
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C474
-FUN_0200C474: ; 0x0200C474
- push {r3-r6}
- ldr r6, [r0, #0x4]
- mov r3, #0x0
- cmp r6, #0x0
- ble _0200C4A0
- ldr r5, [r0, #0x0]
- add r4, r5, #0x0
-_0200C482:
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- bne _0200C498
- lsl r2, r3, #0x2
- str r1, [r5, r2]
- ldr r1, [r0, #0x8]
- add r1, r1, #0x1
- str r1, [r0, #0x8]
- mov r0, #0x1
- pop {r3-r6}
- bx lr
-_0200C498:
- add r3, r3, #0x1
- add r4, r4, #0x4
- cmp r3, r6
- blt _0200C482
-_0200C4A0:
- mov r0, #0x0
- pop {r3-r6}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0200C4A8
-FUN_0200C4A8: ; 0x0200C4A8
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x4]
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200C4F0
- add r4, r6, #0x0
-_0200C4BA:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _0200C4E6
- bl FUN_02009530
- cmp r0, r7
- bne _0200C4E6
- ldr r1, [r5, #0x0]
- lsl r4, r6, #0x2
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r4]
- bl FUN_02009490
- ldr r0, [r5, #0x0]
- mov r1, #0x0
- str r1, [r0, r4]
- ldr r0, [r5, #0x8]
- sub r0, r0, #0x1
- str r0, [r5, #0x8]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0200C4E6:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200C4BA
-_0200C4F0:
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C4F4
-FUN_0200C4F4: ; 0x0200C4F4
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x4]
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200C542
- add r4, r6, #0x0
-_0200C506:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _0200C538
- bl FUN_02009530
- cmp r0, r7
- bne _0200C538
- add r0, r7, #0x0
- bl FUN_0201D324
- ldr r1, [r5, #0x0]
- lsl r4, r6, #0x2
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r4]
- bl FUN_02009490
- ldr r0, [r5, #0x0]
- mov r1, #0x0
- str r1, [r0, r4]
- ldr r0, [r5, #0x8]
- sub r0, r0, #0x1
- str r0, [r5, #0x8]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0200C538:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200C506
-_0200C542:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C548
-FUN_0200C548: ; 0x0200C548
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x4]
- add r7, r2, #0x0
- mov r6, #0x0
- cmp r0, #0x0
- ble _0200C596
- add r4, r6, #0x0
-_0200C55A:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, r4]
- cmp r0, #0x0
- beq _0200C58C
- bl FUN_02009530
- cmp r0, r7
- bne _0200C58C
- add r0, r7, #0x0
- bl FUN_0201E1C8
- ldr r1, [r5, #0x0]
- lsl r4, r6, #0x2
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r4]
- bl FUN_02009490
- ldr r0, [r5, #0x0]
- mov r1, #0x0
- str r1, [r0, r4]
- ldr r0, [r5, #0x8]
- sub r0, r0, #0x1
- str r0, [r5, #0x8]
- mov r0, #0x1
- pop {r3-r7, pc}
-_0200C58C:
- ldr r0, [r5, #0x4]
- add r6, r6, #0x1
- add r4, r4, #0x4
- cmp r6, r0
- blt _0200C55A
-_0200C596:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200C59C
-FUN_0200C59C: ; 0x0200C59C
- ldr r3, _0200C5A4 ; =FUN_020201E4
- mov r1, #0x1
- lsl r1, r1, #0xc
- bx r3
- .balign 4
-_0200C5A4: .word FUN_020201E4
-
- thumb_func_start FUN_0200C5A8
-FUN_0200C5A8: ; 0x0200C5A8
- ldr r3, _0200C5B0 ; =FUN_0200C59C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5B0: .word FUN_0200C59C
-
- thumb_func_start FUN_0200C5B4
-FUN_0200C5B4: ; 0x0200C5B4
- ldr r3, _0200C5BC ; =FUN_020201E4
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5BC: .word FUN_020201E4
-
- thumb_func_start FUN_0200C5C0
-FUN_0200C5C0: ; 0x0200C5C0
- ldr r3, _0200C5C8 ; =FUN_02020130
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5C8: .word FUN_02020130
-
- thumb_func_start FUN_0200C5CC
-FUN_0200C5CC: ; 0x0200C5CC
- ldr r3, _0200C5D4 ; =FUN_020201DC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5D4: .word FUN_020201DC
-
- thumb_func_start FUN_0200C5D8
-FUN_0200C5D8: ; 0x0200C5D8
- ldr r3, _0200C5DC ; =FUN_020200BC
- bx r3
- .balign 4
-_0200C5DC: .word FUN_020200BC
-
- thumb_func_start FUN_0200C5E0
-FUN_0200C5E0: ; 0x0200C5E0
- ldr r3, _0200C5E8 ; =FUN_0200C5D8
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5E8: .word FUN_0200C5D8
-
- thumb_func_start FUN_0200C5EC
-FUN_0200C5EC: ; 0x0200C5EC
- ldr r3, _0200C5F0 ; =FUN_020200D8
- bx r3
- .balign 4
-_0200C5F0: .word FUN_020200D8
-
- thumb_func_start FUN_0200C5F4
-FUN_0200C5F4: ; 0x0200C5F4
- ldr r3, _0200C5FC ; =FUN_0200C5EC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C5FC: .word FUN_0200C5EC
-
- thumb_func_start FUN_0200C600
-FUN_0200C600: ; 0x0200C600
- ldr r3, _0200C604 ; =FUN_02020388
- bx r3
- .balign 4
-_0200C604: .word FUN_02020388
-
- thumb_func_start FUN_0200C608
-FUN_0200C608: ; 0x0200C608
- ldr r3, _0200C610 ; =FUN_0200C600
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C610: .word FUN_0200C600
-
- thumb_func_start FUN_0200C614
-FUN_0200C614: ; 0x0200C614
- ldr r3, _0200C618 ; =FUN_02020208
- bx r3
- .balign 4
-_0200C618: .word FUN_02020208
-
- thumb_func_start FUN_0200C61C
-FUN_0200C61C: ; 0x0200C61C
- ldr r3, _0200C624 ; =FUN_0200C614
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C624: .word FUN_0200C614
-
- thumb_func_start FUN_0200C628
-FUN_0200C628: ; 0x0200C628
- ldr r3, _0200C62C ; =FUN_0202022C
- bx r3
- .balign 4
-_0200C62C: .word FUN_0202022C
-
- thumb_func_start FUN_0200C630
-FUN_0200C630: ; 0x0200C630
- ldr r3, _0200C638 ; =FUN_0200C628
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C638: .word FUN_0200C628
-
- thumb_func_start FUN_0200C63C
-FUN_0200C63C: ; 0x0200C63C
- ldr r3, _0200C640 ; =FUN_020200A0
- bx r3
- .balign 4
-_0200C640: .word FUN_020200A0
-
- thumb_func_start FUN_0200C644
-FUN_0200C644: ; 0x0200C644
- ldr r3, _0200C64C ; =FUN_0200C63C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C64C: .word FUN_0200C63C
-
- thumb_func_start FUN_0200C650
-FUN_0200C650: ; 0x0200C650
- ldr r3, _0200C654 ; =FUN_02020128
- bx r3
- .balign 4
-_0200C654: .word FUN_02020128
-
- thumb_func_start FUN_0200C658
-FUN_0200C658: ; 0x0200C658
- ldr r3, _0200C660 ; =FUN_0200C650
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C660: .word FUN_0200C650
-
- thumb_func_start FUN_0200C664
-FUN_0200C664: ; 0x0200C664
- ldr r3, _0200C668 ; =FUN_02020248
- bx r3
- .balign 4
-_0200C668: .word FUN_02020248
-
- thumb_func_start FUN_0200C66C
-FUN_0200C66C: ; 0x0200C66C
- ldr r3, _0200C674 ; =FUN_0200C664
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C674: .word FUN_0200C664
-
- thumb_func_start FUN_0200C678
-FUN_0200C678: ; 0x0200C678
- ldr r3, _0200C67C ; =FUN_020202A8
- bx r3
- .balign 4
-_0200C67C: .word FUN_020202A8
-
- thumb_func_start FUN_0200C680
-FUN_0200C680: ; 0x0200C680
- ldr r3, _0200C688 ; =FUN_0200C678
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C688: .word FUN_0200C678
-
- thumb_func_start FUN_0200C68C
-FUN_0200C68C: ; 0x0200C68C
- ldr r3, _0200C694 ; =FUN_02020300
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C694: .word FUN_02020300
-
- thumb_func_start FUN_0200C698
-FUN_0200C698: ; 0x0200C698
- ldr r3, _0200C6A0 ; =FUN_02020238
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bx r3
- .balign 4
-_0200C6A0: .word FUN_02020238
-
- thumb_func_start FUN_0200C6A4
-FUN_0200C6A4: ; 0x0200C6A4
- ldr r3, _0200C6AC ; =FUN_02020240
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6AC: .word FUN_02020240
-
- thumb_func_start FUN_0200C6B0
-FUN_0200C6B0: ; 0x0200C6B0
- ldr r3, _0200C6B8 ; =FUN_0200C698
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6B8: .word FUN_0200C698
-
- thumb_func_start FUN_0200C6BC
-FUN_0200C6BC: ; 0x0200C6BC
- ldr r3, _0200C6C0 ; =FUN_02020310
- bx r3
- .balign 4
-_0200C6C0: .word FUN_02020310
-
- thumb_func_start FUN_0200C6C4
-FUN_0200C6C4: ; 0x0200C6C4
- ldr r3, _0200C6CC ; =FUN_0200C6BC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6CC: .word FUN_0200C6BC
-
- thumb_func_start FUN_0200C6D0
-FUN_0200C6D0: ; 0x0200C6D0
- ldr r3, _0200C6D4 ; =FUN_0202032C
- bx r3
- .balign 4
-_0200C6D4: .word FUN_0202032C
-
- thumb_func_start FUN_0200C6D8
-FUN_0200C6D8: ; 0x0200C6D8
- ldr r3, _0200C6E0 ; =FUN_0200C6D0
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C6E0: .word FUN_0200C6D0
-
- thumb_func_start FUN_0200C6E4
-FUN_0200C6E4: ; 0x0200C6E4
- push {r3-r4, lr}
- sub sp, #0xc
- lsl r1, r1, #0xc
- str r1, [sp, #0x0]
- lsl r1, r2, #0xc
- add r4, r0, #0x0
- str r1, [sp, #0x4]
- bl FUN_02020380
- cmp r0, #0x2
- bne _0200C704
- mov r0, #0x3
- ldr r1, [sp, #0x4]
- lsl r0, r0, #0x12
- add r0, r1, r0
- str r0, [sp, #0x4]
-_0200C704:
- mov r0, #0x0
- str r0, [sp, #0x8]
- add r0, r4, #0x0
- add r1, sp, #0x0
- bl FUN_02020044
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0200C714
-FUN_0200C714: ; 0x0200C714
- ldr r3, _0200C71C ; =FUN_0200C6E4
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C71C: .word FUN_0200C6E4
-
- thumb_func_start FUN_0200C720
-FUN_0200C720: ; 0x0200C720
- push {r4-r5, lr}
- sub sp, #0xc
- lsl r1, r1, #0xc
- str r1, [sp, #0x0]
- lsl r1, r2, #0xc
- add r5, r0, #0x0
- add r4, r3, #0x0
- str r1, [sp, #0x4]
- bl FUN_02020380
- cmp r0, #0x2
- bne _0200C73E
- ldr r0, [sp, #0x4]
- add r0, r0, r4
- str r0, [sp, #0x4]
-_0200C73E:
- mov r0, #0x0
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- add r1, sp, #0x0
- bl FUN_02020044
- add sp, #0xc
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0200C750
-FUN_0200C750: ; 0x0200C750
- push {r3, lr}
- ldr r0, [r0, #0x0]
- bl FUN_0200C720
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200C75C
-FUN_0200C75C: ; 0x0200C75C
- push {r3-r7, lr}
- add r7, r0, #0x0
- add r6, r1, #0x0
- add r5, r2, #0x0
- bl FUN_0202011C
- add r4, r0, #0x0
- ldr r1, [r4, #0x0]
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r6, #0x0]
- add r0, r7, #0x0
- bl FUN_02020380
- cmp r0, #0x2
- ldr r1, [r4, #0x4]
- bne _0200C794
- mov r0, #0x3
- lsl r0, r0, #0x12
- sub r1, r1, r0
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-_0200C794:
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C7A0
-FUN_0200C7A0: ; 0x0200C7A0
- ldr r3, _0200C7A8 ; =FUN_0200C75C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C7A8: .word FUN_0200C75C
-
- thumb_func_start FUN_0200C7AC
-FUN_0200C7AC: ; 0x0200C7AC
- push {r3-r7, lr}
- str r0, [sp, #0x0]
- add r6, r1, #0x0
- add r5, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0202011C
- add r4, r0, #0x0
- ldr r1, [r4, #0x0]
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r6, #0x0]
- ldr r0, [sp, #0x0]
- bl FUN_02020380
- cmp r0, #0x2
- bne _0200C7E2
- ldr r0, [r4, #0x4]
- sub r1, r0, r7
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-_0200C7E2:
- ldr r1, [r4, #0x4]
- asr r0, r1, #0xb
- lsr r0, r0, #0x14
- add r0, r1, r0
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0200C7F0
-FUN_0200C7F0: ; 0x0200C7F0
- push {r3, lr}
- ldr r0, [r0, #0x0]
- bl FUN_0200C7AC
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200C7FC
-FUN_0200C7FC: ; 0x0200C7FC
- push {r3-r6, lr}
- sub sp, #0xc
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_0202011C
- ldr r2, [r0, #0x0]
- lsl r1, r5, #0xc
- add r1, r2, r1
- str r1, [sp, #0x0]
- ldr r2, [r0, #0x4]
- lsl r1, r4, #0xc
- add r1, r2, r1
- str r1, [sp, #0x4]
- ldr r0, [r0, #0x8]
- add r1, sp, #0x0
- str r0, [sp, #0x8]
- add r0, r6, #0x0
- bl FUN_02020044
- add sp, #0xc
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200C82C
-FUN_0200C82C: ; 0x0200C82C
- ldr r3, _0200C834 ; =FUN_0200C7FC
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C834: .word FUN_0200C7FC
-
- thumb_func_start FUN_0200C838
-FUN_0200C838: ; 0x0200C838
- ldr r3, _0200C83C ; =FUN_020200EC
- bx r3
- .balign 4
-_0200C83C: .word FUN_020200EC
-
- thumb_func_start FUN_0200C840
-FUN_0200C840: ; 0x0200C840
- ldr r3, _0200C848 ; =FUN_0200C838
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C848: .word FUN_0200C838
-
- thumb_func_start FUN_0200C84C
-FUN_0200C84C: ; 0x0200C84C
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r7, r2, #0x0
- bl FUN_02020120
- add r4, r0, #0x0
- ldr r0, _0200C880 ; =0x45800000
- add r1, r6, #0x0
- bl _fmul
- bl _ffix
- str r0, [r4, #0x0]
- ldr r0, _0200C880 ; =0x45800000
- add r1, r7, #0x0
- bl _fmul
- bl _ffix
- str r0, [r4, #0x4]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02020064
- pop {r3-r7, pc}
- .balign 4
-_0200C880: .word 0x45800000
-
- thumb_func_start FUN_0200C884
-FUN_0200C884: ; 0x0200C884
- ldr r3, _0200C88C ; =FUN_0200C84C
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C88C: .word FUN_0200C84C
-
- thumb_func_start FUN_0200C890
-FUN_0200C890: ; 0x0200C890
- ldr r3, _0200C894 ; =FUN_02020088
- bx r3
- .balign 4
-_0200C894: .word FUN_02020088
-
- thumb_func_start FUN_0200C898
-FUN_0200C898: ; 0x0200C898
- ldr r3, _0200C8A0 ; =FUN_0200C890
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C8A0: .word FUN_0200C890
-
- thumb_func_start FUN_0200C8A4
-FUN_0200C8A4: ; 0x0200C8A4
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r0, #0x0
- bl FUN_02020124
- add r0, r0, r5
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- add r0, r4, #0x0
- bl FUN_02020088
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200C8BC
-FUN_0200C8BC: ; 0x0200C8BC
- ldr r3, _0200C8C4 ; =FUN_0200C8A4
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C8C4: .word FUN_0200C8A4
-
- thumb_func_start FUN_0200C8C8
-FUN_0200C8C8: ; 0x0200C8C8
- ldr r3, _0200C8CC ; =FUN_02020100
- bx r3
- .balign 4
-_0200C8CC: .word FUN_02020100
-
- thumb_func_start FUN_0200C8D0
-FUN_0200C8D0: ; 0x0200C8D0
- ldr r3, _0200C8D8 ; =FUN_0200C8C8
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C8D8: .word FUN_0200C8C8
-
- thumb_func_start FUN_0200C8DC
-FUN_0200C8DC: ; 0x0200C8DC
- push {lr}
- sub sp, #0xc
- lsl r1, r1, #0xc
- str r1, [sp, #0x0]
- lsl r1, r2, #0xc
- str r1, [sp, #0x4]
- mov r1, #0x0
- str r1, [sp, #0x8]
- ldr r0, [r0, #0x0]
- add r1, sp, #0x0
- bl FUN_02020054
- add sp, #0xc
- pop {pc}
-
- thumb_func_start FUN_0200C8F8
-FUN_0200C8F8: ; 0x0200C8F8
- ldr r3, _0200C900 ; =FUN_02020358
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C900: .word FUN_02020358
-
- thumb_func_start FUN_0200C904
-FUN_0200C904: ; 0x0200C904
- ldr r3, _0200C908 ; =FUN_02020398
- bx r3
- .balign 4
-_0200C908: .word FUN_02020398
-
- thumb_func_start FUN_0200C90C
-FUN_0200C90C: ; 0x0200C90C
- ldr r3, _0200C914 ; =FUN_0200C904
- ldr r0, [r0, #0x0]
- bx r3
- nop
-_0200C914: .word FUN_0200C904
-
- thumb_func_start FUN_0200C918
-FUN_0200C918: ; 0x0200C918
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x28]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C936
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C936:
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r4, #0xc]
- bl FUN_02008F34
- add r5, r0, #0x0
- beq _0200C964
- bl FUN_02009AC4
- ldr r0, [r4, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C964:
- bl ErrorHandling
- cmp r5, #0x0
- beq _0200C972
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C972:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C978
-FUN_0200C978: ; 0x0200C978
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x28]
- add r6, r2, #0x0
- add r7, r3, #0x0
- bl FUN_0200945C
- cmp r0, #0x0
- bne _0200C996
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0200C996:
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r7, #0x0
- str r0, [sp, #0x8]
- ldr r0, [r4, #0xc]
- bl FUN_02008F34
- add r5, r0, #0x0
- beq _0200C9C4
- bl FUN_02009B78
- ldr r0, [r4, #0x24]
- add r1, r5, #0x0
- bl FUN_0200C474
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C9C4:
- bl ErrorHandling
- cmp r5, #0x0
- beq _0200C9D2
- add sp, #0xc
- mov r0, #0x1
- pop {r4-r7, pc}
-_0200C9D2:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200C9D8
-FUN_0200C9D8: ; 0x0200C9D8
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- ldr r1, [sp, #0x24]
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_020094F0
- add r6, r0, #0x0
- ldr r0, [sp, #0x20]
- ldr r3, [sp, #0x8]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r4, #0xc]
- add r2, r7, #0x0
- bl FUN_020090FC
- add r0, r6, #0x0
- bl FUN_02009BE8
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200CA0C
-FUN_0200CA0C: ; 0x0200CA0C
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldr r0, [r4, #0x10]
- ldr r1, [sp, #0x24]
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_020094F0
- add r6, r0, #0x0
- ldr r0, [sp, #0x20]
- ldr r3, [sp, #0x8]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- str r0, [sp, #0x4]
- ldr r0, [r4, #0x10]
- add r2, r7, #0x0
- bl FUN_02009168
- add r0, r6, #0x0
- bl FUN_02009DE0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0200CA40
-FUN_0200CA40: ; 0x0200CA40
- ldr r0, [r0, #0x0]
- bx lr
diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s
index 6d593845..9e8b3189 100644
--- a/arm9/asm/unk_0200CABC.s
+++ b/arm9/asm/unk_0200CABC.s
@@ -42,7 +42,7 @@ FUN_0200CABC: ; 0x0200CABC
mov r0, #0x26
add r2, r5, #0x0
add r3, r4, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r3-r5, pc}
_0200CAE2:
@@ -55,7 +55,7 @@ _0200CAE2:
mov r0, #0x26
add r2, r5, #0x0
add r3, r4, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r3-r5, pc}
@@ -89,7 +89,7 @@ _0200CB18:
str r0, [sp, #0xc]
mov r0, #0x26
add r3, r5, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, sp, #0x10
ldrb r0, [r0, #0x10]
cmp r0, #0x2
@@ -108,7 +108,7 @@ _0200CB3C:
str r0, [sp, #0x4]
mov r0, #0x26
lsl r3, r4, #0x5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4-r6, pc}
_0200CB56:
@@ -119,7 +119,7 @@ _0200CB56:
str r0, [sp, #0x4]
mov r0, #0x26
lsl r3, r4, #0x5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4-r6, pc}
@@ -291,10 +291,10 @@ FUN_0200CCA4: ; 0x0200CCA4
bl FUN_0201AB18
str r0, [sp, #0x18]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x1c]
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x14]
str r1, [sp, #0x0]
@@ -328,10 +328,10 @@ FUN_0200CCF8: ; 0x0200CCF8
bl FUN_0201AB18
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x14]
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r7, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -394,7 +394,7 @@ FUN_0200CD68: ; 0x0200CD68
str r0, [sp, #0xc]
mov r0, #0x26
add r3, r5, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
cmp r5, #0x4
bhs _0200CDB8
add r0, r7, #0x0
@@ -407,7 +407,7 @@ FUN_0200CD68: ; 0x0200CD68
str r0, [sp, #0x4]
mov r0, #0x26
lsl r3, r4, #0x5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x14
pop {r4-r7, pc}
_0200CDB8:
@@ -421,7 +421,7 @@ _0200CDB8:
str r0, [sp, #0x4]
mov r0, #0x26
lsl r3, r4, #0x5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x14
pop {r4-r7, pc}
.balign 4
@@ -758,10 +758,10 @@ FUN_0200D06C: ; 0x0200D06C
bl FUN_0201AB18
str r0, [sp, #0x18]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp, #0x0]
str r0, [sp, #0x4]
lsl r0, r6, #0x18
@@ -813,10 +813,10 @@ FUN_0200D0E0: ; 0x0200D0E0
bl FUN_0201AB18
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x14]
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r7, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -879,7 +879,7 @@ FUN_0200D148: ; 0x0200D148
mov r0, #0x0
str r0, [sp, #0x10]
add r0, sp, #0x1c
- bl FUN_02018A60
+ bl BlitBitmapRect4Bit
add sp, #0x24
pop {r4-r5, pc}
@@ -908,7 +908,7 @@ FUN_0200D18C: ; 0x0200D18C
mov r1, #0x16
mov r2, #0x0
add r3, sp, #0x3c
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0x2c]
ldr r0, [sp, #0x3c]
mov r7, #0x0
@@ -1006,7 +1006,7 @@ FUN_0200D274: ; 0x0200D274
str r0, [sp, #0x0]
mov r0, #0x26
add r3, sp, #0x10
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0xc]
mov r1, #0x9
ldr r0, [sp, #0x2c]
@@ -1077,14 +1077,14 @@ FUN_0200D300: ; 0x0200D300
mov r0, #0x24
add r3, r6, #0x0
str r4, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x24 ; NARC_GRAPHIC_FIELD_BOARD
mov r1, #0x1
add r2, r4, #0x0
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x18
str r0, [sp, #0x14]
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
add r2, sp, #0x20
ldr r1, [sp, #0x18]
ldrb r2, [r2, #0x10]
@@ -1098,7 +1098,7 @@ FUN_0200D300: ; 0x0200D300
bl FUN_02017FB4
ldr r1, [sp, #0x14]
add r0, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, sp, #0x20
ldrb r3, [r0, #0x10]
cmp r3, #0x1
@@ -1144,7 +1144,7 @@ _0200D390:
str r0, [sp, #0xc]
mov r0, #0x24
add r3, r4, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r3-r5, pc}
@@ -1575,10 +1575,10 @@ FUN_0200D6F8: ; 0x0200D6F8
bl FUN_0201AB18
str r0, [sp, #0x1c]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp, #0x0]
str r0, [sp, #0x4]
str r6, [sp, #0x8]
@@ -1604,10 +1604,10 @@ _0200D756:
bl FUN_0201AB18
str r0, [sp, #0x24]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp, #0x0]
str r0, [sp, #0x4]
str r6, [sp, #0x8]
@@ -1648,10 +1648,10 @@ FUN_0200D7A0: ; 0x0200D7A0
bl FUN_0201AB18
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r7, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -1681,10 +1681,10 @@ _0200D7FE:
bl FUN_0201AB18
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r6, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -1792,7 +1792,7 @@ _0200D8DA:
mov r0, #0x26
mov r2, #0x0
add r3, sp, #0x30
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
mov r2, #0x80
add r5, r0, #0x0
str r2, [sp, #0x0]
@@ -1863,7 +1863,7 @@ FUN_0200D980: ; 0x0200D980
bl FUN_0201AB18
str r0, [sp, #0x1c]
ldr r0, [r5, #0x0]
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x20]
cmp r6, #0x2
bne _0200DA8A
@@ -2574,7 +2574,7 @@ FUN_0200DEF4: ; 0x0200DEF4
bl FUN_02009C5C
mov r1, #0x1
str r0, [sp, #0x4]
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
mov r1, #0x19
add r7, r0, #0x0
add r0, r4, #0x0
@@ -2601,7 +2601,7 @@ FUN_0200DEF4: ; 0x0200DEF4
ldr r1, [sp, #0x4]
bl FUN_02009E54
mov r1, #0x1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0x20
diff --git a/arm9/asm/unk_0200E1D0.s b/arm9/asm/unk_0200E1D0.s
index 85f4bfc2..3690752c 100644
--- a/arm9/asm/unk_0200E1D0.s
+++ b/arm9/asm/unk_0200E1D0.s
@@ -95,18 +95,18 @@ FUN_0200E1D0: ; 0x0200E1D0
add r6, r3, #0x0
cmp r0, #0x0
bne _0200E1E6
- bl ErrorHandling
+ bl GF_AssertFail
_0200E1E6:
ldr r0, [sp, #0x34]
cmp r0, #0x0
bne _0200E1F0
- bl ErrorHandling
+ bl GF_AssertFail
_0200E1F0:
ldr r0, _0200E2AC ; =UNK_021C47F4
ldrh r0, [r0, #0xc]
cmp r0, #0x0
beq _0200E1FC
- bl ErrorHandling
+ bl GF_AssertFail
_0200E1FC:
ldr r0, _0200E2B0 ; =UNK_021C46B4
bl FUN_0200E808
@@ -672,14 +672,14 @@ FUN_0200E628: ; 0x0200E628
str r1, [sp, #0x0]
cmp r0, #0x0
beq _0200E64A
- bl ErrorHandling
+ bl GF_AssertFail
_0200E64A:
add r6, r5, #0x0
add r6, #0x8
ldr r0, [r6, r4]
cmp r0, #0x0
bne _0200E658
- bl ErrorHandling
+ bl GF_AssertFail
_0200E658:
ldr r0, [r5, #0x10]
cmp r0, #0x0
@@ -697,7 +697,7 @@ _0200E672:
ldr r0, [sp, #0x4]
cmp r0, #0x1
beq _0200E67C
- bl ErrorHandling
+ bl GF_AssertFail
_0200E67C:
ldr r0, [sp, #0x0]
cmp r7, #0x0
diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s
index 15526585..1919f15d 100644
--- a/arm9/asm/unk_0200E850.s
+++ b/arm9/asm/unk_0200E850.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_020FFA38
+ .extern FX_SinCosTable_
.section .rodata
@@ -1353,7 +1353,7 @@ FUN_0200F0B4: ; 0x0200F0B4
asr r0, r0, #0x4
lsl r1, r0, #0x1
lsl r0, r1, #0x1
- ldr r2, _0200F0C8 ; =UNK_020FFA38
+ ldr r2, _0200F0C8 ; =FX_SinCosTable_
add r1, r1, #0x1
lsl r1, r1, #0x1
ldr r3, _0200F0CC ; =FX_Div
@@ -1361,7 +1361,7 @@ FUN_0200F0B4: ; 0x0200F0B4
ldrsh r1, [r2, r1]
bx r3
.balign 4
-_0200F0C8: .word UNK_020FFA38
+_0200F0C8: .word FX_SinCosTable_
_0200F0CC: .word FX_Div
thumb_func_start FUN_0200F0D0
@@ -1572,7 +1572,7 @@ _0200F248:
mov r7, #0xf
mvn r7, r7
mov r6, #0x0
- bl ErrorHandling
+ bl GF_AssertFail
b _0200F274
_0200F254:
cmp r1, r0
@@ -1591,7 +1591,7 @@ _0200F26A:
mov r7, #0x0
add r6, r7, #0x0
sub r6, #0x10
- bl ErrorHandling
+ bl GF_AssertFail
_0200F274:
ldr r0, [r5, #0x10]
add r1, r7, #0x0
@@ -1701,7 +1701,7 @@ FUN_0200F330: ; 0x0200F330
push {r4-r6, lr}
add r4, r0, #0x0
bne _0200F33A
- bl ErrorHandling
+ bl GF_AssertFail
_0200F33A:
ldr r0, _0200F54C ; =0x04000006
ldrh r0, [r0, #0x0]
@@ -2062,7 +2062,7 @@ FUN_0200F5D8: ; 0x0200F5D8
add r4, r1, #0x0
cmp r0, r4
bgt _0200F5E8
- bl ErrorHandling
+ bl GF_AssertFail
_0200F5E8:
ldr r0, _0200F5F4 ; =0x00000604
ldr r1, [r5, #0x0]
@@ -2304,7 +2304,7 @@ FUN_0200F7AC: ; 0x0200F7AC
push {r3-r5, lr}
add r4, r0, #0x0
bne _0200F7B6
- bl ErrorHandling
+ bl GF_AssertFail
_0200F7B6:
ldr r0, _0200FAC0 ; =0x04000006
ldrh r0, [r0, #0x0]
@@ -3371,7 +3371,7 @@ _0200FF9E:
mov r6, #0x1
b _0200FFA6
_0200FFA2:
- bl ErrorHandling
+ bl GF_AssertFail
_0200FFA6:
add r0, r6, #0x0
pop {r4-r6, pc}
@@ -3740,7 +3740,7 @@ _02010272:
mov r6, #0x1
b _0201027A
_02010276:
- bl ErrorHandling
+ bl GF_AssertFail
_0201027A:
add r0, r6, #0x0
pop {r4-r6, pc}
@@ -4153,7 +4153,7 @@ FUN_020105A0: ; 0x020105A0
ldr r2, [r4, #0xc]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _02010680 ; =UNK_020FFA38
+ ldr r0, _02010680 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -4189,7 +4189,7 @@ FUN_020105A0: ; 0x020105A0
str r0, [sp, #0x4]
cmp r0, #0xc0
blt _0201060C
- bl ErrorHandling
+ bl GF_AssertFail
_0201060C:
ldr r2, [sp, #0x4]
add r0, r4, #0x0
@@ -4249,7 +4249,7 @@ _02010634:
add sp, #0x110
pop {r4-r7, pc}
.balign 4
-_02010680: .word UNK_020FFA38
+_02010680: .word FX_SinCosTable_
_02010684: .word 0x0000FFFF
thumb_func_start FUN_02010688
@@ -4326,7 +4326,7 @@ _02010714:
mov r6, #0x1
b _0201071C
_02010718:
- bl ErrorHandling
+ bl GF_AssertFail
_0201071C:
add r0, r6, #0x0
pop {r4-r6, pc}
@@ -4350,7 +4350,7 @@ FUN_02010720: ; 0x02010720
str r0, [r7, #0xc]
cmp r0, #0x0
bne _02010748
- bl ErrorHandling
+ bl GF_AssertFail
_02010748:
ldrb r0, [r5, #0x8]
str r0, [r7, #0x10]
@@ -4689,7 +4689,7 @@ _020109DC:
mov r6, #0x1
b _020109E4
_020109E0:
- bl ErrorHandling
+ bl GF_AssertFail
_020109E4:
add r0, r6, #0x0
pop {r4-r6, pc}
@@ -5102,7 +5102,7 @@ _02010D10:
mov r6, #0x1
b _02010D18
_02010D14:
- bl ErrorHandling
+ bl GF_AssertFail
_02010D18:
add r0, r6, #0x0
pop {r4-r6, pc}
@@ -5448,7 +5448,7 @@ _02010FC4:
mov r6, #0x1
b _02010FCC
_02010FC8:
- bl ErrorHandling
+ bl GF_AssertFail
_02010FCC:
add r0, r6, #0x0
pop {r4-r6, pc}
@@ -5809,7 +5809,7 @@ _0201126A:
mov r4, #0x1
b _02011272
_0201126E:
- bl ErrorHandling
+ bl GF_AssertFail
_02011272:
add r0, r4, #0x0
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s
index 0f9f871b..bc9652c8 100644
--- a/arm9/asm/unk_02011744.s
+++ b/arm9/asm/unk_02011744.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_020FFA38
+ .extern FX_SinCosTable_
.section .rodata
@@ -20,81 +20,6 @@ UNK_020ED398: ; 0x020ED398
.byte 0x01, 0x02
.byte 0x01, 0x01
- .global UNK_020ED3B0
-UNK_020ED3B0: ; 0x020ED3B0
- .word 0x00000147
- .word 0x000001EF
-
- .global UNK_020ED3B8
-UNK_020ED3B8: ; 0x020ED3B8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
-
- .global UNK_020ED3C8
-UNK_020ED3C8: ; 0x020ED3C8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
-
- .global UNK_020ED3D8
-UNK_020ED3D8: ; 0x020ED3D8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK_020ED438
-UNK_020ED438: ; 0x020ED438
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global sMaxTime
-sMaxTime: ; 0x020ED498
- ; 23:59:59
- .word 23, 59, 59
-
- .global sMaxDate
-sMaxDate: ; 0x020ED4A4
- ; 31 December, 2099
- .word 99, 12, 31, 0
-
- .global sGF_DaysPerMonth
-sGF_DaysPerMonth: ; 0x020ED4B2
- .short 0
- .short 31
- .short 59
- .short 90
- .short 120
- .short 151
- .short 181
- .short 212
- .short 243
- .short 273
- .short 304
- .short 334
-
- .global sTimeOfDayByHour
-sTimeOfDayByHour: ; 0x020ED4CC
- ; 00:00 - 03:59
- .byte 0x04, 0x04, 0x04, 0x04
- ; 04:00 - 09:59
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- ; 10:00 - 16:59
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- ; 17:00 - 19:59
- .byte 0x02, 0x02, 0x02
- ; 20:00 - 23:59
- .byte 0x03, 0x03, 0x03, 0x03
-
- .section .bss
-
- .global sGFRTCWork
-sGFRTCWork: ; 0x021C4808
- .space 0x48
-
.text
thumb_func_start FUN_02011744
@@ -109,7 +34,7 @@ FUN_02011744: ; 0x02011744
str r0, [sp, #0x8]
cmp r0, #0x0
bne _0201175E
- bl ErrorHandling
+ bl GF_AssertFail
_0201175E:
ldr r4, [sp, #0x8]
ldr r5, [sp, #0x8]
@@ -121,11 +46,11 @@ _02011766:
mov r2, #0x0
add r3, r4, #0x0
str r7, [sp, #0x0]
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5, #0x0]
cmp r0, #0x0
bne _0201177E
- bl ErrorHandling
+ bl GF_AssertFail
_0201177E:
add r6, r6, #0x1
add r4, r4, #0x4
@@ -143,7 +68,7 @@ _0201177E:
cmp r0, #0x0
str r0, [r1, #0x60]
bne _020117A4
- bl ErrorHandling
+ bl GF_AssertFail
_020117A4:
ldr r1, [sp, #0x4]
ldr r0, [sp, #0x8]
@@ -162,7 +87,7 @@ FUN_020117BC: ; 0x020117BC
push {r4-r6, lr}
add r6, r0, #0x0
bne _020117C6
- bl ErrorHandling
+ bl GF_AssertFail
_020117C6:
mov r4, #0x0
add r5, r6, #0x0
@@ -186,13 +111,13 @@ FUN_020117E8: ; 0x020117E8
sub sp, #0x1c
add r5, r0, #0x0
bne _020117F4
- bl ErrorHandling
+ bl GF_AssertFail
_020117F4:
ldr r0, [r5, #0x0]
bl FUN_02011BA0
add r4, r0, #0x0
bne _02011802
- bl ErrorHandling
+ bl GF_AssertFail
_02011802:
ldr r0, [r5, #0x10]
add r3, sp, #0x8
@@ -248,12 +173,12 @@ FUN_02011870: ; 0x02011870
push {r4, lr}
add r4, r0, #0x0
bne _0201187A
- bl ErrorHandling
+ bl GF_AssertFail
_0201187A:
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _02011884
- bl ErrorHandling
+ bl GF_AssertFail
_02011884:
add r0, r4, #0x0
bl FUN_02011F00
@@ -294,7 +219,7 @@ FUN_020118C4: ; 0x020118C4
str r1, [sp, #0x0]
cmp r5, #0x0
bne _020118D6
- bl ErrorHandling
+ bl GF_AssertFail
_020118D6:
ldr r0, [sp, #0x0]
str r0, [r5, #0xc]
@@ -353,7 +278,7 @@ FUN_02011938: ; 0x02011938
sub sp, #0x10
add r5, r0, #0x0
bne _02011944
- bl ErrorHandling
+ bl GF_AssertFail
_02011944:
ldr r0, [r5, #0x8]
cmp r0, #0x0
@@ -412,15 +337,15 @@ FUN_020119A4: ; 0x020119A4
add r6, r2, #0x0
cmp r5, #0x0
bne _020119B4
- bl ErrorHandling
+ bl GF_AssertFail
_020119B4:
cmp r4, #0x0
bne _020119BC
- bl ErrorHandling
+ bl GF_AssertFail
_020119BC:
cmp r6, #0x0
bne _020119C4
- bl ErrorHandling
+ bl GF_AssertFail
_020119C4:
ldr r0, [r5, #0xc]
str r0, [r4, #0x0]
@@ -436,7 +361,7 @@ FUN_020119D0: ; 0x020119D0
add r7, r1, #0x0
cmp r5, #0x0
bne _020119DE
- bl ErrorHandling
+ bl GF_AssertFail
_020119DE:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -464,7 +389,7 @@ FUN_02011A00: ; 0x02011A00
add r7, r1, #0x0
cmp r5, #0x0
bne _02011A0E
- bl ErrorHandling
+ bl GF_AssertFail
_02011A0E:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -492,7 +417,7 @@ FUN_02011A30: ; 0x02011A30
add r7, r1, #0x0
cmp r5, #0x0
bne _02011A3E
- bl ErrorHandling
+ bl GF_AssertFail
_02011A3E:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -520,7 +445,7 @@ FUN_02011A60: ; 0x02011A60
add r7, r1, #0x0
cmp r5, #0x0
bne _02011A6E
- bl ErrorHandling
+ bl GF_AssertFail
_02011A6E:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -548,7 +473,7 @@ FUN_02011A90: ; 0x02011A90
add r7, r1, #0x0
cmp r5, #0x0
bne _02011A9E
- bl ErrorHandling
+ bl GF_AssertFail
_02011A9E:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -576,7 +501,7 @@ FUN_02011AC0: ; 0x02011AC0
add r7, r1, #0x0
cmp r5, #0x0
bne _02011ACE
- bl ErrorHandling
+ bl GF_AssertFail
_02011ACE:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -604,7 +529,7 @@ FUN_02011AF0: ; 0x02011AF0
add r7, r1, #0x0
cmp r5, #0x0
bne _02011AFE
- bl ErrorHandling
+ bl GF_AssertFail
_02011AFE:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -642,7 +567,7 @@ FUN_02011B20: ; 0x02011B20
str r3, [sp, #0x4]
cmp r1, r0
bge _02011B42
- bl ErrorHandling
+ bl GF_AssertFail
_02011B42:
ldrb r2, [r6, #0x8]
ldr r1, [sp, #0x0]
@@ -650,7 +575,7 @@ _02011B42:
add r0, r1, r0
cmp r2, r0
bge _02011B52
- bl ErrorHandling
+ bl GF_AssertFail
_02011B52:
ldr r0, [sp, #0x0]
mov r4, #0x0
@@ -794,7 +719,7 @@ FUN_02011BF4: ; 0x02011BF4
ldrb r0, [r0, #0x0]
cmp r0, #0x1
bne _02011C54
- bl ErrorHandling
+ bl GF_AssertFail
_02011C54:
add r0, r5, #0x0
mov r1, #0x1
@@ -849,12 +774,12 @@ FUN_02011CA4: ; 0x02011CA4
add r6, r3, #0x0
cmp r7, #0x0
bne _02011CB8
- bl ErrorHandling
+ bl GF_AssertFail
_02011CB8:
ldr r0, [sp, #0x0]
cmp r0, #0x0
bne _02011CC2
- bl ErrorHandling
+ bl GF_AssertFail
_02011CC2:
ldr r0, [sp, #0x0]
mov r4, #0x0
@@ -945,7 +870,7 @@ _02011D52:
beq _02011D92
_02011D68:
add r0, r5, #0x0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
str r7, [sp, #0x0]
ldr r0, [sp, #0x30]
str r6, [sp, #0x4]
@@ -1128,7 +1053,7 @@ _02011EC2:
ldr r0, [r0, r5]
cmp r0, #0x0
bne _02011EDC
- bl ErrorHandling
+ bl GF_AssertFail
_02011EDC:
ldr r0, [r4, #0x0]
add r7, #0x24
@@ -1249,7 +1174,7 @@ FUN_02011FAC: ; 0x02011FAC
bl AllocFromHeapAtEnd
add r4, r0, #0x0
bne _02011FBC
- bl ErrorHandling
+ bl GF_AssertFail
_02011FBC:
mov r0, #0x0
str r0, [r4, #0xc]
@@ -1263,7 +1188,7 @@ FUN_02011FC8: ; 0x02011FC8
push {r4, lr}
add r4, r0, #0x0
bne _02011FD2
- bl ErrorHandling
+ bl GF_AssertFail
_02011FD2:
add r0, r4, #0x0
bl FreeToHeap
@@ -1296,1738 +1221,3 @@ FUN_02011FF4: ; 0x02011FF4
str r0, [r1, #0xc]
bx lr
.balign 4
-
- thumb_func_start FUN_02012004
-FUN_02012004: ; 0x02012004
- push {r3-r7, lr}
- sub sp, #0x8
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- ldr r6, [sp, #0x20]
- str r1, [sp, #0x4]
- add r5, r2, #0x0
- add r4, r3, #0x0
- str r0, [sp, #0x24]
- mov r7, #0x0
-_02012018:
- ldr r1, [r4, #0x0]
- ldr r0, [sp, #0x4]
- ldr r2, [r5, #0x0]
- add r0, r0, r1
- ldr r1, [sp, #0x0]
- add r1, r1, r2
- add r2, r6, #0x0
- bl memcpy
- ldr r1, [r5, #0x0]
- ldr r0, [sp, #0x24]
- add r7, r7, #0x1
- add r0, r1, r0
- str r0, [r5, #0x0]
- ldr r0, [r4, #0x0]
- add r0, r0, r6
- str r0, [r4, #0x0]
- cmp r7, #0x8
- blt _02012018
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02012044
-FUN_02012044: ; 0x02012044
- push {r4-r6, lr}
- add r5, r3, #0x0
- bl AllocAndReadWholeNarcMemberByIdPair
- add r4, r0, #0x0
- bne _02012054
- bl ErrorHandling
-_02012054:
- add r0, r4, #0x0
- add r1, r5, #0x0
- bl FUN_020B0088
- add r6, r0, #0x0
- cmp r5, #0x0
- bne _02012066
- bl ErrorHandling
-_02012066:
- cmp r6, #0x0
- bne _0201206E
- bl ErrorHandling
-_0201206E:
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02012078
-FUN_02012078: ; 0x02012078
- push {r4-r7, lr}
- sub sp, #0x2c
- ldr r4, [sp, #0x40]
- str r0, [sp, #0x8]
- add r6, r0, r2
- ldrh r0, [r4, #0x2]
- str r1, [sp, #0xc]
- add r5, r3, #0x0
- cmp r0, r6
- bge _02012090
- bl ErrorHandling
-_02012090:
- ldr r0, [sp, #0xc]
- ldrh r1, [r4, #0x0]
- add r0, r0, r5
- str r0, [sp, #0x14]
- cmp r1, r0
- bge _020120A0
- bl ErrorHandling
-_020120A0:
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x44]
- str r0, [sp, #0x1c]
- ldrh r0, [r4, #0x2]
- lsl r7, r0, #0x2
- ldr r0, [sp, #0xc]
- add r1, r0, #0x0
- mul r1, r7
- ldr r0, [sp, #0x8]
- str r1, [sp, #0x18]
- lsl r1, r0, #0x2
- ldr r0, [sp, #0x18]
- str r1, [sp, #0x10]
- add r0, r1, r0
- str r0, [sp, #0x28]
- mov r0, #0x0
- str r0, [sp, #0x24]
- ldr r1, [sp, #0xc]
- ldr r0, [sp, #0x14]
- cmp r1, r0
- bge _0201210A
-_020120CC:
- ldr r4, [sp, #0x8]
- add r0, r4, #0x0
- cmp r0, r6
- bge _020120F8
- ldr r0, [sp, #0x18]
- lsl r1, r0, #0x3
- ldr r0, [sp, #0x10]
- add r5, r0, r1
-_020120DC:
- str r5, [sp, #0x28]
- mov r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x20]
- ldr r1, [sp, #0x1c]
- add r2, sp, #0x28
- add r3, sp, #0x24
- str r7, [sp, #0x4]
- bl FUN_02012004
- add r4, r4, #0x1
- add r5, r5, #0x4
- cmp r4, r6
- blt _020120DC
-_020120F8:
- ldr r0, [sp, #0x18]
- add r0, r0, r7
- str r0, [sp, #0x18]
- ldr r0, [sp, #0xc]
- add r1, r0, #0x1
- ldr r0, [sp, #0x14]
- str r1, [sp, #0xc]
- cmp r1, r0
- blt _020120CC
-_0201210A:
- add sp, #0x2c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02012110
-FUN_02012110: ; 0x02012110
- push {r4-r5}
- sub sp, #0x8
- ldr r2, _02012148 ; =UNK_020ED3B0
- add r1, sp, #0x0
- ldr r3, [r2, #0x0]
- ldr r2, [r2, #0x4]
- str r3, [sp, #0x0]
- str r2, [sp, #0x4]
- ldr r2, _0201214C ; =0x000001EF
- mov r5, #0x0
- add r3, r2, #0x0
-_02012126:
- ldr r4, [r1, #0x0]
- cmp r4, r3
- beq _02012140
- cmp r4, r0
- bne _02012138
- add sp, #0x8
- mov r0, #0x1
- pop {r4-r5}
- bx lr
-_02012138:
- add r5, r5, #0x1
- add r1, r1, #0x4
- cmp r5, r2
- blt _02012126
-_02012140:
- mov r0, #0x0
- add sp, #0x8
- pop {r4-r5}
- bx lr
- .balign 4
-_02012148: .word UNK_020ED3B0
-_0201214C: .word 0x000001EF
-
- thumb_func_start FUN_02012150
-FUN_02012150: ; 0x02012150
- push {r3-r4, lr}
- sub sp, #0xc
- add r4, r3, #0x0
- mov r3, #0x0
- str r3, [sp, #0x8]
- add r3, sp, #0x8
- bl FUN_02012044
- ldr r0, [sp, #0x8]
- ldr r0, [r0, #0x14]
- bl FUN_02008A74
- ldr r0, [sp, #0x34]
- bl FUN_02012110
- ldr r1, [sp, #0x30]
- cmp r1, #0x2
- bne _02012184
- cmp r0, #0x1
- bne _02012184
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0x28]
- ldr r0, [r0, #0x14]
- ldr r2, [sp, #0x2c]
- bl FUN_02008904
-_02012184:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0x18]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- ldr r2, [sp, #0x1c]
- str r0, [sp, #0x4]
- ldr r3, [sp, #0x20]
- add r0, r4, #0x0
- bl FUN_02012078
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0201219C
-FUN_0201219C: ; 0x0201219C
- push {r4-r7, lr}
- sub sp, #0x24
- add r7, r1, #0x0
- add r5, r2, #0x0
- ldr r2, [sp, #0x3c]
- ldr r1, [sp, #0x40]
- add r6, r0, #0x0
- mul r1, r2
- add r0, r5, #0x0
- lsl r1, r1, #0x5
- str r3, [sp, #0x20]
- bl AllocFromHeap
- add r4, r0, #0x0
- ldr r0, [sp, #0x38]
- ldr r3, [sp, #0x20]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x3c]
- add r1, r7, #0x0
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x40]
- add r2, r5, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x44]
- str r4, [sp, #0xc]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x4c]
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x50]
- str r0, [sp, #0x1c]
- add r0, r6, #0x0
- bl FUN_02012150
- add r0, r4, #0x0
- add sp, #0x24
- pop {r4-r7, pc}
-
- thumb_func_start FUN_020121E8
-FUN_020121E8: ; 0x020121E8
- push {r3-r7, lr}
- sub sp, #0x30
- str r3, [sp, #0x8]
- ldr r3, [sp, #0x48]
- str r3, [sp, #0x48]
- mov r3, #0x0
- str r3, [sp, #0x2c]
- bl AllocAndReadWholeNarcMemberByIdPair
- str r0, [sp, #0x20]
- cmp r0, #0x0
- bne _02012204
- bl ErrorHandling
-_02012204:
- ldr r0, [sp, #0x20]
- add r1, sp, #0x2c
- bl FUN_020B0088
- cmp r0, #0x0
- bne _02012214
- bl ErrorHandling
-_02012214:
- ldr r1, [sp, #0x4c]
- ldr r0, [sp, #0x8]
- add r6, r0, r1
- ldr r0, [sp, #0x2c]
- ldrh r0, [r0, #0x2]
- cmp r0, r6
- bge _02012226
- bl ErrorHandling
-_02012226:
- ldr r1, [sp, #0x50]
- ldr r0, [sp, #0x48]
- add r0, r0, r1
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x2c]
- ldrh r1, [r0, #0x0]
- ldr r0, [sp, #0x10]
- cmp r1, r0
- bge _0201223C
- bl ErrorHandling
-_0201223C:
- ldr r0, [sp, #0x2c]
- ldr r0, [r0, #0x14]
- str r0, [sp, #0x1c]
- bl FUN_02008A74
- ldr r0, [sp, #0x54]
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x2c]
- ldrh r0, [r0, #0x2]
- lsl r7, r0, #0x2
- ldr r0, [sp, #0x48]
- add r1, r0, #0x0
- mul r1, r7
- ldr r0, [sp, #0x8]
- str r1, [sp, #0x14]
- lsl r1, r0, #0x2
- ldr r0, [sp, #0x14]
- str r1, [sp, #0xc]
- add r0, r1, r0
- str r0, [sp, #0x28]
- mov r0, #0x0
- str r0, [sp, #0x24]
- ldr r1, [sp, #0x48]
- ldr r0, [sp, #0x10]
- cmp r1, r0
- bge _020122AE
-_02012270:
- ldr r4, [sp, #0x8]
- add r0, r4, #0x0
- cmp r0, r6
- bge _0201229C
- ldr r0, [sp, #0x14]
- lsl r1, r0, #0x3
- ldr r0, [sp, #0xc]
- add r5, r0, r1
-_02012280:
- str r5, [sp, #0x28]
- mov r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- add r2, sp, #0x28
- add r3, sp, #0x24
- str r7, [sp, #0x4]
- bl FUN_02012004
- add r4, r4, #0x1
- add r5, r5, #0x4
- cmp r4, r6
- blt _02012280
-_0201229C:
- ldr r0, [sp, #0x14]
- add r0, r0, r7
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x48]
- add r1, r0, #0x1
- ldr r0, [sp, #0x10]
- str r1, [sp, #0x48]
- cmp r1, r0
- blt _02012270
-_020122AE:
- ldr r0, [sp, #0x20]
- bl FreeToHeap
- add sp, #0x30
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020122B8
-FUN_020122B8: ; 0x020122B8
- push {r4-r7, lr}
- sub sp, #0x14
- add r7, r1, #0x0
- add r5, r2, #0x0
- ldr r2, [sp, #0x2c]
- ldr r1, [sp, #0x30]
- add r6, r0, #0x0
- mul r1, r2
- add r0, r5, #0x0
- lsl r1, r1, #0x5
- str r3, [sp, #0x10]
- bl AllocFromHeap
- add r4, r0, #0x0
- ldr r0, [sp, #0x28]
- ldr r3, [sp, #0x10]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- add r1, r7, #0x0
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x30]
- add r2, r5, #0x0
- str r0, [sp, #0x8]
- add r0, r6, #0x0
- str r4, [sp, #0xc]
- bl FUN_020121E8
- add r0, r4, #0x0
- add sp, #0x14
- pop {r4-r7, pc}
-
- thumb_func_start FUN_020122F4
-FUN_020122F4: ; 0x020122F4
- push {r3-r7, lr}
- sub sp, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x44]
- ldr r1, [sp, #0x38]
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x48]
- str r2, [sp, #0x4]
- str r0, [sp, #0x14]
- add r0, r2, #0x0
- add r7, r0, r1
- ldr r1, [sp, #0x3c]
- add r0, r3, #0x0
- add r0, r0, r1
- add r1, r3, #0x0
- str r3, [sp, #0x8]
- ldr r5, [sp, #0x40]
- str r0, [sp, #0x10]
- cmp r1, r0
- bge _0201236C
- add r0, r3, #0x0
- lsl r0, r0, #0x5
- str r0, [sp, #0xc]
- add r0, r2, #0x0
- lsl r0, r0, #0x5
- str r0, [sp, #0x1c]
-_02012328:
- ldr r6, [sp, #0x4]
- add r0, r6, #0x0
- cmp r0, r7
- bge _0201235A
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0xc]
- add r2, r1, #0x0
- mul r2, r0
- ldr r0, [sp, #0x1c]
- add r4, r0, r2
-_0201233C:
- ldr r1, [r5, #0x0]
- ldr r0, [sp, #0x14]
- mov r2, #0x20
- add r0, r0, r1
- ldr r1, [sp, #0x18]
- add r1, r1, r4
- bl memcpy
- ldr r0, [r5, #0x0]
- add r6, r6, #0x1
- add r0, #0x20
- str r0, [r5, #0x0]
- add r4, #0x20
- cmp r6, r7
- blt _0201233C
-_0201235A:
- ldr r0, [sp, #0xc]
- add r0, #0x20
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x8]
- add r1, r0, #0x1
- ldr r0, [sp, #0x10]
- str r1, [sp, #0x8]
- cmp r1, r0
- blt _02012328
-_0201236C:
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02012370
-FUN_02012370: ; 0x02012370
- push {r3-r4, lr}
- sub sp, #0x14
- add r4, r2, #0x0
- ldr r2, [r4, #0x8]
- str r2, [sp, #0x0]
- ldr r2, [r4, #0xc]
- str r2, [sp, #0x4]
- ldr r2, [sp, #0x20]
- str r3, [sp, #0x8]
- str r2, [sp, #0xc]
- ldr r2, [sp, #0x24]
- str r2, [sp, #0x10]
- ldr r2, [r4, #0x0]
- ldr r3, [r4, #0x4]
- bl FUN_020122F4
- add sp, #0x14
- pop {r3-r4, pc}
-
- thumb_func_start FUN_02012394
-FUN_02012394: ; 0x02012394
- push {r4-r7, lr}
- sub sp, #0x7c
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x9c]
- mov r12, r3
- add r5, r2, #0x0
- ldr r6, [sp, #0x94]
- ldr r7, [sp, #0x98]
- ldr r3, _020123FC ; =UNK_020ED3D8
- str r1, [sp, #0x10]
- str r0, [sp, #0x9c]
- add r2, sp, #0x1c
- mov r4, #0xc
-_020123AE:
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- sub r4, r4, #0x1
- bne _020123AE
- mov r0, #0x0
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x90]
- ldr r1, [sp, #0x10]
- str r0, [sp, #0x0]
- str r6, [sp, #0x4]
- ldr r0, [sp, #0xc]
- add r2, r5, #0x0
- mov r3, r12
- str r7, [sp, #0x8]
- bl FUN_020122B8
- str r0, [sp, #0x14]
- mov r4, #0x0
- add r5, sp, #0x1c
-_020123D4:
- ldr r0, [sp, #0x14]
- add r1, r7, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x9c]
- add r2, r5, #0x0
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- add r3, sp, #0x18
- bl FUN_02012370
- add r4, r4, #0x1
- add r5, #0x10
- cmp r4, #0x6
- blt _020123D4
- ldr r0, [sp, #0x14]
- bl FreeToHeap
- add sp, #0x7c
- pop {r4-r7, pc}
- nop
-_020123FC: .word UNK_020ED3D8
-
- thumb_func_start FUN_02012400
-FUN_02012400: ; 0x02012400
- push {r4, lr}
- sub sp, #0x10
- ldr r4, [r3, #0x4]
- str r4, [sp, #0x0]
- ldr r4, [r3, #0x8]
- str r4, [sp, #0x4]
- ldr r4, [r3, #0xc]
- str r4, [sp, #0x8]
- ldr r4, [sp, #0x18]
- str r4, [sp, #0xc]
- ldr r3, [r3, #0x0]
- bl FUN_02012394
- add sp, #0x10
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02012420
-FUN_02012420: ; 0x02012420
- push {r4-r7, lr}
- sub sp, #0x14
- ldr r4, _02012448 ; =UNK_020ED3B8
- add r5, r3, #0x0
- add r3, sp, #0x4
- add r7, r0, #0x0
- mov r12, r1
- add r6, r3, #0x0
- ldmia r4!, {r0-r1}
- stmia r3!, {r0-r1}
- ldmia r4!, {r0-r1}
- stmia r3!, {r0-r1}
- add r0, r7, #0x0
- mov r1, r12
- add r3, r6, #0x0
- str r5, [sp, #0x0]
- bl FUN_02012400
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-_02012448: .word UNK_020ED3B8
-
- thumb_func_start FUN_0201244C
-FUN_0201244C: ; 0x0201244C
- push {r3-r7, lr}
- add r6, r1, #0x0
- mov r1, #0x32
- add r7, r2, #0x0
- add r5, r0, #0x0
- add r0, r7, #0x0
- lsl r1, r1, #0x6
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- add r3, r4, #0x0
- bl FUN_02012420
- add r0, r4, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02012470
-FUN_02012470: ; 0x02012470
- push {r3-r7, lr}
- add r7, r2, #0x0
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r0, r7, #0x0
- mov r1, #0x20
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl AllocAndReadWholeNarcMemberByIdPair
- add r1, sp, #0x0
- add r5, r0, #0x0
- bl FUN_020B0138
- cmp r0, #0x1
- beq _0201249C
- bl ErrorHandling
-_0201249C:
- ldr r0, [sp, #0x0]
- add r1, r4, #0x0
- ldr r0, [r0, #0xc]
- mov r2, #0x20
- bl MIi_CpuCopy16
- add r0, r5, #0x0
- bl FreeToHeap
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020124B4
-FUN_020124B4: ; 0x020124B4
- push {r4-r7, lr}
- sub sp, #0x8c
- str r0, [sp, #0x1c]
- ldr r0, [sp, #0xac]
- mov r12, r3
- add r5, r2, #0x0
- ldr r6, [sp, #0xa4]
- ldr r7, [sp, #0xa8]
- ldr r3, _0201252C ; =UNK_020ED438
- str r1, [sp, #0x20]
- str r0, [sp, #0xac]
- add r2, sp, #0x2c
- mov r4, #0xc
-_020124CE:
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- sub r4, r4, #0x1
- bne _020124CE
- mov r0, #0x0
- str r0, [sp, #0x28]
- ldr r0, [sp, #0xa0]
- ldr r1, [sp, #0x20]
- str r0, [sp, #0x0]
- str r6, [sp, #0x4]
- ldr r0, [sp, #0xb0]
- str r7, [sp, #0x8]
- str r0, [sp, #0xc]
- ldr r0, [sp, #0xb4]
- add r2, r5, #0x0
- str r0, [sp, #0x10]
- ldr r0, [sp, #0xb8]
- mov r3, r12
- str r0, [sp, #0x14]
- ldr r0, [sp, #0xbc]
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x1c]
- bl FUN_0201219C
- str r0, [sp, #0x24]
- mov r4, #0x0
- add r5, sp, #0x2c
-_02012504:
- ldr r0, [sp, #0x24]
- add r1, r7, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0xac]
- add r2, r5, #0x0
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- add r3, sp, #0x28
- bl FUN_02012370
- add r4, r4, #0x1
- add r5, #0x10
- cmp r4, #0x6
- blt _02012504
- ldr r0, [sp, #0x24]
- bl FreeToHeap
- add sp, #0x8c
- pop {r4-r7, pc}
- nop
-_0201252C: .word UNK_020ED438
-
- thumb_func_start FUN_02012530
-FUN_02012530: ; 0x02012530
- push {r4, lr}
- sub sp, #0x20
- ldr r4, [r3, #0x4]
- str r4, [sp, #0x0]
- ldr r4, [r3, #0x8]
- str r4, [sp, #0x4]
- ldr r4, [r3, #0xc]
- str r4, [sp, #0x8]
- ldr r4, [sp, #0x28]
- str r4, [sp, #0xc]
- ldr r4, [sp, #0x2c]
- str r4, [sp, #0x10]
- ldr r4, [sp, #0x30]
- str r4, [sp, #0x14]
- ldr r4, [sp, #0x34]
- str r4, [sp, #0x18]
- ldr r4, [sp, #0x38]
- str r4, [sp, #0x1c]
- ldr r3, [r3, #0x0]
- bl FUN_020124B4
- add sp, #0x20
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02012560
-FUN_02012560: ; 0x02012560
- push {r4-r7, lr}
- sub sp, #0x24
- ldr r4, _02012598 ; =UNK_020ED3C8
- add r5, r3, #0x0
- add r3, sp, #0x14
- add r7, r0, #0x0
- mov r12, r1
- add r6, r3, #0x0
- ldmia r4!, {r0-r1}
- stmia r3!, {r0-r1}
- ldmia r4!, {r0-r1}
- stmia r3!, {r0-r1}
- ldr r0, [sp, #0x38]
- str r5, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x3c]
- mov r1, r12
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x40]
- add r3, r6, #0x0
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x44]
- str r0, [sp, #0x10]
- add r0, r7, #0x0
- bl FUN_02012530
- add sp, #0x24
- pop {r4-r7, pc}
- .balign 4
-_02012598: .word UNK_020ED3C8
-
- thumb_func_start GF_InitRTCWork
-GF_InitRTCWork: ; 0x0201259C
- push {r3, lr}
- bl RTC_Init
- ldr r3, _020125CC ; =sGFRTCWork
- mov r0, #0x0
- add r2, r3, #0x0
- add r1, r0, #0x0
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- stmia r2!, {r0-r1}
- ldr r1, _020125D0 ; =sGFRTCWork
- str r0, [r1, #0x0]
- str r0, [r1, #0x4]
- str r0, [r1, #0x8]
- add r0, r3, #0x0
- bl GF_RTC_GetDateTime
- pop {r3, pc}
- .balign 4
-_020125CC: .word sGFRTCWork
-_020125D0: .word sGFRTCWork
-
- thumb_func_start GF_RTC_UpdateOnFrame
-GF_RTC_UpdateOnFrame: ; 0x020125D4
- push {r3, lr}
- ldr r0, _020125F4 ; =sGFRTCWork
- ldr r1, [r0, #0x4]
- cmp r1, #0x0
- bne _020125F2
- ldr r1, [r0, #0x8]
- add r1, r1, #0x1
- str r1, [r0, #0x8]
- cmp r1, #0xa
- ble _020125F2
- mov r1, #0x0
- str r1, [r0, #0x8]
- ldr r0, _020125F8 ; =sGFRTCWork
- bl GF_RTC_GetDateTime
-_020125F2:
- pop {r3, pc}
- .balign 4
-_020125F4: .word sGFRTCWork
-_020125F8: .word sGFRTCWork
-
- thumb_func_start GF_RTC_GetDateTime_Callback
-GF_RTC_GetDateTime_Callback: ; 0x020125FC
- push {r4, lr}
- add r4, r1, #0x0
- str r0, [r4, #0xc]
- cmp r0, #0x0
- beq _0201260A
- bl ErrorHandling
-_0201260A:
- add r3, r4, #0x0
- mov r0, #0x1
- add r2, r4, #0x0
- add r3, #0x2c
- str r0, [r4, #0x0]
- ldmia r3!, {r0-r1}
- add r2, #0x10
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- add r3, r4, #0x0
- add r3, #0x3c
- add r2, r4, #0x0
- ldmia r3!, {r0-r1}
- add r2, #0x20
- stmia r2!, {r0-r1}
- ldr r0, [r3, #0x0]
- str r0, [r2, #0x0]
- mov r0, #0x0
- str r0, [r4, #0x4]
- pop {r4, pc}
-
- thumb_func_start GF_RTC_GetDateTime
-GF_RTC_GetDateTime: ; 0x02012634
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x1
- str r0, [r4, #0x4]
- add r0, r4, #0x0
- add r1, r4, #0x0
- ldr r2, _02012658 ; =GF_RTC_GetDateTime_Callback
- add r0, #0x2c
- add r1, #0x3c
- add r3, r4, #0x0
- bl RTC_GetDateTimeAsync
- str r0, [r4, #0xc]
- cmp r0, #0x0
- beq _02012656
- bl ErrorHandling
-_02012656:
- pop {r4, pc}
- .balign 4
-_02012658: .word GF_RTC_GetDateTime_Callback
-
- thumb_func_start GF_RTC_CopyDateTime
-GF_RTC_CopyDateTime: ; 0x0201265C
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _02012684 ; =sGFRTCWork
- add r4, r1, #0x0
- ldr r0, [r0, #0x0]
- cmp r0, #0x1
- beq _0201266E
- bl ErrorHandling
-_0201266E:
- ldr r2, _02012688 ; =sGFRTCWork + 16
- ldmia r2!, {r0-r1}
- stmia r5!, {r0-r1}
- ldmia r2!, {r0-r1}
- ldr r2, _0201268C ; =sGFRTCWork + 32
- stmia r5!, {r0-r1}
- ldmia r2!, {r0-r1}
- stmia r4!, {r0-r1}
- ldr r0, [r2, #0x0]
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
- .balign 4
-_02012684: .word sGFRTCWork
-_02012688: .word sGFRTCWork + 16
-_0201268C: .word sGFRTCWork + 32
-
- thumb_func_start GF_RTC_CopyTime
-GF_RTC_CopyTime: ; 0x02012690
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _020126AC ; =sGFRTCWork
- ldr r0, [r0, #0x0]
- cmp r0, #0x1
- beq _020126A0
- bl ErrorHandling
-_020126A0:
- ldr r2, _020126B0 ; =sGFRTCWork + 32
- ldmia r2!, {r0-r1}
- stmia r4!, {r0-r1}
- ldr r0, [r2, #0x0]
- str r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-_020126AC: .word sGFRTCWork
-_020126B0: .word sGFRTCWork + 32
-
- thumb_func_start GF_RTC_CopyDate
-GF_RTC_CopyDate: ; 0x020126B4
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _020126D0 ; =sGFRTCWork
- ldr r0, [r0, #0x0]
- cmp r0, #0x1
- beq _020126C4
- bl ErrorHandling
-_020126C4:
- ldr r2, _020126D4 ; =sGFRTCWork + 16
- ldmia r2!, {r0-r1}
- stmia r4!, {r0-r1}
- ldmia r2!, {r0-r1}
- stmia r4!, {r0-r1}
- pop {r4, pc}
- .balign 4
-_020126D0: .word sGFRTCWork
-_020126D4: .word sGFRTCWork + 16
-
- thumb_func_start GF_RTC_TimeToSec
-GF_RTC_TimeToSec: ; 0x020126D8
- push {r3-r4}
- ldr r4, _020126F8 ; =sGFRTCWork + 32
- mov r0, #0x3c
- ldr r1, [r4, #0x4]
- ldr r3, [r4, #0x8]
- add r2, r1, #0x0
- mul r2, r0
- mov r0, #0xe1
- ldr r1, [r4, #0x0]
- lsl r0, r0, #0x4
- mul r0, r1
- add r0, r2, r0
- add r0, r3, r0
- pop {r3-r4}
- bx lr
- nop
-_020126F8: .word sGFRTCWork + 32
-
- thumb_func_start GF_RTC_DateTimeToSec
-GF_RTC_DateTimeToSec: ; 0x020126FC
- ldr r3, _02012704 ; =RTC_ConvertDateTimeToSecond
- ldr r0, _02012708 ; =sGFRTCWork + 16
- ldr r1, _0201270C ; =sGFRTCWork + 32
- bx r3
- .balign 4
-_02012704: .word RTC_ConvertDateTimeToSecond
-_02012708: .word sGFRTCWork + 16
-_0201270C: .word sGFRTCWork + 32
-
- thumb_func_start FUN_02012710
-FUN_02012710: ; 0x02012710
- push {r4-r6, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- ldr r2, [r5, #0x4]
- ldr r0, _02012778 ; =sGF_DaysPerMonth - 2
- lsl r1, r2, #0x1
- ldrh r0, [r0, r1]
- ldr r3, [r5, #0x8]
- add r4, r3, r0
- cmp r2, #0x3
- blo _02012752
- ldr r6, [r5, #0x0]
- mov r0, #0x1e
- lsr r2, r6, #0x1f
- lsl r1, r6, #0x1e
- sub r1, r1, r2
- ror r1, r0
- add r0, r2, r1
- bne _02012742
- add r0, r6, #0x0
- mov r1, #0x64
- bl _s32_div_f
- cmp r1, #0x0
- bne _02012750
-_02012742:
- mov r1, #0x19
- add r0, r6, #0x0
- lsl r1, r1, #0x4
- bl _s32_div_f
- cmp r1, #0x0
- bne _02012752
-_02012750:
- add r4, r4, #0x1
-_02012752:
- add r6, r5, #0x0
- add r3, sp, #0x0
- add r2, r3, #0x0
- ldmia r6!, {r0-r1}
- stmia r3!, {r0-r1}
- ldmia r6!, {r0-r1}
- stmia r3!, {r0-r1}
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- add r0, r2, #0x0
- bl RTC_ConvertDateToDay
- add r0, r5, #0x0
- bl RTC_ConvertDateToDay
- add r0, r4, #0x0
- add sp, #0x10
- pop {r4-r6, pc}
- .balign 4
-_02012778: .word sGF_DaysPerMonth - 2
-
- thumb_func_start IsNighttime
-IsNighttime: ; 0x0201277C
- push {r3, lr}
- bl GF_RTC_GetTimeOfDay
- cmp r0, #0x3
- beq _0201278A
- cmp r0, #0x4
- bne _0201278E
-_0201278A:
- mov r0, #0x1
- pop {r3, pc}
-_0201278E:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start GF_RTC_GetTimeOfDay
-GF_RTC_GetTimeOfDay: ; 0x02012794
- push {lr}
- sub sp, #0xc
- add r0, sp, #0x0
- bl GF_RTC_CopyTime
- ldr r0, [sp, #0x0]
- bl GF_RTC_GetTimeOfDayByHour
- add sp, #0xc
- pop {pc}
-
- thumb_func_start GF_RTC_GetTimeOfDayByHour
-GF_RTC_GetTimeOfDayByHour: ; 0x020127A8
- push {r4, lr}
- add r4, r0, #0x0
- bmi _020127B2
- cmp r4, #0x18
- blt _020127B6
-_020127B2:
- bl ErrorHandling
-_020127B6:
- ldr r0, _020127BC ; =sTimeOfDayByHour
- ldrb r0, [r0, r4]
- pop {r4, pc}
- .balign 4
-_020127BC: .word sTimeOfDayByHour
-
- thumb_func_start FUN_020127C0
-FUN_020127C0: ; 0x020127C0
- push {r4-r7, lr}
- sub sp, #0x24
- add r6, r3, #0x0
- ldr r3, _0201282C ; =sMaxDate
- add r4, r0, #0x0
- add r7, r1, #0x0
- add r5, r2, #0x0
- add r2, sp, #0x14
- ldmia r3!, {r0-r1}
- str r2, [sp, #0x0]
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldr r3, _02012830 ; =sMaxTime
- add r2, sp, #0x8
- ldmia r3!, {r0-r1}
- str r2, [sp, #0x4]
- stmia r2!, {r0-r1}
- ldr r0, [r3, #0x0]
- ldr r1, [sp, #0x4]
- str r0, [r2, #0x0]
- ldr r0, [sp, #0x0]
- bl RTC_ConvertDateTimeToSecond
- add r2, r1, #0x0
- add r3, r0, #0x0
- mov r1, #0x0
- ldr r0, _02012834 ; =0xBC19137F
- eor r1, r2
- eor r0, r3
- orr r0, r1
- beq _02012804
- bl ErrorHandling
-_02012804:
- sub r0, r4, r5
- mov r12, r7
- mov r0, r12
- sbc r0, r6
- bge _02012818
- sub r0, r5, r4
- sbc r6, r7
- add sp, #0x24
- add r1, r6, #0x0
- pop {r4-r7, pc}
-_02012818:
- ldr r0, _02012834 ; =0xBC19137F
- mov r1, #0x0
- sub r0, r0, r4
- sbc r1, r7
- add r0, r5, r0
- adc r6, r1
- add r1, r6, #0x0
- add sp, #0x24
- pop {r4-r7, pc}
- nop
-_0201282C: .word sMaxDate
-_02012830: .word sMaxTime
-_02012834: .word 0xBC19137F
-
- thumb_func_start ListMenu_ctor
-ListMenu_ctor: ; 0x02012838
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r1, r5, #0x1
- add r0, r4, #0x0
- lsl r1, r1, #0x3
- bl AllocFromHeap
- cmp r0, #0x0
- beq _0201286E
- mov r2, #0x0
- cmp r5, #0x0
- bls _02012862
- add r3, r0, #0x0
- add r1, r2, #0x0
-_02012856:
- str r1, [r3, #0x0]
- str r1, [r3, #0x4]
- add r2, r2, #0x1
- add r3, #0x8
- cmp r2, r5
- blo _02012856
-_02012862:
- mov r1, #0x0
- lsl r2, r2, #0x3
- mvn r1, r1
- str r1, [r0, r2]
- add r1, r0, r2
- str r4, [r1, #0x4]
-_0201286E:
- pop {r3-r5, pc}
-
- thumb_func_start ListMenu_dtor
-ListMenu_dtor: ; 0x02012870
- push {r4, lr}
- add r4, r0, #0x0
- bl ListMenu_DestroyMenuStrings
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
-
- thumb_func_start ListMenu_ItemFromMsgData
-ListMenu_ItemFromMsgData: ; 0x02012880
- push {r3-r7, lr}
- add r6, r1, #0x0
- add r1, sp, #0x0
- add r7, r2, #0x0
- add r5, r3, #0x0
- bl ListMenu_NewItem
- add r4, r0, #0x0
- beq _0201289E
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl NewString_ReadMsgData
- str r0, [r4, #0x0]
- str r5, [r4, #0x4]
-_0201289E:
- pop {r3-r7, pc}
-
- thumb_func_start ListMenu_AddItem
-ListMenu_AddItem: ; 0x020128A0
- push {r3-r6, lr}
- sub sp, #0x4
- add r6, r1, #0x0
- add r1, sp, #0x0
- add r5, r2, #0x0
- bl ListMenu_NewItem
- add r4, r0, #0x0
- beq _020128BE
- ldr r1, [sp, #0x0]
- add r0, r6, #0x0
- bl StringDup
- str r0, [r4, #0x0]
- str r5, [r4, #0x4]
-_020128BE:
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start ListMenu_CopyItem
-ListMenu_CopyItem: ; 0x020128C4
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r1, #0x0
- add r1, sp, #0x0
- bl ListMenu_NewItem
- cmp r0, #0x0
- beq _020128DC
- ldr r1, [r4, #0x0]
- str r1, [r0, #0x0]
- ldr r1, [r4, #0x4]
- str r1, [r0, #0x4]
-_020128DC:
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start ListMenu_NewItem
-ListMenu_NewItem: ; 0x020128E0
- push {r4, lr}
- ldr r3, [r0, #0x0]
- cmp r3, #0x0
- beq _02012900
- mov r2, #0x0
- mvn r2, r2
-_020128EC:
- cmp r3, r2
- bne _020128F8
- bl ErrorHandling
- mov r0, #0x0
- pop {r4, pc}
-_020128F8:
- add r0, #0x8
- ldr r3, [r0, #0x0]
- cmp r3, #0x0
- bne _020128EC
-_02012900:
- mov r2, #0x0
- mvn r2, r2
- add r4, r0, #0x0
- cmp r3, r2
- beq _02012912
-_0201290A:
- add r0, #0x8
- ldr r3, [r0, #0x0]
- cmp r3, r2
- bne _0201290A
-_02012912:
- ldr r0, [r0, #0x4]
- str r0, [r1, #0x0]
- add r0, r4, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start ListMenu_DestroyMenuStrings
-ListMenu_DestroyMenuStrings: ; 0x0201291C
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0x0
- ldr r1, [r5, #0x0]
- mvn r0, r0
- cmp r1, r0
- beq _02012942
- mov r4, #0x0
- add r6, r0, #0x0
-_0201292E:
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- beq _02012942
- bl String_dtor
- str r4, [r5, #0x0]
- add r5, #0x8
- ldr r0, [r5, #0x0]
- cmp r0, r6
- bne _0201292E
-_02012942:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02012944
-FUN_02012944: ; 0x02012944
- push {r3-r5, lr}
- add r5, r1, #0x0
- mov r1, #0xc
- add r4, r2, #0x0
- bl AllocFromHeap
- mov r1, #0x0
- strb r1, [r0, #0x0]
- strb r1, [r0, #0x1]
- strb r1, [r0, #0x2]
- strb r1, [r0, #0x3]
- strb r1, [r0, #0x4]
- strb r1, [r0, #0x5]
- strb r1, [r0, #0x6]
- strb r1, [r0, #0x7]
- strb r1, [r0, #0x8]
- strb r1, [r0, #0x9]
- strb r1, [r0, #0xa]
- strb r1, [r0, #0xb]
- mov r1, #0x1
- strb r1, [r0, #0x9]
- str r5, [r0, #0x0]
- str r4, [r0, #0x4]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02012974
-FUN_02012974: ; 0x02012974
- push {r4, lr}
- add r4, r0, #0x0
- bne _0201297E
- bl ErrorHandling
-_0201297E:
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02012988
-FUN_02012988: ; 0x02012988
- push {r4, lr}
- add r4, r0, #0x0
- bne _02012992
- bl ErrorHandling
-_02012992:
- ldrb r0, [r4, #0x8]
- lsl r0, r0, #0x2
- ldr r0, [r4, r0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0201299C
-FUN_0201299C: ; 0x0201299C
- push {r4, lr}
- add r4, r0, #0x0
- bne _020129A6
- bl ErrorHandling
-_020129A6:
- ldrb r1, [r4, #0x8]
- mov r0, #0x1
- eor r0, r1
- lsl r0, r0, #0x2
- ldr r0, [r4, r0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020129B4
-FUN_020129B4: ; 0x020129B4
- cmp r0, #0x0
- beq _020129C6
- ldrb r1, [r0, #0x9]
- cmp r1, #0x0
- beq _020129C6
- ldrb r2, [r0, #0x8]
- mov r1, #0x1
- eor r1, r2
- strb r1, [r0, #0x8]
-_020129C6:
- bx lr
-
- thumb_func_start FUN_020129C8
-FUN_020129C8: ; 0x020129C8
- push {r3, lr}
- mov r0, #0x0
- bl MI_StopDma
- mov r0, #0x0
- bl MI_WaitDma
- pop {r3, pc}
-
- thumb_func_start FUN_020129D8
-FUN_020129D8: ; 0x020129D8
- push {r4-r6, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- cmp r3, #0x1
- bne _020129F2
- mov r0, #0x0
- add r1, r6, #0x0
- add r2, r5, #0x0
- add r3, r4, #0x0
- bl MI_HBlankDmaCopy32
- pop {r4-r6, pc}
-_020129F2:
- mov r0, #0x0
- add r1, r6, #0x0
- add r2, r5, #0x0
- add r3, r4, #0x0
- bl MI_HBlankDmaCopy16
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02012A00
-FUN_02012A00: ; 0x02012A00
- push {r3-r5, lr}
- ldr r1, _02012A2C ; =0x0000079C
- add r5, r0, #0x0
- bl AllocFromHeap
- ldr r2, _02012A2C ; =0x0000079C
- mov r1, #0x0
- add r4, r0, #0x0
- bl memset
- mov r2, #0x3
- lsl r2, r2, #0x8
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r4, r2
- bl FUN_02012944
- mov r1, #0x6
- lsl r1, r1, #0x8
- str r0, [r4, r1]
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02012A2C: .word 0x0000079C
-
- thumb_func_start FUN_02012A30
-FUN_02012A30: ; 0x02012A30
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r5, #0x0
- bne _02012A42
- bl ErrorHandling
-_02012A42:
- ldr r0, _02012AB0 ; =0x00000604
- ldr r0, [r5, r0]
- cmp r0, #0x0
- beq _02012A4E
- bl ErrorHandling
-_02012A4E:
- ldr r0, _02012AB4 ; =0x0000078C
- mov r2, #0x0
- strb r4, [r5, r0]
- add r1, r0, #0x1
- strb r6, [r5, r1]
- add r1, r0, #0x0
- add r1, #0xc
- strh r2, [r5, r1]
- add r2, sp, #0x8
- mov r1, #0x14
- ldrsh r2, [r2, r1]
- add r1, r0, #0x0
- add r1, #0xe
- strh r2, [r5, r1]
- add r1, r0, #0x4
- ldr r2, [sp, #0x20]
- add r0, #0x8
- str r2, [r5, r1]
- ldr r1, [sp, #0x24]
- ldr r3, [sp, #0x18]
- str r1, [r5, r0]
- ldr r0, _02012AB8 ; =0x0000060C
- mov r1, #0xc0
- add r0, r5, r0
- add r2, r7, #0x0
- bl FUN_02012B88
- ldr r0, _02012ABC ; =FUN_02012BE4
- ldr r2, [sp, #0x28]
- add r1, r5, #0x0
- bl FUN_0200CA44
- ldr r1, _02012AB0 ; =0x00000604
- mov r2, #0x3
- str r0, [r5, r1]
- ldr r0, _02012AC0 ; =0x00000794
- add r1, r5, #0x0
- ldr r0, [r5, r0]
- lsl r2, r2, #0x8
- bl MIi_CpuClear32
- ldr r0, _02012AC0 ; =0x00000794
- mov r2, #0x3
- lsl r2, r2, #0x8
- ldr r0, [r5, r0]
- add r1, r5, r2
- bl MIi_CpuClear32
- pop {r3-r7, pc}
- .balign 4
-_02012AB0: .word 0x00000604
-_02012AB4: .word 0x0000078C
-_02012AB8: .word 0x0000060C
-_02012ABC: .word FUN_02012BE4
-_02012AC0: .word 0x00000794
-
- thumb_func_start FUN_02012AC4
-FUN_02012AC4: ; 0x02012AC4
- push {r4, lr}
- add r4, r0, #0x0
- bne _02012ACE
- bl ErrorHandling
-_02012ACE:
- ldr r0, _02012AF8 ; =0x00000604
- ldr r0, [r4, r0]
- cmp r0, #0x0
- beq _02012AF4
- bl FUN_0200CAB4
- ldr r0, _02012AF8 ; =0x00000604
- mov r1, #0x0
- str r1, [r4, r0]
- sub r0, r0, #0x4
- ldr r0, [r4, r0]
- bl FUN_02012988
- ldr r1, _02012AFC ; =0x00000794
- mov r2, #0x3
- ldr r1, [r4, r1]
- lsl r2, r2, #0x8
- bl memset
-_02012AF4:
- pop {r4, pc}
- nop
-_02012AF8: .word 0x00000604
-_02012AFC: .word 0x00000794
-
- thumb_func_start FUN_02012B00
-FUN_02012B00: ; 0x02012B00
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02012AC4
- bl FUN_02012C90
- mov r0, #0x6
- lsl r0, r0, #0x8
- ldr r0, [r4, r0]
- bl FUN_02012974
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02012B20
-FUN_02012B20: ; 0x02012B20
- mov r1, #0x6
- lsl r1, r1, #0x8
- ldr r3, _02012B2C ; =FUN_02012988
- ldr r0, [r0, r1]
- bx r3
- nop
-_02012B2C: .word FUN_02012988
-
- thumb_func_start FUN_02012B30
-FUN_02012B30: ; 0x02012B30
- push {r4, lr}
- add r4, r0, #0x0
- beq _02012B5E
- ldr r0, _02012B60 ; =0x00000604
- ldr r1, [r4, r0]
- cmp r1, #0x0
- beq _02012B5E
- sub r0, r0, #0x4
- ldr r0, [r4, r0]
- bl FUN_020129B4
- mov r0, #0x6
- lsl r0, r0, #0x8
- ldr r0, [r4, r0]
- bl FUN_02012988
- add r1, r0, #0x0
- ldr r0, _02012B64 ; =0x00000794
- mov r2, #0x3
- ldr r0, [r4, r0]
- lsl r2, r2, #0x8
- bl MIi_CpuClear32
-_02012B5E:
- pop {r4, pc}
- .balign 4
-_02012B60: .word 0x00000604
-_02012B64: .word 0x00000794
-
- thumb_func_start FUN_02012B68
-FUN_02012B68: ; 0x02012B68
- push {r4, lr}
- add r4, r0, #0x0
- beq _02012B80
- ldr r0, _02012B84 ; =0x00000604
- ldr r0, [r4, r0]
- cmp r0, #0x0
- beq _02012B80
- bl FUN_02012C90
- add r0, r4, #0x0
- bl FUN_02012C98
-_02012B80:
- pop {r4, pc}
- nop
-_02012B84: .word 0x00000604
-
- thumb_func_start FUN_02012B88
-FUN_02012B88: ; 0x02012B88
- push {r4-r7, lr}
- sub sp, #0xc
- mov r4, #0x0
- add r7, r1, #0x0
- add r5, r0, #0x0
- add r6, r4, #0x0
- str r2, [sp, #0x0]
- cmp r7, #0x0
- bls _02012BD6
- asr r0, r3, #0x1f
- str r3, [sp, #0x4]
- str r0, [sp, #0x8]
-_02012BA0:
- asr r0, r4, #0x4
- lsl r1, r0, #0x2
- ldr r0, _02012BDC ; =UNK_020FFA38
- ldr r2, [sp, #0x4]
- ldrsh r0, [r0, r1]
- ldr r3, [sp, #0x8]
- asr r1, r0, #0x1f
- bl _ll_mul
- mov r2, #0x2
- lsl r2, r2, #0xa
- add r0, r0, r2
- ldr r2, _02012BE0 ; =0x00000000
- adc r1, r2
- lsl r1, r1, #0x14
- lsr r0, r0, #0xc
- orr r0, r1
- asr r0, r0, #0xc
- strh r0, [r5, #0x0]
- ldr r0, [sp, #0x0]
- add r6, r6, #0x1
- add r0, r4, r0
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- add r5, r5, #0x2
- cmp r6, r7
- blo _02012BA0
-_02012BD6:
- add sp, #0xc
- pop {r4-r7, pc}
- nop
-_02012BDC: .word UNK_020FFA38
-_02012BE0: .word 0x00000000
-
- thumb_func_start FUN_02012BE4
-FUN_02012BE4: ; 0x02012BE4
- push {r3-r7, lr}
- mov r0, #0x6
- add r6, r1, #0x0
- lsl r0, r0, #0x8
- ldr r0, [r6, r0]
- bl FUN_02012988
- add r5, r0, #0x0
- ldr r0, _02012C80 ; =0x00000798
- mov r1, #0x64
- ldrsh r0, [r6, r0]
- bl _s32_div_f
- lsl r0, r0, #0x18
- lsr r3, r0, #0x18
- ldr r0, _02012C84 ; =0x0000078C
- ldrb r4, [r6, r0]
- add r0, r0, #0x1
- ldrb r0, [r6, r0]
- cmp r4, r0
- bgt _02012C4C
- lsl r0, r4, #0x2
- add r5, r5, r0
-_02012C12:
- ldr r2, [r5, #0x0]
- lsl r0, r2, #0x10
- asr r7, r0, #0x10
- lsl r0, r3, #0x1
- add r1, r6, r0
- ldr r0, _02012C88 ; =0x0000060C
- ldrsh r0, [r1, r0]
- add r0, r7, r0
- lsl r0, r0, #0x10
- asr r1, r0, #0x10
- lsr r0, r2, #0x10
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- lsl r1, r1, #0x10
- lsl r0, r0, #0x10
- lsr r1, r1, #0x10
- orr r0, r1
- stmia r5!, {r0}
- add r0, r3, #0x1
- mov r1, #0xc0
- bl _s32_div_f
- lsl r0, r1, #0x18
- lsr r3, r0, #0x18
- ldr r0, _02012C8C ; =0x0000078D
- add r4, r4, #0x1
- ldrb r0, [r6, r0]
- cmp r4, r0
- ble _02012C12
-_02012C4C:
- ldr r1, _02012C80 ; =0x00000798
- add r0, r1, #0x2
- ldrsh r2, [r6, r1]
- ldrsh r0, [r6, r0]
- add r4, r6, r1
- add r0, r2, r0
- strh r0, [r4, #0x0]
- ldrsh r0, [r6, r1]
- mov r1, #0x4b
- lsl r1, r1, #0x8
- cmp r0, r1
- blt _02012C70
- mov r0, #0x0
- ldrsh r0, [r4, r0]
- bl _s32_div_f
- strh r1, [r4, #0x0]
- pop {r3-r7, pc}
-_02012C70:
- cmp r0, #0x0
- bge _02012C7C
- mov r0, #0x0
- ldrsh r0, [r4, r0]
- add r0, r0, r1
- strh r0, [r4, #0x0]
-_02012C7C:
- pop {r3-r7, pc}
- nop
-_02012C80: .word 0x00000798
-_02012C84: .word 0x0000078C
-_02012C88: .word 0x0000060C
-_02012C8C: .word 0x0000078D
-
- thumb_func_start FUN_02012C90
-FUN_02012C90: ; 0x02012C90
- ldr r3, _02012C94 ; =FUN_020129C8
- bx r3
- .balign 4
-_02012C94: .word FUN_020129C8
-
- thumb_func_start FUN_02012C98
-FUN_02012C98: ; 0x02012C98
- push {r3-r5, lr}
- add r4, r0, #0x0
- bne _02012CA2
- bl ErrorHandling
-_02012CA2:
- mov r0, #0x6
- lsl r0, r0, #0x8
- ldr r0, [r4, r0]
- bl FUN_0201299C
- mov r1, #0x3
- lsl r1, r1, #0x8
- add r5, r0, #0x0
- bl DC_FlushRange
- mov r1, #0x79
- lsl r1, r1, #0x4
- ldr r1, [r4, r1]
- add r0, r5, #0x0
- mov r2, #0x4
- mov r3, #0x1
- bl FUN_020129D8
- pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02012004.s b/arm9/asm/unk_02012004.s
new file mode 100644
index 00000000..8c38ae93
--- /dev/null
+++ b/arm9/asm/unk_02012004.s
@@ -0,0 +1,787 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global UNK_020ED3B0
+UNK_020ED3B0: ; 0x020ED3B0
+ .word 0x00000147
+ .word 0x000001EF
+
+ .global UNK_020ED3B8
+UNK_020ED3B8: ; 0x020ED3B8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+
+ .global UNK_020ED3C8
+UNK_020ED3C8: ; 0x020ED3C8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
+
+ .global UNK_020ED3D8
+UNK_020ED3D8: ; 0x020ED3D8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .global UNK_020ED438
+UNK_020ED438: ; 0x020ED438
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+ .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+
+ .text
+
+ thumb_func_start FUN_02012004
+FUN_02012004: ; 0x02012004
+ push {r3-r7, lr}
+ sub sp, #0x8
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r6, [sp, #0x20]
+ str r1, [sp, #0x4]
+ add r5, r2, #0x0
+ add r4, r3, #0x0
+ str r0, [sp, #0x24]
+ mov r7, #0x0
+_02012018:
+ ldr r1, [r4, #0x0]
+ ldr r0, [sp, #0x4]
+ ldr r2, [r5, #0x0]
+ add r0, r0, r1
+ ldr r1, [sp, #0x0]
+ add r1, r1, r2
+ add r2, r6, #0x0
+ bl memcpy
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ add r7, r7, #0x1
+ add r0, r1, r0
+ str r0, [r5, #0x0]
+ ldr r0, [r4, #0x0]
+ add r0, r0, r6
+ str r0, [r4, #0x0]
+ cmp r7, #0x8
+ blt _02012018
+ add sp, #0x8
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012044
+FUN_02012044: ; 0x02012044
+ push {r4-r6, lr}
+ add r5, r3, #0x0
+ bl AllocAndReadWholeNarcMemberByIdPair
+ add r4, r0, #0x0
+ bne _02012054
+ bl GF_AssertFail
+_02012054:
+ add r0, r4, #0x0
+ add r1, r5, #0x0
+ bl NNS_G2dGetUnpackedCharacterData
+ add r6, r0, #0x0
+ cmp r5, #0x0
+ bne _02012066
+ bl GF_AssertFail
+_02012066:
+ cmp r6, #0x0
+ bne _0201206E
+ bl GF_AssertFail
+_0201206E:
+ add r0, r4, #0x0
+ bl FreeToHeap
+ pop {r4-r6, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012078
+FUN_02012078: ; 0x02012078
+ push {r4-r7, lr}
+ sub sp, #0x2c
+ ldr r4, [sp, #0x40]
+ str r0, [sp, #0x8]
+ add r6, r0, r2
+ ldrh r0, [r4, #0x2]
+ str r1, [sp, #0xc]
+ add r5, r3, #0x0
+ cmp r0, r6
+ bge _02012090
+ bl GF_AssertFail
+_02012090:
+ ldr r0, [sp, #0xc]
+ ldrh r1, [r4, #0x0]
+ add r0, r0, r5
+ str r0, [sp, #0x14]
+ cmp r1, r0
+ bge _020120A0
+ bl GF_AssertFail
+_020120A0:
+ ldr r0, [r4, #0x14]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x44]
+ str r0, [sp, #0x1c]
+ ldrh r0, [r4, #0x2]
+ lsl r7, r0, #0x2
+ ldr r0, [sp, #0xc]
+ add r1, r0, #0x0
+ mul r1, r7
+ ldr r0, [sp, #0x8]
+ str r1, [sp, #0x18]
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x18]
+ str r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bge _0201210A
+_020120CC:
+ ldr r4, [sp, #0x8]
+ add r0, r4, #0x0
+ cmp r0, r6
+ bge _020120F8
+ ldr r0, [sp, #0x18]
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0x10]
+ add r5, r0, r1
+_020120DC:
+ str r5, [sp, #0x28]
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x1c]
+ add r2, sp, #0x28
+ add r3, sp, #0x24
+ str r7, [sp, #0x4]
+ bl FUN_02012004
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r6
+ blt _020120DC
+_020120F8:
+ ldr r0, [sp, #0x18]
+ add r0, r0, r7
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _020120CC
+_0201210A:
+ add sp, #0x2c
+ pop {r4-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012110
+FUN_02012110: ; 0x02012110
+ push {r4-r5}
+ sub sp, #0x8
+ ldr r2, _02012148 ; =UNK_020ED3B0
+ add r1, sp, #0x0
+ ldr r3, [r2, #0x0]
+ ldr r2, [r2, #0x4]
+ str r3, [sp, #0x0]
+ str r2, [sp, #0x4]
+ ldr r2, _0201214C ; =0x000001EF
+ mov r5, #0x0
+ add r3, r2, #0x0
+_02012126:
+ ldr r4, [r1, #0x0]
+ cmp r4, r3
+ beq _02012140
+ cmp r4, r0
+ bne _02012138
+ add sp, #0x8
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_02012138:
+ add r5, r5, #0x1
+ add r1, r1, #0x4
+ cmp r5, r2
+ blt _02012126
+_02012140:
+ mov r0, #0x0
+ add sp, #0x8
+ pop {r4-r5}
+ bx lr
+ .balign 4
+_02012148: .word UNK_020ED3B0
+_0201214C: .word 0x000001EF
+
+ thumb_func_start FUN_02012150
+FUN_02012150: ; 0x02012150
+ push {r3-r4, lr}
+ sub sp, #0xc
+ add r4, r3, #0x0
+ mov r3, #0x0
+ str r3, [sp, #0x8]
+ add r3, sp, #0x8
+ bl FUN_02012044
+ ldr r0, [sp, #0x8]
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ ldr r0, [sp, #0x34]
+ bl FUN_02012110
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x2
+ bne _02012184
+ cmp r0, #0x1
+ bne _02012184
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x28]
+ ldr r0, [r0, #0x14]
+ ldr r2, [sp, #0x2c]
+ bl FUN_02008904
+_02012184:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0x18]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #0x4]
+ ldr r3, [sp, #0x20]
+ add r0, r4, #0x0
+ bl FUN_02012078
+ add sp, #0xc
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_0201219C
+FUN_0201219C: ; 0x0201219C
+ push {r4-r7, lr}
+ sub sp, #0x24
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ ldr r2, [sp, #0x3c]
+ ldr r1, [sp, #0x40]
+ add r6, r0, #0x0
+ mul r1, r2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x5
+ str r3, [sp, #0x20]
+ bl AllocFromHeap
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x38]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x3c]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x40]
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x44]
+ str r4, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x50]
+ str r0, [sp, #0x1c]
+ add r0, r6, #0x0
+ bl FUN_02012150
+ add r0, r4, #0x0
+ add sp, #0x24
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020121E8
+FUN_020121E8: ; 0x020121E8
+ push {r3-r7, lr}
+ sub sp, #0x30
+ str r3, [sp, #0x8]
+ ldr r3, [sp, #0x48]
+ str r3, [sp, #0x48]
+ mov r3, #0x0
+ str r3, [sp, #0x2c]
+ bl AllocAndReadWholeNarcMemberByIdPair
+ str r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _02012204
+ bl GF_AssertFail
+_02012204:
+ ldr r0, [sp, #0x20]
+ add r1, sp, #0x2c
+ bl NNS_G2dGetUnpackedCharacterData
+ cmp r0, #0x0
+ bne _02012214
+ bl GF_AssertFail
+_02012214:
+ ldr r1, [sp, #0x4c]
+ ldr r0, [sp, #0x8]
+ add r6, r0, r1
+ ldr r0, [sp, #0x2c]
+ ldrh r0, [r0, #0x2]
+ cmp r0, r6
+ bge _02012226
+ bl GF_AssertFail
+_02012226:
+ ldr r1, [sp, #0x50]
+ ldr r0, [sp, #0x48]
+ add r0, r0, r1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ ldrh r1, [r0, #0x0]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bge _0201223C
+ bl GF_AssertFail
+_0201223C:
+ ldr r0, [sp, #0x2c]
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x1c]
+ bl FUN_02008A74
+ ldr r0, [sp, #0x54]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x2c]
+ ldrh r0, [r0, #0x2]
+ lsl r7, r0, #0x2
+ ldr r0, [sp, #0x48]
+ add r1, r0, #0x0
+ mul r1, r7
+ ldr r0, [sp, #0x8]
+ str r1, [sp, #0x14]
+ lsl r1, r0, #0x2
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0xc]
+ add r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x0
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x48]
+ ldr r0, [sp, #0x10]
+ cmp r1, r0
+ bge _020122AE
+_02012270:
+ ldr r4, [sp, #0x8]
+ add r0, r4, #0x0
+ cmp r0, r6
+ bge _0201229C
+ ldr r0, [sp, #0x14]
+ lsl r1, r0, #0x3
+ ldr r0, [sp, #0xc]
+ add r5, r0, r1
+_02012280:
+ str r5, [sp, #0x28]
+ mov r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x28
+ add r3, sp, #0x24
+ str r7, [sp, #0x4]
+ bl FUN_02012004
+ add r4, r4, #0x1
+ add r5, r5, #0x4
+ cmp r4, r6
+ blt _02012280
+_0201229C:
+ ldr r0, [sp, #0x14]
+ add r0, r0, r7
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x48]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0x48]
+ cmp r1, r0
+ blt _02012270
+_020122AE:
+ ldr r0, [sp, #0x20]
+ bl FreeToHeap
+ add sp, #0x30
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_020122B8
+FUN_020122B8: ; 0x020122B8
+ push {r4-r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0x0
+ add r5, r2, #0x0
+ ldr r2, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ add r6, r0, #0x0
+ mul r1, r2
+ add r0, r5, #0x0
+ lsl r1, r1, #0x5
+ str r3, [sp, #0x10]
+ bl AllocFromHeap
+ add r4, r0, #0x0
+ ldr r0, [sp, #0x28]
+ ldr r3, [sp, #0x10]
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0x0
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x30]
+ add r2, r5, #0x0
+ str r0, [sp, #0x8]
+ add r0, r6, #0x0
+ str r4, [sp, #0xc]
+ bl FUN_020121E8
+ add r0, r4, #0x0
+ add sp, #0x14
+ pop {r4-r7, pc}
+
+ thumb_func_start FUN_020122F4
+FUN_020122F4: ; 0x020122F4
+ push {r3-r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x44]
+ ldr r1, [sp, #0x38]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x4]
+ str r0, [sp, #0x14]
+ add r0, r2, #0x0
+ add r7, r0, r1
+ ldr r1, [sp, #0x3c]
+ add r0, r3, #0x0
+ add r0, r0, r1
+ add r1, r3, #0x0
+ str r3, [sp, #0x8]
+ ldr r5, [sp, #0x40]
+ str r0, [sp, #0x10]
+ cmp r1, r0
+ bge _0201236C
+ add r0, r3, #0x0
+ lsl r0, r0, #0x5
+ str r0, [sp, #0xc]
+ add r0, r2, #0x0
+ lsl r0, r0, #0x5
+ str r0, [sp, #0x1c]
+_02012328:
+ ldr r6, [sp, #0x4]
+ add r0, r6, #0x0
+ cmp r0, r7
+ bge _0201235A
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0xc]
+ add r2, r1, #0x0
+ mul r2, r0
+ ldr r0, [sp, #0x1c]
+ add r4, r0, r2
+_0201233C:
+ ldr r1, [r5, #0x0]
+ ldr r0, [sp, #0x14]
+ mov r2, #0x20
+ add r0, r0, r1
+ ldr r1, [sp, #0x18]
+ add r1, r1, r4
+ bl memcpy
+ ldr r0, [r5, #0x0]
+ add r6, r6, #0x1
+ add r0, #0x20
+ str r0, [r5, #0x0]
+ add r4, #0x20
+ cmp r6, r7
+ blt _0201233C
+_0201235A:
+ ldr r0, [sp, #0xc]
+ add r0, #0x20
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x8]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0x8]
+ cmp r1, r0
+ blt _02012328
+_0201236C:
+ add sp, #0x20
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02012370
+FUN_02012370: ; 0x02012370
+ push {r3-r4, lr}
+ sub sp, #0x14
+ add r4, r2, #0x0
+ ldr r2, [r4, #0x8]
+ str r2, [sp, #0x0]
+ ldr r2, [r4, #0xc]
+ str r2, [sp, #0x4]
+ ldr r2, [sp, #0x20]
+ str r3, [sp, #0x8]
+ str r2, [sp, #0xc]
+ ldr r2, [sp, #0x24]
+ str r2, [sp, #0x10]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x4]
+ bl FUN_020122F4
+ add sp, #0x14
+ pop {r3-r4, pc}
+
+ thumb_func_start FUN_02012394
+FUN_02012394: ; 0x02012394
+ push {r4-r7, lr}
+ sub sp, #0x7c
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x9c]
+ mov r12, r3
+ add r5, r2, #0x0
+ ldr r6, [sp, #0x94]
+ ldr r7, [sp, #0x98]
+ ldr r3, _020123FC ; =UNK_020ED3D8
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x9c]
+ add r2, sp, #0x1c
+ mov r4, #0xc
+_020123AE:
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r4, r4, #0x1
+ bne _020123AE
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x90]
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ add r2, r5, #0x0
+ mov r3, r12
+ str r7, [sp, #0x8]
+ bl FUN_020122B8
+ str r0, [sp, #0x14]
+ mov r4, #0x0
+ add r5, sp, #0x1c
+_020123D4:
+ ldr r0, [sp, #0x14]
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x9c]
+ add r2, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r3, sp, #0x18
+ bl FUN_02012370
+ add r4, r4, #0x1
+ add r5, #0x10
+ cmp r4, #0x6
+ blt _020123D4
+ ldr r0, [sp, #0x14]
+ bl FreeToHeap
+ add sp, #0x7c
+ pop {r4-r7, pc}
+ nop
+_020123FC: .word UNK_020ED3D8
+
+ thumb_func_start FUN_02012400
+FUN_02012400: ; 0x02012400
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [r3, #0x4]
+ str r4, [sp, #0x0]
+ ldr r4, [r3, #0x8]
+ str r4, [sp, #0x4]
+ ldr r4, [r3, #0xc]
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #0xc]
+ ldr r3, [r3, #0x0]
+ bl FUN_02012394
+ add sp, #0x10
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012420
+FUN_02012420: ; 0x02012420
+ push {r4-r7, lr}
+ sub sp, #0x14
+ ldr r4, _02012448 ; =UNK_020ED3B8
+ add r5, r3, #0x0
+ add r3, sp, #0x4
+ add r7, r0, #0x0
+ mov r12, r1
+ add r6, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ add r0, r7, #0x0
+ mov r1, r12
+ add r3, r6, #0x0
+ str r5, [sp, #0x0]
+ bl FUN_02012400
+ add sp, #0x14
+ pop {r4-r7, pc}
+ .balign 4
+_02012448: .word UNK_020ED3B8
+
+ thumb_func_start FUN_0201244C
+FUN_0201244C: ; 0x0201244C
+ push {r3-r7, lr}
+ add r6, r1, #0x0
+ mov r1, #0x32
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r0, r7, #0x0
+ lsl r1, r1, #0x6
+ bl AllocFromHeap
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ add r3, r4, #0x0
+ bl FUN_02012420
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+
+ thumb_func_start FUN_02012470
+FUN_02012470: ; 0x02012470
+ push {r3-r7, lr}
+ add r7, r2, #0x0
+ add r5, r0, #0x0
+ add r6, r1, #0x0
+ add r0, r7, #0x0
+ mov r1, #0x20
+ bl AllocFromHeap
+ add r4, r0, #0x0
+ add r0, r5, #0x0
+ add r1, r6, #0x0
+ add r2, r7, #0x0
+ bl AllocAndReadWholeNarcMemberByIdPair
+ add r1, sp, #0x0
+ add r5, r0, #0x0
+ bl NNS_G2dGetUnpackedPaletteData
+ cmp r0, #0x1
+ beq _0201249C
+ bl GF_AssertFail
+_0201249C:
+ ldr r0, [sp, #0x0]
+ add r1, r4, #0x0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ add r0, r5, #0x0
+ bl FreeToHeap
+ add r0, r4, #0x0
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_020124B4
+FUN_020124B4: ; 0x020124B4
+ push {r4-r7, lr}
+ sub sp, #0x8c
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0xac]
+ mov r12, r3
+ add r5, r2, #0x0
+ ldr r6, [sp, #0xa4]
+ ldr r7, [sp, #0xa8]
+ ldr r3, _0201252C ; =UNK_020ED438
+ str r1, [sp, #0x20]
+ str r0, [sp, #0xac]
+ add r2, sp, #0x2c
+ mov r4, #0xc
+_020124CE:
+ ldmia r3!, {r0-r1}
+ stmia r2!, {r0-r1}
+ sub r4, r4, #0x1
+ bne _020124CE
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xa0]
+ ldr r1, [sp, #0x20]
+ str r0, [sp, #0x0]
+ str r6, [sp, #0x4]
+ ldr r0, [sp, #0xb0]
+ str r7, [sp, #0x8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0xb4]
+ add r2, r5, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xb8]
+ mov r3, r12
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xbc]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ bl FUN_0201219C
+ str r0, [sp, #0x24]
+ mov r4, #0x0
+ add r5, sp, #0x2c
+_02012504:
+ ldr r0, [sp, #0x24]
+ add r1, r7, #0x0
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0xac]
+ add r2, r5, #0x0
+ str r0, [sp, #0x4]
+ add r0, r6, #0x0
+ add r3, sp, #0x28
+ bl FUN_02012370
+ add r4, r4, #0x1
+ add r5, #0x10
+ cmp r4, #0x6
+ blt _02012504
+ ldr r0, [sp, #0x24]
+ bl FreeToHeap
+ add sp, #0x8c
+ pop {r4-r7, pc}
+ nop
+_0201252C: .word UNK_020ED438
+
+ thumb_func_start FUN_02012530
+FUN_02012530: ; 0x02012530
+ push {r4, lr}
+ sub sp, #0x20
+ ldr r4, [r3, #0x4]
+ str r4, [sp, #0x0]
+ ldr r4, [r3, #0x8]
+ str r4, [sp, #0x4]
+ ldr r4, [r3, #0xc]
+ str r4, [sp, #0x8]
+ ldr r4, [sp, #0x28]
+ str r4, [sp, #0xc]
+ ldr r4, [sp, #0x2c]
+ str r4, [sp, #0x10]
+ ldr r4, [sp, #0x30]
+ str r4, [sp, #0x14]
+ ldr r4, [sp, #0x34]
+ str r4, [sp, #0x18]
+ ldr r4, [sp, #0x38]
+ str r4, [sp, #0x1c]
+ ldr r3, [r3, #0x0]
+ bl FUN_020124B4
+ add sp, #0x20
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012560
+FUN_02012560: ; 0x02012560
+ push {r4-r7, lr}
+ sub sp, #0x24
+ ldr r4, _02012598 ; =UNK_020ED3C8
+ add r5, r3, #0x0
+ add r3, sp, #0x14
+ add r7, r0, #0x0
+ mov r12, r1
+ add r6, r3, #0x0
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldmia r4!, {r0-r1}
+ stmia r3!, {r0-r1}
+ ldr r0, [sp, #0x38]
+ str r5, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x3c]
+ mov r1, r12
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x40]
+ add r3, r6, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x44]
+ str r0, [sp, #0x10]
+ add r0, r7, #0x0
+ bl FUN_02012530
+ add sp, #0x24
+ pop {r4-r7, pc}
+ .balign 4
+_02012598: .word UNK_020ED3C8
diff --git a/arm9/asm/unk_02012944.s b/arm9/asm/unk_02012944.s
new file mode 100644
index 00000000..8b3029f2
--- /dev/null
+++ b/arm9/asm/unk_02012944.s
@@ -0,0 +1,471 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ thumb_func_start FUN_02012944
+FUN_02012944: ; 0x02012944
+ push {r3-r5, lr}
+ add r5, r1, #0x0
+ mov r1, #0xc
+ add r4, r2, #0x0
+ bl AllocFromHeap
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ strb r1, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ strb r1, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ strb r1, [r0, #0x6]
+ strb r1, [r0, #0x7]
+ strb r1, [r0, #0x8]
+ strb r1, [r0, #0x9]
+ strb r1, [r0, #0xa]
+ strb r1, [r0, #0xb]
+ mov r1, #0x1
+ strb r1, [r0, #0x9]
+ str r5, [r0, #0x0]
+ str r4, [r0, #0x4]
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02012974
+FUN_02012974: ; 0x02012974
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _0201297E
+ bl GF_AssertFail
+_0201297E:
+ add r0, r4, #0x0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012988
+FUN_02012988: ; 0x02012988
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02012992
+ bl GF_AssertFail
+_02012992:
+ ldrb r0, [r4, #0x8]
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_0201299C
+FUN_0201299C: ; 0x0201299C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _020129A6
+ bl GF_AssertFail
+_020129A6:
+ ldrb r1, [r4, #0x8]
+ mov r0, #0x1
+ eor r0, r1
+ lsl r0, r0, #0x2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_020129B4
+FUN_020129B4: ; 0x020129B4
+ cmp r0, #0x0
+ beq _020129C6
+ ldrb r1, [r0, #0x9]
+ cmp r1, #0x0
+ beq _020129C6
+ ldrb r2, [r0, #0x8]
+ mov r1, #0x1
+ eor r1, r2
+ strb r1, [r0, #0x8]
+_020129C6:
+ bx lr
+
+ thumb_func_start FUN_020129C8
+FUN_020129C8: ; 0x020129C8
+ push {r3, lr}
+ mov r0, #0x0
+ bl MI_StopDma
+ mov r0, #0x0
+ bl MI_WaitDma
+ pop {r3, pc}
+
+ thumb_func_start FUN_020129D8
+FUN_020129D8: ; 0x020129D8
+ push {r4-r6, lr}
+ add r6, r0, #0x0
+ add r5, r1, #0x0
+ add r4, r2, #0x0
+ cmp r3, #0x1
+ bne _020129F2
+ mov r0, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl MI_HBlankDmaCopy32
+ pop {r4-r6, pc}
+_020129F2:
+ mov r0, #0x0
+ add r1, r6, #0x0
+ add r2, r5, #0x0
+ add r3, r4, #0x0
+ bl MI_HBlankDmaCopy16
+ pop {r4-r6, pc}
+
+ thumb_func_start FUN_02012A00
+FUN_02012A00: ; 0x02012A00
+ push {r3-r5, lr}
+ ldr r1, _02012A2C ; =0x0000079C
+ add r5, r0, #0x0
+ bl AllocFromHeap
+ ldr r2, _02012A2C ; =0x0000079C
+ mov r1, #0x0
+ add r4, r0, #0x0
+ bl memset
+ mov r2, #0x3
+ lsl r2, r2, #0x8
+ add r0, r5, #0x0
+ add r1, r4, #0x0
+ add r2, r4, r2
+ bl FUN_02012944
+ mov r1, #0x6
+ lsl r1, r1, #0x8
+ str r0, [r4, r1]
+ add r0, r4, #0x0
+ pop {r3-r5, pc}
+ .balign 4
+_02012A2C: .word 0x0000079C
+
+ thumb_func_start FUN_02012A30
+FUN_02012A30: ; 0x02012A30
+ push {r3-r7, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r6, r2, #0x0
+ add r7, r3, #0x0
+ cmp r5, #0x0
+ bne _02012A42
+ bl GF_AssertFail
+_02012A42:
+ ldr r0, _02012AB0 ; =0x00000604
+ ldr r0, [r5, r0]
+ cmp r0, #0x0
+ beq _02012A4E
+ bl GF_AssertFail
+_02012A4E:
+ ldr r0, _02012AB4 ; =0x0000078C
+ mov r2, #0x0
+ strb r4, [r5, r0]
+ add r1, r0, #0x1
+ strb r6, [r5, r1]
+ add r1, r0, #0x0
+ add r1, #0xc
+ strh r2, [r5, r1]
+ add r2, sp, #0x8
+ mov r1, #0x14
+ ldrsh r2, [r2, r1]
+ add r1, r0, #0x0
+ add r1, #0xe
+ strh r2, [r5, r1]
+ add r1, r0, #0x4
+ ldr r2, [sp, #0x20]
+ add r0, #0x8
+ str r2, [r5, r1]
+ ldr r1, [sp, #0x24]
+ ldr r3, [sp, #0x18]
+ str r1, [r5, r0]
+ ldr r0, _02012AB8 ; =0x0000060C
+ mov r1, #0xc0
+ add r0, r5, r0
+ add r2, r7, #0x0
+ bl FUN_02012B88
+ ldr r0, _02012ABC ; =FUN_02012BE4
+ ldr r2, [sp, #0x28]
+ add r1, r5, #0x0
+ bl FUN_0200CA44
+ ldr r1, _02012AB0 ; =0x00000604
+ mov r2, #0x3
+ str r0, [r5, r1]
+ ldr r0, _02012AC0 ; =0x00000794
+ add r1, r5, #0x0
+ ldr r0, [r5, r0]
+ lsl r2, r2, #0x8
+ bl MIi_CpuClear32
+ ldr r0, _02012AC0 ; =0x00000794
+ mov r2, #0x3
+ lsl r2, r2, #0x8
+ ldr r0, [r5, r0]
+ add r1, r5, r2
+ bl MIi_CpuClear32
+ pop {r3-r7, pc}
+ .balign 4
+_02012AB0: .word 0x00000604
+_02012AB4: .word 0x0000078C
+_02012AB8: .word 0x0000060C
+_02012ABC: .word FUN_02012BE4
+_02012AC0: .word 0x00000794
+
+ thumb_func_start FUN_02012AC4
+FUN_02012AC4: ; 0x02012AC4
+ push {r4, lr}
+ add r4, r0, #0x0
+ bne _02012ACE
+ bl GF_AssertFail
+_02012ACE:
+ ldr r0, _02012AF8 ; =0x00000604
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02012AF4
+ bl FUN_0200CAB4
+ ldr r0, _02012AF8 ; =0x00000604
+ mov r1, #0x0
+ str r1, [r4, r0]
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_02012988
+ ldr r1, _02012AFC ; =0x00000794
+ mov r2, #0x3
+ ldr r1, [r4, r1]
+ lsl r2, r2, #0x8
+ bl memset
+_02012AF4:
+ pop {r4, pc}
+ nop
+_02012AF8: .word 0x00000604
+_02012AFC: .word 0x00000794
+
+ thumb_func_start FUN_02012B00
+FUN_02012B00: ; 0x02012B00
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_02012AC4
+ bl FUN_02012C90
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ bl FUN_02012974
+ add r0, r4, #0x0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02012B20
+FUN_02012B20: ; 0x02012B20
+ mov r1, #0x6
+ lsl r1, r1, #0x8
+ ldr r3, _02012B2C ; =FUN_02012988
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_02012B2C: .word FUN_02012988
+
+ thumb_func_start FUN_02012B30
+FUN_02012B30: ; 0x02012B30
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _02012B5E
+ ldr r0, _02012B60 ; =0x00000604
+ ldr r1, [r4, r0]
+ cmp r1, #0x0
+ beq _02012B5E
+ sub r0, r0, #0x4
+ ldr r0, [r4, r0]
+ bl FUN_020129B4
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ bl FUN_02012988
+ add r1, r0, #0x0
+ ldr r0, _02012B64 ; =0x00000794
+ mov r2, #0x3
+ ldr r0, [r4, r0]
+ lsl r2, r2, #0x8
+ bl MIi_CpuClear32
+_02012B5E:
+ pop {r4, pc}
+ .balign 4
+_02012B60: .word 0x00000604
+_02012B64: .word 0x00000794
+
+ thumb_func_start FUN_02012B68
+FUN_02012B68: ; 0x02012B68
+ push {r4, lr}
+ add r4, r0, #0x0
+ beq _02012B80
+ ldr r0, _02012B84 ; =0x00000604
+ ldr r0, [r4, r0]
+ cmp r0, #0x0
+ beq _02012B80
+ bl FUN_02012C90
+ add r0, r4, #0x0
+ bl FUN_02012C98
+_02012B80:
+ pop {r4, pc}
+ nop
+_02012B84: .word 0x00000604
+
+ thumb_func_start FUN_02012B88
+FUN_02012B88: ; 0x02012B88
+ push {r4-r7, lr}
+ sub sp, #0xc
+ mov r4, #0x0
+ add r7, r1, #0x0
+ add r5, r0, #0x0
+ add r6, r4, #0x0
+ str r2, [sp, #0x0]
+ cmp r7, #0x0
+ bls _02012BD6
+ asr r0, r3, #0x1f
+ str r3, [sp, #0x4]
+ str r0, [sp, #0x8]
+_02012BA0:
+ asr r0, r4, #0x4
+ lsl r1, r0, #0x2
+ ldr r0, _02012BDC ; =FX_SinCosTable_
+ ldr r2, [sp, #0x4]
+ ldrsh r0, [r0, r1]
+ ldr r3, [sp, #0x8]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #0x2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02012BE0 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r0, r0, #0xc
+ strh r0, [r5, #0x0]
+ ldr r0, [sp, #0x0]
+ add r6, r6, #0x1
+ add r0, r4, r0
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r5, r5, #0x2
+ cmp r6, r7
+ blo _02012BA0
+_02012BD6:
+ add sp, #0xc
+ pop {r4-r7, pc}
+ nop
+_02012BDC: .word FX_SinCosTable_
+_02012BE0: .word 0x00000000
+
+ thumb_func_start FUN_02012BE4
+FUN_02012BE4: ; 0x02012BE4
+ push {r3-r7, lr}
+ mov r0, #0x6
+ add r6, r1, #0x0
+ lsl r0, r0, #0x8
+ ldr r0, [r6, r0]
+ bl FUN_02012988
+ add r5, r0, #0x0
+ ldr r0, _02012C80 ; =0x00000798
+ mov r1, #0x64
+ ldrsh r0, [r6, r0]
+ bl _s32_div_f
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, _02012C84 ; =0x0000078C
+ ldrb r4, [r6, r0]
+ add r0, r0, #0x1
+ ldrb r0, [r6, r0]
+ cmp r4, r0
+ bgt _02012C4C
+ lsl r0, r4, #0x2
+ add r5, r5, r0
+_02012C12:
+ ldr r2, [r5, #0x0]
+ lsl r0, r2, #0x10
+ asr r7, r0, #0x10
+ lsl r0, r3, #0x1
+ add r1, r6, r0
+ ldr r0, _02012C88 ; =0x0000060C
+ ldrsh r0, [r1, r0]
+ add r0, r7, r0
+ lsl r0, r0, #0x10
+ asr r1, r0, #0x10
+ lsr r0, r2, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r1, #0x10
+ orr r0, r1
+ stmia r5!, {r0}
+ add r0, r3, #0x1
+ mov r1, #0xc0
+ bl _s32_div_f
+ lsl r0, r1, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, _02012C8C ; =0x0000078D
+ add r4, r4, #0x1
+ ldrb r0, [r6, r0]
+ cmp r4, r0
+ ble _02012C12
+_02012C4C:
+ ldr r1, _02012C80 ; =0x00000798
+ add r0, r1, #0x2
+ ldrsh r2, [r6, r1]
+ ldrsh r0, [r6, r0]
+ add r4, r6, r1
+ add r0, r2, r0
+ strh r0, [r4, #0x0]
+ ldrsh r0, [r6, r1]
+ mov r1, #0x4b
+ lsl r1, r1, #0x8
+ cmp r0, r1
+ blt _02012C70
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ bl _s32_div_f
+ strh r1, [r4, #0x0]
+ pop {r3-r7, pc}
+_02012C70:
+ cmp r0, #0x0
+ bge _02012C7C
+ mov r0, #0x0
+ ldrsh r0, [r4, r0]
+ add r0, r0, r1
+ strh r0, [r4, #0x0]
+_02012C7C:
+ pop {r3-r7, pc}
+ nop
+_02012C80: .word 0x00000798
+_02012C84: .word 0x0000078C
+_02012C88: .word 0x0000060C
+_02012C8C: .word 0x0000078D
+
+ thumb_func_start FUN_02012C90
+FUN_02012C90: ; 0x02012C90
+ ldr r3, _02012C94 ; =FUN_020129C8
+ bx r3
+ .balign 4
+_02012C94: .word FUN_020129C8
+
+ thumb_func_start FUN_02012C98
+FUN_02012C98: ; 0x02012C98
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bne _02012CA2
+ bl GF_AssertFail
+_02012CA2:
+ mov r0, #0x6
+ lsl r0, r0, #0x8
+ ldr r0, [r4, r0]
+ bl FUN_0201299C
+ mov r1, #0x3
+ lsl r1, r1, #0x8
+ add r5, r0, #0x0
+ bl DC_FlushRange
+ mov r1, #0x79
+ lsl r1, r1, #0x4
+ ldr r1, [r4, r1]
+ add r0, r5, #0x0
+ mov r2, #0x4
+ mov r3, #0x1
+ bl FUN_020129D8
+ pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s
index b77e441c..5f0f01c6 100644
--- a/arm9/asm/unk_02012CC8.s
+++ b/arm9/asm/unk_02012CC8.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021CED64
+ .extern NNS_G3dGlb
.section .rodata
@@ -96,7 +96,7 @@ _02012D04:
bl AllocFromHeap
add r4, r0, #0x0
bne _02012D14
- bl ErrorHandling
+ bl GF_AssertFail
_02012D14:
add r0, r4, #0x0
mov r1, #0x0
@@ -205,7 +205,7 @@ FUN_02012DE4: ; 0x02012DE4
beq _02012E02
add r0, r5, #0x0
add r0, #0x58
- bl FUN_020AE8CC
+ bl NNS_GfdSetFrmTexVramState
b _02012E22
_02012E02:
mov r0, #0x2
@@ -218,7 +218,7 @@ _02012E0E:
ldr r0, [r4, #0x58]
cmp r0, #0x0
beq _02012E1A
- bl FUN_020AF894
+ bl NNS_GfdFreeLnkTexVram
str r7, [r4, #0x58]
_02012E1A:
add r6, r6, #0x1
@@ -234,7 +234,7 @@ _02012E22:
beq _02012E38
add r0, r5, #0x0
add r0, #0x98
- bl FUN_020AEC7C
+ bl NNS_GfdSetFrmPlttVramState
b _02012E60
_02012E38:
mov r0, #0x8
@@ -249,7 +249,7 @@ _02012E44:
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02012E58
- bl FUN_020AFA80
+ bl NNS_GfdFreeLnkPlttVram
add r0, r4, #0x0
add r0, #0x98
str r7, [r0, #0x0]
@@ -337,7 +337,7 @@ _02012EE4:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012EF0
- bl ErrorHandling
+ bl GF_AssertFail
_02012EF0:
add r0, r4, #0x0
pop {r4, pc}
@@ -363,7 +363,7 @@ _02012F10:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012F1C
- bl ErrorHandling
+ bl GF_AssertFail
_02012F1C:
add r0, r4, #0x0
pop {r4, pc}
@@ -389,7 +389,7 @@ _02012F3C:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012F48
- bl ErrorHandling
+ bl GF_AssertFail
_02012F48:
add r0, r4, #0x0
pop {r4, pc}
@@ -415,7 +415,7 @@ _02012F68:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012F74
- bl ErrorHandling
+ bl GF_AssertFail
_02012F74:
add r0, r4, #0x0
pop {r4, pc}
@@ -441,7 +441,7 @@ _02012F94:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012FA0
- bl ErrorHandling
+ bl GF_AssertFail
_02012FA0:
add r0, r4, #0x0
pop {r4, pc}
@@ -467,7 +467,7 @@ _02012FC0:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012FCC
- bl ErrorHandling
+ bl GF_AssertFail
_02012FCC:
add r0, r4, #0x0
pop {r4, pc}
@@ -493,7 +493,7 @@ _02012FEC:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02012FF8
- bl ErrorHandling
+ bl GF_AssertFail
_02012FF8:
add r0, r4, #0x0
pop {r4, pc}
@@ -519,7 +519,7 @@ _02013018:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02013024
- bl ErrorHandling
+ bl GF_AssertFail
_02013024:
add r0, r4, #0x0
pop {r4, pc}
@@ -545,7 +545,7 @@ _02013044:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02013050
- bl ErrorHandling
+ bl GF_AssertFail
_02013050:
add r0, r4, #0x0
pop {r4, pc}
@@ -571,7 +571,7 @@ _02013070:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _0201307C
- bl ErrorHandling
+ bl GF_AssertFail
_0201307C:
add r0, r4, #0x0
pop {r4, pc}
@@ -597,7 +597,7 @@ _0201309C:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _020130A8
- bl ErrorHandling
+ bl GF_AssertFail
_020130A8:
add r0, r4, #0x0
pop {r4, pc}
@@ -623,7 +623,7 @@ _020130C8:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _020130D4
- bl ErrorHandling
+ bl GF_AssertFail
_020130D4:
add r0, r4, #0x0
pop {r4, pc}
@@ -649,7 +649,7 @@ _020130F4:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02013100
- bl ErrorHandling
+ bl GF_AssertFail
_02013100:
add r0, r4, #0x0
pop {r4, pc}
@@ -675,7 +675,7 @@ _02013120:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _0201312C
- bl ErrorHandling
+ bl GF_AssertFail
_0201312C:
add r0, r4, #0x0
pop {r4, pc}
@@ -701,7 +701,7 @@ _0201314C:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02013158
- bl ErrorHandling
+ bl GF_AssertFail
_02013158:
add r0, r4, #0x0
pop {r4, pc}
@@ -727,7 +727,7 @@ _02013178:
ldr r1, [r1, #0x14]
cmp r0, r1
blo _02013184
- bl ErrorHandling
+ bl GF_AssertFail
_02013184:
add r0, r4, #0x0
pop {r4, pc}
@@ -751,12 +751,12 @@ FUN_02013194: ; 0x02013194
add r7, r3, #0x0
cmp r0, #0x0
bne _020131A8
- bl ErrorHandling
+ bl GF_AssertFail
_020131A8:
ldr r0, [r5, #0x4]
cmp r0, #0x0
beq _020131B2
- bl ErrorHandling
+ bl GF_AssertFail
_020131B2:
add r0, r5, #0x0
add r0, #0xd8
@@ -766,7 +766,7 @@ _020131B2:
beq _020131C8
add r0, r5, #0x0
add r0, #0x58
- bl FUN_020AE918
+ bl NNS_GfdGetFrmTexVramState
b _020131DE
_020131C8:
mov r0, #0x2
@@ -787,7 +787,7 @@ _020131DE:
beq _020131EE
add r0, r5, #0x0
add r0, #0x98
- bl FUN_020AEC98
+ bl NNS_GfdGetFrmPlttVramState
b _02013208
_020131EE:
mov r0, #0x8
@@ -870,13 +870,13 @@ FUN_0201327C: ; 0x0201327C
push {r4, lr}
add r4, r0, #0x0
bne _02013286
- bl ErrorHandling
+ bl GF_AssertFail
_02013286:
ldr r0, _020132B8 ; =UNK_021C4850
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02013292
- bl ErrorHandling
+ bl GF_AssertFail
_02013292:
ldr r0, _020132B8 ; =UNK_021C4850
mov r1, #0x0
@@ -895,7 +895,7 @@ _020132A8:
add r2, r2, #0x4
cmp r1, #0x10
blt _0201329A
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
nop
_020132B8: .word UNK_021C4850
@@ -905,13 +905,13 @@ FUN_020132BC: ; 0x020132BC
push {r4, lr}
add r4, r0, #0x0
bne _020132C6
- bl ErrorHandling
+ bl GF_AssertFail
_020132C6:
ldr r0, _020132FC ; =UNK_021C4850
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _020132D2
- bl ErrorHandling
+ bl GF_AssertFail
_020132D2:
ldr r0, _020132FC ; =UNK_021C4850
mov r1, #0x0
@@ -933,7 +933,7 @@ _020132EE:
add r2, r2, #0x4
cmp r1, #0x10
blt _020132DA
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
.balign 4
_020132FC: .word UNK_021C4850
@@ -952,19 +952,19 @@ FUN_02013300: ; 0x02013300
bl FUN_0201EB8C
bl FUN_0201EBA4
_0201331C:
- bl FUN_020B849C
+ bl NNS_G3dGlbFlushP
ldr r0, [r4, #0x0]
- ldr r1, _02013338 ; =UNK_021CED64
+ ldr r1, _02013338 ; =NNS_G3dGlb + 0x4C
bl FUN_0208AD80
ldr r0, [r4, #0x20]
cmp r0, #0x0
beq _02013332
bl FUN_0201EB98
_02013332:
- bl FUN_020B849C
+ bl NNS_G3dGlbFlushP
pop {r4, pc}
.balign 4
-_02013338: .word UNK_021CED64
+_02013338: .word NNS_G3dGlb + 0x4C
thumb_func_start FUN_0201333C
FUN_0201333C: ; 0x0201333C
@@ -1488,8 +1488,8 @@ _02013688:
strh r0, [r4, #0x0]
pop {r4, pc}
- thumb_func_start FUN_02013690
-FUN_02013690: ; 0x02013690
+ thumb_func_start ListMenuCursorNew
+ListMenuCursorNew: ; 0x02013690
push {r3-r5, lr}
mov r1, #0x8
add r5, r0, #0x0
@@ -1511,12 +1511,12 @@ _020136B2:
_020136B8: .word 0x0001020F
_020136BC: .word UNK_020ED548
- thumb_func_start FUN_020136C0
-FUN_020136C0: ; 0x020136C0
+ thumb_func_start DestroyListMenuCursorObj
+DestroyListMenuCursorObj: ; 0x020136C0
push {r4, lr}
add r4, r0, #0x0
bne _020136CA
- bl ErrorHandling
+ bl GF_AssertFail
_020136CA:
cmp r4, #0x0
beq _020136DE
@@ -1530,14 +1530,14 @@ _020136D8:
_020136DE:
pop {r4, pc}
- thumb_func_start FUN_020136E0
-FUN_020136E0: ; 0x020136E0
+ thumb_func_start ListMenuCursorSetColor
+ListMenuCursorSetColor: ; 0x020136E0
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
cmp r5, #0x0
bne _020136EE
- bl ErrorHandling
+ bl GF_AssertFail
_020136EE:
cmp r5, #0x0
beq _020136F4
@@ -1546,8 +1546,8 @@ _020136F4:
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_020136F8
-FUN_020136F8: ; 0x020136F8
+ thumb_func_start ListMenuUpdateCursorObj
+ListMenuUpdateCursorObj: ; 0x020136F8
push {r4-r6, lr}
sub sp, #0x10
add r6, r0, #0x0
diff --git a/arm9/asm/unk_02013CD4.s b/arm9/asm/unk_02013CD4.s
index 7f278032..8b846678 100644
--- a/arm9/asm/unk_02013CD4.s
+++ b/arm9/asm/unk_02013CD4.s
@@ -1,11 +1,11 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021064C0
- .extern UNK_020FFA38
- .extern UNK_021064B8
- .extern UNK_021064C4
- .extern UNK_021064BC
+ .extern NNS_GfdDefaultFuncAllocPlttVram
+ .extern FX_SinCosTable_
+ .extern NNS_GfdDefaultFuncAllocTexVram
+ .extern NNS_GfdDefaultFuncFreePlttVram
+ .extern NNS_GfdDefaultFuncFreeTexVram
.text
@@ -18,7 +18,7 @@ FUN_02013CD4: ; 0x02013CD4
bl AllocFromHeap
add r4, r0, #0x0
bne _02013CE8
- bl ErrorHandling
+ bl GF_AssertFail
_02013CE8:
ldr r0, [r5, #0x0]
ldr r1, [r5, #0xc]
@@ -47,22 +47,22 @@ FUN_02013D18: ; 0x02013D18
push {r4, lr}
add r4, r0, #0x0
bne _02013D22
- bl ErrorHandling
+ bl GF_AssertFail
_02013D22:
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _02013D2C
- bl ErrorHandling
+ bl GF_AssertFail
_02013D2C:
ldr r0, [r4, #0x8]
cmp r0, #0x0
bne _02013D36
- bl ErrorHandling
+ bl GF_AssertFail
_02013D36:
ldr r0, [r4, #0x10]
cmp r0, #0x0
bne _02013D40
- bl ErrorHandling
+ bl GF_AssertFail
_02013D40:
ldr r0, [r4, #0x0]
bl FreeToHeap
@@ -116,20 +116,20 @@ FUN_02013D98: ; 0x02013D98
bl FUN_02014024
add r4, r0, #0x0
bne _02013DAA
- bl ErrorHandling
+ bl GF_AssertFail
_02013DAA:
ldr r0, [r5, #0x4]
ldr r0, [r0, #0x8]
cmp r0, #0x0
beq _02013DB6
- bl ErrorHandling
+ bl GF_AssertFail
_02013DB6:
ldr r0, [r5, #0x4]
bl FUN_0201407C
str r0, [r4, #0x0]
cmp r0, #0x0
bne _02013DC6
- bl ErrorHandling
+ bl GF_AssertFail
_02013DC6:
ldr r0, [r5, #0x4]
ldr r1, [r4, #0x0]
@@ -141,7 +141,7 @@ _02013DC6:
thumb_func_start FUN_02013DD4
FUN_02013DD4: ; 0x02013DD4
push {r4, lr}
- ldr r1, _02013DE8 ; =UNK_021064BC
+ ldr r1, _02013DE8 ; =NNS_GfdDefaultFuncFreeTexVram
add r4, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r1, #0x0]
@@ -150,7 +150,7 @@ FUN_02013DD4: ; 0x02013DD4
bl FUN_02013F50
pop {r4, pc}
.balign 4
-_02013DE8: .word UNK_021064BC
+_02013DE8: .word NNS_GfdDefaultFuncFreeTexVram
thumb_func_start FUN_02013DEC
FUN_02013DEC: ; 0x02013DEC
@@ -185,14 +185,14 @@ FUN_02013E14: ; 0x02013E14
bl FUN_02014050
add r4, r0, #0x0
bne _02013E26
- bl ErrorHandling
+ bl GF_AssertFail
_02013E26:
ldr r0, [r5, #0x8]
bl FUN_02014090
str r0, [r4, #0x0]
cmp r0, #0x0
bne _02013E36
- bl ErrorHandling
+ bl GF_AssertFail
_02013E36:
ldr r0, [r5, #0x4]
ldr r1, [r4, #0x0]
@@ -204,7 +204,7 @@ _02013E36:
thumb_func_start FUN_02013E44
FUN_02013E44: ; 0x02013E44
push {r4, lr}
- ldr r1, _02013E58 ; =UNK_021064C4
+ ldr r1, _02013E58 ; =NNS_GfdDefaultFuncFreePlttVram
add r4, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r1, #0x0]
@@ -213,7 +213,7 @@ FUN_02013E44: ; 0x02013E44
bl FUN_02013F5C
pop {r4, pc}
.balign 4
-_02013E58: .word UNK_021064C4
+_02013E58: .word NNS_GfdDefaultFuncFreePlttVram
thumb_func_start FUN_02013E5C
FUN_02013E5C: ; 0x02013E5C
@@ -248,7 +248,7 @@ FUN_02013E84: ; 0x02013E84
bl FUN_02013FF8
add r4, r0, #0x0
bne _02013E96
- bl ErrorHandling
+ bl GF_AssertFail
_02013E96:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -273,7 +273,7 @@ FUN_02013EB0: ; 0x02013EB0
add r4, r1, #0x0
cmp r5, #0x0
bne _02013EBE
- bl ErrorHandling
+ bl GF_AssertFail
_02013EBE:
str r4, [r5, #0x20]
pop {r3-r5, pc}
@@ -401,21 +401,21 @@ _02013F4C: .word 0x00007FFF
thumb_func_start FUN_02013F50
FUN_02013F50: ; 0x02013F50
- ldr r3, _02013F58 ; =FUN_020B1A24
+ ldr r3, _02013F58 ; =NNS_G2dInitImageProxy
mov r1, #0x0
stmia r0!, {r1}
bx r3
.balign 4
-_02013F58: .word FUN_020B1A24
+_02013F58: .word NNS_G2dInitImageProxy
thumb_func_start FUN_02013F5C
FUN_02013F5C: ; 0x02013F5C
- ldr r3, _02013F64 ; =FUN_020B19DC
+ ldr r3, _02013F64 ; =NNS_G2dInitImagePaletteProxy
mov r1, #0x0
stmia r0!, {r1}
bx r3
.balign 4
-_02013F64: .word FUN_020B19DC
+_02013F64: .word NNS_G2dInitImagePaletteProxy
thumb_func_start FUN_02013F68
FUN_02013F68: ; 0x02013F68
@@ -426,7 +426,7 @@ FUN_02013F68: ; 0x02013F68
bl AllocFromHeap
add r7, r0, #0x0
bne _02013F7C
- bl ErrorHandling
+ bl GF_AssertFail
_02013F7C:
mov r4, #0x0
cmp r6, #0x0
@@ -454,7 +454,7 @@ FUN_02013F98: ; 0x02013F98
bl AllocFromHeap
add r7, r0, #0x0
bne _02013FAE
- bl ErrorHandling
+ bl GF_AssertFail
_02013FAE:
mov r4, #0x0
cmp r6, #0x0
@@ -481,7 +481,7 @@ FUN_02013FC8: ; 0x02013FC8
bl AllocFromHeap
add r7, r0, #0x0
bne _02013FDE
- bl ErrorHandling
+ bl GF_AssertFail
_02013FDE:
mov r4, #0x0
cmp r6, #0x0
@@ -585,7 +585,7 @@ _02014076:
thumb_func_start FUN_0201407C
FUN_0201407C: ; 0x0201407C
push {r3, lr}
- ldr r3, _0201408C ; =UNK_021064B8
+ ldr r3, _0201408C ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0x0
ldr r0, [r0, #0x10]
ldr r3, [r3, #0x0]
@@ -593,12 +593,12 @@ FUN_0201407C: ; 0x0201407C
blx r3
pop {r3, pc}
.balign 4
-_0201408C: .word UNK_021064B8
+_0201408C: .word NNS_GfdDefaultFuncAllocTexVram
thumb_func_start FUN_02014090
FUN_02014090: ; 0x02014090
push {r3, lr}
- ldr r3, _020140A0 ; =UNK_021064C0
+ ldr r3, _020140A0 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0x0
ldr r3, [r3, #0x0]
lsl r0, r0, #0x5
@@ -606,7 +606,7 @@ FUN_02014090: ; 0x02014090
blx r3
pop {r3, pc}
.balign 4
-_020140A0: .word UNK_021064C0
+_020140A0: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_020140A4
FUN_020140A4: ; 0x020140A4
@@ -615,7 +615,7 @@ FUN_020140A4: ; 0x020140A4
add r3, r2, #0x0
lsr r1, r1, #0xd
mov r2, #0x0
- bl FUN_020B1528
+ bl NNS_G2dLoadImage2DMapping
pop {r3, pc}
thumb_func_start FUN_020140B4
@@ -632,7 +632,7 @@ FUN_020140B4: ; 0x020140B4
str r2, [r5, #0x8]
lsr r1, r1, #0xd
mov r2, #0x0
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
str r4, [r5, #0x8]
pop {r3-r5, pc}
.balign 4
@@ -741,7 +741,7 @@ _02014172:
str r1, [r3, #0x0]
str r2, [r3, #0x0]
ldr r0, [r5, #0x18]
- ldr r1, _0201420C ; =UNK_020FFA38
+ ldr r1, _0201420C ; =FX_SinCosTable_
asr r0, r0, #0x4
lsl r2, r0, #0x1
lsl r0, r2, #0x1
@@ -781,7 +781,7 @@ _02014172:
str r4, [sp, #0x10]
ldrsh r3, [r5, r3]
add r1, r0, #0x0
- bl FUN_020B0250
+ bl NNS_G2dDrawSpriteFast
ldr r0, _02014214 ; =0x04000448
mov r1, #0x1
str r1, [r0, #0x0]
@@ -793,7 +793,7 @@ _020141FC: .word 0x7FFF8000
_02014200: .word 0x00004210
_02014204: .word 0x040004AC
_02014208: .word 0x04000470
-_0201420C: .word UNK_020FFA38
+_0201420C: .word FX_SinCosTable_
_02014210: .word 0x0400046C
_02014214: .word 0x04000448
@@ -868,14 +868,14 @@ _0201424C:
ldr r0, [r5, #0x4]
mov r1, #0x0
add r0, r0, #0x4
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F14
ldr r0, [r5, #0x8]
mov r1, #0x0
add r0, r0, #0x4
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F18
diff --git a/arm9/asm/unk_02014590.s b/arm9/asm/unk_02014590.s
index ae4eadbd..189206a3 100644
--- a/arm9/asm/unk_02014590.s
+++ b/arm9/asm/unk_02014590.s
@@ -129,7 +129,7 @@ FUN_0201466C: ; 0x0201466C
lsr r0, r0, #0x1c
cmp r0, #0x1
beq _02014680
- bl ErrorHandling
+ bl GF_AssertFail
_02014680:
add r0, r4, #0x0
add r0, #0x9a
@@ -471,7 +471,7 @@ _020148EA:
ldr r0, [r5, #0x8]
ldr r1, [r7, #0xc]
add r3, r6, #0x0
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r4, #0x8]
ldr r0, [r4, #0x18]
ldr r1, [r5, #0x1c]
@@ -672,7 +672,7 @@ _02014A58:
add r0, r7, #0x0
mov r2, #0x1
add r3, r4, #0x4
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [r4, #0x8]
str r5, [r4, #0x0]
ldr r0, [sp, #0x20]
@@ -710,7 +710,7 @@ _02014AA6:
ldr r3, [sp, #0x1c]
add r0, r7, #0x0
add r2, r4, #0x0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [r4, #0x4]
str r5, [r4, #0x8]
ldr r0, [sp, #0x18]
diff --git a/arm9/asm/unk_02014BF4.s b/arm9/asm/unk_02014BF4.s
index 20e8fa45..566b8514 100644
--- a/arm9/asm/unk_02014BF4.s
+++ b/arm9/asm/unk_02014BF4.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_020FFA38
+ .extern FX_SinCosTable_
.section .rodata
@@ -116,7 +116,7 @@ FUN_02014C3C: ; 0x02014C3C
add r4, r0, #0x0
cmp r4, #0x19
blo _02014C48
- bl ErrorHandling
+ bl GF_AssertFail
_02014C48:
ldr r0, _02014C50 ; =UNK_020ED64C
ldrb r0, [r0, r4]
@@ -140,7 +140,7 @@ FUN_02014C54: ; 0x02014C54
str r2, [sp, #0x0]
cmp r0, r1
blo _02014C74
- bl ErrorHandling
+ bl GF_AssertFail
_02014C74:
ldr r0, [sp, #0x4]
mov r1, #0x1d
@@ -152,7 +152,7 @@ _02014C74:
ldr r0, [r0, #0x10]
cmp r0, #0x0
beq _02014C8C
- bl ErrorHandling
+ bl GF_AssertFail
_02014C8C:
ldr r0, [r5, #0x0]
mov r2, #0x1d
@@ -280,7 +280,7 @@ FUN_02014D7C: ; 0x02014D7C
add r4, r1, #0x0
cmp r4, r0
blo _02014D8C
- bl ErrorHandling
+ bl GF_AssertFail
_02014D8C:
mov r0, #0x1d
lsl r0, r0, #0x4
@@ -440,7 +440,7 @@ _02014EA0:
ldr r0, [r0, #0x0]
cmp r0, #0x22
blo _02014EB2
- bl ErrorHandling
+ bl GF_AssertFail
_02014EB2:
ldr r1, [r5, #0xc]
add r0, r5, #0x0
@@ -472,7 +472,7 @@ _02014EE6:
lsl r0, r0, #0x8
cmp r1, r0
blt _02014EA0
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x1
str r0, [r5, #0x1c]
_02014EF8:
@@ -489,7 +489,7 @@ FUN_02014F08: ; 0x02014F08
ldr r4, [r0, r1]
cmp r2, #0x1
beq _02014F16
- bl ErrorHandling
+ bl GF_AssertFail
_02014F16:
add r0, r4, #0x0
pop {r4, pc}
@@ -546,7 +546,7 @@ _02014F68:
lsr r3, r1, #0x18
cmp r3, #0x4
blo _02014F3E
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
nop
@@ -589,7 +589,7 @@ FUN_02014FA8: ; 0x02014FA8
ldrb r0, [r4, #0x0]
cmp r0, #0x8
blo _02014FC4
- bl ErrorHandling
+ bl GF_AssertFail
_02014FC4:
pop {r4, pc}
.balign 4
@@ -658,7 +658,7 @@ _0201501C:
str r0, [r6, #0x0]
pop {r3-r6, pc}
_02015048:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4
pop {r3-r6, pc}
@@ -700,7 +700,7 @@ _02015082:
str r0, [r4, #0x0]
b _020150A2
_0201509E:
- bl ErrorHandling
+ bl GF_AssertFail
_020150A2:
add r0, sp, #0x0
ldrb r0, [r0, #0x0]
@@ -727,7 +727,7 @@ _020150B6:
str r0, [r6, #0x0]
pop {r3-r6, pc}
_020150D4:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4
pop {r3-r6, pc}
@@ -772,7 +772,7 @@ _02015112:
str r0, [r6, #0x0]
b _02015132
_0201512E:
- bl ErrorHandling
+ bl GF_AssertFail
_02015132:
add r0, r5, #0x0
add r1, sp, #0x0
@@ -800,7 +800,7 @@ _0201514C:
str r0, [sp, #0x4]
b _0201516C
_02015168:
- bl ErrorHandling
+ bl GF_AssertFail
_0201516C:
ldr r0, [sp, #0x4]
add r0, r7, r0
@@ -1071,7 +1071,7 @@ _02015334:
str r0, [sp, #0x8]
b _02015362
_0201535E:
- bl ErrorHandling
+ bl GF_AssertFail
_02015362:
add r1, sp, #0x0
add r0, r5, #0x0
@@ -1081,7 +1081,7 @@ _02015362:
ldrb r0, [r0, #0x1]
cmp r0, #0x11
bls _02015378
- bl ErrorHandling
+ bl GF_AssertFail
_02015378:
add r0, sp, #0xc
add r1, sp, #0x8
@@ -1119,7 +1119,7 @@ _020153A6:
str r0, [sp, #0x4]
b _020153CA
_020153C6:
- bl ErrorHandling
+ bl GF_AssertFail
_020153CA:
add r0, sp, #0x0
ldrb r1, [r0, #0x1]
@@ -1160,7 +1160,7 @@ FUN_02015404: ; 0x02015404
ldr r0, [r4, #0x50]
cmp r0, #0x0
beq _02015412
- bl ErrorHandling
+ bl GF_AssertFail
_02015412:
ldr r0, [r4, #0xc]
add r0, r0, #0x4
@@ -1269,7 +1269,7 @@ _020154C4:
str r0, [sp, #0x4]
b _020154E4
_020154E0:
- bl ErrorHandling
+ bl GF_AssertFail
_020154E4:
add r0, r4, #0x0
add r1, sp, #0x0
@@ -1294,7 +1294,7 @@ _02015502:
add sp, #0xc
pop {r3-r4, pc}
_02015514:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r3-r4, pc}
@@ -1311,7 +1311,7 @@ FUN_0201551C: ; 0x0201551C
ldr r2, [sp, #0x4]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _0201554C ; =UNK_020FFA38
+ ldr r0, _0201554C ; =FX_SinCosTable_
ldrsh r0, [r0, r1]
mul r0, r2
asr r1, r0, #0xc
@@ -1323,7 +1323,7 @@ FUN_0201551C: ; 0x0201551C
add sp, #0xc
pop {r3-r4, pc}
nop
-_0201554C: .word UNK_020FFA38
+_0201554C: .word FX_SinCosTable_
thumb_func_start FUN_02015550
FUN_02015550: ; 0x02015550
@@ -1340,7 +1340,7 @@ FUN_02015550: ; 0x02015550
lsl r1, r1, #0x1
add r1, r1, #0x1
lsl r2, r1, #0x1
- ldr r1, _02015584 ; =UNK_020FFA38
+ ldr r1, _02015584 ; =FX_SinCosTable_
ldrsh r1, [r1, r2]
mul r1, r0
add r0, sp, #0x0
@@ -1352,7 +1352,7 @@ FUN_02015550: ; 0x02015550
add sp, #0xc
pop {r3-r4, pc}
nop
-_02015584: .word UNK_020FFA38
+_02015584: .word FX_SinCosTable_
thumb_func_start FUN_02015588
FUN_02015588: ; 0x02015588
@@ -1387,7 +1387,7 @@ _020155B4:
str r0, [r4, #0x64]
pop {r3-r4, pc}
_020155C6:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4
pop {r3-r4, pc}
.balign 4
@@ -1429,7 +1429,7 @@ _02015600:
str r0, [r4, #0x64]
pop {r3-r4, pc}
_02015616:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4
pop {r3-r4, pc}
.balign 4
@@ -1486,7 +1486,7 @@ _0201566E:
add r4, #0x78
b _0201567C
_02015678:
- bl ErrorHandling
+ bl GF_AssertFail
_0201567C:
add r1, sp, #0x0
add r0, r5, #0x0
@@ -1515,7 +1515,7 @@ _02015698:
str r0, [sp, #0x4]
b _020156B8
_020156B4:
- bl ErrorHandling
+ bl GF_AssertFail
_020156B8:
add r0, r5, #0x0
add r1, sp, #0x0
@@ -1538,7 +1538,7 @@ _020156D0:
str r0, [r4, #0x0]
pop {r3-r5, pc}
_020156E0:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x8
pop {r3-r5, pc}
@@ -1626,7 +1626,7 @@ _02015778:
_0201578A:
cmp r0, #0x1c
beq _02015792
- bl ErrorHandling
+ bl GF_AssertFail
_02015792:
pop {r4, pc}
.balign 4
@@ -1673,7 +1673,7 @@ _020157D2:
str r0, [r4, #0x6c]
pop {r3-r4, pc}
_020157E2:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4
pop {r3-r4, pc}
.balign 4
@@ -1771,7 +1771,7 @@ _02015886:
_02015890:
cmp r1, #0x0
bne _02015898
- bl ErrorHandling
+ bl GF_AssertFail
_02015898:
pop {r4, pc}
nop
@@ -1842,7 +1842,7 @@ _020158F6:
str r0, [r3, #0x0]
pop {r3, pc}
_02015904:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4
@@ -1915,7 +1915,7 @@ _02015972:
str r0, [r1, #0x30]
pop {r3, pc}
_02015984:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4
@@ -2032,7 +2032,7 @@ _02015A5C: ; jump table (using 16-bit offset)
_02015A64:
asr r0, r1, #0x4
lsl r1, r0, #0x2
- ldr r0, _02015AE8 ; =UNK_020FFA38
+ ldr r0, _02015AE8 ; =FX_SinCosTable_
ldr r2, [r4, #0xc]
ldrsh r0, [r0, r1]
mul r0, r2
@@ -2045,7 +2045,7 @@ _02015A78:
lsl r1, r1, #0x1
add r1, r1, #0x1
lsl r2, r1, #0x1
- ldr r1, _02015AE8 ; =UNK_020FFA38
+ ldr r1, _02015AE8 ; =FX_SinCosTable_
ldr r0, [r4, #0xc]
ldrsh r1, [r1, r2]
mul r1, r0
@@ -2056,7 +2056,7 @@ _02015A78:
_02015A90:
asr r0, r1, #0x4
lsl r1, r0, #0x2
- ldr r0, _02015AE8 ; =UNK_020FFA38
+ ldr r0, _02015AE8 ; =FX_SinCosTable_
ldr r2, [r4, #0xc]
ldrsh r0, [r0, r1]
mul r0, r2
@@ -2070,7 +2070,7 @@ _02015AA6:
lsl r1, r1, #0x1
add r1, r1, #0x1
lsl r2, r1, #0x1
- ldr r1, _02015AE8 ; =UNK_020FFA38
+ ldr r1, _02015AE8 ; =FX_SinCosTable_
ldr r0, [r4, #0xc]
ldrsh r1, [r1, r2]
mul r1, r0
@@ -2080,7 +2080,7 @@ _02015AA6:
str r1, [r0, #0x0]
b _02015AC4
_02015AC0:
- bl ErrorHandling
+ bl GF_AssertFail
_02015AC4:
add r0, r4, #0x0
add r0, #0x2c
@@ -2101,7 +2101,7 @@ _02015AC4:
_02015AE6:
pop {r4, pc}
.balign 4
-_02015AE8: .word UNK_020FFA38
+_02015AE8: .word FX_SinCosTable_
thumb_func_start FUN_02015AEC
FUN_02015AEC: ; 0x02015AEC
@@ -2135,7 +2135,7 @@ _02015B1A: ; jump table (using 16-bit offset)
_02015B22:
asr r0, r1, #0x4
lsl r1, r0, #0x2
- ldr r0, _02015BA8 ; =UNK_020FFA38
+ ldr r0, _02015BA8 ; =FX_SinCosTable_
ldr r2, [r4, #0xc]
ldrsh r0, [r0, r1]
mul r0, r2
@@ -2148,7 +2148,7 @@ _02015B36:
lsl r1, r1, #0x1
add r1, r1, #0x1
lsl r2, r1, #0x1
- ldr r1, _02015BA8 ; =UNK_020FFA38
+ ldr r1, _02015BA8 ; =FX_SinCosTable_
ldr r0, [r4, #0xc]
ldrsh r1, [r1, r2]
mul r1, r0
@@ -2159,7 +2159,7 @@ _02015B36:
_02015B4E:
asr r0, r1, #0x4
lsl r1, r0, #0x2
- ldr r0, _02015BA8 ; =UNK_020FFA38
+ ldr r0, _02015BA8 ; =FX_SinCosTable_
ldr r2, [r4, #0xc]
ldrsh r0, [r0, r1]
mul r0, r2
@@ -2173,7 +2173,7 @@ _02015B64:
lsl r1, r1, #0x1
add r1, r1, #0x1
lsl r2, r1, #0x1
- ldr r1, _02015BA8 ; =UNK_020FFA38
+ ldr r1, _02015BA8 ; =FX_SinCosTable_
ldr r0, [r4, #0xc]
ldrsh r1, [r1, r2]
mul r1, r0
@@ -2183,7 +2183,7 @@ _02015B64:
str r1, [r0, #0x0]
b _02015B82
_02015B7E:
- bl ErrorHandling
+ bl GF_AssertFail
_02015B82:
add r0, r4, #0x0
add r0, #0x2c
@@ -2204,7 +2204,7 @@ _02015B82:
_02015BA4:
pop {r4, pc}
nop
-_02015BA8: .word UNK_020FFA38
+_02015BA8: .word FX_SinCosTable_
thumb_func_start FUN_02015BAC
FUN_02015BAC: ; 0x02015BAC
@@ -2340,7 +2340,7 @@ _02015C90:
str r0, [r4, #0x0]
b _02015CA4
_02015CA0:
- bl ErrorHandling
+ bl GF_AssertFail
_02015CA4:
add r0, r4, #0x0
add r0, #0x2c
diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s
deleted file mode 100644
index 3c92650d..00000000
--- a/arm9/asm/unk_02016B94.s
+++ /dev/null
@@ -1,9653 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020EDB30
-UNK_020EDB30: ; 0x020EDB30
- .byte 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00
-
- .global UNK_020EDB38
-UNK_020EDB38: ; 0x020EDB38
- .word FUN_020192D4
- .word FUN_02019358
- .word FUN_020192D4
-
- .global UNK_020EDB44
-UNK_020EDB44: ; 0x020EDB44
- .word FUN_020195D0
- .word FUN_0201960C
- .word FUN_020195D0
-
- .global UNK_020EDB50
-UNK_020EDB50: ; 0x020EDB50
- .word FUN_020195A8
- .word FUN_020195E4
- .word FUN_020195A8
-
- .global UNK_020EDB5C
-UNK_020EDB5C: ; 0x020EDB5C
- .word FUN_020194C8
- .word FUN_0201951C
- .word FUN_020194C8
-
- .global UNK_020EDB68
-UNK_020EDB68: ; 0x020EDB68
- .word FUN_0201949C
- .word FUN_020194E0
- .word FUN_0201949C
-
- .global UNK_020EDB74
-UNK_020EDB74: ; 0x020EDB74
- .word FUN_020193B4
- .word FUN_02019444
- .word FUN_020193B4
-
- .text
-
- thumb_func_start FUN_02016B94
-FUN_02016B94: ; 0x02016B94
- push {r3-r5, lr}
- mov r1, #0x5a
- lsl r1, r1, #0x2
- add r5, r0, #0x0
- bl AllocFromHeap
- mov r2, #0x5a
- mov r1, #0x0
- lsl r2, r2, #0x2
- add r4, r0, #0x0
- bl memset
- str r5, [r4, #0x0]
- mov r0, #0x0
- strh r0, [r4, #0x4]
- strh r0, [r4, #0x6]
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02016BB8
-FUN_02016BB8: ; 0x02016BB8
- ldr r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_02016BBC
-FUN_02016BBC: ; 0x02016BBC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- ldr r1, [r4, #0x4]
- ldr r2, [r4, #0xc]
- bl GX_SetGraphicsMode
- ldr r0, [r4, #0x8]
- bl GXS_SetGraphicsMode
- mov r2, #0x1
- lsl r2, r2, #0x1a
- ldr r1, [r2, #0x0]
- ldr r0, _02016BF0 ; =0xC7FFFFFF
- and r1, r0
- str r1, [r2, #0x0]
- ldr r1, [r2, #0x0]
- asr r0, r0, #0x3
- and r0, r1
- str r0, [r2, #0x0]
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- pop {r4, pc}
- nop
-_02016BF0: .word 0xC7FFFFFF
-
- thumb_func_start FUN_02016BF4
-FUN_02016BF4: ; 0x02016BF4
- push {r3, lr}
- add r2, r0, #0x0
- cmp r1, #0x0
- bne _02016C0C
- ldr r0, [r2, #0x0]
- ldr r1, [r2, #0x4]
- ldr r2, [r2, #0xc]
- bl GX_SetGraphicsMode
- bl GX_DisableEngineALayers
- pop {r3, pc}
-_02016C0C:
- ldr r0, [r2, #0x8]
- bl GXS_SetGraphicsMode
- bl GX_DisableEngineBLayers
- pop {r3, pc}
-
- thumb_func_start FUN_02016C18
-FUN_02016C18: ; 0x02016C18
- push {r3-r7, lr}
- sub sp, #0x18
- str r1, [sp, #0x4]
- str r3, [sp, #0x8]
- add r4, r2, #0x0
- str r0, [sp, #0x0]
- ldrb r0, [r4, #0x10]
- ldr r1, [sp, #0x8]
- bl FUN_020177DC
- add r5, r0, #0x0
- ldr r0, [sp, #0x4]
- cmp r0, #0x7
- bls _02016C36
- b _0201705A
-_02016C36:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02016C42: ; jump table (using 16-bit offset)
- .short _02016C52 - _02016C42 - 2; case 0
- .short _02016CAA - _02016C42 - 2; case 1
- .short _02016D02 - _02016C42 - 2; case 2
- .short _02016DA4 - _02016C42 - 2; case 3
- .short _02016E46 - _02016C42 - 2; case 4
- .short _02016E9E - _02016C42 - 2; case 5
- .short _02016EF6 - _02016C42 - 2; case 6
- .short _02016F98 - _02016C42 - 2; case 7
-_02016C52:
- mov r0, #0x1
- add r1, r0, #0x0
- bl GX_EngineAToggleLayers
- ldrb r3, [r4, #0x14]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x11]
- ldrb r2, [r4, #0x13]
- lsl r6, r3, #0xd
- lsl r0, r0, #0x7
- lsl r3, r2, #0x2
- str r0, [sp, #0xc]
- ldr r2, _02016FB4 ; =0x04000008
- lsl r7, r1, #0x8
- ldrh r1, [r2, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r1, r0
- ldr r0, [sp, #0xc]
- orr r0, r1
- orr r0, r7
- orr r0, r3
- orr r0, r6
- strh r0, [r2, #0x0]
- ldrh r1, [r2, #0x0]
- mov r0, #0x3
- bic r1, r0
- ldrb r0, [r4, #0x15]
- orr r0, r1
- strh r0, [r2, #0x0]
- ldr r0, [r4, #0x18]
- cmp r0, #0x0
- beq _02016CA0
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- orr r0, r1
- strh r0, [r2, #0x0]
- b _0201705A
-_02016CA0:
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- bic r1, r0
- strh r1, [r2, #0x0]
- b _0201705A
-_02016CAA:
- mov r0, #0x2
- mov r1, #0x1
- bl GX_EngineAToggleLayers
- ldrb r3, [r4, #0x14]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x11]
- ldrb r2, [r4, #0x13]
- lsl r6, r3, #0xd
- lsl r0, r0, #0x7
- lsl r3, r2, #0x2
- str r0, [sp, #0x10]
- ldr r2, _02016FB8 ; =0x0400000A
- lsl r7, r1, #0x8
- ldrh r1, [r2, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r1, r0
- ldr r0, [sp, #0x10]
- orr r0, r1
- orr r0, r7
- orr r0, r3
- orr r0, r6
- strh r0, [r2, #0x0]
- ldrh r1, [r2, #0x0]
- mov r0, #0x3
- bic r1, r0
- ldrb r0, [r4, #0x15]
- orr r0, r1
- strh r0, [r2, #0x0]
- ldr r0, [r4, #0x18]
- cmp r0, #0x0
- beq _02016CF8
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- orr r0, r1
- strh r0, [r2, #0x0]
- b _0201705A
-_02016CF8:
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- bic r1, r0
- strh r1, [r2, #0x0]
- b _0201705A
-_02016D02:
- mov r0, #0x4
- mov r1, #0x1
- bl GX_EngineAToggleLayers
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- beq _02016D18
- cmp r0, #0x1
- beq _02016D3A
- cmp r0, #0x2
- beq _02016D5C
-_02016D18:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FBC ; =0x0400000C
- ldrb r2, [r4, #0x13]
- lsl r3, r1, #0x8
- ldrb r0, [r4, #0x11]
- lsl r6, r2, #0x2
- ldrh r1, [r7, #0x0]
- lsl r2, r0, #0x7
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02016D7C
-_02016D3A:
- ldrb r2, [r4, #0x13]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x16]
- lsl r3, r2, #0x2
- ldr r7, _02016FBC ; =0x0400000C
- lsl r2, r1, #0x8
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02016D7C
-_02016D5C:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FBC ; =0x0400000C
- ldrb r0, [r4, #0x16]
- lsl r3, r1, #0x8
- ldrb r2, [r4, #0x13]
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- lsl r2, r2, #0x2
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
-_02016D7C:
- ldr r0, _02016FBC ; =0x0400000C
- mov r1, #0x3
- ldrh r2, [r0, #0x0]
- bic r2, r1
- ldrb r1, [r4, #0x15]
- orr r1, r2
- strh r1, [r0, #0x0]
- ldr r1, [r4, #0x18]
- cmp r1, #0x0
- beq _02016D9A
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- orr r1, r2
- strh r1, [r0, #0x0]
- b _0201705A
-_02016D9A:
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- bic r2, r1
- strh r2, [r0, #0x0]
- b _0201705A
-_02016DA4:
- mov r0, #0x8
- mov r1, #0x1
- bl GX_EngineAToggleLayers
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- beq _02016DBA
- cmp r0, #0x1
- beq _02016DDC
- cmp r0, #0x2
- beq _02016DFE
-_02016DBA:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FC0 ; =0x0400000E
- ldrb r2, [r4, #0x13]
- lsl r3, r1, #0x8
- ldrb r0, [r4, #0x11]
- lsl r6, r2, #0x2
- ldrh r1, [r7, #0x0]
- lsl r2, r0, #0x7
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02016E1E
-_02016DDC:
- ldrb r2, [r4, #0x13]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x16]
- lsl r3, r2, #0x2
- ldr r7, _02016FC0 ; =0x0400000E
- lsl r2, r1, #0x8
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02016E1E
-_02016DFE:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FC0 ; =0x0400000E
- ldrb r0, [r4, #0x16]
- lsl r3, r1, #0x8
- ldrb r2, [r4, #0x13]
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- lsl r2, r2, #0x2
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
-_02016E1E:
- ldr r0, _02016FC0 ; =0x0400000E
- mov r1, #0x3
- ldrh r2, [r0, #0x0]
- bic r2, r1
- ldrb r1, [r4, #0x15]
- orr r1, r2
- strh r1, [r0, #0x0]
- ldr r1, [r4, #0x18]
- cmp r1, #0x0
- beq _02016E3C
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- orr r1, r2
- strh r1, [r0, #0x0]
- b _0201705A
-_02016E3C:
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- bic r2, r1
- strh r2, [r0, #0x0]
- b _0201705A
-_02016E46:
- mov r0, #0x1
- add r1, r0, #0x0
- bl GX_EngineBToggleLayers
- ldrb r3, [r4, #0x14]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x11]
- ldrb r2, [r4, #0x13]
- lsl r6, r3, #0xd
- lsl r0, r0, #0x7
- lsl r3, r2, #0x2
- str r0, [sp, #0x14]
- ldr r2, _02016FC4 ; =0x04001008
- lsl r7, r1, #0x8
- ldrh r1, [r2, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r1, r0
- ldr r0, [sp, #0x14]
- orr r0, r1
- orr r0, r7
- orr r0, r3
- orr r0, r6
- strh r0, [r2, #0x0]
- ldrh r1, [r2, #0x0]
- mov r0, #0x3
- bic r1, r0
- ldrb r0, [r4, #0x15]
- orr r0, r1
- strh r0, [r2, #0x0]
- ldr r0, [r4, #0x18]
- cmp r0, #0x0
- beq _02016E94
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- orr r0, r1
- strh r0, [r2, #0x0]
- b _0201705A
-_02016E94:
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- bic r1, r0
- strh r1, [r2, #0x0]
- b _0201705A
-_02016E9E:
- mov r0, #0x2
- mov r1, #0x1
- bl GX_EngineBToggleLayers
- ldrb r2, [r4, #0x13]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x11]
- lsl r6, r2, #0x2
- ldrb r3, [r4, #0x14]
- lsl r0, r0, #0x7
- mov r12, r0
- ldr r2, _02016FC8 ; =0x0400100A
- lsl r7, r1, #0x8
- ldrh r1, [r2, #0x0]
- mov r0, #0x43
- lsl r3, r3, #0xd
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- mov r1, r12
- orr r0, r1
- orr r0, r7
- orr r0, r6
- orr r0, r3
- strh r0, [r2, #0x0]
- ldrh r1, [r2, #0x0]
- mov r0, #0x3
- bic r1, r0
- ldrb r0, [r4, #0x15]
- orr r0, r1
- strh r0, [r2, #0x0]
- ldr r0, [r4, #0x18]
- cmp r0, #0x0
- beq _02016EEC
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- orr r0, r1
- strh r0, [r2, #0x0]
- b _0201705A
-_02016EEC:
- ldrh r1, [r2, #0x0]
- mov r0, #0x40
- bic r1, r0
- strh r1, [r2, #0x0]
- b _0201705A
-_02016EF6:
- mov r0, #0x4
- mov r1, #0x1
- bl GX_EngineBToggleLayers
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- beq _02016F0C
- cmp r0, #0x1
- beq _02016F2E
- cmp r0, #0x2
- beq _02016F50
-_02016F0C:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FCC ; =0x0400100C
- ldrb r2, [r4, #0x13]
- lsl r3, r1, #0x8
- ldrb r0, [r4, #0x11]
- lsl r6, r2, #0x2
- ldrh r1, [r7, #0x0]
- lsl r2, r0, #0x7
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02016F70
-_02016F2E:
- ldrb r2, [r4, #0x13]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x16]
- lsl r3, r2, #0x2
- ldr r7, _02016FCC ; =0x0400100C
- lsl r2, r1, #0x8
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02016F70
-_02016F50:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FCC ; =0x0400100C
- ldrb r0, [r4, #0x16]
- lsl r3, r1, #0x8
- ldrb r2, [r4, #0x13]
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- lsl r2, r2, #0x2
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
-_02016F70:
- ldr r0, _02016FCC ; =0x0400100C
- mov r1, #0x3
- ldrh r2, [r0, #0x0]
- bic r2, r1
- ldrb r1, [r4, #0x15]
- orr r1, r2
- strh r1, [r0, #0x0]
- ldr r1, [r4, #0x18]
- cmp r1, #0x0
- beq _02016F8E
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- orr r1, r2
- strh r1, [r0, #0x0]
- b _0201705A
-_02016F8E:
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- bic r2, r1
- strh r2, [r0, #0x0]
- b _0201705A
-_02016F98:
- mov r0, #0x8
- mov r1, #0x1
- bl GX_EngineBToggleLayers
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- beq _02016FAE
- cmp r0, #0x1
- beq _02016FF2
- cmp r0, #0x2
- beq _02017014
-_02016FAE:
- ldrb r1, [r4, #0x12]
- ldr r7, _02016FD0 ; =0x0400100E
- b _02016FD4
- .balign 4
-_02016FB4: .word 0x04000008
-_02016FB8: .word 0x0400000A
-_02016FBC: .word 0x0400000C
-_02016FC0: .word 0x0400000E
-_02016FC4: .word 0x04001008
-_02016FC8: .word 0x0400100A
-_02016FCC: .word 0x0400100C
-_02016FD0: .word 0x0400100E
-_02016FD4:
- ldrb r2, [r4, #0x13]
- lsl r3, r1, #0x8
- ldrb r0, [r4, #0x11]
- lsl r6, r2, #0x2
- ldrh r1, [r7, #0x0]
- lsl r2, r0, #0x7
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02017034
-_02016FF2:
- ldrb r2, [r4, #0x13]
- ldrb r1, [r4, #0x12]
- ldrb r0, [r4, #0x16]
- lsl r3, r2, #0x2
- ldr r7, _020170F0 ; =0x0400100E
- lsl r2, r1, #0x8
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
- b _02017034
-_02017014:
- ldrb r1, [r4, #0x12]
- ldr r7, _020170F0 ; =0x0400100E
- ldrb r0, [r4, #0x16]
- lsl r3, r1, #0x8
- ldrb r2, [r4, #0x13]
- lsl r6, r0, #0xd
- ldrh r1, [r7, #0x0]
- mov r0, #0x43
- lsl r2, r2, #0x2
- and r0, r1
- lsl r1, r5, #0xe
- orr r0, r1
- orr r0, r2
- orr r0, r3
- orr r0, r6
- strh r0, [r7, #0x0]
-_02017034:
- ldr r0, _020170F0 ; =0x0400100E
- mov r1, #0x3
- ldrh r2, [r0, #0x0]
- bic r2, r1
- ldrb r1, [r4, #0x15]
- orr r1, r2
- strh r1, [r0, #0x0]
- ldr r1, [r4, #0x18]
- cmp r1, #0x0
- beq _02017052
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- orr r1, r2
- strh r1, [r0, #0x0]
- b _0201705A
-_02017052:
- ldrh r2, [r0, #0x0]
- mov r1, #0x40
- bic r2, r1
- strh r2, [r0, #0x0]
-_0201705A:
- ldr r0, [sp, #0x4]
- mov r1, #0x2c
- add r5, r0, #0x0
- ldr r0, [sp, #0x0]
- mul r5, r1
- add r2, r0, r5
- mov r3, #0x0
- mov r0, #0x1
- strh r3, [r2, #0x20]
- lsl r0, r0, #0xc
- str r0, [r2, #0x24]
- str r0, [r2, #0x28]
- str r3, [r2, #0x2c]
- str r3, [r2, #0x30]
- ldr r1, [r4, #0x8]
- cmp r1, #0x0
- beq _020170A2
- ldr r0, [sp, #0x0]
- ldr r6, [sp, #0x0]
- ldr r0, [r0, #0x0]
- add r6, #0x8
- bl AllocFromHeap
- str r0, [r6, r5]
- ldr r1, [r6, r5]
- ldr r2, [r4, #0x8]
- mov r0, #0x0
- bl MIi_CpuClear16
- ldr r0, [sp, #0x0]
- ldr r2, [r4, #0x8]
- add r1, r0, r5
- str r2, [r1, #0xc]
- ldr r0, [r4, #0xc]
- str r0, [r1, #0x10]
- b _020170A8
-_020170A2:
- str r3, [r2, #0x8]
- str r3, [r2, #0xc]
- str r3, [r2, #0x10]
-_020170A8:
- ldr r0, [sp, #0x0]
- ldrb r1, [r4, #0x10]
- add r0, r0, r5
- strb r1, [r0, #0x1d]
- ldr r1, [sp, #0x8]
- strb r1, [r0, #0x1c]
- ldrb r1, [r4, #0x11]
- strb r1, [r0, #0x1e]
- ldr r1, [sp, #0x8]
- cmp r1, #0x0
- bne _020170CA
- ldrb r1, [r4, #0x11]
- cmp r1, #0x0
- bne _020170CA
- mov r1, #0x20
- strb r1, [r0, #0x1f]
- b _020170D2
-_020170CA:
- ldr r0, [sp, #0x0]
- mov r1, #0x40
- add r0, r0, r5
- strb r1, [r0, #0x1f]
-_020170D2:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- ldr r3, [r4, #0x0]
- mov r2, #0x0
- bl FUN_020179E0
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- ldr r3, [r4, #0x4]
- mov r2, #0x3
- bl FUN_020179E0
- add sp, #0x18
- pop {r3-r7, pc}
- nop
-_020170F0: .word 0x0400100E
-
- thumb_func_start FUN_020170F4
-FUN_020170F4: ; 0x020170F4
- push {r3-r7, lr}
- sub sp, #0x20
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r1, r2, #0x0
- add r0, r3, #0x0
- cmp r1, #0x0
- bne _0201710C
- mov r2, #0x2c
- mul r2, r4
- add r2, r5, r2
- strb r0, [r2, #0x1e]
-_0201710C:
- cmp r4, #0x7
- bls _02017112
- b _020177C4
-_02017112:
- add r2, r4, r4
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_0201711E: ; jump table (using 16-bit offset)
- .short _0201712E - _0201711E - 2; case 0
- .short _0201719A - _0201711E - 2; case 1
- .short _02017206 - _0201711E - 2; case 2
- .short _0201733A - _0201711E - 2; case 3
- .short _0201746E - _0201711E - 2; case 4
- .short _020174F4 - _0201711E - 2; case 5
- .short _02017560 - _0201711E - 2; case 6
- .short _02017694 - _0201711E - 2; case 7
-_0201712E:
- ldr r2, _02017480 ; =0x04000008
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x1e]
- bne _0201714A
- ldrh r3, [r2, #0x1e]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x1e]
- b _0201715C
-_0201714A:
- cmp r1, #0x2
- bne _0201715C
- ldrh r3, [r2, #0x1e]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x1e]
-_0201715C:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x1e]
- add sp, #0x20
- lsl r0, r3, #0x12
- lsr r6, r0, #0x1f
- lsl r0, r3, #0x1a
- lsr r2, r0, #0x1c
- lsl r0, r3, #0x13
- lsr r1, r0, #0x1b
- mov r0, #0x2c
- mul r0, r4
- add r0, r5, r0
- lsl r3, r3, #0x10
- lsr r5, r3, #0x1e
- lsl r3, r2, #0x2
- ldrb r0, [r0, #0x1e]
- lsl r2, r1, #0x8
- lsl r4, r6, #0xd
- lsl r1, r0, #0x7
- ldr r0, _02017480 ; =0x04000008
- mov r6, #0x43
- ldrh r7, [r0, #0x0]
- lsl r5, r5, #0xe
- and r6, r7
- orr r5, r6
- orr r1, r5
- orr r1, r2
- orr r1, r3
- orr r1, r4
- strh r1, [r0, #0x0]
- pop {r3-r7, pc}
-_0201719A:
- ldr r2, _02017488 ; =0x0400000A
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x1c]
- bne _020171B6
- ldrh r3, [r2, #0x1c]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x1c]
- b _020171C8
-_020171B6:
- cmp r1, #0x2
- bne _020171C8
- ldrh r3, [r2, #0x1c]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x1c]
-_020171C8:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x1c]
- add sp, #0x20
- lsl r0, r3, #0x12
- lsr r6, r0, #0x1f
- lsl r0, r3, #0x1a
- lsr r2, r0, #0x1c
- lsl r0, r3, #0x13
- lsr r1, r0, #0x1b
- mov r0, #0x2c
- mul r0, r4
- add r0, r5, r0
- lsl r3, r3, #0x10
- lsr r5, r3, #0x1e
- lsl r3, r2, #0x2
- ldrb r0, [r0, #0x1e]
- lsl r2, r1, #0x8
- lsl r4, r6, #0xd
- lsl r1, r0, #0x7
- ldr r0, _02017488 ; =0x0400000A
- mov r6, #0x43
- ldrh r7, [r0, #0x0]
- lsl r5, r5, #0xe
- and r6, r7
- orr r5, r6
- orr r1, r5
- orr r1, r2
- orr r1, r3
- orr r1, r4
- strh r1, [r0, #0x0]
- pop {r3-r7, pc}
-_02017206:
- mov r2, #0x2c
- mul r2, r4
- add r3, r5, r2
- ldrb r3, [r3, #0x1c]
- cmp r3, #0x0
- beq _0201721A
- cmp r3, #0x1
- beq _0201727A
- cmp r3, #0x2
- beq _020172DA
-_0201721A:
- ldr r3, _0201748C ; =0x0400000C
- cmp r1, #0x1
- ldrh r4, [r3, #0x0]
- add r3, sp, #0x0
- strh r4, [r3, #0x1a]
- bne _02017236
- ldrh r4, [r3, #0x1a]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r4
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r3, #0x1a]
- b _02017248
-_02017236:
- cmp r1, #0x2
- bne _02017248
- ldrh r4, [r3, #0x1a]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r4, r1
- lsr r0, r0, #0x1a
- orr r0, r4
- strh r0, [r3, #0x1a]
-_02017248:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x1a]
- add r2, r5, r2
- ldr r6, _0201748C ; =0x0400000C
- lsl r0, r3, #0x1a
- ldrb r4, [r2, #0x1e]
- lsr r1, r0, #0x1c
- lsl r0, r3, #0x13
- lsl r2, r3, #0x10
- lsr r3, r2, #0x1e
- ldrh r5, [r6, #0x0]
- lsr r0, r0, #0x1b
- lsl r2, r1, #0x2
- lsl r1, r0, #0x8
- lsl r0, r4, #0x7
- mov r4, #0x43
- and r4, r5
- lsl r3, r3, #0xe
- orr r3, r4
- orr r0, r3
- orr r0, r1
- orr r0, r2
- add sp, #0x20
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_0201727A:
- ldr r2, _0201748C ; =0x0400000C
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x18]
- bne _02017296
- ldrh r3, [r2, #0x18]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x18]
- b _020172A8
-_02017296:
- cmp r1, #0x2
- bne _020172A8
- ldrh r3, [r2, #0x18]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x18]
-_020172A8:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x18]
- ldr r6, _0201748C ; =0x0400000C
- add sp, #0x20
- lsl r1, r3, #0x13
- lsl r0, r3, #0x1a
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsr r0, r0, #0x1c
- lsl r1, r0, #0x2
- lsl r0, r4, #0x8
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_020172DA:
- ldr r2, _0201748C ; =0x0400000C
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x16]
- bne _020172F6
- ldrh r3, [r2, #0x16]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x16]
- b _02017308
-_020172F6:
- cmp r1, #0x2
- bne _02017308
- ldrh r3, [r2, #0x16]
- mov r1, #0x38
- lsl r0, r0, #0x1d
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x16]
-_02017308:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x16]
- ldr r6, _0201748C ; =0x0400000C
- add sp, #0x20
- lsl r1, r3, #0x13
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r0, r3, #0x1a
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsl r1, r4, #0x8
- lsr r0, r0, #0x1d
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- lsl r0, r0, #0x2
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_0201733A:
- mov r2, #0x2c
- mul r2, r4
- add r3, r5, r2
- ldrb r3, [r3, #0x1c]
- cmp r3, #0x0
- beq _0201734E
- cmp r3, #0x1
- beq _020173AE
- cmp r3, #0x2
- beq _0201740E
-_0201734E:
- ldr r3, _02017490 ; =0x0400000E
- cmp r1, #0x1
- ldrh r4, [r3, #0x0]
- add r3, sp, #0x0
- strh r4, [r3, #0x14]
- bne _0201736A
- ldrh r4, [r3, #0x14]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r4
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r3, #0x14]
- b _0201737C
-_0201736A:
- cmp r1, #0x2
- bne _0201737C
- ldrh r4, [r3, #0x14]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r4, r1
- lsr r0, r0, #0x1a
- orr r0, r4
- strh r0, [r3, #0x14]
-_0201737C:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x14]
- add r2, r5, r2
- ldr r6, _02017490 ; =0x0400000E
- lsl r0, r3, #0x1a
- ldrb r4, [r2, #0x1e]
- lsr r1, r0, #0x1c
- lsl r0, r3, #0x13
- lsl r2, r3, #0x10
- lsr r3, r2, #0x1e
- ldrh r5, [r6, #0x0]
- lsr r0, r0, #0x1b
- lsl r2, r1, #0x2
- lsl r1, r0, #0x8
- lsl r0, r4, #0x7
- mov r4, #0x43
- and r4, r5
- lsl r3, r3, #0xe
- orr r3, r4
- orr r0, r3
- orr r0, r1
- orr r0, r2
- add sp, #0x20
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_020173AE:
- ldr r2, _02017490 ; =0x0400000E
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x12]
- bne _020173CA
- ldrh r3, [r2, #0x12]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x12]
- b _020173DC
-_020173CA:
- cmp r1, #0x2
- bne _020173DC
- ldrh r3, [r2, #0x12]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x12]
-_020173DC:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x12]
- ldr r6, _02017490 ; =0x0400000E
- add sp, #0x20
- lsl r1, r3, #0x13
- lsl r0, r3, #0x1a
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsr r0, r0, #0x1c
- lsl r1, r0, #0x2
- lsl r0, r4, #0x8
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_0201740E:
- ldr r2, _02017490 ; =0x0400000E
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x10]
- bne _0201742A
- ldrh r3, [r2, #0x10]
- ldr r1, _02017484 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x10]
- b _0201743C
-_0201742A:
- cmp r1, #0x2
- bne _0201743C
- ldrh r3, [r2, #0x10]
- mov r1, #0x38
- lsl r0, r0, #0x1d
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x10]
-_0201743C:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x10]
- ldr r6, _02017490 ; =0x0400000E
- add sp, #0x20
- lsl r1, r3, #0x13
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r0, r3, #0x1a
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsl r1, r4, #0x8
- lsr r0, r0, #0x1d
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- lsl r0, r0, #0x2
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_0201746E:
- ldr r2, _02017494 ; =0x04001008
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0xe]
- bne _020174A4
- ldrh r3, [r2, #0xe]
- ldr r1, _02017484 ; =0xFFFFE0FF
- b _02017498
- .balign 4
-_02017480: .word 0x04000008
-_02017484: .word 0xFFFFE0FF
-_02017488: .word 0x0400000A
-_0201748C: .word 0x0400000C
-_02017490: .word 0x0400000E
-_02017494: .word 0x04001008
-_02017498:
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0xe]
- b _020174B6
-_020174A4:
- cmp r1, #0x2
- bne _020174B6
- ldrh r3, [r2, #0xe]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0xe]
-_020174B6:
- add r0, sp, #0x0
- ldrh r3, [r0, #0xe]
- add sp, #0x20
- lsl r0, r3, #0x12
- lsr r6, r0, #0x1f
- lsl r0, r3, #0x1a
- lsr r2, r0, #0x1c
- lsl r0, r3, #0x13
- lsr r1, r0, #0x1b
- mov r0, #0x2c
- mul r0, r4
- add r0, r5, r0
- lsl r3, r3, #0x10
- lsr r5, r3, #0x1e
- lsl r3, r2, #0x2
- ldrb r0, [r0, #0x1e]
- lsl r2, r1, #0x8
- lsl r4, r6, #0xd
- lsl r1, r0, #0x7
- ldr r0, _020177C8 ; =0x04001008
- mov r6, #0x43
- ldrh r7, [r0, #0x0]
- lsl r5, r5, #0xe
- and r6, r7
- orr r5, r6
- orr r1, r5
- orr r1, r2
- orr r1, r3
- orr r1, r4
- strh r1, [r0, #0x0]
- pop {r3-r7, pc}
-_020174F4:
- ldr r2, _020177CC ; =0x0400100A
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0xc]
- bne _02017510
- ldrh r3, [r2, #0xc]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0xc]
- b _02017522
-_02017510:
- cmp r1, #0x2
- bne _02017522
- ldrh r3, [r2, #0xc]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0xc]
-_02017522:
- add r0, sp, #0x0
- ldrh r3, [r0, #0xc]
- add sp, #0x20
- lsl r0, r3, #0x12
- lsr r6, r0, #0x1f
- lsl r0, r3, #0x1a
- lsr r2, r0, #0x1c
- lsl r0, r3, #0x13
- lsr r1, r0, #0x1b
- mov r0, #0x2c
- mul r0, r4
- add r0, r5, r0
- lsl r3, r3, #0x10
- lsr r5, r3, #0x1e
- lsl r3, r2, #0x2
- ldrb r0, [r0, #0x1e]
- lsl r2, r1, #0x8
- lsl r4, r6, #0xd
- lsl r1, r0, #0x7
- ldr r0, _020177CC ; =0x0400100A
- mov r6, #0x43
- ldrh r7, [r0, #0x0]
- lsl r5, r5, #0xe
- and r6, r7
- orr r5, r6
- orr r1, r5
- orr r1, r2
- orr r1, r3
- orr r1, r4
- strh r1, [r0, #0x0]
- pop {r3-r7, pc}
-_02017560:
- mov r2, #0x2c
- mul r2, r4
- add r3, r5, r2
- ldrb r3, [r3, #0x1c]
- cmp r3, #0x0
- beq _02017574
- cmp r3, #0x1
- beq _020175D4
- cmp r3, #0x2
- beq _02017634
-_02017574:
- ldr r3, _020177D4 ; =0x0400100C
- cmp r1, #0x1
- ldrh r4, [r3, #0x0]
- add r3, sp, #0x0
- strh r4, [r3, #0xa]
- bne _02017590
- ldrh r4, [r3, #0xa]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r4
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r3, #0xa]
- b _020175A2
-_02017590:
- cmp r1, #0x2
- bne _020175A2
- ldrh r4, [r3, #0xa]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r4, r1
- lsr r0, r0, #0x1a
- orr r0, r4
- strh r0, [r3, #0xa]
-_020175A2:
- add r0, sp, #0x0
- ldrh r3, [r0, #0xa]
- add r2, r5, r2
- ldr r6, _020177D4 ; =0x0400100C
- lsl r0, r3, #0x1a
- ldrb r4, [r2, #0x1e]
- lsr r1, r0, #0x1c
- lsl r0, r3, #0x13
- lsl r2, r3, #0x10
- lsr r3, r2, #0x1e
- ldrh r5, [r6, #0x0]
- lsr r0, r0, #0x1b
- lsl r2, r1, #0x2
- lsl r1, r0, #0x8
- lsl r0, r4, #0x7
- mov r4, #0x43
- and r4, r5
- lsl r3, r3, #0xe
- orr r3, r4
- orr r0, r3
- orr r0, r1
- orr r0, r2
- add sp, #0x20
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_020175D4:
- ldr r2, _020177D4 ; =0x0400100C
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x8]
- bne _020175F0
- ldrh r3, [r2, #0x8]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x8]
- b _02017602
-_020175F0:
- cmp r1, #0x2
- bne _02017602
- ldrh r3, [r2, #0x8]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x8]
-_02017602:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x8]
- ldr r6, _020177D4 ; =0x0400100C
- add sp, #0x20
- lsl r1, r3, #0x13
- lsl r0, r3, #0x1a
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsr r0, r0, #0x1c
- lsl r1, r0, #0x2
- lsl r0, r4, #0x8
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_02017634:
- ldr r2, _020177D4 ; =0x0400100C
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x6]
- bne _02017650
- ldrh r3, [r2, #0x6]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x6]
- b _02017662
-_02017650:
- cmp r1, #0x2
- bne _02017662
- ldrh r3, [r2, #0x6]
- mov r1, #0x38
- lsl r0, r0, #0x1d
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x6]
-_02017662:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x6]
- ldr r6, _020177D4 ; =0x0400100C
- add sp, #0x20
- lsl r1, r3, #0x13
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r0, r3, #0x1a
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsl r1, r4, #0x8
- lsr r0, r0, #0x1d
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- lsl r0, r0, #0x2
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_02017694:
- mov r2, #0x2c
- mul r2, r4
- add r3, r5, r2
- ldrb r3, [r3, #0x1c]
- cmp r3, #0x0
- beq _020176A8
- cmp r3, #0x1
- beq _02017708
- cmp r3, #0x2
- beq _02017768
-_020176A8:
- ldr r3, _020177D8 ; =0x0400100E
- cmp r1, #0x1
- ldrh r4, [r3, #0x0]
- add r3, sp, #0x0
- strh r4, [r3, #0x4]
- bne _020176C4
- ldrh r4, [r3, #0x4]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r4
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r3, #0x4]
- b _020176D6
-_020176C4:
- cmp r1, #0x2
- bne _020176D6
- ldrh r4, [r3, #0x4]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r4, r1
- lsr r0, r0, #0x1a
- orr r0, r4
- strh r0, [r3, #0x4]
-_020176D6:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x4]
- add r2, r5, r2
- ldr r6, _020177D8 ; =0x0400100E
- lsl r0, r3, #0x1a
- ldrb r4, [r2, #0x1e]
- lsr r1, r0, #0x1c
- lsl r0, r3, #0x13
- lsl r2, r3, #0x10
- lsr r3, r2, #0x1e
- ldrh r5, [r6, #0x0]
- lsr r0, r0, #0x1b
- lsl r2, r1, #0x2
- lsl r1, r0, #0x8
- lsl r0, r4, #0x7
- mov r4, #0x43
- and r4, r5
- lsl r3, r3, #0xe
- orr r3, r4
- orr r0, r3
- orr r0, r1
- orr r0, r2
- add sp, #0x20
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_02017708:
- ldr r2, _020177D8 ; =0x0400100E
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x2]
- bne _02017724
- ldrh r3, [r2, #0x2]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x2]
- b _02017736
-_02017724:
- cmp r1, #0x2
- bne _02017736
- ldrh r3, [r2, #0x2]
- mov r1, #0x3c
- lsl r0, r0, #0x1c
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x2]
-_02017736:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x2]
- ldr r6, _020177D8 ; =0x0400100E
- add sp, #0x20
- lsl r1, r3, #0x13
- lsl r0, r3, #0x1a
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsr r0, r0, #0x1c
- lsl r1, r0, #0x2
- lsl r0, r4, #0x8
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
- pop {r3-r7, pc}
-_02017768:
- ldr r2, _020177D8 ; =0x0400100E
- cmp r1, #0x1
- ldrh r3, [r2, #0x0]
- add r2, sp, #0x0
- strh r3, [r2, #0x0]
- bne _02017784
- ldrh r3, [r2, #0x0]
- ldr r1, _020177D0 ; =0xFFFFE0FF
- lsl r0, r0, #0x1b
- and r1, r3
- lsr r0, r0, #0x13
- orr r0, r1
- strh r0, [r2, #0x0]
- b _02017796
-_02017784:
- cmp r1, #0x2
- bne _02017796
- ldrh r3, [r2, #0x0]
- mov r1, #0x38
- lsl r0, r0, #0x1d
- bic r3, r1
- lsr r0, r0, #0x1a
- orr r0, r3
- strh r0, [r2, #0x0]
-_02017796:
- add r0, sp, #0x0
- ldrh r3, [r0, #0x0]
- ldr r6, _020177D8 ; =0x0400100E
- lsl r1, r3, #0x13
- lsr r4, r1, #0x1b
- lsl r1, r3, #0x12
- lsr r2, r1, #0x1f
- lsl r0, r3, #0x1a
- lsl r1, r3, #0x10
- lsr r3, r1, #0x1e
- lsl r1, r4, #0x8
- lsr r0, r0, #0x1d
- ldrh r5, [r6, #0x0]
- mov r4, #0x43
- lsl r3, r3, #0xe
- and r4, r5
- lsl r0, r0, #0x2
- orr r3, r4
- orr r0, r3
- lsl r2, r2, #0xd
- orr r0, r1
- orr r0, r2
- strh r0, [r6, #0x0]
-_020177C4:
- add sp, #0x20
- pop {r3-r7, pc}
- .balign 4
-_020177C8: .word 0x04001008
-_020177CC: .word 0x0400100A
-_020177D0: .word 0xFFFFE0FF
-_020177D4: .word 0x0400100C
-_020177D8: .word 0x0400100E
-
- thumb_func_start FUN_020177DC
-FUN_020177DC: ; 0x020177DC
- cmp r1, #0x0
- beq _020177EA
- cmp r1, #0x1
- beq _0201780A
- cmp r1, #0x2
- beq _0201782A
- b _0201784A
-_020177EA:
- cmp r0, #0x1
- bne _020177F2
- mov r0, #0x0
- bx lr
-_020177F2:
- cmp r0, #0x2
- bne _020177FA
- mov r0, #0x2
- bx lr
-_020177FA:
- cmp r0, #0x3
- bne _02017802
- mov r0, #0x1
- bx lr
-_02017802:
- cmp r0, #0x4
- bne _0201784A
- mov r0, #0x3
- bx lr
-_0201780A:
- cmp r0, #0x0
- bne _02017812
- mov r0, #0x0
- bx lr
-_02017812:
- cmp r0, #0x1
- bne _0201781A
- mov r0, #0x1
- bx lr
-_0201781A:
- cmp r0, #0x4
- bne _02017822
- mov r0, #0x2
- bx lr
-_02017822:
- cmp r0, #0x5
- bne _0201784A
- mov r0, #0x3
- bx lr
-_0201782A:
- cmp r0, #0x0
- bne _02017832
- mov r0, #0x0
- bx lr
-_02017832:
- cmp r0, #0x1
- bne _0201783A
- mov r0, #0x1
- bx lr
-_0201783A:
- cmp r0, #0x4
- bne _02017842
- mov r0, #0x2
- bx lr
-_02017842:
- cmp r0, #0x5
- bne _0201784A
- mov r0, #0x3
- bx lr
-_0201784A:
- mov r0, #0x0
- bx lr
- .balign 4
-
- thumb_func_start FUN_02017850
-FUN_02017850: ; 0x02017850
- cmp r0, #0x5
- bhi _0201789E
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02017860: ; jump table (using 16-bit offset)
- .short _0201786C - _02017860 - 2; case 0
- .short _02017874 - _02017860 - 2; case 1
- .short _0201787C - _02017860 - 2; case 2
- .short _02017886 - _02017860 - 2; case 3
- .short _02017890 - _02017860 - 2; case 4
- .short _02017898 - _02017860 - 2; case 5
-_0201786C:
- mov r0, #0x10
- strb r0, [r1, #0x0]
- strb r0, [r2, #0x0]
- bx lr
-_02017874:
- mov r0, #0x20
- strb r0, [r1, #0x0]
- strb r0, [r2, #0x0]
- bx lr
-_0201787C:
- mov r0, #0x20
- strb r0, [r1, #0x0]
- mov r0, #0x40
- strb r0, [r2, #0x0]
- bx lr
-_02017886:
- mov r0, #0x40
- strb r0, [r1, #0x0]
- mov r0, #0x20
- strb r0, [r2, #0x0]
- bx lr
-_02017890:
- mov r0, #0x40
- strb r0, [r1, #0x0]
- strb r0, [r2, #0x0]
- bx lr
-_02017898:
- mov r0, #0x80
- strb r0, [r1, #0x0]
- strb r0, [r2, #0x0]
-_0201789E:
- bx lr
-
- thumb_func_start FUN_020178A0
-FUN_020178A0: ; 0x020178A0
- push {r3-r5, lr}
- add r4, r0, #0x0
- mov r2, #0x2c
- add r5, r1, #0x0
- mul r5, r2
- add r4, #0x8
- ldr r0, [r4, r5]
- cmp r0, #0x0
- beq _020178BA
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, r5]
-_020178BA:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020178BC
-FUN_020178BC: ; 0x020178BC
- cmp r0, #0x7
- bhi _0201795A
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020178CC: ; jump table (using 16-bit offset)
- .short _020178DC - _020178CC - 2; case 0
- .short _020178EC - _020178CC - 2; case 1
- .short _020178FC - _020178CC - 2; case 2
- .short _0201790C - _020178CC - 2; case 3
- .short _0201791C - _020178CC - 2; case 4
- .short _0201792C - _020178CC - 2; case 5
- .short _0201793C - _020178CC - 2; case 6
- .short _0201794C - _020178CC - 2; case 7
-_020178DC:
- ldr r2, _0201795C ; =0x04000008
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_020178EC:
- ldr r2, _02017960 ; =0x0400000A
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_020178FC:
- ldr r2, _02017964 ; =0x0400000C
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_0201790C:
- ldr r2, _02017968 ; =0x0400000E
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_0201791C:
- ldr r2, _0201796C ; =0x04001008
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_0201792C:
- ldr r2, _02017970 ; =0x0400100A
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_0201793C:
- ldr r2, _02017974 ; =0x0400100C
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
- bx lr
-_0201794C:
- ldr r2, _02017978 ; =0x0400100E
- mov r0, #0x3
- ldrh r3, [r2, #0x0]
- bic r3, r0
- add r0, r3, #0x0
- orr r0, r1
- strh r0, [r2, #0x0]
-_0201795A:
- bx lr
- .balign 4
-_0201795C: .word 0x04000008
-_02017960: .word 0x0400000A
-_02017964: .word 0x0400000C
-_02017968: .word 0x0400000E
-_0201796C: .word 0x04001008
-_02017970: .word 0x0400100A
-_02017974: .word 0x0400100C
-_02017978: .word 0x0400100E
-
- thumb_func_start FUN_0201797C
-FUN_0201797C: ; 0x0201797C
- push {r3, lr}
- cmp r0, #0x7
- bhi _020179DC
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0201798E: ; jump table (using 16-bit offset)
- .short _0201799E - _0201798E - 2; case 0
- .short _020179A6 - _0201798E - 2; case 1
- .short _020179AE - _0201798E - 2; case 2
- .short _020179B6 - _0201798E - 2; case 3
- .short _020179BE - _0201798E - 2; case 4
- .short _020179C6 - _0201798E - 2; case 5
- .short _020179CE - _0201798E - 2; case 6
- .short _020179D6 - _0201798E - 2; case 7
-_0201799E:
- mov r0, #0x1
- bl GX_EngineAToggleLayers
- pop {r3, pc}
-_020179A6:
- mov r0, #0x2
- bl GX_EngineAToggleLayers
- pop {r3, pc}
-_020179AE:
- mov r0, #0x4
- bl GX_EngineAToggleLayers
- pop {r3, pc}
-_020179B6:
- mov r0, #0x8
- bl GX_EngineAToggleLayers
- pop {r3, pc}
-_020179BE:
- mov r0, #0x1
- bl GX_EngineBToggleLayers
- pop {r3, pc}
-_020179C6:
- mov r0, #0x2
- bl GX_EngineBToggleLayers
- pop {r3, pc}
-_020179CE:
- mov r0, #0x4
- bl GX_EngineBToggleLayers
- pop {r3, pc}
-_020179D6:
- mov r0, #0x8
- bl GX_EngineBToggleLayers
-_020179DC:
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020179E0
-FUN_020179E0: ; 0x020179E0
- push {r4-r6, lr}
- add r5, r1, #0x0
- add r4, r0, #0x0
- mov r0, #0x2c
- add r6, r5, #0x0
- mul r6, r0
- add r0, r4, #0x0
- add r0, #0x8
- add r1, r2, #0x0
- add r2, r3, #0x0
- add r0, r0, r6
- bl FUN_02017B8C
- add r0, r4, r6
- ldr r1, [r0, #0x14]
- ldr r0, [r0, #0x18]
- cmp r5, #0x7
- bls _02017A06
- b _02017B1C
-_02017A06:
- add r2, r5, r5
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_02017A12: ; jump table (using 16-bit offset)
- .short _02017A22 - _02017A12 - 2; case 0
- .short _02017A38 - _02017A12 - 2; case 1
- .short _02017A4E - _02017A12 - 2; case 2
- .short _02017A78 - _02017A12 - 2; case 3
- .short _02017AA2 - _02017A12 - 2; case 4
- .short _02017AB8 - _02017A12 - 2; case 5
- .short _02017ACE - _02017A12 - 2; case 6
- .short _02017AF6 - _02017A12 - 2; case 7
-_02017A22:
- ldr r2, _02017B20 ; =0x000001FF
- add r3, r1, #0x0
- lsl r1, r0, #0x10
- lsl r0, r2, #0x10
- and r3, r2
- and r0, r1
- add r1, r3, #0x0
- orr r1, r0
- ldr r0, _02017B24 ; =0x04000010
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017A38:
- ldr r2, _02017B20 ; =0x000001FF
- add r3, r1, #0x0
- lsl r1, r0, #0x10
- lsl r0, r2, #0x10
- and r3, r2
- and r0, r1
- add r1, r3, #0x0
- orr r1, r0
- ldr r0, _02017B28 ; =0x04000014
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017A4E:
- add r2, r4, #0x0
- add r2, #0x74
- ldrb r2, [r2, #0x0]
- cmp r2, #0x0
- bne _02017A6E
- ldr r2, _02017B20 ; =0x000001FF
- add r3, r1, #0x0
- lsl r1, r0, #0x10
- lsl r0, r2, #0x10
- and r3, r2
- and r0, r1
- add r1, r3, #0x0
- orr r1, r0
- ldr r0, _02017B2C ; =0x04000018
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017A6E:
- add r0, r4, #0x0
- mov r1, #0x2
- bl FUN_02017C6C
- pop {r4-r6, pc}
-_02017A78:
- add r2, r4, #0x0
- add r2, #0xa0
- ldrb r2, [r2, #0x0]
- cmp r2, #0x0
- bne _02017A98
- ldr r2, _02017B20 ; =0x000001FF
- add r3, r1, #0x0
- lsl r1, r0, #0x10
- lsl r0, r2, #0x10
- and r3, r2
- and r0, r1
- add r1, r3, #0x0
- orr r1, r0
- ldr r0, _02017B30 ; =0x0400001C
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017A98:
- add r0, r4, #0x0
- mov r1, #0x3
- bl FUN_02017C6C
- pop {r4-r6, pc}
-_02017AA2:
- ldr r2, _02017B20 ; =0x000001FF
- add r3, r1, #0x0
- lsl r1, r0, #0x10
- lsl r0, r2, #0x10
- and r3, r2
- and r0, r1
- add r1, r3, #0x0
- orr r1, r0
- ldr r0, _02017B34 ; =0x04001010
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017AB8:
- ldr r2, _02017B20 ; =0x000001FF
- add r3, r1, #0x0
- lsl r1, r0, #0x10
- lsl r0, r2, #0x10
- and r3, r2
- and r0, r1
- add r1, r3, #0x0
- orr r1, r0
- ldr r0, _02017B38 ; =0x04001014
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017ACE:
- mov r2, #0x49
- lsl r2, r2, #0x2
- ldrb r3, [r4, r2]
- cmp r3, #0x0
- bne _02017AEC
- add r2, #0xdb
- and r2, r1
- lsl r1, r0, #0x10
- ldr r0, _02017B3C ; =0x01FF0000
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- ldr r0, _02017B40 ; =0x04001018
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017AEC:
- add r0, r4, #0x0
- mov r1, #0x6
- bl FUN_02017C6C
- pop {r4-r6, pc}
-_02017AF6:
- mov r2, #0x15
- lsl r2, r2, #0x4
- ldrb r3, [r4, r2]
- cmp r3, #0x0
- bne _02017B14
- add r2, #0xaf
- and r2, r1
- lsl r1, r0, #0x10
- ldr r0, _02017B3C ; =0x01FF0000
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- ldr r0, _02017B44 ; =0x0400101C
- str r1, [r0, #0x0]
- pop {r4-r6, pc}
-_02017B14:
- add r0, r4, #0x0
- mov r1, #0x7
- bl FUN_02017C6C
-_02017B1C:
- pop {r4-r6, pc}
- nop
-_02017B20: .word 0x000001FF
-_02017B24: .word 0x04000010
-_02017B28: .word 0x04000014
-_02017B2C: .word 0x04000018
-_02017B30: .word 0x0400001C
-_02017B34: .word 0x04001010
-_02017B38: .word 0x04001014
-_02017B3C: .word 0x01FF0000
-_02017B40: .word 0x04001018
-_02017B44: .word 0x0400101C
-
- thumb_func_start FUN_02017B48
-FUN_02017B48: ; 0x02017B48
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldr r0, [r0, #0x14]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02017B54
-FUN_02017B54: ; 0x02017B54
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldr r0, [r0, #0x18]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02017B60
-FUN_02017B60: ; 0x02017B60
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r1, r5, #0x0
- mov r0, #0x2c
- add r1, #0x8
- mul r0, r4
- add r0, r1, r0
- add r1, r2, #0x0
- add r2, r3, #0x0
- bl FUN_02017B8C
- ldr r0, [sp, #0x18]
- ldr r2, [sp, #0x10]
- str r0, [sp, #0x0]
- ldr r3, [sp, #0x14]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02017BD0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02017B8C
-FUN_02017B8C: ; 0x02017B8C
- cmp r1, #0x5
- bhi _02017BCE
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02017B9C: ; jump table (using 16-bit offset)
- .short _02017BA8 - _02017B9C - 2; case 0
- .short _02017BAC - _02017B9C - 2; case 1
- .short _02017BB4 - _02017B9C - 2; case 2
- .short _02017BBC - _02017B9C - 2; case 3
- .short _02017BC0 - _02017B9C - 2; case 4
- .short _02017BC8 - _02017B9C - 2; case 5
-_02017BA8:
- str r2, [r0, #0xc]
- bx lr
-_02017BAC:
- ldr r1, [r0, #0xc]
- add r1, r1, r2
- str r1, [r0, #0xc]
- bx lr
-_02017BB4:
- ldr r1, [r0, #0xc]
- sub r1, r1, r2
- str r1, [r0, #0xc]
- bx lr
-_02017BBC:
- str r2, [r0, #0x10]
- bx lr
-_02017BC0:
- ldr r1, [r0, #0x10]
- add r1, r1, r2
- str r1, [r0, #0x10]
- bx lr
-_02017BC8:
- ldr r1, [r0, #0x10]
- sub r1, r1, r2
- str r1, [r0, #0x10]
-_02017BCE:
- bx lr
-
- thumb_func_start FUN_02017BD0
-FUN_02017BD0: ; 0x02017BD0
- push {r3-r5, lr}
- sub sp, #0x8
- add r4, r1, #0x0
- add r1, r2, #0x0
- add r2, r3, #0x0
- ldr r3, [sp, #0x18]
- cmp r4, #0x7
- bhi _02017C58
- add r5, r4, r4
- add r5, pc
- ldrh r5, [r5, #0x6]
- lsl r5, r5, #0x10
- asr r5, r5, #0x10
- add pc, r5
-_02017BEC: ; jump table (using 16-bit offset)
- .short _02017C58 - _02017BEC - 2; case 0
- .short _02017C58 - _02017BEC - 2; case 1
- .short _02017BFC - _02017BEC - 2; case 2
- .short _02017C14 - _02017BEC - 2; case 3
- .short _02017C58 - _02017BEC - 2; case 4
- .short _02017C58 - _02017BEC - 2; case 5
- .short _02017C2C - _02017BEC - 2; case 6
- .short _02017C44 - _02017BEC - 2; case 7
-_02017BFC:
- mov r5, #0x2c
- mul r5, r4
- add r4, r0, r5
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x4]
- ldr r0, _02017C5C ; =0x04000020
- bl G2x_SetBGyAffine_
- add sp, #0x8
- pop {r3-r5, pc}
-_02017C14:
- mov r5, #0x2c
- mul r5, r4
- add r4, r0, r5
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x4]
- ldr r0, _02017C60 ; =0x04000030
- bl G2x_SetBGyAffine_
- add sp, #0x8
- pop {r3-r5, pc}
-_02017C2C:
- mov r5, #0x2c
- mul r5, r4
- add r4, r0, r5
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x4]
- ldr r0, _02017C64 ; =0x04001020
- bl G2x_SetBGyAffine_
- add sp, #0x8
- pop {r3-r5, pc}
-_02017C44:
- mov r5, #0x2c
- mul r5, r4
- add r4, r0, r5
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x18]
- str r0, [sp, #0x4]
- ldr r0, _02017C68 ; =0x04001030
- bl G2x_SetBGyAffine_
-_02017C58:
- add sp, #0x8
- pop {r3-r5, pc}
- .balign 4
-_02017C5C: .word 0x04000020
-_02017C60: .word 0x04000030
-_02017C64: .word 0x04001020
-_02017C68: .word 0x04001030
-
- thumb_func_start FUN_02017C6C
-FUN_02017C6C: ; 0x02017C6C
- push {r4-r5, lr}
- sub sp, #0x14
- mov r2, #0x1
- lsl r2, r2, #0xc
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r1, #0x0
- add r0, sp, #0x4
- add r3, r2, #0x0
- str r1, [sp, #0x0]
- bl MTX22_2DAffine
- mov r3, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, sp, #0x4
- str r3, [sp, #0x0]
- bl FUN_02017BD0
- add sp, #0x14
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02017C98
-FUN_02017C98: ; 0x02017C98
- push {r3-r5, lr}
- cmp r2, #0x0
- bne _02017CA4
- bl MI_UncompressLZ8
- pop {r3-r5, pc}
-_02017CA4:
- mov r4, #0x3
- add r3, r0, #0x0
- tst r3, r4
- bne _02017CCA
- add r3, r1, #0x0
- tst r3, r4
- bne _02017CCA
- lsl r3, r2, #0x10
- lsr r3, r3, #0x10
- lsr r4, r3, #0x1f
- lsl r5, r3, #0x1e
- sub r5, r5, r4
- mov r3, #0x1e
- ror r5, r3
- add r3, r4, r5
- bne _02017CCA
- bl MIi_CpuCopy32
- pop {r3-r5, pc}
-_02017CCA:
- bl MIi_CpuCopy16
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02017CD0
-FUN_02017CD0: ; 0x02017CD0
- push {r3, lr}
- mov r2, #0x2c
- mul r2, r1
- add r3, r0, r2
- ldr r2, [r3, #0x10]
- str r2, [sp, #0x0]
- ldr r2, [r3, #0x8]
- ldr r3, [r3, #0xc]
- bl FUN_02017CE8
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02017CE8
-FUN_02017CE8: ; 0x02017CE8
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- str r3, [sp, #0x0]
- cmp r3, #0x0
- bne _02017D56
- mov r0, #0x2c
- add r7, r4, #0x0
- mul r7, r0
- add r0, r5, r7
- ldr r0, [r0, #0x8]
- str r0, [sp, #0x4]
- cmp r0, #0x0
- beq _02017D26
- ldr r1, [sp, #0x4]
- add r0, r6, #0x0
- add r2, r3, #0x0
- bl FUN_02017C98
- add r3, r5, r7
- ldr r2, [r3, #0x10]
- ldr r1, [sp, #0x4]
- ldr r3, [r3, #0xc]
- add r0, r4, #0x0
- lsl r2, r2, #0x1
- bl FUN_02017D68
- add sp, #0x8
- pop {r3-r7, pc}
-_02017D26:
- ldr r0, [r6, #0x0]
- lsr r7, r0, #0x8
- ldr r0, [r5, #0x0]
- add r1, r7, #0x0
- bl AllocFromHeapAtEnd
- add r5, r0, #0x0
- ldr r2, [sp, #0x0]
- add r0, r6, #0x0
- add r1, r5, #0x0
- bl FUN_02017C98
- ldr r2, [sp, #0x20]
- add r0, r4, #0x0
- add r1, r5, #0x0
- lsl r2, r2, #0x1
- add r3, r7, #0x0
- bl FUN_02017D68
- add r0, r5, #0x0
- bl FreeToHeap
- add sp, #0x8
- pop {r3-r7, pc}
-_02017D56:
- ldr r2, [sp, #0x20]
- add r0, r4, #0x0
- add r1, r6, #0x0
- lsl r2, r2, #0x1
- bl FUN_02017D68
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02017D68
-FUN_02017D68: ; 0x02017D68
- push {r3-r7, lr}
- add r4, r1, #0x0
- add r6, r3, #0x0
- add r7, r0, #0x0
- add r0, r4, #0x0
- add r1, r6, #0x0
- add r5, r2, #0x0
- bl DC_FlushRange
- cmp r7, #0x7
- bhi _02017DF8
- add r0, r7, r7
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02017D8A: ; jump table (using 16-bit offset)
- .short _02017D9A - _02017D8A - 2; case 0
- .short _02017DA6 - _02017D8A - 2; case 1
- .short _02017DB2 - _02017D8A - 2; case 2
- .short _02017DBE - _02017D8A - 2; case 3
- .short _02017DCA - _02017D8A - 2; case 4
- .short _02017DD6 - _02017D8A - 2; case 5
- .short _02017DE2 - _02017D8A - 2; case 6
- .short _02017DEE - _02017D8A - 2; case 7
-_02017D9A:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG0Scr
- pop {r3-r7, pc}
-_02017DA6:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG1Scr
- pop {r3-r7, pc}
-_02017DB2:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG2Scr
- pop {r3-r7, pc}
-_02017DBE:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG3Scr
- pop {r3-r7, pc}
-_02017DCA:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG0Scr
- pop {r3-r7, pc}
-_02017DD6:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG1Scr
- pop {r3-r7, pc}
-_02017DE2:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG2Scr
- pop {r3-r7, pc}
-_02017DEE:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG3Scr
-_02017DF8:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02017DFC
-FUN_02017DFC: ; 0x02017DFC
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r2, #0x0
- mov r2, #0x2c
- mul r2, r1
- add r1, r4, r2
- ldr r1, [r1, #0x8]
- add r2, r3, #0x0
- bl FUN_02017C98
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02017E14
-FUN_02017E14: ; 0x02017E14
- push {r3-r4, lr}
- sub sp, #0x4
- mov r4, #0x2c
- mul r4, r1
- add r4, r0, r4
- ldrb r4, [r4, #0x1e]
- cmp r4, #0x0
- bne _02017E32
- ldr r4, [sp, #0x10]
- lsl r4, r4, #0x5
- str r4, [sp, #0x0]
- bl FUN_02017E40
- add sp, #0x4
- pop {r3-r4, pc}
-_02017E32:
- ldr r4, [sp, #0x10]
- lsl r4, r4, #0x6
- str r4, [sp, #0x0]
- bl FUN_02017E40
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start FUN_02017E40
-FUN_02017E40: ; 0x02017E40
- push {r3-r7, lr}
- add r7, r1, #0x0
- add r5, r2, #0x0
- str r3, [sp, #0x0]
- cmp r3, #0x0
- bne _02017E78
- ldr r1, [r5, #0x0]
- ldr r0, [r0, #0x0]
- lsr r4, r1, #0x8
- add r1, r4, #0x0
- bl AllocFromHeapAtEnd
- add r6, r0, #0x0
- ldr r2, [sp, #0x0]
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02017C98
- ldr r2, [sp, #0x18]
- add r0, r7, #0x0
- add r1, r6, #0x0
- add r3, r4, #0x0
- bl FUN_02017E84
- add r0, r6, #0x0
- bl FreeToHeap
- pop {r3-r7, pc}
-_02017E78:
- ldr r2, [sp, #0x18]
- add r0, r7, #0x0
- add r1, r5, #0x0
- bl FUN_02017E84
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02017E84
-FUN_02017E84: ; 0x02017E84
- push {r3-r7, lr}
- add r4, r1, #0x0
- add r6, r3, #0x0
- add r7, r0, #0x0
- add r0, r4, #0x0
- add r1, r6, #0x0
- add r5, r2, #0x0
- bl DC_FlushRange
- cmp r7, #0x7
- bhi _02017F14
- add r0, r7, r7
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02017EA6: ; jump table (using 16-bit offset)
- .short _02017EB6 - _02017EA6 - 2; case 0
- .short _02017EC2 - _02017EA6 - 2; case 1
- .short _02017ECE - _02017EA6 - 2; case 2
- .short _02017EDA - _02017EA6 - 2; case 3
- .short _02017EE6 - _02017EA6 - 2; case 4
- .short _02017EF2 - _02017EA6 - 2; case 5
- .short _02017EFE - _02017EA6 - 2; case 6
- .short _02017F0A - _02017EA6 - 2; case 7
-_02017EB6:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG0Char
- pop {r3-r7, pc}
-_02017EC2:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG1Char
- pop {r3-r7, pc}
-_02017ECE:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG2Char
- pop {r3-r7, pc}
-_02017EDA:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GX_LoadBG3Char
- pop {r3-r7, pc}
-_02017EE6:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG0Char
- pop {r3-r7, pc}
-_02017EF2:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG1Char
- pop {r3-r7, pc}
-_02017EFE:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG2Char
- pop {r3-r7, pc}
-_02017F0A:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl GXS_LoadBG3Char
-_02017F14:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02017F18
-FUN_02017F18: ; 0x02017F18
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r0, r3, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x0]
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- mov r1, #0x0
- add r2, r5, #0x0
- bl memset
- add r0, r6, #0x0
- add r1, r4, #0x0
- add r2, r7, #0x0
- add r3, r5, #0x0
- bl FUN_02017E84
- ldr r0, [sp, #0x0]
- add r1, r4, #0x0
- bl FUN_02016A8C
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02017F48
-FUN_02017F48: ; 0x02017F48
- push {r3-r7, lr}
- sub sp, #0x8
- add r7, r1, #0x0
- add r4, r0, #0x0
- mov r1, #0x2c
- add r6, r7, #0x0
- add r4, #0x1f
- mul r6, r1
- ldrb r1, [r4, r6]
- ldr r0, [r0, #0x0]
- add r5, r2, #0x0
- mul r1, r3
- str r1, [sp, #0x0]
- bl AllocFromHeapAtEnd
- str r0, [sp, #0x4]
- ldrb r0, [r4, r6]
- cmp r0, #0x20
- bne _02017F82
- lsl r2, r5, #0xc
- lsl r1, r5, #0x8
- lsl r0, r5, #0x4
- orr r1, r2
- orr r0, r1
- add r1, r5, #0x0
- orr r1, r0
- lsl r0, r1, #0x10
- add r5, r1, #0x0
- b _02017F8C
-_02017F82:
- lsl r2, r5, #0x18
- lsl r1, r5, #0x10
- lsl r0, r5, #0x8
- orr r1, r2
- orr r0, r1
-_02017F8C:
- orr r5, r0
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x0]
- add r0, r5, #0x0
- bl MIi_CpuClearFast
- lsl r0, r7, #0x18
- ldrb r2, [r4, r6]
- ldr r3, [sp, #0x20]
- ldr r1, [sp, #0x4]
- mul r2, r3
- ldr r3, [sp, #0x0]
- lsr r0, r0, #0x18
- bl FUN_02017E84
- ldr r0, [sp, #0x4]
- bl FreeToHeap
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02017FB4
-FUN_02017FB4: ; 0x02017FB4
- push {r3-r7, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r7, r3, #0x0
- bl DC_FlushRange
- cmp r6, #0x4
- bhs _02017FD6
- add r0, r5, #0x0
- add r1, r7, #0x0
- add r2, r4, #0x0
- bl GX_LoadBGPltt
- pop {r3-r7, pc}
-_02017FD6:
- add r0, r5, #0x0
- add r1, r7, #0x0
- add r2, r4, #0x0
- bl GXS_LoadBGPltt
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02017FE4
-FUN_02017FE4: ; 0x02017FE4
- push {r0-r3}
- push {r3, lr}
- add r1, sp, #0xc
- mov r2, #0x2
- mov r3, #0x0
- bl FUN_02017FB4
- pop {r3}
- pop {r3}
- add sp, #0x10
- bx r3
- .balign 4
-
- thumb_func_start FUN_02017FFC
-FUN_02017FFC: ; 0x02017FFC
- cmp r2, #0x5
- bhi _02018066
- add r2, r2, r2
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_0201800C: ; jump table (using 16-bit offset)
- .short _02018018 - _0201800C - 2; case 0
- .short _02018022 - _0201800C - 2; case 1
- .short _02018022 - _0201800C - 2; case 2
- .short _0201802C - _0201800C - 2; case 3
- .short _02018042 - _0201800C - 2; case 4
- .short _02018064 - _0201800C - 2; case 5
-_02018018:
- lsl r1, r1, #0x4
- add r0, r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bx lr
-_02018022:
- lsl r1, r1, #0x5
- add r0, r0, r1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bx lr
-_0201802C:
- mov r2, #0x1f
- add r3, r0, #0x0
- and r3, r2
- mov r2, #0x1f
- bic r0, r2
- add r0, r1, r0
- lsl r0, r0, #0x5
- add r0, r3, r0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bx lr
-_02018042:
- asr r2, r1, #0x5
- asr r3, r0, #0x5
- lsl r2, r2, #0x1
- add r2, r3, r2
- lsl r2, r2, #0x10
- lsr r2, r2, #0x10
- lsl r2, r2, #0x1a
- lsr r3, r2, #0x10
- mov r2, #0x1f
- and r2, r0
- lsl r0, r1, #0x1b
- lsr r0, r0, #0x16
- add r0, r2, r0
- add r0, r3, r0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bx lr
-_02018064:
- mov r0, #0x0
-_02018066:
- bx lr
-
- thumb_func_start FUN_02018068
-FUN_02018068: ; 0x02018068
- push {r3-r7}
- sub sp, #0x4
- str r3, [sp, #0x0]
- add r6, r2, #0x0
- ldr r5, [sp, #0x0]
- add r4, r6, #0x0
- sub r4, #0x20
- sub r5, #0x20
- mov r2, #0x0
- lsl r4, r4, #0x10
- lsl r5, r5, #0x10
- add r3, r2, #0x0
- asr r4, r4, #0x10
- asr r7, r5, #0x10
- lsr r5, r0, #0x5
- beq _0201808E
- add r2, r2, #0x1
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
-_0201808E:
- lsr r5, r1, #0x5
- beq _02018098
- add r2, r2, #0x2
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
-_02018098:
- cmp r2, #0x3
- bhi _02018140
- add r2, r2, r2
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_020180A8: ; jump table (using 16-bit offset)
- .short _020180B0 - _020180A8 - 2; case 0
- .short _020180CE - _020180A8 - 2; case 1
- .short _020180F4 - _020180A8 - 2; case 2
- .short _02018120 - _020180A8 - 2; case 3
-_020180B0:
- cmp r4, #0x0
- blt _020180C0
- lsl r1, r1, #0x5
- add r0, r0, r1
- add r0, r3, r0
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- b _02018140
-_020180C0:
- add r2, r1, #0x0
- mul r2, r6
- add r0, r0, r2
- add r0, r3, r0
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- b _02018140
-_020180CE:
- cmp r7, #0x0
- blt _020180D8
- mov r2, #0x1
- lsl r2, r2, #0xa
- b _020180DC
-_020180D8:
- ldr r2, [sp, #0x0]
- lsl r2, r2, #0x5
-_020180DC:
- add r2, r3, r2
- lsl r2, r2, #0x10
- lsr r3, r2, #0x10
- mov r2, #0x1f
- and r2, r0
- add r0, r1, #0x0
- mul r0, r4
- add r0, r2, r0
- add r0, r3, r0
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- b _02018140
-_020180F4:
- lsl r2, r6, #0x5
- add r2, r3, r2
- lsl r2, r2, #0x10
- lsr r2, r2, #0x10
- cmp r4, #0x0
- blt _0201810E
- lsl r1, r1, #0x1b
- lsr r1, r1, #0x16
- add r0, r0, r1
- add r0, r2, r0
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- b _02018140
-_0201810E:
- mov r3, #0x1f
- and r1, r3
- add r3, r1, #0x0
- mul r3, r6
- add r0, r0, r3
- add r0, r2, r0
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- b _02018140
-_02018120:
- add r2, r6, r7
- lsl r2, r2, #0x5
- add r2, r3, r2
- add r5, r0, #0x0
- mov r3, #0x1f
- add r0, r1, #0x0
- and r0, r3
- add r1, r0, #0x0
- lsl r2, r2, #0x10
- and r5, r3
- mul r1, r4
- lsr r2, r2, #0x10
- add r0, r5, r1
- add r0, r2, r0
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
-_02018140:
- add r0, r3, #0x0
- add sp, #0x4
- pop {r3-r7}
- bx lr
-
- thumb_func_start FUN_02018148
-FUN_02018148: ; 0x02018148
- push {r3-r6, lr}
- sub sp, #0x1c
- add r6, sp, #0x20
- ldrb r5, [r6, #0x14]
- str r5, [sp, #0x0]
- ldrb r4, [r6, #0x18]
- str r4, [sp, #0x4]
- str r2, [sp, #0x8]
- mov r2, #0x0
- str r2, [sp, #0xc]
- str r2, [sp, #0x10]
- str r5, [sp, #0x14]
- str r4, [sp, #0x18]
- add r2, r3, #0x0
- ldrb r3, [r6, #0x10]
- bl FUN_02018170
- add sp, #0x1c
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02018170
-FUN_02018170: ; 0x02018170
- push {r4-r5, lr}
- sub sp, #0x1c
- add r4, r2, #0x0
- add r2, r3, #0x0
- mov r3, #0x2c
- add r5, r1, #0x0
- mul r5, r3
- add r1, r0, r5
- ldrb r1, [r1, #0x1c]
- add r3, sp, #0x18
- cmp r1, #0x1
- beq _020181BA
- ldrb r1, [r3, #0x14]
- add r0, #0x8
- add r0, r0, r5
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x30]
- str r1, [sp, #0x4]
- ldrb r1, [r3, #0x1c]
- str r1, [sp, #0x8]
- add r1, sp, #0x38
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0xc]
- add r1, sp, #0x3c
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x10]
- add r1, sp, #0x40
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x14]
- mov r1, #0x0
- str r1, [sp, #0x18]
- ldrb r3, [r3, #0x10]
- add r1, r4, #0x0
- bl FUN_02018268
- add sp, #0x1c
- pop {r4-r5, pc}
-_020181BA:
- ldrb r1, [r3, #0x14]
- add r0, #0x8
- add r0, r0, r5
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x30]
- str r1, [sp, #0x4]
- ldrb r1, [r3, #0x1c]
- str r1, [sp, #0x8]
- add r1, sp, #0x38
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0xc]
- add r1, sp, #0x3c
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x10]
- add r1, sp, #0x40
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x14]
- mov r1, #0x0
- str r1, [sp, #0x18]
- ldrb r3, [r3, #0x10]
- add r1, r4, #0x0
- bl FUN_020183DC
- add sp, #0x1c
- pop {r4-r5, pc}
-
- thumb_func_start FUN_020181EC
-FUN_020181EC: ; 0x020181EC
- push {r4-r5, lr}
- sub sp, #0x1c
- add r4, r2, #0x0
- add r2, r3, #0x0
- mov r3, #0x2c
- add r5, r1, #0x0
- mul r5, r3
- add r1, r0, r5
- ldrb r1, [r1, #0x1c]
- add r3, sp, #0x18
- cmp r1, #0x1
- beq _02018236
- ldrb r1, [r3, #0x14]
- add r0, #0x8
- add r0, r0, r5
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x30]
- str r1, [sp, #0x4]
- ldrb r1, [r3, #0x1c]
- str r1, [sp, #0x8]
- add r1, sp, #0x38
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0xc]
- add r1, sp, #0x3c
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x10]
- add r1, sp, #0x40
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x14]
- mov r1, #0x1
- str r1, [sp, #0x18]
- ldrb r3, [r3, #0x10]
- add r1, r4, #0x0
- bl FUN_02018268
- add sp, #0x1c
- pop {r4-r5, pc}
-_02018236:
- ldrb r1, [r3, #0x14]
- add r0, #0x8
- add r0, r0, r5
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x30]
- str r1, [sp, #0x4]
- ldrb r1, [r3, #0x1c]
- str r1, [sp, #0x8]
- add r1, sp, #0x38
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0xc]
- add r1, sp, #0x3c
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x10]
- add r1, sp, #0x40
- ldrb r1, [r1, #0x0]
- str r1, [sp, #0x14]
- mov r1, #0x1
- str r1, [sp, #0x18]
- ldrb r3, [r3, #0x10]
- add r1, r4, #0x0
- bl FUN_020183DC
- add sp, #0x1c
- pop {r4-r5, pc}
-
- thumb_func_start FUN_02018268
-FUN_02018268: ; 0x02018268
- push {r4-r7, lr}
- sub sp, #0x44
- str r1, [sp, #0x0]
- str r2, [sp, #0x4]
- add r7, r0, #0x0
- ldr r0, [sp, #0x58]
- add r6, r3, #0x0
- str r0, [sp, #0x58]
- ldr r0, [sp, #0x5c]
- ldr r4, [sp, #0x68]
- str r0, [sp, #0x5c]
- ldr r0, [sp, #0x6c]
- str r0, [sp, #0x6c]
- ldr r0, [r7, #0x0]
- str r0, [sp, #0x2c]
- cmp r0, #0x0
- bne _0201828C
- b _020183D6
-_0201828C:
- ldrb r0, [r7, #0x15]
- add r1, sp, #0x40
- add r1, #0x1
- add r2, sp, #0x40
- bl FUN_02017850
- add r0, sp, #0x70
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0201833A
- mov r0, #0x0
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- bls _020182CA
- add r1, sp, #0x48
- ldrb r0, [r1, #0x1c]
- str r0, [sp, #0x1c]
- ldrb r0, [r1, #0x18]
- str r0, [sp, #0x18]
- lsl r1, r0, #0x1
- ldr r0, [sp, #0x5c]
- add r0, r0, r1
- str r0, [sp, #0x14]
-_020182BC:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x28]
- add r0, r1, r0
- add r1, sp, #0x40
- ldrb r1, [r1, #0x0]
- cmp r0, r1
- blt _020182CC
-_020182CA:
- b _020183D6
-_020182CC:
- ldr r2, [sp, #0x1c]
- ldr r1, [sp, #0x28]
- add r2, r2, r1
- ldr r1, [sp, #0x6c]
- cmp r2, r1
- bge _020183D6
- mov r5, #0x0
- cmp r6, #0x0
- bls _02018326
- add r1, r4, #0x0
- mul r1, r2
- lsl r2, r1, #0x1
- ldr r1, [sp, #0x14]
- lsl r0, r0, #0x18
- add r1, r1, r2
- lsr r0, r0, #0x18
- str r1, [sp, #0x10]
- str r0, [sp, #0x30]
-_020182F0:
- add r1, sp, #0x40
- ldr r0, [sp, #0x0]
- ldrb r1, [r1, #0x1]
- add r0, r0, r5
- cmp r0, r1
- bge _02018326
- ldr r1, [sp, #0x18]
- add r1, r1, r5
- cmp r1, r4
- bge _02018326
- ldrb r2, [r7, #0x15]
- lsl r0, r0, #0x18
- ldr r1, [sp, #0x30]
- lsr r0, r0, #0x18
- bl FUN_02017FFC
- ldr r1, [sp, #0x10]
- lsl r2, r5, #0x1
- ldrh r1, [r1, r2]
- lsl r2, r0, #0x1
- ldr r0, [sp, #0x2c]
- strh r1, [r0, r2]
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- blo _020182F0
-_02018326:
- ldr r0, [sp, #0x28]
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- str r1, [sp, #0x28]
- ldr r0, [sp, #0x58]
- cmp r1, r0
- blo _020182BC
- add sp, #0x44
- pop {r4-r7, pc}
-_0201833A:
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- bls _020183D6
- add r1, sp, #0x48
- ldrb r0, [r1, #0x1c]
- str r0, [sp, #0x24]
- ldrb r0, [r1, #0x18]
- str r0, [sp, #0x20]
-_0201834E:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x8]
- add r1, r1, r0
- add r0, sp, #0x40
- ldrb r0, [r0, #0x0]
- cmp r1, r0
- bge _020183D6
- ldr r2, [sp, #0x24]
- ldr r0, [sp, #0x8]
- add r0, r2, r0
- ldr r2, [sp, #0x6c]
- cmp r0, r2
- bge _020183D6
- mov r5, #0x0
- cmp r6, #0x0
- bls _020183C6
- lsl r1, r1, #0x18
- lsl r0, r0, #0x18
- lsr r1, r1, #0x18
- lsr r0, r0, #0x18
- str r1, [sp, #0x34]
- str r0, [sp, #0x3c]
-_0201837A:
- add r1, sp, #0x40
- ldr r0, [sp, #0x0]
- ldrb r1, [r1, #0x1]
- add r0, r0, r5
- cmp r0, r1
- bge _020183C6
- ldr r1, [sp, #0x20]
- add r1, r1, r5
- str r1, [sp, #0xc]
- cmp r1, r4
- bge _020183C6
- ldrb r2, [r7, #0x15]
- lsl r0, r0, #0x18
- ldr r1, [sp, #0x34]
- lsr r0, r0, #0x18
- bl FUN_02017FFC
- str r0, [sp, #0x38]
- ldr r0, [sp, #0xc]
- ldr r1, [sp, #0x3c]
- lsl r0, r0, #0x18
- ldr r3, [sp, #0x6c]
- lsr r0, r0, #0x18
- add r2, r4, #0x0
- bl FUN_02018068
- lsl r1, r0, #0x1
- ldr r0, [sp, #0x5c]
- ldrh r0, [r0, r1]
- ldr r1, [sp, #0x38]
- lsl r2, r1, #0x1
- ldr r1, [sp, #0x2c]
- strh r0, [r1, r2]
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- blo _0201837A
-_020183C6:
- ldr r0, [sp, #0x8]
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- str r1, [sp, #0x8]
- ldr r0, [sp, #0x58]
- cmp r1, r0
- blo _0201834E
-_020183D6:
- add sp, #0x44
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020183DC
-FUN_020183DC: ; 0x020183DC
- push {r4-r7, lr}
- sub sp, #0x44
- str r1, [sp, #0x0]
- str r2, [sp, #0x4]
- add r7, r0, #0x0
- ldr r0, [sp, #0x58]
- add r6, r3, #0x0
- str r0, [sp, #0x58]
- ldr r0, [sp, #0x5c]
- ldr r4, [sp, #0x68]
- str r0, [sp, #0x5c]
- ldr r0, [sp, #0x6c]
- str r0, [sp, #0x6c]
- ldr r0, [r7, #0x0]
- str r0, [sp, #0x2c]
- cmp r0, #0x0
- bne _02018400
- b _0201853C
-_02018400:
- ldrb r0, [r7, #0x15]
- add r1, sp, #0x40
- add r1, #0x1
- add r2, sp, #0x40
- bl FUN_02017850
- add r0, sp, #0x70
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020184A4
- mov r0, #0x0
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- bhi _02018420
- b _0201853C
-_02018420:
- add r1, sp, #0x48
- ldrb r0, [r1, #0x1c]
- str r0, [sp, #0x1c]
- ldrb r0, [r1, #0x18]
- ldr r1, [sp, #0x5c]
- str r0, [sp, #0x18]
- add r0, r1, r0
- str r0, [sp, #0x14]
-_02018430:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x28]
- add r0, r1, r0
- add r1, sp, #0x40
- ldrb r1, [r1, #0x0]
- cmp r0, r1
- bge _0201853C
- ldr r2, [sp, #0x1c]
- ldr r1, [sp, #0x28]
- add r2, r2, r1
- ldr r1, [sp, #0x6c]
- cmp r2, r1
- bge _0201853C
- mov r5, #0x0
- cmp r6, #0x0
- bls _02018490
- ldr r1, [sp, #0x14]
- mul r2, r4
- lsl r0, r0, #0x18
- add r1, r1, r2
- lsr r0, r0, #0x18
- str r1, [sp, #0x10]
- str r0, [sp, #0x30]
-_0201845E:
- add r1, sp, #0x40
- ldr r0, [sp, #0x0]
- ldrb r1, [r1, #0x1]
- add r0, r0, r5
- cmp r0, r1
- bge _02018490
- ldr r1, [sp, #0x18]
- add r1, r1, r5
- cmp r1, r4
- bge _02018490
- ldrb r2, [r7, #0x15]
- lsl r0, r0, #0x18
- ldr r1, [sp, #0x30]
- lsr r0, r0, #0x18
- bl FUN_02017FFC
- ldr r1, [sp, #0x10]
- ldrb r2, [r1, r5]
- ldr r1, [sp, #0x2c]
- strb r2, [r1, r0]
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- blo _0201845E
-_02018490:
- ldr r0, [sp, #0x28]
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- str r1, [sp, #0x28]
- ldr r0, [sp, #0x58]
- cmp r1, r0
- blo _02018430
- add sp, #0x44
- pop {r4-r7, pc}
-_020184A4:
- mov r0, #0x0
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- bls _0201853C
- add r1, sp, #0x48
- ldrb r0, [r1, #0x1c]
- str r0, [sp, #0x24]
- ldrb r0, [r1, #0x18]
- str r0, [sp, #0x20]
-_020184B8:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x8]
- add r1, r1, r0
- add r0, sp, #0x40
- ldrb r0, [r0, #0x0]
- cmp r1, r0
- bge _0201853C
- ldr r2, [sp, #0x24]
- ldr r0, [sp, #0x8]
- add r0, r2, r0
- ldr r2, [sp, #0x6c]
- cmp r0, r2
- bge _0201853C
- mov r5, #0x0
- cmp r6, #0x0
- bls _0201852C
- lsl r1, r1, #0x18
- lsl r0, r0, #0x18
- lsr r1, r1, #0x18
- lsr r0, r0, #0x18
- str r1, [sp, #0x34]
- str r0, [sp, #0x3c]
-_020184E4:
- add r1, sp, #0x40
- ldr r0, [sp, #0x0]
- ldrb r1, [r1, #0x1]
- add r0, r0, r5
- cmp r0, r1
- bge _0201852C
- ldr r1, [sp, #0x20]
- add r1, r1, r5
- str r1, [sp, #0xc]
- cmp r1, r4
- bge _0201852C
- ldrb r2, [r7, #0x15]
- lsl r0, r0, #0x18
- ldr r1, [sp, #0x34]
- lsr r0, r0, #0x18
- bl FUN_02017FFC
- str r0, [sp, #0x38]
- ldr r0, [sp, #0xc]
- ldr r1, [sp, #0x3c]
- lsl r0, r0, #0x18
- ldr r3, [sp, #0x6c]
- lsr r0, r0, #0x18
- add r2, r4, #0x0
- bl FUN_02018068
- ldr r1, [sp, #0x5c]
- ldrb r2, [r1, r0]
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x38]
- strb r2, [r1, r0]
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- blo _020184E4
-_0201852C:
- ldr r0, [sp, #0x8]
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- str r1, [sp, #0x8]
- ldr r0, [sp, #0x58]
- cmp r1, r0
- blo _020184B8
-_0201853C:
- add sp, #0x44
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02018540
-FUN_02018540: ; 0x02018540
- push {r4-r5, lr}
- sub sp, #0xc
- add r4, r2, #0x0
- add r2, r3, #0x0
- mov r3, #0x2c
- add r5, r1, #0x0
- mul r5, r3
- add r1, r0, r5
- ldrb r1, [r1, #0x1c]
- add r3, sp, #0x8
- cmp r1, #0x1
- beq _02018574
- ldrb r1, [r3, #0x14]
- add r0, #0x8
- add r0, r0, r5
- str r1, [sp, #0x0]
- ldrb r1, [r3, #0x18]
- str r1, [sp, #0x4]
- ldrb r1, [r3, #0x1c]
- str r1, [sp, #0x8]
- ldrb r3, [r3, #0x10]
- add r1, r4, #0x0
- bl FUN_02018590
- add sp, #0xc
- pop {r4-r5, pc}
-_02018574:
- ldrb r1, [r3, #0x14]
- add r0, #0x8
- add r0, r0, r5
- str r1, [sp, #0x0]
- ldrb r1, [r3, #0x18]
- str r1, [sp, #0x4]
- lsl r1, r4, #0x18
- ldrb r3, [r3, #0x10]
- lsr r1, r1, #0x18
- bl FUN_02018640
- add sp, #0xc
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02018590
-FUN_02018590: ; 0x02018590
- push {r4-r7, lr}
- sub sp, #0x1c
- str r2, [sp, #0x4]
- str r3, [sp, #0x8]
- ldr r4, [r0, #0x0]
- add r7, r1, #0x0
- str r0, [sp, #0x0]
- ldr r6, [sp, #0x38]
- cmp r4, #0x0
- beq _0201863A
- ldrb r0, [r0, #0x15]
- add r1, sp, #0x18
- add r1, #0x1
- add r2, sp, #0x18
- bl FUN_02017850
- add r0, sp, #0x20
- ldrb r2, [r0, #0x14]
- ldr r1, [sp, #0x8]
- add r1, r1, r2
- ldr r2, [sp, #0x8]
- str r1, [sp, #0xc]
- cmp r2, r1
- bge _0201863A
- ldrb r2, [r0, #0x10]
- ldr r0, [sp, #0x4]
- lsl r1, r6, #0xc
- add r0, r0, r2
- add r1, r1, r7
- str r0, [sp, #0x10]
- lsl r0, r1, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x14]
-_020185D2:
- add r0, sp, #0x18
- ldrb r1, [r0, #0x0]
- ldr r0, [sp, #0x8]
- cmp r0, r1
- bhs _0201863A
- ldr r5, [sp, #0x4]
- ldr r0, [sp, #0x10]
- add r1, r5, #0x0
- cmp r1, r0
- bge _0201862A
-_020185E6:
- add r0, sp, #0x18
- ldrb r0, [r0, #0x1]
- cmp r5, r0
- bhs _0201862A
- ldr r2, [sp, #0x0]
- ldr r1, [sp, #0x8]
- ldrb r2, [r2, #0x15]
- add r0, r5, #0x0
- bl FUN_02017FFC
- cmp r6, #0x11
- bne _02018604
- lsl r0, r0, #0x1
- strh r7, [r4, r0]
- b _0201861E
-_02018604:
- cmp r6, #0x10
- bne _02018618
- lsl r0, r0, #0x1
- ldrh r2, [r4, r0]
- mov r1, #0xf
- lsl r1, r1, #0xc
- and r1, r2
- add r1, r7, r1
- strh r1, [r4, r0]
- b _0201861E
-_02018618:
- lsl r1, r0, #0x1
- ldr r0, [sp, #0x14]
- strh r0, [r4, r1]
-_0201861E:
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- ldr r0, [sp, #0x10]
- cmp r5, r0
- blt _020185E6
-_0201862A:
- ldr r0, [sp, #0x8]
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- ldr r0, [sp, #0xc]
- str r1, [sp, #0x8]
- cmp r1, r0
- blt _020185D2
-_0201863A:
- add sp, #0x1c
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02018640
-FUN_02018640: ; 0x02018640
- push {r4-r7, lr}
- sub sp, #0x14
- str r1, [sp, #0x0]
- add r7, r0, #0x0
- str r2, [sp, #0x4]
- ldr r0, [r7, #0x0]
- add r5, r3, #0x0
- str r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020186B0
- ldrb r0, [r7, #0x15]
- add r1, sp, #0x10
- add r1, #0x1
- add r2, sp, #0x10
- bl FUN_02017850
- add r1, sp, #0x18
- ldrb r0, [r1, #0x14]
- add r0, r5, r0
- str r0, [sp, #0x8]
- cmp r5, r0
- bge _020186B0
- ldrb r1, [r1, #0x10]
- ldr r0, [sp, #0x4]
- add r6, r0, r1
-_02018672:
- add r0, sp, #0x10
- ldrb r0, [r0, #0x0]
- cmp r5, r0
- bhs _020186B0
- ldr r4, [sp, #0x4]
- add r0, r4, #0x0
- cmp r0, r6
- bge _020186A4
-_02018682:
- add r0, sp, #0x10
- ldrb r0, [r0, #0x1]
- cmp r4, r0
- bhs _020186A4
- ldrb r2, [r7, #0x15]
- add r0, r4, #0x0
- add r1, r5, #0x0
- bl FUN_02017FFC
- ldr r2, [sp, #0x0]
- ldr r1, [sp, #0xc]
- strb r2, [r1, r0]
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, r6
- blt _02018682
-_020186A4:
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- ldr r0, [sp, #0x8]
- cmp r5, r0
- blt _02018672
-_020186B0:
- add sp, #0x14
- pop {r4-r7, pc}
-
- thumb_func_start FUN_020186B4
-FUN_020186B4: ; 0x020186B4
- push {r4-r7, lr}
- sub sp, #0x14
- add r5, r0, #0x0
- mov r0, #0x2c
- add r7, r1, #0x0
- mul r7, r0
- str r2, [sp, #0x0]
- add r0, r5, r7
- ldr r4, [r0, #0x8]
- add r6, r3, #0x0
- cmp r4, #0x0
- beq _0201873C
- ldrb r0, [r0, #0x1d]
- add r1, sp, #0x10
- add r1, #0x1
- add r2, sp, #0x10
- bl FUN_02017850
- add r0, sp, #0x18
- ldrb r1, [r0, #0x14]
- add r1, r6, r1
- str r1, [sp, #0x4]
- cmp r6, r1
- bge _0201873C
- add r1, r5, r7
- str r1, [sp, #0xc]
- ldrb r1, [r0, #0x18]
- lsl r1, r1, #0xc
- str r1, [sp, #0x8]
- ldrb r1, [r0, #0x10]
- ldr r0, [sp, #0x0]
- add r7, r0, r1
-_020186F4:
- add r0, sp, #0x10
- ldrb r0, [r0, #0x0]
- cmp r6, r0
- bhs _0201873C
- ldr r5, [sp, #0x0]
- add r0, r5, #0x0
- cmp r0, r7
- bge _02018730
-_02018704:
- add r0, sp, #0x10
- ldrb r0, [r0, #0x1]
- cmp r5, r0
- bhs _02018730
- ldr r2, [sp, #0xc]
- add r0, r5, #0x0
- ldrb r2, [r2, #0x1d]
- add r1, r6, #0x0
- bl FUN_02017FFC
- lsl r0, r0, #0x1
- ldrh r2, [r4, r0]
- ldr r1, _02018740 ; =0x00000FFF
- and r2, r1
- ldr r1, [sp, #0x8]
- orr r1, r2
- strh r1, [r4, r0]
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r7
- blt _02018704
-_02018730:
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- ldr r0, [sp, #0x4]
- cmp r6, r0
- blt _020186F4
-_0201873C:
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-_02018740: .word 0x00000FFF
-
- thumb_func_start FUN_02018744
-FUN_02018744: ; 0x02018744
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r0, #0x2c
- mul r0, r4
- add r2, r5, r0
- ldr r1, [r2, #0x8]
- cmp r1, #0x0
- beq _02018766
- ldr r2, [r2, #0xc]
- mov r0, #0x0
- bl MIi_CpuClear16
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02017CD0
-_02018766:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02018768
-FUN_02018768: ; 0x02018768
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r0, #0x2c
- mul r0, r4
- add r3, r5, r0
- ldr r1, [r3, #0x8]
- cmp r1, #0x0
- beq _0201878A
- add r0, r2, #0x0
- ldr r2, [r3, #0xc]
- bl MIi_CpuClear16
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02017CD0
-_0201878A:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0201878C
-FUN_0201878C: ; 0x0201878C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r0, #0x2c
- mul r0, r4
- add r3, r5, r0
- ldr r1, [r3, #0x8]
- cmp r1, #0x0
- beq _020187AE
- add r0, r2, #0x0
- ldr r2, [r3, #0xc]
- bl MIi_CpuClear16
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0201AC68
-_020187AE:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020187B0
-FUN_020187B0: ; 0x020187B0
- push {r3, lr}
- cmp r0, #0x7
- bhi _02018802
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020187C2: ; jump table (using 16-bit offset)
- .short _020187D2 - _020187C2 - 2; case 0
- .short _020187D8 - _020187C2 - 2; case 1
- .short _020187DE - _020187C2 - 2; case 2
- .short _020187E4 - _020187C2 - 2; case 3
- .short _020187EA - _020187C2 - 2; case 4
- .short _020187F0 - _020187C2 - 2; case 5
- .short _020187F6 - _020187C2 - 2; case 6
- .short _020187FC - _020187C2 - 2; case 7
-_020187D2:
- bl G2_GetBG0CharPtr
- pop {r3, pc}
-_020187D8:
- bl G2_GetBG1CharPtr
- pop {r3, pc}
-_020187DE:
- bl G2_GetBG2CharPtr
- pop {r3, pc}
-_020187E4:
- bl G2_GetBG3CharPtr
- pop {r3, pc}
-_020187EA:
- bl G2S_GetBG0CharPtr
- pop {r3, pc}
-_020187F0:
- bl G2S_GetBG1CharPtr
- pop {r3, pc}
-_020187F6:
- bl G2S_GetBG2CharPtr
- pop {r3, pc}
-_020187FC:
- bl G2S_GetBG3CharPtr
- pop {r3, pc}
-_02018802:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02018808
-FUN_02018808: ; 0x02018808
- push {r4-r7}
- lsl r3, r3, #0x1c
- lsr r3, r3, #0x18
- mov r4, #0x0
- cmp r1, #0x0
- bls _02018842
- mov r5, #0xf
- add r6, r5, #0x0
-_02018818:
- ldrb r7, [r0, r4]
- and r7, r6
- strb r7, [r2, #0x0]
- ldrb r7, [r2, #0x0]
- cmp r7, #0x0
- beq _02018828
- add r7, r7, r3
- strb r7, [r2, #0x0]
-_02018828:
- ldrb r7, [r0, r4]
- asr r7, r7, #0x4
- and r7, r5
- strb r7, [r2, #0x1]
- ldrb r7, [r2, #0x1]
- cmp r7, #0x0
- beq _0201883A
- add r7, r7, r3
- strb r7, [r2, #0x1]
-_0201883A:
- add r4, r4, #0x1
- add r2, r2, #0x2
- cmp r4, r1
- blo _02018818
-_02018842:
- pop {r4-r7}
- bx lr
- .balign 4
-
- thumb_func_start FUN_02018848
-FUN_02018848: ; 0x02018848
- push {r3-r7, lr}
- add r5, r1, #0x0
- add r6, r0, #0x0
- add r0, r3, #0x0
- lsl r1, r5, #0x1
- add r7, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, r6, #0x0
- add r1, r5, #0x0
- add r2, r4, #0x0
- add r3, r7, #0x0
- bl FUN_02018808
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0201886C
-FUN_0201886C: ; 0x0201886C
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldr r0, [r0, #0x8]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02018878
-FUN_02018878: ; 0x02018878
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldrh r0, [r0, #0x20]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02018884
-FUN_02018884: ; 0x02018884
- sub sp, #0x20
- cmp r1, #0x7
- bls _0201888C
- b _02018A38
-_0201888C:
- add r2, r1, r1
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_02018898: ; jump table (using 16-bit offset)
- .short _020188A8 - _02018898 - 2; case 0
- .short _020188BC - _02018898 - 2; case 1
- .short _020188D0 - _02018898 - 2; case 2
- .short _02018920 - _02018898 - 2; case 3
- .short _02018970 - _02018898 - 2; case 4
- .short _02018984 - _02018898 - 2; case 5
- .short _02018998 - _02018898 - 2; case 6
- .short _020189E8 - _02018898 - 2; case 7
-_020188A8:
- ldr r0, _02018A40 ; =0x04000008
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x1e]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_020188BC:
- ldr r0, _02018A44 ; =0x0400000A
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x1c]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_020188D0:
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldrb r0, [r0, #0x1c]
- cmp r0, #0x0
- beq _020188E4
- cmp r0, #0x1
- beq _020188F8
- cmp r0, #0x2
- beq _0201890C
-_020188E4:
- ldr r0, _02018A48 ; =0x0400000C
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x1a]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_020188F8:
- ldr r0, _02018A48 ; =0x0400000C
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x18]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_0201890C:
- ldr r0, _02018A48 ; =0x0400000C
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x16]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018920:
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldrb r0, [r0, #0x1c]
- cmp r0, #0x0
- beq _02018934
- cmp r0, #0x1
- beq _02018948
- cmp r0, #0x2
- beq _0201895C
-_02018934:
- ldr r0, _02018A4C ; =0x0400000E
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x14]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018948:
- ldr r0, _02018A4C ; =0x0400000E
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x12]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_0201895C:
- ldr r0, _02018A4C ; =0x0400000E
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x10]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018970:
- ldr r0, _02018A50 ; =0x04001008
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0xe]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018984:
- ldr r0, _02018A54 ; =0x0400100A
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0xc]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018998:
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldrb r0, [r0, #0x1c]
- cmp r0, #0x0
- beq _020189AC
- cmp r0, #0x1
- beq _020189C0
- cmp r0, #0x2
- beq _020189D4
-_020189AC:
- ldr r0, _02018A58 ; =0x0400100C
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0xa]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_020189C0:
- ldr r0, _02018A58 ; =0x0400100C
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x8]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_020189D4:
- ldr r0, _02018A58 ; =0x0400100C
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x6]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_020189E8:
- mov r2, #0x2c
- mul r2, r1
- add r0, r0, r2
- ldrb r0, [r0, #0x1c]
- cmp r0, #0x0
- beq _020189FC
- cmp r0, #0x1
- beq _02018A10
- cmp r0, #0x2
- beq _02018A24
-_020189FC:
- ldr r0, _02018A5C ; =0x0400100E
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x4]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018A10:
- ldr r0, _02018A5C ; =0x0400100E
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x2]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018A24:
- ldr r0, _02018A5C ; =0x0400100E
- ldrh r1, [r0, #0x0]
- add r0, sp, #0x0
- add sp, #0x20
- strh r1, [r0, #0x0]
- lsl r0, r1, #0x1e
- lsr r0, r0, #0x1e
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
-_02018A38:
- mov r0, #0x0
- add sp, #0x20
- bx lr
- nop
-_02018A40: .word 0x04000008
-_02018A44: .word 0x0400000A
-_02018A48: .word 0x0400000C
-_02018A4C: .word 0x0400000E
-_02018A50: .word 0x04001008
-_02018A54: .word 0x0400100A
-_02018A58: .word 0x0400100C
-_02018A5C: .word 0x0400100E
-
- thumb_func_start FUN_02018A60
-FUN_02018A60: ; 0x02018A60
- push {r3-r7, lr}
- sub sp, #0x68
- str r2, [sp, #0x8]
- str r3, [sp, #0xc]
- add r2, sp, #0x70
- str r0, [sp, #0x0]
- ldrh r0, [r2, #0x10]
- str r1, [sp, #0x4]
- ldrh r2, [r2, #0x18]
- str r0, [sp, #0x10]
- add r0, r1, #0x0
- ldrh r1, [r0, #0x4]
- ldr r0, [sp, #0x10]
- sub r3, r1, r0
- cmp r3, r2
- bge _02018A88
- ldr r0, [sp, #0x8]
- add r0, r0, r3
- str r0, [sp, #0x50]
- b _02018A8E
-_02018A88:
- ldr r0, [sp, #0x8]
- add r0, r2, r0
- str r0, [sp, #0x50]
-_02018A8E:
- ldr r2, [sp, #0x4]
- add r3, sp, #0x70
- ldrh r0, [r3, #0x14]
- ldrh r2, [r2, #0x6]
- ldrh r3, [r3, #0x1c]
- sub r4, r2, r0
- cmp r4, r3
- bge _02018AA6
- ldr r2, [sp, #0xc]
- add r2, r2, r4
- str r2, [sp, #0x4c]
- b _02018AAC
-_02018AA6:
- ldr r2, [sp, #0xc]
- add r2, r3, r2
- str r2, [sp, #0x4c]
-_02018AAC:
- ldr r2, [sp, #0x0]
- mov r3, #0x7
- ldrh r4, [r2, #0x4]
- add r2, r4, #0x0
- and r2, r3
- add r2, r4, r2
- asr r2, r2, #0x3
- str r2, [sp, #0x48]
- add r2, r1, #0x0
- and r2, r3
- add r1, r1, r2
- asr r1, r1, #0x3
- str r1, [sp, #0x44]
- add r1, sp, #0x70
- ldrh r1, [r1, #0x20]
- ldr r2, _02018C98 ; =0x0000FFFF
- str r1, [sp, #0x38]
- cmp r1, r2
- bne _02018BB4
- ldr r2, [sp, #0xc]
- ldr r1, [sp, #0x4c]
- cmp r2, r1
- bge _02018ADE
- cmp r2, r1
- blt _02018AE0
-_02018ADE:
- b _02018C92
-_02018AE0:
- add r1, r2, #0x0
- lsl r1, r1, #0x2
- lsl r0, r0, #0x2
- str r1, [sp, #0x28]
- str r0, [sp, #0x24]
-_02018AEA:
- ldr r3, [sp, #0x8]
- ldr r0, [sp, #0x50]
- add r1, r3, #0x0
- ldr r4, [sp, #0x10]
- cmp r1, r0
- bge _02018B96
- cmp r1, r0
- bge _02018B96
- add r0, r3, #0x0
- lsl r5, r0, #0x2
- add r0, r4, #0x0
- lsl r6, r0, #0x2
- ldr r0, _02018C9C ; =0x00003FE0
- ldr r1, [sp, #0x28]
- ldr r2, [sp, #0x48]
- and r1, r0
- mul r2, r1
- str r2, [sp, #0x20]
- ldr r2, [sp, #0x28]
- mov r1, #0x1c
- and r2, r1
- str r2, [sp, #0x1c]
- ldr r2, [sp, #0x24]
- and r0, r2
- ldr r2, [sp, #0x44]
- mul r2, r0
- ldr r0, [sp, #0x24]
- str r2, [sp, #0x18]
- and r0, r1
- str r0, [sp, #0x14]
-_02018B26:
- ldr r0, [sp, #0x4]
- asr r2, r4, #0x1
- mov r1, #0x3
- ldr r0, [r0, #0x0]
- and r1, r2
- add r1, r0, r1
- ldr r0, _02018C9C ; =0x00003FE0
- and r0, r6
- add r1, r1, r0
- ldr r0, [sp, #0x18]
- add r6, r6, #0x4
- add r0, r1, r0
- str r0, [sp, #0x64]
- lsl r0, r4, #0x1f
- lsr r2, r0, #0x1d
- ldr r0, [sp, #0x0]
- asr r1, r3, #0x1
- ldr r7, [r0, #0x0]
- mov r0, #0x3
- and r0, r1
- ldr r1, _02018C9C ; =0x00003FE0
- add r4, r4, #0x1
- and r1, r5
- str r1, [sp, #0x54]
- add r1, r7, r0
- ldr r0, [sp, #0x54]
- add r5, r5, #0x4
- add r1, r0, r1
- ldr r0, [sp, #0x20]
- add r1, r0, r1
- ldr r0, [sp, #0x1c]
- ldrb r1, [r0, r1]
- lsl r0, r3, #0x1f
- lsr r0, r0, #0x1d
- asr r1, r0
- mov r0, #0xf
- and r0, r1
- add r7, r0, #0x0
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #0x64]
- lsl r7, r2
- ldrb r0, [r0, r1]
- add r3, r3, #0x1
- str r0, [sp, #0x58]
- mov r0, #0xf0
- asr r0, r2
- ldr r1, [sp, #0x58]
- add r2, r7, #0x0
- and r0, r1
- orr r2, r0
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #0x64]
- strb r2, [r0, r1]
- ldr r0, [sp, #0x50]
- cmp r3, r0
- blt _02018B26
-_02018B96:
- ldr r0, [sp, #0x28]
- add r0, r0, #0x4
- str r0, [sp, #0x28]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x24]
- ldr r1, [sp, #0xc]
- add r0, r0, #0x4
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x4c]
- cmp r1, r0
- blt _02018AEA
- add sp, #0x68
- pop {r3-r7, pc}
-_02018BB4:
- ldr r2, [sp, #0xc]
- ldr r1, [sp, #0x4c]
- cmp r2, r1
- bge _02018C92
- cmp r2, r1
- bge _02018C92
- add r1, r2, #0x0
- lsl r1, r1, #0x2
- lsl r0, r0, #0x2
- str r1, [sp, #0x40]
- str r0, [sp, #0x3c]
-_02018BCA:
- ldr r3, [sp, #0x8]
- ldr r0, [sp, #0x50]
- add r1, r3, #0x0
- ldr r4, [sp, #0x10]
- cmp r1, r0
- bge _02018C78
- cmp r1, r0
- bge _02018C78
- add r0, r3, #0x0
- lsl r1, r0, #0x2
- add r0, r4, #0x0
- lsl r2, r0, #0x2
- ldr r0, _02018C9C ; =0x00003FE0
- ldr r5, [sp, #0x40]
- ldr r6, [sp, #0x48]
- and r5, r0
- mul r6, r5
- str r6, [sp, #0x34]
- ldr r6, [sp, #0x40]
- mov r5, #0x1c
- and r6, r5
- str r6, [sp, #0x30]
- ldr r6, [sp, #0x3c]
- and r0, r6
- ldr r6, [sp, #0x44]
- mul r6, r0
- ldr r0, [sp, #0x3c]
- str r6, [sp, #0x2c]
- and r0, r5
- str r0, [sp, #0x60]
-_02018C06:
- ldr r0, [sp, #0x4]
- asr r6, r4, #0x1
- mov r5, #0x3
- and r5, r6
- ldr r0, [r0, #0x0]
- asr r6, r3, #0x1
- add r5, r0, r5
- ldr r0, _02018C9C ; =0x00003FE0
- and r0, r2
- add r5, r5, r0
- ldr r0, [sp, #0x2c]
- add r5, r5, r0
- ldr r0, [sp, #0x0]
- ldr r7, [r0, #0x0]
- mov r0, #0x3
- and r0, r6
- ldr r6, _02018C9C ; =0x00003FE0
- and r6, r1
- str r6, [sp, #0x5c]
- add r6, r7, r0
- ldr r0, [sp, #0x5c]
- add r6, r0, r6
- ldr r0, [sp, #0x34]
- add r6, r0, r6
- ldr r0, [sp, #0x30]
- ldrb r6, [r0, r6]
- lsl r0, r3, #0x1f
- lsr r0, r0, #0x1d
- asr r6, r0
- mov r0, #0xf
- and r0, r6
- ldr r6, [sp, #0x38]
- cmp r0, r6
- beq _02018C6A
- lsl r6, r4, #0x1f
- lsr r7, r6, #0x1d
- lsl r0, r7
- mov lr, r0
- ldr r0, [sp, #0x60]
- ldrb r0, [r5, r0]
- mov r12, r0
- mov r0, #0xf0
- add r6, r0, #0x0
- asr r6, r7
- mov r0, r12
- and r0, r6
- mov r6, lr
- orr r6, r0
- ldr r0, [sp, #0x60]
- strb r6, [r5, r0]
-_02018C6A:
- ldr r0, [sp, #0x50]
- add r3, r3, #0x1
- add r1, r1, #0x4
- add r2, r2, #0x4
- add r4, r4, #0x1
- cmp r3, r0
- blt _02018C06
-_02018C78:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x4
- str r0, [sp, #0x40]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x3c]
- ldr r1, [sp, #0xc]
- add r0, r0, #0x4
- str r0, [sp, #0x3c]
- ldr r0, [sp, #0x4c]
- cmp r1, r0
- blt _02018BCA
-_02018C92:
- add sp, #0x68
- pop {r3-r7, pc}
- nop
-_02018C98: .word 0x0000FFFF
-_02018C9C: .word 0x00003FE0
-
- thumb_func_start FUN_02018CA0
-FUN_02018CA0: ; 0x02018CA0
- push {r3-r7, lr}
- sub sp, #0x50
- str r2, [sp, #0x8]
- str r3, [sp, #0xc]
- add r2, sp, #0x58
- str r0, [sp, #0x0]
- ldrh r0, [r2, #0x10]
- str r1, [sp, #0x4]
- ldrh r2, [r2, #0x18]
- str r0, [sp, #0x10]
- add r0, r1, #0x0
- ldrh r1, [r0, #0x4]
- ldr r0, [sp, #0x10]
- sub r3, r1, r0
- cmp r3, r2
- bge _02018CC6
- ldr r0, [sp, #0x8]
- add r0, r0, r3
- b _02018CCA
-_02018CC6:
- ldr r0, [sp, #0x8]
- add r0, r2, r0
-_02018CCA:
- ldr r2, [sp, #0x4]
- add r3, sp, #0x58
- mov r12, r0
- ldrh r0, [r3, #0x14]
- ldrh r2, [r2, #0x6]
- ldrh r3, [r3, #0x1c]
- sub r4, r2, r0
- cmp r4, r3
- bge _02018CE2
- ldr r2, [sp, #0xc]
- add r2, r2, r4
- b _02018CE6
-_02018CE2:
- ldr r2, [sp, #0xc]
- add r2, r3, r2
-_02018CE6:
- mov lr, r2
- ldr r2, [sp, #0x0]
- mov r3, #0x7
- ldrh r4, [r2, #0x4]
- add r2, r4, #0x0
- and r2, r3
- add r2, r4, r2
- asr r2, r2, #0x3
- str r2, [sp, #0x4c]
- add r2, r1, #0x0
- and r2, r3
- add r1, r1, r2
- asr r1, r1, #0x3
- str r1, [sp, #0x48]
- add r1, sp, #0x58
- ldrh r1, [r1, #0x20]
- ldr r2, _02018E80 ; =0x0000FFFF
- str r1, [sp, #0x3c]
- cmp r1, r2
- bne _02018DC6
- ldr r2, [sp, #0xc]
- mov r1, lr
- cmp r2, r1
- bge _02018D1C
- mov r1, lr
- cmp r2, r1
- blt _02018D1E
-_02018D1C:
- b _02018E7C
-_02018D1E:
- add r1, r2, #0x0
- lsl r1, r1, #0x3
- lsl r0, r0, #0x3
- str r1, [sp, #0x28]
- str r0, [sp, #0x24]
-_02018D28:
- ldr r1, [sp, #0x8]
- mov r0, r12
- add r2, r1, #0x0
- ldr r7, [sp, #0x10]
- cmp r2, r0
- bge _02018DA8
- mov r0, r12
- cmp r2, r0
- bge _02018DA8
- add r0, r1, #0x0
- lsl r2, r0, #0x3
- add r0, r7, #0x0
- lsl r3, r0, #0x3
- ldr r6, _02018E84 ; =0x00007FC0
- ldr r0, [sp, #0x28]
- ldr r4, [sp, #0x4c]
- and r0, r6
- mul r4, r0
- str r4, [sp, #0x20]
- ldr r0, [sp, #0x28]
- mov r5, #0x38
- and r0, r5
- str r0, [sp, #0x1c]
- ldr r0, [sp, #0x24]
- ldr r4, [sp, #0x48]
- and r0, r6
- mul r4, r0
- ldr r0, [sp, #0x24]
- str r4, [sp, #0x18]
- and r0, r5
- str r0, [sp, #0x14]
-_02018D66:
- ldr r0, [sp, #0x0]
- add r5, r1, #0x0
- mov r4, #0x7
- and r5, r4
- ldr r0, [r0, #0x0]
- ldr r4, _02018E84 ; =0x00007FC0
- add r0, r0, r5
- and r4, r2
- add r4, r4, r0
- ldr r0, [sp, #0x20]
- add r5, r7, #0x0
- add r4, r0, r4
- ldr r0, [sp, #0x1c]
- add r1, r1, #0x1
- ldrb r6, [r0, r4]
- ldr r0, [sp, #0x4]
- mov r4, #0x7
- and r5, r4
- ldr r0, [r0, #0x0]
- ldr r4, _02018E84 ; =0x00007FC0
- add r0, r0, r5
- and r4, r3
- add r4, r4, r0
- ldr r0, [sp, #0x18]
- add r2, #0x8
- add r4, r0, r4
- ldr r0, [sp, #0x14]
- add r3, #0x8
- strb r6, [r0, r4]
- mov r0, r12
- add r7, r7, #0x1
- cmp r1, r0
- blt _02018D66
-_02018DA8:
- ldr r0, [sp, #0x28]
- add r0, #0x8
- str r0, [sp, #0x28]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x24]
- ldr r1, [sp, #0xc]
- add r0, #0x8
- str r0, [sp, #0x24]
- mov r0, lr
- cmp r1, r0
- blt _02018D28
- add sp, #0x50
- pop {r3-r7, pc}
-_02018DC6:
- ldr r2, [sp, #0xc]
- mov r1, lr
- cmp r2, r1
- bge _02018E7C
- mov r1, lr
- cmp r2, r1
- bge _02018E7C
- add r1, r2, #0x0
- lsl r1, r1, #0x3
- lsl r0, r0, #0x3
- str r1, [sp, #0x44]
- str r0, [sp, #0x40]
-_02018DDE:
- ldr r2, [sp, #0x8]
- mov r0, r12
- add r1, r2, #0x0
- ldr r3, [sp, #0x10]
- cmp r1, r0
- bge _02018E62
- mov r0, r12
- cmp r1, r0
- bge _02018E62
- add r0, r2, #0x0
- lsl r6, r0, #0x3
- add r0, r3, #0x0
- lsl r1, r0, #0x3
- ldr r7, _02018E84 ; =0x00007FC0
- ldr r0, [sp, #0x44]
- ldr r4, [sp, #0x4c]
- and r0, r7
- mul r4, r0
- str r4, [sp, #0x38]
- ldr r0, [sp, #0x44]
- mov r5, #0x38
- and r0, r5
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x40]
- ldr r4, [sp, #0x48]
- and r0, r7
- mul r4, r0
- ldr r0, [sp, #0x40]
- str r4, [sp, #0x30]
- and r0, r5
- str r0, [sp, #0x2c]
-_02018E1C:
- ldr r0, [sp, #0x4]
- mov r4, #0x7
- ldr r0, [r0, #0x0]
- and r4, r3
- add r0, r0, r4
- ldr r4, _02018E84 ; =0x00007FC0
- add r5, r2, #0x0
- and r4, r1
- add r4, r0, r4
- ldr r0, [sp, #0x30]
- add r7, r4, r0
- ldr r0, [sp, #0x0]
- mov r4, #0x7
- and r5, r4
- ldr r0, [r0, #0x0]
- ldr r4, _02018E84 ; =0x00007FC0
- add r0, r0, r5
- and r4, r6
- add r4, r4, r0
- ldr r0, [sp, #0x38]
- add r4, r0, r4
- ldr r0, [sp, #0x34]
- ldrb r0, [r0, r4]
- ldr r4, [sp, #0x3c]
- cmp r0, r4
- beq _02018E54
- ldr r4, [sp, #0x2c]
- strb r0, [r7, r4]
-_02018E54:
- add r2, r2, #0x1
- mov r0, r12
- add r6, #0x8
- add r1, #0x8
- add r3, r3, #0x1
- cmp r2, r0
- blt _02018E1C
-_02018E62:
- ldr r0, [sp, #0x44]
- add r0, #0x8
- str r0, [sp, #0x44]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x40]
- ldr r1, [sp, #0xc]
- add r0, #0x8
- str r0, [sp, #0x40]
- mov r0, lr
- cmp r1, r0
- blt _02018DDE
-_02018E7C:
- add sp, #0x50
- pop {r3-r7, pc}
- .balign 4
-_02018E80: .word 0x0000FFFF
-_02018E84: .word 0x00007FC0
-
- thumb_func_start FUN_02018E88
-FUN_02018E88: ; 0x02018E88
- push {r4-r7, lr}
- sub sp, #0x14
- str r1, [sp, #0x4]
- str r2, [sp, #0x8]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x4]
- add r6, r0, r3
- ldr r0, [sp, #0x0]
- ldrh r0, [r0, #0x4]
- cmp r6, r0
- ble _02018EA4
- add r6, r0, #0x0
-_02018EA4:
- add r1, sp, #0x18
- ldrh r2, [r1, #0x10]
- ldr r1, [sp, #0x8]
- add r1, r1, r2
- mov r12, r1
- ldr r1, [sp, #0x0]
- ldrh r2, [r1, #0x6]
- mov r1, r12
- cmp r1, r2
- ble _02018EBA
- mov r12, r2
-_02018EBA:
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- mov lr, r0
- ldr r1, [sp, #0x8]
- mov r0, r12
- cmp r1, r0
- bge _02018F44
- add r0, r1, #0x0
- lsl r0, r0, #0x2
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x2c]
- lsl r0, r0, #0x4
- str r0, [sp, #0x10]
-_02018ED8:
- ldr r1, [sp, #0x4]
- add r0, r1, #0x0
- cmp r0, r6
- bge _02018F32
- lsl r5, r0, #0x2
- ldr r2, _02018F48 ; =0x00003FE0
- ldr r0, [sp, #0xc]
- and r0, r2
- add r7, r0, #0x0
- mov r2, lr
- mul r7, r2
- ldr r0, [sp, #0xc]
- mov r2, #0x1c
- and r2, r0
-_02018EF4:
- ldr r0, [sp, #0x0]
- asr r3, r1, #0x1
- ldr r4, [r0, #0x0]
- mov r0, #0x3
- and r0, r3
- ldr r3, _02018F48 ; =0x00003FE0
- add r0, r4, r0
- and r3, r5
- add r0, r0, r3
- add r0, r0, r7
- mov r3, #0x1
- tst r3, r1
- ldrb r4, [r0, r2]
- beq _02018F1C
- mov r3, #0xf
- and r3, r4
- strb r3, [r0, r2]
- ldrb r4, [r0, r2]
- ldr r3, [sp, #0x10]
- b _02018F26
-_02018F1C:
- mov r3, #0xf0
- and r3, r4
- strb r3, [r0, r2]
- ldrb r4, [r0, r2]
- ldr r3, [sp, #0x2c]
-_02018F26:
- orr r3, r4
- add r1, r1, #0x1
- strb r3, [r0, r2]
- add r5, r5, #0x4
- cmp r1, r6
- blt _02018EF4
-_02018F32:
- ldr r0, [sp, #0xc]
- add r0, r0, #0x4
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x8]
- add r1, r0, #0x1
- mov r0, r12
- str r1, [sp, #0x8]
- cmp r1, r0
- blt _02018ED8
-_02018F44:
- add sp, #0x14
- pop {r4-r7, pc}
- .balign 4
-_02018F48: .word 0x00003FE0
-
- thumb_func_start FUN_02018F4C
-FUN_02018F4C: ; 0x02018F4C
- push {r4-r7, lr}
- sub sp, #0x14
- str r1, [sp, #0x4]
- str r2, [sp, #0x8]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x2c]
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x4]
- add r5, r0, r3
- ldr r0, [sp, #0x0]
- ldrh r0, [r0, #0x4]
- cmp r5, r0
- ble _02018F68
- add r5, r0, #0x0
-_02018F68:
- add r1, sp, #0x18
- ldrh r2, [r1, #0x10]
- ldr r1, [sp, #0x8]
- add r1, r1, r2
- mov lr, r1
- ldr r1, [sp, #0x0]
- ldrh r2, [r1, #0x6]
- mov r1, lr
- cmp r1, r2
- ble _02018F7E
- mov lr, r2
-_02018F7E:
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x10]
- ldr r1, [sp, #0x8]
- mov r0, lr
- cmp r1, r0
- bge _02018FEA
- add r0, r1, #0x0
- lsl r0, r0, #0x3
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x4]
- lsl r0, r0, #0x3
- mov r12, r0
-_02018F9C:
- ldr r2, [sp, #0x4]
- add r0, r2, #0x0
- cmp r0, r5
- bge _02018FD8
- ldr r1, [sp, #0xc]
- ldr r0, _02018FF0 ; =0x00007FC0
- mov r3, r12
- and r0, r1
- add r7, r0, #0x0
- ldr r1, [sp, #0x10]
- mov r0, #0x38
- mul r7, r1
- ldr r1, [sp, #0xc]
- add r6, r1, #0x0
- and r6, r0
-_02018FBA:
- ldr r0, [sp, #0x0]
- ldr r4, _02018FF0 ; =0x00007FC0
- ldr r1, [r0, #0x0]
- mov r0, #0x7
- and r0, r2
- and r4, r3
- add r0, r1, r0
- add r0, r4, r0
- add r1, r7, r0
- ldr r0, [sp, #0x2c]
- add r2, r2, #0x1
- strb r0, [r6, r1]
- add r3, #0x8
- cmp r2, r5
- blt _02018FBA
-_02018FD8:
- ldr r0, [sp, #0xc]
- add r0, #0x8
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x8]
- add r1, r0, #0x1
- mov r0, lr
- str r1, [sp, #0x8]
- cmp r1, r0
- blt _02018F9C
-_02018FEA:
- add sp, #0x14
- pop {r4-r7, pc}
- nop
-_02018FF0: .word 0x00007FC0
-
- thumb_func_start FUN_02018FF4
-FUN_02018FF4: ; 0x02018FF4
- push {r4-r6, lr}
- add r5, r1, #0x0
- lsl r1, r5, #0x4
- bl AllocFromHeap
- add r6, r0, #0x0
- mov r4, #0x0
- cmp r5, #0x0
- ble _02019018
-_02019006:
- lsl r0, r4, #0x4
- add r0, r6, r0
- bl FUN_0201901C
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, r5
- blt _02019006
-_02019018:
- add r0, r6, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0201901C
-FUN_0201901C: ; 0x0201901C
- mov r3, #0x0
- str r3, [r0, #0x0]
- mov r1, #0xff
- strb r1, [r0, #0x4]
- strb r3, [r0, #0x5]
- strb r3, [r0, #0x6]
- strb r3, [r0, #0x7]
- strb r3, [r0, #0x8]
- strb r3, [r0, #0x9]
- ldrh r2, [r0, #0xa]
- ldr r1, _02019044 ; =0xFFFF8000
- and r2, r1
- strh r2, [r0, #0xa]
- str r3, [r0, #0xc]
- ldrh r2, [r0, #0xa]
- sub r1, r1, #0x1
- and r1, r2
- strh r1, [r0, #0xa]
- bx lr
- nop
-_02019044: .word 0xFFFF8000
-
- thumb_func_start FUN_02019048
-FUN_02019048: ; 0x02019048
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _0201905A
- ldrb r1, [r0, #0x4]
- cmp r1, #0xff
- beq _0201905A
- ldr r0, [r0, #0xc]
- cmp r0, #0x0
- bne _0201905E
-_0201905A:
- mov r0, #0x0
- bx lr
-_0201905E:
- mov r0, #0x1
- bx lr
- .balign 4
-
- thumb_func_start FUN_02019064
-FUN_02019064: ; 0x02019064
- push {r3-r7, lr}
- add r6, r2, #0x0
- add r5, r0, #0x0
- mov r0, #0x2c
- add r7, r6, #0x0
- mul r7, r0
- add r4, r1, #0x0
- str r3, [sp, #0x0]
- add r1, r5, r7
- ldr r0, [r1, #0x8]
- cmp r0, #0x0
- beq _020190E0
- add r3, sp, #0x8
- ldrb r2, [r1, #0x1f]
- ldrb r1, [r3, #0x14]
- ldrb r3, [r3, #0x18]
- ldr r0, [r5, #0x0]
- mul r3, r1
- add r1, r2, #0x0
- mul r1, r3
- bl AllocFromHeap
- add r1, r0, #0x0
- beq _020190E0
- str r5, [r4, #0x0]
- strb r6, [r4, #0x4]
- ldr r0, [sp, #0x0]
- add r3, sp, #0x8
- strb r0, [r4, #0x5]
- ldrb r0, [r3, #0x10]
- ldr r2, _020190E4 ; =0xFFFF8000
- strb r0, [r4, #0x6]
- ldrb r0, [r3, #0x14]
- strb r0, [r4, #0x7]
- ldrb r0, [r3, #0x18]
- strb r0, [r4, #0x8]
- ldrb r0, [r3, #0x1c]
- strb r0, [r4, #0x9]
- ldrh r0, [r4, #0xa]
- ldrh r3, [r3, #0x20]
- and r0, r2
- lsr r2, r2, #0x11
- and r2, r3
- orr r0, r2
- strh r0, [r4, #0xa]
- str r1, [r4, #0xc]
- add r0, r5, r7
- ldrb r0, [r0, #0x1e]
- cmp r0, #0x0
- bne _020190CC
- mov r2, #0x0
- b _020190CE
-_020190CC:
- mov r2, #0x1
-_020190CE:
- ldrh r1, [r4, #0xa]
- ldr r0, _020190E8 ; =0xFFFF7FFF
- and r1, r0
- lsl r0, r2, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x10
- orr r0, r1
- strh r0, [r4, #0xa]
-_020190E0:
- pop {r3-r7, pc}
- nop
-_020190E4: .word 0xFFFF8000
-_020190E8: .word 0xFFFF7FFF
-
- thumb_func_start FUN_020190EC
-FUN_020190EC: ; 0x020190EC
- push {r3-r7, lr}
- sub sp, #0x8
- str r3, [sp, #0x0]
- add r5, r0, #0x0
- ldr r0, [sp, #0x24]
- add r6, r2, #0x0
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x0]
- add r4, r1, #0x0
- mul r0, r6
- lsl r0, r0, #0x5
- str r0, [sp, #0x4]
- ldr r0, [r5, #0x0]
- ldr r1, [sp, #0x4]
- bl AllocFromHeap
- ldr r1, [sp, #0x24]
- add r7, r0, #0x0
- lsl r2, r1, #0x4
- orr r1, r2
- lsl r1, r1, #0x18
- ldr r2, [sp, #0x4]
- lsr r1, r1, #0x18
- bl memset
- cmp r7, #0x0
- beq _02019148
- str r5, [r4, #0x0]
- strb r6, [r4, #0x7]
- ldr r0, [sp, #0x0]
- strb r0, [r4, #0x8]
- ldrh r1, [r4, #0xa]
- ldr r0, _0201914C ; =0xFFFF8000
- add r3, r1, #0x0
- add r1, sp, #0x10
- ldrh r2, [r1, #0x10]
- lsr r1, r0, #0x11
- and r3, r0
- and r1, r2
- orr r1, r3
- strh r1, [r4, #0xa]
- str r7, [r4, #0xc]
- ldrh r1, [r4, #0xa]
- sub r0, r0, #0x1
- and r0, r1
- strh r0, [r4, #0xa]
-_02019148:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_0201914C: .word 0xFFFF8000
-
- thumb_func_start FUN_02019150
-FUN_02019150: ; 0x02019150
- push {lr}
- sub sp, #0x14
- add r3, r2, #0x0
- ldrb r2, [r3, #0x2]
- str r2, [sp, #0x0]
- ldrb r2, [r3, #0x3]
- str r2, [sp, #0x4]
- ldrb r2, [r3, #0x4]
- str r2, [sp, #0x8]
- ldrb r2, [r3, #0x5]
- str r2, [sp, #0xc]
- ldrh r2, [r3, #0x6]
- str r2, [sp, #0x10]
- ldrb r2, [r3, #0x0]
- ldrb r3, [r3, #0x1]
- bl FUN_02019064
- add sp, #0x14
- pop {pc}
- .balign 4
-
- thumb_func_start FUN_02019178
-FUN_02019178: ; 0x02019178
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0xc]
- bl FreeToHeap
- mov r2, #0x0
- str r2, [r4, #0x0]
- mov r0, #0xff
- strb r0, [r4, #0x4]
- strb r2, [r4, #0x5]
- strb r2, [r4, #0x6]
- strb r2, [r4, #0x7]
- strb r2, [r4, #0x8]
- strb r2, [r4, #0x9]
- ldrh r1, [r4, #0xa]
- ldr r0, _020191A0 ; =0xFFFF8000
- and r0, r1
- strh r0, [r4, #0xa]
- str r2, [r4, #0xc]
- pop {r4, pc}
- .balign 4
-_020191A0: .word 0xFFFF8000
-
- thumb_func_start FUN_020191A4
-FUN_020191A4: ; 0x020191A4
- push {r4-r6, lr}
- add r6, r1, #0x0
- add r5, r0, #0x0
- mov r4, #0x0
- cmp r6, #0x0
- ble _020191C8
-_020191B0:
- lsl r0, r4, #0x4
- add r0, r5, r0
- ldr r0, [r0, #0xc]
- cmp r0, #0x0
- beq _020191BE
- bl FreeToHeap
-_020191BE:
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, r6
- blt _020191B0
-_020191C8:
- add r0, r5, #0x0
- bl FreeToHeap
- pop {r4-r6, pc}
-
- thumb_func_start CopyWindowToVram
-CopyWindowToVram: ; 0x020191D0
- push {r4, lr}
- add r4, r0, #0x0
- bne _020191DA
- bl ErrorHandling
-_020191DA:
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020191E4
- bl ErrorHandling
-_020191E4:
- ldrb r0, [r4, #0x4]
- cmp r0, #0x8
- blo _020191EE
- bl ErrorHandling
-_020191EE:
- ldrb r1, [r4, #0x4]
- mov r0, #0x2c
- ldr r2, [r4, #0x0]
- mul r0, r1
- add r0, r2, r0
- ldrb r0, [r0, #0x1c]
- cmp r0, #0x3
- blo _02019202
- bl ErrorHandling
-_02019202:
- ldrb r2, [r4, #0x4]
- mov r1, #0x2c
- ldr r3, [r4, #0x0]
- mul r1, r2
- add r1, r3, r1
- ldrb r1, [r1, #0x1c]
- add r0, r4, #0x0
- lsl r2, r1, #0x2
- ldr r1, _0201921C ; =UNK_020EDB68
- ldr r1, [r1, r2]
- blx r1
- pop {r4, pc}
- nop
-_0201921C: .word UNK_020EDB68
-
- thumb_func_start FUN_02019220
-FUN_02019220: ; 0x02019220
- push {r4, lr}
- add r4, r0, #0x0
- bne _0201922A
- bl ErrorHandling
-_0201922A:
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02019234
- bl ErrorHandling
-_02019234:
- ldrb r0, [r4, #0x4]
- cmp r0, #0x8
- blo _0201923E
- bl ErrorHandling
-_0201923E:
- ldrb r1, [r4, #0x4]
- mov r0, #0x2c
- ldr r2, [r4, #0x0]
- mul r0, r1
- add r0, r2, r0
- ldrb r0, [r0, #0x1c]
- cmp r0, #0x3
- blo _02019252
- bl ErrorHandling
-_02019252:
- ldrb r2, [r4, #0x4]
- mov r1, #0x2c
- ldr r3, [r4, #0x0]
- mul r1, r2
- add r1, r3, r1
- ldrb r1, [r1, #0x1c]
- add r0, r4, #0x0
- lsl r2, r1, #0x2
- ldr r1, _0201926C ; =UNK_020EDB5C
- ldr r1, [r1, r2]
- blx r1
- pop {r4, pc}
- nop
-_0201926C: .word UNK_020EDB5C
-
- thumb_func_start FUN_02019270
-FUN_02019270: ; 0x02019270
- push {r3, lr}
- ldrb r2, [r0, #0x4]
- mov r1, #0x2c
- ldr r3, [r0, #0x0]
- mul r1, r2
- add r1, r3, r1
- ldrb r1, [r1, #0x1c]
- lsl r2, r1, #0x2
- ldr r1, _02019288 ; =UNK_020EDB38
- ldr r1, [r1, r2]
- blx r1
- pop {r3, pc}
- .balign 4
-_02019288: .word UNK_020EDB38
-
- thumb_func_start FUN_0201928C
-FUN_0201928C: ; 0x0201928C
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldrb r6, [r5, #0x7]
- ldrb r4, [r5, #0x8]
- strb r1, [r5, #0x7]
- strb r2, [r5, #0x8]
- ldrb r3, [r5, #0x4]
- mov r2, #0x2c
- ldr r1, [r5, #0x0]
- mul r2, r3
- add r1, r1, r2
- ldrb r1, [r1, #0x1c]
- lsl r2, r1, #0x2
- ldr r1, _020192B4 ; =UNK_020EDB38
- ldr r1, [r1, r2]
- blx r1
- strb r6, [r5, #0x7]
- strb r4, [r5, #0x8]
- pop {r4-r6, pc}
- nop
-_020192B4: .word UNK_020EDB38
-
- thumb_func_start FUN_020192B8
-FUN_020192B8: ; 0x020192B8
- push {r3, lr}
- ldrb r2, [r0, #0x4]
- mov r1, #0x2c
- ldr r3, [r0, #0x0]
- mul r1, r2
- add r1, r3, r1
- ldrb r1, [r1, #0x1c]
- lsl r2, r1, #0x2
- ldr r1, _020192D0 ; =UNK_020EDB74
- ldr r1, [r1, r2]
- blx r1
- pop {r3, pc}
- .balign 4
-_020192D0: .word UNK_020EDB74
-
- thumb_func_start FUN_020192D4
-FUN_020192D4: ; 0x020192D4
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- ldrb r1, [r5, #0x4]
- mov r0, #0x2c
- ldr r2, [r5, #0x0]
- mul r0, r1
- add r0, r2, r0
- ldr r0, [r0, #0x8]
- str r0, [sp, #0x4]
- cmp r0, #0x0
- beq _02019354
- ldrh r0, [r5, #0xa]
- ldrb r1, [r5, #0x5]
- lsl r0, r0, #0x11
- lsr r3, r0, #0x11
- ldrb r0, [r5, #0x7]
- add r7, r1, r0
- ldrb r0, [r5, #0x6]
- ldrb r1, [r5, #0x8]
- mov r12, r0
- add r0, r0, r1
- mov r1, r12
- mov lr, r0
- cmp r1, r0
- bhs _02019354
-_02019308:
- ldrb r2, [r5, #0x5]
- cmp r2, r7
- bhs _02019348
- mov r0, r12
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x16
- lsl r1, r0, #0x1
- ldr r0, [sp, #0x4]
- add r0, r0, r1
- mov r1, r12
- str r0, [sp, #0x0]
- mov r0, #0x20
- add r6, r1, #0x0
- and r6, r0
-_02019324:
- ldrb r0, [r5, #0x9]
- mov r4, #0x20
- add r1, r3, #0x0
- lsl r0, r0, #0xc
- and r4, r2
- orr r1, r0
- mov r0, #0x1f
- add r4, r6, r4
- and r0, r2
- lsl r4, r4, #0x5
- add r0, r0, r4
- lsl r4, r0, #0x1
- ldr r0, [sp, #0x0]
- add r2, r2, #0x1
- strh r1, [r0, r4]
- add r3, r3, #0x1
- cmp r2, r7
- blo _02019324
-_02019348:
- mov r0, r12
- add r1, r0, #0x1
- mov r0, lr
- mov r12, r1
- cmp r1, r0
- blo _02019308
-_02019354:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02019358
-FUN_02019358: ; 0x02019358
- push {r4-r7}
- ldrb r3, [r0, #0x4]
- mov r1, #0x2c
- add r2, r3, #0x0
- mul r2, r1
- ldr r1, [r0, #0x0]
- add r1, r1, r2
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _020193AC
- ldrb r2, [r1, #0x1d]
- ldr r1, _020193B0 ; =UNK_020EDB30
- ldrb r6, [r1, r2]
- ldrb r1, [r0, #0x6]
- add r2, r1, #0x0
- mul r2, r6
- add r2, r3, r2
- ldrb r1, [r0, #0x5]
- mov r3, #0x0
- add r4, r2, r1
- ldrh r1, [r0, #0xa]
- lsl r1, r1, #0x11
- lsr r5, r1, #0x11
- ldrb r1, [r0, #0x8]
- cmp r1, #0x0
- ble _020193AC
- add r1, r3, #0x0
-_0201938E:
- ldrb r7, [r0, #0x7]
- add r2, r1, #0x0
- cmp r7, #0x0
- ble _020193A2
-_02019396:
- strb r5, [r4, r2]
- ldrb r7, [r0, #0x7]
- add r2, r2, #0x1
- add r5, r5, #0x1
- cmp r2, r7
- blt _02019396
-_020193A2:
- ldrb r2, [r0, #0x8]
- add r3, r3, #0x1
- add r4, r4, r6
- cmp r3, r2
- blt _0201938E
-_020193AC:
- pop {r4-r7}
- bx lr
- .balign 4
-_020193B0: .word UNK_020EDB30
-
- thumb_func_start FUN_020193B4
-FUN_020193B4: ; 0x020193B4
- push {r4-r7, lr}
- sub sp, #0xc
- ldrb r2, [r0, #0x4]
- str r0, [sp, #0x0]
- mov r0, #0x2c
- add r1, r2, #0x0
- mul r1, r0
- ldr r0, [sp, #0x0]
- ldr r0, [r0, #0x0]
- add r1, r0, r1
- ldr r0, [r1, #0x8]
- str r0, [sp, #0x4]
- cmp r0, #0x0
- beq _0201943C
- ldrb r1, [r1, #0x1d]
- ldr r0, _02019440 ; =UNK_020EDB30
- ldrb r0, [r0, r1]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x0]
- ldrb r1, [r0, #0x5]
- ldrb r0, [r0, #0x7]
- add r2, r1, r0
- ldr r0, [sp, #0x0]
- ldrb r0, [r0, #0x6]
- mov r12, r0
- ldr r0, [sp, #0x0]
- ldrb r1, [r0, #0x8]
- mov r0, r12
- add r0, r0, r1
- mov r1, r12
- mov lr, r0
- cmp r1, r0
- bhs _0201943C
- mov r6, #0x0
- mov r7, #0x20
-_020193FA:
- ldr r0, [sp, #0x0]
- ldrb r1, [r0, #0x5]
- cmp r1, r2
- bhs _02019430
- mov r3, r12
- mov r0, #0x1f
- and r3, r0
- ldr r0, [sp, #0x8]
- mul r0, r3
- lsl r3, r0, #0x1
- ldr r0, [sp, #0x4]
- add r5, r0, r3
- mov r3, r12
- mov r0, #0x20
- and r3, r0
-_02019418:
- add r4, r1, #0x0
- and r4, r7
- mov r0, #0x1f
- add r4, r3, r4
- and r0, r1
- lsl r4, r4, #0x5
- add r0, r0, r4
- lsl r0, r0, #0x1
- add r1, r1, #0x1
- strh r6, [r5, r0]
- cmp r1, r2
- blo _02019418
-_02019430:
- mov r0, r12
- add r1, r0, #0x1
- mov r0, lr
- mov r12, r1
- cmp r1, r0
- blo _020193FA
-_0201943C:
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_02019440: .word UNK_020EDB30
-
- thumb_func_start FUN_02019444
-FUN_02019444: ; 0x02019444
- push {r4-r7}
- ldrb r3, [r0, #0x4]
- mov r1, #0x2c
- add r2, r3, #0x0
- mul r2, r1
- ldr r1, [r0, #0x0]
- add r1, r1, r2
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _02019492
- ldrb r2, [r1, #0x1d]
- ldr r1, _02019498 ; =UNK_020EDB30
- mov r4, #0x0
- ldrb r6, [r1, r2]
- ldrb r1, [r0, #0x6]
- add r2, r1, #0x0
- mul r2, r6
- ldrb r1, [r0, #0x5]
- add r2, r3, r2
- add r5, r2, r1
- ldrb r1, [r0, #0x8]
- cmp r1, #0x0
- ble _02019492
- add r1, r4, #0x0
- add r2, r4, #0x0
-_02019476:
- ldrb r7, [r0, #0x7]
- add r3, r2, #0x0
- cmp r7, #0x0
- ble _02019488
-_0201947E:
- strb r1, [r5, r3]
- ldrb r7, [r0, #0x7]
- add r3, r3, #0x1
- cmp r3, r7
- blt _0201947E
-_02019488:
- ldrb r3, [r0, #0x8]
- add r4, r4, #0x1
- add r5, r5, r6
- cmp r4, r3
- blt _02019476
-_02019492:
- pop {r4-r7}
- bx lr
- nop
-_02019498: .word UNK_020EDB30
-
- thumb_func_start FUN_0201949C
-FUN_0201949C: ; 0x0201949C
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl FUN_020192D4
- add r0, r4, #0x0
- bl FUN_02019548
- ldrb r1, [r4, #0x4]
- mov r0, #0x2c
- add r2, r1, #0x0
- mul r2, r0
- ldr r0, [r4, #0x0]
- add r3, r0, r2
- ldr r2, [r3, #0x10]
- str r2, [sp, #0x0]
- ldr r2, [r3, #0x8]
- ldr r3, [r3, #0xc]
- bl FUN_02017CE8
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start FUN_020194C8
-FUN_020194C8: ; 0x020194C8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_020192D4
- ldrb r1, [r4, #0x4]
- ldr r0, [r4, #0x0]
- bl FUN_0201AC68
- add r0, r4, #0x0
- bl FUN_02019548
- pop {r4, pc}
-
- thumb_func_start FUN_020194E0
-FUN_020194E0: ; 0x020194E0
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl FUN_02019358
- ldrb r1, [r4, #0x4]
- mov r0, #0x2c
- add r2, r1, #0x0
- mul r2, r0
- ldr r0, [r4, #0x0]
- add r3, r0, r2
- ldr r2, [r3, #0x10]
- str r2, [sp, #0x0]
- ldr r2, [r3, #0x8]
- ldr r3, [r3, #0xc]
- bl FUN_02017CE8
- ldrh r0, [r4, #0xa]
- lsl r0, r0, #0x11
- lsr r0, r0, #0x11
- str r0, [sp, #0x0]
- ldrb r5, [r4, #0x7]
- ldrb r3, [r4, #0x8]
- ldrb r1, [r4, #0x4]
- ldr r0, [r4, #0x0]
- mul r3, r5
- ldr r2, [r4, #0xc]
- lsl r3, r3, #0x6
- bl FUN_02017E14
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0201951C
-FUN_0201951C: ; 0x0201951C
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl FUN_02019358
- ldrb r1, [r4, #0x4]
- ldr r0, [r4, #0x0]
- bl FUN_0201AC68
- ldrh r0, [r4, #0xa]
- lsl r0, r0, #0x11
- lsr r0, r0, #0x11
- str r0, [sp, #0x0]
- ldrb r5, [r4, #0x7]
- ldrb r3, [r4, #0x8]
- ldrb r1, [r4, #0x4]
- ldr r0, [r4, #0x0]
- mul r3, r5
- ldr r2, [r4, #0xc]
- lsl r3, r3, #0x6
- bl FUN_02017E14
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02019548
-FUN_02019548: ; 0x02019548
- push {r3-r5, lr}
- add r3, r0, #0x0
- ldrh r2, [r3, #0xa]
- ldrb r1, [r3, #0x4]
- mov r4, #0x2c
- lsl r2, r2, #0x11
- ldr r0, [r3, #0x0]
- lsr r2, r2, #0x11
- str r2, [sp, #0x0]
- mul r4, r1
- add r4, r0, r4
- ldr r2, [r3, #0xc]
- ldrb r5, [r3, #0x7]
- ldrb r3, [r3, #0x8]
- ldrb r4, [r4, #0x1f]
- mul r3, r5
- mul r3, r4
- bl FUN_02017E14
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02019570
-FUN_02019570: ; 0x02019570
- push {r3, lr}
- ldrb r2, [r0, #0x4]
- mov r1, #0x2c
- ldr r3, [r0, #0x0]
- mul r1, r2
- add r1, r3, r1
- ldrb r1, [r1, #0x1c]
- lsl r2, r1, #0x2
- ldr r1, _02019588 ; =UNK_020EDB50
- ldr r1, [r1, r2]
- blx r1
- pop {r3, pc}
- .balign 4
-_02019588: .word UNK_020EDB50
-
- thumb_func_start FUN_0201958C
-FUN_0201958C: ; 0x0201958C
- push {r3, lr}
- ldrb r2, [r0, #0x4]
- mov r1, #0x2c
- ldr r3, [r0, #0x0]
- mul r1, r2
- add r1, r3, r1
- ldrb r1, [r1, #0x1c]
- lsl r2, r1, #0x2
- ldr r1, _020195A4 ; =UNK_020EDB44
- ldr r1, [r1, r2]
- blx r1
- pop {r3, pc}
- .balign 4
-_020195A4: .word UNK_020EDB44
-
- thumb_func_start FUN_020195A8
-FUN_020195A8: ; 0x020195A8
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl FUN_020193B4
- ldrb r1, [r4, #0x4]
- mov r0, #0x2c
- add r2, r1, #0x0
- mul r2, r0
- ldr r0, [r4, #0x0]
- add r3, r0, r2
- ldr r2, [r3, #0x10]
- str r2, [sp, #0x0]
- ldr r2, [r3, #0x8]
- ldr r3, [r3, #0xc]
- bl FUN_02017CE8
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-
- thumb_func_start FUN_020195D0
-FUN_020195D0: ; 0x020195D0
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_020193B4
- ldrb r1, [r4, #0x4]
- ldr r0, [r4, #0x0]
- bl FUN_0201AC68
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020195E4
-FUN_020195E4: ; 0x020195E4
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl FUN_02019444
- ldrb r1, [r4, #0x4]
- mov r0, #0x2c
- add r2, r1, #0x0
- mul r2, r0
- ldr r0, [r4, #0x0]
- add r3, r0, r2
- ldr r2, [r3, #0x10]
- str r2, [sp, #0x0]
- ldr r2, [r3, #0x8]
- ldr r3, [r3, #0xc]
- bl FUN_02017CE8
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
-
- thumb_func_start FUN_0201960C
-FUN_0201960C: ; 0x0201960C
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02019444
- ldrb r1, [r4, #0x4]
- ldr r0, [r4, #0x0]
- bl FUN_0201AC68
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02019620
-FUN_02019620: ; 0x02019620
- push {r3-r5, lr}
- add r4, r0, #0x0
- ldrb r2, [r4, #0x4]
- mov r0, #0x2c
- ldr r3, [r4, #0x0]
- mul r0, r2
- add r0, r3, r0
- ldrb r2, [r0, #0x1f]
- cmp r2, #0x20
- bne _0201963C
- lsl r0, r1, #0x4
- orr r0, r1
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
-_0201963C:
- lsl r3, r1, #0x18
- lsl r0, r1, #0x10
- orr r0, r3
- lsl r5, r1, #0x8
- orr r0, r5
- orr r0, r1
- ldr r1, [r4, #0xc]
- ldrb r3, [r4, #0x8]
- ldrb r4, [r4, #0x7]
- mul r2, r4
- mul r2, r3
- bl MIi_CpuClearFast
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02019658
-FUN_02019658: ; 0x02019658
- push {r4-r5, lr}
- sub sp, #0x1c
- add r4, sp, #0x18
- ldrh r5, [r4, #0x10]
- str r5, [sp, #0x0]
- ldrh r5, [r4, #0x14]
- str r5, [sp, #0x4]
- ldrh r5, [r4, #0x18]
- str r5, [sp, #0x8]
- ldrh r5, [r4, #0x1c]
- str r5, [sp, #0xc]
- ldrh r5, [r4, #0x20]
- str r5, [sp, #0x10]
- ldrh r4, [r4, #0x24]
- str r4, [sp, #0x14]
- mov r4, #0x0
- str r4, [sp, #0x18]
- bl FUN_02019684
- add sp, #0x1c
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02019684
-FUN_02019684: ; 0x02019684
- push {r4-r5, lr}
- sub sp, #0x24
- str r1, [sp, #0x1c]
- add r4, sp, #0x20
- ldrh r5, [r4, #0x10]
- add r1, sp, #0x14
- strh r5, [r1, #0xc]
- ldrh r5, [r4, #0x14]
- strh r5, [r1, #0xe]
- ldr r5, [r0, #0xc]
- str r5, [sp, #0x14]
- ldrb r5, [r0, #0x7]
- lsl r5, r5, #0x3
- strh r5, [r1, #0x4]
- ldrb r5, [r0, #0x8]
- lsl r5, r5, #0x3
- strh r5, [r1, #0x6]
- ldrb r5, [r0, #0x4]
- ldr r1, [r0, #0x0]
- mov r0, #0x2c
- mul r0, r5
- add r0, r1, r0
- ldrb r0, [r0, #0x1e]
- add r1, sp, #0x14
- cmp r0, #0x0
- ldrh r0, [r4, #0x18]
- bne _020196D6
- str r0, [sp, #0x0]
- ldrh r0, [r4, #0x1c]
- str r0, [sp, #0x4]
- ldrh r0, [r4, #0x20]
- str r0, [sp, #0x8]
- ldrh r0, [r4, #0x24]
- str r0, [sp, #0xc]
- ldrh r0, [r4, #0x28]
- str r0, [sp, #0x10]
- add r0, sp, #0x1c
- bl FUN_02018A60
- add sp, #0x24
- pop {r4-r5, pc}
-_020196D6:
- str r0, [sp, #0x0]
- ldrh r0, [r4, #0x1c]
- str r0, [sp, #0x4]
- ldrh r0, [r4, #0x20]
- str r0, [sp, #0x8]
- ldrh r0, [r4, #0x24]
- str r0, [sp, #0xc]
- ldrh r0, [r4, #0x28]
- str r0, [sp, #0x10]
- add r0, sp, #0x1c
- bl FUN_02018CA0
- add sp, #0x24
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020196F4
-FUN_020196F4: ; 0x020196F4
- push {r3-r5, lr}
- sub sp, #0x10
- add r5, r1, #0x0
- ldr r1, [r0, #0xc]
- add r4, r2, #0x0
- str r1, [sp, #0x8]
- ldrb r1, [r0, #0x7]
- add r2, r3, #0x0
- lsl r3, r1, #0x3
- add r1, sp, #0x8
- strh r3, [r1, #0x4]
- ldrb r3, [r0, #0x8]
- lsl r3, r3, #0x3
- strh r3, [r1, #0x6]
- ldrb r3, [r0, #0x4]
- ldr r1, [r0, #0x0]
- mov r0, #0x2c
- mul r0, r3
- add r0, r1, r0
- ldrb r0, [r0, #0x1e]
- add r3, sp, #0x10
- cmp r0, #0x0
- bne _02019736
- ldrh r0, [r3, #0x14]
- add r1, r4, #0x0
- str r0, [sp, #0x0]
- str r5, [sp, #0x4]
- ldrh r3, [r3, #0x10]
- add r0, sp, #0x8
- bl FUN_02018E88
- add sp, #0x10
- pop {r3-r5, pc}
-_02019736:
- ldrh r0, [r3, #0x14]
- add r1, r4, #0x0
- str r0, [sp, #0x0]
- str r5, [sp, #0x4]
- ldrh r3, [r3, #0x10]
- add r0, sp, #0x8
- bl FUN_02018F4C
- add sp, #0x10
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0201974C
-FUN_0201974C: ; 0x0201974C
- push {r4-r7, lr}
- sub sp, #0x1fc
- sub sp, #0x118
- add r5, r0, #0x0
- ldr r0, [sp, #0x330]
- str r1, [sp, #0x0]
- str r0, [sp, #0x330]
- add r1, sp, #0x318
- ldrh r1, [r1, #0x10]
- ldr r0, [r5, #0xc]
- str r1, [sp, #0x5c]
- ldrb r1, [r5, #0x7]
- str r0, [sp, #0x278]
- ldrb r0, [r5, #0x8]
- lsl r1, r1, #0x13
- lsr r4, r1, #0x10
- ldr r1, [sp, #0x5c]
- lsl r0, r0, #0x13
- sub r1, r4, r1
- lsr r0, r0, #0x10
- str r4, [sp, #0x58]
- str r1, [sp, #0x8]
- cmp r1, r2
- blt _0201977E
- str r2, [sp, #0x8]
-_0201977E:
- add r1, sp, #0x318
- ldrh r1, [r1, #0x14]
- sub r0, r0, r1
- str r1, [sp, #0x48]
- str r0, [sp, #0x4]
- cmp r0, r3
- blt _0201978E
- str r3, [sp, #0x4]
-_0201978E:
- ldr r0, [sp, #0x8]
- mov r4, #0x0
- cmp r0, #0x8
- ble _0201979E
- mov r0, #0x1
- orr r0, r4
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_0201979E:
- ldr r0, [sp, #0x4]
- cmp r0, #0x8
- ble _020197AC
- mov r0, #0x2
- orr r0, r4
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_020197AC:
- ldrh r0, [r5, #0xa]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x1f
- beq _020197B8
- bl FUN_0201A12C
-_020197B8:
- cmp r4, #0x3
- bls _020197C0
- bl FUN_0201A8BC
-_020197C0:
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020197CC: ; jump table (using 16-bit offset)
- .short _020197D4 - _020197CC - 2; case 0
- .short _020198D6 - _020197CC - 2; case 1
- .short _02019AE6 - _020197CC - 2; case 2
- .short _02019D06 - _020197CC - 2; case 3
-_020197D4:
- ldr r0, [sp, #0x330]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x70]
- mov r0, #0x0
- str r0, [sp, #0x274]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- bgt _020197EA
- bl FUN_0201A8BC
-_020197EA:
- ldr r0, [sp, #0x58]
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x6c]
-_020197F6:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x70]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x26c]
- ldr r0, [sp, #0x274]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x270]
- ldr r0, [sp, #0x8]
- mov r1, #0x0
- cmp r0, #0x0
- ble _020198AA
- ble _020198AA
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x48]
- ldr r6, [sp, #0x6c]
- lsl r5, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x48]
- str r6, [sp, #0x68]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- ldr r5, [sp, #0x6c]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0x64]
- str r0, [sp, #0x60]
-_02019848:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019B68 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0x68]
- str r5, [sp, #0x27c]
- add r0, r5, r0
- ldr r5, [sp, #0x26c]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _0201989C
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x280]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x284]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x284]
- and r6, r5
- ldr r5, [sp, #0x280]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x270]
- cmp r0, #0x0
- beq _0201989C
- ldr r6, [sp, #0x27c]
- ldr r0, [sp, #0x64]
- add r6, r6, r0
- ldr r0, [sp, #0x60]
- strb r5, [r0, r6]
-_0201989C:
- ldr r0, [sp, #0x8]
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, r0
- blt _02019848
-_020198AA:
- ldr r0, [sp, #0x270]
- cmp r0, #0x0
- beq _020198B8
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _020198BE
-_020198B8:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_020198BE:
- ldr r0, [sp, #0x0]
- add r0, r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x274]
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x274]
- cmp r1, r0
- blt _020197F6
- add sp, #0x1fc
- add sp, #0x118
- pop {r4-r7, pc}
-_020198D6:
- ldr r0, [sp, #0x0]
- str r0, [sp, #0x25c]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x264]
- ldr r0, [sp, #0x330]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x54]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x84]
- mov r0, #0x0
- str r0, [sp, #0x268]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ble _020199D2
- ldr r0, [sp, #0x58]
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x80]
-_02019902:
- ldr r0, [sp, #0x25c]
- ldr r1, [sp, #0x84]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x258]
- ldr r0, [sp, #0x268]
- ldr r6, [sp, #0x80]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x260]
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x264]
- mov r1, #0x0
- lsl r5, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x264]
- str r6, [sp, #0x7c]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- ldr r5, [sp, #0x80]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0x78]
- str r0, [sp, #0x74]
-_0201994C:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019B68 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0x7c]
- str r5, [sp, #0x288]
- add r0, r5, r0
- ldr r5, [sp, #0x258]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _020199A0
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x28c]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x290]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x290]
- and r6, r5
- ldr r5, [sp, #0x28c]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x260]
- cmp r0, #0x0
- beq _020199A0
- ldr r6, [sp, #0x288]
- ldr r0, [sp, #0x78]
- add r6, r6, r0
- ldr r0, [sp, #0x74]
- strb r5, [r0, r6]
-_020199A0:
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, #0x8
- blt _0201994C
- ldr r0, [sp, #0x260]
- cmp r0, #0x0
- beq _020199BA
- ldr r0, [sp, #0x264]
- add r0, r0, #0x2
- str r0, [sp, #0x264]
- b _020199C0
-_020199BA:
- ldr r0, [sp, #0x264]
- add r0, r0, #0x1
- str r0, [sp, #0x264]
-_020199C0:
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r0, [sp, #0x268]
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x268]
- cmp r1, r0
- blt _02019902
-_020199D2:
- ldr r0, [sp, #0x0]
- add r0, #0x20
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x54]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x98]
- mov r0, #0x0
- str r0, [sp, #0x254]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- bgt _020199EE
- bl FUN_0201A8BC
-_020199EE:
- ldr r0, [sp, #0x5c]
- mov r1, #0x7
- add r0, #0x8
- str r0, [sp, #0x5c]
- ldr r0, [sp, #0x58]
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x94]
-_02019A00:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x98]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x24c]
- ldr r0, [sp, #0x254]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x250]
- ldr r0, [sp, #0x8]
- mov r1, #0x0
- str r0, [sp, #0x294]
- sub r0, #0x8
- str r0, [sp, #0x294]
- cmp r0, #0x0
- ble _02019ABA
- ble _02019ABA
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x48]
- ldr r6, [sp, #0x94]
- lsl r5, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x48]
- str r6, [sp, #0x90]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- ldr r5, [sp, #0x94]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0x8c]
- str r0, [sp, #0x88]
-_02019A58:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019B68 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0x90]
- str r5, [sp, #0x298]
- add r0, r5, r0
- ldr r5, [sp, #0x24c]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _02019AAC
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x29c]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x2a0]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x2a0]
- and r6, r5
- ldr r5, [sp, #0x29c]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x250]
- cmp r0, #0x0
- beq _02019AAC
- ldr r6, [sp, #0x298]
- ldr r0, [sp, #0x8c]
- add r6, r6, r0
- ldr r0, [sp, #0x88]
- strb r5, [r0, r6]
-_02019AAC:
- ldr r0, [sp, #0x294]
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, r0
- blt _02019A58
-_02019ABA:
- ldr r0, [sp, #0x250]
- cmp r0, #0x0
- beq _02019AC8
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _02019ACE
-_02019AC8:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_02019ACE:
- ldr r0, [sp, #0x0]
- add r0, r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x254]
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x254]
- cmp r1, r0
- blt _02019A00
- add sp, #0x1fc
- add sp, #0x118
- pop {r4-r7, pc}
-_02019AE6:
- ldr r0, [sp, #0x0]
- mov r1, #0x7
- str r0, [sp, #0x23c]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x244]
- mov r0, #0x0
- str r0, [sp, #0x248]
- ldr r0, [sp, #0x330]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0xa8]
- ldr r0, [sp, #0x58]
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x40]
-_02019B06:
- ldr r0, [sp, #0x23c]
- ldr r1, [sp, #0xa8]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x238]
- ldr r0, [sp, #0x248]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x240]
- ldr r0, [sp, #0x8]
- mov r1, #0x0
- cmp r0, #0x0
- ble _02019BC2
- ble _02019BC2
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x244]
- ldr r6, [sp, #0x40]
- lsl r5, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x244]
- str r6, [sp, #0xa4]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019B68 ; =0x00003FE0
- ldr r5, [sp, #0x40]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0xa0]
- str r0, [sp, #0x9c]
-_02019B58:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019B68 ; =0x00003FE0
- b _02019B6C
- nop
-_02019B68: .word 0x00003FE0
-_02019B6C:
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0xa4]
- str r5, [sp, #0x2a4]
- add r0, r5, r0
- ldr r5, [sp, #0x238]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _02019BB4
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x2a8]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x2ac]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x2ac]
- and r6, r5
- ldr r5, [sp, #0x2a8]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x240]
- cmp r0, #0x0
- beq _02019BB4
- ldr r6, [sp, #0x2a4]
- ldr r0, [sp, #0xa0]
- add r6, r6, r0
- ldr r0, [sp, #0x9c]
- strb r5, [r0, r6]
-_02019BB4:
- ldr r0, [sp, #0x8]
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, r0
- blt _02019B58
-_02019BC2:
- ldr r0, [sp, #0x240]
- cmp r0, #0x0
- beq _02019BD0
- ldr r0, [sp, #0x244]
- add r0, r0, #0x2
- str r0, [sp, #0x244]
- b _02019BD6
-_02019BD0:
- ldr r0, [sp, #0x244]
- add r0, r0, #0x1
- str r0, [sp, #0x244]
-_02019BD6:
- ldr r0, [sp, #0x23c]
- add r0, r0, #0x4
- str r0, [sp, #0x23c]
- ldr r0, [sp, #0x248]
- add r0, r0, #0x1
- str r0, [sp, #0x248]
- cmp r0, #0x8
- blt _02019B06
- ldr r0, [sp, #0x0]
- mov r2, #0x0
- add r0, #0x40
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x48]
- mov r1, #0x1
- add r0, #0x8
- str r0, [sp, #0x48]
-_02019BF6:
- ldr r0, [sp, #0x330]
- asr r0, r2
- tst r0, r1
- beq _02019C04
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_02019C04:
- add r2, r2, #0x1
- cmp r2, #0x8
- blt _02019BF6
- ldr r0, [sp, #0x330]
- asr r0, r0, #0x8
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0xb8]
- mov r0, #0x0
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x4]
- sub r0, #0x8
- cmp r0, #0x0
- bgt _02019C24
- bl FUN_0201A8BC
-_02019C24:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0xb8]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x230]
- ldr r0, [sp, #0x20]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x234]
- ldr r0, [sp, #0x8]
- mov r1, #0x0
- cmp r0, #0x0
- ble _02019CD8
- ble _02019CD8
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x48]
- ldr r6, [sp, #0x40]
- lsl r5, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x48]
- str r6, [sp, #0xb4]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- ldr r5, [sp, #0x40]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0xb0]
- str r0, [sp, #0xac]
-_02019C76:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019F88 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0xb4]
- str r5, [sp, #0x2b0]
- add r0, r5, r0
- ldr r5, [sp, #0x230]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _02019CCA
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x2b4]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x2b8]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x2b8]
- and r6, r5
- ldr r5, [sp, #0x2b4]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x234]
- cmp r0, #0x0
- beq _02019CCA
- ldr r6, [sp, #0x2b0]
- ldr r0, [sp, #0xb0]
- add r6, r6, r0
- ldr r0, [sp, #0xac]
- strb r5, [r0, r6]
-_02019CCA:
- ldr r0, [sp, #0x8]
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, r0
- blt _02019C76
-_02019CD8:
- ldr r0, [sp, #0x234]
- cmp r0, #0x0
- beq _02019CE6
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _02019CEC
-_02019CE6:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_02019CEC:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- add r0, r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x20]
- sub r1, #0x8
- add r0, r0, #0x1
- str r0, [sp, #0x20]
- cmp r0, r1
- blt _02019C24
- add sp, #0x1fc
- add sp, #0x118
- pop {r4-r7, pc}
-_02019D06:
- ldr r0, [sp, #0x0]
- str r0, [sp, #0x220]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x228]
- ldr r0, [sp, #0x330]
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- mov r0, #0x0
- str r0, [sp, #0x22c]
- lsl r0, r1, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x3c]
- ldr r0, [sp, #0x58]
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x38]
-_02019D2A:
- ldr r0, [sp, #0x220]
- ldr r1, [sp, #0x3c]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x21c]
- ldr r0, [sp, #0x22c]
- ldr r6, [sp, #0x38]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x224]
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x228]
- mov r1, #0x0
- lsl r5, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x228]
- str r6, [sp, #0xc4]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- ldr r5, [sp, #0x38]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- str r3, [sp, #0x34]
- add r4, r1, #0x0
- str r5, [sp, #0xc0]
- str r0, [sp, #0xbc]
-_02019D76:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019F88 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0xc4]
- str r5, [sp, #0x2bc]
- add r0, r5, r0
- ldr r5, [sp, #0x21c]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _02019DCA
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x2c0]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x2c4]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x2c4]
- and r6, r5
- ldr r5, [sp, #0x2c0]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x224]
- cmp r0, #0x0
- beq _02019DCA
- ldr r6, [sp, #0x2bc]
- ldr r0, [sp, #0xc0]
- add r6, r6, r0
- ldr r0, [sp, #0xbc]
- strb r5, [r0, r6]
-_02019DCA:
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, #0x8
- blt _02019D76
- ldr r0, [sp, #0x224]
- cmp r0, #0x0
- beq _02019DE4
- ldr r0, [sp, #0x228]
- add r0, r0, #0x2
- str r0, [sp, #0x228]
- b _02019DEA
-_02019DE4:
- ldr r0, [sp, #0x228]
- add r0, r0, #0x1
- str r0, [sp, #0x228]
-_02019DEA:
- ldr r0, [sp, #0x220]
- add r0, r0, #0x4
- str r0, [sp, #0x220]
- ldr r0, [sp, #0x22c]
- add r0, r0, #0x1
- str r0, [sp, #0x22c]
- cmp r0, #0x8
- blt _02019D2A
- ldr r0, [sp, #0x0]
- str r0, [sp, #0x20c]
- add r0, #0x20
- str r0, [sp, #0x20c]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x214]
- mov r0, #0x0
- str r0, [sp, #0x218]
- ldr r0, [sp, #0x5c]
- str r0, [sp, #0xd4]
- add r0, #0x8
- str r0, [sp, #0xd4]
-_02019E12:
- ldr r0, [sp, #0x20c]
- ldr r1, [sp, #0x3c]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0xd4]
- str r0, [sp, #0x208]
- ldr r0, [sp, #0x218]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x210]
- ldr r0, [sp, #0x8]
- mov r1, #0x0
- str r0, [sp, #0x2c8]
- sub r0, #0x8
- str r0, [sp, #0x2c8]
- cmp r0, #0x0
- ble _02019ECC
- ble _02019ECC
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x214]
- ldr r6, [sp, #0x38]
- lsl r5, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x214]
- str r6, [sp, #0xd0]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- ldr r5, [sp, #0x38]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0xcc]
- str r0, [sp, #0xc8]
-_02019E6A:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019F88 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0xd0]
- str r5, [sp, #0x2cc]
- add r0, r5, r0
- ldr r5, [sp, #0x208]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _02019EBE
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x2d0]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x2d4]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x2d4]
- and r6, r5
- ldr r5, [sp, #0x2d0]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x210]
- cmp r0, #0x0
- beq _02019EBE
- ldr r6, [sp, #0x2cc]
- ldr r0, [sp, #0xcc]
- add r6, r6, r0
- ldr r0, [sp, #0xc8]
- strb r5, [r0, r6]
-_02019EBE:
- ldr r0, [sp, #0x2c8]
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, r0
- blt _02019E6A
-_02019ECC:
- ldr r0, [sp, #0x210]
- cmp r0, #0x0
- beq _02019EDA
- ldr r0, [sp, #0x214]
- add r0, r0, #0x2
- str r0, [sp, #0x214]
- b _02019EE0
-_02019EDA:
- ldr r0, [sp, #0x214]
- add r0, r0, #0x1
- str r0, [sp, #0x214]
-_02019EE0:
- ldr r0, [sp, #0x20c]
- add r0, r0, #0x4
- str r0, [sp, #0x20c]
- ldr r0, [sp, #0x218]
- add r0, r0, #0x1
- str r0, [sp, #0x218]
- cmp r0, #0x8
- blt _02019E12
- ldr r0, [sp, #0x0]
- mov r2, #0x0
- str r0, [sp, #0x1fc]
- add r0, #0x40
- str r0, [sp, #0x1fc]
- ldr r0, [sp, #0x48]
- mov r1, #0x1
- add r0, #0x8
- str r0, [sp, #0x48]
- str r0, [sp, #0x204]
-_02019F04:
- ldr r0, [sp, #0x330]
- asr r0, r2
- tst r0, r1
- beq _02019F12
- ldr r0, [sp, #0x204]
- add r0, r0, #0x1
- str r0, [sp, #0x204]
-_02019F12:
- add r2, r2, #0x1
- cmp r2, #0x8
- blt _02019F04
- ldr r0, [sp, #0x330]
- asr r0, r0, #0x8
- str r0, [sp, #0x50]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0xe4]
- mov r0, #0x0
- str r0, [sp, #0x1c]
- ldr r0, [sp, #0x4]
- sub r0, #0x8
- cmp r0, #0x0
- ble _0201A008
-_02019F30:
- ldr r0, [sp, #0x1fc]
- ldr r1, [sp, #0xe4]
- ldr r0, [r0, #0x0]
- ldr r6, [sp, #0x38]
- str r0, [sp, #0x1f8]
- ldr r0, [sp, #0x1c]
- ldr r2, [sp, #0x5c]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x200]
- ldr r0, [sp, #0x204]
- mov r1, #0x0
- lsl r5, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x204]
- str r6, [sp, #0xe0]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _02019F88 ; =0x00003FE0
- ldr r5, [sp, #0x38]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- ldr r3, [sp, #0x34]
- add r4, r1, #0x0
- str r5, [sp, #0xdc]
- str r0, [sp, #0xd8]
-_02019F78:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _02019F88 ; =0x00003FE0
- b _02019F8C
- nop
-_02019F88: .word 0x00003FE0
-_02019F8C:
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0xe0]
- str r5, [sp, #0x2d8]
- add r0, r5, r0
- ldr r5, [sp, #0x1f8]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _02019FD4
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x2dc]
- ldrb r5, [r0, r7]
- str r5, [sp, #0x2e0]
- mov r5, #0xf0
- asr r5, r6
- ldr r6, [sp, #0x2e0]
- and r6, r5
- ldr r5, [sp, #0x2dc]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x200]
- cmp r0, #0x0
- beq _02019FD4
- ldr r6, [sp, #0x2d8]
- ldr r0, [sp, #0xdc]
- add r6, r6, r0
- ldr r0, [sp, #0xd8]
- strb r5, [r0, r6]
-_02019FD4:
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, #0x8
- blt _02019F78
- ldr r0, [sp, #0x200]
- cmp r0, #0x0
- beq _02019FEE
- ldr r0, [sp, #0x204]
- add r0, r0, #0x2
- str r0, [sp, #0x204]
- b _02019FF4
-_02019FEE:
- ldr r0, [sp, #0x204]
- add r0, r0, #0x1
- str r0, [sp, #0x204]
-_02019FF4:
- ldr r0, [sp, #0x1fc]
- ldr r1, [sp, #0x4]
- add r0, r0, #0x4
- str r0, [sp, #0x1fc]
- ldr r0, [sp, #0x1c]
- sub r1, #0x8
- add r0, r0, #0x1
- str r0, [sp, #0x1c]
- cmp r0, r1
- blt _02019F30
-_0201A008:
- ldr r0, [sp, #0x0]
- mov r2, #0x0
- add r0, #0x60
- str r0, [sp, #0x0]
- mov r1, #0x1
-_0201A012:
- ldr r0, [sp, #0x330]
- asr r0, r2
- tst r0, r1
- beq _0201A020
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A020:
- add r2, r2, #0x1
- cmp r2, #0x8
- blt _0201A012
- ldr r0, [sp, #0x50]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0xf4]
- mov r0, #0x0
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x4]
- sub r0, #0x8
- cmp r0, #0x0
- bgt _0201A03E
- bl FUN_0201A8BC
-_0201A03E:
- ldr r0, [sp, #0x5c]
- add r0, #0x8
- str r0, [sp, #0x5c]
-_0201A044:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0xf4]
- ldr r0, [r0, #0x0]
- ldr r2, [sp, #0x5c]
- str r0, [sp, #0x1f0]
- ldr r0, [sp, #0x18]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x1f4]
- ldr r0, [sp, #0x8]
- mov r1, #0x0
- str r0, [sp, #0x2e4]
- sub r0, #0x8
- str r0, [sp, #0x2e4]
- cmp r0, #0x0
- ble _0201A0FE
- ble _0201A0FE
- add r0, r2, #0x0
- lsl r3, r0, #0x2
- ldr r0, [sp, #0x48]
- ldr r6, [sp, #0x38]
- lsl r5, r0, #0x2
- ldr r0, _0201A3A8 ; =0x00003FE0
- add r7, r5, #0x0
- and r0, r5
- mul r6, r0
- mov r0, #0x1c
- and r7, r0
- ldr r0, [sp, #0x48]
- str r6, [sp, #0xf0]
- add r0, r0, #0x1
- lsl r6, r0, #0x2
- ldr r0, _0201A3A8 ; =0x00003FE0
- ldr r5, [sp, #0x38]
- and r0, r6
- mul r5, r0
- mov r0, #0x1c
- and r0, r6
- add r4, r1, #0x0
- str r5, [sp, #0xec]
- str r0, [sp, #0xe8]
-_0201A09C:
- asr r5, r2, #0x1
- mov r0, #0x3
- and r5, r0
- ldr r0, [sp, #0x278]
- add r0, r0, r5
- ldr r5, _0201A3A8 ; =0x00003FE0
- and r5, r3
- add r5, r0, r5
- ldr r0, [sp, #0xf0]
- str r5, [sp, #0x2e8]
- add r0, r5, r0
- ldr r5, [sp, #0x1f0]
- add r6, r5, #0x0
- lsr r6, r4
- mov r5, #0xf
- and r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- beq _0201A0F0
- lsl r6, r2, #0x1f
- lsr r6, r6, #0x1d
- lsl r5, r6
- str r5, [sp, #0x2ec]
- ldrb r5, [r0, r7]
- mov r12, r5
- mov r5, #0xf0
- asr r5, r6
- mov r6, r12
- and r6, r5
- ldr r5, [sp, #0x2ec]
- orr r5, r6
- lsl r5, r5, #0x18
- lsr r5, r5, #0x18
- strb r5, [r0, r7]
- ldr r0, [sp, #0x1f4]
- cmp r0, #0x0
- beq _0201A0F0
- ldr r6, [sp, #0x2e8]
- ldr r0, [sp, #0xec]
- add r6, r6, r0
- ldr r0, [sp, #0xe8]
- strb r5, [r0, r6]
-_0201A0F0:
- ldr r0, [sp, #0x2e4]
- add r1, r1, #0x1
- add r4, r4, #0x4
- add r3, r3, #0x4
- add r2, r2, #0x1
- cmp r1, r0
- blt _0201A09C
-_0201A0FE:
- ldr r0, [sp, #0x1f4]
- cmp r0, #0x0
- beq _0201A10C
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _0201A112
-_0201A10C:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A112:
- ldr r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- add r0, r0, #0x4
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x18]
- sub r1, #0x8
- add r0, r0, #0x1
- str r0, [sp, #0x18]
- cmp r0, r1
- blt _0201A044
- add sp, #0x1fc
- add sp, #0x118
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0201A12C
-FUN_0201A12C: ; 0x0201A12C
- lsl r1, r2, #0x2
- mul r1, r3
- ldr r3, [r5, #0x0]
- ldrb r2, [r5, #0x9]
- ldr r0, [sp, #0x0]
- ldr r3, [r3, #0x0]
- lsl r1, r1, #0x3
- bl FUN_02018848
- str r0, [sp, #0x1ec]
- cmp r4, #0x3
- bhi _0201A21E
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0201A150: ; jump table (using 16-bit offset)
- .short _0201A158 - _0201A150 - 2; case 0
- .short _0201A220 - _0201A150 - 2; case 1
- .short _0201A3CA - _0201A150 - 2; case 2
- .short _0201A56E - _0201A150 - 2; case 3
-_0201A158:
- ldr r0, [sp, #0x330]
- ldr r7, [sp, #0x1ec]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x10c]
- mov r0, #0x0
- str r0, [sp, #0x1e8]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ble _0201A21E
- ldr r0, [sp, #0x58]
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x108]
-_0201A178:
- ldr r1, [sp, #0x10c]
- ldr r0, [sp, #0x1e8]
- mov r4, #0x0
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x310]
- ldr r0, [sp, #0x8]
- ldr r5, [sp, #0x5c]
- cmp r0, #0x0
- ble _0201A1FC
- ble _0201A1FC
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x108]
- lsl r1, r0, #0x3
- ldr r0, _0201A3AC ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x100]
- ldr r0, [sp, #0x48]
- str r2, [sp, #0x104]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A3AC ; =0x00007FC0
- ldr r2, [sp, #0x108]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r2, [sp, #0xfc]
- str r0, [sp, #0xf8]
-_0201A1C4:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A3AC ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x104]
- ldrb r1, [r7, r4]
- add r2, r3, r0
- cmp r1, #0x0
- beq _0201A1F0
- ldr r0, [sp, #0x100]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x310]
- cmp r0, #0x0
- beq _0201A1F0
- ldr r0, [sp, #0xfc]
- add r2, r3, r0
- ldr r0, [sp, #0xf8]
- strb r1, [r0, r2]
-_0201A1F0:
- ldr r0, [sp, #0x8]
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, r0
- blt _0201A1C4
-_0201A1FC:
- ldr r0, [sp, #0x310]
- cmp r0, #0x0
- beq _0201A20A
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _0201A210
-_0201A20A:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A210:
- ldr r0, [sp, #0x1e8]
- add r7, #0x8
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x1e8]
- cmp r1, r0
- blt _0201A178
-_0201A21E:
- b _0201A8B6
-_0201A220:
- ldr r0, [sp, #0x48]
- ldr r7, [sp, #0x1ec]
- str r0, [sp, #0x1e0]
- ldr r0, [sp, #0x330]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x4c]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x124]
- mov r0, #0x0
- str r0, [sp, #0x1e4]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ble _0201A2E6
- ldr r0, [sp, #0x58]
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x120]
-_0201A24A:
- ldr r1, [sp, #0x124]
- ldr r0, [sp, #0x1e4]
- ldr r5, [sp, #0x5c]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x30c]
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x1e0]
- ldr r2, [sp, #0x120]
- lsl r1, r0, #0x3
- ldr r0, _0201A3AC ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x118]
- ldr r0, [sp, #0x1e0]
- str r2, [sp, #0x11c]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A3AC ; =0x00007FC0
- ldr r2, [sp, #0x120]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- mov r4, #0x0
- str r2, [sp, #0x114]
- str r0, [sp, #0x110]
-_0201A28E:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A3AC ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x11c]
- ldrb r1, [r7, r4]
- add r2, r3, r0
- cmp r1, #0x0
- beq _0201A2BA
- ldr r0, [sp, #0x118]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x30c]
- cmp r0, #0x0
- beq _0201A2BA
- ldr r0, [sp, #0x114]
- add r2, r3, r0
- ldr r0, [sp, #0x110]
- strb r1, [r0, r2]
-_0201A2BA:
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, #0x8
- blt _0201A28E
- ldr r0, [sp, #0x30c]
- cmp r0, #0x0
- beq _0201A2D2
- ldr r0, [sp, #0x1e0]
- add r0, r0, #0x2
- str r0, [sp, #0x1e0]
- b _0201A2D8
-_0201A2D2:
- ldr r0, [sp, #0x1e0]
- add r0, r0, #0x1
- str r0, [sp, #0x1e0]
-_0201A2D8:
- ldr r0, [sp, #0x1e4]
- add r7, #0x8
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x1e4]
- cmp r1, r0
- blt _0201A24A
-_0201A2E6:
- ldr r0, [sp, #0x1ec]
- str r0, [sp, #0x308]
- add r0, #0x40
- str r0, [sp, #0x308]
- ldr r0, [sp, #0x4c]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x13c]
- mov r0, #0x0
- str r0, [sp, #0x1dc]
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ble _0201A3C8
- ldr r0, [sp, #0x5c]
- mov r1, #0x7
- add r0, #0x8
- str r0, [sp, #0x5c]
- ldr r0, [sp, #0x58]
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x138]
-_0201A312:
- ldr r1, [sp, #0x13c]
- ldr r0, [sp, #0x1dc]
- ldr r7, [sp, #0x8]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- sub r7, #0x8
- mov r4, #0x0
- str r0, [sp, #0x1d8]
- ldr r5, [sp, #0x5c]
- cmp r7, #0x0
- ble _0201A398
- ble _0201A398
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x138]
- lsl r1, r0, #0x3
- ldr r0, _0201A3AC ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x130]
- ldr r0, [sp, #0x48]
- str r2, [sp, #0x134]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A3AC ; =0x00007FC0
- ldr r2, [sp, #0x138]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r2, [sp, #0x12c]
- str r0, [sp, #0x128]
-_0201A360:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A3AC ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x134]
- add r2, r3, r0
- ldr r0, [sp, #0x308]
- ldrb r1, [r0, r4]
- cmp r1, #0x0
- beq _0201A38E
- ldr r0, [sp, #0x130]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x1d8]
- cmp r0, #0x0
- beq _0201A38E
- ldr r0, [sp, #0x12c]
- add r2, r3, r0
- ldr r0, [sp, #0x128]
- strb r1, [r0, r2]
-_0201A38E:
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, r7
- blt _0201A360
-_0201A398:
- ldr r0, [sp, #0x1d8]
- cmp r0, #0x0
- beq _0201A3B0
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _0201A3B6
- nop
-_0201A3A8: .word 0x00003FE0
-_0201A3AC: .word 0x00007FC0
-_0201A3B0:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A3B6:
- ldr r0, [sp, #0x308]
- add r0, #0x8
- str r0, [sp, #0x308]
- ldr r0, [sp, #0x1dc]
- add r1, r0, #0x1
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x1dc]
- cmp r1, r0
- blt _0201A312
-_0201A3C8:
- b _0201A8B6
-_0201A3CA:
- ldr r0, [sp, #0x48]
- mov r1, #0x7
- str r0, [sp, #0x1d0]
- mov r0, #0x0
- str r0, [sp, #0x1d4]
- ldr r0, [sp, #0x330]
- ldr r7, [sp, #0x1ec]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x150]
- ldr r0, [sp, #0x58]
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x30]
-_0201A3E8:
- ldr r1, [sp, #0x150]
- ldr r0, [sp, #0x1d4]
- mov r4, #0x0
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x304]
- ldr r0, [sp, #0x8]
- ldr r5, [sp, #0x5c]
- cmp r0, #0x0
- ble _0201A46C
- ble _0201A46C
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x1d0]
- ldr r2, [sp, #0x30]
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x148]
- ldr r0, [sp, #0x1d0]
- str r2, [sp, #0x14c]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- ldr r2, [sp, #0x30]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r2, [sp, #0x144]
- str r0, [sp, #0x140]
-_0201A434:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A748 ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x14c]
- ldrb r1, [r7, r4]
- add r2, r3, r0
- cmp r1, #0x0
- beq _0201A460
- ldr r0, [sp, #0x148]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x304]
- cmp r0, #0x0
- beq _0201A460
- ldr r0, [sp, #0x144]
- add r2, r3, r0
- ldr r0, [sp, #0x140]
- strb r1, [r0, r2]
-_0201A460:
- ldr r0, [sp, #0x8]
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, r0
- blt _0201A434
-_0201A46C:
- ldr r0, [sp, #0x304]
- cmp r0, #0x0
- beq _0201A47A
- ldr r0, [sp, #0x1d0]
- add r0, r0, #0x2
- str r0, [sp, #0x1d0]
- b _0201A480
-_0201A47A:
- ldr r0, [sp, #0x1d0]
- add r0, r0, #0x1
- str r0, [sp, #0x1d0]
-_0201A480:
- ldr r0, [sp, #0x1d4]
- add r7, #0x8
- add r0, r0, #0x1
- str r0, [sp, #0x1d4]
- cmp r0, #0x8
- blt _0201A3E8
- ldr r0, [sp, #0x48]
- ldr r7, [sp, #0x1ec]
- add r0, #0x8
- str r0, [sp, #0x48]
- add r7, #0x80
- mov r0, #0x0
- mov r2, #0x1
-_0201A49A:
- ldr r1, [sp, #0x330]
- asr r1, r0
- tst r1, r2
- beq _0201A4A8
- ldr r1, [sp, #0x48]
- add r1, r1, #0x1
- str r1, [sp, #0x48]
-_0201A4A8:
- add r0, r0, #0x1
- cmp r0, #0x8
- blt _0201A49A
- ldr r0, [sp, #0x330]
- asr r0, r0, #0x8
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x164]
- mov r0, #0x0
- str r0, [sp, #0x14]
- ldr r0, [sp, #0x4]
- sub r0, #0x8
- cmp r0, #0x0
- ble _0201A56C
-_0201A4C4:
- ldr r1, [sp, #0x164]
- ldr r0, [sp, #0x14]
- mov r4, #0x0
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x300]
- ldr r0, [sp, #0x8]
- ldr r5, [sp, #0x5c]
- cmp r0, #0x0
- ble _0201A548
- ble _0201A548
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x30]
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x15c]
- ldr r0, [sp, #0x48]
- str r2, [sp, #0x160]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- ldr r2, [sp, #0x30]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r2, [sp, #0x158]
- str r0, [sp, #0x154]
-_0201A510:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A748 ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x160]
- ldrb r1, [r7, r4]
- add r2, r3, r0
- cmp r1, #0x0
- beq _0201A53C
- ldr r0, [sp, #0x15c]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x300]
- cmp r0, #0x0
- beq _0201A53C
- ldr r0, [sp, #0x158]
- add r2, r3, r0
- ldr r0, [sp, #0x154]
- strb r1, [r0, r2]
-_0201A53C:
- ldr r0, [sp, #0x8]
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, r0
- blt _0201A510
-_0201A548:
- ldr r0, [sp, #0x300]
- cmp r0, #0x0
- beq _0201A556
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _0201A55C
-_0201A556:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A55C:
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #0x4]
- add r0, r0, #0x1
- sub r1, #0x8
- add r7, #0x8
- str r0, [sp, #0x14]
- cmp r0, r1
- blt _0201A4C4
-_0201A56C:
- b _0201A8B6
-_0201A56E:
- ldr r0, [sp, #0x48]
- ldr r7, [sp, #0x1ec]
- str r0, [sp, #0x1c8]
- ldr r0, [sp, #0x330]
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- mov r0, #0x0
- str r0, [sp, #0x1cc]
- lsl r0, r1, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x58]
- mov r1, #0x7
- and r1, r0
- add r0, r0, r1
- asr r0, r0, #0x3
- str r0, [sp, #0x28]
-_0201A590:
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x1cc]
- ldr r5, [sp, #0x5c]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x2fc]
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x1c8]
- ldr r2, [sp, #0x28]
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x170]
- ldr r0, [sp, #0x1c8]
- str r2, [sp, #0x174]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- ldr r2, [sp, #0x28]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- mov r4, #0x0
- str r6, [sp, #0x24]
- str r2, [sp, #0x16c]
- str r0, [sp, #0x168]
-_0201A5D6:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A748 ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x174]
- ldrb r1, [r7, r4]
- add r2, r3, r0
- cmp r1, #0x0
- beq _0201A602
- ldr r0, [sp, #0x170]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x2fc]
- cmp r0, #0x0
- beq _0201A602
- ldr r0, [sp, #0x16c]
- add r2, r3, r0
- ldr r0, [sp, #0x168]
- strb r1, [r0, r2]
-_0201A602:
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, #0x8
- blt _0201A5D6
- ldr r0, [sp, #0x2fc]
- cmp r0, #0x0
- beq _0201A61A
- ldr r0, [sp, #0x1c8]
- add r0, r0, #0x2
- str r0, [sp, #0x1c8]
- b _0201A620
-_0201A61A:
- ldr r0, [sp, #0x1c8]
- add r0, r0, #0x1
- str r0, [sp, #0x1c8]
-_0201A620:
- ldr r0, [sp, #0x1cc]
- add r7, #0x8
- add r0, r0, #0x1
- str r0, [sp, #0x1cc]
- cmp r0, #0x8
- blt _0201A590
- ldr r0, [sp, #0x1ec]
- str r0, [sp, #0x2f8]
- add r0, #0x40
- str r0, [sp, #0x2f8]
- ldr r0, [sp, #0x48]
- str r0, [sp, #0x1c0]
- mov r0, #0x0
- str r0, [sp, #0x1c4]
- ldr r0, [sp, #0x5c]
- str r0, [sp, #0x188]
- add r0, #0x8
- str r0, [sp, #0x188]
-_0201A644:
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x1c4]
- ldr r7, [sp, #0x8]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- sub r7, #0x8
- mov r4, #0x0
- str r0, [sp, #0x1bc]
- ldr r5, [sp, #0x188]
- cmp r7, #0x0
- ble _0201A6CA
- ble _0201A6CA
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x1c0]
- ldr r2, [sp, #0x28]
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x180]
- ldr r0, [sp, #0x1c0]
- str r2, [sp, #0x184]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- ldr r2, [sp, #0x28]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r2, [sp, #0x17c]
- str r0, [sp, #0x178]
-_0201A692:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A748 ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x184]
- add r2, r3, r0
- ldr r0, [sp, #0x2f8]
- ldrb r1, [r0, r4]
- cmp r1, #0x0
- beq _0201A6C0
- ldr r0, [sp, #0x180]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x1bc]
- cmp r0, #0x0
- beq _0201A6C0
- ldr r0, [sp, #0x17c]
- add r2, r3, r0
- ldr r0, [sp, #0x178]
- strb r1, [r0, r2]
-_0201A6C0:
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, r7
- blt _0201A692
-_0201A6CA:
- ldr r0, [sp, #0x1bc]
- cmp r0, #0x0
- beq _0201A6D8
- ldr r0, [sp, #0x1c0]
- add r0, r0, #0x2
- str r0, [sp, #0x1c0]
- b _0201A6DE
-_0201A6D8:
- ldr r0, [sp, #0x1c0]
- add r0, r0, #0x1
- str r0, [sp, #0x1c0]
-_0201A6DE:
- ldr r0, [sp, #0x2f8]
- add r0, #0x8
- str r0, [sp, #0x2f8]
- ldr r0, [sp, #0x1c4]
- add r0, r0, #0x1
- str r0, [sp, #0x1c4]
- cmp r0, #0x8
- blt _0201A644
- ldr r0, [sp, #0x48]
- ldr r7, [sp, #0x1ec]
- add r0, #0x8
- add r7, #0x80
- str r0, [sp, #0x48]
- str r0, [sp, #0x1b8]
- mov r0, #0x0
- mov r2, #0x1
-_0201A6FE:
- ldr r1, [sp, #0x330]
- asr r1, r0
- tst r1, r2
- beq _0201A70C
- ldr r1, [sp, #0x1b8]
- add r1, r1, #0x1
- str r1, [sp, #0x1b8]
-_0201A70C:
- add r0, r0, #0x1
- cmp r0, #0x8
- blt _0201A6FE
- ldr r0, [sp, #0x330]
- asr r0, r0, #0x8
- str r0, [sp, #0x44]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x19c]
- mov r0, #0x0
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x4]
- sub r0, #0x8
- cmp r0, #0x0
- ble _0201A7CE
-_0201A72A:
- ldr r1, [sp, #0x19c]
- ldr r0, [sp, #0x10]
- ldr r2, [sp, #0x28]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x2f4]
- ldr r0, [sp, #0x1b8]
- mov r3, #0x38
- lsl r1, r0, #0x3
- ldr r0, _0201A748 ; =0x00007FC0
- b _0201A74C
- nop
-_0201A748: .word 0x00007FC0
-_0201A74C:
- ldr r5, [sp, #0x5c]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x194]
- ldr r0, [sp, #0x1b8]
- str r2, [sp, #0x198]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A8C4 ; =0x00007FC0
- ldr r2, [sp, #0x28]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- ldr r6, [sp, #0x24]
- mov r4, #0x0
- str r2, [sp, #0x190]
- str r0, [sp, #0x18c]
-_0201A774:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A8C4 ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x198]
- ldrb r1, [r7, r4]
- add r2, r3, r0
- cmp r1, #0x0
- beq _0201A7A0
- ldr r0, [sp, #0x194]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x2f4]
- cmp r0, #0x0
- beq _0201A7A0
- ldr r0, [sp, #0x190]
- add r2, r3, r0
- ldr r0, [sp, #0x18c]
- strb r1, [r0, r2]
-_0201A7A0:
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, #0x8
- blt _0201A774
- ldr r0, [sp, #0x2f4]
- cmp r0, #0x0
- beq _0201A7B8
- ldr r0, [sp, #0x1b8]
- add r0, r0, #0x2
- str r0, [sp, #0x1b8]
- b _0201A7BE
-_0201A7B8:
- ldr r0, [sp, #0x1b8]
- add r0, r0, #0x1
- str r0, [sp, #0x1b8]
-_0201A7BE:
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x4]
- add r0, r0, #0x1
- sub r1, #0x8
- add r7, #0x8
- str r0, [sp, #0x10]
- cmp r0, r1
- blt _0201A72A
-_0201A7CE:
- ldr r0, [sp, #0x1ec]
- mov r2, #0x0
- str r0, [sp, #0x2f0]
- add r0, #0xc0
- str r0, [sp, #0x2f0]
- mov r1, #0x1
-_0201A7DA:
- ldr r0, [sp, #0x330]
- asr r0, r2
- tst r0, r1
- beq _0201A7E8
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A7E8:
- add r2, r2, #0x1
- cmp r2, #0x8
- blt _0201A7DA
- ldr r0, [sp, #0x44]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x1b0]
- mov r0, #0x0
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x4]
- sub r0, #0x8
- cmp r0, #0x0
- ble _0201A8B6
- ldr r0, [sp, #0x5c]
- add r0, #0x8
- str r0, [sp, #0x5c]
-_0201A808:
- ldr r1, [sp, #0x1b0]
- ldr r0, [sp, #0xc]
- ldr r7, [sp, #0x8]
- asr r1, r0
- mov r0, #0x1
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- sub r7, #0x8
- mov r4, #0x0
- str r0, [sp, #0x1b4]
- ldr r5, [sp, #0x5c]
- cmp r7, #0x0
- ble _0201A88E
- ble _0201A88E
- add r0, r5, #0x0
- lsl r6, r0, #0x3
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x28]
- lsl r1, r0, #0x3
- ldr r0, _0201A8C4 ; =0x00007FC0
- mov r3, #0x38
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r0, [sp, #0x1a8]
- ldr r0, [sp, #0x48]
- str r2, [sp, #0x1ac]
- add r0, r0, #0x1
- lsl r1, r0, #0x3
- ldr r0, _0201A8C4 ; =0x00007FC0
- ldr r2, [sp, #0x28]
- and r0, r1
- mul r2, r0
- add r0, r1, #0x0
- and r0, r3
- str r2, [sp, #0x1a4]
- str r0, [sp, #0x1a0]
-_0201A856:
- mov r0, #0x7
- add r1, r5, #0x0
- and r1, r0
- ldr r0, [sp, #0x278]
- add r1, r0, r1
- ldr r0, _0201A8C4 ; =0x00007FC0
- and r0, r6
- add r3, r1, r0
- ldr r0, [sp, #0x1ac]
- add r2, r3, r0
- ldr r0, [sp, #0x2f0]
- ldrb r1, [r0, r4]
- cmp r1, #0x0
- beq _0201A884
- ldr r0, [sp, #0x1a8]
- strb r1, [r2, r0]
- ldr r0, [sp, #0x1b4]
- cmp r0, #0x0
- beq _0201A884
- ldr r0, [sp, #0x1a4]
- add r2, r3, r0
- ldr r0, [sp, #0x1a0]
- strb r1, [r0, r2]
-_0201A884:
- add r4, r4, #0x1
- add r6, #0x8
- add r5, r5, #0x1
- cmp r4, r7
- blt _0201A856
-_0201A88E:
- ldr r0, [sp, #0x1b4]
- cmp r0, #0x0
- beq _0201A89C
- ldr r0, [sp, #0x48]
- add r0, r0, #0x2
- str r0, [sp, #0x48]
- b _0201A8A2
-_0201A89C:
- ldr r0, [sp, #0x48]
- add r0, r0, #0x1
- str r0, [sp, #0x48]
-_0201A8A2:
- ldr r0, [sp, #0x2f0]
- ldr r1, [sp, #0x4]
- add r0, #0x8
- str r0, [sp, #0x2f0]
- ldr r0, [sp, #0xc]
- sub r1, #0x8
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- cmp r0, r1
- blt _0201A808
-_0201A8B6:
- ldr r0, [sp, #0x1ec]
- bl FreeToHeap
-
- thumb_func_start FUN_0201A8BC
-FUN_0201A8BC: ; 0x0201A8BC
- add sp, #0x1fc
- add sp, #0x118
- pop {r4-r7, pc}
- nop
-_0201A8C4: .word 0x00007FC0
-
- thumb_func_start FUN_0201A8C8
-FUN_0201A8C8: ; 0x0201A8C8
- push {r4-r6, lr}
- ldrb r6, [r0, #0x4]
- mov r5, #0x2c
- ldr r4, [r0, #0x0]
- mul r5, r6
- add r4, r4, r5
- ldrb r4, [r4, #0x1e]
- cmp r4, #0x0
- bne _0201A8E0
- bl FUN_0201A8E8
- pop {r4-r6, pc}
-_0201A8E0:
- bl FUN_0201A9D4
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0201A8E8
-FUN_0201A8E8: ; 0x0201A8E8
- push {r3-r7, lr}
- sub sp, #0x10
- add r6, r3, #0x0
- add r4, r0, #0x0
- add r0, r1, #0x0
- lsl r3, r6, #0x18
- lsl r1, r6, #0x10
- str r2, [sp, #0x0]
- orr r1, r3
- lsl r5, r6, #0x8
- orr r1, r5
- orr r1, r6
- str r1, [sp, #0x4]
- ldrb r1, [r4, #0x7]
- ldrb r3, [r4, #0x8]
- ldr r2, [r4, #0xc]
- str r1, [sp, #0x8]
- mul r1, r3
- lsl r1, r1, #0x5
- str r1, [sp, #0xc]
- cmp r0, #0x3
- bhi _0201A9CE
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0201A920: ; jump table (using 16-bit offset)
- .short _0201A928 - _0201A920 - 2; case 0
- .short _0201A976 - _0201A920 - 2; case 1
- .short _0201A9CE - _0201A920 - 2; case 2
- .short _0201A9CE - _0201A920 - 2; case 3
-_0201A928:
- add r0, r1, #0x0
- mov r7, #0x0
- cmp r0, #0x0
- ble _0201A9CE
- mov r0, #0x7
- mov lr, r0
-_0201A934:
- ldr r3, [sp, #0x0]
- mov r4, #0x0
- add r5, r7, #0x0
-_0201A93A:
- mov r0, #0x7
- add r6, r3, #0x0
- and r6, r0
- add r1, r3, #0x0
- mov r0, lr
- bic r1, r0
- ldr r0, [sp, #0x8]
- mul r1, r0
- add r0, r6, #0x0
- orr r0, r1
- lsl r0, r0, #0x2
- add r1, r7, r0
- ldr r0, [sp, #0xc]
- cmp r1, r0
- bge _0201A95C
- ldr r0, [r2, r1]
- b _0201A95E
-_0201A95C:
- ldr r0, [sp, #0x4]
-_0201A95E:
- add r4, r4, #0x1
- str r0, [r2, r5]
- add r3, r3, #0x1
- add r5, r5, #0x4
- cmp r4, #0x8
- blt _0201A93A
- ldr r0, [sp, #0xc]
- add r7, #0x20
- cmp r7, r0
- blt _0201A934
- add sp, #0x10
- pop {r3-r7, pc}
-_0201A976:
- add r0, r1, #0x0
- sub r0, r0, #0x4
- add r2, r2, r0
- add r0, r1, #0x0
- mov r7, #0x0
- cmp r0, #0x0
- ble _0201A9CE
- mov r0, #0x7
- mov r12, r0
-_0201A988:
- ldr r4, [sp, #0x0]
- mov r5, #0x0
- add r3, r7, #0x0
-_0201A98E:
- mov r0, #0x7
- add r6, r4, #0x0
- and r6, r0
- add r1, r4, #0x0
- mov r0, r12
- bic r1, r0
- ldr r0, [sp, #0x8]
- mul r1, r0
- add r0, r6, #0x0
- orr r0, r1
- lsl r0, r0, #0x2
- add r1, r7, r0
- ldr r0, [sp, #0xc]
- cmp r1, r0
- bge _0201A9B6
- sub r0, r2, r1
- ldr r1, [r0, #0x0]
- sub r0, r2, r3
- str r1, [r0, #0x0]
- b _0201A9BC
-_0201A9B6:
- ldr r0, [sp, #0x4]
- sub r1, r2, r3
- str r0, [r1, #0x0]
-_0201A9BC:
- add r5, r5, #0x1
- add r4, r4, #0x1
- add r3, r3, #0x4
- cmp r5, #0x8
- blt _0201A98E
- ldr r0, [sp, #0xc]
- add r7, #0x20
- cmp r7, r0
- blt _0201A988
-_0201A9CE:
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0201A9D4
-FUN_0201A9D4: ; 0x0201A9D4
- push {r3-r7, lr}
- sub sp, #0x20
- add r6, r3, #0x0
- add r4, r0, #0x0
- str r2, [sp, #0x0]
- lsl r2, r6, #0x18
- lsl r0, r6, #0x10
- orr r0, r2
- ldrb r2, [r4, #0x7]
- ldr r3, [r4, #0xc]
- lsl r5, r6, #0x8
- orr r0, r5
- ldrb r4, [r4, #0x8]
- str r2, [sp, #0x10]
- orr r0, r6
- mul r2, r4
- lsl r2, r2, #0x6
- str r2, [sp, #0x1c]
- cmp r1, #0x3
- bls _0201A9FE
- b _0201AB04
-_0201A9FE:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0201AA0A: ; jump table (using 16-bit offset)
- .short _0201AA12 - _0201AA0A - 2; case 0
- .short _0201AA80 - _0201AA0A - 2; case 1
- .short _0201AB04 - _0201AA0A - 2; case 2
- .short _0201AB04 - _0201AA0A - 2; case 3
-_0201AA12:
- mov r1, #0x0
- str r1, [sp, #0xc]
- add r1, r2, #0x0
- cmp r1, #0x0
- ble _0201AB04
- add r1, r1, #0x4
- str r1, [sp, #0x14]
- mov r1, #0x7
- mov lr, r1
-_0201AA24:
- ldr r4, [sp, #0x0]
- ldr r5, [sp, #0xc]
- mov r7, #0x0
-_0201AA2A:
- mov r1, #0x7
- add r6, r4, #0x0
- and r6, r1
- add r2, r4, #0x0
- mov r1, lr
- bic r2, r1
- ldr r1, [sp, #0x10]
- mul r2, r1
- add r1, r6, #0x0
- orr r1, r2
- lsl r2, r1, #0x3
- ldr r1, [sp, #0xc]
- add r1, r1, r2
- ldr r2, [sp, #0x1c]
- cmp r1, r2
- bge _0201AA50
- ldr r2, [r3, r1]
- str r2, [r3, r5]
- b _0201AA52
-_0201AA50:
- str r0, [r3, r5]
-_0201AA52:
- add r2, r1, #0x4
- ldr r1, [sp, #0x14]
- cmp r2, r1
- bge _0201AA62
- ldr r2, [r3, r2]
- add r1, r5, #0x4
- str r2, [r3, r1]
- b _0201AA66
-_0201AA62:
- add r1, r5, #0x4
- str r0, [r3, r1]
-_0201AA66:
- add r7, r7, #0x1
- add r4, r4, #0x1
- add r5, #0x8
- cmp r7, #0x8
- blt _0201AA2A
- ldr r2, [sp, #0xc]
- ldr r1, [sp, #0x1c]
- add r2, #0x40
- str r2, [sp, #0xc]
- cmp r2, r1
- blt _0201AA24
- add sp, #0x20
- pop {r3-r7, pc}
-_0201AA80:
- add r1, r2, #0x0
- sub r1, #0x8
- add r3, r3, r1
- mov r1, #0x0
- str r1, [sp, #0x8]
- add r1, r2, #0x0
- cmp r1, #0x0
- ble _0201AB04
-_0201AA90:
- mov r1, #0x0
- str r1, [sp, #0x4]
- ldr r1, [sp, #0x1c]
- ldr r5, [sp, #0x0]
- sub r1, r1, #0x4
- str r1, [sp, #0x18]
- mov r1, #0x7
- ldr r4, [sp, #0x8]
- mov r12, r1
-_0201AAA2:
- mov r1, #0x7
- add r6, r5, #0x0
- and r6, r1
- add r2, r5, #0x0
- mov r1, r12
- bic r2, r1
- ldr r1, [sp, #0x10]
- mul r2, r1
- add r1, r6, #0x0
- orr r1, r2
- lsl r2, r1, #0x3
- ldr r1, [sp, #0x8]
- add r6, r1, r2
- ldr r1, [sp, #0x1c]
- cmp r6, r1
- bge _0201AACC
- sub r1, r3, r6
- ldr r2, [r1, #0x0]
- sub r1, r3, r4
- str r2, [r1, #0x0]
- b _0201AAD0
-_0201AACC:
- sub r1, r3, r4
- str r0, [r1, #0x0]
-_0201AAD0:
- ldr r1, [sp, #0x18]
- sub r2, r6, #0x4
- cmp r2, r1
- bge _0201AAE4
- sub r1, r3, r2
- sub r2, r4, #0x4
- ldr r1, [r1, #0x0]
- sub r2, r3, r2
- str r1, [r2, #0x0]
- b _0201AAEA
-_0201AAE4:
- sub r1, r4, #0x4
- sub r1, r3, r1
- str r0, [r1, #0x0]
-_0201AAEA:
- ldr r1, [sp, #0x4]
- add r5, r5, #0x1
- add r1, r1, #0x1
- add r4, #0x8
- str r1, [sp, #0x4]
- cmp r1, #0x8
- blt _0201AAA2
- ldr r2, [sp, #0x8]
- ldr r1, [sp, #0x1c]
- add r2, #0x40
- str r2, [sp, #0x8]
- cmp r2, r1
- blt _0201AA90
-_0201AB04:
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0201AB08
-FUN_0201AB08: ; 0x0201AB08
- ldrb r0, [r0, #0x4]
- bx lr
-
- thumb_func_start FUN_0201AB0C
-FUN_0201AB0C: ; 0x0201AB0C
- ldrb r0, [r0, #0x7]
- bx lr
-
- thumb_func_start FUN_0201AB10
-FUN_0201AB10: ; 0x0201AB10
- ldrb r0, [r0, #0x8]
- bx lr
-
- thumb_func_start FUN_0201AB14
-FUN_0201AB14: ; 0x0201AB14
- ldrb r0, [r0, #0x5]
- bx lr
-
- thumb_func_start FUN_0201AB18
-FUN_0201AB18: ; 0x0201AB18
- ldrb r0, [r0, #0x6]
- bx lr
-
- thumb_func_start FUN_0201AB1C
-FUN_0201AB1C: ; 0x0201AB1C
- strb r1, [r0, #0x5]
- bx lr
-
- thumb_func_start FUN_0201AB20
-FUN_0201AB20: ; 0x0201AB20
- strb r1, [r0, #0x6]
- bx lr
-
- thumb_func_start FUN_0201AB24
-FUN_0201AB24: ; 0x0201AB24
- strb r1, [r0, #0x9]
- bx lr
-
- thumb_func_start FUN_0201AB28
-FUN_0201AB28: ; 0x0201AB28
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- add r0, r1, #0x0
- add r1, r2, #0x0
- bl FUN_020161A4
- add r1, sp, #0x0
- str r0, [r4, #0x0]
- bl FUN_020B0030
- ldr r0, [sp, #0x0]
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0201AB44
-FUN_0201AB44: ; 0x0201AB44
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- add r0, r1, #0x0
- add r1, r2, #0x0
- bl FUN_020161A4
- add r1, sp, #0x0
- str r0, [r4, #0x0]
- bl FUN_020B0138
- ldr r0, [sp, #0x0]
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0201AB60
-FUN_0201AB60: ; 0x0201AB60
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_0201AC78
- add r0, r4, #0x0
- bl FUN_0201AB78
- mov r0, #0x0
- strh r0, [r4, #0x4]
- strh r0, [r4, #0x6]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0201AB78
-FUN_0201AB78: ; 0x0201AB78
- push {r4, lr}
- add r4, r0, #0x0
- ldrh r1, [r4, #0x6]
- mov r0, #0x1
- tst r0, r1
- beq _0201AB92
- ldr r2, [r4, #0x10]
- ldr r1, [r4, #0x8]
- ldr r3, [r4, #0xc]
- mov r0, #0x0
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201AB92:
- ldrh r1, [r4, #0x6]
- mov r0, #0x2
- tst r0, r1
- beq _0201ABA8
- ldr r2, [r4, #0x3c]
- ldr r1, [r4, #0x34]
- ldr r3, [r4, #0x38]
- mov r0, #0x1
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201ABA8:
- ldrh r1, [r4, #0x6]
- mov r0, #0x4
- tst r0, r1
- beq _0201ABBE
- ldr r2, [r4, #0x68]
- ldr r1, [r4, #0x60]
- ldr r3, [r4, #0x64]
- mov r0, #0x2
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201ABBE:
- ldrh r1, [r4, #0x6]
- mov r0, #0x8
- tst r0, r1
- beq _0201ABE0
- add r2, r4, #0x0
- add r1, r4, #0x0
- add r2, #0x94
- add r3, r4, #0x0
- add r1, #0x8c
- ldr r2, [r2, #0x0]
- add r3, #0x90
- ldr r1, [r1, #0x0]
- ldr r3, [r3, #0x0]
- mov r0, #0x3
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201ABE0:
- ldrh r1, [r4, #0x6]
- mov r0, #0x10
- tst r0, r1
- beq _0201AC02
- add r2, r4, #0x0
- add r1, r4, #0x0
- add r2, #0xc0
- add r3, r4, #0x0
- add r1, #0xb8
- ldr r2, [r2, #0x0]
- add r3, #0xbc
- ldr r1, [r1, #0x0]
- ldr r3, [r3, #0x0]
- mov r0, #0x4
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201AC02:
- ldrh r1, [r4, #0x6]
- mov r0, #0x20
- tst r0, r1
- beq _0201AC24
- add r2, r4, #0x0
- add r1, r4, #0x0
- add r2, #0xec
- add r3, r4, #0x0
- add r1, #0xe4
- ldr r2, [r2, #0x0]
- add r3, #0xe8
- ldr r1, [r1, #0x0]
- ldr r3, [r3, #0x0]
- mov r0, #0x5
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201AC24:
- ldrh r0, [r4, #0x6]
- mov r3, #0x40
- tst r0, r3
- beq _0201AC44
- add r2, r3, #0x0
- add r1, r3, #0x0
- add r2, #0xd8
- add r1, #0xd0
- ldr r2, [r4, r2]
- add r3, #0xd4
- ldr r1, [r4, r1]
- ldr r3, [r4, r3]
- mov r0, #0x6
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201AC44:
- ldrh r0, [r4, #0x6]
- mov r3, #0x80
- tst r0, r3
- beq _0201AC64
- add r2, r3, #0x0
- add r1, r3, #0x0
- add r2, #0xc4
- add r1, #0xbc
- ldr r2, [r4, r2]
- add r3, #0xc0
- ldr r1, [r4, r1]
- ldr r3, [r4, r3]
- mov r0, #0x7
- lsl r2, r2, #0x1
- bl FUN_02017D68
-_0201AC64:
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0201AC68
-FUN_0201AC68: ; 0x0201AC68
- ldrh r3, [r0, #0x6]
- mov r2, #0x1
- lsl r2, r1
- add r1, r3, #0x0
- orr r1, r2
- strh r1, [r0, #0x6]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0201AC78
-FUN_0201AC78: ; 0x0201AC78
- push {r4, lr}
- sub sp, #0x48
- add r4, r0, #0x0
- ldrh r1, [r4, #0x4]
- mov r0, #0x1
- tst r0, r1
- beq _0201AC9E
- ldr r1, [r4, #0x14]
- ldr r0, _0201AEB0 ; =0x000001FF
- add r2, r1, #0x0
- ldr r1, [r4, #0x18]
- and r2, r0
- lsl r1, r1, #0x10
- lsl r0, r0, #0x10
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- ldr r0, _0201AEB4 ; =0x04000010
- str r1, [r0, #0x0]
-_0201AC9E:
- ldrh r1, [r4, #0x4]
- mov r0, #0x2
- tst r0, r1
- beq _0201ACBE
- ldr r1, [r4, #0x40]
- ldr r0, _0201AEB0 ; =0x000001FF
- add r2, r1, #0x0
- ldr r1, [r4, #0x44]
- and r2, r0
- lsl r1, r1, #0x10
- lsl r0, r0, #0x10
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- ldr r0, _0201AEB8 ; =0x04000014
- str r1, [r0, #0x0]
-_0201ACBE:
- ldrh r1, [r4, #0x4]
- mov r0, #0x4
- tst r0, r1
- beq _0201AD1E
- add r0, r4, #0x0
- add r0, #0x74
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0201ACEA
- ldr r1, [r4, #0x6c]
- ldr r0, _0201AEB0 ; =0x000001FF
- add r2, r1, #0x0
- ldr r1, [r4, #0x70]
- and r2, r0
- lsl r1, r1, #0x10
- lsl r0, r0, #0x10
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- ldr r0, _0201AEBC ; =0x04000018
- str r1, [r0, #0x0]
- b _0201AD1E
-_0201ACEA:
- mov r0, #0x2
- str r0, [sp, #0x0]
- add r1, r4, #0x0
- add r1, #0x78
- add r3, r4, #0x0
- add r3, #0x80
- ldrh r1, [r1, #0x0]
- ldr r2, [r4, #0x7c]
- ldr r3, [r3, #0x0]
- add r0, sp, #0x38
- bl MTX22_2DAffine
- ldr r0, [r4, #0x6c]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x70]
- add r3, r4, #0x0
- str r0, [sp, #0x4]
- add r2, #0x84
- add r3, #0x88
- ldr r0, _0201AEC0 ; =0x04000020
- ldr r2, [r2, #0x0]
- ldr r3, [r3, #0x0]
- add r1, sp, #0x38
- bl G2x_SetBGyAffine_
-_0201AD1E:
- ldrh r1, [r4, #0x4]
- mov r0, #0x8
- tst r0, r1
- beq _0201AD8E
- add r0, r4, #0x0
- add r0, #0xa0
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0201AD4E
- add r0, r4, #0x0
- add r2, r4, #0x0
- add r0, #0x98
- add r2, #0x9c
- ldr r2, [r2, #0x0]
- ldr r0, [r0, #0x0]
- ldr r1, _0201AEB0 ; =0x000001FF
- lsl r2, r2, #0x10
- and r0, r1
- lsl r1, r1, #0x10
- and r1, r2
- orr r1, r0
- ldr r0, _0201AEC4 ; =0x0400001C
- str r1, [r0, #0x0]
- b _0201AD8E
-_0201AD4E:
- mov r0, #0x2
- add r1, r4, #0x0
- str r0, [sp, #0x0]
- add r1, #0xa4
- add r2, r4, #0x0
- add r3, r4, #0x0
- add r2, #0xa8
- add r3, #0xac
- ldrh r1, [r1, #0x0]
- ldr r2, [r2, #0x0]
- ldr r3, [r3, #0x0]
- add r0, sp, #0x28
- bl MTX22_2DAffine
- add r0, r4, #0x0
- add r0, #0x98
- ldr r0, [r0, #0x0]
- add r2, r4, #0x0
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- add r0, #0x9c
- ldr r0, [r0, #0x0]
- add r3, r4, #0x0
- str r0, [sp, #0x4]
- add r2, #0xb0
- add r3, #0xb4
- ldr r0, _0201AEC8 ; =0x04000030
- ldr r2, [r2, #0x0]
- ldr r3, [r3, #0x0]
- add r1, sp, #0x28
- bl G2x_SetBGyAffine_
-_0201AD8E:
- ldrh r1, [r4, #0x4]
- mov r0, #0x10
- tst r0, r1
- beq _0201ADB2
- add r0, r4, #0x0
- add r2, r4, #0x0
- add r0, #0xc4
- add r2, #0xc8
- ldr r2, [r2, #0x0]
- ldr r0, [r0, #0x0]
- ldr r1, _0201AEB0 ; =0x000001FF
- lsl r2, r2, #0x10
- and r0, r1
- lsl r1, r1, #0x10
- and r1, r2
- orr r1, r0
- ldr r0, _0201AECC ; =0x04001010
- str r1, [r0, #0x0]
-_0201ADB2:
- ldrh r1, [r4, #0x4]
- mov r0, #0x20
- tst r0, r1
- beq _0201ADD6
- add r0, r4, #0x0
- add r2, r4, #0x0
- add r0, #0xf0
- add r2, #0xf4
- ldr r2, [r2, #0x0]
- ldr r0, [r0, #0x0]
- ldr r1, _0201AEB0 ; =0x000001FF
- lsl r2, r2, #0x10
- and r0, r1
- lsl r1, r1, #0x10
- and r1, r2
- orr r1, r0
- ldr r0, _0201AED0 ; =0x04001014
- str r1, [r0, #0x0]
-_0201ADD6:
- ldrh r0, [r4, #0x4]
- mov r3, #0x40
- tst r0, r3
- beq _0201AE3E
- add r0, r3, #0x0
- add r0, #0xe4
- ldrb r0, [r4, r0]
- cmp r0, #0x0
- bne _0201AE04
- ldr r1, _0201AEB0 ; =0x000001FF
- add r3, #0xdc
- add r2, r1, #0x0
- sub r2, #0xdf
- ldr r0, [r4, r3]
- ldr r2, [r4, r2]
- and r0, r1
- lsl r2, r2, #0x10
- lsl r1, r1, #0x10
- and r1, r2
- orr r1, r0
- ldr r0, _0201AED4 ; =0x04001018
- str r1, [r0, #0x0]
- b _0201AE3E
-_0201AE04:
- mov r0, #0x2
- add r1, r3, #0x0
- add r2, r3, #0x0
- str r0, [sp, #0x0]
- add r1, #0xe8
- add r2, #0xec
- add r3, #0xf0
- ldrh r1, [r4, r1]
- ldr r2, [r4, r2]
- ldr r3, [r4, r3]
- add r0, sp, #0x18
- bl MTX22_2DAffine
- mov r3, #0x47
- lsl r3, r3, #0x2
- ldr r0, [r4, r3]
- add r2, r3, #0x0
- str r0, [sp, #0x0]
- add r0, r3, #0x4
- ldr r0, [r4, r0]
- add r2, #0x18
- str r0, [sp, #0x4]
- add r3, #0x1c
- ldr r0, _0201AED8 ; =0x04001020
- ldr r2, [r4, r2]
- ldr r3, [r4, r3]
- add r1, sp, #0x18
- bl G2x_SetBGyAffine_
-_0201AE3E:
- ldrh r0, [r4, #0x4]
- mov r3, #0x80
- tst r0, r3
- beq _0201AEAC
- add r0, r3, #0x0
- add r0, #0xd0
- ldrb r0, [r4, r0]
- cmp r0, #0x0
- bne _0201AE72
- add r3, #0xc8
- ldr r1, [r4, r3]
- ldr r0, _0201AEB0 ; =0x000001FF
- add r2, r1, #0x0
- add r1, r0, #0x0
- sub r1, #0xb3
- ldr r1, [r4, r1]
- and r2, r0
- lsl r1, r1, #0x10
- lsl r0, r0, #0x10
- and r0, r1
- add r1, r2, #0x0
- orr r1, r0
- ldr r0, _0201AEDC ; =0x0400101C
- add sp, #0x48
- str r1, [r0, #0x0]
- pop {r4, pc}
-_0201AE72:
- mov r0, #0x2
- add r1, r3, #0x0
- add r2, r3, #0x0
- str r0, [sp, #0x0]
- add r1, #0xd4
- add r2, #0xd8
- add r3, #0xdc
- ldrh r1, [r4, r1]
- ldr r2, [r4, r2]
- ldr r3, [r4, r3]
- add r0, sp, #0x8
- bl MTX22_2DAffine
- mov r3, #0x52
- lsl r3, r3, #0x2
- ldr r0, [r4, r3]
- add r2, r3, #0x0
- str r0, [sp, #0x0]
- add r0, r3, #0x4
- ldr r0, [r4, r0]
- add r2, #0x18
- str r0, [sp, #0x4]
- add r3, #0x1c
- ldr r0, _0201AEE0 ; =0x04001030
- ldr r2, [r4, r2]
- ldr r3, [r4, r3]
- add r1, sp, #0x8
- bl G2x_SetBGyAffine_
-_0201AEAC:
- add sp, #0x48
- pop {r4, pc}
- .balign 4
-_0201AEB0: .word 0x000001FF
-_0201AEB4: .word 0x04000010
-_0201AEB8: .word 0x04000014
-_0201AEBC: .word 0x04000018
-_0201AEC0: .word 0x04000020
-_0201AEC4: .word 0x0400001C
-_0201AEC8: .word 0x04000030
-_0201AECC: .word 0x04001010
-_0201AED0: .word 0x04001014
-_0201AED4: .word 0x04001018
-_0201AED8: .word 0x04001020
-_0201AEDC: .word 0x0400101C
-_0201AEE0: .word 0x04001030
-
- thumb_func_start FUN_0201AEE4
-FUN_0201AEE4: ; 0x0201AEE4
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r1, r5, #0x0
- mov r0, #0x2c
- add r1, #0x8
- mul r0, r4
- add r0, r1, r0
- add r1, r2, #0x0
- add r2, r3, #0x0
- bl FUN_02017B8C
- mov r0, #0x1
- ldrh r1, [r5, #0x4]
- lsl r0, r4
- orr r0, r1
- strh r0, [r5, #0x4]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0201AF08
-FUN_0201AF08: ; 0x0201AF08
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r1, r5, #0x0
- mov r0, #0x2c
- add r1, #0x8
- mul r0, r4
- add r0, r1, r0
- add r1, r2, #0x0
- add r2, r3, #0x0
- bl FUN_0201AF2C
- mov r0, #0x1
- ldrh r1, [r5, #0x4]
- lsl r0, r4
- orr r0, r1
- strh r0, [r5, #0x4]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0201AF2C
-FUN_0201AF2C: ; 0x0201AF2C
- cmp r1, #0x0
- beq _0201AF3A
- cmp r1, #0x1
- beq _0201AF3E
- cmp r1, #0x2
- beq _0201AF46
- bx lr
-_0201AF3A:
- strh r2, [r0, #0x18]
- bx lr
-_0201AF3E:
- ldrh r1, [r0, #0x18]
- add r1, r1, r2
- strh r1, [r0, #0x18]
- bx lr
-_0201AF46:
- ldrh r1, [r0, #0x18]
- sub r1, r1, r2
- strh r1, [r0, #0x18]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0201AF50
-FUN_0201AF50: ; 0x0201AF50
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r1, r5, #0x0
- mov r0, #0x2c
- add r1, #0x8
- mul r0, r4
- add r0, r1, r0
- add r1, r2, #0x0
- add r2, r3, #0x0
- bl FUN_0201AF74
- mov r0, #0x1
- ldrh r1, [r5, #0x4]
- lsl r0, r4
- orr r0, r1
- strh r0, [r5, #0x4]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0201AF74
-FUN_0201AF74: ; 0x0201AF74
- sub r1, #0x9
- cmp r1, #0x5
- bhi _0201AFB8
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0201AF86: ; jump table (using 16-bit offset)
- .short _0201AF92 - _0201AF86 - 2; case 0
- .short _0201AF96 - _0201AF86 - 2; case 1
- .short _0201AF9E - _0201AF86 - 2; case 2
- .short _0201AFA6 - _0201AF86 - 2; case 3
- .short _0201AFAA - _0201AF86 - 2; case 4
- .short _0201AFB2 - _0201AF86 - 2; case 5
-_0201AF92:
- str r2, [r0, #0x24]
- bx lr
-_0201AF96:
- ldr r1, [r0, #0x24]
- add r1, r1, r2
- str r1, [r0, #0x24]
- bx lr
-_0201AF9E:
- ldr r1, [r0, #0x24]
- sub r1, r1, r2
- str r1, [r0, #0x24]
- bx lr
-_0201AFA6:
- str r2, [r0, #0x28]
- bx lr
-_0201AFAA:
- ldr r1, [r0, #0x28]
- add r1, r1, r2
- str r1, [r0, #0x28]
- bx lr
-_0201AFB2:
- ldr r1, [r0, #0x28]
- sub r1, r1, r2
- str r1, [r0, #0x28]
-_0201AFB8:
- bx lr
- .balign 4
-
- thumb_func_start FUN_0201AFBC
-FUN_0201AFBC: ; 0x0201AFBC
- push {r4-r7, lr}
- sub sp, #0x1c
- str r1, [sp, #0x0]
- add r7, r0, #0x0
- str r2, [sp, #0x4]
- ldr r0, [sp, #0x30]
- str r3, [sp, #0x8]
- str r0, [sp, #0x30]
- ldr r0, [sp, #0x0]
- add r4, r7, #0x0
- mov r1, #0x2c
- add r5, r0, #0x0
- mul r5, r1
- add r4, #0x8
- ldr r0, [r4, r5]
- cmp r0, #0x0
- bne _0201AFE4
- add sp, #0x1c
- mov r0, #0x0
- pop {r4-r7, pc}
-_0201AFE4:
- ldr r0, [sp, #0x4]
- ldr r1, [sp, #0x8]
- add r2, r7, r5
- lsl r0, r0, #0x15
- lsl r1, r1, #0x15
- ldrb r2, [r2, #0x1d]
- lsr r0, r0, #0x18
- lsr r1, r1, #0x18
- bl FUN_02017FFC
- add r6, r0, #0x0
- ldr r0, [sp, #0x0]
- bl FUN_020187B0
- str r0, [sp, #0x18]
- ldr r1, [sp, #0x4]
- mov r0, #0x7
- and r1, r0
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x14]
- ldr r1, [sp, #0x8]
- and r0, r1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- add r1, r7, r5
- str r0, [sp, #0x10]
- ldrb r0, [r1, #0x1e]
- cmp r0, #0x0
- bne _0201B096
- ldr r0, [r4, r5]
- mov r1, #0x40
- str r0, [sp, #0xc]
- ldr r0, [r7, #0x0]
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- lsl r0, r6, #0x1
- ldr r1, [sp, #0xc]
- mov r12, r0
- ldrh r0, [r1, r0]
- mov r3, #0x0
- mov r6, #0xf
- lsl r0, r0, #0x16
- lsr r1, r0, #0x11
- ldr r0, [sp, #0x18]
- add r2, r0, r1
-_0201B042:
- ldrb r5, [r2, r3]
- lsl r0, r3, #0x1
- add r1, r4, r0
- and r5, r6
- strb r5, [r4, r0]
- ldrb r0, [r2, r3]
- asr r0, r0, #0x4
- strb r0, [r1, #0x1]
- add r0, r3, #0x1
- lsl r0, r0, #0x18
- lsr r3, r0, #0x18
- cmp r3, #0x20
- blo _0201B042
- ldr r2, [sp, #0xc]
- mov r1, r12
- ldrh r1, [r2, r1]
- add r0, r7, #0x0
- asr r2, r1, #0xa
- mov r1, #0x3
- and r1, r2
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r2, r4, #0x0
- bl FUN_0201B118
- ldr r0, [sp, #0x10]
- lsl r1, r0, #0x3
- ldr r0, [sp, #0x14]
- add r0, r0, r1
- ldrb r5, [r4, r0]
- add r0, r4, #0x0
- bl FreeToHeap
- ldr r0, [sp, #0x30]
- ldrh r2, [r0, #0x0]
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r1, r5
- tst r1, r2
- beq _0201B10C
- add sp, #0x1c
- pop {r4-r7, pc}
-_0201B096:
- ldrb r0, [r1, #0x1c]
- cmp r0, #0x1
- beq _0201B0E0
- ldr r0, [r7, #0x0]
- ldr r4, [r4, r5]
- mov r1, #0x40
- bl AllocFromHeapAtEnd
- lsl r6, r6, #0x1
- ldrh r1, [r4, r6]
- add r5, r0, #0x0
- lsl r1, r1, #0x16
- lsr r2, r1, #0x10
- ldr r1, [sp, #0x18]
- add r1, r1, r2
- mov r2, #0x40
- bl memcpy
- ldrh r1, [r4, r6]
- add r0, r7, #0x0
- asr r2, r1, #0xa
- mov r1, #0x3
- and r1, r2
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r2, r5, #0x0
- bl FUN_0201B118
- ldr r0, [sp, #0x10]
- lsl r1, r0, #0x3
- ldr r0, [sp, #0x14]
- add r0, r0, r1
- ldrb r4, [r5, r0]
- add r0, r5, #0x0
- bl FreeToHeap
- b _0201B0F4
-_0201B0E0:
- ldr r1, [r4, r5]
- ldr r0, [sp, #0x10]
- ldrb r1, [r1, r6]
- lsl r0, r0, #0x3
- lsl r2, r1, #0x6
- ldr r1, [sp, #0x14]
- add r1, r1, r2
- add r1, r0, r1
- ldr r0, [sp, #0x18]
- ldrb r4, [r0, r1]
-_0201B0F4:
- ldr r0, [sp, #0x30]
- ldrh r2, [r0, #0x0]
- lsl r0, r2, #0x18
- lsr r1, r0, #0x18
- ldr r0, _0201B114 ; =0x0000FFFF
-_0201B0FE:
- cmp r2, r0
- beq _0201B10C
- cmp r4, r1
- bne _0201B0FE
- add sp, #0x1c
- mov r0, #0x1
- pop {r4-r7, pc}
-_0201B10C:
- mov r0, #0x0
- add sp, #0x1c
- pop {r4-r7, pc}
- nop
-_0201B114: .word 0x0000FFFF
-
- thumb_func_start FUN_0201B118
-FUN_0201B118: ; 0x0201B118
- push {r3-r7, lr}
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x0]
- add r7, r2, #0x0
- cmp r1, #0x0
- beq _0201B1A4
- ldr r0, [r0, #0x0]
- mov r1, #0x40
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- ldr r0, [sp, #0x0]
- mov r1, #0x1
- tst r0, r1
- beq _0201B166
- mov r0, #0x0
- mov r5, #0x7
-_0201B13A:
- lsl r3, r0, #0x3
- add r2, r7, r3
- mov r1, #0x0
- add r3, r4, r3
-_0201B142:
- sub r6, r5, r1
- ldrb r6, [r2, r6]
- strb r6, [r3, r1]
- add r1, r1, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- cmp r1, #0x8
- blo _0201B142
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x8
- blo _0201B13A
- add r0, r7, #0x0
- add r1, r4, #0x0
- mov r2, #0x40
- bl memcpy
-_0201B166:
- ldr r0, [sp, #0x0]
- mov r1, #0x2
- tst r0, r1
- beq _0201B19E
- mov r5, #0x0
- mov r6, #0x7
-_0201B172:
- lsl r0, r5, #0x3
- add r3, r4, r0
- sub r0, r6, r5
- lsl r0, r0, #0x3
- add r2, r7, r0
- mov r1, #0x8
-_0201B17E:
- ldrb r0, [r2, #0x0]
- add r2, r2, #0x1
- strb r0, [r3, #0x0]
- add r3, r3, #0x1
- sub r1, r1, #0x1
- bne _0201B17E
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, #0x8
- blo _0201B172
- add r0, r7, #0x0
- add r1, r4, #0x0
- mov r2, #0x40
- bl memcpy
-_0201B19E:
- add r0, r4, #0x0
- bl FreeToHeap
-_0201B1A4:
- pop {r3-r7, pc}
- .balign 4
diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s
index 05245bc6..359f9bfe 100644
--- a/arm9/asm/unk_0201B1A8.s
+++ b/arm9/asm/unk_0201B1A8.s
@@ -1,12 +1,12 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021CED98
- .extern UNK_021CEDD4
- .extern UNK_021064C0
- .extern UNK_021064B8
- .extern UNK_021064C4
- .extern UNK_021064BC
+ .extern NNS_G3dGlb
+ .extern NNS_G3dGlb
+ .extern NNS_GfdDefaultFuncAllocPlttVram
+ .extern NNS_GfdDefaultFuncAllocTexVram
+ .extern NNS_GfdDefaultFuncFreePlttVram
+ .extern NNS_GfdDefaultFuncFreeTexVram
.section .bss
@@ -23,7 +23,7 @@ FUN_0201B1A8: ; 0x0201B1A8
add r4, r2, #0x0
bl FUN_020161A4
str r0, [r5, #0x0]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
cmp r0, #0x0
beq _0201B1D2
bl FUN_0201B254
@@ -33,10 +33,10 @@ FUN_0201B1A8: ; 0x0201B1A8
ldr r1, [r0, #0x8]
bl DC_FlushRange
ldr r0, [r5, #0x0]
- bl FUN_020BB59C
+ bl NNS_G3dResDefaultSetup
_0201B1D2:
ldr r0, [r5, #0x0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -50,7 +50,7 @@ FUN_0201B1E4: ; 0x0201B1E4
add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
cmp r0, #0x0
beq _0201B20A
bl FUN_0201B254
@@ -60,10 +60,10 @@ FUN_0201B1E4: ; 0x0201B1E4
ldr r1, [r0, #0x8]
bl DC_FlushRange
ldr r0, [r5, #0x0]
- bl FUN_020BB59C
+ bl NNS_G3dResDefaultSetup
_0201B20A:
ldr r0, [r5, #0x0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -81,7 +81,7 @@ FUN_0201B21C: ; 0x0201B21C
bl FUN_0201B1A8
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
pop {r3-r5, pc}
thumb_func_start FUN_0201B234
@@ -94,11 +94,11 @@ FUN_0201B234: ; 0x0201B234
bl FUN_0201B1E4
cmp r4, #0x0
bne _0201B24A
- bl ErrorHandling
+ bl GF_AssertFail
_0201B24A:
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
pop {r3-r5, pc}
thumb_func_start FUN_0201B254
@@ -125,24 +125,24 @@ FUN_0201B26C: ; 0x0201B26C
add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- bl FUN_020B8474
- ldr r1, _0201B2A0 ; =UNK_021CEDD4
+ bl NNS_G3dGlbSetBaseTrans
+ ldr r1, _0201B2A0 ; =NNS_G3dGlb + 0xBC
add r0, r4, #0x0
bl MI_Copy36B
- ldr r1, _0201B2A4 ; =UNK_021CED98
+ ldr r1, _0201B2A4 ; =NNS_G3dGlb + 0x80
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r6, #0x0
str r2, [r1, #0x7c]
- bl FUN_020B844C
- bl FUN_020B849C
+ bl NNS_G3dGlbSetBaseScale
+ bl NNS_G3dGlbFlushP
add r0, r5, #0x0
- bl FUN_020BAC98
+ bl NNS_G3dDraw
pop {r4-r6, pc}
nop
-_0201B2A0: .word UNK_021CEDD4
-_0201B2A4: .word UNK_021CED98
+_0201B2A0: .word NNS_G3dGlb + 0xBC
+_0201B2A4: .word NNS_G3dGlb + 0x80
thumb_func_start FUN_0201B2A8
FUN_0201B2A8: ; 0x0201B2A8
@@ -151,28 +151,28 @@ FUN_0201B2A8: ; 0x0201B2A8
add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- bl FUN_020B8474
- ldr r1, _0201B2E4 ; =UNK_021CEDD4
+ bl NNS_G3dGlbSetBaseTrans
+ ldr r1, _0201B2E4 ; =NNS_G3dGlb + 0xBC
add r0, r4, #0x0
bl MI_Copy36B
- ldr r1, _0201B2E8 ; =UNK_021CED98
+ ldr r1, _0201B2E8 ; =NNS_G3dGlb + 0x80
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
str r2, [r1, #0x7c]
add r0, r6, #0x0
- bl FUN_020B844C
- bl FUN_020B849C
+ bl NNS_G3dGlbSetBaseScale
+ bl NNS_G3dGlbFlushP
mov r1, #0x0
ldr r0, [r5, #0x4]
add r2, r1, #0x0
mov r3, #0x1
- bl FUN_020BAFB8
- bl FUN_020BB394
+ bl NNS_G3dDraw1Mat1Shp
+ bl NNS_G3dGeFlushBuffer
pop {r4-r6, pc}
.balign 4
-_0201B2E4: .word UNK_021CEDD4
-_0201B2E8: .word UNK_021CED98
+_0201B2E4: .word NNS_G3dGlb + 0xBC
+_0201B2E8: .word NNS_G3dGlb + 0x80
thumb_func_start FUN_0201B2EC
FUN_0201B2EC: ; 0x0201B2EC
@@ -269,11 +269,11 @@ _0201B3A4: .word FUN_020223BC
FUN_0201B3A8: ; 0x0201B3A8
push {r4, lr}
add r4, r1, #0x0
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
cmp r4, #0x0
beq _0201B3BE
add r1, r4, #0x0
- bl FUN_020B7790
+ bl NNS_G3dBindMdlSet
mov r0, #0x1
pop {r4, pc}
_0201B3BE:
@@ -299,17 +299,17 @@ _0201B3D2:
str r1, [sp, #0x0]
cmp r5, #0x0
beq _0201B4D0
- bl FUN_020B7E1C
+ bl NNS_G3dTexGetRequiredSize
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7E10
+ bl NNS_G3dTex4x4GetRequiredSize
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7CE4
+ bl NNS_G3dPlttGetRequiredSize
str r0, [sp, #0xc]
cmp r6, #0x0
beq _0201B412
- ldr r3, _0201B4D8 ; =UNK_021064B8
+ ldr r3, _0201B4D8 ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0x0
ldr r3, [r3, #0x0]
add r0, r6, #0x0
@@ -325,7 +325,7 @@ _0201B412:
_0201B414:
cmp r4, #0x0
beq _0201B42E
- ldr r3, _0201B4D8 ; =UNK_021064B8
+ ldr r3, _0201B4D8 ; =NNS_GfdDefaultFuncAllocTexVram
add r0, r4, #0x0
ldr r3, [r3, #0x0]
mov r1, #0x1
@@ -342,7 +342,7 @@ _0201B430:
ldr r0, [sp, #0xc]
cmp r0, #0x0
beq _0201B450
- ldr r3, _0201B4DC ; =UNK_021064C0
+ ldr r3, _0201B4DC ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0x2
ldrh r2, [r5, #0x20]
lsl r1, r1, #0xe
@@ -361,13 +361,13 @@ _0201B452:
ldr r0, [sp, #0x8]
cmp r0, #0x0
bne _0201B46E
- ldr r1, _0201B4E0 ; =UNK_021064BC
+ ldr r1, _0201B4E0 ; =NNS_GfdDefaultFuncFreeTexVram
add r0, r7, #0x0
ldr r1, [r1, #0x0]
blx r1
cmp r0, #0x0
beq _0201B468
- bl ErrorHandling
+ bl GF_AssertFail
_0201B468:
add sp, #0x10
mov r0, #0x0
@@ -376,13 +376,13 @@ _0201B46E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
bne _0201B48A
- ldr r1, _0201B4E0 ; =UNK_021064BC
+ ldr r1, _0201B4E0 ; =NNS_GfdDefaultFuncFreeTexVram
add r0, r6, #0x0
ldr r1, [r1, #0x0]
blx r1
cmp r0, #0x0
beq _0201B484
- bl ErrorHandling
+ bl GF_AssertFail
_0201B484:
add sp, #0x10
mov r0, #0x0
@@ -391,13 +391,13 @@ _0201B48A:
ldr r0, [sp, #0x0]
cmp r0, #0x0
bne _0201B4A6
- ldr r1, _0201B4E4 ; =UNK_021064C4
+ ldr r1, _0201B4E4 ; =NNS_GfdDefaultFuncFreePlttVram
add r0, r4, #0x0
ldr r1, [r1, #0x0]
blx r1
cmp r0, #0x0
beq _0201B4A0
- bl ErrorHandling
+ bl GF_AssertFail
_0201B4A0:
add sp, #0x10
mov r0, #0x0
@@ -406,25 +406,25 @@ _0201B4A6:
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r6, #0x0
- bl FUN_020B7DFC
+ bl NNS_G3dTexSetTexKey
add r0, r5, #0x0
add r1, r4, #0x0
- bl FUN_020B7CDC
+ bl NNS_G3dPlttSetPlttKey
ldr r1, [r5, #0x4]
add r0, r5, #0x0
bl DC_FlushRange
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_020B7D28
+ bl NNS_G3dTexLoad
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_020B7C78
+ bl NNS_G3dPlttLoad
_0201B4D0:
mov r0, #0x1
add sp, #0x10
pop {r3-r7, pc}
nop
-_0201B4D8: .word UNK_021064B8
-_0201B4DC: .word UNK_021064C0
-_0201B4E0: .word UNK_021064BC
-_0201B4E4: .word UNK_021064C4
+_0201B4D8: .word NNS_GfdDefaultFuncAllocTexVram
+_0201B4DC: .word NNS_GfdDefaultFuncAllocPlttVram
+_0201B4E0: .word NNS_GfdDefaultFuncFreeTexVram
+_0201B4E4: .word NNS_GfdDefaultFuncFreePlttVram
diff --git a/arm9/asm/unk_0201B4E8.s b/arm9/asm/unk_0201B4E8.s
index 4309da51..42074f95 100644
--- a/arm9/asm/unk_0201B4E8.s
+++ b/arm9/asm/unk_0201B4E8.s
@@ -103,7 +103,7 @@ FUN_0201B580: ; 0x0201B580
add r5, r0, #0x0
add r4, r1, #0x0
bne _0201B58C
- bl ErrorHandling
+ bl GF_AssertFail
_0201B58C:
add r1, r4, #0x0
add r1, #0x34
diff --git a/arm9/asm/unk_0201B6D0.s b/arm9/asm/unk_0201B6D0.s
index b65b3870..1d795e17 100644
--- a/arm9/asm/unk_0201B6D0.s
+++ b/arm9/asm/unk_0201B6D0.s
@@ -1,8 +1,8 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021CEDD4
- .extern UNK_021CED98
+ .extern NNS_G3dGlb
+ .extern NNS_G3dGlb
.text
@@ -38,22 +38,22 @@ FUN_0201B6D0: ; 0x0201B6D0
ldrsh r3, [r4, r3]
bl FUN_0201B808
add r0, sp, #0x1c
- bl FUN_020B8474
- ldr r1, _0201B764 ; =UNK_021CEDD4
+ bl NNS_G3dGlbSetBaseTrans
+ ldr r1, _0201B764 ; =NNS_G3dGlb + 0xBC
add r0, r5, #0x0
bl MI_Copy36B
- ldr r1, _0201B768 ; =UNK_021CED98
+ ldr r1, _0201B768 ; =NNS_G3dGlb + 0x80
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r7, #0x0
str r2, [r1, #0x7c]
- bl FUN_020B844C
- bl FUN_020B849C
+ bl NNS_G3dGlbSetBaseScale
+ bl NNS_G3dGlbFlushP
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x24]
add r1, sp, #0x10
str r0, [sp, #0x10]
@@ -61,7 +61,7 @@ FUN_0201B6D0: ; 0x0201B6D0
str r0, [sp, #0x18]
mov r0, #0x1b
mov r2, #0x3
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add r0, sp, #0x28
bl FUN_0201B82C
add r4, r0, #0x0
@@ -69,13 +69,13 @@ FUN_0201B6D0: ; 0x0201B6D0
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add r0, r4, #0x0
add sp, #0x34
pop {r4-r7, pc}
.balign 4
-_0201B764: .word UNK_021CEDD4
-_0201B768: .word UNK_021CED98
+_0201B764: .word NNS_G3dGlb + 0xBC
+_0201B768: .word NNS_G3dGlb + 0x80
thumb_func_start FUN_0201B76C
FUN_0201B76C: ; 0x0201B76C
@@ -97,12 +97,12 @@ FUN_0201B76C: ; 0x0201B76C
add r2, r0, #0x0
bl FUN_0201B808
add r0, r5, #0x0
- bl FUN_020B8474
- bl FUN_020B849C
+ bl NNS_G3dGlbSetBaseTrans
+ bl NNS_G3dGlbFlushP
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x10]
lsl r2, r0, #0xc
ldr r0, [r4, #0xc]
@@ -115,7 +115,7 @@ FUN_0201B76C: ; 0x0201B76C
mov r0, #0x1b
add r1, sp, #0x10
mov r2, #0x3
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add r0, sp, #0x1c
bl FUN_0201B82C
add r4, r0, #0x0
@@ -123,7 +123,7 @@ FUN_0201B76C: ; 0x0201B76C
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add r0, r4, #0x0
add sp, #0x28
pop {r3-r5, pc}
@@ -183,22 +183,22 @@ FUN_0201B82C: ; 0x0201B82C
mov r0, #0x29
add r1, sp, #0x4
str r2, [sp, #0x8]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x40
add r1, sp, #0x0
mov r2, #0x1
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r1, #0x0
mov r0, #0x41
add r2, r1, #0x0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r0, #0x70
add r1, r4, #0x0
mov r2, #0x3
- bl FUN_020BB1C0
- bl FUN_020BB394
+ bl NNS_G3dGeBufferOP_N
+ bl NNS_G3dGeFlushBuffer
add r4, sp, #0x8
_0201B86A:
add r0, r4, #0x0
diff --git a/arm9/asm/unk_0201C24C.s b/arm9/asm/unk_0201C24C.s
index 36817113..b0c55e93 100644
--- a/arm9/asm/unk_0201C24C.s
+++ b/arm9/asm/unk_0201C24C.s
@@ -18,7 +18,7 @@ FUN_0201C24C: ; 0x0201C24C
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201C25E
- bl ErrorHandling
+ bl GF_AssertFail
_0201C25E:
add r0, r4, #0x0
mov r1, #0xc
@@ -27,7 +27,7 @@ _0201C25E:
cmp r0, #0x0
str r0, [r1, #0x0]
bne _0201C272
- bl ErrorHandling
+ bl GF_AssertFail
_0201C272:
add r0, r4, #0x0
lsl r1, r5, #0x4
@@ -43,7 +43,7 @@ _0201C272:
ldr r1, [r1, #0x0]
ldr r0, [r1, #0x8]
ldr r1, [r1, #0x0]
- bl FUN_020AEF1C
+ bl NNS_GfdInitVramTransferManager
pop {r3-r5, pc}
nop
_0201C298: .word UNK_021C5934
@@ -55,7 +55,7 @@ FUN_0201C29C: ; 0x0201C29C
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0201C2AA
- bl ErrorHandling
+ bl GF_AssertFail
_0201C2AA:
ldr r0, _0201C2C4 ; =UNK_021C5934
ldr r0, [r0, #0x0]
@@ -82,7 +82,7 @@ FUN_0201C2C8: ; 0x0201C2C8
add r7, r3, #0x0
cmp r0, #0x0
bne _0201C2DE
- bl ErrorHandling
+ bl GF_AssertFail
_0201C2DE:
ldr r1, _0201C308 ; =UNK_021C5934
ldr r0, [r1, #0x0]
@@ -94,7 +94,7 @@ _0201C2DE:
ldr r0, [r0, #0x0]
cmp r1, r0
blo _0201C2FA
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
_0201C2FA:
@@ -102,7 +102,7 @@ _0201C2FA:
add r1, r4, #0x0
add r2, r6, #0x0
add r3, r7, #0x0
- bl FUN_020AEE40
+ bl NNS_GfdRegisterNewVramTransferTask
pop {r3-r7, pc}
.balign 4
_0201C308: .word UNK_021C5934
@@ -114,7 +114,7 @@ FUN_0201C30C: ; 0x0201C30C
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201C322
- bl FUN_020AEEB8
+ bl NNS_GfdDoVramTransfer
ldr r0, _0201C324 ; =UNK_021C5934
mov r1, #0x0
ldr r0, [r0, #0x0]
@@ -135,7 +135,7 @@ FUN_0201C328: ; 0x0201C328
ldr r2, _0201C344 ; =FUN_0201C358
add r1, r4, #0x0
add r5, r0, #0x0
- bl FUN_020B4568
+ bl NNS_G2dInitCellTransferStateManager
add r0, r5, #0x0
pop {r3-r5, pc}
.balign 4
@@ -143,10 +143,10 @@ _0201C344: .word FUN_0201C358
thumb_func_start FUN_0201C348
FUN_0201C348: ; 0x0201C348
- ldr r3, _0201C34C ; =FUN_020B442C
+ ldr r3, _0201C34C ; =NNS_G2dUpdateCellTransferStateManager
bx r3
.balign 4
-_0201C34C: .word FUN_020B442C
+_0201C34C: .word NNS_G2dUpdateCellTransferStateManager
thumb_func_start FUN_0201C350
FUN_0201C350: ; 0x0201C350
diff --git a/arm9/asm/unk_0201C360.s b/arm9/asm/unk_0201C360.s
index 5f8ccb52..078b3ee3 100644
--- a/arm9/asm/unk_0201C360.s
+++ b/arm9/asm/unk_0201C360.s
@@ -321,7 +321,7 @@ FUN_0201C578: ; 0x0201C578
add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- bl FUN_020BC2A0
+ bl NNS_G3dGetResDataByName
add r1, r0, #0x0
bne _0201C598
add sp, #0x10
@@ -397,7 +397,7 @@ FUN_0201C5FC: ; 0x0201C5FC
add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- bl FUN_020BC2A0
+ bl NNS_G3dGetResDataByName
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_0201C5A4
diff --git a/arm9/asm/unk_0201C7A0.s b/arm9/asm/unk_0201C7A0.s
index 0a43b49f..aa8bfe83 100644
--- a/arm9/asm/unk_0201C7A0.s
+++ b/arm9/asm/unk_0201C7A0.s
@@ -2,7 +2,7 @@
.include "global.inc"
.extern gSineTable
- .extern UNK_020FFA38
+ .extern FX_SinCosTable_
.text
@@ -401,7 +401,7 @@ FUN_0201CAA8: ; 0x0201CAA8
sub sp, #0x24
add r4, r1, #0x0
ldr r1, [r4, #0x0]
- ldr r3, _0201CB1C ; =UNK_020FFA38
+ ldr r3, _0201CB1C ; =FX_SinCosTable_
lsl r1, r1, #0x10
lsr r1, r1, #0x10
asr r1, r1, #0x4
@@ -414,7 +414,7 @@ FUN_0201CAA8: ; 0x0201CAA8
add r5, r0, #0x0
bl MTX_RotX33_
ldr r0, [r4, #0x4]
- ldr r3, _0201CB1C ; =UNK_020FFA38
+ ldr r3, _0201CB1C ; =FX_SinCosTable_
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #0x4
@@ -431,7 +431,7 @@ FUN_0201CAA8: ; 0x0201CAA8
add r2, r5, #0x0
bl MTX_Concat33
ldr r0, [r4, #0x8]
- ldr r3, _0201CB1C ; =UNK_020FFA38
+ ldr r3, _0201CB1C ; =FX_SinCosTable_
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #0x4
@@ -450,7 +450,7 @@ FUN_0201CAA8: ; 0x0201CAA8
add sp, #0x24
pop {r4-r5, pc}
nop
-_0201CB1C: .word UNK_020FFA38
+_0201CB1C: .word FX_SinCosTable_
thumb_func_start FUN_0201CB20
FUN_0201CB20: ; 0x0201CB20
@@ -504,7 +504,7 @@ FUN_0201CB7C: ; 0x0201CB7C
lsl r2, r0, #0x1
add r6, r1, #0x0
lsl r0, r2, #0x1
- ldr r1, _0201CBE8 ; =UNK_020FFA38
+ ldr r1, _0201CBE8 ; =FX_SinCosTable_
add r2, r2, #0x1
lsl r2, r2, #0x1
ldrsh r0, [r1, r0]
@@ -550,4 +550,4 @@ FUN_0201CB7C: ; 0x0201CB7C
str r1, [r5, #0x0]
pop {r3-r7, pc}
.balign 4
-_0201CBE8: .word UNK_020FFA38
+_0201CBE8: .word FX_SinCosTable_
diff --git a/arm9/asm/unk_0201CC08.s b/arm9/asm/unk_0201CC08.s
index c35c4b23..15457b23 100644
--- a/arm9/asm/unk_0201CC08.s
+++ b/arm9/asm/unk_0201CC08.s
@@ -26,7 +26,7 @@ FUN_0201CC08: ; 0x0201CC08
ldrh r0, [r0, #0x1a]
cmp r0, #0x0
beq _0201CC16
- bl ErrorHandling
+ bl GF_AssertFail
_0201CC16:
ldr r0, _0201CC20 ; =UNK_021C5978
mov r1, #0x0
@@ -45,7 +45,7 @@ FUN_0201CC24: ; 0x0201CC24
ldrh r0, [r0, #0x1a]
cmp r0, #0x0
beq _0201CC36
- bl ErrorHandling
+ bl GF_AssertFail
_0201CC36:
cmp r4, #0x5
bhs _0201CC3E
@@ -168,7 +168,7 @@ FUN_0201CD04: ; 0x0201CD04
ldrh r0, [r0, #0x1a]
cmp r0, #0x0
beq _0201CD14
- bl ErrorHandling
+ bl GF_AssertFail
_0201CD14:
bl FUN_0201CCC0
add r4, r0, #0x0
@@ -199,7 +199,7 @@ FUN_0201CD38: ; 0x0201CD38
mov r5, #0x3
cmp r0, #0x0
beq _0201CD4E
- bl ErrorHandling
+ bl GF_AssertFail
_0201CD4E:
ldr r0, _0201CD8C ; =UNK_021C5978
ldrh r0, [r0, #0x18]
@@ -285,7 +285,7 @@ FUN_0201CDD0: ; 0x0201CDD0
bl FUN_0201CE2C
cmp r0, #0x1
beq _0201CDF2
- bl ErrorHandling
+ bl GF_AssertFail
_0201CDF2:
ldr r0, _0201CDFC ; =UNK_021C5978
mov r1, #0x0
@@ -309,7 +309,7 @@ FUN_0201CE04: ; 0x0201CE04
bl FUN_0201CCC0
cmp r0, #0x1
beq _0201CE20
- bl ErrorHandling
+ bl GF_AssertFail
_0201CE20:
ldr r0, _0201CE28 ; =UNK_021C5978
mov r1, #0x1
diff --git a/arm9/asm/unk_0201D040.s b/arm9/asm/unk_0201D040.s
index ba8c7b75..b41b069c 100644
--- a/arm9/asm/unk_0201D040.s
+++ b/arm9/asm/unk_0201D040.s
@@ -230,12 +230,12 @@ FUN_0201D1F8: ; 0x0201D1F8
bl FUN_0201D2AC
cmp r0, #0x1
bne _0201D20A
- bl ErrorHandling
+ bl GF_AssertFail
_0201D20A:
bl FUN_0201DAAC
add r4, r0, #0x0
bne _0201D21A
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0201D21A:
@@ -274,12 +274,12 @@ FUN_0201D250: ; 0x0201D250
bl FUN_0201D2AC
cmp r0, #0x1
bne _0201D262
- bl ErrorHandling
+ bl GF_AssertFail
_0201D262:
bl FUN_0201DAAC
add r4, r0, #0x0
bne _0201D272
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0201D272:
@@ -348,13 +348,13 @@ FUN_0201D2DC: ; 0x0201D2DC
add r4, r0, #0x0
add r5, r1, #0x0
bne _0201D2E8
- bl ErrorHandling
+ bl GF_AssertFail
_0201D2E8:
add r0, r4, #0x0
bl FUN_0201D7F8
add r4, r0, #0x0
bne _0201D2F6
- bl ErrorHandling
+ bl GF_AssertFail
_0201D2F6:
str r5, [r4, #0x0]
ldr r1, [r4, #0x4]
@@ -391,7 +391,7 @@ _0201D32C:
bl FUN_0201D7F8
add r4, r0, #0x0
bne _0201D33A
- bl ErrorHandling
+ bl GF_AssertFail
_0201D33A:
add r0, r4, #0x0
add r0, #0x3c
@@ -465,7 +465,7 @@ FUN_0201D3B0: ; 0x0201D3B0
bl FUN_0201D7F8
add r4, r0, #0x0
bne _0201D3BE
- bl ErrorHandling
+ bl GF_AssertFail
_0201D3BE:
add r0, r4, #0x0
add r0, #0x3c
@@ -488,7 +488,7 @@ FUN_0201D3D4: ; 0x0201D3D4
bl FUN_0201D7F8
add r4, r0, #0x0
bne _0201D3E6
- bl ErrorHandling
+ bl GF_AssertFail
_0201D3E6:
add r0, r4, #0x0
add r0, #0x3c
@@ -553,12 +553,12 @@ FUN_0201D458: ; 0x0201D458
bl FUN_0201D6D8
add r4, r0, #0x0
bne _0201D468
- bl ErrorHandling
+ bl GF_AssertFail
_0201D468:
bl FUN_0201DAAC
add r5, r0, #0x0
bne _0201D474
- bl ErrorHandling
+ bl GF_AssertFail
_0201D474:
add r0, r4, #0x0
add r0, #0x3c
@@ -818,7 +818,7 @@ FUN_0201D658: ; 0x0201D658
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0201D666
- bl ErrorHandling
+ bl GF_AssertFail
_0201D666:
ldr r1, _0201D670 ; =UNK_021C5994
mov r2, #0x0
@@ -836,7 +836,7 @@ FUN_0201D674: ; 0x0201D674
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201D684
- bl ErrorHandling
+ bl GF_AssertFail
_0201D684:
ldr r0, _0201D68C ; =UNK_021C5994
str r4, [r0, #0x0]
@@ -858,11 +858,11 @@ FUN_0201D690: ; 0x0201D690
add r1, #0x3c
strb r2, [r1, #0x0]
str r2, [r0, #0x40]
- ldr r3, _0201D6B0 ; =FUN_020B1A24
+ ldr r3, _0201D6B0 ; =NNS_G2dInitImageProxy
add r0, #0x10
bx r3
nop
-_0201D6B0: .word FUN_020B1A24
+_0201D6B0: .word NNS_G2dInitImageProxy
thumb_func_start FUN_0201D6B4
FUN_0201D6B4: ; 0x0201D6B4
@@ -1145,7 +1145,7 @@ FUN_0201D86C: ; 0x0201D86C
str r0, [r4, #0x0]
cmp r0, r1
bne _0201D8B8
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
_0201D8B8:
@@ -1179,7 +1179,7 @@ _0201D8C4:
str r0, [r6, #0x0]
cmp r0, r1
bne _0201D902
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
_0201D902:
@@ -1277,7 +1277,7 @@ FUN_0201D9B0: ; 0x0201D9B0
push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201D9C8
@@ -1325,13 +1325,13 @@ _0201DA04:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- bl FUN_020B1528
+ bl NNS_G2dLoadImage2DMapping
b _0201DA20
_0201DA16:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
_0201DA20:
cmp r4, #0x1
bne _0201DA2C
@@ -1351,7 +1351,7 @@ FUN_0201DA38: ; 0x0201DA38
push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201DA50
@@ -1394,7 +1394,7 @@ _0201DA88:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- bl FUN_020B1340
+ bl NNS_G2dLoadImageVramTransfer
cmp r4, #0x1
bne _0201DAA0
mov r0, #0x1
@@ -1613,7 +1613,7 @@ _0201DBD6:
_0201DC12:
cmp r2, #0x0
bne _0201DC1A
- bl ErrorHandling
+ bl GF_AssertFail
_0201DC1A:
ldr r0, _0201DC38 ; =UNK_021C5994
mov r2, #0x0
@@ -1628,7 +1628,7 @@ _0201DC1A:
_0201DC2E:
cmp r2, #0x0
bne _0201DC36
- bl ErrorHandling
+ bl GF_AssertFail
_0201DC36:
pop {r3, pc}
.balign 4
@@ -1783,7 +1783,7 @@ _0201DD32:
ldrb r1, [r4, r1]
tst r0, r1
beq _0201DD54
- bl ErrorHandling
+ bl GF_AssertFail
_0201DD54:
add r2, sp, #0x0
ldrb r3, [r2, #0x0]
@@ -1901,7 +1901,7 @@ _0201DE0E:
ldrb r1, [r4, r1]
tst r0, r1
bne _0201DE2A
- bl ErrorHandling
+ bl GF_AssertFail
_0201DE2A:
ldrb r0, [r7, #0x0]
mov r1, #0x1
@@ -1932,7 +1932,7 @@ FUN_0201DE4C: ; 0x0201DE4C
beq _0201DE8A
add r0, r4, #0x0
add r0, #0x10
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
ldr r1, _0201DECC ; =UNK_021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x1c]
@@ -1958,7 +1958,7 @@ _0201DE8A:
beq _0201DEC4
add r0, r4, #0x0
add r0, #0x10
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
ldr r1, _0201DECC ; =UNK_021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x20]
@@ -2077,7 +2077,7 @@ FUN_0201DF44: ; 0x0201DF44
add r3, r6, r5
cmp r3, r2
bls _0201DF6C
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
b _0201DF6E
_0201DF6C:
@@ -2093,7 +2093,7 @@ _0201DF6E:
add r2, r3, r5
cmp r2, r1
bls _0201DF8A
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
_0201DF8A:
diff --git a/arm9/asm/unk_0201E00C.s b/arm9/asm/unk_0201E00C.s
index 744cbe95..d46fd5e0 100644
--- a/arm9/asm/unk_0201E00C.s
+++ b/arm9/asm/unk_0201E00C.s
@@ -134,7 +134,7 @@ FUN_0201E0E4: ; 0x0201E0E4
bl FUN_0201E428
add r4, r0, #0x0
bne _0201E0F8
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0201E0F8:
@@ -168,7 +168,7 @@ FUN_0201E128: ; 0x0201E128
bl FUN_0201E428
add r4, r0, #0x0
bne _0201E13C
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0201E13C:
@@ -200,13 +200,13 @@ FUN_0201E168: ; 0x0201E168
add r4, r0, #0x0
add r5, r1, #0x0
bne _0201E174
- bl ErrorHandling
+ bl GF_AssertFail
_0201E174:
add r0, r4, #0x0
bl FUN_0201E3F0
add r4, r0, #0x0
bne _0201E182
- bl ErrorHandling
+ bl GF_AssertFail
_0201E182:
str r5, [r4, #0x0]
ldr r1, [r4, #0x4]
@@ -253,7 +253,7 @@ FUN_0201E1C8: ; 0x0201E1C8
bl FUN_0201E3F0
add r4, r0, #0x0
bne _0201E1D6
- bl ErrorHandling
+ bl GF_AssertFail
_0201E1D6:
add r0, r4, #0x0
add r0, #0x2c
@@ -310,7 +310,7 @@ FUN_0201E230: ; 0x0201E230
cmp r0, #0x0
bne _0201E244
bne _0201E240
- bl ErrorHandling
+ bl GF_AssertFail
_0201E240:
mov r0, #0x0
pop {r3, pc}
@@ -335,7 +335,7 @@ FUN_0201E258: ; 0x0201E258
cmp r0, #0x0
bne _0201E26E
bne _0201E26A
- bl ErrorHandling
+ bl GF_AssertFail
_0201E26A:
mov r0, #0x0
pop {r4, pc}
@@ -378,7 +378,7 @@ _0201E2A4:
_0201E2A6:
cmp r4, #0x0
beq _0201E2B6
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r1, r4, #0x0
bl _u32_div_f
pop {r4, pc}
@@ -405,7 +405,7 @@ FUN_0201E2C4: ; 0x0201E2C4
bl FUN_0201E1B4
cmp r0, #0x1
bne _0201E2E0
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0201E2E0:
@@ -434,7 +434,7 @@ FUN_0201E2F8: ; 0x0201E2F8
str r0, [r4, #0xc]
add r4, #0x10
add r0, r4, #0x0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
pop {r4, pc}
thumb_func_start FUN_0201E314
@@ -490,7 +490,7 @@ FUN_0201E36C: ; 0x0201E36C
ldr r0, [r0, #0x4]
cmp r0, #0x0
beq _0201E37C
- bl ErrorHandling
+ bl GF_AssertFail
_0201E37C:
ldr r1, [r5, #0x4]
mov r0, #0x1
@@ -675,7 +675,7 @@ FUN_0201E4BC: ; 0x0201E4BC
push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
ldr r0, [r4, #0x4]
mov r2, #0x1
tst r0, r2
@@ -684,7 +684,7 @@ FUN_0201E4BC: ; 0x0201E4BC
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x24]
add r3, #0x10
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
_0201E4DA:
ldr r0, [r4, #0x4]
mov r2, #0x2
@@ -694,7 +694,7 @@ _0201E4DA:
ldr r1, [r4, #0x28]
add r4, #0x10
add r3, r4, #0x0
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
_0201E4EE:
pop {r4, pc}
@@ -868,7 +868,7 @@ FUN_0201E5F4: ; 0x0201E5F4
add r2, r1, r2
cmp r2, r3
bls _0201E618
- bl ErrorHandling
+ bl GF_AssertFail
bl FUN_0201E0B8
mov r0, #0x0
b _0201E61A
@@ -885,7 +885,7 @@ _0201E61A:
ldr r1, [sp, #0x10]
cmp r2, r1
bls _0201E63A
- bl ErrorHandling
+ bl GF_AssertFail
bl FUN_0201E0B8
mov r0, #0x0
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_0201E7D8.s b/arm9/asm/unk_0201E7D8.s
index a70f909d..43dcd254 100644
--- a/arm9/asm/unk_0201E7D8.s
+++ b/arm9/asm/unk_0201E7D8.s
@@ -1,13 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021CED98
- .extern UNK_021CEF64
- .extern UNK_021CED20
- .extern UNK_020FFA38
- .extern UNK_021CEF58
- .extern UNK_021CEF70
- .extern UNK_021CED64
+ .extern NNS_G3dGlb
+ .extern NNS_G3dGlb
+ .extern NNS_G3dGlb
+ .extern FX_SinCosTable_
+ .extern NNS_G3dGlb
+ .extern NNS_G3dGlb
+ .extern NNS_G3dGlb
.section .data
@@ -32,7 +32,7 @@ FUN_0201E7D8: ; 0x0201E7D8
ldrh r4, [r5, #0x3c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _0201E8B4 ; =UNK_020FFA38
+ ldr r0, _0201E8B4 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -46,7 +46,7 @@ FUN_0201E7D8: ; 0x0201E7D8
lsl r2, r2, #0x1
add r2, r2, #0x1
lsl r3, r2, #0x1
- ldr r2, _0201E8B4 ; =UNK_020FFA38
+ ldr r2, _0201E8B4 ; =FX_SinCosTable_
lsl r1, r1, #0x14
ldrsh r2, [r2, r3]
lsr r0, r0, #0xc
@@ -69,7 +69,7 @@ FUN_0201E7D8: ; 0x0201E7D8
lsl r0, r0, #0x1
add r0, r0, #0x1
lsl r1, r0, #0x1
- ldr r0, _0201E8B4 ; =UNK_020FFA38
+ ldr r0, _0201E8B4 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -86,7 +86,7 @@ FUN_0201E7D8: ; 0x0201E7D8
lsl r2, r2, #0x1
add r2, r2, #0x1
lsl r3, r2, #0x1
- ldr r2, _0201E8B4 ; =UNK_020FFA38
+ ldr r2, _0201E8B4 ; =FX_SinCosTable_
orr r0, r1
ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
@@ -106,7 +106,7 @@ FUN_0201E7D8: ; 0x0201E7D8
str r1, [r5, #0x1c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _0201E8B4 ; =UNK_020FFA38
+ ldr r0, _0201E8B4 ; =FX_SinCosTable_
ldr r2, [r5, #0x38]
ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
@@ -129,7 +129,7 @@ FUN_0201E7D8: ; 0x0201E7D8
bl VEC_Add
pop {r3-r5, pc}
nop
-_0201E8B4: .word UNK_020FFA38
+_0201E8B4: .word FX_SinCosTable_
thumb_func_start FUN_0201E8B8
FUN_0201E8B8: ; 0x0201E8B8
@@ -140,7 +140,7 @@ FUN_0201E8B8: ; 0x0201E8B8
ldrh r4, [r5, #0x3c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _0201E998 ; =UNK_020FFA38
+ ldr r0, _0201E998 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -154,7 +154,7 @@ FUN_0201E8B8: ; 0x0201E8B8
lsl r2, r2, #0x1
add r2, r2, #0x1
lsl r3, r2, #0x1
- ldr r2, _0201E998 ; =UNK_020FFA38
+ ldr r2, _0201E998 ; =FX_SinCosTable_
lsl r1, r1, #0x14
ldrsh r2, [r2, r3]
lsr r0, r0, #0xc
@@ -178,7 +178,7 @@ FUN_0201E8B8: ; 0x0201E8B8
lsl r0, r0, #0x1
add r0, r0, #0x1
lsl r1, r0, #0x1
- ldr r0, _0201E998 ; =UNK_020FFA38
+ ldr r0, _0201E998 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -195,7 +195,7 @@ FUN_0201E8B8: ; 0x0201E8B8
lsl r2, r2, #0x1
add r2, r2, #0x1
lsl r3, r2, #0x1
- ldr r2, _0201E998 ; =UNK_020FFA38
+ ldr r2, _0201E998 ; =FX_SinCosTable_
orr r0, r1
ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
@@ -216,7 +216,7 @@ FUN_0201E8B8: ; 0x0201E8B8
lsr r0, r0, #0x10
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _0201E998 ; =UNK_020FFA38
+ ldr r0, _0201E998 ; =FX_SinCosTable_
ldr r2, [r5, #0x38]
ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
@@ -240,7 +240,7 @@ FUN_0201E8B8: ; 0x0201E8B8
bl VEC_Add
pop {r3-r5, pc}
.balign 4
-_0201E998: .word UNK_020FFA38
+_0201E998: .word FX_SinCosTable_
thumb_func_start FUN_0201E99C
FUN_0201E99C: ; 0x0201E99C
@@ -249,7 +249,7 @@ FUN_0201E99C: ; 0x0201E99C
strh r0, [r2, #0x0]
asr r0, r0, #0x4
lsl r3, r0, #0x1
- ldr r2, _0201E9E0 ; =UNK_020FFA38
+ ldr r2, _0201E9E0 ; =FX_SinCosTable_
lsl r0, r3, #0x1
ldrsh r0, [r2, r0]
str r0, [r1, #0x0]
@@ -278,7 +278,7 @@ FUN_0201E99C: ; 0x0201E99C
str r2, [r1, #0x64]
bx lr
nop
-_0201E9E0: .word UNK_020FFA38
+_0201E9E0: .word FX_SinCosTable_
_0201E9E4: .word 0x00001555
thumb_func_start FUN_0201E9E8
@@ -415,7 +415,7 @@ FUN_0201EABC: ; 0x0201EABC
add r0, r7, #0x1
cmp r0, r5
ble _0201EADA
- bl ErrorHandling
+ bl GF_AssertFail
_0201EADA:
ldr r0, [sp, #0x0]
mov r1, #0x24
@@ -576,7 +576,7 @@ FUN_0201EBA4: ; 0x0201EBA4
str r0, [r3, #0x0]
_0201EBEE:
ldr r0, _0201EC40 ; =UNK_021C59A4
- ldr r5, _0201EC44 ; =UNK_021CEF58
+ ldr r5, _0201EC44 ; =NNS_G3dGlb + 0x240
ldr r4, [r0, #0x0]
add r3, r4, #0x0
add r2, r4, #0x0
@@ -588,26 +588,26 @@ _0201EBEE:
add r2, #0x2c
str r0, [r5, #0x0]
add r6, r2, #0x0
- ldr r5, _0201EC48 ; =UNK_021CEF64
+ ldr r5, _0201EC48 ; =NNS_G3dGlb + 0x24C
ldmia r6!, {r0-r1}
stmia r5!, {r0-r1}
ldr r0, [r6, #0x0]
add r3, #0x20
str r0, [r5, #0x0]
add r6, r3, #0x0
- ldr r5, _0201EC4C ; =UNK_021CEF70
+ ldr r5, _0201EC4C ; =NNS_G3dGlb + 0x258
ldmia r6!, {r0-r1}
stmia r5!, {r0-r1}
ldr r0, [r6, #0x0]
add r1, r2, #0x0
str r0, [r5, #0x0]
- ldr r0, _0201EC50 ; =UNK_021CED64
+ ldr r0, _0201EC50 ; =NNS_G3dGlb + 0x4C
add r2, r3, #0x0
str r0, [sp, #0x0]
add r0, r4, #0x0
mov r3, #0x0
bl G3i_LookAt_
- ldr r1, _0201EC54 ; =UNK_021CED98
+ ldr r1, _0201EC54 ; =NNS_G3dGlb + 0x80
mov r0, #0xe8
ldr r2, [r1, #0x7c]
bic r2, r0
@@ -617,11 +617,11 @@ _0201EC3A:
pop {r3-r6, pc}
nop
_0201EC40: .word UNK_021C59A4
-_0201EC44: .word UNK_021CEF58
-_0201EC48: .word UNK_021CEF64
-_0201EC4C: .word UNK_021CEF70
-_0201EC50: .word UNK_021CED64
-_0201EC54: .word UNK_021CED98
+_0201EC44: .word NNS_G3dGlb + 0x240
+_0201EC48: .word NNS_G3dGlb + 0x24C
+_0201EC4C: .word NNS_G3dGlb + 0x258
+_0201EC50: .word NNS_G3dGlb + 0x4C
+_0201EC54: .word NNS_G3dGlb + 0x80
thumb_func_start FUN_0201EC58
FUN_0201EC58: ; 0x0201EC58
@@ -882,14 +882,14 @@ FUN_0201EE2C: ; 0x0201EE2C
str r0, [sp, #0x4]
mov r0, #0x0
str r0, [sp, #0x8]
- ldr r0, _0201EEE4 ; =UNK_021CED20
+ ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8
str r0, [sp, #0xc]
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
ldr r2, [r5, #0x8]
ldr r3, [r5, #0xc]
bl G3i_PerspectiveW_
- ldr r1, _0201EEE8 ; =UNK_021CED98
+ ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80
mov r0, #0x50
ldr r2, [r1, #0x7c]
add r5, #0x44
@@ -939,12 +939,12 @@ _0201EE6C:
lsl r0, r6, #0x1
str r0, [sp, #0x8]
str r2, [sp, #0xc]
- ldr r0, _0201EEE4 ; =UNK_021CED20
+ ldr r0, _0201EEE4 ; =NNS_G3dGlb + 0x8
neg r2, r3
str r0, [sp, #0x10]
add r0, r4, #0x0
bl G3i_OrthoW_
- ldr r1, _0201EEE8 ; =UNK_021CED98
+ ldr r1, _0201EEE8 ; =NNS_G3dGlb + 0x80
mov r0, #0x50
ldr r2, [r1, #0x7c]
add r5, #0x44
@@ -958,8 +958,8 @@ _0201EE6C:
add sp, #0x14
pop {r3-r6, pc}
nop
-_0201EEE4: .word UNK_021CED20
-_0201EEE8: .word UNK_021CED98
+_0201EEE4: .word NNS_G3dGlb + 0x8
+_0201EEE8: .word NNS_G3dGlb + 0x80
_0201EEEC: .word UNK_02105BB8
thumb_func_start FUN_0201EEF0
@@ -973,7 +973,7 @@ FUN_0201EEF0: ; 0x0201EEF0
ldr r3, _0201EF24 ; =FUN_0201EE2C
asr r0, r0, #0x4
lsl r2, r0, #0x2
- ldr r0, _0201EF28 ; =UNK_020FFA38
+ ldr r0, _0201EF28 ; =FX_SinCosTable_
ldrsh r2, [r0, r2]
str r2, [r1, #0x0]
add r2, r1, #0x0
@@ -991,7 +991,7 @@ FUN_0201EEF0: ; 0x0201EEF0
bx r3
nop
_0201EF24: .word FUN_0201EE2C
-_0201EF28: .word UNK_020FFA38
+_0201EF28: .word FX_SinCosTable_
thumb_func_start FUN_0201EF2C
FUN_0201EF2C: ; 0x0201EF2C
@@ -1008,7 +1008,7 @@ FUN_0201EF2C: ; 0x0201EF2C
ldrh r0, [r0, #0x0]
asr r0, r0, #0x4
lsl r2, r0, #0x2
- ldr r0, _0201EF6C ; =UNK_020FFA38
+ ldr r0, _0201EF6C ; =FX_SinCosTable_
ldrsh r2, [r0, r2]
str r2, [r1, #0x0]
add r2, r1, #0x0
@@ -1026,7 +1026,7 @@ FUN_0201EF2C: ; 0x0201EF2C
bx r3
nop
_0201EF68: .word FUN_0201EE2C
-_0201EF6C: .word UNK_020FFA38
+_0201EF6C: .word FX_SinCosTable_
thumb_func_start FUN_0201EF70
FUN_0201EF70: ; 0x0201EF70
diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s
index e48364ec..03e1404e 100644
--- a/arm9/asm/unk_0201F06C.s
+++ b/arm9/asm/unk_0201F06C.s
@@ -1,11 +1,11 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_020FFA38
- .extern UNK_021064C0
- .extern UNK_021064B8
- .extern UNK_021064BC
- .extern UNK_021064C4
+ .extern FX_SinCosTable_
+ .extern NNS_GfdDefaultFuncAllocPlttVram
+ .extern NNS_GfdDefaultFuncAllocTexVram
+ .extern NNS_GfdDefaultFuncFreeTexVram
+ .extern NNS_GfdDefaultFuncFreePlttVram
.section .rodata
@@ -121,7 +121,7 @@ FUN_0201F100: ; 0x0201F100
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201F112
- bl ErrorHandling
+ bl GF_AssertFail
_0201F112:
mov r1, #0xd4
add r0, r4, #0x0
@@ -219,7 +219,7 @@ FUN_0201F1B4: ; 0x0201F1B4
bl FUN_0201F2E4
add r4, r0, #0x0
bne _0201F1C8
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0201F1C8:
@@ -280,7 +280,7 @@ FUN_0201F23C: ; 0x0201F23C
push {r4, lr}
add r4, r0, #0x0
bne _0201F24A
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r4, pc}
_0201F24A:
@@ -315,7 +315,7 @@ FUN_0201F284: ; 0x0201F284
cmp r0, #0x0
bne _0201F294
bne _0201F290
- bl ErrorHandling
+ bl GF_AssertFail
_0201F290:
mov r0, #0x0
pop {r3-r5, pc}
@@ -349,7 +349,7 @@ FUN_0201F2C0: ; 0x0201F2C0
push {r4, lr}
add r4, r0, #0x0
bne _0201F2CA
- bl ErrorHandling
+ bl GF_AssertFail
_0201F2CA:
ldrb r0, [r4, #0x3]
cmp r0, #0x0
@@ -407,7 +407,7 @@ FUN_0201F318: ; 0x0201F318
sub sp, #0x24
add r5, r0, #0x0
bne _0201F324
- bl ErrorHandling
+ bl GF_AssertFail
_0201F324:
add r0, sp, #0x0
bl MTX_Identity33_
@@ -569,18 +569,18 @@ FUN_0201F454: ; 0x0201F454
add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- bl FUN_020B7E1C
+ bl NNS_G3dTexGetRequiredSize
str r0, [sp, #0x8]
add r0, r5, #0x0
- bl FUN_020B7E10
+ bl NNS_G3dTex4x4GetRequiredSize
str r0, [sp, #0x4]
add r0, r5, #0x0
- bl FUN_020B7CE4
+ bl NNS_G3dPlttGetRequiredSize
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
cmp r0, #0x0
beq _0201F492
- ldr r3, _0201F4E4 ; =UNK_021064B8
+ ldr r3, _0201F4E4 ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0x0
ldr r3, [r3, #0x0]
add r2, r1, #0x0
@@ -588,7 +588,7 @@ FUN_0201F454: ; 0x0201F454
str r0, [r4, #0x0]
cmp r0, #0x0
bne _0201F496
- bl ErrorHandling
+ bl GF_AssertFail
b _0201F496
_0201F492:
mov r0, #0x0
@@ -597,7 +597,7 @@ _0201F496:
ldr r0, [sp, #0x4]
cmp r0, #0x0
beq _0201F4B2
- ldr r3, _0201F4E4 ; =UNK_021064B8
+ ldr r3, _0201F4E4 ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0x1
ldr r3, [r3, #0x0]
mov r2, #0x0
@@ -605,7 +605,7 @@ _0201F496:
str r0, [r6, #0x0]
cmp r0, #0x0
bne _0201F4B6
- bl ErrorHandling
+ bl GF_AssertFail
b _0201F4B6
_0201F4B2:
mov r0, #0x0
@@ -614,7 +614,7 @@ _0201F4B6:
ldr r0, [sp, #0x0]
cmp r0, #0x0
beq _0201F4DA
- ldr r3, _0201F4E8 ; =UNK_021064C0
+ ldr r3, _0201F4E8 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0x2
ldrh r2, [r5, #0x20]
lsl r1, r1, #0xe
@@ -625,7 +625,7 @@ _0201F4B6:
str r0, [r7, #0x0]
cmp r0, #0x0
bne _0201F4DE
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r4-r7, pc}
_0201F4DA:
@@ -635,17 +635,17 @@ _0201F4DE:
add sp, #0xc
pop {r4-r7, pc}
nop
-_0201F4E4: .word UNK_021064B8
-_0201F4E8: .word UNK_021064C0
+_0201F4E4: .word NNS_GfdDefaultFuncAllocTexVram
+_0201F4E8: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_0201F4EC
FUN_0201F4EC: ; 0x0201F4EC
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- bl FUN_020B7CF0
+ bl NNS_G3dTexReleaseTexKey
add r0, r5, #0x0
- bl FUN_020B7C58
+ bl NNS_G3dPlttReleasePlttKey
str r0, [r4, #0x0]
pop {r3-r5, pc}
@@ -656,14 +656,14 @@ FUN_0201F500: ; 0x0201F500
ldr r1, [r2, #0x0]
ldr r2, [r3, #0x0]
add r5, r0, #0x0
- bl FUN_020B7DFC
+ bl NNS_G3dTexSetTexKey
ldr r1, [sp, #0x10]
add r0, r5, #0x0
ldr r1, [r1, #0x0]
- bl FUN_020B7CDC
+ bl NNS_G3dPlttSetPlttKey
add r0, r4, #0x0
add r1, r5, #0x0
- bl FUN_020B7790
+ bl NNS_G3dBindMdlSet
pop {r3-r5, pc}
.balign 4
@@ -675,28 +675,28 @@ FUN_0201F524: ; 0x0201F524
add r4, r2, #0x0
cmp r0, #0x0
beq _0201F536
- ldr r1, _0201F550 ; =UNK_021064BC
+ ldr r1, _0201F550 ; =NNS_GfdDefaultFuncFreeTexVram
ldr r1, [r1, #0x0]
blx r1
_0201F536:
ldr r0, [r5, #0x0]
cmp r0, #0x0
beq _0201F542
- ldr r1, _0201F550 ; =UNK_021064BC
+ ldr r1, _0201F550 ; =NNS_GfdDefaultFuncFreeTexVram
ldr r1, [r1, #0x0]
blx r1
_0201F542:
ldr r0, [r4, #0x0]
cmp r0, #0x0
beq _0201F54E
- ldr r1, _0201F554 ; =UNK_021064C4
+ ldr r1, _0201F554 ; =NNS_GfdDefaultFuncFreePlttVram
ldr r1, [r1, #0x0]
blx r1
_0201F54E:
pop {r3-r5, pc}
.balign 4
-_0201F550: .word UNK_021064BC
-_0201F554: .word UNK_021064C4
+_0201F550: .word NNS_GfdDefaultFuncFreeTexVram
+_0201F554: .word NNS_GfdDefaultFuncFreePlttVram
thumb_func_start FUN_0201F558
FUN_0201F558: ; 0x0201F558
@@ -713,22 +713,22 @@ _0201F568:
mov r0, #0x0
pop {r3-r7, pc}
_0201F56E:
- bl FUN_020B7E1C
+ bl NNS_G3dTexGetRequiredSize
str r0, [sp, #0x0]
add r0, r4, #0x0
- bl FUN_020B7E10
+ bl NNS_G3dTex4x4GetRequiredSize
str r0, [sp, #0x4]
add r0, r4, #0x0
- bl FUN_020B7CE4
+ bl NNS_G3dPlttGetRequiredSize
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7E1C
+ bl NNS_G3dTexGetRequiredSize
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7E10
+ bl NNS_G3dTex4x4GetRequiredSize
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7CE4
+ bl NNS_G3dPlttGetRequiredSize
ldr r1, [sp, #0x0]
cmp r1, r6
bne _0201F5AA
@@ -780,7 +780,7 @@ FUN_0201F5D4: ; 0x0201F5D4
add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
add r0, r5, #0x0
add r0, #0xa8
ldrb r0, [r0, #0x0]
@@ -882,7 +882,7 @@ FUN_0201F69C: ; 0x0201F69C
add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
add r0, r4, #0x0
bl FUN_0201FBCC
add r5, #0x84
@@ -962,14 +962,14 @@ FUN_0201F744: ; 0x0201F744
push {r3-r5, lr}
add r5, r0, #0x0
bne _0201F74E
- bl ErrorHandling
+ bl GF_AssertFail
_0201F74E:
add r0, r5, #0x0
add r0, #0xa8
ldrb r0, [r0, #0x0]
cmp r0, #0x1
bne _0201F75C
- bl ErrorHandling
+ bl GF_AssertFail
_0201F75C:
add r0, r5, #0x0
add r0, #0xa8
@@ -1034,7 +1034,7 @@ FUN_0201F7C8: ; 0x0201F7C8
add r5, r1, #0x0
cmp r4, #0x0
bne _0201F7D6
- bl ErrorHandling
+ bl GF_AssertFail
_0201F7D6:
ldmia r5!, {r0-r1}
stmia r4!, {r0-r1}
@@ -1047,7 +1047,7 @@ FUN_0201F7E0: ; 0x0201F7E0
push {r4, lr}
add r4, r0, #0x0
bne _0201F7EA
- bl ErrorHandling
+ bl GF_AssertFail
_0201F7EA:
add r0, r4, #0x0
pop {r4, pc}
@@ -1060,7 +1060,7 @@ FUN_0201F7F0: ; 0x0201F7F0
add r5, r1, #0x0
cmp r4, #0x0
bne _0201F7FE
- bl ErrorHandling
+ bl GF_AssertFail
_0201F7FE:
ldmia r5!, {r0-r1}
add r4, #0xc
@@ -1077,7 +1077,7 @@ FUN_0201F80C: ; 0x0201F80C
add r4, r1, #0x0
cmp r5, #0x0
bne _0201F81A
- bl ErrorHandling
+ bl GF_AssertFail
_0201F81A:
strb r4, [r5, #0x18]
pop {r3-r5, pc}
@@ -1088,7 +1088,7 @@ FUN_0201F820: ; 0x0201F820
push {r4, lr}
add r4, r0, #0x0
bne _0201F82A
- bl ErrorHandling
+ bl GF_AssertFail
_0201F82A:
ldrb r0, [r4, #0x18]
pop {r4, pc}
@@ -1101,7 +1101,7 @@ FUN_0201F830: ; 0x0201F830
add r4, r1, #0x0
cmp r5, #0x0
bne _0201F83E
- bl ErrorHandling
+ bl GF_AssertFail
_0201F83E:
add r5, #0xaa
strh r4, [r5, #0x0]
@@ -1112,7 +1112,7 @@ FUN_0201F844: ; 0x0201F844
push {r4, lr}
add r4, r0, #0x0
bne _0201F84E
- bl ErrorHandling
+ bl GF_AssertFail
_0201F84E:
add r4, #0xaa
ldrh r0, [r4, #0x0]
@@ -1125,7 +1125,7 @@ FUN_0201F854: ; 0x0201F854
add r4, r1, #0x0
cmp r5, #0x0
bne _0201F862
- bl ErrorHandling
+ bl GF_AssertFail
_0201F862:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -1139,7 +1139,7 @@ FUN_0201F86C: ; 0x0201F86C
add r4, r1, #0x0
cmp r5, #0x0
bne _0201F87A
- bl ErrorHandling
+ bl GF_AssertFail
_0201F87A:
add r5, #0xac
str r4, [r5, #0x0]
@@ -1150,7 +1150,7 @@ FUN_0201F880: ; 0x0201F880
push {r4, lr}
add r4, r0, #0x0
bne _0201F88A
- bl ErrorHandling
+ bl GF_AssertFail
_0201F88A:
add r4, #0xac
ldr r0, [r4, #0x0]
@@ -1163,7 +1163,7 @@ FUN_0201F890: ; 0x0201F890
add r4, r1, #0x0
cmp r5, #0x0
bne _0201F89E
- bl ErrorHandling
+ bl GF_AssertFail
_0201F89E:
add r1, r5, #0x0
add r1, #0xaa
@@ -1187,7 +1187,7 @@ FUN_0201F8C0: ; 0x0201F8C0
push {r4, lr}
add r4, r0, #0x0
bne _0201F8CA
- bl ErrorHandling
+ bl GF_AssertFail
_0201F8CA:
add r1, r4, #0x0
add r1, #0xaa
@@ -1205,7 +1205,7 @@ FUN_0201F8E0: ; 0x0201F8E0
push {r4, lr}
add r4, r0, #0x0
bne _0201F8EA
- bl ErrorHandling
+ bl GF_AssertFail
_0201F8EA:
ldr r0, [r4, #0x7c]
pop {r4, pc}
@@ -1346,7 +1346,7 @@ _0201F9C4:
ldr r0, _0201FA00 ; =0x0000FFFF
cmp r1, r0
bls _0201F9EC
- bl ErrorHandling
+ bl GF_AssertFail
_0201F9EC:
ldr r0, [r5, #0x14]
add r4, r4, #0x1
@@ -1449,7 +1449,7 @@ _0201FA7C:
ldr r0, _0201FAB8 ; =0x00001FFF
cmp r1, r0
bls _0201FAA4
- bl ErrorHandling
+ bl GF_AssertFail
_0201FAA4:
ldrh r0, [r5, #0x1c]
add r4, r4, #0x1
@@ -1602,7 +1602,7 @@ FUN_0201FB9C: ; 0x0201FB9C
add r5, r2, #0x0
bl FUN_0201FC90
add r7, r0, #0x0
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
add r4, r0, #0x0
ldrh r0, [r4, #0xe]
add r0, r4, r0
@@ -1612,7 +1612,7 @@ FUN_0201FB9C: ; 0x0201FB9C
cmp r5, #0x0
beq _0201FBC6
add r0, r7, #0x0
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r5, #0x0]
_0201FBC6:
add r0, r4, #0x0
@@ -1724,7 +1724,7 @@ FUN_0201FC70: ; 0x0201FC70
sub sp, #0xc
add r4, r0, #0x0
ldr r0, [r4, #0x78]
- bl FUN_020B772C
+ bl NNS_G3dReleaseMdlSet
add r4, #0x80
ldr r0, [r4, #0x0]
add r1, sp, #0x4
@@ -1765,12 +1765,12 @@ FUN_0201FCB0: ; 0x0201FCB0
push {r3-r5, lr}
add r5, r0, #0x0
bne _0201FCBA
- bl ErrorHandling
+ bl GF_AssertFail
_0201FCBA:
ldr r0, [r5, #0x4]
cmp r0, #0x0
bne _0201FCC4
- bl ErrorHandling
+ bl GF_AssertFail
_0201FCC4:
mov r1, #0x49
ldr r0, [r5, #0x8]
@@ -1778,7 +1778,7 @@ _0201FCC4:
bl AllocFromHeap
add r4, r0, #0x0
bne _0201FCD6
- bl ErrorHandling
+ bl GF_AssertFail
_0201FCD6:
add r0, r4, #0x0
bl FUN_0201FE44
@@ -1791,7 +1791,7 @@ _0201FCD6:
str r0, [r4, #0x0]
cmp r0, #0x0
bne _0201FCF4
- bl ErrorHandling
+ bl GF_AssertFail
_0201FCF4:
ldr r0, [r5, #0x0]
str r0, [r4, #0x4]
@@ -1802,7 +1802,7 @@ _0201FCF4:
str r0, [r4, #0x8]
cmp r0, #0x0
bne _0201FD0C
- bl ErrorHandling
+ bl GF_AssertFail
_0201FD0C:
add r0, r4, #0x0
bl FUN_0202083C
@@ -1828,7 +1828,7 @@ _0201FD0C:
ldr r0, [r4, r1]
add r1, r1, #0x4
add r1, r4, r1
- bl thunk_FUN_020afda0_2
+ bl NNS_G2dGetUnpackedAnimBank
mov r0, #0x12
mov r1, #0x1
lsl r0, r0, #0x4
@@ -1927,7 +1927,7 @@ FUN_0201FDEC: ; 0x0201FDEC
push {r3-r7, lr}
add r5, r0, #0x0
bne _0201FDF6
- bl ErrorHandling
+ bl GF_AssertFail
_0201FDF6:
mov r0, #0x12
lsl r0, r0, #0x4
@@ -2002,10 +2002,10 @@ FUN_0201FE6C: ; 0x0201FE6C
bl memset
add r0, r4, #0x0
add r0, #0xb4
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, r4, #0x0
add r0, #0xd8
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0x0
str r0, [r4, #0x30]
pop {r4, pc}
@@ -2072,7 +2072,7 @@ _0201FEA6:
add r1, r4, #0x0
add r1, #0x26
ldrb r1, [r1, #0x0]
- bl FUN_020B502C
+ bl NNS_G2dSetRndCoreAffineOverwriteMode
add r0, r4, #0x0
add r0, #0x27
ldrb r2, [r0, #0x0]
@@ -2084,7 +2084,7 @@ _0201FEA6:
mov r3, #0x2
and r1, r2
and r2, r3
- bl FUN_020B4F38
+ bl NNS_G2dSetRndCoreFlipMode
add r0, r4, #0x0
mov r2, #0x1
add r0, #0x34
@@ -2193,13 +2193,13 @@ _0201FFE4:
ldr r1, [r1, #0x0]
add r0, #0xb4
add r4, #0x40
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
mov r1, #0x0
mvn r1, r1
cmp r0, r1
beq _0202000E
ldr r0, [r4, #0x5c]
- bl FUN_020B4358
+ bl NNS_G2dFreeCellTransferStateHandle
_0202000E:
add r0, r5, #0x0
add r0, #0xec
@@ -2296,11 +2296,11 @@ FUN_020200A0: ; 0x020200A0
add r4, r1, #0x0
cmp r5, #0x0
bne _020200AE
- bl ErrorHandling
+ bl GF_AssertFail
_020200AE:
cmp r4, #0x2
blt _020200B6
- bl ErrorHandling
+ bl GF_AssertFail
_020200B6:
add r5, #0x34
strb r4, [r5, #0x0]
@@ -2313,11 +2313,11 @@ FUN_020200BC: ; 0x020200BC
add r4, r1, #0x0
cmp r5, #0x0
bne _020200CA
- bl ErrorHandling
+ bl GF_AssertFail
_020200CA:
cmp r4, #0x2
blt _020200D2
- bl ErrorHandling
+ bl GF_AssertFail
_020200D2:
add r5, #0x35
strb r4, [r5, #0x0]
@@ -2330,7 +2330,7 @@ FUN_020200D8: ; 0x020200D8
add r4, r1, #0x0
cmp r5, #0x0
bne _020200E6
- bl ErrorHandling
+ bl GF_AssertFail
_020200E6:
str r4, [r5, #0x38]
pop {r3-r5, pc}
@@ -2343,7 +2343,7 @@ FUN_020200EC: ; 0x020200EC
add r4, r1, #0x0
cmp r5, #0x0
bne _020200FA
- bl ErrorHandling
+ bl GF_AssertFail
_020200FA:
add r5, #0x26
strb r4, [r5, #0x0]
@@ -2356,7 +2356,7 @@ FUN_02020100: ; 0x02020100
add r4, r1, #0x0
cmp r5, #0x0
bne _0202010E
- bl ErrorHandling
+ bl GF_AssertFail
_0202010E:
add r0, r5, #0x0
add r0, #0x27
@@ -2409,11 +2409,11 @@ _0202014A:
lsl r1, r1, #0x10
ldr r0, [r4, #0x4]
lsr r1, r1, #0x10
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- bl FUN_020B1EE4
+ bl NNS_G2dSetCellAnimationSequence
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -2422,11 +2422,11 @@ _02020168:
add r4, #0x40
ldr r0, [r4, #0x6c]
add r1, r3, #0x0
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- bl FUN_020B242C
+ bl NNS_G2dSetAnimSequenceToMCAnimation
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -2459,7 +2459,7 @@ _020201A8:
add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- bl FUN_020B0448
+ bl NNS_G2dResetAnimCtrlState
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -2471,7 +2471,7 @@ _020201C2:
add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- bl FUN_020B0448
+ bl NNS_G2dResetAnimCtrlState
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -2499,12 +2499,12 @@ FUN_020201E4: ; 0x020201E4
_020201F4:
add r0, #0x40
add r0, #0x8
- bl FUN_020B1EC4
+ bl NNS_G2dTickCellAnimation
pop {r3, pc}
_020201FE:
add r0, #0x40
add r0, #0x8
- bl FUN_020B224C
+ bl NNS_G2dTickMCAnimation
pop {r3, pc}
thumb_func_start FUN_02020208
@@ -2520,22 +2520,22 @@ FUN_02020208: ; 0x02020208
_02020218:
add r0, #0x40
add r0, #0x8
- bl FUN_020B1EA4
+ bl NNS_G2dSetCellAnimationCurrentFrame
pop {r3, pc}
_02020222:
add r0, #0x40
add r0, #0x8
- bl FUN_020B2194
+ bl NNS_G2dSetMCAnimationCurrentFrame
pop {r3, pc}
thumb_func_start FUN_0202022C
FUN_0202022C: ; 0x0202022C
- ldr r3, _02020234 ; =FUN_020B04FC
+ ldr r3, _02020234 ; =NNS_G2dGetAnimCtrlCurrentFrame
add r0, #0x40
add r0, #0x8
bx r3
.balign 4
-_02020234: .word FUN_020B04FC
+_02020234: .word NNS_G2dGetAnimCtrlCurrentFrame
thumb_func_start FUN_02020238
FUN_02020238: ; 0x02020238
@@ -2558,7 +2558,7 @@ FUN_02020248: ; 0x02020248
add r4, r1, #0x0
cmp r5, #0x0
bne _02020256
- bl ErrorHandling
+ bl GF_AssertFail
_02020256:
add r0, r5, #0x0
add r0, #0x29
@@ -2613,7 +2613,7 @@ FUN_020202A8: ; 0x020202A8
add r4, r1, #0x0
cmp r5, #0x0
bne _020202B6
- bl ErrorHandling
+ bl GF_AssertFail
_020202B6:
add r0, r5, #0x0
add r0, #0x2a
@@ -2659,7 +2659,7 @@ FUN_02020300: ; 0x02020300
push {r4, lr}
add r4, r0, #0x0
bne _0202030A
- bl ErrorHandling
+ bl GF_AssertFail
_0202030A:
add r4, #0x2a
ldrb r0, [r4, #0x0]
@@ -2751,7 +2751,7 @@ FUN_02020388: ; 0x02020388
push {r4, lr}
add r4, r0, #0x0
bne _02020392
- bl ErrorHandling
+ bl GF_AssertFail
_02020392:
ldr r0, [r4, #0x50]
pop {r4, pc}
@@ -2764,7 +2764,7 @@ FUN_02020398: ; 0x02020398
add r5, r1, #0x0
cmp r4, #0x0
bne _020203A6
- bl ErrorHandling
+ bl GF_AssertFail
_020203A6:
str r5, [r4, #0x30]
cmp r5, #0x0
@@ -2969,12 +2969,12 @@ FUN_0202050C: ; 0x0202050C
add r4, #0x40
ldr r0, [r4, #0x4]
mov r1, #0x0
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
add r4, #0x8
add r1, r0, #0x0
ldr r2, [r5, #0x40]
add r0, r4, #0x0
- bl FUN_020B1F80
+ bl NNS_G2dInitCellAnimation
pop {r3-r5, pc}
.balign 4
@@ -2986,22 +2986,22 @@ FUN_0202052C: ; 0x0202052C
add r4, r6, #0x0
add r4, #0x40
add r5, r0, #0x0
- bl FUN_020B43A4
+ bl NNS_G2dGetNewCellTransferStateHandle
str r0, [r4, #0x5c]
ldr r0, [r4, #0x4]
mov r1, #0x0
ldr r5, [r5, #0x4]
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
str r0, [sp, #0x18]
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x1
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
add r7, r0, #0x0
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x2
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
mov r1, #0x0
mvn r1, r1
str r1, [sp, #0x0]
@@ -3018,7 +3018,7 @@ FUN_0202052C: ; 0x0202052C
ldr r2, [r6, #0x40]
ldr r3, [r4, #0x5c]
add r0, #0x8
- bl FUN_020B1EFC
+ bl NNS_G2dInitCellAnimationVramTransfered
add sp, #0x1c
pop {r4-r7, pc}
@@ -3032,10 +3032,10 @@ FUN_02020588: ; 0x02020588
ldr r0, [r4, #0x6c]
add r7, r1, #0x0
mov r1, #0x0
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
str r0, [sp, #0xc]
ldr r0, [r4, #0x68]
- bl FUN_020B23D8
+ bl NNS_G2dGetMCBankNumNodesRequired
add r6, r0, #0x0
mov r1, #0x28
add r0, r7, #0x0
@@ -3058,11 +3058,11 @@ FUN_02020588: ; 0x02020588
ldr r1, [r4, #0x70]
ldr r2, [r4, #0x74]
add r0, #0x8
- bl FUN_020B20C8
+ bl NNS_G2dInitMCAnimation
add r4, #0x8
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- bl FUN_020B242C
+ bl NNS_G2dSetAnimSequenceToMCAnimation
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -3087,7 +3087,7 @@ _02020600:
_02020602:
cmp r4, #0x0
beq _02020612
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r1, r4, #0x0
bl _u32_div_f
pop {r4, pc}
@@ -3115,19 +3115,19 @@ FUN_02020618: ; 0x02020618
ldr r0, [r5, r0]
add r1, #0xb4
add r2, #0xd8
- bl thunk_FUN_020b5040
+ bl NNS_G2dSetRendererImageProxy
mov r0, #0x45
lsl r0, r0, #0x2
ldr r0, [r5, r0]
- bl FUN_020B326C
- bl FUN_020B2B58
+ bl NNS_G2dBeginRendering
+ bl NNS_G2dPushMtx
add r1, r4, #0x0
mov r0, #0x45
add r1, #0x26
lsl r0, r0, #0x2
ldrb r1, [r1, #0x0]
ldr r0, [r5, r0]
- bl FUN_020B502C
+ bl NNS_G2dSetRndCoreAffineOverwriteMode
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -3143,7 +3143,7 @@ FUN_02020618: ; 0x02020618
mov r3, #0x2
and r1, r2
and r2, r3
- bl FUN_020B4F38
+ bl NNS_G2dSetRndCoreFlipMode
b _0202068E
_02020680:
mov r0, #0x45
@@ -3151,12 +3151,12 @@ _02020680:
mov r1, #0x0
ldr r0, [r5, r0]
add r2, r1, #0x0
- bl FUN_020B4F38
+ bl NNS_G2dSetRndCoreFlipMode
_0202068E:
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
- bl FUN_020B2A08
+ bl NNS_G2dTranslate
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -3165,13 +3165,13 @@ _0202068E:
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
- bl FUN_020B2A08
+ bl NNS_G2dTranslate
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x20]
- bl FUN_020B28B4
+ bl NNS_G2dScale
ldrh r0, [r4, #0x24]
- ldr r2, _02020770 ; =UNK_020FFA38
+ ldr r2, _02020770 ; =FX_SinCosTable_
asr r0, r0, #0x4
lsl r1, r0, #0x1
lsl r0, r1, #0x1
@@ -3179,14 +3179,14 @@ _0202068E:
lsl r1, r1, #0x1
ldrsh r0, [r2, r0]
ldrsh r1, [r2, r1]
- bl FUN_020B2794
+ bl NNS_G2dRotZ
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
neg r0, r0
neg r1, r1
neg r2, r2
- bl FUN_020B2A08
+ bl NNS_G2dTranslate
_020206DC:
add r0, r4, #0x0
add r0, #0x28
@@ -3249,20 +3249,20 @@ _0202074E:
add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- bl FUN_020B317C
+ bl NNS_G2dDrawCellAnimation
b _02020764
_0202075A:
add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- bl FUN_020B2D9C
+ bl NNS_G2dDrawMultiCellAnimation
_02020764:
- bl FUN_020B2B08
- bl FUN_020B31F0
+ bl NNS_G2dPopMtx
+ bl NNS_G2dEndRendering
add sp, #0xc
pop {r3-r6, pc}
.balign 4
-_02020770: .word UNK_020FFA38
+_02020770: .word FX_SinCosTable_
thumb_func_start FUN_02020774
FUN_02020774: ; 0x02020774
diff --git a/arm9/asm/unk_02020C44.s b/arm9/asm/unk_02020C44.s
index c1870c5a..235543ee 100644
--- a/arm9/asm/unk_02020C44.s
+++ b/arm9/asm/unk_02020C44.s
@@ -1,10 +1,10 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021064B8
- .extern UNK_021064C0
- .extern UNK_021064C4
- .extern UNK_021064BC
+ .extern NNS_GfdDefaultFuncAllocTexVram
+ .extern NNS_GfdDefaultFuncAllocPlttVram
+ .extern NNS_GfdDefaultFuncFreePlttVram
+ .extern NNS_GfdDefaultFuncFreeTexVram
.text
@@ -18,7 +18,7 @@ FUN_02020C44: ; 0x02020C44
bl AllocFromHeap
add r6, r0, #0x0
bne _02020C5A
- bl ErrorHandling
+ bl GF_AssertFail
_02020C5A:
add r0, r4, #0x0
lsl r1, r7, #0x3
@@ -26,7 +26,7 @@ _02020C5A:
str r0, [r6, #0x0]
cmp r0, #0x0
bne _02020C6C
- bl ErrorHandling
+ bl GF_AssertFail
_02020C6C:
mov r4, #0x0
cmp r7, #0x0
@@ -53,7 +53,7 @@ FUN_02020C90: ; 0x02020C90
push {r4, lr}
add r4, r0, #0x0
bne _02020C9A
- bl ErrorHandling
+ bl GF_AssertFail
_02020C9A:
add r0, r4, #0x0
bl FUN_02020D9C
@@ -71,7 +71,7 @@ FUN_02020CB0: ; 0x02020CB0
add r4, r1, #0x0
cmp r5, #0x0
bne _02020CBE
- bl ErrorHandling
+ bl GF_AssertFail
_02020CBE:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -93,20 +93,20 @@ FUN_02020CD4: ; 0x02020CD4
add r6, r2, #0x0
cmp r5, #0x0
bne _02020CE4
- bl ErrorHandling
+ bl GF_AssertFail
_02020CE4:
add r0, r5, #0x0
bl FUN_02020E48
add r4, r0, #0x0
bne _02020CF2
- bl ErrorHandling
+ bl GF_AssertFail
_02020CF2:
add r0, r5, #0x0
add r1, r6, #0x0
bl FUN_02020CB0
cmp r0, #0x1
beq _02020D02
- bl ErrorHandling
+ bl GF_AssertFail
_02020D02:
str r7, [r4, #0x4]
str r6, [r4, #0x0]
@@ -125,24 +125,24 @@ FUN_02020D10: ; 0x02020D10
str r3, [sp, #0x0]
cmp r5, #0x0
bne _02020D22
- bl ErrorHandling
+ bl GF_AssertFail
_02020D22:
cmp r6, #0x0
bne _02020D2A
- bl ErrorHandling
+ bl GF_AssertFail
_02020D2A:
add r0, r5, #0x0
bl FUN_02020E48
add r4, r0, #0x0
bne _02020D38
- bl ErrorHandling
+ bl GF_AssertFail
_02020D38:
add r0, r5, #0x0
add r1, r7, #0x0
bl FUN_02020CB0
cmp r0, #0x1
beq _02020D48
- bl ErrorHandling
+ bl GF_AssertFail
_02020D48:
ldr r0, [sp, #0x0]
add r1, r6, #0x0
@@ -150,7 +150,7 @@ _02020D48:
str r0, [r4, #0x4]
cmp r0, #0x0
bne _02020D5A
- bl ErrorHandling
+ bl GF_AssertFail
_02020D5A:
str r7, [r4, #0x0]
ldr r0, [r5, #0x8]
@@ -167,11 +167,11 @@ FUN_02020D68: ; 0x02020D68
add r4, r1, #0x0
cmp r5, #0x0
bne _02020D76
- bl ErrorHandling
+ bl GF_AssertFail
_02020D76:
cmp r4, #0x0
bne _02020D7E
- bl ErrorHandling
+ bl GF_AssertFail
_02020D7E:
ldr r0, [r4, #0x4]
cmp r0, #0x0
@@ -194,12 +194,12 @@ FUN_02020D9C: ; 0x02020D9C
push {r3-r7, lr}
add r5, r0, #0x0
bne _02020DA6
- bl ErrorHandling
+ bl GF_AssertFail
_02020DA6:
ldr r0, [r5, #0x0]
cmp r0, #0x0
bne _02020DB0
- bl ErrorHandling
+ bl GF_AssertFail
_02020DB0:
ldr r0, [r5, #0x4]
mov r6, #0x0
@@ -231,7 +231,7 @@ FUN_02020DD8: ; 0x02020DD8
add r4, r1, #0x0
cmp r5, #0x0
bne _02020DE6
- bl ErrorHandling
+ bl GF_AssertFail
_02020DE6:
ldr r6, [r5, #0x4]
mov r1, #0x0
@@ -261,7 +261,7 @@ FUN_02020E0C: ; 0x02020E0C
push {r4, lr}
add r4, r0, #0x0
bne _02020E16
- bl ErrorHandling
+ bl GF_AssertFail
_02020E16:
ldr r0, [r4, #0x4]
pop {r4, pc}
@@ -274,7 +274,7 @@ FUN_02020E1C: ; 0x02020E1C
add r4, r1, #0x0
cmp r5, #0x0
bne _02020E2A
- bl ErrorHandling
+ bl GF_AssertFail
_02020E2A:
ldr r0, [r5, #0x4]
cmp r0, #0x0
@@ -289,7 +289,7 @@ FUN_02020E38: ; 0x02020E38
push {r4, lr}
add r4, r0, #0x0
bne _02020E42
- bl ErrorHandling
+ bl GF_AssertFail
_02020E42:
ldr r0, [r4, #0x0]
pop {r4, pc}
@@ -300,7 +300,7 @@ FUN_02020E48: ; 0x02020E48
push {r3-r5, lr}
add r4, r0, #0x0
bne _02020E52
- bl ErrorHandling
+ bl GF_AssertFail
_02020E52:
ldr r5, [r4, #0x4]
mov r2, #0x0
@@ -330,7 +330,7 @@ FUN_02020E78: ; 0x02020E78
push {r4, lr}
add r4, r0, #0x0
bne _02020E82
- bl ErrorHandling
+ bl GF_AssertFail
_02020E82:
mov r0, #0x0
mvn r0, r0
@@ -380,7 +380,7 @@ FUN_02020ED4: ; 0x02020ED4
push {r4, lr}
add r4, r0, #0x0
bne _02020EDE
- bl ErrorHandling
+ bl GF_AssertFail
_02020EDE:
add r0, r4, #0x0
bl FUN_02021010
@@ -399,7 +399,7 @@ FUN_02020EF8: ; 0x02020EF8
add r4, r1, #0x0
cmp r5, #0x0
bne _02020F06
- bl ErrorHandling
+ bl GF_AssertFail
_02020F06:
ldr r0, [r5, #0x0]
add r1, r4, #0x0
@@ -415,7 +415,7 @@ FUN_02020F10: ; 0x02020F10
str r2, [sp, #0x0]
cmp r5, #0x0
bne _02020F22
- bl ErrorHandling
+ bl GF_AssertFail
_02020F22:
add r0, r5, #0x0
bl FUN_020211DC
@@ -462,11 +462,11 @@ FUN_02020F6C: ; 0x02020F6C
add r4, r1, #0x0
cmp r5, #0x0
bne _02020F7A
- bl ErrorHandling
+ bl GF_AssertFail
_02020F7A:
cmp r4, #0x0
bne _02020F82
- bl ErrorHandling
+ bl GF_AssertFail
_02020F82:
ldrh r0, [r4, #0x16]
cmp r0, #0x1
@@ -488,39 +488,39 @@ _02020FA4:
ldr r0, [r4, #0x4]
cmp r0, #0x0
beq _02020FB8
- ldr r1, _02020FE8 ; =UNK_021064BC
+ ldr r1, _02020FE8 ; =NNS_GfdDefaultFuncFreeTexVram
ldr r1, [r1, #0x0]
blx r1
cmp r0, #0x0
beq _02020FB8
- bl ErrorHandling
+ bl GF_AssertFail
_02020FB8:
ldr r0, [r4, #0x8]
cmp r0, #0x0
beq _02020FCC
- ldr r1, _02020FE8 ; =UNK_021064BC
+ ldr r1, _02020FE8 ; =NNS_GfdDefaultFuncFreeTexVram
ldr r1, [r1, #0x0]
blx r1
cmp r0, #0x0
beq _02020FCC
- bl ErrorHandling
+ bl GF_AssertFail
_02020FCC:
ldr r0, [r4, #0xc]
cmp r0, #0x0
beq _02020FE0
- ldr r1, _02020FEC ; =UNK_021064C4
+ ldr r1, _02020FEC ; =NNS_GfdDefaultFuncFreePlttVram
ldr r1, [r1, #0x0]
blx r1
cmp r0, #0x0
beq _02020FE0
- bl ErrorHandling
+ bl GF_AssertFail
_02020FE0:
add r0, r4, #0x0
bl FUN_0202120C
pop {r3-r5, pc}
.balign 4
-_02020FE8: .word UNK_021064BC
-_02020FEC: .word UNK_021064C4
+_02020FE8: .word NNS_GfdDefaultFuncFreeTexVram
+_02020FEC: .word NNS_GfdDefaultFuncFreePlttVram
thumb_func_start FUN_02020FF0
FUN_02020FF0: ; 0x02020FF0
@@ -529,7 +529,7 @@ FUN_02020FF0: ; 0x02020FF0
add r4, r1, #0x0
cmp r5, #0x0
bne _02020FFE
- bl ErrorHandling
+ bl GF_AssertFail
_02020FFE:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -544,12 +544,12 @@ FUN_02021010: ; 0x02021010
push {r4-r6, lr}
add r5, r0, #0x0
bne _0202101A
- bl ErrorHandling
+ bl GF_AssertFail
_0202101A:
ldr r0, [r5, #0x4]
cmp r0, #0x0
bne _02021024
- bl ErrorHandling
+ bl GF_AssertFail
_02021024:
ldr r0, [r5, #0x0]
mov r6, #0x0
@@ -583,7 +583,7 @@ FUN_02021050: ; 0x02021050
add r7, r1, #0x0
cmp r6, #0x0
bne _0202105E
- bl ErrorHandling
+ bl GF_AssertFail
_0202105E:
ldr r0, [r6, #0x0]
mov r4, #0x0
@@ -622,7 +622,7 @@ FUN_02021098: ; 0x02021098
push {r4, lr}
add r4, r0, #0x0
bne _020210A2
- bl ErrorHandling
+ bl GF_AssertFail
_020210A2:
ldr r0, [r4, #0x0]
bl FUN_02020E38
@@ -634,7 +634,7 @@ FUN_020210AC: ; 0x020210AC
push {r4, lr}
add r4, r0, #0x0
bne _020210B6
- bl ErrorHandling
+ bl GF_AssertFail
_020210B6:
add r0, r4, #0x0
bl FUN_02021220
@@ -646,17 +646,17 @@ FUN_020210C0: ; 0x020210C0
push {r4, lr}
add r4, r0, #0x0
bne _020210CA
- bl ErrorHandling
+ bl GF_AssertFail
_020210CA:
ldrh r0, [r4, #0x14]
cmp r0, #0x0
beq _020210D4
- bl ErrorHandling
+ bl GF_AssertFail
_020210D4:
ldr r0, [r4, #0xc]
cmp r0, #0x0
bne _020210E0
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
_020210E0:
add r0, r4, #0x0
@@ -673,7 +673,7 @@ FUN_020210F0: ; 0x020210F0
add r4, r1, #0x0
cmp r5, #0x0
bne _020210FE
- bl ErrorHandling
+ bl GF_AssertFail
_020210FE:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -686,18 +686,18 @@ FUN_0202110C: ; 0x0202110C
push {r4, lr}
add r4, r0, #0x0
bne _02021116
- bl ErrorHandling
+ bl GF_AssertFail
_02021116:
ldrh r0, [r4, #0x16]
cmp r0, #0x0
bne _02021122
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
_02021122:
ldrh r0, [r4, #0x14]
cmp r0, #0x0
beq _0202112E
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
_0202112E:
add r0, r4, #0x0
@@ -724,7 +724,7 @@ FUN_02021158: ; 0x02021158
add r4, r1, #0x0
cmp r5, #0x0
bne _02021166
- bl ErrorHandling
+ bl GF_AssertFail
_02021166:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -737,17 +737,17 @@ FUN_02021174: ; 0x02021174
push {r4, lr}
add r4, r0, #0x0
bne _0202117E
- bl ErrorHandling
+ bl GF_AssertFail
_0202117E:
ldrh r0, [r4, #0x14]
cmp r0, #0x0
beq _02021188
- bl ErrorHandling
+ bl GF_AssertFail
_02021188:
ldr r0, [r4, #0xc]
cmp r0, #0x0
beq _02021194
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
_02021194:
add r0, r4, #0x0
@@ -766,7 +766,7 @@ FUN_020211AC: ; 0x020211AC
push {r4, lr}
add r4, r0, #0x0
bne _020211B6
- bl ErrorHandling
+ bl GF_AssertFail
_020211B6:
ldr r0, [r4, #0x4]
pop {r4, pc}
@@ -777,7 +777,7 @@ FUN_020211BC: ; 0x020211BC
push {r4, lr}
add r4, r0, #0x0
bne _020211C6
- bl ErrorHandling
+ bl GF_AssertFail
_020211C6:
ldr r0, [r4, #0x8]
pop {r4, pc}
@@ -788,7 +788,7 @@ FUN_020211CC: ; 0x020211CC
push {r4, lr}
add r4, r0, #0x0
bne _020211D6
- bl ErrorHandling
+ bl GF_AssertFail
_020211D6:
ldr r0, [r4, #0xc]
pop {r4, pc}
@@ -842,7 +842,7 @@ FUN_02021220: ; 0x02021220
push {r3, lr}
ldr r0, [r0, #0x0]
bl FUN_02020E0C
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
pop {r3, pc}
.balign 4
@@ -858,7 +858,7 @@ FUN_02021230: ; 0x02021230
_02021240:
ldr r0, [r0, #0x10]
_02021242:
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
pop {r3, pc}
thumb_func_start FUN_02021248
@@ -869,17 +869,17 @@ FUN_02021248: ; 0x02021248
str r1, [sp, #0x0]
str r2, [sp, #0x4]
str r3, [sp, #0x8]
- bl FUN_020B7E1C
+ bl NNS_G3dTexGetRequiredSize
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7E10
+ bl NNS_G3dTex4x4GetRequiredSize
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_020B7CE4
+ bl NNS_G3dPlttGetRequiredSize
add r4, r0, #0x0
cmp r7, #0x0
beq _0202127E
- ldr r3, _020212B0 ; =UNK_021064B8
+ ldr r3, _020212B0 ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0x0
ldr r3, [r3, #0x0]
add r0, r7, #0x0
@@ -890,7 +890,7 @@ FUN_02021248: ; 0x02021248
_0202127E:
cmp r6, #0x0
beq _02021292
- ldr r3, _020212B0 ; =UNK_021064B8
+ ldr r3, _020212B0 ; =NNS_GfdDefaultFuncAllocTexVram
add r0, r6, #0x0
ldr r3, [r3, #0x0]
mov r1, #0x1
@@ -901,7 +901,7 @@ _0202127E:
_02021292:
cmp r4, #0x0
beq _020212AC
- ldr r3, _020212B4 ; =UNK_021064C0
+ ldr r3, _020212B4 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0x2
ldrh r2, [r5, #0x20]
lsl r1, r1, #0xe
@@ -916,8 +916,8 @@ _020212AC:
add sp, #0xc
pop {r4-r7, pc}
.balign 4
-_020212B0: .word UNK_021064B8
-_020212B4: .word UNK_021064C0
+_020212B0: .word NNS_GfdDefaultFuncAllocTexVram
+_020212B4: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_020212B8
FUN_020212B8: ; 0x020212B8
@@ -933,10 +933,10 @@ FUN_020212B8: ; 0x020212B8
bl DC_FlushRange
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_020B7D28
+ bl NNS_G3dTexLoad
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_020B7C78
+ bl NNS_G3dPlttLoad
pop {r4, pc}
.balign 4
@@ -945,10 +945,10 @@ FUN_020212E4: ; 0x020212E4
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- bl FUN_020B7DFC
+ bl NNS_G3dTexSetTexKey
add r0, r5, #0x0
add r1, r4, #0x0
- bl FUN_020B7CDC
+ bl NNS_G3dPlttSetPlttKey
pop {r3-r5, pc}
thumb_func_start FUN_020212F8
@@ -958,9 +958,9 @@ FUN_020212F8: ; 0x020212F8
add r4, r0, #0x0
add r1, sp, #0x4
add r2, sp, #0x0
- bl FUN_020B7CF0
+ bl NNS_G3dTexReleaseTexKey
add r0, r4, #0x0
- bl FUN_020B7C58
+ bl NNS_G3dPlttReleasePlttKey
add sp, #0x8
pop {r4, pc}
@@ -986,10 +986,10 @@ FUN_02021310: ; 0x02021310
FUN_02021334: ; 0x02021334
push {r3-r5, lr}
add r5, r0, #0x0
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
add r4, r0, #0x0
bne _02021344
- bl ErrorHandling
+ bl GF_AssertFail
_02021344:
ldr r0, [r4, #0x14]
add r0, r4, r0
diff --git a/arm9/asm/unk_0202134C.s b/arm9/asm/unk_0202134C.s
index 30aa1d51..b45f4e91 100644
--- a/arm9/asm/unk_0202134C.s
+++ b/arm9/asm/unk_0202134C.s
@@ -8,7 +8,7 @@ FUN_0202134C: ; 0x0202134C
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- bl FUN_020B33A0
+ bl NNS_G2dInitRenderer
add r5, #0x80
str r4, [r5, #0x0]
pop {r3-r5, pc}
@@ -20,7 +20,7 @@ FUN_0202135C: ; 0x0202135C
add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- bl FUN_020B3334
+ bl NNS_G2dInitRenderSurface
add r2, r5, #0x0
ldmia r4!, {r0-r1}
stmia r2!, {r0-r1}
@@ -36,7 +36,7 @@ FUN_0202135C: ; 0x0202135C
cmp r0, #0x0
beq _0202138C
add r1, r5, #0x0
- bl FUN_020B3390
+ bl NNS_G2dAddRendererTargetSurface
_0202138C:
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_02021590.s b/arm9/asm/unk_02021590.s
index 67d46c65..ee27fc88 100644
--- a/arm9/asm/unk_02021590.s
+++ b/arm9/asm/unk_02021590.s
@@ -108,7 +108,7 @@ _02021638:
ldr r0, [r5, #0x60]
cmp r0, #0x0
bne _02021642
- bl ErrorHandling
+ bl GF_AssertFail
_02021642:
ldr r0, [sp, #0x18]
ldr r1, [r5, #0x64]
@@ -135,7 +135,7 @@ _02021660:
cmp r0, #0x2
bls _02021678
_02021674:
- bl ErrorHandling
+ bl GF_AssertFail
_02021678:
add r0, r5, #0x0
add r0, #0x6a
diff --git a/arm9/asm/unk_02022318.s b/arm9/asm/unk_02022318.s
index cf87cdb9..9564742c 100644
--- a/arm9/asm/unk_02022318.s
+++ b/arm9/asm/unk_02022318.s
@@ -15,7 +15,7 @@ FUN_02022318: ; 0x02022318
bl AllocFromHeap
add r4, r0, #0x0
str r6, [r4, #0x0]
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
mov r1, #0x2
ldr r0, _020223B8 ; =0x04000540
@@ -23,7 +23,7 @@ FUN_02022318: ; 0x02022318
str r1, [r0, #0x0]
bne _02022364
lsl r0, r5, #0x7
- bl FUN_020AFA28
+ bl NNS_GfdGetLnkTexVramManagerWorkSize
add r6, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r6, #0x0
@@ -35,20 +35,20 @@ FUN_02022318: ; 0x02022318
lsl r0, r5, #0x11
mov r1, #0x0
add r3, r6, #0x0
- bl FUN_020AF9C4
+ bl NNS_GfdInitLnkTexVramManager
b _0202236E
_02022364:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
mov r1, #0x1
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
_0202236E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
bne _02022398
ldr r0, [sp, #0x20]
lsl r0, r0, #0x8
- bl FUN_020AFBFC
+ bl NNS_GfdGetLnkPlttVramManagerWorkSize
add r5, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r5, #0x0
@@ -59,14 +59,14 @@ _0202236E:
lsl r0, r0, #0xd
add r2, r5, #0x0
mov r3, #0x1
- bl FUN_020AFBA8
+ bl NNS_GfdInitLnkPlttVramManager
b _020223A4
_02022398:
ldr r0, [sp, #0x20]
mov r1, #0x1
lsl r0, r0, #0x1d
lsr r0, r0, #0x10
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
_020223A4:
ldr r0, [sp, #0x24]
cmp r0, #0x0
diff --git a/arm9/asm/unk_02022504.s b/arm9/asm/unk_02022504.s
deleted file mode 100644
index e3463538..00000000
--- a/arm9/asm/unk_02022504.s
+++ /dev/null
@@ -1,53 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02022504
-FUN_02022504: ; 0x02022504
- ldr r3, _0202250C ; =SavArray_get
- mov r1, #0x1b
- bx r3
- nop
-_0202250C: .word SavArray_get
-
- thumb_func_start GetStoragePCPointer
-GetStoragePCPointer: ; 0x02022510
- ldr r3, _02022518 ; =SavArray_get
- mov r1, #0x23
- bx r3
- nop
-_02022518: .word SavArray_get
-
- thumb_func_start FUN_0202251C
-FUN_0202251C: ; 0x0202251C
- ldr r3, _02022524 ; =SavArray_get
- mov r1, #0x1f
- bx r3
- nop
-_02022524: .word SavArray_get
-
- thumb_func_start FUN_02022528
-FUN_02022528: ; 0x02022528
- ldr r3, _02022530 ; =SavArray_get
- mov r1, #0x20
- bx r3
- nop
-_02022530: .word SavArray_get
-
- thumb_func_start LoadHallOfFame
-LoadHallOfFame: ; 0x02022534
- push {r3, lr}
- add r3, r2, #0x0
- mov r2, #0x0
- bl ReadSaveFileFromFlash
- pop {r3, pc}
-
- thumb_func_start SaveHallOfFame
-SaveHallOfFame: ; 0x02022540
- ldr r3, _02022548 ; =WriteSaveFileToFlash
- add r2, r1, #0x0
- mov r1, #0x0
- bx r3
- .balign 4
-_02022548: .word WriteSaveFileToFlash
diff --git a/arm9/asm/unk_02023AC4.s b/arm9/asm/unk_02023AC4.s
index 31d23446..daa3a9a3 100644
--- a/arm9/asm/unk_02023AC4.s
+++ b/arm9/asm/unk_02023AC4.s
@@ -171,7 +171,7 @@ FUN_02023BA4: ; 0x02023BA4
add r4, r0, #0x0
cmp r5, #0x1
blt _02023BB2
- bl ErrorHandling
+ bl GF_AssertFail
_02023BB2:
add r0, r4, #0x0
mov r1, #0xd
diff --git a/arm9/asm/unk_020250A4.s b/arm9/asm/unk_020250A4.s
index 76e0e8ce..60cd4165 100644
--- a/arm9/asm/unk_020250A4.s
+++ b/arm9/asm/unk_020250A4.s
@@ -391,7 +391,7 @@ _0202531E: ; jump table (using 16-bit offset)
.short _02025336 - _0202531E - 2; case 4
.short _0202534E - _0202531E - 2; case 5
_0202532A:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
_02025330:
add r0, r2, #0x1
diff --git a/arm9/asm/unk_02025954.s b/arm9/asm/unk_02025954.s
index 8cbf5483..40c1b236 100644
--- a/arm9/asm/unk_02025954.s
+++ b/arm9/asm/unk_02025954.s
@@ -482,7 +482,7 @@ _02025C50:
ldr r0, [sp, #0x0]
cmp r0, #0x5
blt _02025C72
- bl ErrorHandling
+ bl GF_AssertFail
_02025C72:
add r0, r6, #0x0
bl PlayerProfile_GetNamePtr
@@ -593,11 +593,11 @@ FUN_02025D48: ; 0x02025D48
add r4, r0, #0x0
cmp r4, #0xb
bge _02025D54
- bl ErrorHandling
+ bl GF_AssertFail
_02025D54:
cmp r4, #0x3c
blt _02025D5C
- bl ErrorHandling
+ bl GF_AssertFail
_02025D5C:
sub r4, #0xb
ldr r0, _02025D68 ; =UNK_02105C74
@@ -685,7 +685,7 @@ FUN_02025DD4: ; 0x02025DD4
bl FUN_02025F0C
cmp r0, #0x0
beq _02025DE6
- bl ErrorHandling
+ bl GF_AssertFail
_02025DE6:
mov r0, #0x81
add r1, r5, r4
@@ -827,11 +827,11 @@ FUN_02025EDC: ; 0x02025EDC
add r4, r1, #0x0
cmp r6, #0x1
bge _02025EEC
- bl ErrorHandling
+ bl GF_AssertFail
_02025EEC:
cmp r6, #0xf
ble _02025EF4
- bl ErrorHandling
+ bl GF_AssertFail
_02025EF4:
sub r0, r6, #0x1
add r1, r5, r0
@@ -1458,7 +1458,7 @@ FUN_0202630C: ; 0x0202630C
add r6, r3, #0x0
cmp r4, #0x40
blt _0202631E
- bl ErrorHandling
+ bl GF_AssertFail
_0202631E:
ldr r0, _02026350 ; =0x0000010F
add r1, r5, r4
@@ -1494,7 +1494,7 @@ FUN_02026354: ; 0x02026354
add r5, r0, #0x0
cmp r4, #0x40
blt _02026362
- bl ErrorHandling
+ bl GF_AssertFail
_02026362:
ldr r0, _0202636C ; =0x0000010F
add r1, r5, r4
@@ -1510,7 +1510,7 @@ FUN_02026370: ; 0x02026370
add r5, r0, #0x0
cmp r4, #0x40
blt _0202637E
- bl ErrorHandling
+ bl GF_AssertFail
_0202637E:
lsl r0, r4, #0x1
add r0, r4, r0
@@ -1535,7 +1535,7 @@ FUN_0202639C: ; 0x0202639C
add r5, r0, #0x0
cmp r4, #0x40
blt _020263AA
- bl ErrorHandling
+ bl GF_AssertFail
_020263AA:
lsl r0, r4, #0x1
add r0, r4, r0
@@ -1560,7 +1560,7 @@ FUN_020263C8: ; 0x020263C8
add r5, r0, #0x0
cmp r4, #0x40
blt _020263D6
- bl ErrorHandling
+ bl GF_AssertFail
_020263D6:
ldr r0, _020263F0 ; =0x0000010F
mov r1, #0x0
@@ -1586,7 +1586,7 @@ FUN_020263F4: ; 0x020263F4
add r6, r3, #0x0
cmp r4, #0x10
blt _02026406
- bl ErrorHandling
+ bl GF_AssertFail
_02026406:
lsl r2, r4, #0x1
ldr r1, _02026440 ; =0x0000050C
@@ -1682,7 +1682,7 @@ FUN_0202649C: ; 0x0202649C
add r7, r3, #0x0
cmp r4, #0x64
blt _020264AE
- bl ErrorHandling
+ bl GF_AssertFail
_020264AE:
ldr r1, _020264E8 ; =0x0000055C
add r0, r5, r4
@@ -1840,7 +1840,7 @@ FUN_020265B8: ; 0x020265B8
add r5, r0, #0x0
cmp r4, #0xff
blt _020265C6
- bl ErrorHandling
+ bl GF_AssertFail
_020265C6:
ldr r0, _020265DC ; =0x0000020F
mov r2, #0x3
@@ -2059,20 +2059,20 @@ FUN_0202671C: ; 0x0202671C
add r6, r3, #0x0
cmp r4, #0x20
blt _0202672E
- bl ErrorHandling
+ bl GF_AssertFail
_0202672E:
cmp r6, #0x20
blt _02026736
- bl ErrorHandling
+ bl GF_AssertFail
_02026736:
ldr r0, [sp, #0x18]
cmp r0, #0x20
blt _02026740
- bl ErrorHandling
+ bl GF_AssertFail
_02026740:
cmp r5, #0x0
bne _02026748
- bl ErrorHandling
+ bl GF_AssertFail
_02026748:
cmp r4, #0x0
beq _02026774
@@ -2154,7 +2154,7 @@ FUN_020267C4: ; 0x020267C4
add r4, r0, #0x0
cmp r5, #0x20
blt _020267D2
- bl ErrorHandling
+ bl GF_AssertFail
_020267D2:
cmp r5, #0x0
bne _020267DE
@@ -2197,7 +2197,7 @@ FUN_02026810: ; 0x02026810
add r4, r0, #0x0
cmp r5, #0x20
blt _0202681E
- bl ErrorHandling
+ bl GF_AssertFail
_0202681E:
cmp r5, #0x0
bne _02026826
@@ -2226,7 +2226,7 @@ FUN_02026840: ; 0x02026840
add r4, r0, #0x0
cmp r5, #0x20
blt _0202684E
- bl ErrorHandling
+ bl GF_AssertFail
_0202684E:
cmp r5, #0x0
bne _02026856
diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s
index 1cfea136..28a1f682 100644
--- a/arm9/asm/unk_02026CD0.s
+++ b/arm9/asm/unk_02026CD0.s
@@ -72,20 +72,20 @@ FUN_02026D34: ; 0x02026D34
lsl r0, r0, #0x8
cmp r1, r0
blt _02026D5E
- bl ErrorHandling
+ bl GF_AssertFail
_02026D5E:
mov r0, #0x1
ldr r1, [sp, #0x8]
lsl r0, r0, #0x8
cmp r1, r0
blt _02026D6C
- bl ErrorHandling
+ bl GF_AssertFail
_02026D6C:
mov r0, #0x7f
mvn r0, r0
cmp r4, r0
bgt _02026D78
- bl ErrorHandling
+ bl GF_AssertFail
_02026D78:
lsl r0, r4, #0x18
asr r0, r0, #0x18
@@ -138,7 +138,7 @@ FUN_02026DC4: ; 0x02026DC4
add r6, r1, #0x0
cmp r4, #0x3d
blo _02026DD4
- bl ErrorHandling
+ bl GF_AssertFail
_02026DD4:
lsr r2, r4, #0x1f
lsl r1, r4, #0x1d
@@ -174,7 +174,7 @@ FUN_02026E08: ; 0x02026E08
add r5, r0, #0x0
cmp r4, #0x3d
blo _02026E16
- bl ErrorHandling
+ bl GF_AssertFail
_02026E16:
lsr r3, r4, #0x1f
lsl r2, r4, #0x1d
@@ -211,7 +211,7 @@ FUN_02026E48: ; 0x02026E48
add r6, r2, #0x0
cmp r4, #0x2
blo _02026E58
- bl ErrorHandling
+ bl GF_AssertFail
_02026E58:
lsr r2, r6, #0x1f
lsl r1, r6, #0x1b
@@ -269,7 +269,7 @@ FUN_02026EB0: ; 0x02026EB0
add r6, r2, #0x0
cmp r4, #0x12
bls _02026EC0
- bl ErrorHandling
+ bl GF_AssertFail
_02026EC0:
lsr r2, r6, #0x1f
lsl r1, r6, #0x1e
@@ -459,7 +459,7 @@ FUN_02027008: ; 0x02027008
add r5, r0, #0x0
cmp r6, #0xb
blt _02027016
- bl ErrorHandling
+ bl GF_AssertFail
_02027016:
mov r0, #0x74
add r4, r6, #0x0
@@ -479,7 +479,7 @@ _0202702E:
_02027030:
cmp r0, #0x0
bne _02027038
- bl ErrorHandling
+ bl GF_AssertFail
_02027038:
add r0, r5, r4
pop {r4-r6, pc}
@@ -494,7 +494,7 @@ FUN_02027044: ; 0x02027044
add r5, r0, #0x0
cmp r6, #0x5
blt _02027052
- bl ErrorHandling
+ bl GF_AssertFail
_02027052:
mov r0, #0x98
add r4, r6, #0x0
@@ -516,7 +516,7 @@ _0202706E:
_02027070:
cmp r0, #0x0
bne _02027078
- bl ErrorHandling
+ bl GF_AssertFail
_02027078:
ldr r0, _02027080 ; =0x000004FC
add r0, r5, r0
@@ -542,7 +542,7 @@ FUN_02027098: ; 0x02027098
add r5, r0, #0x0
cmp r4, #0xb
blt _020270A6
- bl ErrorHandling
+ bl GF_AssertFail
_020270A6:
mov r0, #0x74
mul r0, r4
@@ -558,7 +558,7 @@ FUN_020270B4: ; 0x020270B4
add r5, r0, #0x0
cmp r4, #0x5
blt _020270C2
- bl ErrorHandling
+ bl GF_AssertFail
_020270C2:
ldr r0, _020270D4 ; =0x000004FC
add r1, r5, r0
@@ -614,7 +614,7 @@ FUN_02027114: ; 0x02027114
add r4, r0, #0x0
cmp r5, #0x64
blo _02027122
- bl ErrorHandling
+ bl GF_AssertFail
_02027122:
cmp r5, #0x3d
bhs _02027132
@@ -625,7 +625,7 @@ _02027122:
pop {r3-r5, pc}
_02027132:
bhs _02027138
- bl ErrorHandling
+ bl GF_AssertFail
_02027138:
sub r5, #0x3d
lsl r0, r5, #0x18
@@ -644,7 +644,7 @@ FUN_0202714C: ; 0x0202714C
add r5, r0, #0x0
cmp r4, #0x12
blo _0202715A
- bl ErrorHandling
+ bl GF_AssertFail
_0202715A:
add r5, #0x28
lsl r1, r4, #0x18
@@ -698,7 +698,7 @@ FUN_020271A4: ; 0x020271A4
add r6, r2, #0x0
cmp r4, #0x64
blo _020271B4
- bl ErrorHandling
+ bl GF_AssertFail
_020271B4:
cmp r4, #0x3d
bhs _020271DA
@@ -733,7 +733,7 @@ _020271DA:
_020271F2:
cmp r4, #0x3d
bhs _020271FA
- bl ErrorHandling
+ bl GF_AssertFail
_020271FA:
sub r4, #0x3d
lsl r0, r4, #0x18
@@ -754,7 +754,7 @@ FUN_02027210: ; 0x02027210
add r6, r2, #0x0
cmp r4, #0x64
blo _02027220
- bl ErrorHandling
+ bl GF_AssertFail
_02027220:
cmp r4, #0x3d
bhs _02027248
@@ -778,7 +778,7 @@ _0202723C:
pop {r4-r6, pc}
_02027248:
bhs _0202724E
- bl ErrorHandling
+ bl GF_AssertFail
_0202724E:
sub r4, #0x3d
lsl r0, r4, #0x18
@@ -798,7 +798,7 @@ FUN_02027264: ; 0x02027264
add r5, r0, #0x0
cmp r4, #0x12
blo _02027272
- bl ErrorHandling
+ bl GF_AssertFail
_02027272:
add r0, r5, #0x0
lsl r1, r4, #0x18
@@ -839,7 +839,7 @@ _020272B2:
_020272B4:
cmp r0, #0x0
bne _020272BC
- bl ErrorHandling
+ bl GF_AssertFail
_020272BC:
ldr r1, [r4, #0x0]
ldr r0, _020272D0 ; =0x00002345
@@ -873,7 +873,7 @@ _020272EA:
_020272EC:
cmp r0, #0x0
bne _020272F4
- bl ErrorHandling
+ bl GF_AssertFail
_020272F4:
ldr r0, _02027308 ; =0x00002345
str r0, [r4, #0x0]
@@ -906,7 +906,7 @@ _02027326:
_02027328:
cmp r0, #0x0
bne _02027330
- bl ErrorHandling
+ bl GF_AssertFail
_02027330:
add r0, r4, #0x0
mov r1, #0x0
@@ -940,7 +940,7 @@ _02027362:
_02027364:
cmp r0, #0x0
bne _0202736C
- bl ErrorHandling
+ bl GF_AssertFail
_0202736C:
add r0, r5, #0x4
add r1, r4, #0x0
@@ -973,7 +973,7 @@ FUN_02027380: ; 0x02027380
str r0, [sp, #0x8]
cmp r6, #0xa
blt _020273B0
- bl ErrorHandling
+ bl GF_AssertFail
_020273B0:
add r1, sp, #0xc
mov r0, #0x4
@@ -981,7 +981,7 @@ _020273B0:
add r0, #0xfc
cmp r1, r0
blt _020273C0
- bl ErrorHandling
+ bl GF_AssertFail
_020273C0:
add r1, sp, #0xc
mov r0, #0x6
@@ -989,14 +989,14 @@ _020273C0:
add r0, #0xfa
cmp r7, r0
blt _020273D0
- bl ErrorHandling
+ bl GF_AssertFail
_020273D0:
mov r1, #0x7f
ldr r0, [sp, #0x8]
mvn r1, r1
cmp r0, r1
bgt _020273DE
- bl ErrorHandling
+ bl GF_AssertFail
_020273DE:
mov r0, #0x1
lsl r0, r6
@@ -1004,7 +1004,7 @@ _020273DE:
str r0, [sp, #0x4]
tst r0, r1
beq _020273EE
- bl ErrorHandling
+ bl GF_AssertFail
_020273EE:
ldr r1, [r5, #0x0]
ldr r0, _02027440 ; =0x00001234
@@ -1021,7 +1021,7 @@ _02027400:
_02027402:
cmp r0, #0x0
bne _0202740A
- bl ErrorHandling
+ bl GF_AssertFail
_0202740A:
ldr r0, [sp, #0x8]
add r1, r5, #0x0
@@ -1072,7 +1072,7 @@ _02027460:
_02027462:
cmp r0, #0x0
bne _0202746A
- bl ErrorHandling
+ bl GF_AssertFail
_0202746A:
add r5, #0x70
strb r4, [r5, #0x0]
@@ -1101,7 +1101,7 @@ _02027490:
_02027492:
cmp r0, #0x0
bne _0202749A
- bl ErrorHandling
+ bl GF_AssertFail
_0202749A:
add r0, r5, #0x0
add r0, #0x40
@@ -1136,7 +1136,7 @@ _020274D0:
_020274D2:
cmp r0, #0x0
bne _020274DA
- bl ErrorHandling
+ bl GF_AssertFail
_020274DA:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -1168,7 +1168,7 @@ _0202750A:
_0202750C:
cmp r0, #0x0
bne _02027514
- bl ErrorHandling
+ bl GF_AssertFail
_02027514:
add r0, r5, #0x4
add r1, r4, #0x0
@@ -1186,7 +1186,7 @@ FUN_02027528: ; 0x02027528
add r5, r0, #0x0
cmp r4, #0xa
blt _02027536
- bl ErrorHandling
+ bl GF_AssertFail
_02027536:
ldr r1, [r5, #0x0]
ldr r0, _0202755C ; =0x00001234
@@ -1203,7 +1203,7 @@ _02027548:
_0202754A:
cmp r0, #0x0
bne _02027552
- bl ErrorHandling
+ bl GF_AssertFail
_02027552:
mov r0, #0x1
ldr r1, [r5, #0x3c]
@@ -1233,7 +1233,7 @@ _0202757A:
_0202757C:
cmp r0, #0x0
bne _02027584
- bl ErrorHandling
+ bl GF_AssertFail
_02027584:
add r0, r4, #0x4
pop {r4, pc}
@@ -1248,14 +1248,14 @@ FUN_02027590: ; 0x02027590
add r5, r0, #0x0
cmp r4, #0xa
blt _0202759E
- bl ErrorHandling
+ bl GF_AssertFail
_0202759E:
mov r0, #0x1
ldr r1, [r5, #0x3c]
lsl r0, r4
tst r0, r1
bne _020275AC
- bl ErrorHandling
+ bl GF_AssertFail
_020275AC:
ldr r1, [r5, #0x0]
ldr r0, _020275D0 ; =0x00001234
@@ -1272,7 +1272,7 @@ _020275BE:
_020275C0:
cmp r0, #0x0
bne _020275C8
- bl ErrorHandling
+ bl GF_AssertFail
_020275C8:
add r5, #0x48
lsl r0, r4, #0x2
@@ -1301,7 +1301,7 @@ _020275EE:
_020275F0:
cmp r0, #0x0
bne _020275F8
- bl ErrorHandling
+ bl GF_AssertFail
_020275F8:
add r0, r4, #0x4
bl FUN_02027C84
@@ -1330,7 +1330,7 @@ _02027620:
_02027622:
cmp r0, #0x0
bne _0202762A
- bl ErrorHandling
+ bl GF_AssertFail
_0202762A:
add r0, r5, #0x4
add r1, r4, #0x0
@@ -1359,7 +1359,7 @@ _02027652:
_02027654:
cmp r0, #0x0
bne _0202765C
- bl ErrorHandling
+ bl GF_AssertFail
_0202765C:
add r0, r4, #0x4
bl FUN_02027C98
@@ -1387,7 +1387,7 @@ _02027682:
_02027684:
cmp r0, #0x0
bne _0202768C
- bl ErrorHandling
+ bl GF_AssertFail
_0202768C:
add r4, #0x70
ldrb r0, [r4, #0x0]
@@ -1424,7 +1424,7 @@ _020276BE:
_020276C0:
cmp r0, #0x0
bne _020276C8
- bl ErrorHandling
+ bl GF_AssertFail
_020276C8:
add r4, #0x71
ldrb r0, [r4, #0x0]
@@ -1452,7 +1452,7 @@ _020276EE:
_020276F0:
cmp r0, #0x0
bne _020276F8
- bl ErrorHandling
+ bl GF_AssertFail
_020276F8:
ldr r1, [r4, #0x0]
ldr r0, _0202770C ; =0x00002345
@@ -1486,7 +1486,7 @@ _02027726:
_02027728:
cmp r0, #0x0
bne _02027730
- bl ErrorHandling
+ bl GF_AssertFail
_02027730:
ldr r0, _0202773C ; =0x00002345
str r0, [r4, #0x0]
@@ -1514,7 +1514,7 @@ _02027756:
_02027758:
cmp r0, #0x0
bne _02027760
- bl ErrorHandling
+ bl GF_AssertFail
_02027760:
add r0, r4, #0x0
mov r1, #0x0
@@ -1548,7 +1548,7 @@ _02027792:
_02027794:
cmp r0, #0x0
bne _0202779C
- bl ErrorHandling
+ bl GF_AssertFail
_0202779C:
add r5, #0x8
add r0, r5, #0x0
@@ -1582,7 +1582,7 @@ FUN_020277B4: ; 0x020277B4
str r0, [sp, #0x8]
cmp r6, #0x14
blt _020277E4
- bl ErrorHandling
+ bl GF_AssertFail
_020277E4:
add r1, sp, #0xc
mov r0, #0x4
@@ -1590,7 +1590,7 @@ _020277E4:
add r0, #0xfc
cmp r1, r0
blt _020277F4
- bl ErrorHandling
+ bl GF_AssertFail
_020277F4:
add r1, sp, #0xc
mov r0, #0x6
@@ -1598,14 +1598,14 @@ _020277F4:
add r0, #0xfa
cmp r7, r0
blt _02027804
- bl ErrorHandling
+ bl GF_AssertFail
_02027804:
mov r1, #0x7f
ldr r0, [sp, #0x8]
mvn r1, r1
cmp r0, r1
bgt _02027812
- bl ErrorHandling
+ bl GF_AssertFail
_02027812:
mov r0, #0x1
lsl r0, r6
@@ -1613,7 +1613,7 @@ _02027812:
str r0, [sp, #0x4]
tst r0, r1
beq _02027822
- bl ErrorHandling
+ bl GF_AssertFail
_02027822:
ldr r1, [r5, #0x0]
ldr r0, _02027874 ; =0x00001234
@@ -1630,7 +1630,7 @@ _02027834:
_02027836:
cmp r0, #0x0
bne _0202783E
- bl ErrorHandling
+ bl GF_AssertFail
_0202783E:
ldr r0, [sp, #0x8]
add r1, r5, #0x0
@@ -1681,7 +1681,7 @@ _02027894:
_02027896:
cmp r0, #0x0
bne _0202789E
- bl ErrorHandling
+ bl GF_AssertFail
_0202789E:
add r5, #0x94
strb r4, [r5, #0x0]
@@ -1710,7 +1710,7 @@ _020278C4:
_020278C6:
cmp r0, #0x0
bne _020278CE
- bl ErrorHandling
+ bl GF_AssertFail
_020278CE:
str r4, [r5, #0x4]
pop {r3-r5, pc}
@@ -1738,7 +1738,7 @@ _020278F4:
_020278F6:
cmp r0, #0x0
bne _020278FE
- bl ErrorHandling
+ bl GF_AssertFail
_020278FE:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -1771,7 +1771,7 @@ _02027930:
_02027932:
cmp r0, #0x0
bne _0202793A
- bl ErrorHandling
+ bl GF_AssertFail
_0202793A:
add r1, sp, #0x4
add r0, r4, #0x0
@@ -1803,18 +1803,18 @@ FUN_02027964: ; 0x02027964
ldr r4, [sp, #0x24]
cmp r6, #0x14
blo _0202797A
- bl ErrorHandling
+ bl GF_AssertFail
_0202797A:
cmp r7, #0x64
blo _02027982
- bl ErrorHandling
+ bl GF_AssertFail
_02027982:
mov r1, #0x1
ldr r0, [sp, #0x4]
lsl r1, r1, #0x8
cmp r0, r1
blt _02027990
- bl ErrorHandling
+ bl GF_AssertFail
_02027990:
add r0, sp, #0x10
ldrb r1, [r0, #0x10]
@@ -1822,13 +1822,13 @@ _02027990:
lsl r0, r0, #0x8
cmp r1, r0
blt _020279A0
- bl ErrorHandling
+ bl GF_AssertFail
_020279A0:
mov r0, #0x7f
mvn r0, r0
cmp r4, r0
bgt _020279AC
- bl ErrorHandling
+ bl GF_AssertFail
_020279AC:
mov r0, #0x1
lsl r0, r6
@@ -1836,7 +1836,7 @@ _020279AC:
str r0, [sp, #0x8]
tst r0, r1
beq _020279BC
- bl ErrorHandling
+ bl GF_AssertFail
_020279BC:
ldr r1, [r5, #0x0]
ldr r0, _02027A0C ; =0x00001234
@@ -1853,7 +1853,7 @@ _020279CE:
_020279D0:
cmp r0, #0x0
bne _020279D8
- bl ErrorHandling
+ bl GF_AssertFail
_020279D8:
mov r0, #0x38
ldrsb r0, [r5, r0]
@@ -1892,7 +1892,7 @@ FUN_02027A14: ; 0x02027A14
add r5, r0, #0x0
cmp r4, #0x14
blt _02027A22
- bl ErrorHandling
+ bl GF_AssertFail
_02027A22:
ldr r1, [r5, #0x0]
ldr r0, _02027A50 ; =0x00001234
@@ -1909,7 +1909,7 @@ _02027A34:
_02027A36:
cmp r0, #0x0
bne _02027A3E
- bl ErrorHandling
+ bl GF_AssertFail
_02027A3E:
mov r0, #0x1
add r1, r0, #0x0
@@ -1945,7 +1945,7 @@ _02027A72:
_02027A74:
cmp r0, #0x0
bne _02027A7C
- bl ErrorHandling
+ bl GF_AssertFail
_02027A7C:
add r5, #0x8
add r0, r5, #0x0
@@ -1976,7 +1976,7 @@ _02027AAA:
_02027AAC:
cmp r0, #0x0
bne _02027AB4
- bl ErrorHandling
+ bl GF_AssertFail
_02027AB4:
add r4, #0x8
add r0, r4, #0x0
@@ -1992,14 +1992,14 @@ FUN_02027AC4: ; 0x02027AC4
add r5, r0, #0x0
cmp r4, #0x14
blt _02027AD2
- bl ErrorHandling
+ bl GF_AssertFail
_02027AD2:
mov r0, #0x1
ldr r1, [r5, #0x40]
lsl r0, r4
tst r0, r1
bne _02027AE0
- bl ErrorHandling
+ bl GF_AssertFail
_02027AE0:
ldr r1, [r5, #0x0]
ldr r0, _02027B04 ; =0x00001234
@@ -2016,7 +2016,7 @@ _02027AF2:
_02027AF4:
cmp r0, #0x0
bne _02027AFC
- bl ErrorHandling
+ bl GF_AssertFail
_02027AFC:
add r5, #0x44
lsl r0, r4, #0x2
@@ -2046,7 +2046,7 @@ _02027B24:
_02027B26:
cmp r0, #0x0
bne _02027B2E
- bl ErrorHandling
+ bl GF_AssertFail
_02027B2E:
add r5, #0x8
add r0, r5, #0x0
@@ -2076,7 +2076,7 @@ _02027B5A:
_02027B5C:
cmp r0, #0x0
bne _02027B64
- bl ErrorHandling
+ bl GF_AssertFail
_02027B64:
add r4, #0x8
add r0, r4, #0x0
@@ -2107,7 +2107,7 @@ _02027B92:
_02027B94:
cmp r0, #0x0
bne _02027B9C
- bl ErrorHandling
+ bl GF_AssertFail
_02027B9C:
mov r1, #0x1
str r1, [sp, #0x0]
@@ -2144,14 +2144,14 @@ FUN_02027BDC: ; 0x02027BDC
add r5, r0, #0x0
cmp r4, #0x14
blt _02027BEA
- bl ErrorHandling
+ bl GF_AssertFail
_02027BEA:
mov r0, #0x1
ldr r1, [r5, #0x40]
lsl r0, r4
tst r0, r1
bne _02027BF8
- bl ErrorHandling
+ bl GF_AssertFail
_02027BF8:
ldr r1, [r5, #0x0]
ldr r0, _02027C20 ; =0x00001234
@@ -2168,7 +2168,7 @@ _02027C0A:
_02027C0C:
cmp r0, #0x0
bne _02027C14
- bl ErrorHandling
+ bl GF_AssertFail
_02027C14:
add r5, #0x44
lsl r0, r4, #0x2
@@ -2198,7 +2198,7 @@ _02027C3E:
_02027C40:
cmp r0, #0x0
bne _02027C48
- bl ErrorHandling
+ bl GF_AssertFail
_02027C48:
add r4, #0x94
ldrb r0, [r4, #0x0]
@@ -2226,7 +2226,7 @@ _02027C6E:
_02027C70:
cmp r0, #0x0
bne _02027C78
- bl ErrorHandling
+ bl GF_AssertFail
_02027C78:
ldr r0, [r4, #0x4]
pop {r4, pc}
diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s
index e1a5729d..23822bb1 100644
--- a/arm9/asm/unk_020281E0.s
+++ b/arm9/asm/unk_020281E0.s
@@ -56,7 +56,7 @@ FUN_0202822C: ; 0x0202822C
add r7, r2, #0x0
cmp r4, #0x20
blt _0202823C
- bl ErrorHandling
+ bl GF_AssertFail
_0202823C:
cmp r7, #0x8
bhi _020282D0
@@ -161,7 +161,7 @@ FUN_020282E8: ; 0x020282E8
add r6, r3, #0x0
cmp r4, #0x20
blt _020282FA
- bl ErrorHandling
+ bl GF_AssertFail
_020282FA:
cmp r7, #0x8
bhi _02028378
@@ -190,13 +190,13 @@ _0202831C:
str r6, [r1, r0]
pop {r3-r7, pc}
_0202832A:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_02028330:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_02028336:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_0202833C:
mov r0, #0x30
@@ -248,7 +248,7 @@ FUN_0202838C: ; 0x0202838C
add r5, r0, #0x0
cmp r4, #0x20
blt _0202839A
- bl ErrorHandling
+ bl GF_AssertFail
_0202839A:
mov r0, #0xc
add r5, #0x40
@@ -263,7 +263,7 @@ FUN_020283A4: ; 0x020283A4
add r5, r0, #0x0
cmp r4, #0x20
blt _020283B2
- bl ErrorHandling
+ bl GF_AssertFail
_020283B2:
mov r0, #0x1d
lsl r0, r0, #0x4
@@ -281,7 +281,7 @@ FUN_020283C0: ; 0x020283C0
add r6, r2, #0x0
cmp r4, #0x20
blt _020283D0
- bl ErrorHandling
+ bl GF_AssertFail
_020283D0:
mov r1, #0x1d
lsl r1, r1, #0x4
@@ -302,7 +302,7 @@ FUN_020283E8: ; 0x020283E8
add r5, r0, #0x0
cmp r4, #0x20
blt _020283F6
- bl ErrorHandling
+ bl GF_AssertFail
_020283F6:
mov r0, #0x7
lsl r0, r0, #0x6
@@ -320,7 +320,7 @@ FUN_02028404: ; 0x02028404
add r6, r2, #0x0
cmp r4, #0x20
blt _02028414
- bl ErrorHandling
+ bl GF_AssertFail
_02028414:
mov r1, #0x7
lsl r1, r1, #0x6
@@ -341,7 +341,7 @@ FUN_0202842C: ; 0x0202842C
add r5, r0, #0x0
cmp r4, #0x20
blt _0202843A
- bl ErrorHandling
+ bl GF_AssertFail
_0202843A:
mov r0, #0xc
add r5, #0x40
@@ -378,7 +378,7 @@ FUN_02028468: ; 0x02028468
str r0, [sp, #0x0]
cmp r5, #0x20
blt _02028478
- bl ErrorHandling
+ bl GF_AssertFail
_02028478:
cmp r5, #0x1f
bge _020284D2
diff --git a/arm9/asm/unk_02028980.s b/arm9/asm/unk_02028980.s
index 8c9178e7..664e39e7 100644
--- a/arm9/asm/unk_02028980.s
+++ b/arm9/asm/unk_02028980.s
@@ -163,10 +163,10 @@ _02028A30:
lsr r0, r0, #0x1d
str r0, [sp, #0x1c]
add r0, sp, #0x0
- bl FUN_02012710
+ bl GF_RTC_GetDayOfYear
add r4, r0, #0x0
add r0, sp, #0x10
- bl FUN_02012710
+ bl GF_RTC_GetDayOfYear
ldr r2, [sp, #0x4]
sub r0, r4, r0
cmp r2, #0xc
diff --git a/arm9/asm/unk_02029AE0.s b/arm9/asm/unk_02029AE0.s
index 9e318412..3e6f8a2e 100644
--- a/arm9/asm/unk_02029AE0.s
+++ b/arm9/asm/unk_02029AE0.s
@@ -39,11 +39,11 @@ FUN_02029B08: ; 0x02029B08
add r4, r2, #0x0
cmp r5, r0
blt _02029B1C
- bl ErrorHandling
+ bl GF_AssertFail
_02029B1C:
cmp r4, #0x40
blt _02029B24
- bl ErrorHandling
+ bl GF_AssertFail
_02029B24:
strb r5, [r6, #0x5]
add r0, r6, #0x0
@@ -75,11 +75,11 @@ FUN_02029B40: ; 0x02029B40
add r4, r2, #0x0
cmp r5, r0
blt _02029B54
- bl ErrorHandling
+ bl GF_AssertFail
_02029B54:
cmp r4, #0x40
blt _02029B5C
- bl ErrorHandling
+ bl GF_AssertFail
_02029B5C:
cmp r5, #0x0
bne _02029B64
@@ -118,17 +118,17 @@ FUN_02029B90: ; 0x02029B90
str r3, [sp, #0x0]
cmp r3, #0x4
blt _02029BA2
- bl ErrorHandling
+ bl GF_AssertFail
_02029BA2:
mov r0, #0x1
lsl r0, r0, #0x8
cmp r5, r0
blt _02029BAE
- bl ErrorHandling
+ bl GF_AssertFail
_02029BAE:
cmp r4, #0x40
blt _02029BB6
- bl ErrorHandling
+ bl GF_AssertFail
_02029BB6:
cmp r5, #0x0
beq _02029BFE
diff --git a/arm9/asm/unk_02029EC4.s b/arm9/asm/unk_02029EC4.s
deleted file mode 100644
index 03893fab..00000000
--- a/arm9/asm/unk_02029EC4.s
+++ /dev/null
@@ -1,149 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02029EC4
-FUN_02029EC4: ; 0x02029EC4
- mov r0, #0xfb
- lsl r0, r0, #0x2
- bx lr
- .balign 4
-
- thumb_func_start FUN_02029ECC
-FUN_02029ECC: ; 0x02029ECC
- push {r4, lr}
- add r4, r0, #0x0
- mov r2, #0xfb
- mov r0, #0x0
- add r1, r4, #0x0
- lsl r2, r2, #0x2
- bl MIi_CpuClear32
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02029EE4
-FUN_02029EE4: ; 0x02029EE4
- push {r4, lr}
- mov r1, #0xfb
- lsl r1, r1, #0x2
- bl AllocFromHeap
- add r4, r0, #0x0
- bl FUN_02029ECC
- add r0, r4, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02029EF8
-FUN_02029EF8: ; 0x02029EF8
- ldr r3, _02029F00 ; =SavArray_get
- mov r1, #0x16
- bx r3
- nop
-_02029F00: .word SavArray_get
-
- thumb_func_start FUN_02029F04
-FUN_02029F04: ; 0x02029F04
- ldr r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_02029F08
-FUN_02029F08: ; 0x02029F08
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02029F10
-FUN_02029F10: ; 0x02029F10
- add r0, r0, #0x4
- bx lr
-
- thumb_func_start FUN_02029F14
-FUN_02029F14: ; 0x02029F14
- push {r4-r7}
- mov r5, #0x0
- mov r2, #0xfa
- add r4, r5, #0x0
- mov r6, #0xf
- lsl r2, r2, #0x2
-_02029F20:
- ldrsb r7, [r1, r4]
- add r3, r0, r5
- and r7, r6
- lsl r7, r7, #0x18
- lsr r7, r7, #0x18
- sub r7, #0x8
- lsl r7, r7, #0x18
- asr r7, r7, #0x14
- strb r7, [r0, r5]
- ldrsb r7, [r1, r4]
- add r4, r4, #0x1
- add r5, r5, #0x2
- lsl r7, r7, #0x14
- lsr r7, r7, #0x18
- sub r7, #0x8
- lsl r7, r7, #0x18
- asr r7, r7, #0x14
- strb r7, [r3, #0x1]
- cmp r4, r2
- blt _02029F20
- pop {r4-r7}
- bx lr
-
- thumb_func_start FUN_02029F4C
-FUN_02029F4C: ; 0x02029F4C
- push {r4-r7}
- add r3, r0, #0x0
- add r2, r1, #0x0
- mov r0, #0x1
- mov r1, #0x0
- str r0, [r3, #0x0]
- add r0, r1, #0x0
-_02029F5A:
- ldrsb r4, [r2, r0]
- add r6, r3, r1
- add r7, r2, r0
- asr r5, r4, #0x3
- lsr r5, r5, #0x1c
- add r5, r4, r5
- lsl r4, r5, #0x14
- asr r4, r4, #0x18
- add r4, #0x8
- strb r4, [r6, #0x4]
- mov r4, #0x4
- ldrsb r5, [r6, r4]
- mov r4, #0x1
- ldrsb r4, [r7, r4]
- add r0, r0, #0x2
- add r1, r1, #0x1
- asr r7, r4, #0x3
- lsr r7, r7, #0x1c
- add r7, r4, r7
- lsl r4, r7, #0x14
- asr r4, r4, #0x18
- add r4, #0x8
- lsl r4, r4, #0x18
- lsr r4, r4, #0x14
- orr r4, r5
- strb r4, [r6, #0x4]
- mov r4, #0x7d
- lsl r4, r4, #0x4
- cmp r0, r4
- blt _02029F5A
- pop {r4-r7}
- bx lr
- .balign 4
-
- thumb_func_start FUN_02029F9C
-FUN_02029F9C: ; 0x02029F9C
- add r2, r0, #0x0
- add r0, r1, #0x0
- add r1, r2, #0x0
- mov r2, #0xfb
- ldr r3, _02029FAC ; =MIi_CpuCopyFast
- lsl r2, r2, #0x2
- bx r3
- nop
-_02029FAC: .word MIi_CpuCopyFast
diff --git a/arm9/asm/unk_02029FB0.s b/arm9/asm/unk_02029FB0.s
index ac457105..c98b57b7 100644
--- a/arm9/asm/unk_02029FB0.s
+++ b/arm9/asm/unk_02029FB0.s
@@ -70,7 +70,7 @@ _02029FE0:
ldrh r0, [r0, #0x0]
pop {r3, pc}
_02029FF0:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
@@ -95,7 +95,7 @@ _0202A008:
strh r2, [r0, #0x0]
b _0202A01E
_0202A01A:
- bl ErrorHandling
+ bl GF_AssertFail
_0202A01E:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -129,7 +129,7 @@ _0202A04E:
ldr r0, _0202A06C ; =0x0000270F
pop {r3, pc}
_0202A052:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
nop
@@ -282,7 +282,7 @@ FUN_0202A170: ; 0x0202A170
add r5, r0, #0x0
cmp r4, #0x26
blt _0202A17E
- bl ErrorHandling
+ bl GF_AssertFail
_0202A17E:
add r0, r5, #0x0
mov r1, #0x0
diff --git a/arm9/asm/unk_0202A924.s b/arm9/asm/unk_0202A924.s
index d1dffcaf..f8784153 100644
--- a/arm9/asm/unk_0202A924.s
+++ b/arm9/asm/unk_0202A924.s
@@ -77,7 +77,7 @@ _0202A9A0:
ldr r0, [r0, #0x4]
pop {r3, pc}
_0202A9A4:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
@@ -192,7 +192,7 @@ FUN_0202AA40: ; 0x0202AA40
add r5, r0, #0x0
cmp r4, #0x3
blo _0202AA4E
- bl ErrorHandling
+ bl GF_AssertFail
_0202AA4E:
mov r0, #0x43
add r1, r5, r4
@@ -208,7 +208,7 @@ FUN_0202AA58: ; 0x0202AA58
add r6, r2, #0x0
cmp r4, #0x3
blo _0202AA68
- bl ErrorHandling
+ bl GF_AssertFail
_0202AA68:
mov r0, #0x43
add r1, r5, r4
@@ -224,7 +224,7 @@ FUN_0202AA74: ; 0x0202AA74
add r5, r0, #0x0
cmp r4, #0x3
blo _0202AA82
- bl ErrorHandling
+ bl GF_AssertFail
_0202AA82:
mov r0, #0x14
mul r0, r4
@@ -253,7 +253,7 @@ FUN_0202AAA0: ; 0x0202AAA0
add r5, r0, #0x0
cmp r4, #0x3
blo _0202AAAE
- bl ErrorHandling
+ bl GF_AssertFail
_0202AAAE:
mov r0, #0x14
add r5, #0xd0
@@ -391,7 +391,7 @@ FUN_0202AB68: ; 0x0202AB68
add r5, r0, #0x0
cmp r4, #0x2
bls _0202AB76
- bl ErrorHandling
+ bl GF_AssertFail
_0202AB76:
ldr r0, _0202AB7C ; =0x00000112
strb r4, [r5, r0]
@@ -427,7 +427,7 @@ FUN_0202ABA0: ; 0x0202ABA0
add r4, r0, #0x0
cmp r5, #0x10
blo _0202ABB2
- bl ErrorHandling
+ bl GF_AssertFail
_0202ABB2:
ldrh r0, [r4, #0xc]
strh r0, [r4, #0xe]
diff --git a/arm9/asm/unk_0202AC20.s b/arm9/asm/unk_0202AC20.s
index e200b338..843845eb 100644
--- a/arm9/asm/unk_0202AC20.s
+++ b/arm9/asm/unk_0202AC20.s
@@ -28,7 +28,7 @@ FUN_0202AC2C: ; 0x0202AC2C
add r5, r0, #0x0
cmp r4, #0x8
blt _0202AC3A
- bl ErrorHandling
+ bl GF_AssertFail
_0202AC3A:
mov r0, #0x1
lsl r0, r0, #0x8
@@ -59,7 +59,7 @@ FUN_0202AC64: ; 0x0202AC64
add r5, r0, #0x0
cmp r4, #0x3
blt _0202AC72
- bl ErrorHandling
+ bl GF_AssertFail
_0202AC72:
lsl r0, r4, #0x2
add r1, r5, r0
@@ -220,7 +220,7 @@ FUN_0202AD94: ; 0x0202AD94
sub r0, r4, #0x1
cmp r0, #0x8
blt _0202ADA4
- bl ErrorHandling
+ bl GF_AssertFail
_0202ADA4:
sub r4, r4, #0x1
lsl r0, r4, #0x2
@@ -248,7 +248,7 @@ FUN_0202ADC8: ; 0x0202ADC8
add r5, r0, #0x0
cmp r4, #0x3
blt _0202ADD6
- bl ErrorHandling
+ bl GF_AssertFail
_0202ADD6:
lsl r0, r4, #0x2
add r1, r5, r0
@@ -308,7 +308,7 @@ FUN_0202AE28: ; 0x0202AE28
add r4, r0, #0x0
cmp r5, #0x8
blt _0202AE36
- bl ErrorHandling
+ bl GF_AssertFail
_0202AE36:
lsl r0, r5, #0x2
add r1, r4, r0
@@ -330,7 +330,7 @@ FUN_0202AE4C: ; 0x0202AE4C
add r4, r0, #0x0
cmp r5, #0x3
blt _0202AE5A
- bl ErrorHandling
+ bl GF_AssertFail
_0202AE5A:
lsl r0, r5, #0x2
add r1, r4, r0
@@ -434,7 +434,7 @@ FUN_0202AEF4: ; 0x0202AEF4
lsl r0, r0, #0xa
cmp r4, r0
blt _0202AF06
- bl ErrorHandling
+ bl GF_AssertFail
_0202AF06:
mov r0, #0x1
mov r1, #0x7
@@ -462,7 +462,7 @@ FUN_0202AF24: ; 0x0202AF24
lsl r0, r0, #0xa
cmp r4, r0
blt _0202AF36
- bl ErrorHandling
+ bl GF_AssertFail
_0202AF36:
asr r0, r4, #0x2
lsr r0, r0, #0x1d
@@ -557,7 +557,7 @@ _0202AFCA:
sub r0, r4, #0x1
cmp r0, #0x8
blt _0202AFD4
- bl ErrorHandling
+ bl GF_AssertFail
_0202AFD4:
ldr r0, _0202AFF8 ; =UNK_021C59D4
sub r1, r4, #0x1
diff --git a/arm9/asm/unk_0202B374.s b/arm9/asm/unk_0202B374.s
index 67c01b0a..2becea26 100644
--- a/arm9/asm/unk_0202B374.s
+++ b/arm9/asm/unk_0202B374.s
@@ -112,7 +112,7 @@ _0202B422:
add r3, r3, #0x1
cmp r3, #0x4
blt _0202B418
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4
@@ -324,7 +324,7 @@ _0202B574:
add r4, #0xcc
b _0202B57E
_0202B57A:
- bl ErrorHandling
+ bl GF_AssertFail
_0202B57E:
add r0, r4, #0x0
pop {r4, pc}
@@ -362,7 +362,7 @@ _0202B5B0:
add r4, r0, r1
b _0202B5BA
_0202B5B6:
- bl ErrorHandling
+ bl GF_AssertFail
_0202B5BA:
add r0, r4, #0x0
pop {r4, pc}
@@ -672,7 +672,7 @@ FUN_0202B7C8: ; 0x0202B7C8
bl FUN_0202B820
cmp r0, #0x1
beq _0202B7DE
- bl ErrorHandling
+ bl GF_AssertFail
_0202B7DE:
add r0, r5, #0x0
add r1, r6, #0x0
@@ -695,7 +695,7 @@ FUN_0202B7F4: ; 0x0202B7F4
bl FUN_0202B820
cmp r0, #0x0
beq _0202B80A
- bl ErrorHandling
+ bl GF_AssertFail
_0202B80A:
add r0, r5, #0x0
add r1, r6, #0x0
diff --git a/arm9/asm/unk_0202B870.s b/arm9/asm/unk_0202B870.s
index ad45d567..55229d73 100644
--- a/arm9/asm/unk_0202B870.s
+++ b/arm9/asm/unk_0202B870.s
@@ -109,7 +109,7 @@ FUN_0202B8F0: ; 0x0202B8F0
cmp r2, #0x6
blo _0202B8FE
blo _0202B930
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
_0202B8FE:
mov r3, #0x90
diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s
index 37bc1c4e..52f6b9ad 100644
--- a/arm9/asm/unk_0202BE98.s
+++ b/arm9/asm/unk_0202BE98.s
@@ -30,7 +30,7 @@ _0202BEB4:
bl GetMonData
cmp r0, #0x0
beq _0202BECC
- bl ErrorHandling
+ bl GF_AssertFail
_0202BECC:
add r4, r4, #0x1
add r5, #0xec
@@ -60,7 +60,7 @@ _0202BEF0:
bl GetMonData
cmp r0, #0x0
beq _0202BF08
- bl ErrorHandling
+ bl GF_AssertFail
_0202BF08:
add r4, r4, #0x1
add r5, #0xec
@@ -178,7 +178,7 @@ FUN_0202BFD8: ; 0x0202BFD8
add r4, r2, #0x0
cmp r5, #0x6
blt _0202BFE8
- bl ErrorHandling
+ bl GF_AssertFail
_0202BFE8:
mov r0, #0xec
mul r0, r5
diff --git a/arm9/asm/unk_0202D394.s b/arm9/asm/unk_0202D394.s
index 1a6f2b87..ce635a79 100644
--- a/arm9/asm/unk_0202D394.s
+++ b/arm9/asm/unk_0202D394.s
@@ -38,7 +38,7 @@ _0202D3BC:
_0202D3CC:
cmp r7, #0x0
bne _0202D3D4
- bl ErrorHandling
+ bl GF_AssertFail
_0202D3D4:
add r0, r5, #0x0
add r1, r4, #0x0
diff --git a/arm9/asm/unk_0202D4C4.s b/arm9/asm/unk_0202D4C4.s
index deb9a6ea..a809e579 100644
--- a/arm9/asm/unk_0202D4C4.s
+++ b/arm9/asm/unk_0202D4C4.s
@@ -276,7 +276,7 @@ _0202D69E:
ldr r0, _0202D710 ; =0x0000FFFE
cmp r7, r0
blt _0202D6A8
- bl ErrorHandling
+ bl GF_AssertFail
_0202D6A8:
ldr r0, [sp, #0x0]
bl FUN_0202D9A0
diff --git a/arm9/asm/unk_0202D858.s b/arm9/asm/unk_0202D858.s
deleted file mode 100644
index e678326d..00000000
--- a/arm9/asm/unk_0202D858.s
+++ /dev/null
@@ -1,90 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020EEB04
-UNK_020EEB04: ; 0x020EEB04
- .byte 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x04, 0x03, 0x04, 0x07, 0x03, 0x07, 0x04, 0x01, 0x04
- .byte 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00
-
- .global UNK_020EEB1E
-UNK_020EEB1E: ; 0x020EEB1E
- .byte 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00
-
- .text
-
- thumb_func_start FUN_0202D858
-FUN_0202D858: ; 0x0202D858
- push {r3-r4, lr}
- sub sp, #0x1c
- ldr r3, _0202D880 ; =UNK_020EEB04
- add r4, r0, #0x0
- add r2, sp, #0x0
- mov r1, #0x1a
-_0202D864:
- ldrb r0, [r3, #0x0]
- add r3, r3, #0x1
- strb r0, [r2, #0x0]
- add r2, r2, #0x1
- sub r1, r1, #0x1
- bne _0202D864
- cmp r4, #0x1a
- blo _0202D878
- bl ErrorHandling
-_0202D878:
- add r0, sp, #0x0
- ldrb r0, [r0, r4]
- add sp, #0x1c
- pop {r3-r4, pc}
- .balign 4
-_0202D880: .word UNK_020EEB04
-
- thumb_func_start FUN_0202D884
-FUN_0202D884: ; 0x0202D884
- push {r3-r4, lr}
- sub sp, #0x1c
- ldr r3, _0202D8AC ; =UNK_020EEB1E
- add r4, r0, #0x0
- add r2, sp, #0x0
- mov r1, #0x1a
-_0202D890:
- ldrb r0, [r3, #0x0]
- add r3, r3, #0x1
- strb r0, [r2, #0x0]
- add r2, r2, #0x1
- sub r1, r1, #0x1
- bne _0202D890
- cmp r4, #0x1a
- blo _0202D8A4
- bl ErrorHandling
-_0202D8A4:
- add r0, sp, #0x0
- ldrb r0, [r0, r4]
- add sp, #0x1c
- pop {r3-r4, pc}
- .balign 4
-_0202D8AC: .word UNK_020EEB1E
-
- thumb_func_start FUN_0202D8B0
-FUN_0202D8B0: ; 0x0202D8B0
- cmp r0, #0xd
- bgt _0202D8C4
- cmp r0, #0x7
- blt _0202D8CC
- beq _0202D8C8
- cmp r0, #0x9
- beq _0202D8C8
- cmp r0, #0xd
- beq _0202D8C8
- b _0202D8CC
-_0202D8C4:
- cmp r0, #0x12
- bne _0202D8CC
-_0202D8C8:
- mov r0, #0x1
- bx lr
-_0202D8CC:
- mov r0, #0x0
- bx lr
diff --git a/arm9/asm/unk_0202D8D0.s b/arm9/asm/unk_0202D8D0.s
index d457ca4a..13ed76b8 100644
--- a/arm9/asm/unk_0202D8D0.s
+++ b/arm9/asm/unk_0202D8D0.s
@@ -110,7 +110,7 @@ _0202D94C:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0202D958
- bl ErrorHandling
+ bl GF_AssertFail
_0202D958:
ldr r0, _0202D99C ; =UNK_021C59E0
ldr r1, [r0, #0x0]
@@ -169,7 +169,7 @@ _0202D9B6:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0202D9C2
- bl ErrorHandling
+ bl GF_AssertFail
_0202D9C2:
ldr r0, _0202DA00 ; =UNK_021C59E0
ldr r1, [r0, #0x0]
diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s
index 22ffb2e4..490da58f 100644
--- a/arm9/asm/unk_0202DB14.s
+++ b/arm9/asm/unk_0202DB14.s
@@ -942,7 +942,7 @@ _0202E1EE:
ldr r0, [sp, #0x8]
cmp r0, #0x0
bge _0202E1F8
- bl ErrorHandling
+ bl GF_AssertFail
_0202E1F8:
ldr r0, _0202E254 ; =UNK_021C59E4
mov r2, #0xda
diff --git a/arm9/asm/unk_0202E29C.s b/arm9/asm/unk_0202E29C.s
deleted file mode 100644
index 4bb83bc8..00000000
--- a/arm9/asm/unk_0202E29C.s
+++ /dev/null
@@ -1,1970 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020EEC40
-UNK_020EEC40: ; 0x020EEC40
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
-
- .section .bss
-
- .global UNK_021C59E8
-UNK_021C59E8: ; 0x021C59E8
- .space 0xc
-
- .text
-
- thumb_func_start FUN_0202E29C
-FUN_0202E29C: ; 0x0202E29C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0202E334 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- bne _0202E332
- mov r1, #0xdb
- mov r0, #0xf
- lsl r1, r1, #0x4
- bl AllocFromHeap
- ldr r1, _0202E334 ; =UNK_021C59E8
- mov r2, #0xdb
- str r0, [r1, #0x8]
- mov r1, #0x0
- lsl r2, r2, #0x4
- bl MI_CpuFill8
- bl FUN_0202CEEC
- add r1, r0, #0x0
- mov r0, #0xf
- bl AllocFromHeap
- ldr r1, _0202E334 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- ldr r1, _0202E338 ; =0x00000CA4
- str r0, [r2, r1]
- bl FUN_0202CEEC
- add r2, r0, #0x0
- ldr r0, _0202E334 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E338 ; =0x00000CA4
- ldr r0, [r1, r0]
- mov r1, #0x0
- bl MI_CpuFill8
- bl FUN_02023AC4
- add r1, r0, #0x0
- mov r0, #0xf
- bl AllocFromHeap
- ldr r1, _0202E334 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- ldr r1, _0202E33C ; =0x00000CBC
- str r0, [r2, r1]
- bl FUN_02023AC4
- add r2, r0, #0x0
- ldr r0, _0202E334 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E33C ; =0x00000CBC
- ldr r0, [r1, r0]
- mov r1, #0x0
- bl MI_CpuFill8
- ldr r2, _0202E334 ; =UNK_021C59E8
- mov r1, #0x33
- ldr r3, _0202E340 ; =0x00000333
- ldr r0, [r2, #0x8]
- lsl r1, r1, #0x6
- str r3, [r0, r1]
- add r0, r1, #0x0
- ldr r3, [r2, #0x8]
- sub r0, #0x8
- str r4, [r3, r0]
- ldr r0, [r2, #0x8]
- sub r1, #0x18
- add r0, r0, r1
- bl MailMsg_init
- bl FUN_0202E500
-_0202E332:
- pop {r4, pc}
- .balign 4
-_0202E334: .word UNK_021C59E8
-_0202E338: .word 0x00000CA4
-_0202E33C: .word 0x00000CBC
-_0202E340: .word 0x00000333
-
- thumb_func_start FUN_0202E344
-FUN_0202E344: ; 0x0202E344
- ldr r0, _0202E354 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202E350
- mov r0, #0x1
- bx lr
-_0202E350:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202E354: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E358
-FUN_0202E358: ; 0x0202E358
- push {r4-r5}
- mov r5, #0x0
- cmp r2, #0x0
- ble _0202E378
-_0202E360:
- ldrb r4, [r0, #0x0]
- ldrb r3, [r1, #0x0]
- cmp r4, r3
- beq _0202E36E
- mov r0, #0x0
- pop {r4-r5}
- bx lr
-_0202E36E:
- add r5, r5, #0x1
- add r0, r0, #0x1
- add r1, r1, #0x1
- cmp r5, r2
- blt _0202E360
-_0202E378:
- mov r0, #0x1
- pop {r4-r5}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202E380
-FUN_0202E380: ; 0x0202E380
- push {r3-r7, lr}
- add r7, r0, #0x0
- bl FUN_02033534
- add r5, r0, #0x0
- bl FUN_0203354C
- add r4, r7, #0x0
- add r6, r0, #0x0
- add r4, #0x50
- cmp r5, #0xe
- beq _0202E3C2
- ldrb r0, [r4, #0x4]
- bl FUN_0202D8B0
- cmp r0, #0x0
- beq _0202E3AC
- add r0, r5, #0x0
- bl FUN_0202D8B0
- cmp r0, #0x0
- bne _0202E3C2
-_0202E3AC:
- add r0, r4, #0x0
- add r0, #0x54
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0202E3BC
- ldrb r0, [r4, #0x4]
- cmp r0, #0xa
- beq _0202E460
-_0202E3BC:
- ldrb r0, [r4, #0x4]
- cmp r0, r5
- bne _0202E460
-_0202E3C2:
- cmp r5, #0xe
- beq _0202E3CC
- ldrb r0, [r4, #0x5]
- cmp r0, r6
- bne _0202E460
-_0202E3CC:
- mov r6, #0x0
- add r4, r6, #0x0
- add r5, r6, #0x0
-_0202E3D2:
- ldr r0, _0202E464 ; =UNK_021C59E8
- ldr r1, _0202E468 ; =0x00000C84
- ldr r0, [r0, #0x8]
- add r2, r0, r4
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E412
- add r0, #0x58
- add r0, r0, r5
- add r1, r7, #0x4
- mov r2, #0x6
- bl FUN_0202E358
- cmp r0, #0x0
- beq _0202E412
- ldr r2, _0202E464 ; =UNK_021C59E8
- lsl r1, r6, #0x1
- ldr r3, [r2, #0x8]
- mov r0, #0x96
- add r3, r3, r1
- ldr r1, _0202E468 ; =0x00000C84
- strh r0, [r3, r1]
- ldr r3, [r2, #0x8]
- mov r2, #0xc0
- add r1, r6, #0x0
- add r3, #0x54
- mul r1, r2
- add r0, r7, #0x0
- add r1, r3, r1
- bl MI_CpuCopy8
- pop {r3-r7, pc}
-_0202E412:
- add r6, r6, #0x1
- add r4, r4, #0x2
- add r5, #0xc0
- cmp r6, #0x10
- blt _0202E3D2
- ldr r0, _0202E464 ; =UNK_021C59E8
- ldr r2, _0202E468 ; =0x00000C84
- ldr r0, [r0, #0x8]
- mov r1, #0x0
- add r4, r0, #0x0
-_0202E426:
- ldrh r3, [r4, r2]
- cmp r3, #0x0
- beq _0202E434
- add r1, r1, #0x1
- add r4, r4, #0x2
- cmp r1, #0x10
- blt _0202E426
-_0202E434:
- cmp r1, #0x10
- bge _0202E460
- lsl r2, r1, #0x1
- add r2, r0, r2
- ldr r0, _0202E468 ; =0x00000C84
- mov r3, #0x96
- strh r3, [r2, r0]
- ldr r2, _0202E464 ; =UNK_021C59E8
- add r3, r1, #0x0
- ldr r4, [r2, #0x8]
- mov r2, #0xc0
- add r4, #0x54
- mul r3, r2
- add r0, r7, #0x0
- add r1, r4, r3
- bl MI_CpuCopy8
- ldr r0, _0202E464 ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E46C ; =0x00000CB4
- strb r2, [r1, r0]
-_0202E460:
- pop {r3-r7, pc}
- nop
-_0202E464: .word UNK_021C59E8
-_0202E468: .word 0x00000C84
-_0202E46C: .word 0x00000CB4
-
- thumb_func_start FUN_0202E470
-FUN_0202E470: ; 0x0202E470
- push {r3, lr}
- cmp r1, #0x0
- beq _0202E47A
- bl OS_Terminate
-_0202E47A:
- ldr r0, _0202E484 ; =UNK_021C59E8
- mov r1, #0x2
- str r1, [r0, #0x4]
- pop {r3, pc}
- nop
-_0202E484: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E488
-FUN_0202E488: ; 0x0202E488
- ldr r0, _0202E494 ; =UNK_021C59E8
- mov r1, #0x0
- str r1, [r0, #0x4]
- ldr r3, _0202E498 ; =FUN_02016454
- mov r0, #0x4
- bx r3
- .balign 4
-_0202E494: .word UNK_021C59E8
-_0202E498: .word FUN_02016454
-
- thumb_func_start FUN_0202E49C
-FUN_0202E49C: ; 0x0202E49C
- push {r3, lr}
- mov r0, #0x4
- bl FUN_02016444
- ldr r0, _0202E4C0 ; =UNK_021C59E8
- mov r1, #0x1
- str r1, [r0, #0x4]
- ldr r1, _0202E4C4 ; =FUN_0202E470
- mov r0, #0x8
- mov r2, #0x0
- bl FUN_02090DB8
- cmp r0, #0x1
- beq _0202E4BC
- bl OS_Terminate
-_0202E4BC:
- pop {r3, pc}
- nop
-_0202E4C0: .word UNK_021C59E8
-_0202E4C4: .word FUN_0202E470
-
- thumb_func_start FUN_0202E4C8
-FUN_0202E4C8: ; 0x0202E4C8
- ldr r0, _0202E4D8 ; =UNK_021C59E8
- ldr r0, [r0, #0x4]
- cmp r0, #0x2
- bne _0202E4D4
- mov r0, #0x1
- bx lr
-_0202E4D4:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202E4D8: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E4DC
-FUN_0202E4DC: ; 0x0202E4DC
- ldr r0, _0202E4EC ; =UNK_021C59E8
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _0202E4E8
- mov r0, #0x1
- bx lr
-_0202E4E8:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202E4EC: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E4F0
-FUN_0202E4F0: ; 0x0202E4F0
- ldr r3, _0202E4F8 ; =FUN_02090CC8
- ldr r0, _0202E4FC ; =FUN_0202E488
- mov r1, #0x0
- bx r3
- .balign 4
-_0202E4F8: .word FUN_02090CC8
-_0202E4FC: .word FUN_0202E488
-
- thumb_func_start FUN_0202E500
-FUN_0202E500: ; 0x0202E500
- push {r3, lr}
- ldr r1, _0202E534 ; =UNK_021C59E8
- mov r0, #0xcb
- ldr r2, [r1, #0x8]
- mov r3, #0x0
- lsl r0, r0, #0x4
- str r3, [r2, r0]
- ldr r1, [r1, #0x8]
- sub r0, #0xc
- ldr r2, [r1, r0]
- mov r0, #0x1f
- add r1, r2, #0x0
- and r1, r0
- mov r0, #0x20
- sub r0, r0, r1
- add r0, r2, r0
- bl FUN_0202CE64
- ldr r0, _0202E534 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- mov r0, #0x33
- lsl r0, r0, #0x6
- ldr r0, [r1, r0]
- bl FUN_0202CB70
- pop {r3, pc}
- .balign 4
-_0202E534: .word UNK_021C59E8
-
- thumb_func_start FUN_0202E538
-FUN_0202E538: ; 0x0202E538
- push {r3-r5, lr}
- mov r4, #0x0
- ldr r2, _0202E564 ; =UNK_021C59E8
- ldr r0, _0202E568 ; =0x00000C84
- add r5, r4, #0x0
- add r1, r4, #0x0
-_0202E544:
- ldr r3, [r2, #0x8]
- add r4, r4, #0x1
- add r3, r3, r5
- add r5, r5, #0x2
- strh r1, [r3, r0]
- cmp r4, #0x10
- blt _0202E544
- ldr r0, _0202E564 ; =UNK_021C59E8
- mov r2, #0x3
- ldr r0, [r0, #0x8]
- lsl r2, r2, #0xa
- add r0, #0x54
- bl MI_CpuFill8
- pop {r3-r5, pc}
- nop
-_0202E564: .word UNK_021C59E8
-_0202E568: .word 0x00000C84
-
- thumb_func_start FUN_0202E56C
-FUN_0202E56C: ; 0x0202E56C
- push {r3-r4}
- ldr r1, _0202E58C ; =UNK_021C59E8
- lsl r0, r0, #0x18
- ldr r2, [r1, #0x8]
- ldr r4, _0202E590 ; =0x00000DAD
- lsr r0, r0, #0x18
- ldrb r1, [r2, r4]
- mov r3, #0x8
- lsl r0, r0, #0x1f
- bic r1, r3
- lsr r0, r0, #0x1c
- orr r0, r1
- strb r0, [r2, r4]
- pop {r3-r4}
- bx lr
- nop
-_0202E58C: .word UNK_021C59E8
-_0202E590: .word 0x00000DAD
-
- thumb_func_start FUN_0202E594
-FUN_0202E594: ; 0x0202E594
- push {r4-r5}
- ldr r1, _0202E5F0 ; =UNK_021C59E8
- ldr r0, _0202E5F4 ; =0x00000CB4
- ldr r3, [r1, #0x8]
- mov r2, #0x0
- strb r2, [r3, r0]
- add r3, r0, #0x0
- ldr r5, [r1, #0x8]
- add r3, #0xf9
- ldrb r4, [r5, r3]
- mov r3, #0x1
- bic r4, r3
- add r3, r0, #0x0
- add r3, #0xf9
- strb r4, [r5, r3]
- add r3, r0, #0x0
- ldr r5, [r1, #0x8]
- add r3, #0xf9
- ldrb r4, [r5, r3]
- mov r3, #0x4
- bic r4, r3
- add r3, r0, #0x0
- add r3, #0xf9
- strb r4, [r5, r3]
- add r3, r0, #0x0
- ldr r4, [r1, #0x8]
- add r3, #0xf6
- strb r2, [r4, r3]
- add r3, r0, #0x0
- ldr r5, [r1, #0x8]
- add r3, #0xf9
- ldrb r4, [r5, r3]
- mov r3, #0x10
- bic r4, r3
- add r3, r0, #0x0
- add r3, #0xf9
- strb r4, [r5, r3]
- add r3, r0, #0x0
- ldr r4, [r1, #0x8]
- add r3, #0xf8
- strb r2, [r4, r3]
- ldr r1, [r1, #0x8]
- add r0, #0xf7
- strb r2, [r1, r0]
- pop {r4-r5}
- bx lr
- .balign 4
-_0202E5F0: .word UNK_021C59E8
-_0202E5F4: .word 0x00000CB4
-
- thumb_func_start FUN_0202E5F8
-FUN_0202E5F8: ; 0x0202E5F8
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_0202E594
- add r0, r5, #0x0
- bl FUN_0202E56C
- bl FUN_0202D2F4
- ldr r0, _0202E65C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E660 ; =0x00000DAB
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- bne _0202E62A
- ldr r0, _0202E664 ; =FUN_020303BC
- mov r1, #0xe
- bl FUN_0202D0A0
- ldr r0, _0202E65C ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E660 ; =0x00000DAB
- strb r2, [r1, r0]
-_0202E62A:
- ldr r0, _0202E65C ; =UNK_021C59E8
- ldr r3, _0202E668 ; =0x00000DAD
- ldr r1, [r0, #0x8]
- mov r2, #0x20
- ldrb r0, [r1, r3]
- bic r0, r2
- lsl r2, r4, #0x18
- lsr r2, r2, #0x18
- lsl r2, r2, #0x1f
- lsr r2, r2, #0x1a
- orr r0, r2
- strb r0, [r1, r3]
- bl FUN_0202CBD4
- cmp r0, #0x1
- bne _0202E656
- bl FUN_0202CBFC
- cmp r0, #0x0
- beq _0202E656
- mov r0, #0x1
- pop {r3-r5, pc}
-_0202E656:
- mov r0, #0x0
- pop {r3-r5, pc}
- nop
-_0202E65C: .word UNK_021C59E8
-_0202E660: .word 0x00000DAB
-_0202E664: .word FUN_020303BC
-_0202E668: .word 0x00000DAD
-
- thumb_func_start FUN_0202E66C
-FUN_0202E66C: ; 0x0202E66C
- push {r4, lr}
- sub sp, #0x8
- add r4, r1, #0x0
- bl FUN_0202E594
- cmp r4, #0x0
- beq _0202E67E
- bl FUN_0202E538
-_0202E67E:
- ldr r0, _0202E6DC ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E6E0 ; =0x00000DAB
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- bne _0202E69C
- ldr r0, _0202E6E4 ; =FUN_02030238
- mov r1, #0xe
- bl FUN_0202D0A0
- ldr r0, _0202E6DC ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E6E0 ; =0x00000DAB
- strb r2, [r1, r0]
-_0202E69C:
- bl FUN_0202CBD4
- cmp r0, #0x1
- bne _0202E6D4
- ldr r2, _0202E6E8 ; =UNK_020EEC40
- add r0, sp, #0x0
- ldrb r3, [r2, #0x0]
- add r1, sp, #0x0
- strb r3, [r0, #0x0]
- ldrb r3, [r2, #0x1]
- strb r3, [r0, #0x1]
- ldrb r3, [r2, #0x2]
- strb r3, [r0, #0x2]
- ldrb r3, [r2, #0x3]
- strb r3, [r0, #0x3]
- ldrb r3, [r2, #0x4]
- ldrb r2, [r2, #0x5]
- strb r3, [r0, #0x4]
- strb r2, [r0, #0x5]
- ldr r0, _0202E6EC ; =FUN_0202E380
- mov r2, #0x0
- bl FUN_0202C570
- cmp r0, #0x0
- beq _0202E6D4
- add sp, #0x8
- mov r0, #0x1
- pop {r4, pc}
-_0202E6D4:
- mov r0, #0x0
- add sp, #0x8
- pop {r4, pc}
- nop
-_0202E6DC: .word UNK_021C59E8
-_0202E6E0: .word 0x00000DAB
-_0202E6E4: .word FUN_02030238
-_0202E6E8: .word UNK_020EEC40
-_0202E6EC: .word FUN_0202E380
-
- thumb_func_start FUN_0202E6F0
-FUN_0202E6F0: ; 0x0202E6F0
- push {r3, lr}
- ldr r0, _0202E77C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- bne _0202E6FE
- mov r0, #0x1
- pop {r3, pc}
-_0202E6FE:
- ldr r0, _0202E780 ; =0x00000DAC
- ldrb r0, [r1, r0]
- cmp r0, #0x0
- beq _0202E710
- cmp r0, #0x1
- beq _0202E740
- cmp r0, #0x2
- beq _0202E758
- b _0202E776
-_0202E710:
- bl FUN_0202D21C
- cmp r0, #0x0
- beq _0202E728
- bl FUN_0202C770
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
- b _0202E776
-_0202E728:
- bl FUN_0202D1E4
- cmp r0, #0x0
- bne _0202E776
- bl FUN_0202D100
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x2
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
- b _0202E776
-_0202E740:
- bl FUN_0202D1E4
- cmp r0, #0x0
- bne _0202E776
- bl FUN_0202D100
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x2
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
- b _0202E776
-_0202E758:
- bl FUN_0202D1C8
- cmp r0, #0x0
- beq _0202E764
- mov r0, #0x1
- pop {r3, pc}
-_0202E764:
- bl FUN_0202D200
- cmp r0, #0x0
- beq _0202E776
- ldr r0, _0202E77C ; =UNK_021C59E8
- mov r2, #0x1
- ldr r1, [r0, #0x8]
- ldr r0, _0202E780 ; =0x00000DAC
- strb r2, [r1, r0]
-_0202E776:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_0202E77C: .word UNK_021C59E8
-_0202E780: .word 0x00000DAC
-
- thumb_func_start FUN_0202E784
-FUN_0202E784: ; 0x0202E784
- push {r3, lr}
- ldr r0, _0202E7A8 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- cmp r2, #0x0
- beq _0202E7A2
- ldr r0, _0202E7AC ; =0x00000DAA
- ldrb r1, [r2, r0]
- cmp r1, #0x0
- bne _0202E7A2
- mov r1, #0x1
- strb r1, [r2, r0]
- bl FUN_0202D100
- mov r0, #0x1
- pop {r3, pc}
-_0202E7A2:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_0202E7A8: .word UNK_021C59E8
-_0202E7AC: .word 0x00000DAA
-
- thumb_func_start FUN_0202E7B0
-FUN_0202E7B0: ; 0x0202E7B0
- push {r3, lr}
- ldr r1, _0202E7D0 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- cmp r2, #0x0
- beq _0202E7CE
- cmp r0, #0x0
- ldr r0, _0202E7D4 ; =0x00000DAA
- beq _0202E7C6
- mov r1, #0x2
- strb r1, [r2, r0]
- pop {r3, pc}
-_0202E7C6:
- mov r1, #0x0
- strb r1, [r2, r0]
- bl FUN_0202E500
-_0202E7CE:
- pop {r3, pc}
- .balign 4
-_0202E7D0: .word UNK_021C59E8
-_0202E7D4: .word 0x00000DAA
-
- thumb_func_start FUN_0202E7D8
-FUN_0202E7D8: ; 0x0202E7D8
- push {r3, lr}
- ldr r0, _0202E804 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E808 ; =0x00000CBC
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202E804 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E80C ; =0x00000CA4
- ldr r0, [r1, r0]
- bl FreeToHeap
- ldr r0, _0202E804 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- bl FreeToHeap
- ldr r0, _0202E804 ; =UNK_021C59E8
- mov r1, #0x0
- str r1, [r0, #0x8]
- pop {r3, pc}
- nop
-_0202E804: .word UNK_021C59E8
-_0202E808: .word 0x00000CBC
-_0202E80C: .word 0x00000CA4
-
- thumb_func_start FUN_0202E810
-FUN_0202E810: ; 0x0202E810
- push {r4, lr}
- bl FUN_02030F40
- cmp r0, #0x0
- bne _0202E81E
- mov r0, #0x0
- pop {r4, pc}
-_0202E81E:
- ldr r1, _0202E83C ; =UNK_021C59E8
- mov r0, #0x0
- ldr r4, [r1, #0x8]
- ldr r1, _0202E840 ; =0x00000C84
- add r3, r0, #0x0
-_0202E828:
- ldrh r2, [r4, r1]
- cmp r2, #0x0
- beq _0202E830
- add r0, r0, #0x1
-_0202E830:
- add r3, r3, #0x1
- add r4, r4, #0x2
- cmp r3, #0x10
- blt _0202E828
- pop {r4, pc}
- nop
-_0202E83C: .word UNK_021C59E8
-_0202E840: .word 0x00000C84
-
- thumb_func_start FUN_0202E844
-FUN_0202E844: ; 0x0202E844
- push {r3-r5, lr}
- ldr r1, _0202E870 ; =UNK_021C59E8
- mov r4, #0x0
- ldr r5, [r1, #0x8]
- ldr r1, _0202E874 ; =0x00000C84
- add r3, r4, #0x0
-_0202E850:
- ldrh r2, [r5, r1]
- cmp r2, #0x0
- beq _0202E860
- cmp r4, r0
- bne _0202E85E
- add r0, r3, #0x0
- pop {r3-r5, pc}
-_0202E85E:
- add r4, r4, #0x1
-_0202E860:
- add r3, r3, #0x1
- add r5, r5, #0x2
- cmp r3, #0x10
- blt _0202E850
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-_0202E870: .word UNK_021C59E8
-_0202E874: .word 0x00000C84
-
- thumb_func_start FUN_0202E878
-FUN_0202E878: ; 0x0202E878
- ldr r0, _0202E884 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202E888 ; =0x00000CB4
- ldrb r0, [r1, r0]
- bx lr
- nop
-_0202E884: .word UNK_021C59E8
-_0202E888: .word 0x00000CB4
-
- thumb_func_start FUN_0202E88C
-FUN_0202E88C: ; 0x0202E88C
- ldr r0, _0202E898 ; =UNK_021C59E8
- mov r2, #0x0
- ldr r1, [r0, #0x8]
- ldr r0, _0202E89C ; =0x00000CB4
- strb r2, [r1, r0]
- bx lr
- .balign 4
-_0202E898: .word UNK_021C59E8
-_0202E89C: .word 0x00000CB4
-
- thumb_func_start FUN_0202E8A0
-FUN_0202E8A0: ; 0x0202E8A0
- ldr r1, _0202E8C8 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202E8CC ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E8C2
- mov r1, #0xc0
- mul r1, r0
- add r0, r3, r1
- add r0, #0xaa
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0202E8C4
- mov r0, #0x1
- bx lr
-_0202E8C2:
- mov r0, #0x0
-_0202E8C4:
- bx lr
- nop
-_0202E8C8: .word UNK_021C59E8
-_0202E8CC: .word 0x00000C84
-
- thumb_func_start FUN_0202E8D0
-FUN_0202E8D0: ; 0x0202E8D0
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r4, #0xf
-_0202E8D6:
- add r0, r4, #0x0
- bl FUN_0202E8A0
- cmp r0, r5
- ble _0202E8E8
- cmp r0, #0x8
- bge _0202E8E8
- add r0, r4, #0x0
- pop {r3-r5, pc}
-_0202E8E8:
- sub r4, r4, #0x1
- bpl _0202E8D6
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202E8F4
-FUN_0202E8F4: ; 0x0202E8F4
- push {r3-r7, lr}
- bl FUN_0202E810
- cmp r0, #0x0
- bne _0202E904
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r7, pc}
-_0202E904:
- mov r5, #0x2d
- ldr r7, _0202E948 ; =UNK_021C59E8
- mov r6, #0xf
- mov r4, #0x1e
- lsl r5, r5, #0x6
-_0202E90E:
- ldr r0, [r7, #0x8]
- ldr r1, _0202E94C ; =0x00000C84
- add r2, r0, r4
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E938
- add r0, #0x58
- add r0, r0, r5
- bl FUN_0202EFE4
- cmp r0, #0x0
- beq _0202E938
- add r0, r6, #0x0
- bl FUN_0202E8A0
- cmp r0, #0x1
- ble _0202E938
- cmp r0, #0x8
- bge _0202E938
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_0202E938:
- sub r4, r4, #0x2
- sub r5, #0xc0
- sub r6, r6, #0x1
- bpl _0202E90E
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r7, pc}
- nop
-_0202E948: .word UNK_021C59E8
-_0202E94C: .word 0x00000C84
-
- thumb_func_start FUN_0202E950
-FUN_0202E950: ; 0x0202E950
- push {r3-r7, lr}
- bl FUN_0202E810
- cmp r0, #0x0
- bne _0202E960
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r7, pc}
-_0202E960:
- mov r5, #0x2d
- ldr r7, _0202E9A4 ; =UNK_021C59E8
- mov r6, #0xf
- mov r4, #0x1e
- lsl r5, r5, #0x6
-_0202E96A:
- ldr r0, [r7, #0x8]
- ldr r1, _0202E9A8 ; =0x00000C84
- add r2, r0, r4
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202E986
- add r0, #0x58
- add r0, r0, r5
- bl FUN_0202EFE4
- cmp r0, #0x0
- beq _0202E986
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_0202E986:
- sub r4, r4, #0x2
- sub r5, #0xc0
- sub r6, r6, #0x1
- bpl _0202E96A
- mov r0, #0x1
- bl FUN_0202E8D0
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- bne _0202E9A2
- mov r0, #0x0
- bl FUN_0202E8D0
-_0202E9A2:
- pop {r3-r7, pc}
- .balign 4
-_0202E9A4: .word UNK_021C59E8
-_0202E9A8: .word 0x00000C84
-
- thumb_func_start FUN_0202E9AC
-FUN_0202E9AC: ; 0x0202E9AC
- push {r4-r6, lr}
- add r4, r1, #0x0
- ldr r1, _0202E9E0 ; =UNK_021C59E8
- mov r5, #0x0
- ldr r6, [r1, #0x8]
- ldr r1, _0202E9E4 ; =0x00000C84
- add r3, r5, #0x0
-_0202E9BA:
- ldrh r2, [r6, r1]
- cmp r2, #0x0
- beq _0202E9D4
- cmp r0, r5
- bne _0202E9D2
- add r0, r3, #0x0
- bl FUN_0202EF84
- add r1, r4, #0x0
- bl PlayerProfile_Copy
- pop {r4-r6, pc}
-_0202E9D2:
- add r5, r5, #0x1
-_0202E9D4:
- add r3, r3, #0x1
- add r6, r6, #0x2
- cmp r3, #0x10
- blt _0202E9BA
- pop {r4-r6, pc}
- nop
-_0202E9E0: .word UNK_021C59E8
-_0202E9E4: .word 0x00000C84
-
- thumb_func_start FUN_0202E9E8
-FUN_0202E9E8: ; 0x0202E9E8
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_0202CBD4
- cmp r0, #0x2
- bne _0202E9FC
- bl FUN_0202C770
- mov r0, #0x0
- pop {r3-r5, pc}
-_0202E9FC:
- bl FUN_0202CBD4
- cmp r0, #0x1
- bne _0202EA48
- bl FUN_02033534
- mov r1, #0xc0
- add r4, r5, #0x0
- mul r4, r1
- ldr r1, _0202EA4C ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- add r1, r3, r4
- add r1, #0x8a
- ldrh r2, [r1, #0x0]
- ldr r1, _0202EA50 ; =0x00000DA8
- strb r2, [r3, r1]
- bl FUN_0202D8B0
- cmp r0, #0x0
- beq _0202EA36
- ldr r1, _0202EA4C ; =UNK_021C59E8
- mov r0, #0x1
- ldr r1, [r1, #0x8]
- mov r2, #0x0
- add r1, #0x58
- add r1, r1, r4
- bl FUN_0202C4D8
- b _0202EA44
-_0202EA36:
- ldr r1, _0202EA4C ; =UNK_021C59E8
- mov r0, #0x1
- ldr r1, [r1, #0x8]
- add r1, #0x54
- add r1, r1, r4
- bl FUN_0202D034
-_0202EA44:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0202EA48:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-_0202EA4C: .word UNK_021C59E8
-_0202EA50: .word 0x00000DA8
-
- thumb_func_start FUN_0202EA54
-FUN_0202EA54: ; 0x0202EA54
- push {r4-r7}
- mov r4, #0x0
- ldr r1, _0202EA90 ; =UNK_021C59E8
- ldr r0, _0202EA94 ; =0x00000C84
- add r5, r4, #0x0
- mov r2, #0x1
-_0202EA60:
- ldr r3, [r1, #0x8]
- add r3, r3, r5
- ldrh r6, [r3, r0]
- cmp r6, #0x0
- beq _0202EA84
- beq _0202EA84
- ldr r6, _0202EA94 ; =0x00000C84
- ldrh r6, [r3, r6]
- sub r7, r6, #0x1
- ldr r6, _0202EA94 ; =0x00000C84
- strh r7, [r3, r6]
- ldr r3, [r1, #0x8]
- add r7, r3, r5
- ldrh r6, [r7, r6]
- cmp r6, #0x0
- bne _0202EA84
- ldr r6, _0202EA98 ; =0x00000CB4
- strb r2, [r3, r6]
-_0202EA84:
- add r4, r4, #0x1
- add r5, r5, #0x2
- cmp r4, #0x10
- blt _0202EA60
- pop {r4-r7}
- bx lr
- .balign 4
-_0202EA90: .word UNK_021C59E8
-_0202EA94: .word 0x00000C84
-_0202EA98: .word 0x00000CB4
-
- thumb_func_start FUN_0202EA9C
-FUN_0202EA9C: ; 0x0202EA9C
- push {r3-r5, lr}
- bl FUN_02033534
- add r5, r0, #0x0
- bl FUN_0202EF70
- add r4, r0, #0x0
- cmp r5, #0xf
- beq _0202EB24
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB70 ; =0x00000CC4
- add r5, r1, r0
- bl FUN_02023AC4
- cmp r0, #0x20
- ble _0202EAC2
- bl ErrorHandling
-_0202EAC2:
- bl PlayerProfile_sizeof
- cmp r0, #0x20
- beq _0202EACE
- bl ErrorHandling
-_0202EACE:
- bl PlayerProfile_sizeof
- add r1, r5, #0x0
- add r2, r0, #0x0
- add r0, r4, #0x0
- add r1, #0x10
- bl MI_CpuCopy8
- bl FUN_02023AC4
- add r2, r0, #0x0
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB74 ; =0x00000CBC
- ldr r0, [r1, r0]
- add r1, r5, #0x0
- add r1, #0x30
- bl MI_CpuCopy8
- add r0, r4, #0x0
- bl PlayerProfile_GetTrainerID
- str r0, [r5, #0x0]
- bl FUN_02033534
- strb r0, [r5, #0x4]
- bl FUN_0203354C
- strb r0, [r5, #0x5]
- ldr r0, _0202EB6C ; =UNK_021C59E8
- mov r2, #0x8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB78 ; =0x00000CA8
- add r0, r1, r0
- add r1, r5, #0x0
- add r1, #0x8
- bl MI_CpuCopy8
- bl FUN_0202D358
- add r5, #0x54
- strb r0, [r5, #0x0]
- b _0202EB4E
-_0202EB24:
- ldr r1, _0202EB6C ; =UNK_021C59E8
- ldr r4, [r1, #0x8]
- ldr r1, _0202EB70 ; =0x00000CC4
- add r5, r4, r1
- bl PlayerProfile_GetTrainerID
- ldr r1, _0202EB70 ; =0x00000CC4
- str r0, [r4, r1]
- bl FUN_02033534
- strb r0, [r5, #0x4]
- bl FUN_0203354C
- strb r0, [r5, #0x5]
- ldr r0, _0202EB6C ; =UNK_021C59E8
- add r5, #0x8
- ldr r0, [r0, #0x8]
- add r1, r5, #0x0
- mov r2, #0x54
- bl MI_CpuCopy8
-_0202EB4E:
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB70 ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl DC_FlushRange
- ldr r0, _0202EB6C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EB70 ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl FUN_0202CB7C
- pop {r3-r5, pc}
- .balign 4
-_0202EB6C: .word UNK_021C59E8
-_0202EB70: .word 0x00000CC4
-_0202EB74: .word 0x00000CBC
-_0202EB78: .word 0x00000CA8
-
- thumb_func_start FUN_0202EB7C
-FUN_0202EB7C: ; 0x0202EB7C
- push {r4, lr}
- ldr r0, _0202EBC8 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EBCC ; =0x00000CC4
- add r4, r1, r0
- bl FUN_0202EDB8
- ldrb r1, [r4, #0x6]
- cmp r1, r0
- beq _0202EBC6
- bl FUN_0202EDB8
- strb r0, [r4, #0x6]
- ldr r0, _0202EBC8 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EBCC ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl DC_FlushRange
- ldr r0, _0202EBC8 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EBCC ; =0x00000CC4
- add r0, r1, r0
- mov r1, #0x5c
- bl FUN_0202CB7C
- ldr r3, _0202EBC8 ; =UNK_021C59E8
- ldr r2, _0202EBCC ; =0x00000CC4
- ldr r4, [r3, #0x8]
- ldrh r3, [r3, #0x0]
- add r0, r4, r2
- sub r2, r2, #0x4
- ldr r2, [r4, r2]
- mov r1, #0x5c
- bl FUN_0202D240
-_0202EBC6:
- pop {r4, pc}
- .balign 4
-_0202EBC8: .word UNK_021C59E8
-_0202EBCC: .word 0x00000CC4
-
- thumb_func_start FUN_0202EBD0
-FUN_0202EBD0: ; 0x0202EBD0
- push {r3-r5, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- bl FUN_0202CBD4
- add r5, r0, #0x0
- bl FUN_0202DF54
- bl FUN_0202EB7C
- bl FUN_0202D19C
- cmp r0, #0x0
- bne _0202EC0C
- bl FUN_0202EE24
- cmp r0, #0x0
- bne _0202EC0C
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- ldr r0, _0202ED54 ; =0x00000DAD
- ldrb r1, [r2, r0]
- lsl r3, r1, #0x1d
- lsr r3, r3, #0x1f
- beq _0202EC0C
- mov r3, #0x1
- bic r1, r3
- mov r3, #0x1
- orr r1, r3
- strb r1, [r2, r0]
-_0202EC0C:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, _0202ED58 ; =0x0000FFFF
- ldr r3, [r0, #0x8]
- ldr r0, _0202ED5C ; =0x00000DA6
- ldrh r2, [r3, r0]
- cmp r2, r1
- bne _0202EC1C
- strh r4, [r3, r0]
-_0202EC1C:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- ldr r0, _0202ED54 ; =0x00000DAD
- ldrb r1, [r2, r0]
- lsl r3, r1, #0x1e
- lsr r3, r3, #0x1f
- beq _0202EC3C
- sub r3, r0, #0x7
- ldrh r3, [r2, r3]
- cmp r3, r4
- bls _0202EC3C
- mov r3, #0x1
- bic r1, r3
- mov r3, #0x1
- orr r1, r3
- strb r1, [r2, r0]
-_0202EC3C:
- bl FUN_0202CBE8
- cmp r0, #0x19
- bne _0202EC4A
- mov r0, #0x0
- bl FUN_020335D0
-_0202EC4A:
- cmp r5, #0x9
- bhi _0202ED4C
- add r0, r5, r5
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0202EC5A: ; jump table (using 16-bit offset)
- .short _0202EC6E - _0202EC5A - 2; case 0
- .short _0202EC8E - _0202EC5A - 2; case 1
- .short _0202ED4C - _0202EC5A - 2; case 2
- .short _0202ED4C - _0202EC5A - 2; case 3
- .short _0202ED4C - _0202EC5A - 2; case 4
- .short _0202ED4C - _0202EC5A - 2; case 5
- .short _0202ED4C - _0202EC5A - 2; case 6
- .short _0202ECD2 - _0202EC5A - 2; case 7
- .short _0202ECB8 - _0202EC5A - 2; case 8
- .short _0202ECB8 - _0202EC5A - 2; case 9
-_0202EC6E:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r2, [r0, #0x8]
- ldr r0, _0202ED60 ; =0x00000DAA
- ldrb r1, [r2, r0]
- cmp r1, #0x1
- bne _0202EC82
- bl FUN_0202E7D8
- add sp, #0x8
- pop {r3-r5, pc}
-_0202EC82:
- cmp r1, #0x2
- bne _0202ED4C
- mov r1, #0x3
- strb r1, [r2, r0]
- add sp, #0x8
- pop {r3-r5, pc}
-_0202EC8E:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202ED60 ; =0x00000DAA
- ldrb r0, [r1, r0]
- cmp r0, #0x1
- bne _0202ECA2
- bl FUN_0202D178
- cmp r0, #0x0
- bne _0202ED4C
-_0202ECA2:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202ED60 ; =0x00000DAA
- ldrb r0, [r1, r0]
- cmp r0, #0x2
- bne _0202ED4C
- bl FUN_0202D178
- add sp, #0x8
- cmp r0, #0x0
- pop {r3-r5, pc}
-_0202ECB8:
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r3, [r0, #0x8]
- cmp r3, #0x0
- beq _0202ED4C
- ldr r1, _0202ED54 ; =0x00000DAD
- mov r0, #0x1
- ldrb r2, [r3, r1]
- add sp, #0x8
- bic r2, r0
- mov r0, #0x1
- orr r0, r2
- strb r0, [r3, r1]
- pop {r3-r5, pc}
-_0202ECD2:
- bl FUN_0202CDA4
- ldr r3, _0202ED50 ; =UNK_021C59E8
- ldr r2, _0202ED64 ; =0x00000DA9
- ldr r4, [r3, #0x8]
- ldrb r1, [r4, r2]
- cmp r1, #0x0
- bne _0202ECEE
- sub r1, r2, #0x5
- strh r0, [r4, r1]
- ldr r0, [r3, #0x8]
- mov r1, #0x5
- strb r1, [r0, r2]
- b _0202ECF2
-_0202ECEE:
- sub r0, r1, #0x1
- strb r0, [r4, r2]
-_0202ECF2:
- ldr r1, _0202ED50 ; =UNK_021C59E8
- ldr r0, _0202ED68 ; =0x00000DA4
- ldr r2, [r1, #0x8]
- ldrh r5, [r2, r0]
- add r0, #0x9
- ldrb r0, [r2, r0]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1f
- beq _0202ED0A
- ldrh r0, [r1, #0x0]
- add r0, r0, #0x1
- strh r0, [r1, #0x0]
-_0202ED0A:
- bl FUN_0202EA9C
- bl FUN_02033534
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202D858
- add r4, r0, #0x0
- bl FUN_02033534
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202EEE8
- str r0, [sp, #0x0]
- ldr r1, _0202ED50 ; =UNK_021C59E8
- ldr r0, _0202ED54 ; =0x00000DAD
- ldr r2, [r1, #0x8]
- add r3, r4, #0x0
- ldrb r0, [r2, r0]
- add r2, r5, #0x0
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x1f
- str r0, [sp, #0x4]
- ldrh r1, [r1, #0x0]
- mov r0, #0x0
- bl FUN_0202CF84
- ldr r0, _0202ED50 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202ED6C ; =0x00000DA8
- strb r5, [r1, r0]
-_0202ED4C:
- add sp, #0x8
- pop {r3-r5, pc}
- .balign 4
-_0202ED50: .word UNK_021C59E8
-_0202ED54: .word 0x00000DAD
-_0202ED58: .word 0x0000FFFF
-_0202ED5C: .word 0x00000DA6
-_0202ED60: .word 0x00000DAA
-_0202ED64: .word 0x00000DA9
-_0202ED68: .word 0x00000DA4
-_0202ED6C: .word 0x00000DA8
-
- thumb_func_start FUN_0202ED70
-FUN_0202ED70: ; 0x0202ED70
- push {r3, lr}
- ldr r1, _0202ED80 ; =UNK_021C59E8
- ldr r1, [r1, #0x8]
- cmp r1, #0x0
- beq _0202ED7E
- bl FUN_0202EBD0
-_0202ED7E:
- pop {r3, pc}
- .balign 4
-_0202ED80: .word UNK_021C59E8
-
- thumb_func_start FUN_0202ED84
-FUN_0202ED84: ; 0x0202ED84
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0202EDB4 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- bne _0202ED94
- mov r0, #0x0
- pop {r4, pc}
-_0202ED94:
- bl FUN_0202CBD4
- cmp r0, #0x4
- beq _0202EDA0
- mov r0, #0x0
- pop {r4, pc}
-_0202EDA0:
- bl FUN_0202CB8C
- mov r2, #0x1
- add r1, r2, #0x0
- lsl r1, r4
- tst r0, r1
- bne _0202EDB0
- mov r2, #0x0
-_0202EDB0:
- add r0, r2, #0x0
- pop {r4, pc}
- .balign 4
-_0202EDB4: .word UNK_021C59E8
-
- thumb_func_start FUN_0202EDB8
-FUN_0202EDB8: ; 0x0202EDB8
- push {r3-r5, lr}
- mov r4, #0x0
- add r5, r4, #0x0
-_0202EDBE:
- lsl r0, r5, #0x10
- lsr r0, r0, #0x10
- bl FUN_0202ED84
- cmp r0, #0x0
- beq _0202EDCC
- add r4, r4, #0x1
-_0202EDCC:
- add r5, r5, #0x1
- cmp r5, #0x8
- blt _0202EDBE
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202EDD8
-FUN_0202EDD8: ; 0x0202EDD8
- ldr r0, _0202EDF0 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _0202EDEC
- ldr r0, _0202EDF4 ; =0x00000DAA
- ldrb r0, [r1, r0]
- cmp r0, #0x3
- bne _0202EDEC
- mov r0, #0x1
- bx lr
-_0202EDEC:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202EDF0: .word UNK_021C59E8
-_0202EDF4: .word 0x00000DAA
-
- thumb_func_start FUN_0202EDF8
-FUN_0202EDF8: ; 0x0202EDF8
- ldr r0, _0202EE08 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EE04
- mov r0, #0x1
- bx lr
-_0202EE04:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202EE08: .word UNK_021C59E8
-
- thumb_func_start FUN_0202EE0C
-FUN_0202EE0C: ; 0x0202EE0C
- push {r3, lr}
- ldr r0, _0202EE20 ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EE1C
- bl FUN_0202D1C8
- pop {r3, pc}
-_0202EE1C:
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0202EE20: .word UNK_021C59E8
-
- thumb_func_start FUN_0202EE24
-FUN_0202EE24: ; 0x0202EE24
- push {r3, lr}
- ldr r0, _0202EE3C ; =UNK_021C59E8
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EE38
- bl FUN_0202CB8C
- ldr r1, _0202EE40 ; =0x0000FFFE
- and r0, r1
- pop {r3, pc}
-_0202EE38:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-_0202EE3C: .word UNK_021C59E8
-_0202EE40: .word 0x0000FFFE
-
- thumb_func_start FUN_0202EE44
-FUN_0202EE44: ; 0x0202EE44
- push {r3, lr}
- bl FUN_0202EE60
- cmp r0, #0x0
- beq _0202EE5A
- bl FUN_0202CBE8
- cmp r0, #0x14
- bne _0202EE5A
- mov r0, #0x1
- pop {r3, pc}
-_0202EE5A:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202EE60
-FUN_0202EE60: ; 0x0202EE60
- ldr r0, _0202EE7C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _0202EE76
- ldr r0, _0202EE80 ; =0x00000DAD
- ldrb r0, [r1, r0]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- beq _0202EE76
- mov r0, #0x1
- bx lr
-_0202EE76:
- mov r0, #0x0
- bx lr
- nop
-_0202EE7C: .word UNK_021C59E8
-_0202EE80: .word 0x00000DAD
-
- thumb_func_start FUN_0202EE84
-FUN_0202EE84: ; 0x0202EE84
- push {r3-r4}
- ldr r1, _0202EEA8 ; =UNK_021C59E8
- ldr r2, [r1, #0x8]
- cmp r2, #0x0
- beq _0202EEA2
- ldr r4, _0202EEAC ; =0x00000DAD
- lsl r0, r0, #0x18
- ldrb r1, [r2, r4]
- lsr r0, r0, #0x18
- mov r3, #0x4
- lsl r0, r0, #0x1f
- bic r1, r3
- lsr r0, r0, #0x1d
- orr r0, r1
- strb r0, [r2, r4]
-_0202EEA2:
- pop {r3-r4}
- bx lr
- nop
-_0202EEA8: .word UNK_021C59E8
-_0202EEAC: .word 0x00000DAD
-
- thumb_func_start FUN_0202EEB0
-FUN_0202EEB0: ; 0x0202EEB0
- push {r4-r5}
- ldr r5, _0202EEDC ; =UNK_021C59E8
- ldr r2, [r5, #0x8]
- cmp r2, #0x0
- beq _0202EED6
- ldr r4, _0202EEE0 ; =0x00000DAD
- lsl r0, r0, #0x18
- ldrb r1, [r2, r4]
- lsr r0, r0, #0x18
- mov r3, #0x2
- lsl r0, r0, #0x1f
- bic r1, r3
- lsr r0, r0, #0x1e
- orr r0, r1
- strb r0, [r2, r4]
- ldr r2, _0202EEE4 ; =0x0000FFFF
- ldr r1, [r5, #0x8]
- sub r0, r4, #0x7
- strh r2, [r1, r0]
-_0202EED6:
- pop {r4-r5}
- bx lr
- nop
-_0202EEDC: .word UNK_021C59E8
-_0202EEE0: .word 0x00000DAD
-_0202EEE4: .word 0x0000FFFF
-
- thumb_func_start FUN_0202EEE8
-FUN_0202EEE8: ; 0x0202EEE8
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl WM_GetDispersionBeaconPeriod
- add r4, r0, #0x0
- cmp r5, #0x1a
- blo _0202EEFA
- bl ErrorHandling
-_0202EEFA:
- cmp r5, #0xa
- bne _0202EF04
- lsl r0, r4, #0xe
- lsr r0, r0, #0x10
- pop {r3-r5, pc}
-_0202EF04:
- cmp r5, #0x9
- beq _0202EF0C
- cmp r5, #0xd
- bne _0202EF12
-_0202EF0C:
- lsl r0, r4, #0xe
- lsr r0, r0, #0x10
- pop {r3-r5, pc}
-_0202EF12:
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202EF18
-FUN_0202EF18: ; 0x0202EF18
- ldr r1, _0202EF3C ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _0202EF36
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202EF40 ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202EF36
- mov r1, #0xc0
- add r3, #0x54
- mul r1, r0
- add r0, r3, r1
- bx lr
-_0202EF36:
- mov r0, #0x0
- bx lr
- nop
-_0202EF3C: .word UNK_021C59E8
-_0202EF40: .word 0x00000C84
-
- thumb_func_start FUN_0202EF44
-FUN_0202EF44: ; 0x0202EF44
- ldr r1, _0202EF68 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _0202EF62
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202EF6C ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202EF62
- mov r1, #0xc0
- add r3, #0xa4
- mul r1, r0
- add r0, r3, r1
- bx lr
-_0202EF62:
- mov r0, #0x0
- bx lr
- nop
-_0202EF68: .word UNK_021C59E8
-_0202EF6C: .word 0x00000C84
-
- thumb_func_start FUN_0202EF70
-FUN_0202EF70: ; 0x0202EF70
- ldr r0, _0202EF7C ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- ldr r0, _0202EF80 ; =0x00000CB8
- ldr r0, [r1, r0]
- bx lr
- nop
-_0202EF7C: .word UNK_021C59E8
-_0202EF80: .word 0x00000CB8
-
- thumb_func_start FUN_0202EF84
-FUN_0202EF84: ; 0x0202EF84
- ldr r1, _0202EFA4 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202EFA8 ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- bne _0202EF98
- mov r0, #0x0
- bx lr
-_0202EF98:
- mov r1, #0xc0
- add r3, #0xa4
- mul r1, r0
- add r0, r3, r1
- add r0, #0x10
- bx lr
- .balign 4
-_0202EFA4: .word UNK_021C59E8
-_0202EFA8: .word 0x00000C84
-
- thumb_func_start FUN_0202EFAC
-FUN_0202EFAC: ; 0x0202EFAC
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _0202EFDC ; =UNK_021C59E8
- add r4, r1, #0x0
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- beq _0202EFD8
- cmp r4, #0x8
- blt _0202EFC2
- bl ErrorHandling
-_0202EFC2:
- ldr r1, _0202EFDC ; =UNK_021C59E8
- add r0, r5, #0x0
- ldr r2, [r1, #0x8]
- ldr r1, _0202EFE0 ; =0x00000C54
- add r3, r2, r1
- mov r2, #0x6
- add r1, r4, #0x0
- mul r1, r2
- add r1, r3, r1
- bl MI_CpuCopy8
-_0202EFD8:
- pop {r3-r5, pc}
- nop
-_0202EFDC: .word UNK_021C59E8
-_0202EFE0: .word 0x00000C54
-
- thumb_func_start FUN_0202EFE4
-FUN_0202EFE4: ; 0x0202EFE4
- push {r4-r5}
- ldr r2, _0202F034 ; =UNK_021C59E8
- mov r1, #0x0
- ldr r3, [r2, #0x8]
- ldr r2, _0202F038 ; =0x00000C54
- add r2, r3, r2
- ldrb r3, [r0, #0x0]
-_0202EFF2:
- ldrb r4, [r2, #0x0]
- cmp r4, r3
- bne _0202F026
- ldrb r5, [r2, #0x1]
- ldrb r4, [r0, #0x1]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x2]
- ldrb r4, [r0, #0x2]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x3]
- ldrb r4, [r0, #0x3]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x4]
- ldrb r4, [r0, #0x4]
- cmp r5, r4
- bne _0202F026
- ldrb r5, [r2, #0x5]
- ldrb r4, [r0, #0x5]
- cmp r5, r4
- bne _0202F026
- mov r0, #0x1
- pop {r4-r5}
- bx lr
-_0202F026:
- add r1, r1, #0x1
- add r2, r2, #0x6
- cmp r1, #0x8
- blt _0202EFF2
- mov r0, #0x0
- pop {r4-r5}
- bx lr
- .balign 4
-_0202F034: .word UNK_021C59E8
-_0202F038: .word 0x00000C54
-
- thumb_func_start FUN_0202F03C
-FUN_0202F03C: ; 0x0202F03C
- ldr r0, _0202F054 ; =UNK_021C59E8
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _0202F04E
- ldr r0, _0202F058 ; =0x00000DAD
- ldrb r0, [r1, r0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- bx lr
-_0202F04E:
- mov r0, #0x0
- bx lr
- nop
-_0202F054: .word UNK_021C59E8
-_0202F058: .word 0x00000DAD
-
- thumb_func_start FUN_0202F05C
-FUN_0202F05C: ; 0x0202F05C
- ldr r0, _0202F070 ; =UNK_021C59E8
- ldr r3, [r0, #0x8]
- cmp r3, #0x0
- beq _0202F06E
- ldr r1, _0202F074 ; =0x00000DAD
- mov r0, #0x10
- ldrb r2, [r3, r1]
- orr r0, r2
- strb r0, [r3, r1]
-_0202F06E:
- bx lr
- .balign 4
-_0202F070: .word UNK_021C59E8
-_0202F074: .word 0x00000DAD
-
- thumb_func_start FUN_0202F078
-FUN_0202F078: ; 0x0202F078
- ldr r1, _0202F088 ; =UNK_021C59E8
- ldr r3, _0202F08C ; =MI_CpuCopy8
- ldr r2, [r1, #0x8]
- ldr r1, _0202F090 ; =0x00000CA8
- add r1, r2, r1
- mov r2, #0x8
- bx r3
- nop
-_0202F088: .word UNK_021C59E8
-_0202F08C: .word MI_CpuCopy8
-_0202F090: .word 0x00000CA8
-
- thumb_func_start FUN_0202F094
-FUN_0202F094: ; 0x0202F094
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02023AC4
- ldr r1, _0202F0B0 ; =UNK_021C59E8
- add r2, r0, #0x0
- ldr r3, [r1, #0x8]
- ldr r1, _0202F0B4 ; =0x00000CBC
- add r0, r4, #0x0
- ldr r1, [r3, r1]
- bl MI_CpuCopy8
- pop {r4, pc}
- nop
-_0202F0B0: .word UNK_021C59E8
-_0202F0B4: .word 0x00000CBC
-
- thumb_func_start FUN_0202F0B8
-FUN_0202F0B8: ; 0x0202F0B8
- push {r4, lr}
- bl FUN_0202EA9C
- ldr r3, _0202F0D4 ; =UNK_021C59E8
- ldr r2, _0202F0D8 ; =0x00000CC4
- ldr r4, [r3, #0x8]
- ldrh r3, [r3, #0x0]
- add r0, r4, r2
- sub r2, r2, #0x4
- ldr r2, [r4, r2]
- mov r1, #0x5c
- bl FUN_0202D240
- pop {r4, pc}
- .balign 4
-_0202F0D4: .word UNK_021C59E8
-_0202F0D8: .word 0x00000CC4
-
- thumb_func_start FUN_0202F0DC
-FUN_0202F0DC: ; 0x0202F0DC
- push {r4-r6, lr}
- mov r5, #0x0
- add r6, r0, #0x0
- add r4, r5, #0x0
-_0202F0E4:
- add r0, r4, #0x0
- bl FUN_0202EF44
- cmp r0, #0x0
- beq _0202F0F8
- ldrb r1, [r0, #0x4]
- cmp r1, r6
- bne _0202F0F8
- ldrb r0, [r0, #0x6]
- add r5, r5, r0
-_0202F0F8:
- add r4, r4, #0x1
- cmp r4, #0x10
- blt _0202F0E4
- add r0, r5, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0202F104
-FUN_0202F104: ; 0x0202F104
- ldr r3, _0202F108 ; =FUN_0202D2D0
- bx r3
- .balign 4
-_0202F108: .word FUN_0202D2D0
-
- thumb_func_start FUN_0202F10C
-FUN_0202F10C: ; 0x0202F10C
- push {r3, lr}
- ldr r1, _0202F120 ; =UNK_021C59E8
- mov r2, #0x54
- ldr r1, [r1, #0x8]
- bl MI_CpuCopy8
- bl FUN_0202F0B8
- pop {r3, pc}
- nop
-_0202F120: .word UNK_021C59E8
-
- thumb_func_start FUN_0202F124
-FUN_0202F124: ; 0x0202F124
- ldr r1, _0202F148 ; =UNK_021C59E8
- ldr r3, [r1, #0x8]
- cmp r3, #0x0
- beq _0202F144
- lsl r1, r0, #0x1
- add r2, r3, r1
- ldr r1, _0202F14C ; =0x00000C84
- ldrh r1, [r2, r1]
- cmp r1, #0x0
- beq _0202F144
- mov r1, #0xc0
- add r3, #0xa4
- mul r1, r0
- add r0, r3, r1
- add r0, #0x8
- bx lr
-_0202F144:
- mov r0, #0x0
- bx lr
- .balign 4
-_0202F148: .word UNK_021C59E8
-_0202F14C: .word 0x00000C84
diff --git a/arm9/asm/unk_02031480.s b/arm9/asm/unk_02031480.s
deleted file mode 100644
index 58ff4996..00000000
--- a/arm9/asm/unk_02031480.s
+++ /dev/null
@@ -1,405 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .global UNK_021C59FC
-UNK_021C59FC: ; 0x021C59FC
- .space 0x4
-
- .text
-
- thumb_func_start FUN_02031480
-FUN_02031480: ; 0x02031480
- push {r4, lr}
- ldr r1, _020314C8 ; =UNK_021C59FC
- ldr r1, [r1, #0x0]
- cmp r1, #0x0
- bne _0203149C
- ldr r1, _020314CC ; =0x00000253
- bl AllocFromHeap
- ldr r1, _020314C8 ; =UNK_021C59FC
- ldr r2, _020314CC ; =0x00000253
- str r0, [r1, #0x0]
- mov r1, #0x0
- bl MI_CpuFill8
-_0203149C:
- ldr r1, _020314C8 ; =UNK_021C59FC
- mov r3, #0x0
- mov r0, #0xff
-_020314A2:
- ldr r2, [r1, #0x0]
- add r2, r2, r3
- add r3, r3, #0x1
- strb r0, [r2, #0x10]
- cmp r3, #0x8
- blt _020314A2
- ldr r3, _020314C8 ; =UNK_021C59FC
- mov r1, #0x25
- ldr r2, [r3, #0x0]
- lsl r1, r1, #0x4
- strb r0, [r2, r1]
- ldr r4, [r3, #0x0]
- add r2, r1, #0x1
- strb r0, [r4, r2]
- ldr r2, [r3, #0x0]
- mov r4, #0x0
- add r0, r1, #0x2
- strb r4, [r2, r0]
- pop {r4, pc}
- .balign 4
-_020314C8: .word UNK_021C59FC
-_020314CC: .word 0x00000253
-
- thumb_func_start FUN_020314D0
-FUN_020314D0: ; 0x020314D0
- push {r3, lr}
- ldr r0, _020314E4 ; =UNK_021C59FC
- ldr r0, [r0, #0x0]
- bl FreeToHeap
- ldr r0, _020314E4 ; =UNK_021C59FC
- mov r1, #0x0
- str r1, [r0, #0x0]
- pop {r3, pc}
- nop
-_020314E4: .word UNK_021C59FC
-
- thumb_func_start FUN_020314E8
-FUN_020314E8: ; 0x020314E8
- ldr r0, _020314F8 ; =UNK_021C59FC
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020314F4
- mov r0, #0x1
- bx lr
-_020314F4:
- mov r0, #0x0
- bx lr
- .balign 4
-_020314F8: .word UNK_021C59FC
-
- thumb_func_start FUN_020314FC
-FUN_020314FC: ; 0x020314FC
- push {r3-r6, lr}
- sub sp, #0x4
- ldrb r1, [r2, #0x0]
- add r5, r0, #0x0
- add r0, sp, #0x0
- strb r1, [r0, #0x0]
- bl FUN_02031190
- cmp r0, #0x0
- bne _02031556
- add r0, sp, #0x0
- strb r5, [r0, #0x1]
- ldrb r1, [r0, #0x0]
- strb r1, [r0, #0x2]
- add r1, sp, #0x0
- mov r0, #0x12
- add r1, #0x1
- bl FUN_02030C4C
- ldr r6, _0203155C ; =UNK_021C59FC
- add r4, sp, #0x0
- ldr r0, [r6, #0x0]
- ldrb r1, [r4, #0x0]
- add r0, r0, r5
- mov r5, #0x0
- strb r1, [r0, #0x10]
-_02031530:
- lsl r0, r5, #0x10
- lsr r0, r0, #0x10
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _02031548
- ldr r0, [r6, #0x0]
- ldrb r1, [r4, #0x0]
- add r0, r0, r5
- ldrb r0, [r0, #0x10]
- cmp r1, r0
- bne _02031556
-_02031548:
- add r5, r5, #0x1
- cmp r5, #0x8
- blt _02031530
- mov r0, #0x11
- add r1, sp, #0x0
- bl FUN_02030C4C
-_02031556:
- add sp, #0x4
- pop {r3-r6, pc}
- nop
-_0203155C: .word UNK_021C59FC
-
- thumb_func_start FUN_02031560
-FUN_02031560: ; 0x02031560
- ldr r0, _02031570 ; =UNK_021C59FC
- ldrb r3, [r2, #0x1]
- ldr r1, [r0, #0x0]
- ldrb r0, [r2, #0x0]
- add r0, r1, r0
- strb r3, [r0, #0x10]
- bx lr
- nop
-_02031570: .word UNK_021C59FC
-
- thumb_func_start FUN_02031574
-FUN_02031574: ; 0x02031574
- ldr r0, _02031584 ; =UNK_021C59FC
- ldrb r2, [r2, #0x0]
- ldr r1, [r0, #0x0]
- mov r0, #0x25
- lsl r0, r0, #0x4
- strb r2, [r1, r0]
- bx lr
- nop
-_02031584: .word UNK_021C59FC
-
- thumb_func_start FUN_02031588
-FUN_02031588: ; 0x02031588
- ldr r2, _0203159C ; =UNK_021C59FC
- ldr r1, _020315A0 ; =0x00000251
- ldr r3, [r2, #0x0]
- strb r0, [r3, r1]
- ldr r2, [r2, #0x0]
- mov r3, #0x1
- add r0, r1, #0x1
- strb r3, [r2, r0]
- bx lr
- nop
-_0203159C: .word UNK_021C59FC
-_020315A0: .word 0x00000251
-
- thumb_func_start FUN_020315A4
-FUN_020315A4: ; 0x020315A4
- push {r3, lr}
- ldr r0, _020315D0 ; =UNK_021C59FC
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- beq _020315CE
- ldr r1, _020315D4 ; =0x00000252
- ldrb r0, [r2, r1]
- cmp r0, #0x0
- beq _020315CE
- sub r1, r1, #0x1
- mov r0, #0x10
- add r1, r2, r1
- bl FUN_020311D0
- cmp r0, #0x0
- beq _020315CE
- ldr r0, _020315D0 ; =UNK_021C59FC
- mov r2, #0x0
- ldr r1, [r0, #0x0]
- ldr r0, _020315D4 ; =0x00000252
- strb r2, [r1, r0]
-_020315CE:
- pop {r3, pc}
- .balign 4
-_020315D0: .word UNK_021C59FC
-_020315D4: .word 0x00000252
-
- thumb_func_start FUN_020315D8
-FUN_020315D8: ; 0x020315D8
- ldr r1, _020315F8 ; =UNK_021C59FC
- ldr r2, [r1, #0x0]
- cmp r2, #0x0
- bne _020315E4
- mov r0, #0x1
- bx lr
-_020315E4:
- mov r1, #0x25
- lsl r1, r1, #0x4
- ldrb r1, [r2, r1]
- cmp r1, r0
- bne _020315F2
- mov r0, #0x1
- bx lr
-_020315F2:
- mov r0, #0x0
- bx lr
- nop
-_020315F8: .word UNK_021C59FC
-
- thumb_func_start FUN_020315FC
-FUN_020315FC: ; 0x020315FC
- ldr r1, _02031608 ; =UNK_021C59FC
- ldr r1, [r1, #0x0]
- add r0, r1, r0
- ldrb r0, [r0, #0x10]
- bx lr
- nop
-_02031608: .word UNK_021C59FC
-
- thumb_func_start FUN_0203160C
-FUN_0203160C: ; 0x0203160C
- push {r3-r4}
- lsl r4, r0, #0x1
- ldr r0, _02031624 ; =UNK_021C59FC
- ldrb r3, [r2, #0x0]
- ldr r1, [r0, #0x0]
- strb r3, [r1, r4]
- ldr r0, [r0, #0x0]
- ldrb r1, [r2, #0x1]
- add r0, r0, r4
- strb r1, [r0, #0x1]
- pop {r3-r4}
- bx lr
- .balign 4
-_02031624: .word UNK_021C59FC
-
- thumb_func_start FUN_02031628
-FUN_02031628: ; 0x02031628
- mov r0, #0x2
- bx lr
-
- thumb_func_start FUN_0203162C
-FUN_0203162C: ; 0x0203162C
- push {r3, lr}
- add r2, sp, #0x0
- strb r0, [r2, #0x0]
- strb r1, [r2, #0x1]
- mov r0, #0x13
- add r1, sp, #0x0
- bl FUN_020311D0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02031640
-FUN_02031640: ; 0x02031640
- ldr r2, _02031664 ; =UNK_021C59FC
- ldr r3, [r2, #0x0]
- cmp r3, #0x0
- bne _0203164E
- mov r0, #0x0
- mvn r0, r0
- bx lr
-_0203164E:
- lsl r2, r0, #0x1
- ldrb r0, [r3, r2]
- cmp r1, r0
- bne _0203165C
- add r0, r3, r2
- ldrb r0, [r0, #0x1]
- bx lr
-_0203165C:
- mov r0, #0x0
- mvn r0, r0
- bx lr
- nop
-_02031664: .word UNK_021C59FC
-
- thumb_func_start FUN_02031668
-FUN_02031668: ; 0x02031668
- push {r3-r7, lr}
- mov r4, #0x0
- ldr r6, _02031688 ; =UNK_021C59FC
- add r5, r4, #0x0
- add r7, r4, #0x0
-_02031672:
- ldr r0, [r6, #0x0]
- add r1, r7, #0x0
- add r0, r0, r5
- mov r2, #0x2
- bl MI_CpuFill8
- add r4, r4, #0x1
- add r5, r5, #0x2
- cmp r4, #0x8
- blt _02031672
- pop {r3-r7, pc}
- .balign 4
-_02031688: .word UNK_021C59FC
-
- thumb_func_start FUN_0203168C
-FUN_0203168C: ; 0x0203168C
- push {r3-r4}
- mov r4, #0x0
- mov r0, #0x92
- ldr r1, _020316A8 ; =UNK_021C59FC
- add r3, r4, #0x0
- lsl r0, r0, #0x2
-_02031698:
- ldr r2, [r1, #0x0]
- add r2, r2, r4
- add r4, r4, #0x1
- strb r3, [r2, r0]
- cmp r4, #0x8
- blt _02031698
- pop {r3-r4}
- bx lr
- .balign 4
-_020316A8: .word UNK_021C59FC
-
- thumb_func_start FUN_020316AC
-FUN_020316AC: ; 0x020316AC
- push {r4, lr}
- ldr r2, _020316DC ; =UNK_021C59FC
- ldr r3, [r2, #0x0]
- cmp r3, #0x0
- beq _020316D8
- add r4, r0, #0x0
- mov r2, #0x46
- mul r4, r2
- add r3, #0x18
- add r0, r1, #0x0
- add r1, r3, r4
- bl MI_CpuCopy8
- ldr r1, _020316DC ; =UNK_021C59FC
- mov r0, #0x14
- ldr r1, [r1, #0x0]
- add r1, #0x18
- add r1, r1, r4
- bl FUN_020311D0
- mov r0, #0x1
- pop {r4, pc}
-_020316D8:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-_020316DC: .word UNK_021C59FC
-
- thumb_func_start FUN_020316E0
-FUN_020316E0: ; 0x020316E0
- ldr r1, _02031700 ; =UNK_021C59FC
- ldr r3, [r1, #0x0]
- mov r1, #0x92
- add r2, r3, r0
- lsl r1, r1, #0x2
- ldrb r1, [r2, r1]
- cmp r1, #0x0
- beq _020316FA
- mov r1, #0x46
- add r3, #0x18
- mul r1, r0
- add r0, r3, r1
- bx lr
-_020316FA:
- mov r0, #0x0
- bx lr
- nop
-_02031700: .word UNK_021C59FC
-
- thumb_func_start FUN_02031704
-FUN_02031704: ; 0x02031704
- push {r3-r5, lr}
- ldr r3, _0203172C ; =UNK_021C59FC
- add r1, r0, #0x0
- ldr r0, [r3, #0x0]
- mov r5, #0x1
- add r4, r0, r1
- mov r0, #0x92
- lsl r0, r0, #0x2
- strb r5, [r4, r0]
- ldr r4, [r3, #0x0]
- add r0, r2, #0x0
- mov r2, #0x46
- add r3, r1, #0x0
- add r4, #0x18
- mul r3, r2
- add r1, r4, r3
- bl MI_CpuCopy8
- pop {r3-r5, pc}
- nop
-_0203172C: .word UNK_021C59FC
-
- thumb_func_start FUN_02031730
-FUN_02031730: ; 0x02031730
- mov r0, #0x46
- bx lr
diff --git a/arm9/asm/unk_02031734.s b/arm9/asm/unk_02031734.s
deleted file mode 100644
index 5a054d51..00000000
--- a/arm9/asm/unk_02031734.s
+++ /dev/null
@@ -1,4136 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
- .section .rodata
- .global UNK_020EEC48
-UNK_020EEC48: ; 0x020EEC48
- .word FUN_02032B84, 0x00000000
-
- .global UNK_020EEC50
-UNK_020EEC50: ; 0x020EEC50
- .word FUN_0203213C, FUN_02032138, 0x00000000
-
- .global UNK_020EEC5C
-UNK_020EEC5C: ; 0x020EEC5C
- .word FUN_02032234, FUN_0203234C, 0x00000000
-
- .section .data
-
- .balign 4
- .global UNK_02105D5C
-UNK_02105D5C: ; 0x02105D5C
- .asciz "FREAK"
-
- .balign 4
- .global UNK_02105D64
-UNK_02105D64: ; 0x02105D64
- .asciz " FULL"
-
- .balign 4
- .global UNK_02105D6C
-UNK_02105D6C: ; 0x02105D6C
- .asciz " GAME"
-
- .section .bss
-
- .global UNK_021C5A00
-UNK_021C5A00: ; 0x021C5A00
- .space 0x4
-
- .text
-
- thumb_func_start FUN_02031734
-FUN_02031734: ; 0x02031734
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _020317BC ; =UNK_021C5A00
- add r4, r1, #0x0
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020317B8
- bl FUN_0202E49C
- mov r0, #0xf
- mov r1, #0x50
- bl AllocFromHeap
- ldr r1, _020317BC ; =UNK_021C5A00
- mov r2, #0x50
- str r0, [r1, #0x0]
- mov r1, #0x0
- bl MI_CpuFill8
- ldr r0, _020317BC ; =UNK_021C5A00
- mov r2, #0x32
- ldr r1, [r0, #0x0]
- strh r2, [r1, #0x3a]
- ldr r1, [r0, #0x0]
- mov r2, #0x1
- add r1, #0x43
- strb r2, [r1, #0x0]
- ldr r0, [r0, #0x0]
- str r5, [r0, #0x28]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetProfileAddr
- ldr r1, _020317BC ; =UNK_021C5A00
- ldr r2, [r1, #0x0]
- str r0, [r2, #0x2c]
- ldr r0, [r1, #0x0]
- mov r2, #0x2
- add r0, #0x3c
- strb r2, [r0, #0x0]
- ldr r0, [r1, #0x0]
- mov r2, #0x0
- add r0, #0x3d
- strb r2, [r0, #0x0]
- ldr r0, [r1, #0x0]
- add r0, #0x48
- strb r2, [r0, #0x0]
- ldr r0, [r1, #0x0]
- add r0, #0x3f
- strb r4, [r0, #0x0]
- ldr r0, [r1, #0x0]
- add r0, #0xc
- bl FUN_020312BC
- mov r0, #0x0
- add r1, r0, #0x0
- add r2, r0, #0x0
- bl FUN_0202D8D0
- cmp r4, #0x9
- beq _020317B8
- cmp r4, #0x11
- beq _020317B8
- cmp r4, #0xf
- beq _020317B8
- bl FUN_02033E74
-_020317B8:
- pop {r3-r5, pc}
- nop
-_020317BC: .word UNK_021C5A00
-
- thumb_func_start FUN_020317C0
-FUN_020317C0: ; 0x020317C0
- push {r3, lr}
- ldr r0, _0203180C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0203180A
- bl FUN_0202D918
- ldr r0, _0203180C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020317DC
- bl FreeToHeap
-_020317DC:
- ldr r0, _0203180C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3f
- ldrb r0, [r0, #0x0]
- cmp r0, #0x13
- blo _020317EE
- mov r0, #0x31
- bl FUN_020168D0
-_020317EE:
- bl FUN_02033ED0
- bl FUN_0202E4F0
- ldr r0, _0203180C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- bl FreeToHeap
- mov r0, #0xf
- bl FUN_020168D0
- ldr r0, _0203180C ; =UNK_021C5A00
- mov r1, #0x0
- str r1, [r0, #0x0]
-_0203180A:
- pop {r3, pc}
- .balign 4
-_0203180C: .word UNK_021C5A00
-
- thumb_func_start FUN_02031810
-FUN_02031810: ; 0x02031810
- ldr r0, _02031820 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0203181C
- mov r0, #0x1
- bx lr
-_0203181C:
- mov r0, #0x0
- bx lr
- .balign 4
-_02031820: .word UNK_021C5A00
-
- thumb_func_start FUN_02031824
-FUN_02031824: ; 0x02031824
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _02031858 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02031856
- mov r2, #0xe
- mov r0, #0x3
- mov r1, #0xf
- lsl r2, r2, #0xc
- bl FUN_02016828
- add r0, r4, #0x0
- mov r1, #0xa
- bl FUN_02031734
- ldr r0, _02031858 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x40
- strb r1, [r0, #0x0]
- ldr r0, _0203185C ; =FUN_02031D30
- mov r1, #0x32
- bl FUN_02031D20
-_02031856:
- pop {r4, pc}
- .balign 4
-_02031858: .word UNK_021C5A00
-_0203185C: .word FUN_02031D30
-
- thumb_func_start FUN_02031860
-FUN_02031860: ; 0x02031860
- push {r3, lr}
- ldr r0, _02031878 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031876
- bl FUN_02031468
- ldr r0, _0203187C ; =FUN_020323CC
- mov r1, #0x0
- bl FUN_02031D20
-_02031876:
- pop {r3, pc}
- .balign 4
-_02031878: .word UNK_021C5A00
-_0203187C: .word FUN_020323CC
-
- thumb_func_start FUN_02031880
-FUN_02031880: ; 0x02031880
- push {r3, lr}
- bl FUN_0202FC60
- bl FUN_02031190
- ldr r1, _0203189C ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- strh r0, [r1, #0x38]
- ldr r0, _020318A0 ; =FUN_020321B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- nop
-_0203189C: .word UNK_021C5A00
-_020318A0: .word FUN_020321B8
-
- thumb_func_start FUN_020318A4
-FUN_020318A4: ; 0x020318A4
- ldr r1, _020318B0 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- add r1, #0x4f
- strb r0, [r1, #0x0]
- bx lr
- nop
-_020318B0: .word UNK_021C5A00
-
- thumb_func_start FUN_020318B4
-FUN_020318B4: ; 0x020318B4
- ldr r3, _020318BC ; =FUN_02031D20
- ldr r0, _020318C0 ; =FUN_02032028
- mov r1, #0x0
- bx r3
- .balign 4
-_020318BC: .word FUN_02031D20
-_020318C0: .word FUN_02032028
-
- thumb_func_start FUN_020318C4
-FUN_020318C4: ; 0x020318C4
- push {r4}
- sub sp, #0xc
- ldr r4, _0203190C ; =UNK_020EEC50
- add r3, sp, #0x0
- ldmia r4!, {r0-r1}
- add r2, r3, #0x0
- stmia r3!, {r0-r1}
- ldr r0, [r4, #0x0]
- str r0, [r3, #0x0]
- ldr r0, _02031910 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x24]
- cmp r0, #0x0
- bne _020318E8
- add sp, #0xc
- mov r0, #0x0
- pop {r4}
- bx lr
-_020318E8:
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- beq _02031904
-_020318EE:
- ldr r0, [r2, #0x0]
- cmp r1, r0
- bne _020318FC
- add sp, #0xc
- mov r0, #0x1
- pop {r4}
- bx lr
-_020318FC:
- add r2, r2, #0x4
- ldr r0, [r2, #0x0]
- cmp r0, #0x0
- bne _020318EE
-_02031904:
- mov r0, #0x0
- add sp, #0xc
- pop {r4}
- bx lr
- .balign 4
-_0203190C: .word UNK_020EEC50
-_02031910: .word UNK_021C5A00
-
- thumb_func_start FUN_02031914
-FUN_02031914: ; 0x02031914
- ldr r3, _0203191C ; =FUN_02031D20
- ldr r0, _02031920 ; =FUN_02032178
- mov r1, #0x0
- bx r3
- .balign 4
-_0203191C: .word FUN_02031D20
-_02031920: .word FUN_02032178
-
- thumb_func_start FUN_02031924
-FUN_02031924: ; 0x02031924
- ldr r0, _02031930 ; =UNK_021C5A00
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- add r0, #0x4c
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-_02031930: .word UNK_021C5A00
-
- thumb_func_start FUN_02031934
-FUN_02031934: ; 0x02031934
- push {r3, lr}
- bl FUN_0202E49C
- ldr r0, _02031944 ; =FUN_02032194
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02031944: .word FUN_02032194
-
- thumb_func_start FUN_02031948
-FUN_02031948: ; 0x02031948
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r7, r1, #0x0
- add r5, r2, #0x0
- add r4, r3, #0x0
- bl FUN_02030F40
- cmp r0, #0x0
- bne _02031980
- ldr r2, _02031984 ; =0x00007080
- mov r0, #0x3
- mov r1, #0xf
- bl FUN_02016828
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl FUN_02031734
- ldr r0, _02031988 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- add r1, #0x40
- strb r5, [r1, #0x0]
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- str r4, [r0, #0x30]
- ldr r0, _0203198C ; =FUN_020321D0
- bl FUN_02031D20
-_02031980:
- pop {r3-r7, pc}
- nop
-_02031984: .word 0x00007080
-_02031988: .word UNK_021C5A00
-_0203198C: .word FUN_020321D0
-
- thumb_func_start FUN_02031990
-FUN_02031990: ; 0x02031990
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r7, r1, #0x0
- add r5, r2, #0x0
- add r4, r3, #0x0
- bl FUN_02030F40
- cmp r0, #0x0
- bne _020319C8
- ldr r2, _020319CC ; =0x00007080
- mov r0, #0x3
- mov r1, #0xf
- bl FUN_02016828
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl FUN_02031734
- ldr r0, _020319D0 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- add r1, #0x40
- strb r5, [r1, #0x0]
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- str r4, [r0, #0x30]
- ldr r0, _020319D4 ; =FUN_0203224C
- bl FUN_02031D20
-_020319C8:
- pop {r3-r7, pc}
- nop
-_020319CC: .word 0x00007080
-_020319D0: .word UNK_021C5A00
-_020319D4: .word FUN_0203224C
-
- thumb_func_start FUN_020319D8
-FUN_020319D8: ; 0x020319D8
- ldr r1, _020319E8 ; =UNK_021C5A00
- ldr r3, _020319EC ; =FUN_02031D20
- ldr r1, [r1, #0x0]
- add r1, #0x3e
- strb r0, [r1, #0x0]
- ldr r0, _020319F0 ; =FUN_02032298
- mov r1, #0x0
- bx r3
- .balign 4
-_020319E8: .word UNK_021C5A00
-_020319EC: .word FUN_02031D20
-_020319F0: .word FUN_02032298
-
- thumb_func_start FUN_020319F4
-FUN_020319F4: ; 0x020319F4
- push {r3, lr}
- bl FUN_0202FCA8
- ldr r0, _02031A04 ; =FUN_02032364
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02031A04: .word FUN_02032364
-
- thumb_func_start FUN_02031A08
-FUN_02031A08: ; 0x02031A08
- push {r3, lr}
- ldr r0, _02031A1C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031A1A
- ldr r0, _02031A20 ; =FUN_02032440
- mov r1, #0x5
- bl FUN_02031D20
-_02031A1A:
- pop {r3, pc}
- .balign 4
-_02031A1C: .word UNK_021C5A00
-_02031A20: .word FUN_02032440
-
- thumb_func_start FUN_02031A24
-FUN_02031A24: ; 0x02031A24
- ldr r3, _02031A28 ; =FUN_0202D298
- bx r3
- .balign 4
-_02031A28: .word FUN_0202D298
-
- thumb_func_start FUN_02031A2C
-FUN_02031A2C: ; 0x02031A2C
- push {r4}
- sub sp, #0xc
- ldr r4, _02031A74 ; =UNK_020EEC5C
- add r3, sp, #0x0
- ldmia r4!, {r0-r1}
- add r2, r3, #0x0
- stmia r3!, {r0-r1}
- ldr r0, [r4, #0x0]
- str r0, [r3, #0x0]
- ldr r0, _02031A78 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x24]
- cmp r0, #0x0
- bne _02031A50
- add sp, #0xc
- mov r0, #0x0
- pop {r4}
- bx lr
-_02031A50:
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- beq _02031A6C
-_02031A56:
- ldr r0, [r2, #0x0]
- cmp r1, r0
- bne _02031A64
- add sp, #0xc
- mov r0, #0x1
- pop {r4}
- bx lr
-_02031A64:
- add r2, r2, #0x4
- ldr r0, [r2, #0x0]
- cmp r0, #0x0
- bne _02031A56
-_02031A6C:
- mov r0, #0x0
- add sp, #0xc
- pop {r4}
- bx lr
- .balign 4
-_02031A74: .word UNK_020EEC5C
-_02031A78: .word UNK_021C5A00
-
- thumb_func_start FUN_02031A7C
-FUN_02031A7C: ; 0x02031A7C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _02031ABC ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02031ABA
- ldr r2, _02031AC0 ; =0x00007080
- mov r0, #0x3
- mov r1, #0xf
- bl FUN_02016828
- cmp r0, #0x0
- bne _02031A9A
- bl FUN_020335E0
-_02031A9A:
- add r0, r4, #0x0
- mov r1, #0x9
- bl FUN_02031734
- ldr r0, _02031ABC ; =UNK_021C5A00
- mov r2, #0x9
- ldr r1, [r0, #0x0]
- add r1, #0x3f
- strb r2, [r1, #0x0]
- ldr r0, [r0, #0x0]
- mov r1, #0x0
- add r0, #0x40
- strb r1, [r0, #0x0]
- ldr r0, _02031AC4 ; =FUN_02032478
- bl FUN_02031D20
-_02031ABA:
- pop {r4, pc}
- .balign 4
-_02031ABC: .word UNK_021C5A00
-_02031AC0: .word 0x00007080
-_02031AC4: .word FUN_02032478
-
- thumb_func_start FUN_02031AC8
-FUN_02031AC8: ; 0x02031AC8
- push {r3, lr}
- ldr r1, _02031AEC ; =UNK_021C5A00
- ldr r2, [r1, #0x0]
- add r2, #0x3e
- strb r0, [r2, #0x0]
- ldr r0, [r1, #0x0]
- mov r2, #0x3
- strh r2, [r0, #0x38]
- mov r0, #0x1
- bl FUN_0202D344
- bl FUN_02033E74
- ldr r0, _02031AF0 ; =FUN_02032628
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02031AEC: .word UNK_021C5A00
-_02031AF0: .word FUN_02032628
-
- thumb_func_start FUN_02031AF4
-FUN_02031AF4: ; 0x02031AF4
- ldr r0, _02031B20 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02031B02
- mov r0, #0x0
- mvn r0, r0
- bx lr
-_02031B02:
- ldr r1, [r0, #0x24]
- ldr r0, _02031B24 ; =FUN_0203279C
- cmp r1, r0
- bne _02031B0E
- mov r0, #0x1
- bx lr
-_02031B0E:
- ldr r0, _02031B28 ; =FUN_020327B4
- cmp r1, r0
- bne _02031B18
- mov r0, #0x1
- b _02031B1A
-_02031B18:
- mov r0, #0x0
-_02031B1A:
- neg r0, r0
- bx lr
- nop
-_02031B20: .word UNK_021C5A00
-_02031B24: .word FUN_0203279C
-_02031B28: .word FUN_020327B4
-
- thumb_func_start FUN_02031B2C
-FUN_02031B2C: ; 0x02031B2C
- ldr r0, _02031B48 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02031B38
- mov r0, #0x0
- bx lr
-_02031B38:
- ldr r1, [r0, #0x24]
- ldr r0, _02031B4C ; =FUN_020327FC
- cmp r1, r0
- bne _02031B44
- mov r0, #0x1
- bx lr
-_02031B44:
- mov r0, #0x0
- bx lr
- .balign 4
-_02031B48: .word UNK_021C5A00
-_02031B4C: .word FUN_020327FC
-
- thumb_func_start FUN_02031B50
-FUN_02031B50: ; 0x02031B50
- push {r3, lr}
- mov r0, #0x0
- bl FUN_0202D344
- ldr r0, _02031BC4 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- add r0, r1, #0x0
- add r0, #0x44
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02031B78
- add r0, r1, #0x0
- add r0, #0x45
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02031B78
- add r1, #0x3f
- ldrb r0, [r1, #0x0]
- cmp r0, #0x9
- bne _02031B80
-_02031B78:
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_020334E8
-_02031B80:
- bl FUN_02033ED0
- ldr r0, _02031BC4 ; =UNK_021C5A00
- mov r2, #0x9
- ldr r1, [r0, #0x0]
- add r1, #0x3f
- strb r2, [r1, #0x0]
- ldr r1, [r0, #0x0]
- mov r2, #0x0
- add r1, #0x48
- strb r2, [r1, #0x0]
- ldr r0, [r0, #0x0]
- add r0, #0x3c
- ldrb r0, [r0, #0x0]
- bl FUN_0202D1B0
- bl FUN_02031190
- cmp r0, #0x0
- bne _02031BB8
- mov r0, #0x1
- bl FUN_0202D36C
- ldr r0, _02031BC8 ; =FUN_020323DC
- mov r1, #0xf
- bl FUN_02031D20
- pop {r3, pc}
-_02031BB8:
- ldr r0, _02031BCC ; =FUN_02032424
- mov r1, #0x5
- bl FUN_02031D20
- pop {r3, pc}
- nop
-_02031BC4: .word UNK_021C5A00
-_02031BC8: .word FUN_020323DC
-_02031BCC: .word FUN_02032424
-
- thumb_func_start FUN_02031BD0
-FUN_02031BD0: ; 0x02031BD0
- ldr r0, _02031BEC ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02031BDC
- mov r0, #0x1
- bx lr
-_02031BDC:
- ldr r1, [r0, #0x24]
- ldr r0, _02031BF0 ; =FUN_020324F8
- cmp r1, r0
- beq _02031BE8
- mov r0, #0x1
- bx lr
-_02031BE8:
- mov r0, #0x0
- bx lr
- .balign 4
-_02031BEC: .word UNK_021C5A00
-_02031BF0: .word FUN_020324F8
-
- thumb_func_start FUN_02031BF4
-FUN_02031BF4: ; 0x02031BF4
- push {r3, lr}
- ldr r0, _02031C08 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031C06
- ldr r0, _02031C0C ; =FUN_02032440
- mov r1, #0x5
- bl FUN_02031D20
-_02031C06:
- pop {r3, pc}
- .balign 4
-_02031C08: .word UNK_021C5A00
-_02031C0C: .word FUN_02032440
-
- thumb_func_start FUN_02031C10
-FUN_02031C10: ; 0x02031C10
- push {r3, lr}
- ldr r0, _02031C28 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _02031C24
- mov r0, #0x1
- add r1, #0x48
- strb r0, [r1, #0x0]
- bl FUN_0202D344
-_02031C24:
- pop {r3, pc}
- nop
-_02031C28: .word UNK_021C5A00
-
- thumb_func_start FUN_02031C2C
-FUN_02031C2C: ; 0x02031C2C
- push {r3, lr}
- ldr r0, _02031C4C ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _02031C48
- mov r0, #0x1
- add r1, #0x48
- strb r0, [r1, #0x0]
- bl FUN_0202D344
- ldr r0, _02031C50 ; =FUN_02032850
- mov r1, #0x0
- bl FUN_02031D20
-_02031C48:
- pop {r3, pc}
- nop
-_02031C4C: .word UNK_021C5A00
-_02031C50: .word FUN_02032850
-
- thumb_func_start FUN_02031C54
-FUN_02031C54: ; 0x02031C54
- ldr r0, _02031C60 ; =UNK_021C5A00
- mov r1, #0x12
- ldr r0, [r0, #0x0]
- add r0, #0x3f
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-_02031C60: .word UNK_021C5A00
-
- thumb_func_start FUN_02031C64
-FUN_02031C64: ; 0x02031C64
- ldr r0, _02031C70 ; =UNK_021C5A00
- mov r1, #0x9
- ldr r0, [r0, #0x0]
- add r0, #0x3f
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-_02031C70: .word UNK_021C5A00
-
- thumb_func_start FUN_02031C74
-FUN_02031C74: ; 0x02031C74
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02030F40
- cmp r0, #0x0
- bne _02031C9C
- ldr r2, _02031CA0 ; =0x00007080
- mov r0, #0x3
- mov r1, #0xf
- bl FUN_02016828
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02031734
- ldr r0, _02031CA4 ; =FUN_02032E00
- mov r1, #0x0
- bl FUN_02031D20
-_02031C9C:
- pop {r3-r5, pc}
- nop
-_02031CA0: .word 0x00007080
-_02031CA4: .word FUN_02032E00
-
- thumb_func_start FUN_02031CA8
-FUN_02031CA8: ; 0x02031CA8
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02030F40
- cmp r0, #0x0
- bne _02031CD0
- ldr r2, _02031CD4 ; =0x00007080
- mov r0, #0x3
- mov r1, #0xf
- bl FUN_02016828
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02031734
- ldr r0, _02031CD8 ; =FUN_02032E48
- mov r1, #0x0
- bl FUN_02031D20
-_02031CD0:
- pop {r3-r5, pc}
- nop
-_02031CD4: .word 0x00007080
-_02031CD8: .word FUN_02032E48
-
- thumb_func_start FUN_02031CDC
-FUN_02031CDC: ; 0x02031CDC
- push {r3, lr}
- ldr r0, _02031D1C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031CEE
- ldr r0, [r0, #0x24]
- cmp r0, #0x0
- beq _02031CEE
- blx r0
-_02031CEE:
- bl FUN_02033590
- cmp r0, #0x0
- beq _02031D04
- bl MOD04_021DDB08
- mov r1, #0x3
- sub r0, r1, r0
- bl FUN_02033EEC
- pop {r3, pc}
-_02031D04:
- bl FUN_0202EDF8
- cmp r0, #0x0
- beq _02031D18
- bl WM_GetLinkLevel
- mov r1, #0x3
- sub r0, r1, r0
- bl FUN_02033EEC
-_02031D18:
- pop {r3, pc}
- nop
-_02031D1C: .word UNK_021C5A00
-
- thumb_func_start FUN_02031D20
-FUN_02031D20: ; 0x02031D20
- ldr r2, _02031D2C ; =UNK_021C5A00
- ldr r3, [r2, #0x0]
- str r0, [r3, #0x24]
- ldr r0, [r2, #0x0]
- strh r1, [r0, #0x3a]
- bx lr
- .balign 4
-_02031D2C: .word UNK_021C5A00
-
- thumb_func_start FUN_02031D30
-FUN_02031D30: ; 0x02031D30
- push {r3-r5, lr}
- ldr r0, _02031DF8 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02031D42
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3-r5, pc}
-_02031D42:
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _02031DF6
- ldr r0, _02031DF8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02031DF8 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202DB14
- mov r0, #0x1
- bl FUN_02031268
- bl FUN_02030FA8
- ldr r0, _02031DF8 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- add r0, r1, #0x0
- add r0, #0x4a
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031DC8
- add r1, #0x43
- ldrb r1, [r1, #0x0]
- mov r0, #0x1
- mov r2, #0x7d
- lsl r2, r2, #0x2
- add r3, r0, #0x0
- bl FUN_0202F918
- cmp r0, #0x0
- beq _02031DF6
- ldr r0, _02031DF8 ; =UNK_021C5A00
- ldr r5, [r0, #0x0]
- add r4, r5, #0x0
- add r4, #0xc
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r5, #0xc]
- ldr r3, [r4, #0x4]
- bl _ll_mul
- ldr r2, [r4, #0x10]
- ldr r3, [r4, #0x14]
- add r0, r2, r0
- adc r3, r1
- str r0, [r5, #0xc]
- str r3, [r4, #0x4]
- add r0, r3, #0x0
- mov r1, #0x0
- mov r2, #0x14
- mov r3, #0x0
- bl _ll_mul
- mov r0, #0x0
- add r5, #0x43
- strb r0, [r5, #0x0]
- ldr r0, _02031DFC ; =FUN_020320C4
- add r1, #0x14
- bl FUN_02031D20
- pop {r3-r5, pc}
-_02031DC8:
- mov r0, #0x1
- mov r2, #0x7d
- add r1, r0, #0x0
- lsl r2, r2, #0x2
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02031DF6
- ldr r0, _02031DF8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x4c
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031DEE
- ldr r0, _02031E00 ; =FUN_020323B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3-r5, pc}
-_02031DEE:
- ldr r0, _02031E04 ; =FUN_02031EE0
- mov r1, #0x40
- bl FUN_02031D20
-_02031DF6:
- pop {r3-r5, pc}
- .balign 4
-_02031DF8: .word UNK_021C5A00
-_02031DFC: .word FUN_020320C4
-_02031E00: .word FUN_020323B8
-_02031E04: .word FUN_02031EE0
-
- thumb_func_start FUN_02031E08
-FUN_02031E08: ; 0x02031E08
- push {r3-r5, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _02031E7C
- mov r0, #0x1
- bl FUN_02031268
- bl FUN_02030FA8
- ldr r0, _02031E80 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x4a
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02031E32
- ldr r0, _02031E84 ; =FUN_02032058
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3-r5, pc}
-_02031E32:
- mov r2, #0x7d
- mov r0, #0x0
- mov r1, #0x1
- lsl r2, r2, #0x2
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02031E7C
- ldr r0, _02031E80 ; =UNK_021C5A00
- ldr r5, [r0, #0x0]
- add r4, r5, #0x0
- add r4, #0xc
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r5, #0xc]
- ldr r3, [r4, #0x4]
- bl _ll_mul
- ldr r2, [r4, #0x10]
- ldr r3, [r4, #0x14]
- add r0, r2, r0
- adc r3, r1
- str r0, [r5, #0xc]
- mov r1, #0x0
- str r3, [r4, #0x4]
- lsr r0, r3, #0x1a
- lsl r1, r1, #0x6
- orr r1, r0
- ldrh r0, [r5, #0x38]
- cmp r0, #0x0
- beq _02031E76
- lsl r1, r0, #0x6
- mov r0, #0x0
- strh r0, [r5, #0x38]
-_02031E76:
- ldr r0, _02031E88 ; =FUN_02031EE0
- bl FUN_02031D20
-_02031E7C:
- pop {r3-r5, pc}
- nop
-_02031E80: .word UNK_021C5A00
-_02031E84: .word FUN_02032058
-_02031E88: .word FUN_02031EE0
-
- thumb_func_start FUN_02031E8C
-FUN_02031E8C: ; 0x02031E8C
- push {r3-r5, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _02031ED6
- mov r0, #0x0
- mov r2, #0x7d
- add r1, r0, #0x0
- lsl r2, r2, #0x2
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02031ED6
- ldr r0, _02031ED8 ; =UNK_021C5A00
- ldr r4, [r0, #0x0]
- add r5, r4, #0x0
- add r5, #0xc
- ldr r0, [r5, #0x8]
- ldr r1, [r5, #0xc]
- ldr r2, [r4, #0xc]
- ldr r3, [r5, #0x4]
- bl _ll_mul
- ldr r2, [r5, #0x10]
- ldr r3, [r5, #0x14]
- add r0, r2, r0
- adc r3, r1
- str r0, [r4, #0xc]
- mov r1, #0x0
- lsr r2, r3, #0x1b
- lsl r1, r1, #0x5
- orr r1, r2
- ldr r0, _02031EDC ; =FUN_02031EE0
- add r1, #0x10
- str r3, [r5, #0x4]
- bl FUN_02031D20
-_02031ED6:
- pop {r3-r5, pc}
- .balign 4
-_02031ED8: .word UNK_021C5A00
-_02031EDC: .word FUN_02031EE0
-
- thumb_func_start FUN_02031EE0
-FUN_02031EE0: ; 0x02031EE0
- push {r3, lr}
- bl FUN_0202EA54
- ldr r0, _02031F54 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- add r0, r1, #0x0
- add r0, #0x4f
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02031F50
- add r1, #0x4b
- ldrb r0, [r1, #0x0]
- cmp r0, #0x0
- bne _02031F50
- bl FUN_0202E8F4
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- beq _02031F1A
- ldr r1, _02031F54 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- add r1, #0x3e
- strb r0, [r1, #0x0]
- ldr r0, _02031F58 ; =FUN_02031F60
- mov r1, #0x20
- bl FUN_02031D20
- pop {r3, pc}
-_02031F1A:
- ldr r0, _02031F54 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02031F2A
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_02031F2A:
- bl FUN_0202E950
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- beq _02031F48
- ldr r1, _02031F54 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- add r1, #0x3e
- strb r0, [r1, #0x0]
- ldr r0, _02031F58 ; =FUN_02031F60
- mov r1, #0x20
- bl FUN_02031D20
- pop {r3, pc}
-_02031F48:
- ldr r0, _02031F5C ; =FUN_02032028
- mov r1, #0x0
- bl FUN_02031D20
-_02031F50:
- pop {r3, pc}
- nop
-_02031F54: .word UNK_021C5A00
-_02031F58: .word FUN_02031F60
-_02031F5C: .word FUN_02032028
-
- thumb_func_start FUN_02031F60
-FUN_02031F60: ; 0x02031F60
- push {r3, lr}
- bl FUN_0202EA54
- ldr r0, _02031FBC ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202E8A0
- cmp r0, #0x0
- beq _02031F90
- ldr r0, _02031FBC ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202FB18
- cmp r0, #0x0
- beq _02031F90
- ldr r0, _02031FC0 ; =FUN_02031FC8
- mov r1, #0x64
- bl FUN_02031D20
- pop {r3, pc}
-_02031F90:
- bl FUN_020311F0
- cmp r0, #0x0
- beq _02031FA2
- ldr r0, _02031FC4 ; =FUN_02032028
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02031FA2:
- ldr r0, _02031FBC ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02031FB2
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_02031FB2:
- ldr r0, _02031FC4 ; =FUN_02032028
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02031FBC: .word UNK_021C5A00
-_02031FC0: .word FUN_02031FC8
-_02031FC4: .word FUN_02032028
-
- thumb_func_start FUN_02031FC8
-FUN_02031FC8: ; 0x02031FC8
- push {r3, lr}
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _02031FEE
- bl FUN_0202FC60
- mov r0, #0x0
- bl FUN_02031268
- bl FUN_02030FA8
- ldr r0, _0203201C ; =FUN_0203213C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02031FEE:
- bl FUN_020311F0
- cmp r0, #0x0
- beq _02032000
- ldr r0, _02032020 ; =FUN_02032028
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032000:
- ldr r0, _02032024 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02032010
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_02032010:
- ldr r0, _02032020 ; =FUN_02032028
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- nop
-_0203201C: .word FUN_0203213C
-_02032020: .word FUN_02032028
-_02032024: .word UNK_021C5A00
-
- thumb_func_start FUN_02032028
-FUN_02032028: ; 0x02032028
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203203A
- ldr r0, _0203203C ; =FUN_02032058
- mov r1, #0x0
- bl FUN_02031D20
-_0203203A:
- pop {r3, pc}
- .balign 4
-_0203203C: .word FUN_02032058
-
- thumb_func_start FUN_02032040
-FUN_02032040: ; 0x02032040
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _02032052
- ldr r0, _02032054 ; =FUN_02031E8C
- mov r1, #0x0
- bl FUN_02031D20
-_02032052:
- pop {r3, pc}
- .balign 4
-_02032054: .word FUN_02031E8C
-
- thumb_func_start FUN_02032058
-FUN_02032058: ; 0x02032058
- push {r3-r5, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _020320BA
- mov r0, #0x1
- bl FUN_02031268
- ldr r1, _020320BC ; =UNK_021C5A00
- mov r2, #0x7d
- ldr r1, [r1, #0x0]
- mov r0, #0x0
- add r1, #0x43
- ldrb r1, [r1, #0x0]
- lsl r2, r2, #0x2
- mov r3, #0x1
- bl FUN_0202F918
- cmp r0, #0x0
- beq _020320BA
- ldr r0, _020320BC ; =UNK_021C5A00
- ldr r5, [r0, #0x0]
- add r4, r5, #0x0
- add r4, #0xc
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r5, #0xc]
- ldr r3, [r4, #0x4]
- bl _ll_mul
- ldr r2, [r4, #0x10]
- ldr r3, [r4, #0x14]
- add r0, r2, r0
- adc r3, r1
- str r0, [r5, #0xc]
- str r3, [r4, #0x4]
- add r0, r3, #0x0
- mov r1, #0x0
- mov r2, #0x14
- mov r3, #0x0
- bl _ll_mul
- mov r0, #0x0
- add r5, #0x43
- strb r0, [r5, #0x0]
- ldr r0, _020320C0 ; =FUN_020320C4
- add r1, #0x14
- bl FUN_02031D20
-_020320BA:
- pop {r3-r5, pc}
- .balign 4
-_020320BC: .word UNK_021C5A00
-_020320C0: .word FUN_020320C4
-
- thumb_func_start FUN_020320C4
-FUN_020320C4: ; 0x020320C4
- push {r3, lr}
- bl FUN_020311E8
- cmp r0, #0x0
- beq _020320E2
- ldr r0, _0203210C ; =UNK_021C5A00
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- add r0, #0x43
- strb r1, [r0, #0x0]
- ldr r0, _02032110 ; =FUN_02032118
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020320E2:
- ldr r0, _0203210C ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _020320F2
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_020320F2:
- add r1, #0x4a
- ldrb r0, [r1, #0x0]
- cmp r0, #0x0
- bne _0203210A
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203210A
- ldr r0, _02032114 ; =FUN_02032040
- mov r1, #0x2
- bl FUN_02031D20
-_0203210A:
- pop {r3, pc}
- .balign 4
-_0203210C: .word UNK_021C5A00
-_02032110: .word FUN_02032118
-_02032114: .word FUN_02032040
-
- thumb_func_start FUN_02032118
-FUN_02032118: ; 0x02032118
- push {r3, lr}
- mov r0, #0x0
- bl FUN_02031268
- mov r0, #0x1
- bl FUN_0202EE84
- bl FUN_02030FA8
- ldr r0, _02032134 ; =FUN_02032138
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02032134: .word FUN_02032138
-
- thumb_func_start FUN_02032138
-FUN_02032138: ; 0x02032138
- bx lr
- .balign 4
-
- thumb_func_start FUN_0203213C
-FUN_0203213C: ; 0x0203213C
- bx lr
- .balign 4
-
- thumb_func_start FUN_02032140
-FUN_02032140: ; 0x02032140
- push {r3, lr}
- ldr r0, _02032170 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3f
- ldrb r0, [r0, #0x0]
- cmp r0, #0x13
- bhs _02032166
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _0203216E
- mov r0, #0x1
- bl FUN_02031268
- bl FUN_02030FA8
- mov r0, #0x1
- bl FUN_0202E7B0
-_02032166:
- ldr r0, _02032174 ; =FUN_020323B8
- mov r1, #0x0
- bl FUN_02031D20
-_0203216E:
- pop {r3, pc}
- .balign 4
-_02032170: .word UNK_021C5A00
-_02032174: .word FUN_020323B8
-
- thumb_func_start FUN_02032178
-FUN_02032178: ; 0x02032178
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203218E
- bl FUN_0202FC60
- ldr r0, _02032190 ; =FUN_02032140
- mov r1, #0x0
- bl FUN_02031D20
-_0203218E:
- pop {r3, pc}
- .balign 4
-_02032190: .word FUN_02032140
-
- thumb_func_start FUN_02032194
-FUN_02032194: ; 0x02032194
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _020321B0
- mov r0, #0x0
- bl FUN_0202E7B0
- bl FUN_0202FC60
- ldr r0, _020321B4 ; =FUN_02031E08
- mov r1, #0x0
- bl FUN_02031D20
-_020321B0:
- pop {r3, pc}
- nop
-_020321B4: .word FUN_02031E08
-
- thumb_func_start FUN_020321B8
-FUN_020321B8: ; 0x020321B8
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _020321CA
- ldr r0, _020321CC ; =FUN_02031E08
- mov r1, #0x0
- bl FUN_02031D20
-_020321CA:
- pop {r3, pc}
- .balign 4
-_020321CC: .word FUN_02031E08
-
- thumb_func_start FUN_020321D0
-FUN_020321D0: ; 0x020321D0
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _0203220C
- ldr r0, _02032210 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02032210 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x28]
- ldr r1, [r1, #0x30]
- bl FUN_0202DB14
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r2, r0, #0x9
- add r3, r0, #0x0
- bl FUN_0202F918
- cmp r0, #0x0
- beq _0203220C
- bl FUN_0202FA10
- ldr r0, _02032214 ; =FUN_02032218
- mov r1, #0x0
- bl FUN_02031D20
-_0203220C:
- pop {r3, pc}
- nop
-_02032210: .word UNK_021C5A00
-_02032214: .word FUN_02032218
-
- thumb_func_start FUN_02032218
-FUN_02032218: ; 0x02032218
- push {r3, lr}
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _0203222E
- ldr r0, _02032230 ; =FUN_02032234
- mov r1, #0x0
- bl FUN_02031D20
-_0203222E:
- pop {r3, pc}
- .balign 4
-_02032230: .word FUN_02032234
-
- thumb_func_start FUN_02032234
-FUN_02032234: ; 0x02032234
- push {r3, lr}
- bl FUN_02030F40
- cmp r0, #0x0
- bne _02032246
- ldr r0, _02032248 ; =FUN_020323BC
- mov r1, #0x0
- bl FUN_02031D20
-_02032246:
- pop {r3, pc}
- .balign 4
-_02032248: .word FUN_020323BC
-
- thumb_func_start FUN_0203224C
-FUN_0203224C: ; 0x0203224C
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _02032286
- ldr r0, _02032288 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02032288 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x28]
- ldr r1, [r1, #0x30]
- bl FUN_0202DB14
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r2, r0, #0x9
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02032286
- bl FUN_0202FA10
- ldr r0, _0203228C ; =FUN_02032290
- mov r1, #0x0
- bl FUN_02031D20
-_02032286:
- pop {r3, pc}
- .balign 4
-_02032288: .word UNK_021C5A00
-_0203228C: .word FUN_02032290
-
- thumb_func_start FUN_02032290
-FUN_02032290: ; 0x02032290
- ldr r3, _02032294 ; =FUN_0202EA54
- bx r3
- .balign 4
-_02032294: .word FUN_0202EA54
-
- thumb_func_start FUN_02032298
-FUN_02032298: ; 0x02032298
- push {r3, lr}
- bl FUN_0202EA54
- ldr r0, _020322B8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202FB18
- cmp r0, #0x0
- beq _020322B6
- ldr r0, _020322BC ; =FUN_020322C0
- mov r1, #0xa
- bl FUN_02031D20
-_020322B6:
- pop {r3, pc}
- .balign 4
-_020322B8: .word UNK_021C5A00
-_020322BC: .word FUN_020322C0
-
- thumb_func_start FUN_020322C0
-FUN_020322C0: ; 0x020322C0
- push {r3, lr}
- bl FUN_020311F0
- cmp r0, #0x0
- beq _020322D2
- ldr r0, _020322F0 ; =FUN_020322F8
- mov r1, #0x0
- bl FUN_02031D20
-_020322D2:
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _020322EE
- bl FUN_02031190
- cmp r0, #0x0
- beq _020322EE
- ldr r0, _020322F4 ; =FUN_0203234C
- mov r1, #0x0
- bl FUN_02031D20
-_020322EE:
- pop {r3, pc}
- .balign 4
-_020322F0: .word FUN_020322F8
-_020322F4: .word FUN_0203234C
-
- thumb_func_start FUN_020322F8
-FUN_020322F8: ; 0x020322F8
- push {r3, lr}
- bl FUN_0202E6F0
- ldr r0, _02032308 ; =FUN_0203230C
- mov r1, #0x2
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02032308: .word FUN_0203230C
-
- thumb_func_start FUN_0203230C
-FUN_0203230C: ; 0x0203230C
- push {r3, lr}
- ldr r0, _02032344 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _0203231E
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_0203231E:
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _02032340
- mov r1, #0x1
- mov r0, #0x0
- lsl r2, r1, #0x9
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02032340
- bl FUN_0202FA10
- ldr r0, _02032348 ; =FUN_02032298
- mov r1, #0xa
- bl FUN_02031D20
-_02032340:
- pop {r3, pc}
- nop
-_02032344: .word UNK_021C5A00
-_02032348: .word FUN_02032298
-
- thumb_func_start FUN_0203234C
-FUN_0203234C: ; 0x0203234C
- push {r3, lr}
- bl FUN_02030F40
- cmp r0, #0x0
- bne _0203235E
- ldr r0, _02032360 ; =FUN_020323BC
- mov r1, #0x0
- bl FUN_02031D20
-_0203235E:
- pop {r3, pc}
- .balign 4
-_02032360: .word FUN_020323BC
-
- thumb_func_start FUN_02032364
-FUN_02032364: ; 0x02032364
- push {r3, lr}
- bl FUN_0202E6F0
- ldr r0, _02032374 ; =FUN_02032378
- mov r1, #0x2
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02032374: .word FUN_02032378
-
- thumb_func_start FUN_02032378
-FUN_02032378: ; 0x02032378
- push {r3, lr}
- ldr r0, _020323B0 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _0203238A
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_0203238A:
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _020323AC
- mov r1, #0x1
- mov r0, #0x0
- lsl r2, r1, #0x9
- bl FUN_0202F950
- cmp r0, #0x0
- beq _020323AC
- bl FUN_0202FA10
- ldr r0, _020323B4 ; =FUN_02032290
- mov r1, #0xa
- bl FUN_02031D20
-_020323AC:
- pop {r3, pc}
- nop
-_020323B0: .word UNK_021C5A00
-_020323B4: .word FUN_02032290
-
- thumb_func_start FUN_020323B8
-FUN_020323B8: ; 0x020323B8
- bx lr
- .balign 4
-
- thumb_func_start FUN_020323BC
-FUN_020323BC: ; 0x020323BC
- push {r3, lr}
- bl FUN_02030F40
- cmp r0, #0x0
- bne _020323CA
- bl FUN_020317C0
-_020323CA:
- pop {r3, pc}
-
- thumb_func_start FUN_020323CC
-FUN_020323CC: ; 0x020323CC
- ldr r3, _020323D4 ; =FUN_02031D20
- ldr r0, _020323D8 ; =FUN_02032440
- mov r1, #0x5
- bx r3
- .balign 4
-_020323D4: .word FUN_02031D20
-_020323D8: .word FUN_02032440
-
- thumb_func_start FUN_020323DC
-FUN_020323DC: ; 0x020323DC
- push {r3, lr}
- bl FUN_02030F20
- cmp r0, #0x1
- bgt _020323F8
- mov r0, #0x0
- bl FUN_0202D36C
- bl FUN_0202FC80
- ldr r0, _0203241C ; =FUN_020324F8
- mov r1, #0x0
- bl FUN_02031D20
-_020323F8:
- ldr r0, _02032420 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02032408
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_02032408:
- mov r0, #0x0
- bl FUN_0202D36C
- bl FUN_0202FC80
- ldr r0, _0203241C ; =FUN_020324F8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_0203241C: .word FUN_020324F8
-_02032420: .word UNK_021C5A00
-
- thumb_func_start FUN_02032424
-FUN_02032424: ; 0x02032424
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203243A
- bl FUN_0202FC60
- ldr r0, _0203243C ; =FUN_020324F8
- mov r1, #0x0
- bl FUN_02031D20
-_0203243A:
- pop {r3, pc}
- .balign 4
-_0203243C: .word FUN_020324F8
-
- thumb_func_start FUN_02032440
-FUN_02032440: ; 0x02032440
- push {r3, lr}
- ldr r0, _02032470 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02032450
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
-_02032450:
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203246E
- ldr r0, _02032470 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldrh r0, [r0, #0x3a]
- cmp r0, #0x0
- bne _0203246E
- bl FUN_0202FA5C
- ldr r0, _02032474 ; =FUN_020323BC
- mov r1, #0x0
- bl FUN_02031D20
-_0203246E:
- pop {r3, pc}
- .balign 4
-_02032470: .word UNK_021C5A00
-_02032474: .word FUN_020323BC
-
- thumb_func_start FUN_02032478
-FUN_02032478: ; 0x02032478
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _020324BE
- ldr r0, _020324C0 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _020324C0 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3c
- ldrb r0, [r0, #0x0]
- bl FUN_0202D1B0
- ldr r0, _020324C0 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202DB14
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r2, r0, #0x9
- bl FUN_0202F950
- cmp r0, #0x0
- beq _020324BE
- bl FUN_0202FA10
- ldr r0, _020324C4 ; =FUN_020324C8
- mov r1, #0x40
- bl FUN_02031D20
-_020324BE:
- pop {r3, pc}
- .balign 4
-_020324C0: .word UNK_021C5A00
-_020324C4: .word FUN_020324C8
-
- thumb_func_start FUN_020324C8
-FUN_020324C8: ; 0x020324C8
- push {r3, lr}
- bl FUN_0202EA54
- ldr r0, _020324F0 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _020324DE
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_020324DE:
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _020324EE
- ldr r0, _020324F4 ; =FUN_02032510
- mov r1, #0x0
- bl FUN_02031D20
-_020324EE:
- pop {r3, pc}
- .balign 4
-_020324F0: .word UNK_021C5A00
-_020324F4: .word FUN_02032510
-
- thumb_func_start FUN_020324F8
-FUN_020324F8: ; 0x020324F8
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203250A
- ldr r0, _0203250C ; =FUN_02032510
- mov r1, #0x0
- bl FUN_02031D20
-_0203250A:
- pop {r3, pc}
- .balign 4
-_0203250C: .word FUN_02032510
-
- thumb_func_start FUN_02032510
-FUN_02032510: ; 0x02032510
- push {r3-r5, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _02032568
- ldr r1, _0203256C ; =UNK_021C5A00
- mov r2, #0x2
- ldr r1, [r1, #0x0]
- mov r0, #0x0
- add r1, #0x43
- ldrb r1, [r1, #0x0]
- lsl r2, r2, #0x8
- mov r3, #0x1
- bl FUN_0202F918
- cmp r0, #0x0
- beq _02032568
- ldr r0, _0203256C ; =UNK_021C5A00
- ldr r4, [r0, #0x0]
- add r5, r4, #0x0
- add r5, #0xc
- ldr r0, [r5, #0x8]
- ldr r1, [r5, #0xc]
- ldr r2, [r4, #0xc]
- ldr r3, [r5, #0x4]
- bl _ll_mul
- ldr r2, [r5, #0x10]
- ldr r3, [r5, #0x14]
- add r0, r2, r0
- adc r3, r1
- str r0, [r4, #0xc]
- str r3, [r5, #0x4]
- bl FUN_0202FA10
- ldr r0, _0203256C ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x43
- strb r1, [r0, #0x0]
- ldr r0, _02032570 ; =FUN_02032578
- ldr r1, _02032574 ; =0x00002710
- bl FUN_02031D20
-_02032568:
- pop {r3-r5, pc}
- nop
-_0203256C: .word UNK_021C5A00
-_02032570: .word FUN_02032578
-_02032574: .word 0x00002710
-
- thumb_func_start FUN_02032578
-FUN_02032578: ; 0x02032578
- push {r3, lr}
- bl FUN_0202F104
- cmp r0, #0x0
- bne _020325B2
- bl FUN_020311E8
- cmp r0, #0x0
- beq _020325A2
- ldr r0, _020325C4 ; =UNK_021C5A00
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- add r0, #0x43
- strb r1, [r0, #0x0]
- bl FUN_02033E74
- ldr r0, _020325C8 ; =FUN_020327FC
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020325A2:
- ldr r0, _020325C4 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _020325B2
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_020325B2:
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _020325C2
- ldr r0, _020325CC ; =FUN_020325D0
- mov r1, #0x0
- bl FUN_02031D20
-_020325C2:
- pop {r3, pc}
- .balign 4
-_020325C4: .word UNK_021C5A00
-_020325C8: .word FUN_020327FC
-_020325CC: .word FUN_020325D0
-
- thumb_func_start FUN_020325D0
-FUN_020325D0: ; 0x020325D0
- push {r3-r5, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _0203261C
- mov r0, #0x0
- mov r2, #0x2
- add r1, r0, #0x0
- lsl r2, r2, #0x8
- bl FUN_0202F950
- cmp r0, #0x0
- beq _0203261C
- bl FUN_0202FA10
- ldr r0, _02032620 ; =UNK_021C5A00
- ldr r4, [r0, #0x0]
- add r5, r4, #0x0
- add r5, #0xc
- ldr r0, [r5, #0x8]
- ldr r1, [r5, #0xc]
- ldr r2, [r4, #0xc]
- ldr r3, [r5, #0x4]
- bl _ll_mul
- ldr r2, [r5, #0x10]
- ldr r3, [r5, #0x14]
- add r0, r2, r0
- adc r3, r1
- str r0, [r4, #0xc]
- mov r1, #0x0
- ldr r0, _02032624 ; =FUN_020324C8
- lsr r2, r3, #0x1b
- lsl r1, r1, #0x5
- orr r1, r2
- str r3, [r5, #0x4]
- bl FUN_02031D20
-_0203261C:
- pop {r3-r5, pc}
- nop
-_02032620: .word UNK_021C5A00
-_02032624: .word FUN_020324C8
-
- thumb_func_start FUN_02032628
-FUN_02032628: ; 0x02032628
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203263A
- ldr r0, _0203263C ; =FUN_02032640
- mov r1, #0x0
- bl FUN_02031D20
-_0203263A:
- pop {r3, pc}
- .balign 4
-_0203263C: .word FUN_02032640
-
- thumb_func_start FUN_02032640
-FUN_02032640: ; 0x02032640
- push {r3, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _02032666
- mov r0, #0x0
- mov r2, #0x2
- add r1, r0, #0x0
- lsl r2, r2, #0x8
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02032666
- bl FUN_0202FA10
- ldr r0, _02032668 ; =FUN_0203266C
- mov r1, #0x64
- bl FUN_02031D20
-_02032666:
- pop {r3, pc}
- .balign 4
-_02032668: .word FUN_0203266C
-
- thumb_func_start FUN_0203266C
-FUN_0203266C: ; 0x0203266C
- push {r3, lr}
- ldr r0, _020326C4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202E8A0
- cmp r0, #0x0
- beq _02032698
- ldr r0, _020326C4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202FB18
- cmp r0, #0x0
- beq _02032698
- ldr r0, _020326C8 ; =FUN_020326D0
- mov r1, #0x64
- bl FUN_02031D20
- pop {r3, pc}
-_02032698:
- bl FUN_020311F0
- cmp r0, #0x0
- beq _020326AA
- ldr r0, _020326CC ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020326AA:
- ldr r0, _020326C4 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _020326BA
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_020326BA:
- ldr r0, _020326CC ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_020326C4: .word UNK_021C5A00
-_020326C8: .word FUN_020326D0
-_020326CC: .word FUN_020327B8
-
- thumb_func_start FUN_020326D0
-FUN_020326D0: ; 0x020326D0
- push {r3, lr}
- bl FUN_020311F0
- cmp r0, #0x0
- beq _020326E4
- ldr r0, _02032728 ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020326E4:
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _0203270C
- ldr r0, _0203272C ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x3d
- strb r1, [r0, #0x0]
- ldr r1, _02032730 ; =UNK_02105D5C
- mov r0, #0x6
- bl FUN_020311D0
- ldr r0, _02032734 ; =FUN_02032738
- mov r1, #0x78
- bl FUN_02031D20
- pop {r3, pc}
-_0203270C:
- ldr r0, _0203272C ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _0203271C
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_0203271C:
- ldr r0, _02032728 ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- nop
-_02032728: .word FUN_020327B8
-_0203272C: .word UNK_021C5A00
-_02032730: .word UNK_02105D5C
-_02032734: .word FUN_02032738
-
- thumb_func_start FUN_02032738
-FUN_02032738: ; 0x02032738
- push {r3, lr}
- bl FUN_020311F0
- cmp r0, #0x0
- beq _0203274C
- ldr r0, _0203278C ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_0203274C:
- ldr r0, _02032790 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- add r0, r1, #0x0
- add r0, #0x3d
- ldrb r0, [r0, #0x0]
- cmp r0, #0x2
- bne _02032764
- ldr r0, _02032794 ; =FUN_020327B4
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032764:
- cmp r0, #0x1
- bne _02032776
- bl FUN_0202DBE0
- ldr r0, _02032798 ; =FUN_0203279C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032776:
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- beq _02032782
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_02032782:
- ldr r0, _0203278C ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_0203278C: .word FUN_020327B8
-_02032790: .word UNK_021C5A00
-_02032794: .word FUN_020327B4
-_02032798: .word FUN_0203279C
-
- thumb_func_start FUN_0203279C
-FUN_0203279C: ; 0x0203279C
- push {r3, lr}
- bl FUN_020311F0
- cmp r0, #0x0
- beq _020327AE
- ldr r0, _020327B0 ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
-_020327AE:
- pop {r3, pc}
- .balign 4
-_020327B0: .word FUN_020327B8
-
- thumb_func_start FUN_020327B4
-FUN_020327B4: ; 0x020327B4
- bx lr
- .balign 4
-
- thumb_func_start FUN_020327B8
-FUN_020327B8: ; 0x020327B8
- push {r3, lr}
- ldr r0, _020327F0 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x3d
- strb r1, [r0, #0x0]
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _020327EC
- ldr r0, _020327F0 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x38]
- cmp r0, #0x0
- beq _020327E4
- sub r0, r0, #0x1
- strh r0, [r1, #0x38]
- ldr r0, _020327F4 ; =FUN_02032640
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020327E4:
- ldr r0, _020327F8 ; =FUN_020327B4
- mov r1, #0x0
- bl FUN_02031D20
-_020327EC:
- pop {r3, pc}
- nop
-_020327F0: .word UNK_021C5A00
-_020327F4: .word FUN_02032640
-_020327F8: .word FUN_020327B4
-
- thumb_func_start FUN_020327FC
-FUN_020327FC: ; 0x020327FC
- push {r3, lr}
- bl FUN_020311E8
- cmp r0, #0x0
- bne _02032820
- bl FUN_02033510
- cmp r0, #0x0
- bne _0203282C
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _0203282C
- ldr r0, _02032848 ; =FUN_020325D0
- mov r1, #0x0
- bl FUN_02031D20
- b _0203282C
-_02032820:
- bl FUN_02031190
- cmp r0, #0x0
- bne _0203282C
- bl FUN_0202DDE8
-_0203282C:
- bl FUN_020311F0
- cmp r0, #0x0
- beq _02032844
- bl FUN_02033510
- cmp r0, #0x0
- bne _02032844
- ldr r0, _0203284C ; =FUN_020327B8
- mov r1, #0x0
- bl FUN_02031D20
-_02032844:
- pop {r3, pc}
- nop
-_02032848: .word FUN_020325D0
-_0203284C: .word FUN_020327B8
-
- thumb_func_start FUN_02032850
-FUN_02032850: ; 0x02032850
- push {r3, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _0203287E
- ldr r1, _02032880 ; =UNK_021C5A00
- mov r0, #0x0
- ldr r1, [r1, #0x0]
- mov r2, #0x2
- add r1, #0x43
- ldrb r1, [r1, #0x0]
- lsl r2, r2, #0x8
- add r3, r0, #0x0
- bl FUN_0202F918
- cmp r0, #0x0
- beq _0203287E
- bl FUN_0202FA10
- ldr r0, _02032884 ; =FUN_020323B8
- mov r1, #0x0
- bl FUN_02031D20
-_0203287E:
- pop {r3, pc}
- .balign 4
-_02032880: .word UNK_021C5A00
-_02032884: .word FUN_020323B8
-
- thumb_func_start FUN_02032888
-FUN_02032888: ; 0x02032888
- push {r3, lr}
- ldr r0, _020328BC ; =UNK_021C5A00
- mov r1, #0xd
- ldr r0, [r0, #0x0]
- add r0, #0x3f
- strb r1, [r0, #0x0]
- bl FUN_02031190
- cmp r0, #0x0
- add r0, sp, #0x0
- bne _020328AE
- mov r1, #0x0
- strb r1, [r0, #0x1]
- add r1, sp, #0x0
- mov r0, #0xa
- add r1, #0x1
- bl FUN_020311D0
- pop {r3, pc}
-_020328AE:
- mov r1, #0x0
- strb r1, [r0, #0x0]
- mov r0, #0xa
- add r1, sp, #0x0
- bl FUN_020311D0
- pop {r3, pc}
- .balign 4
-_020328BC: .word UNK_021C5A00
-
- thumb_func_start FUN_020328C0
-FUN_020328C0: ; 0x020328C0
- ldr r1, _020328D8 ; =UNK_021C5A00
- ldr r3, _020328DC ; =FUN_02031D20
- ldr r2, [r1, #0x0]
- add r2, #0x3e
- strb r0, [r2, #0x0]
- ldr r0, [r1, #0x0]
- mov r2, #0x3
- strh r2, [r0, #0x38]
- ldr r0, _020328E0 ; =FUN_02032924
- mov r1, #0x0
- bx r3
- nop
-_020328D8: .word UNK_021C5A00
-_020328DC: .word FUN_02031D20
-_020328E0: .word FUN_02032924
-
- thumb_func_start FUN_020328E4
-FUN_020328E4: ; 0x020328E4
- ldr r0, _020328F0 ; =UNK_021C5A00
- mov r1, #0x7
- ldr r0, [r0, #0x0]
- add r0, #0x3f
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-_020328F0: .word UNK_021C5A00
-
- thumb_func_start FUN_020328F4
-FUN_020328F4: ; 0x020328F4
- push {r3, lr}
- ldr r1, _0203291C ; =UNK_021C5A00
- ldr r2, [r1, #0x0]
- add r2, #0x3e
- strb r0, [r2, #0x0]
- ldr r0, [r1, #0x0]
- mov r2, #0x7
- add r0, #0x3f
- strb r2, [r0, #0x0]
- ldr r0, [r1, #0x0]
- mov r2, #0x3
- strh r2, [r0, #0x38]
- bl FUN_02033E74
- ldr r0, _02032920 ; =FUN_02032628
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- nop
-_0203291C: .word UNK_021C5A00
-_02032920: .word FUN_02032628
-
- thumb_func_start FUN_02032924
-FUN_02032924: ; 0x02032924
- push {r3, lr}
- bl FUN_0202E6F0
- cmp r0, #0x0
- beq _02032936
- ldr r0, _02032938 ; =FUN_0203293C
- mov r1, #0x0
- bl FUN_02031D20
-_02032936:
- pop {r3, pc}
- .balign 4
-_02032938: .word FUN_0203293C
-
- thumb_func_start FUN_0203293C
-FUN_0203293C: ; 0x0203293C
- push {r3, lr}
- bl FUN_0202EE0C
- cmp r0, #0x0
- beq _0203296C
- ldr r0, _02032970 ; =UNK_021C5A00
- mov r2, #0x2
- ldr r0, [r0, #0x0]
- mov r1, #0xd
- add r0, #0x3f
- strb r1, [r0, #0x0]
- mov r0, #0x0
- add r1, r0, #0x0
- lsl r2, r2, #0x8
- bl FUN_0202F950
- cmp r0, #0x0
- beq _0203296C
- bl FUN_0202FA1C
- ldr r0, _02032974 ; =FUN_02032978
- mov r1, #0x64
- bl FUN_02031D20
-_0203296C:
- pop {r3, pc}
- nop
-_02032970: .word UNK_021C5A00
-_02032974: .word FUN_02032978
-
- thumb_func_start FUN_02032978
-FUN_02032978: ; 0x02032978
- push {r3, lr}
- ldr r0, _020329E4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202E8A0
- cmp r0, #0x0
- beq _020329A4
- ldr r0, _020329E4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x3e
- ldrb r0, [r0, #0x0]
- bl FUN_0202FB18
- cmp r0, #0x0
- beq _020329A4
- ldr r0, _020329E8 ; =FUN_020329F4
- mov r1, #0x64
- bl FUN_02031D20
- pop {r3, pc}
-_020329A4:
- bl FUN_020311F0
- cmp r0, #0x0
- bne _020329B6
- ldr r0, _020329E4 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x0
- bne _020329DC
-_020329B6:
- ldr r0, _020329E4 ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- ldrh r1, [r2, #0x38]
- sub r1, r1, #0x1
- strh r1, [r2, #0x38]
- ldr r0, [r0, #0x0]
- ldrh r0, [r0, #0x38]
- cmp r0, #0x0
- bne _020329D2
- ldr r0, _020329EC ; =FUN_020327B4
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020329D2:
- ldr r0, _020329F0 ; =FUN_02032924
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020329DC:
- beq _020329E2
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
-_020329E2:
- pop {r3, pc}
- .balign 4
-_020329E4: .word UNK_021C5A00
-_020329E8: .word FUN_020329F4
-_020329EC: .word FUN_020327B4
-_020329F0: .word FUN_02032924
-
- thumb_func_start FUN_020329F4
-FUN_020329F4: ; 0x020329F4
- push {r3, lr}
- ldr r0, _02032A7C ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- ldrh r0, [r1, #0x3a]
- cmp r0, #0x5a
- bls _02032A06
- sub r0, r0, #0x1
- strh r0, [r1, #0x3a]
- pop {r3, pc}
-_02032A06:
- bl FUN_020311F0
- cmp r0, #0x0
- beq _02032A34
- ldr r0, _02032A7C ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- ldrh r1, [r2, #0x38]
- sub r1, r1, #0x1
- strh r1, [r2, #0x38]
- ldr r0, [r0, #0x0]
- ldrh r0, [r0, #0x38]
- cmp r0, #0x0
- bne _02032A2A
- ldr r0, _02032A80 ; =FUN_020327B4
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032A2A:
- ldr r0, _02032A84 ; =FUN_02032924
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032A34:
- bl FUN_02031190
- bl FUN_02030E7C
- cmp r0, #0x0
- beq _02032A4A
- ldr r0, _02032A88 ; =FUN_0203279C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032A4A:
- ldr r0, _02032A7C ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- ldrh r1, [r2, #0x3a]
- cmp r1, #0x0
- beq _02032A5A
- sub r0, r1, #0x1
- strh r0, [r2, #0x3a]
- pop {r3, pc}
-_02032A5A:
- ldrh r1, [r2, #0x38]
- sub r1, r1, #0x1
- strh r1, [r2, #0x38]
- ldr r0, [r0, #0x0]
- ldrh r0, [r0, #0x38]
- cmp r0, #0x0
- bne _02032A72
- ldr r0, _02032A80 ; =FUN_020327B4
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032A72:
- ldr r0, _02032A84 ; =FUN_02032924
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
- .balign 4
-_02032A7C: .word UNK_021C5A00
-_02032A80: .word FUN_020327B4
-_02032A84: .word FUN_02032924
-_02032A88: .word FUN_0203279C
-
- thumb_func_start FUN_02032A8C
-FUN_02032A8C: ; 0x02032A8C
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r2, #0x0
- bl FUN_02031190
- cmp r0, #0x0
- bne _02032ADA
- ldr r6, _02032ADC ; =UNK_02105D5C
- mov r3, #0x1
- mov r2, #0x0
-_02032AA0:
- ldrb r1, [r6, #0x0]
- ldrb r0, [r4, r2]
- cmp r1, r0
- beq _02032AAC
- mov r3, #0x0
- b _02032AB4
-_02032AAC:
- add r2, r2, #0x1
- add r6, r6, #0x1
- cmp r2, #0x6
- blo _02032AA0
-_02032AB4:
- cmp r3, #0x0
- beq _02032AD0
- ldr r0, _02032AE0 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x48
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02032AD0
- ldr r1, _02032AE4 ; =UNK_02105D6C
- mov r0, #0x7
- strb r5, [r1, #0x0]
- bl FUN_02030C4C
- pop {r4-r6, pc}
-_02032AD0:
- ldr r1, _02032AE8 ; =UNK_02105D64
- mov r0, #0x7
- strb r5, [r1, #0x0]
- bl FUN_02030C4C
-_02032ADA:
- pop {r4-r6, pc}
- .balign 4
-_02032ADC: .word UNK_02105D5C
-_02032AE0: .word UNK_021C5A00
-_02032AE4: .word UNK_02105D6C
-_02032AE8: .word UNK_02105D64
-
- thumb_func_start FUN_02032AEC
-FUN_02032AEC: ; 0x02032AEC
- push {r3-r5, lr}
- mov r4, #0x1
- ldr r5, _02032B5C ; =UNK_02105D6C + 1
- add r3, r4, #0x0
-_02032AF4:
- ldrb r1, [r5, #0x0]
- ldrb r0, [r2, r3]
- cmp r1, r0
- beq _02032B00
- mov r4, #0x0
- b _02032B08
-_02032B00:
- add r3, r3, #0x1
- add r5, r5, #0x1
- cmp r3, #0x6
- blo _02032AF4
-_02032B08:
- cmp r4, #0x0
- beq _02032B22
- ldrb r4, [r2, #0x0]
- bl FUN_02031190
- cmp r4, r0
- bne _02032B58
- ldr r0, _02032B60 ; =UNK_021C5A00
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- add r0, #0x3d
- strb r1, [r0, #0x0]
- pop {r3-r5, pc}
-_02032B22:
- mov r4, #0x1
- ldr r3, _02032B64 ; =UNK_02105D64 + 1
- add r5, r4, #0x0
-_02032B28:
- ldrb r1, [r3, #0x0]
- ldrb r0, [r2, r5]
- cmp r1, r0
- beq _02032B34
- mov r4, #0x0
- b _02032B3C
-_02032B34:
- add r5, r5, #0x1
- add r3, r3, #0x1
- cmp r5, #0x6
- blo _02032B28
-_02032B3C:
- cmp r4, #0x0
- beq _02032B58
- ldrb r4, [r2, #0x0]
- bl FUN_02031190
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r4, r0
- bne _02032B58
- ldr r0, _02032B60 ; =UNK_021C5A00
- mov r1, #0x2
- ldr r0, [r0, #0x0]
- add r0, #0x3d
- strb r1, [r0, #0x0]
-_02032B58:
- pop {r3-r5, pc}
- nop
-_02032B5C: .word UNK_02105D6C + 1
-_02032B60: .word UNK_021C5A00
-_02032B64: .word UNK_02105D64 + 1
-
- thumb_func_start FUN_02032B68
-FUN_02032B68: ; 0x02032B68
- mov r0, #0x6
- bx lr
-
- thumb_func_start FUN_02032B6C
-FUN_02032B6C: ; 0x02032B6C
- push {r3, lr}
- ldr r1, _02032B80 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- cmp r1, #0x0
- beq _02032B7E
- add r1, #0x3c
- strb r0, [r1, #0x0]
- bl FUN_0202D1B0
-_02032B7E:
- pop {r3, pc}
- .balign 4
-_02032B80: .word UNK_021C5A00
-
- thumb_func_start FUN_02032B84
-FUN_02032B84: ; 0x02032B84
- ldr r3, _02032B88 ; =FUN_0202EA54
- bx r3
- .balign 4
-_02032B88: .word FUN_0202EA54
-
- thumb_func_start FUN_02032B8C
-FUN_02032B8C: ; 0x02032B8C
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _02032BC6
- ldr r0, _02032BC8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02032BC8 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202DB14
- mov r0, #0x1
- add r1, r0, #0x0
- mov r2, #0x20
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02032BC6
- bl FUN_0202FA10
- ldr r0, _02032BCC ; =FUN_02032B84
- mov r1, #0x0
- bl FUN_02031D20
-_02032BC6:
- pop {r3, pc}
- .balign 4
-_02032BC8: .word UNK_021C5A00
-_02032BCC: .word FUN_02032B84
-
- thumb_func_start FUN_02032BD0
-FUN_02032BD0: ; 0x02032BD0
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02030F40
- cmp r0, #0x0
- bne _02032C00
- mov r2, #0x7
- mov r0, #0x3
- mov r1, #0xf
- lsl r2, r2, #0xc
- bl FUN_02016828
- add r0, r4, #0x0
- mov r1, #0xe
- bl FUN_02031734
- ldr r0, _02032C04 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x40
- strb r1, [r0, #0x0]
- ldr r0, _02032C08 ; =FUN_02032B8C
- bl FUN_02031D20
-_02032C00:
- pop {r4, pc}
- nop
-_02032C04: .word UNK_021C5A00
-_02032C08: .word FUN_02032B8C
-
- thumb_func_start FUN_02032C0C
-FUN_02032C0C: ; 0x02032C0C
- push {r3, lr}
- ldr r0, _02032C20 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02032C1E
- ldr r0, _02032C24 ; =FUN_02032440
- mov r1, #0x5
- bl FUN_02031D20
-_02032C1E:
- pop {r3, pc}
- .balign 4
-_02032C20: .word UNK_021C5A00
-_02032C24: .word FUN_02032440
-
- thumb_func_start FUN_02032C28
-FUN_02032C28: ; 0x02032C28
- sub sp, #0x8
- ldr r1, _02032C64 ; =UNK_020EEC48
- add r0, sp, #0x0
- ldr r2, [r1, #0x0]
- ldr r1, [r1, #0x4]
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, _02032C68 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- ldr r3, [r1, #0x24]
- cmp r1, #0x0
- bne _02032C46
- mov r0, #0x0
- add sp, #0x8
- bx lr
-_02032C46:
- cmp r2, #0x0
- beq _02032C5E
-_02032C4A:
- ldr r1, [r0, #0x0]
- cmp r3, r1
- bne _02032C56
- mov r0, #0x1
- add sp, #0x8
- bx lr
-_02032C56:
- add r0, r0, #0x4
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- bne _02032C4A
-_02032C5E:
- mov r0, #0x0
- add sp, #0x8
- bx lr
- .balign 4
-_02032C64: .word UNK_020EEC48
-_02032C68: .word UNK_021C5A00
-
- thumb_func_start FUN_02032C6C
-FUN_02032C6C: ; 0x02032C6C
- ldr r2, _02032CE4 ; =0x00400131
- cmp r0, r2
- bhi _02032C7C
- bhs _02032CBA
- ldr r2, _02032CE8 ; =0x00000333
- cmp r0, r2
- beq _02032C8E
- bx lr
-_02032C7C:
- ldr r1, _02032CEC ; =0x00400286
- cmp r0, r1
- bhi _02032C86
- beq _02032CCE
- bx lr
-_02032C86:
- add r1, #0x92
- cmp r0, r1
- beq _02032CA6
- bx lr
-_02032C8E:
- cmp r1, #0xf
- bne _02032CE0
- ldr r0, _02032CF0 ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- add r0, r2, #0x0
- add r0, #0x49
- ldrb r1, [r0, #0x0]
- mov r0, #0x1
- add r2, #0x49
- orr r0, r1
- strb r0, [r2, #0x0]
- bx lr
-_02032CA6:
- ldr r0, _02032CF0 ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- add r0, r2, #0x0
- add r0, #0x49
- ldrb r1, [r0, #0x0]
- mov r0, #0x1
- add r2, #0x49
- orr r0, r1
- strb r0, [r2, #0x0]
- bx lr
-_02032CBA:
- ldr r0, _02032CF0 ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- add r0, r2, #0x0
- add r0, #0x49
- ldrb r1, [r0, #0x0]
- mov r0, #0x2
- add r2, #0x49
- orr r0, r1
- strb r0, [r2, #0x0]
- bx lr
-_02032CCE:
- ldr r0, _02032CF0 ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- add r0, r2, #0x0
- add r0, #0x49
- ldrb r1, [r0, #0x0]
- mov r0, #0x4
- add r2, #0x49
- orr r0, r1
- strb r0, [r2, #0x0]
-_02032CE0:
- bx lr
- nop
-_02032CE4: .word 0x00400131
-_02032CE8: .word 0x00000333
-_02032CEC: .word 0x00400286
-_02032CF0: .word UNK_021C5A00
-
- thumb_func_start FUN_02032CF4
-FUN_02032CF4: ; 0x02032CF4
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _02032D34
- ldr r0, _02032D38 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02032D38 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202DB14
- ldr r0, _02032D3C ; =FUN_02032C6C
- bl FUN_0202D308
- mov r0, #0x1
- add r1, r0, #0x0
- mov r2, #0x20
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02032D34
- bl FUN_0202FA10
- ldr r0, _02032D40 ; =FUN_02032B84
- mov r1, #0x0
- bl FUN_02031D20
-_02032D34:
- pop {r3, pc}
- nop
-_02032D38: .word UNK_021C5A00
-_02032D3C: .word FUN_02032C6C
-_02032D40: .word FUN_02032B84
-
- thumb_func_start FUN_02032D44
-FUN_02032D44: ; 0x02032D44
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02030F40
- cmp r0, #0x0
- bne _02032D74
- mov r2, #0x7
- mov r0, #0x3
- mov r1, #0xf
- lsl r2, r2, #0xc
- bl FUN_02016828
- add r0, r4, #0x0
- mov r1, #0x11
- bl FUN_02031734
- ldr r0, _02032D78 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x40
- strb r1, [r0, #0x0]
- ldr r0, _02032D7C ; =FUN_02032CF4
- bl FUN_02031D20
-_02032D74:
- pop {r4, pc}
- nop
-_02032D78: .word UNK_021C5A00
-_02032D7C: .word FUN_02032CF4
-
- thumb_func_start FUN_02032D80
-FUN_02032D80: ; 0x02032D80
- push {r3, lr}
- ldr r0, _02032D94 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02032D92
- ldr r0, _02032D98 ; =FUN_02032440
- mov r1, #0x5
- bl FUN_02031D20
-_02032D92:
- pop {r3, pc}
- .balign 4
-_02032D94: .word UNK_021C5A00
-_02032D98: .word FUN_02032440
-
- thumb_func_start FUN_02032D9C
-FUN_02032D9C: ; 0x02032D9C
- ldr r0, _02032DA8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x49
- ldrb r0, [r0, #0x0]
- bx lr
- nop
-_02032DA8: .word UNK_021C5A00
-
- thumb_func_start FUN_02032DAC
-FUN_02032DAC: ; 0x02032DAC
- push {r3, lr}
- bl FUN_02031468
- ldr r0, _02032DF4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02032DBE
- mov r0, #0x1
- pop {r3, pc}
-_02032DBE:
- add r0, #0x3f
- ldrb r0, [r0, #0x0]
- add r0, #0xe8
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x1
- bhi _02032DD4
- bl MOD04_021D83C0
- mov r0, #0x1
- pop {r3, pc}
-_02032DD4:
- bl FUN_02033590
- cmp r0, #0x0
- beq _02032DE6
- ldr r0, _02032DF8 ; =FUN_0203318C
- mov r1, #0x0
- bl FUN_02031D20
- b _02032DEE
-_02032DE6:
- ldr r0, _02032DFC ; =FUN_02032178
- mov r1, #0x0
- bl FUN_02031D20
-_02032DEE:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_02032DF4: .word UNK_021C5A00
-_02032DF8: .word FUN_0203318C
-_02032DFC: .word FUN_02032178
-
- thumb_func_start FUN_02032E00
-FUN_02032E00: ; 0x02032E00
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _02032E3C
- ldr r0, _02032E40 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02032E40 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202DB14
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r2, r0, #0x9
- add r3, r0, #0x0
- bl FUN_0202F918
- cmp r0, #0x0
- beq _02032E3C
- bl FUN_0202FA10
- ldr r0, _02032E44 ; =FUN_02032218
- mov r1, #0x0
- bl FUN_02031D20
-_02032E3C:
- pop {r3, pc}
- nop
-_02032E40: .word UNK_021C5A00
-_02032E44: .word FUN_02032218
-
- thumb_func_start FUN_02032E48
-FUN_02032E48: ; 0x02032E48
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _02032E82
- ldr r0, _02032E84 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x2c]
- bl FUN_0202E29C
- ldr r0, _02032E84 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202DB14
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r2, r0, #0x9
- bl FUN_0202F950
- cmp r0, #0x0
- beq _02032E82
- bl FUN_0202FA10
- ldr r0, _02032E88 ; =FUN_02032290
- mov r1, #0x0
- bl FUN_02031D20
-_02032E82:
- pop {r3, pc}
- .balign 4
-_02032E84: .word UNK_021C5A00
-_02032E88: .word FUN_02032290
-
- thumb_func_start FUN_02032E8C
-FUN_02032E8C: ; 0x02032E8C
- bx lr
- .balign 4
-
- thumb_func_start FUN_02032E90
-FUN_02032E90: ; 0x02032E90
- push {r3, lr}
- bl MOD04_021D7F8C
- cmp r0, #0x0
- bge _02032EA2
- ldr r0, _02032EA4 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
-_02032EA2:
- pop {r3, pc}
- .balign 4
-_02032EA4: .word FUN_02032E8C
-
- thumb_func_start FUN_02032EA8
-FUN_02032EA8: ; 0x02032EA8
- bx lr
- .balign 4
-
- thumb_func_start FUN_02032EAC
-FUN_02032EAC: ; 0x02032EAC
- bx lr
- .balign 4
-
- thumb_func_start FUN_02032EB0
-FUN_02032EB0: ; 0x02032EB0
- push {r3, lr}
- mov r0, #0x1
- bl FUN_020313A0
- bl MOD04_021D7F8C
- cmp r0, #0xa
- blt _02032ECA
- ldr r0, _02032F0C ; =FUN_02032EAC
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032ECA:
- cmp r0, #0x0
- bge _02032ED8
- ldr r0, _02032F10 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032ED8:
- cmp r0, #0x1
- bne _02032EE6
- ldr r0, _02032F14 ; =FUN_02032E90
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032EE6:
- cmp r0, #0x2
- bne _02032F08
- ldr r0, _02032F18 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x44
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02032F00
- ldr r0, _02032F10 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032F00:
- ldr r0, _02032F1C ; =FUN_02032EA8
- mov r1, #0x0
- bl FUN_02031D20
-_02032F08:
- pop {r3, pc}
- nop
-_02032F0C: .word FUN_02032EAC
-_02032F10: .word FUN_02032E8C
-_02032F14: .word FUN_02032E90
-_02032F18: .word UNK_021C5A00
-_02032F1C: .word FUN_02032EA8
-
- thumb_func_start FUN_02032F20
-FUN_02032F20: ; 0x02032F20
- add r1, r0, #0x2
- cmp r1, #0x1
- bls _02032F28
- neg r0, r0
-_02032F28:
- ldr r1, _02032F30 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- str r0, [r1, #0x34]
- bx lr
- .balign 4
-_02032F30: .word UNK_021C5A00
-
- thumb_func_start FUN_02032F34
-FUN_02032F34: ; 0x02032F34
- push {r3, lr}
- mov r0, #0x0
- bl MOD04_021D7800
- cmp r0, #0xa
- blt _02032F4A
- ldr r0, _02032F88 ; =FUN_02032EAC
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032F4A:
- cmp r0, #0x0
- bge _02032F5C
- bl FUN_02032F20
- ldr r0, _02032F8C ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032F5C:
- cmp r0, #0x1
- bne _02032F6A
- ldr r0, _02032F90 ; =FUN_02032EB0
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032F6A:
- cmp r0, #0x2
- bne _02032F78
- ldr r0, _02032F94 ; =FUN_02032EA8
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032F78:
- cmp r0, #0x3
- bne _02032F84
- ldr r0, _02032F88 ; =FUN_02032EAC
- mov r1, #0x0
- bl FUN_02031D20
-_02032F84:
- pop {r3, pc}
- nop
-_02032F88: .word FUN_02032EAC
-_02032F8C: .word FUN_02032E8C
-_02032F90: .word FUN_02032EB0
-_02032F94: .word FUN_02032EA8
-
- thumb_func_start FUN_02032F98
-FUN_02032F98: ; 0x02032F98
- push {r3, lr}
- mov r0, #0x1
- bl MOD04_021D7800
- cmp r0, #0x0
- bge _02032FB2
- bl FUN_02032F20
- ldr r0, _02032FD0 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02032FB2:
- ldr r0, _02032FD4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x42
- ldrb r0, [r0, #0x0]
- bl MOD04_021D8494
- cmp r0, #0x0
- beq _02032FCE
- bl FUN_0202FC60
- ldr r0, _02032FD8 ; =FUN_02032F34
- mov r1, #0x0
- bl FUN_02031D20
-_02032FCE:
- pop {r3, pc}
- .balign 4
-_02032FD0: .word FUN_02032E8C
-_02032FD4: .word UNK_021C5A00
-_02032FD8: .word FUN_02032F34
-
- thumb_func_start FUN_02032FDC
-FUN_02032FDC: ; 0x02032FDC
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _02032FFC ; =FUN_020303BC
- ldr r1, _02033000 ; =FUN_02030238
- bl MOD04_021D77C4
- ldr r0, _02033004 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x42
- strb r4, [r0, #0x0]
- ldr r0, _02033008 ; =FUN_02032F98
- bl FUN_02031D20
- mov r0, #0x1
- pop {r4, pc}
- .balign 4
-_02032FFC: .word FUN_020303BC
-_02033000: .word FUN_02030238
-_02033004: .word UNK_021C5A00
-_02033008: .word FUN_02032F98
-
- thumb_func_start FUN_0203300C
-FUN_0203300C: ; 0x0203300C
- ldr r0, _02033048 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x24]
- ldr r0, _0203304C ; =FUN_02032F34
- cmp r1, r0
- bne _0203301C
- mov r0, #0x0
- bx lr
-_0203301C:
- ldr r0, _02033050 ; =FUN_02032EB0
- cmp r1, r0
- bne _02033026
- mov r0, #0x1
- bx lr
-_02033026:
- ldr r0, _02033054 ; =FUN_02032E90
- cmp r1, r0
- bne _02033030
- mov r0, #0x3
- bx lr
-_02033030:
- ldr r0, _02033058 ; =FUN_02032EA8
- cmp r1, r0
- bne _0203303A
- mov r0, #0x4
- bx lr
-_0203303A:
- ldr r0, _0203305C ; =FUN_02032EAC
- cmp r1, r0
- bne _02033044
- mov r0, #0x5
- bx lr
-_02033044:
- mov r0, #0x2
- bx lr
- .balign 4
-_02033048: .word UNK_021C5A00
-_0203304C: .word FUN_02032F34
-_02033050: .word FUN_02032EB0
-_02033054: .word FUN_02032E90
-_02033058: .word FUN_02032EA8
-_0203305C: .word FUN_02032EAC
-
- thumb_func_start FUN_02033060
-FUN_02033060: ; 0x02033060
- push {r3, lr}
- ldr r0, _02033090 ; =FUN_020303BC
- ldr r1, _02033094 ; =FUN_02030238
- bl MOD04_021D77C4
- mov r0, #0x0
- mvn r0, r0
- bl MOD04_021D8494
- cmp r0, #0x0
- beq _0203308C
- ldr r0, _02033098 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x4d
- strb r1, [r0, #0x0]
- bl FUN_0202FC60
- ldr r0, _0203309C ; =FUN_02032F34
- mov r1, #0x0
- bl FUN_02031D20
-_0203308C:
- pop {r3, pc}
- nop
-_02033090: .word FUN_020303BC
-_02033094: .word FUN_02030238
-_02033098: .word UNK_021C5A00
-_0203309C: .word FUN_02032F34
-
- thumb_func_start FUN_020330A0
-FUN_020330A0: ; 0x020330A0
- push {r3, lr}
- mov r0, #0x0
- bl FUN_020313A0
- ldr r0, _020330D8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x41
- ldrb r0, [r0, #0x0]
- bl MOD04_021D82BC
- cmp r0, #0x0
- beq _020330C6
- bl MOD04_021D836C
- ldr r0, _020330DC ; =FUN_02033060
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_020330C6:
- bl MOD04_021D7F8C
- cmp r0, #0x0
- bge _020330D6
- ldr r0, _020330E0 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
-_020330D6:
- pop {r3, pc}
- .balign 4
-_020330D8: .word UNK_021C5A00
-_020330DC: .word FUN_02033060
-_020330E0: .word FUN_02032E8C
-
- thumb_func_start FUN_020330E4
-FUN_020330E4: ; 0x020330E4
- push {r3, lr}
- bl FUN_02031190
- cmp r0, #0x0
- bne _02033100
- ldr r0, _02033120 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r0, #0x41
- strb r1, [r0, #0x0]
- ldr r0, _02033124 ; =FUN_020330A0
- bl FUN_02031D20
- b _02033112
-_02033100:
- ldr r0, _02033120 ; =UNK_021C5A00
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- add r0, #0x41
- strb r1, [r0, #0x0]
- ldr r0, _02033124 ; =FUN_020330A0
- mov r1, #0x0
- bl FUN_02031D20
-_02033112:
- ldr r0, _02033120 ; =UNK_021C5A00
- mov r1, #0x1
- ldr r0, [r0, #0x0]
- add r0, #0x4d
- strb r1, [r0, #0x0]
- pop {r3, pc}
- nop
-_02033120: .word UNK_021C5A00
-_02033124: .word FUN_020330A0
-
- thumb_func_start FUN_02033128
-FUN_02033128: ; 0x02033128
- ldr r0, _02033134 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x4d
- ldrb r0, [r0, #0x0]
- bx lr
- nop
-_02033134: .word UNK_021C5A00
-
- thumb_func_start FUN_02033138
-FUN_02033138: ; 0x02033138
- ldr r0, _0203314C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x24]
- ldr r0, _02033150 ; =FUN_02033060
- cmp r1, r0
- bne _02033148
- mov r0, #0x1
- bx lr
-_02033148:
- mov r0, #0x0
- bx lr
- .balign 4
-_0203314C: .word UNK_021C5A00
-_02033150: .word FUN_02033060
-
- thumb_func_start FUN_02033154
-FUN_02033154: ; 0x02033154
- ldr r0, _02033174 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x24]
- ldr r0, _02033178 ; =FUN_02032F34
- cmp r1, r0
- bne _02033164
- mov r0, #0x1
- bx lr
-_02033164:
- ldr r0, _0203317C ; =FUN_02033060
- cmp r1, r0
- bne _0203316E
- mov r0, #0x1
- bx lr
-_0203316E:
- mov r0, #0x0
- bx lr
- nop
-_02033174: .word UNK_021C5A00
-_02033178: .word FUN_02032F34
-_0203317C: .word FUN_02033060
-
- thumb_func_start FUN_02033180
-FUN_02033180: ; 0x02033180
- ldr r0, _02033188 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x34]
- bx lr
- .balign 4
-_02033188: .word UNK_021C5A00
-
- thumb_func_start FUN_0203318C
-FUN_0203318C: ; 0x0203318C
- push {r3, lr}
- mov r0, #0x0
- bl FUN_020313A0
- mov r0, #0x0
- bl MOD04_021D82BC
- cmp r0, #0x0
- beq _020331AA
- bl MOD04_021D836C
- ldr r0, _020331BC ; =FUN_02032440
- mov r1, #0x0
- bl FUN_02031D20
-_020331AA:
- bl MOD04_021D7F8C
- cmp r0, #0x0
- bge _020331BA
- ldr r0, _020331C0 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
-_020331BA:
- pop {r3, pc}
- .balign 4
-_020331BC: .word FUN_02032440
-_020331C0: .word FUN_02032E8C
-
- thumb_func_start FUN_020331C4
-FUN_020331C4: ; 0x020331C4
- push {r3, lr}
- ldr r0, _020331E0 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020331DC
- mov r0, #0x1
- bl FUN_020166B8
- ldr r0, _020331E4 ; =FUN_02032440
- mov r1, #0x5
- bl FUN_02031D20
-_020331DC:
- pop {r3, pc}
- nop
-_020331E0: .word UNK_021C5A00
-_020331E4: .word FUN_02032440
-
- thumb_func_start FUN_020331E8
-FUN_020331E8: ; 0x020331E8
- push {r3, lr}
- ldr r0, _02033200 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020331FE
- mov r1, #0x0
- add r0, #0x41
- strb r1, [r0, #0x0]
- ldr r0, _02033204 ; =FUN_020330A0
- bl FUN_02031D20
-_020331FE:
- pop {r3, pc}
- .balign 4
-_02033200: .word UNK_021C5A00
-_02033204: .word FUN_020330A0
-
- thumb_func_start FUN_02033208
-FUN_02033208: ; 0x02033208
- push {r3, lr}
- ldr r0, _02033234 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02033232
- bl FUN_02031190
- cmp r0, #0x0
- bne _02033220
- mov r1, #0x0
- ldr r0, _02033234 ; =UNK_021C5A00
- b _02033224
-_02033220:
- ldr r0, _02033234 ; =UNK_021C5A00
- mov r1, #0x1
-_02033224:
- ldr r0, [r0, #0x0]
- add r0, #0x41
- strb r1, [r0, #0x0]
- ldr r0, _02033238 ; =FUN_020330A0
- mov r1, #0x0
- bl FUN_02031D20
-_02033232:
- pop {r3, pc}
- .balign 4
-_02033234: .word UNK_021C5A00
-_02033238: .word FUN_020330A0
-
- thumb_func_start FUN_0203323C
-FUN_0203323C: ; 0x0203323C
- push {r3, lr}
- bl FUN_02031190
- add r1, sp, #0x0
- strb r0, [r1, #0x0]
- mov r0, #0x15
- add r1, sp, #0x0
- bl FUN_020311D0
- pop {r3, pc}
-
- thumb_func_start FUN_02033250
-FUN_02033250: ; 0x02033250
- ldr r0, _0203327C ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- beq _02033276
- ldr r1, [r2, #0x24]
- ldr r0, _02033280 ; =FUN_02032E8C
- cmp r1, r0
- bne _02033264
- mov r0, #0x1
- bx lr
-_02033264:
- ldr r0, _02033284 ; =FUN_02032E90
- cmp r1, r0
- bne _02033276
- add r2, #0x44
- ldrb r0, [r2, #0x0]
- cmp r0, #0x0
- beq _02033276
- mov r0, #0x1
- bx lr
-_02033276:
- mov r0, #0x0
- bx lr
- nop
-_0203327C: .word UNK_021C5A00
-_02033280: .word FUN_02032E8C
-_02033284: .word FUN_02032E90
-
- thumb_func_start FUN_02033288
-FUN_02033288: ; 0x02033288
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _020332D8 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020332D6
- mov r1, #0xf
- add r2, r1, #0x0
- mov r0, #0x3
- add r2, #0xf1
- bl FUN_02016828
- mov r0, #0xf
- mov r1, #0x50
- bl AllocFromHeap
- ldr r1, _020332D8 ; =UNK_021C5A00
- mov r2, #0x50
- str r0, [r1, #0x0]
- mov r1, #0x0
- bl MI_CpuFill8
- ldr r0, _020332D8 ; =UNK_021C5A00
- mov r2, #0x18
- ldr r1, [r0, #0x0]
- add r1, #0x3f
- strb r2, [r1, #0x0]
- ldr r2, [r0, #0x0]
- mov r1, #0x1
- add r2, #0x46
- strb r1, [r2, #0x0]
- ldr r0, [r0, #0x0]
- str r4, [r0, #0x28]
- mov r0, #0x0
- bl FUN_020334E8
- mov r0, #0x1
- bl FUN_020166A8
-_020332D6:
- pop {r4, pc}
- .balign 4
-_020332D8: .word UNK_021C5A00
-
- thumb_func_start FUN_020332DC
-FUN_020332DC: ; 0x020332DC
- push {r3, lr}
- ldr r0, _0203330C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02033308
- mov r0, #0x1
- bl FUN_020166B8
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_020334E8
- ldr r0, _0203330C ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- bl FreeToHeap
- ldr r0, _0203330C ; =UNK_021C5A00
- mov r1, #0x0
- str r1, [r0, #0x0]
- mov r0, #0xf
- bl FUN_020168D0
-_02033308:
- pop {r3, pc}
- nop
-_0203330C: .word UNK_021C5A00
-
- thumb_func_start FUN_02033310
-FUN_02033310: ; 0x02033310
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _02033360 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0203335E
- mov r1, #0xf
- add r2, r1, #0x0
- mov r0, #0x3
- add r2, #0xf1
- bl FUN_02016828
- mov r0, #0xf
- mov r1, #0x50
- bl AllocFromHeap
- ldr r1, _02033360 ; =UNK_021C5A00
- mov r2, #0x50
- str r0, [r1, #0x0]
- mov r1, #0x0
- bl MI_CpuFill8
- ldr r0, _02033360 ; =UNK_021C5A00
- mov r2, #0x19
- ldr r1, [r0, #0x0]
- add r1, #0x3f
- strb r2, [r1, #0x0]
- ldr r2, [r0, #0x0]
- mov r1, #0x1
- add r2, #0x46
- strb r1, [r2, #0x0]
- ldr r0, [r0, #0x0]
- str r4, [r0, #0x28]
- mov r0, #0x0
- bl FUN_020334E8
- mov r0, #0x1
- bl FUN_020166A8
-_0203335E:
- pop {r4, pc}
- .balign 4
-_02033360: .word UNK_021C5A00
-
- thumb_func_start FUN_02033364
-FUN_02033364: ; 0x02033364
- push {r3, lr}
- ldr r0, _02033394 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02033390
- mov r0, #0x1
- bl FUN_020166B8
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_020334E8
- ldr r0, _02033394 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- bl FreeToHeap
- ldr r0, _02033394 ; =UNK_021C5A00
- mov r1, #0x0
- str r1, [r0, #0x0]
- mov r0, #0xf
- bl FUN_020168D0
-_02033390:
- pop {r3, pc}
- nop
-_02033394: .word UNK_021C5A00
-
- thumb_func_start FUN_02033398
-FUN_02033398: ; 0x02033398
- push {r3, lr}
- sub sp, #0x8
- ldr r0, _020333EC ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020333AA
- add sp, #0x8
- mov r0, #0x0
- pop {r3, pc}
-_020333AA:
- add r0, #0x3f
- ldrb r0, [r0, #0x0]
- cmp r0, #0x18
- bne _020333C8
- add r0, sp, #0x4
- add r1, sp, #0x0
- bl MOD04_021DD718
- cmp r0, #0x0
- beq _020333E4
- bl MOD04_021DD6F0
- add sp, #0x8
- mov r0, #0x1
- pop {r3, pc}
-_020333C8:
- cmp r0, #0x19
- bne _020333E4
- add r0, sp, #0x4
- add r1, sp, #0x0
- bl MOD04_021DD718
- cmp r0, #0x0
- beq _020333E4
- ldr r0, [sp, #0x0]
- cmp r0, #0x7
- bne _020333E4
- add sp, #0x8
- mov r0, #0x1
- pop {r3, pc}
-_020333E4:
- mov r0, #0x0
- add sp, #0x8
- pop {r3, pc}
- nop
-_020333EC: .word UNK_021C5A00
-
- thumb_func_start FUN_020333F0
-FUN_020333F0: ; 0x020333F0
- push {r3, lr}
- bl MOD04_021D76AC
- cmp r0, #0x0
- bge _02033408
- bl FUN_02032F20
- ldr r0, _02033414 ; =FUN_02032E8C
- mov r1, #0x0
- bl FUN_02031D20
- pop {r3, pc}
-_02033408:
- ble _02033412
- ldr r0, _02033418 ; =FUN_02033060
- mov r1, #0x0
- bl FUN_02031D20
-_02033412:
- pop {r3, pc}
- .balign 4
-_02033414: .word FUN_02032E8C
-_02033418: .word FUN_02033060
-
- thumb_func_start FUN_0203341C
-FUN_0203341C: ; 0x0203341C
- push {r3, lr}
- bl FUN_0202E4C8
- cmp r0, #0x0
- beq _0203345E
- mov r1, #0x31
- mov r0, #0x3
- lsl r2, r1, #0xc
- bl FUN_02016828
- mov r0, #0x1
- add r1, r0, #0x0
- lsl r2, r0, #0x9
- add r3, r0, #0x0
- bl FUN_0202F918
- cmp r0, #0x0
- beq _0203345E
- ldr r0, _02033460 ; =UNK_021C5A00
- mov r1, #0x31
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl MOD05_021D74E0
- ldr r0, _02033464 ; =FUN_020335D0
- bl MOD04_021D83A8
- bl FUN_0202FA10
- ldr r0, _02033468 ; =FUN_020333F0
- mov r1, #0x0
- bl FUN_02031D20
-_0203345E:
- pop {r3, pc}
- .balign 4
-_02033460: .word UNK_021C5A00
-_02033464: .word FUN_020335D0
-_02033468: .word FUN_020333F0
-
- thumb_func_start FUN_0203346C
-FUN_0203346C: ; 0x0203346C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl Sav2_PlayerData_GetProfileAddr
- bl FUN_02030F40
- cmp r0, #0x0
- beq _02033482
- mov r0, #0x0
- pop {r3-r5, pc}
-_02033482:
- mov r0, #0x1
- bl FUN_020166A8
- ldr r2, _020334D0 ; =0x00007080
- mov r0, #0x3
- mov r1, #0xf
- bl FUN_02016828
- add r0, r5, #0x0
- mov r1, #0x17
- bl FUN_02031734
- mov r0, #0xf
- add r1, r4, #0x0
- bl AllocFromHeap
- ldr r1, _020334D4 ; =UNK_021C5A00
- ldr r2, [r1, #0x0]
- str r0, [r2, #0x0]
- ldr r0, [r1, #0x0]
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- add r2, r4, #0x0
- bl MI_CpuFill8
- ldr r0, _020334D4 ; =UNK_021C5A00
- mov r1, #0x0
- ldr r2, [r0, #0x0]
- add r2, #0x40
- strb r1, [r2, #0x0]
- ldr r0, [r0, #0x0]
- str r5, [r0, #0x28]
- ldr r0, _020334D8 ; =FUN_0203341C
- bl FUN_02031D20
- ldr r0, _020334D4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- pop {r3-r5, pc}
- .balign 4
-_020334D0: .word 0x00007080
-_020334D4: .word UNK_021C5A00
-_020334D8: .word FUN_0203341C
-
- thumb_func_start FUN_020334DC
-FUN_020334DC: ; 0x020334DC
- ldr r0, _020334E4 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020334E4: .word UNK_021C5A00
-
- thumb_func_start FUN_020334E8
-FUN_020334E8: ; 0x020334E8
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, _0203350C ; =UNK_021C5A00
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- beq _020334FE
- add r2, #0x44
- strb r4, [r2, #0x0]
- ldr r0, [r0, #0x0]
- add r0, #0x45
- strb r1, [r0, #0x0]
-_020334FE:
- add r0, r4, #0x0
- bl FUN_0202EE84
- add r0, r4, #0x0
- bl FUN_0202EEB0
- pop {r4, pc}
- .balign 4
-_0203350C: .word UNK_021C5A00
-
- thumb_func_start FUN_02033510
-FUN_02033510: ; 0x02033510
- ldr r0, _02033530 ; =UNK_021C5A00
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _0203352C
- add r0, r1, #0x0
- add r0, #0x4e
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02033526
- mov r0, #0x1
- bx lr
-_02033526:
- add r1, #0x45
- ldrb r0, [r1, #0x0]
- bx lr
-_0203352C:
- mov r0, #0x0
- bx lr
- .balign 4
-_02033530: .word UNK_021C5A00
-
- thumb_func_start FUN_02033534
-FUN_02033534: ; 0x02033534
- ldr r0, _02033548 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _02033542
- add r0, #0x3f
- ldrb r0, [r0, #0x0]
- bx lr
-_02033542:
- mov r0, #0x1
- bx lr
- nop
-_02033548: .word UNK_021C5A00
-
- thumb_func_start FUN_0203354C
-FUN_0203354C: ; 0x0203354C
- ldr r0, _02033560 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0203355A
- add r0, #0x40
- ldrb r0, [r0, #0x0]
- bx lr
-_0203355A:
- mov r0, #0x0
- bx lr
- nop
-_02033560: .word UNK_021C5A00
-
- thumb_func_start FUN_02033564
-FUN_02033564: ; 0x02033564
- ldr r1, _02033570 ; =UNK_021C5A00
- ldr r3, _02033574 ; =MI_CpuCopy8
- ldr r1, [r1, #0x0]
- mov r2, #0x6
- add r1, r1, #0x4
- bx r3
- .balign 4
-_02033570: .word UNK_021C5A00
-_02033574: .word MI_CpuCopy8
-
- thumb_func_start FUN_02033578
-FUN_02033578: ; 0x02033578
- add r1, r0, #0x0
- ldr r0, _02033588 ; =UNK_021C5A00
- ldr r3, _0203358C ; =MI_CpuCopy8
- ldr r0, [r0, #0x0]
- mov r2, #0x6
- add r0, r0, #0x4
- bx r3
- nop
-_02033588: .word UNK_021C5A00
-_0203358C: .word MI_CpuCopy8
-
- thumb_func_start FUN_02033590
-FUN_02033590: ; 0x02033590
- push {r3, lr}
- bl FUN_02033534
- cmp r0, #0x13
- blt _0203359E
- mov r0, #0x1
- pop {r3, pc}
-_0203359E:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020335A4
-FUN_020335A4: ; 0x020335A4
- ldr r1, _020335B4 ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- cmp r1, #0x0
- beq _020335B0
- add r1, #0x47
- strb r0, [r1, #0x0]
-_020335B0:
- bx lr
- nop
-_020335B4: .word UNK_021C5A00
-
- thumb_func_start FUN_020335B8
-FUN_020335B8: ; 0x020335B8
- ldr r0, _020335CC ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020335C6
- add r0, #0x47
- ldrb r0, [r0, #0x0]
- bx lr
-_020335C6:
- mov r0, #0x0
- bx lr
- nop
-_020335CC: .word UNK_021C5A00
-
- thumb_func_start FUN_020335D0
-FUN_020335D0: ; 0x020335D0
- push {r3, lr}
- add r2, r0, #0x0
- mov r0, #0x0
- mov r1, #0x1
- bl FUN_02033F70
-_020335DC:
- b _020335DC
- .balign 4
-
- thumb_func_start FUN_020335E0
-FUN_020335E0: ; 0x020335E0
- push {r3, lr}
- mov r0, #0x0
- mov r1, #0x4
- add r2, r0, #0x0
- bl FUN_02033F70
-_020335EC:
- b _020335EC
- .balign 4
-
- thumb_func_start FUN_020335F0
-FUN_020335F0: ; 0x020335F0
- bx lr
- .balign 4
-
- thumb_func_start FUN_020335F4
-FUN_020335F4: ; 0x020335F4
- push {r3, lr}
- bl FUN_02033510
- cmp r0, #0x0
- beq _0203366C
- bl FUN_020311F0
- cmp r0, #0x0
- bne _02033622
- bl FUN_02033250
- cmp r0, #0x0
- bne _02033622
- bl FUN_02033398
- cmp r0, #0x0
- bne _02033622
- ldr r0, _02033670 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- add r0, #0x4e
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0203366C
-_02033622:
- bl FUN_020335B8
- cmp r0, #0x0
- bne _0203366C
- bl FUN_0200541C
- ldr r0, _02033670 ; =UNK_021C5A00
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x28]
- bl FUN_0202287C
- ldr r1, _02033674 ; =gMain + 0x60
- mov r0, #0x1
- strb r0, [r1, #0x4]
- ldr r1, _02033670 ; =UNK_021C5A00
- ldr r2, [r1, #0x0]
- add r1, r2, #0x0
- add r1, #0x4e
- ldrb r1, [r1, #0x0]
- cmp r1, #0x3
- bne _02033654
- mov r0, #0x3
- bl FUN_020335A4
- pop {r3, pc}
-_02033654:
- add r2, #0x3f
- ldrb r1, [r2, #0x0]
- cmp r1, #0x19
- beq _02033660
- cmp r1, #0xf
- bne _02033668
-_02033660:
- mov r0, #0x2
- bl FUN_020335A4
- pop {r3, pc}
-_02033668:
- bl FUN_020335A4
-_0203366C:
- pop {r3, pc}
- nop
-_02033670: .word UNK_021C5A00
-_02033674: .word gMain + 0x60
-
- thumb_func_start FUN_02033678
-FUN_02033678: ; 0x02033678
- push {r3, lr}
- bl FUN_0202EDD8
- cmp r0, #0x0
- bne _0203368A
- bl FUN_02031810
- cmp r0, #0x0
- bne _0203368E
-_0203368A:
- mov r0, #0x1
- pop {r3, pc}
-_0203368E:
- bl FUN_0202E344
- cmp r0, #0x0
- bne _0203369A
- mov r0, #0x1
- pop {r3, pc}
-_0203369A:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020336A0
-FUN_020336A0: ; 0x020336A0
- push {r3, lr}
- ldr r1, _020336BC ; =UNK_021C5A00
- ldr r1, [r1, #0x0]
- cmp r1, #0x0
- beq _020336B6
- add r1, #0x4e
- strb r0, [r1, #0x0]
- bl FUN_02031468
- mov r0, #0x1
- pop {r3, pc}
-_020336B6:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_020336BC: .word UNK_021C5A00
diff --git a/arm9/asm/unk_020336C0.s b/arm9/asm/unk_020336C0.s
index ac3863f2..4f2d4dc3 100644
--- a/arm9/asm/unk_020336C0.s
+++ b/arm9/asm/unk_020336C0.s
@@ -55,11 +55,11 @@ _02033714:
add r5, r0, #0x0
cmp r5, #0x2
bne _02033722
- bl ErrorHandling
+ bl GF_AssertFail
_02033722:
cmp r5, #0x3
bne _0203372A
- bl ErrorHandling
+ bl GF_AssertFail
_0203372A:
cmp r5, #0x1
bne _02033774
@@ -81,11 +81,11 @@ _0203374A:
add r5, r0, #0x0
cmp r5, #0x3
bne _02033758
- bl ErrorHandling
+ bl GF_AssertFail
_02033758:
cmp r5, #0x1
bne _02033760
- bl ErrorHandling
+ bl GF_AssertFail
_02033760:
cmp r5, #0x2
bne _02033774
diff --git a/arm9/asm/unk_02033778.s b/arm9/asm/unk_02033778.s
deleted file mode 100644
index 763e7b30..00000000
--- a/arm9/asm/unk_02033778.s
+++ /dev/null
@@ -1,60 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02033778
-FUN_02033778: ; 0x02033778
- push {r3-r7, lr}
- str r0, [sp, #0x0]
- bl FUN_02030F20
- add r7, r0, #0x0
- mov r0, #0x0
- bl FUN_0202DFA4
- cmp r0, #0x0
- beq _020337C6
- mov r5, #0x0
- cmp r7, #0x0
- ble _020337C6
-_02033792:
- bl FUN_02031190
- cmp r5, r0
- beq _020337C0
- add r0, r5, #0x0
- bl FUN_0202E020
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0202E044
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0202DFA4
- bl PlayerProfile_GetLanguage
- add r3, r0, #0x0
- ldr r0, [sp, #0x0]
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_020337C8
-_020337C0:
- add r5, r5, #0x1
- cmp r5, r7
- blt _02033792
-_020337C6:
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020337C8
-FUN_020337C8: ; 0x020337C8
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl FUN_02029B40
- cmp r0, #0x0
- bne _020337E4
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- mov r3, #0x1
- bl FUN_02029B90
-_020337E4:
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/asm/unk_020337E8.s b/arm9/asm/unk_020337E8.s
deleted file mode 100644
index 99f778f2..00000000
--- a/arm9/asm/unk_020337E8.s
+++ /dev/null
@@ -1,74 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020337E8
-FUN_020337E8: ; 0x020337E8
- push {r3-r5, lr}
- mov r1, #0x72
- lsl r1, r1, #0x4
- bl AllocFromHeap
- add r4, r0, #0x0
- add r0, #0x1f
- mov r1, #0x1f
- bic r0, r1
- bl DWC_Init
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl FreeToHeap
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0203380C
-FUN_0203380C: ; 0x0203380C
- push {r4, lr}
- bl FUN_02028228
- add r4, r0, #0x0
- bl DWC_CheckUserData
- cmp r0, #0x0
- bne _0203382A
- ldr r1, _0203382C ; =0x4144414A
- add r0, r4, #0x0
- bl DWC_CreateUserData
- add r0, r4, #0x0
- bl DWC_ClearDirtyFlag
-_0203382A:
- pop {r4, pc}
- .balign 4
-_0203382C: .word 0x4144414A
-
- thumb_func_start FUN_02033830
-FUN_02033830: ; 0x02033830
- push {r3-r4, lr}
- sub sp, #0xc
- bl FUN_02028228
- add r4, r0, #0x0
- add r1, sp, #0x0
- bl DWC_CreateExchangeToken
- add r0, r4, #0x0
- add r1, sp, #0x0
- bl DWC_GetGsProfileId
- add sp, #0xc
- pop {r3-r4, pc}
-
- thumb_func_start FUN_0203384C
-FUN_0203384C: ; 0x0203384C
- push {r4, lr}
- bl FUN_020286EC
- bl FUN_02028228
- add r4, r0, #0x0
- bl DWC_CheckHasProfile
- cmp r0, #0x0
- beq _0203386E
- add r0, r4, #0x0
- bl DWC_CheckValidConsole
- cmp r0, #0x0
- beq _0203386E
- mov r0, #0x1
- pop {r4, pc}
-_0203386E:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s
index ddd4483b..dfad7db2 100644
--- a/arm9/asm/unk_02033874.s
+++ b/arm9/asm/unk_02033874.s
@@ -191,7 +191,7 @@ _020339D8:
str r0, [r6, #0x0]
cmp r0, #0x3
bne _020339FE
- bl ErrorHandling
+ bl GF_AssertFail
_020339FE:
ldr r0, [r6, #0x0]
cmp r0, #0x0
diff --git a/arm9/asm/unk_02033B68.s b/arm9/asm/unk_02033B68.s
index 39125d06..9e204377 100644
--- a/arm9/asm/unk_02033B68.s
+++ b/arm9/asm/unk_02033B68.s
@@ -333,7 +333,7 @@ FUN_02033D3C: ; 0x02033D3C
bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r5, #0x1
bne _02033D80
ldr r0, [sp, #0x0]
@@ -386,7 +386,7 @@ _02033DC8:
bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
cmp r5, #0x1
bne _02033DF0
mov r0, #0x1
diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s
index a5439dfe..ed33e084 100644
--- a/arm9/asm/unk_02033F50.s
+++ b/arm9/asm/unk_02033F50.s
@@ -198,7 +198,7 @@ _02033FA4:
add r0, sp, #0x18
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _0203417C ; =0x000001F7
add r0, sp, #0x18
mov r1, #0x0
diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s
index 44144564..08265835 100644
--- a/arm9/asm/unk_02034188.s
+++ b/arm9/asm/unk_02034188.s
@@ -138,7 +138,7 @@ FUN_02034188: ; 0x02034188
add r0, sp, #0x14
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _0203438C ; =0x000001F7
add r0, sp, #0x14
mov r1, #0x0
diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s
index 88fd2560..a4cac7e7 100644
--- a/arm9/asm/unk_020343A8.s
+++ b/arm9/asm/unk_020343A8.s
@@ -53,7 +53,7 @@ _020343D8:
ldrb r7, [r6, #0x4]
cmp r7, #0x10
bls _0203440A
- bl ErrorHandling
+ bl GF_AssertFail
_0203440A:
ldr r1, _02034490 ; =0x00001196
add r0, r5, #0x0
@@ -170,7 +170,7 @@ FUN_020344D8: ; 0x020344D8
mul r0, r1
cmp r5, r0
blt _020344EC
- bl ErrorHandling
+ bl GF_AssertFail
_020344EC:
lsl r0, r5, #0x1
add r1, r4, r0
@@ -185,7 +185,7 @@ FUN_020344FC: ; 0x020344FC
push {r4, lr}
add r4, r0, #0x0
bne _02034506
- bl ErrorHandling
+ bl GF_AssertFail
_02034506:
ldrb r0, [r4, #0x0]
pop {r4, pc}
@@ -196,7 +196,7 @@ FUN_0203450C: ; 0x0203450C
push {r4, lr}
add r4, r0, #0x0
bne _02034516
- bl ErrorHandling
+ bl GF_AssertFail
_02034516:
ldrb r0, [r4, #0x1]
pop {r4, pc}
@@ -216,7 +216,7 @@ FUN_0203451C: ; 0x0203451C
cmp r5, r6
blt _02034536
_02034532:
- bl ErrorHandling
+ bl GF_AssertFail
_02034536:
cmp r4, #0x0
blt _02034540
@@ -224,7 +224,7 @@ _02034536:
cmp r4, r0
blt _02034544
_02034540:
- bl ErrorHandling
+ bl GF_AssertFail
_02034544:
add r0, r4, #0x0
mul r0, r6
@@ -248,7 +248,7 @@ FUN_02034554: ; 0x02034554
cmp r4, r0
blt _0203456C
_02034568:
- bl ErrorHandling
+ bl GF_AssertFail
_0203456C:
lsl r0, r4, #0x1
add r0, r5, r0
@@ -269,7 +269,7 @@ FUN_02034578: ; 0x02034578
add r6, r3, #0x0
cmp r4, r0
blt _0203458A
- bl ErrorHandling
+ bl GF_AssertFail
_0203458A:
ldr r0, [sp, #0x10]
mul r0, r6
@@ -278,7 +278,7 @@ _0203458A:
lsl r0, r0, #0x2
cmp r4, r0
blt _0203459C
- bl ErrorHandling
+ bl GF_AssertFail
_0203459C:
ldr r0, _020345A4 ; =0x0000070E
add r1, r5, r4
@@ -317,7 +317,7 @@ FUN_020345DC: ; 0x020345DC
push {r4, lr}
add r4, r0, #0x0
bne _020345E6
- bl ErrorHandling
+ bl GF_AssertFail
_020345E6:
add r0, r4, #0x0
bl FreeToHeap
@@ -357,13 +357,13 @@ FUN_020345FC: ; 0x020345FC
ldrb r0, [r0, #0x1]
cmp r5, r0
blt _0203462E
- bl ErrorHandling
+ bl GF_AssertFail
_0203462E:
add r0, sp, #0x0
ldrb r0, [r0, #0x0]
cmp r4, r0
blt _0203463A
- bl ErrorHandling
+ bl GF_AssertFail
_0203463A:
add r0, sp, #0x0
ldrb r0, [r0, #0x1]
@@ -391,7 +391,7 @@ FUN_02034660: ; 0x02034660
add r5, r0, #0x0
add r4, r1, #0x0
bne _0203466C
- bl ErrorHandling
+ bl GF_AssertFail
_0203466C:
add r0, r5, #0x0
add r1, r4, #0x0
diff --git a/arm9/asm/unk_02034A28.s b/arm9/asm/unk_02034A28.s
index e4c8097a..19d0db80 100644
--- a/arm9/asm/unk_02034A28.s
+++ b/arm9/asm/unk_02034A28.s
@@ -11,7 +11,7 @@ FUN_02034A28: ; 0x02034A28
add r4, r1, #0x0
cmp r0, #0x0
beq _02034A38
- bl ErrorHandling
+ bl GF_AssertFail
_02034A38:
ldr r1, _02034A44 ; =0x00000AC8
add r0, r4, #0x0
@@ -28,7 +28,7 @@ FUN_02034A48: ; 0x02034A48
ldr r0, [r4, #0x14]
cmp r0, #0x0
bne _02034A56
- bl ErrorHandling
+ bl GF_AssertFail
_02034A56:
ldr r0, [r4, #0x14]
bl FreeToHeap
@@ -43,7 +43,7 @@ FUN_02034A60: ; 0x02034A60
add r4, r1, #0x0
cmp r0, #0x0
bne _02034A70
- bl ErrorHandling
+ bl GF_AssertFail
_02034A70:
ldr r0, [r5, #0x14]
add r1, r4, #0x0
@@ -76,7 +76,7 @@ FUN_02034A98: ; 0x02034A98
lsl r1, r1, #0xa
cmp r0, r1
blo _02034AB8
- bl ErrorHandling
+ bl GF_AssertFail
_02034AB8:
add r5, #0x20
add r0, r5, #0x0
@@ -94,7 +94,7 @@ FUN_02034AC8: ; 0x02034AC8
ldr r4, [r0, #0x4]
cmp r0, #0x0
bne _02034AD8
- bl ErrorHandling
+ bl GF_AssertFail
_02034AD8:
cmp r4, #0x0
beq _02034AEC
@@ -232,7 +232,7 @@ _02034B9C:
cmp r2, r5
blo _02034B8A
_02034BA4:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
@@ -261,7 +261,7 @@ _02034BCC:
cmp r3, r5
blo _02034BBC
_02034BD4:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r4-r6, pc}
@@ -290,7 +290,7 @@ _02034BFC:
cmp r3, r5
blo _02034BEC
_02034C04:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r4-r6, pc}
@@ -452,7 +452,7 @@ FUN_02034CEC: ; 0x02034CEC
lsl r1, r1, #0x8
cmp r0, r1
blo _02034D1C
- bl ErrorHandling
+ bl GF_AssertFail
_02034D1C:
mov r0, #0x82
lsl r0, r0, #0x4
@@ -469,7 +469,7 @@ FUN_02034D2C: ; 0x02034D2C
ldr r0, [r4, #0x14]
cmp r0, #0x0
bne _02034D3A
- bl ErrorHandling
+ bl GF_AssertFail
_02034D3A:
mov r0, #0x82
ldr r1, [r4, #0x14]
diff --git a/arm9/asm/unk_02034E84.s b/arm9/asm/unk_02034E84.s
index 2a2e5e37..45f0b5d0 100644
--- a/arm9/asm/unk_02034E84.s
+++ b/arm9/asm/unk_02034E84.s
@@ -75,7 +75,7 @@ FUN_02034E78: ; 0x02034E78
cmp r0, #0x14
bls _02034E88
_02034E82:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x1
_02034E88:
sub r0, r0, #0x1
diff --git a/arm9/asm/unk_02034FE4.s b/arm9/asm/unk_02034FE4.s
index 8ff7abe0..81135415 100644
--- a/arm9/asm/unk_02034FE4.s
+++ b/arm9/asm/unk_02034FE4.s
@@ -136,14 +136,14 @@ FUN_02034FE4: ; 0x02034FE4
bl Sav2_SysInfo_RTC_get
add r6, r0, #0x0
add r0, r6, #0x4
- bl FUN_02012710
+ bl GF_RTC_GetDayOfYear
sub r5, r0, #0x1
bmi _0203500C
ldr r0, _02035060 ; =0x0000016E
cmp r5, r0
blt _02035010
_0203500C:
- bl ErrorHandling
+ bl GF_AssertFail
_02035010:
ldr r0, [r6, #0x8]
cmp r0, #0x2
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index f0cdc150..c9df4ca4 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -639,7 +639,7 @@ FUN_0203549C: ; 0x0203549C
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
mov r1, #0xb
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r4, #0x24]
mov r5, #0x0
ldr r0, [sp, #0x14]
@@ -684,7 +684,7 @@ _02035526:
ldrb r2, [r2, #0x0]
ldr r0, [r4, #0x24]
add r1, r7, #0x0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
ldr r0, [sp, #0x20]
bl String_dtor
add r0, r7, #0x0
@@ -698,7 +698,7 @@ _02035594:
ldr r0, [r4, #0x24]
ldr r1, [sp, #0x18]
ldr r2, [r2, r6]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_020355A2:
ldr r0, [sp, #0x1c]
add r0, #0x8c
@@ -902,7 +902,7 @@ FUN_02035718: ; 0x02035718
mov r1, #0x0
bl FUN_02001C5C
ldr r0, [r4, #0x24]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x0
str r0, [r4, #0x20]
pop {r4, pc}
@@ -966,7 +966,7 @@ _0203576C:
add r0, r5, #0x0
add r0, #0x10
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _0203589C ; =0x00000143
mov r0, #0x0
mov r1, #0x1a
@@ -1731,7 +1731,7 @@ FUN_02035DC8: ; 0x02035DC8
cmp r1, #0x0
beq _02035DF0
mov r0, #0xb
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_02035DF0:
mov r0, #0xc
strh r0, [r4, #0x2a]
@@ -3193,7 +3193,7 @@ FUN_02036A14: ; 0x02036A14
lsl r1, r1, #0x2
ldr r1, [r4, r1]
mov r0, #0xb
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r1, #0x73
lsl r1, r1, #0x2
add r0, r5, #0x0
@@ -3223,7 +3223,7 @@ FUN_02036A78: ; 0x02036A78
lsl r1, r1, #0x2
ldr r1, [r4, r1]
mov r0, #0xb
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r1, #0x73
lsl r1, r1, #0x2
add r0, r5, #0x0
@@ -3255,7 +3255,7 @@ FUN_02036AB8: ; 0x02036AB8
ldr r1, [r4, r0]
mov r0, #0xb
ldr r7, [r1, #0x0]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r5, [r4, r0]
@@ -3264,7 +3264,7 @@ FUN_02036AB8: ; 0x02036AB8
bne _02036B0E
mov r0, #0xb
add r1, r5, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r1, #0x7a
lsl r1, r1, #0x2
lsl r2, r7, #0x18
@@ -3320,7 +3320,7 @@ _02036B0E:
lsl r1, r1, #0x2
ldr r1, [r4, r1]
mov r0, #0xb
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0x0
bl FUN_0204649C
mov r0, #0x72
diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s
index c2bab3d0..26a50555 100644
--- a/arm9/asm/unk_020372D4.s
+++ b/arm9/asm/unk_020372D4.s
@@ -83,13 +83,13 @@ LoadOverlay_MODULE_05: ; 0x02037350
ldr r0, [r0, #0x4]
cmp r0, #0x0
beq _02037360
- bl ErrorHandling
+ bl GF_AssertFail
_02037360:
ldr r0, [r4, #0x0]
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0203736C
- bl ErrorHandling
+ bl GF_AssertFail
_0203736C:
ldr r0, _0203738C ; =SDK_OVERLAY_MODULE_05_ID
mov r1, #0x2
@@ -166,7 +166,7 @@ FUN_020373D4: ; 0x020373D4
add r6, r2, #0x0
cmp r0, #0x0
beq _020373E8
- bl ErrorHandling
+ bl GF_AssertFail
_020373E8:
add r0, r5, #0x0
bl FUN_02037394
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 7c45ad7a..9c2132bf 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -322,7 +322,7 @@ _020378BC:
str r1, [r0, #0x0]
b _020378C8
_020378C4:
- bl ErrorHandling
+ bl GF_AssertFail
_020378C8:
ldr r1, _020378F4 ; =UNK_02105DB8
add r0, r6, #0x0
@@ -357,7 +357,7 @@ FUN_020378FC: ; 0x020378FC
bl FUN_0206E384
cmp r0, #0x5
bne _02037916
- bl ErrorHandling
+ bl GF_AssertFail
_02037916:
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -2333,7 +2333,7 @@ FUN_020388B4: ; 0x020388B4
bl MOD05_021ED49C
add r5, r0, #0x0
bne _020388CC
- bl ErrorHandling
+ bl GF_AssertFail
_020388CC:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -2417,7 +2417,7 @@ _02038956:
ldr r1, [r5, #0x8]
ldr r2, [sp, #0x4]
add r3, r6, #0x0
- bl FUN_020127C0
+ bl GF_RTC_TimeDelta
mov r2, #0x3c
mov r3, #0x0
bl _ll_sdiv
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 08416fc7..bbed9516 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -199,9 +199,9 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk002F
.word ScrCmd_WaitButtonAB
.word ScrCmd_WaitButton
- .word ScrCmd_Unk0032
+ .word ScrCmd_WaitButtonABPad
.word ScrCmd_Unk0033
- .word ScrCmd_Unk0034
+ .word ScrCmd_CloseMessageBox
.word ScrCmd_Unk0035
.word ScrCmd_CreateMessageBox
.word ScrCmd_Unk0037
@@ -212,7 +212,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Menu
.word ScrCmd_ScrollBg
.word ScrCmd_YesNoMenu
- .word FUN_0203DEA8
+ .word ScrCmd_Unk003F
.word ScrCmd_Unk0040
.word ScrCmd_Unk0041
.word ScrCmd_Unk0042
@@ -222,53 +222,53 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk0046
.word ScrCmd_Unk0047
.word ScrCmd_Unk0048
- .word FUN_020414E0
- .word FUN_020414FC
- .word FUN_02041518
- .word FUN_02041558
- .word ScrCmd_waitcry
- .word ScrCmd_playbgm
- .word FUN_020415BC
- .word FUN_020413E8
- .word FUN_020413F8
- .word FUN_0204140C
- .word FUN_02041424
- .word FUN_0204143C
- .word FUN_02041478
- .word FUN_0204149C
- .word FUN_020414B8
- .word FUN_020414CC
- .word FUN_020415E0
- .word FUN_02041618
- .word FUN_02041644
- .word FUN_02041650
- .word FUN_02041664
- .word FUN_0203AFC4
- .word FUN_0203B148
- .word FUN_0203B1F0
- .word FUN_0203B3B0
- .word FUN_0203B3C0
- .word FUN_0203B3DC
- .word FUN_0203B3F8
- .word FUN_0203B440
- .word FUN_0203B468
- .word FUN_0203B500
- .word FUN_0203B544
- .word FUN_0203B574
- .word FUN_0203B5B8
- .word FUN_0203B640
- .word FUN_0203B724
- .word FUN_0203B758
- .word FUN_0203B7D8
+ .word ScrCmd_PlayFanfare
+ .word ScrCmd_StopFanfare
+ .word ScrCmd_PlayFanfareWait
+ .word ScrCmd_PlayCry
+ .word ScrCmd_PlayCryWait
+ .word ScrCmd_PlaySound
+ .word ScrCmd_PlaySoundWait
+ .word ScrCmd_PlayBgm
+ .word ScrCmd_StopBgm
+ .word ScrCmd_PlayDefaultBgm
+ .word ScrCmd_Unk0053
+ .word ScrCmd_FadeOutBgm
+ .word ScrCmd_FadeInBgm
+ .word ScrCmd_Unk0056
+ .word ScrCmd_Unk0057
+ .word ScrCmd_Unk0058
+ .word ScrCmd_CheckChatotCry
+ .word ScrCmd_StartChatotRecord
+ .word ScrCmd_StopChatotRecord
+ .word ScrCmd_SaveChatotCry
+ .word ScrCmd_Unk005D
+ .word ScrCmd_Unk005E
+ .word ScrCmd_Unk005F
+ .word ScrCmd_Unk0060
+ .word ScrCmd_Unk0061
+ .word ScrCmd_Unk0062
+ .word ScrCmd_Unk0063
+ .word ScrCmd_Unk0064
+ .word ScrCmd_Unk0065
+ .word ScrCmd_Unk0066
+ .word ScrCmd_Unk0067
+ .word ScrCmd_Unk0068
+ .word ScrCmd_Unk0069
+ .word ScrCmd_Unk006A
+ .word ScrCmd_Unk006B
+ .word ScrCmd_Unk006C
+ .word ScrCmd_Unk006D
+ .word ScrCmd_Unk006E
.word ScrCmd_GiveMoney
.word ScrCmd_TakeMoneyImmediate
.word ScrCmd_HasEnoughMoneyImmediate
- .word ScrCmd_Unk0072
- .word ScrCmd_Unk0073
- .word ScrCmd_Unk0074
- .word ScrCmd_Unk0075
- .word ScrCmd_Unk0076
- .word ScrCmd_Unk0077
+ .word ScrCmd_ShowMoneyBox
+ .word ScrCmd_HideMoneyBox
+ .word ScrCmd_UpdateMoneyBox
+ .word ScrCmd_ShowCoinBox
+ .word ScrCmd_HideCoinBox
+ .word ScrCmd_UpdateCoinBox
.word ScrCmd_GetCoins
.word ScrCmd_GiveCoins
.word ScrCmd_TakeCoinsImmediate
@@ -280,380 +280,380 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_GetItemPocketId
.word ScrCmd_Unk0081
.word ScrCmd_Unk0082
- .word ScrCmd_Unk0083
- .word ScrCmd_Unk0084
- .word ScrCmd_Unk0085
- .word ScrCmd_Unk0086
- .word ScrCmd_Unk0087
- .word ScrCmd_Unk0088
- .word ScrCmd_Unk0089
- .word ScrCmd_Unk008A
- .word ScrCmd_Unk008B
- .word ScrCmd_Unk008C
- .word ScrCmd_Unk008D
- .word ScrCmd_Unk008E
- .word ScrCmd_Unk008F
- .word ScrCmd_Unk0090
- .word ScrCmd_Unk0091
- .word ScrCmd_Unk0092
- .word FUN_0203B81C
- .word FUN_0203B85C
- .word FUN_0203B8A0
+ .word ScrCmd_GiveSecretBaseDecoration
+ .word ScrCmd_TakeSecretBaseDecoration
+ .word ScrCmd_HasSpaceForDecoration
+ .word ScrCmd_GetDecorationCount
+ .word ScrCmd_GiveUndergroundTrap
+ .word ScrCmd_TakeUndergroundTrap
+ .word ScrCmd_HasSpaceForTrap
+ .word ScrCmd_GetTrapCount
+ .word ScrCmd_GiveTreasure
+ .word ScrCmd_TakeTreasure
+ .word ScrCmd_HasSpaceForTreasure
+ .word ScrCmd_GetTreasureCount
+ .word ScrCmd_GiveUndergroundSphere
+ .word ScrCmd_TakeUndergroundSphere
+ .word ScrCmd_HasSpaceForSphere
+ .word ScrCmd_GetSphereCount
+ .word ScrCmd_Unk0093
+ .word ScrCmd_Unk0094
+ .word ScrCmd_Unk0095
.word ScrCmd_GiveMon
- .word ScrCmd_giveegg
- .word ScrCmd_setpartymonmove
- .word ScrCmd_partymonhasmove
- .word ScrCmd_findpartymonwithmove
- .word FUN_0203BB34
- .word FUN_0203BB80
- .word FUN_0203BB84
- .word FUN_0203BB88
- .word FUN_0203BB8C
- .word FUN_02045264
- .word FUN_0203BC1C
- .word FUN_0203BCBC
- .word FUN_0203BCCC
- .word FUN_0203BCD8
- .word FUN_0203BF20
- .word FUN_0203BF2C
- .word FUN_0203BF84
- .word FUN_0203BFEC
- .word FUN_0203C118
- .word FUN_0203C12C
- .word ScrCmd_monstoragepc
- .word FUN_0203C2C4
- .word FUN_0203C2E0
- .word FUN_0203C2F0
- .word FUN_0203C300
- .word ScrCmd_halloffame
- .word FUN_0203C33C
- .word FUN_0203C368
- .word FUN_0203C3C8
- .word FUN_0203C3E8
- .word FUN_0203C430
- .word FUN_020416A8
- .word FUN_02041770
- .word FUN_020417E0
- .word FUN_02041808
- .word FUN_0203C4F0
- .word FUN_0203C520
- .word FUN_0203C6C4
- .word FUN_0203C70C
- .word FUN_0203C730
- .word FUN_0203C844
- .word FUN_0203C874
- .word FUN_0203C8B4
- .word FUN_0203C8E4
- .word FUN_0203C930
- .word FUN_0203C960
- .word FUN_0203C990
- .word FUN_0203CA20
- .word FUN_0203CA2C
- .word FUN_0203CA5C
- .word FUN_0203CB08
- .word FUN_0203CB20
- .word FUN_0203CB48
- .word FUN_0203CB60
+ .word ScrCmd_GiveEgg
+ .word ScrCmd_SetPartyMonMove
+ .word ScrCmd_PartyMonHasMove
+ .word ScrCmd_FindPartyMonWithMove
+ .word ScrCmd_Unk009B
+ .word ScrCmd_Unk009C
+ .word ScrCmd_Unk009D
+ .word ScrCmd_Unk009E
+ .word ScrCmd_Unk009F
+ .word ScrCmd_Unk00A0
+ .word ScrCmd_Unk00A1
+ .word ScrCmd_Unk00A2
+ .word ScrCmd_Unk00A3
+ .word ScrCmd_Unk00A4
+ .word ScrCmd_Unk00A5
+ .word ScrCmd_Unk00A6
+ .word ScrCmd_Unk00A7
+ .word ScrCmd_Unk00A8
+ .word ScrCmd_Unk00A9
+ .word ScrCmd_Unk00AA
+ .word ScrCmd_MonStoragePC
+ .word ScrCmd_Unk00AC
+ .word ScrCmd_Unk00AD
+ .word ScrCmd_Unk00AE
+ .word ScrCmd_Unk00AF
+ .word ScrCmd_HallOfFame
+ .word ScrCmd_Unk00B1
+ .word ScrCmd_Unk00B2
+ .word ScrCmd_Unk00B3
+ .word ScrCmd_Unk00B4
+ .word ScrCmd_Unk00B5
+ .word ScrCmd_Unk00B6
+ .word ScrCmd_Unk00B7
+ .word ScrCmd_Unk00B8
+ .word ScrCmd_Unk00B9
+ .word ScrCmd_Unk00BA
+ .word ScrCmd_Unk00BB
+ .word ScrCmd_Unk00BC
+ .word ScrCmd_Unk00BD
+ .word ScrCmd_Unk00BE
+ .word ScrCmd_Unk00BF
+ .word ScrCmd_Unk00C0
+ .word ScrCmd_Unk00C1
+ .word ScrCmd_Unk00C2
+ .word ScrCmd_Unk00C3
+ .word ScrCmd_Unk00C4
+ .word ScrCmd_Unk00C5
+ .word ScrCmd_Unk00C6
+ .word ScrCmd_Unk00C7
+ .word ScrCmd_Unk00C8
+ .word ScrCmd_Unk00C9
+ .word ScrCmd_Unk00CA
+ .word ScrCmd_Unk00CB
+ .word ScrCmd_Unk00CC
.word ScrCmd_GetPlayerName
.word ScrCmd_GetRivalName
.word ScrCmd_GetFriendName
- .word ScrCmd_Unk00D0
+ .word ScrCmd_GetPokemonName
.word ScrCmd_GetItemName
.word ScrCmd_GetPocketName
.word ScrCmd_GetTMHMMoveName
.word ScrCmd_GetMoveName
.word ScrCmd_Unk00D5
- .word ScrCmd_Unk00D6
+ .word ScrCmd_GetPokemonNickname
.word ScrCmd_GetPoketchAppName
.word ScrCmd_GetTrainerClassName
.word ScrCmd_Unk00D9
.word ScrCmd_Unk00DA
- .word ScrCmd_Unk00DB
- .word ScrCmd_Unk00DC
- .word ScrCmd_Unk00DD
- .word FUN_0203CBBC
+ .word ScrCmd_GetPlayerStarterName
+ .word ScrCmd_GetRivalStarterName
+ .word ScrCmd_GetCounterpartStarterName
+ .word ScrCmd_Unk00DE
.word ScrCmd_GetDecorationName
.word ScrCmd_GetUndergroundTrapName
.word ScrCmd_GetUndergroundItemName
- .word ScrCmd_Unk00E2
- .word FUN_0203CB70
- .word FUN_0204185C
- .word FUN_0204188C
- .word FUN_0203CBE8
- .word FUN_02041970
- .word FUN_020419F8
- .word FUN_02041A80
- .word FUN_02041AB4
- .word FUN_02041AD4
- .word FUN_02041AE0
- .word FUN_02041B10
- .word FUN_02041B70
- .word FUN_02041B9C
- .word FUN_02041BC4
- .word FUN_02041BF0
- .word FUN_0203CC88
- .word FUN_0203CD20
- .word FUN_0203CDB8
- .word FUN_0203CDC4
- .word FUN_0203CDD0
- .word FUN_0203CE00
- .word FUN_0203FE90
- .word FUN_0203FEC0
- .word FUN_0203FF10
- .word FUN_02040028
- .word FUN_02040074
- .word FUN_020400C8
- .word FUN_0204011C
- .word FUN_02040170
- .word FUN_020401CC
- .word FUN_02040204
- .word FUN_02040220
- .word FUN_0204025C
- .word FUN_02040298
- .word FUN_020402D4
- .word FUN_02040304
- .word FUN_02040340
- .word FUN_02040370
- .word FUN_020403A0
- .word FUN_020403D0
- .word FUN_02040414
- .word FUN_02040458
- .word FUN_020404FC
- .word FUN_0204052C
- .word FUN_0204056C
- .word FUN_02040488
- .word FUN_020405CC
- .word FUN_020405F8
- .word FUN_02040638
- .word FUN_0204064C
- .word FUN_02040660
- .word FUN_020406C0
- .word FUN_0204059C
- .word FUN_020405B4
- .word FUN_02044CE0
- .word FUN_02044D44
- .word FUN_0203CE0C
- .word FUN_0203CE8C
- .word FUN_0203CEBC
- .word FUN_0203CF04
- .word FUN_0203CF34
- .word FUN_0203CF64
- .word FUN_0203CF94
- .word FUN_0203CFC4
- .word FUN_0203CFC8
- .word FUN_0203D050
- .word FUN_0203D0F8
- .word FUN_0203D134
- .word FUN_0203D140
- .word FUN_0203D150
- .word FUN_0203D178
- .word FUN_0203D194
- .word FUN_0203D1A4
- .word FUN_0203D1C0
- .word FUN_0203D214
- .word FUN_0203C054
- .word FUN_0203C090
- .word FUN_0203C0CC
- .word FUN_0203D23C
- .word FUN_0203D248
- .word FUN_0203D278
- .word FUN_0203D2A4
- .word FUN_0203D2E4
- .word FUN_0203D330
- .word FUN_0203D33C
- .word FUN_0203D36C
- .word FUN_0203D3A4
- .word FUN_0203D60C
- .word FUN_0203D61C
- .word FUN_0203D3DC
- .word FUN_0203D448
- .word FUN_0203D458
- .word FUN_0203D490
- .word FUN_0203D528
- .word FUN_0203D5B0
- .word FUN_0203D5F8
- .word FUN_0203D630
- .word FUN_0203D66C
- .word FUN_0203D6C4
- .word FUN_0203D560
- .word FUN_0203FCF4
- .word FUN_0203FDBC
- .word FUN_0203FE08
- .word FUN_0203FE48
- .word FUN_0203D868
- .word FUN_0203D874
- .word ScrCmd_getplayergender
- .word ScrCmd_healparty
- .word FUN_0203D8E8
- .word FUN_0203D8EC
- .word FUN_0203D938
- .word FUN_0203D948
- .word FUN_0203D728
- .word FUN_0203D738
- .word FUN_0203D774
- .word FUN_0203D834
- .word FUN_020453F4
- .word FUN_02045424
- .word FUN_02045438
- .word FUN_02045468
- .word FUN_02045484
- .word FUN_020454CC
- .word FUN_0204552C
- .word FUN_02045500
- .word FUN_0204557C
- .word FUN_02045590
- .word FUN_020455BC
- .word FUN_020455D0
- .word FUN_020455E4
- .word FUN_02045610
- .word FUN_02045624
- .word FUN_02045638
- .word FUN_02045664
- .word FUN_0203DC00
- .word FUN_0203DC58
- .word FUN_0203DC70
- .word FUN_0203DC88
- .word FUN_0203DCA0
- .word ScrCmd_Unk016D
- .word ScrCmd_Unk016E
- .word FUN_0203DCB8
- .word FUN_0203DCC8
- .word FUN_0203DCD8
- .word FUN_0203DCE8
- .word FUN_0203DCF8
- .word FUN_0203DD08
- .word FUN_0203DD18
- .word FUN_0203DD34
- .word FUN_02044B00
- .word FUN_0203C460
- .word FUN_0203C4B0
- .word FUN_0203D958
- .word ScrCmd_Unk017B
+ .word ScrCmd_GetMapName
+ .word ScrCmd_Unk00E3
+ .word ScrCmd_Unk00E4
+ .word ScrCmd_Unk00E5
+ .word ScrCmd_Unk00E6
+ .word ScrCmd_Unk00E7
+ .word ScrCmd_Unk00E8
+ .word ScrCmd_Unk00E9
+ .word ScrCmd_Unk00EA
+ .word ScrCmd_Unk00EB
+ .word ScrCmd_Unk00EC
+ .word ScrCmd_Unk00ED
+ .word ScrCmd_Unk00EE
+ .word ScrCmd_Unk00EF
+ .word ScrCmd_Unk00F0
+ .word ScrCmd_Unk00F1
+ .word ScrCmd_Unk00F2
+ .word ScrCmd_Unk00F3
+ .word ScrCmd_Unk00F4
+ .word ScrCmd_Unk00F5
+ .word ScrCmd_Unk00F6
+ .word ScrCmd_Unk00F7
+ .word ScrCmd_Unk00F8
+ .word ScrCmd_Unk00F9
+ .word ScrCmd_Unk00FA
+ .word ScrCmd_Unk00FB
+ .word ScrCmd_Unk00FC
+ .word ScrCmd_Unk00FD
+ .word ScrCmd_Unk00FE
+ .word ScrCmd_Unk00FF
+ .word ScrCmd_Unk0100
+ .word ScrCmd_Unk0101
+ .word ScrCmd_Unk0102
+ .word ScrCmd_Unk0103
+ .word ScrCmd_Unk0104
+ .word ScrCmd_Unk0105
+ .word ScrCmd_Unk0106
+ .word ScrCmd_Unk0107
+ .word ScrCmd_Unk0108
+ .word ScrCmd_Unk0109
+ .word ScrCmd_Unk010A
+ .word ScrCmd_Unk010B
+ .word ScrCmd_Unk010C
+ .word ScrCmd_Unk010D
+ .word ScrCmd_Unk010E
+ .word ScrCmd_Unk010F
+ .word ScrCmd_Unk0110
+ .word ScrCmd_Unk0111
+ .word ScrCmd_Unk0112
+ .word ScrCmd_Unk0113
+ .word ScrCmd_Unk0114
+ .word ScrCmd_Unk0115
+ .word ScrCmd_Unk0116
+ .word ScrCmd_Unk0117
+ .word ScrCmd_Unk0118
+ .word ScrCmd_Unk0119
+ .word ScrCmd_Unk011A
+ .word ScrCmd_Unk011B
+ .word ScrCmd_Unk011C
+ .word ScrCmd_Unk011D
+ .word ScrCmd_Unk011E
+ .word ScrCmd_Unk011F
+ .word ScrCmd_Unk0120
+ .word ScrCmd_Unk0121
+ .word ScrCmd_Unk0122
+ .word ScrCmd_Unk0123
+ .word ScrCmd_Unk0124
+ .word ScrCmd_Unk0125
+ .word ScrCmd_Unk0126
+ .word ScrCmd_Unk0127
+ .word ScrCmd_Unk0128
+ .word ScrCmd_Unk0129
+ .word ScrCmd_Unk012A
+ .word ScrCmd_Unk012B
+ .word ScrCmd_Unk012C
+ .word ScrCmd_Unk012D
+ .word ScrCmd_Unk012E
+ .word ScrCmd_Unk012F
+ .word ScrCmd_Unk0130
+ .word ScrCmd_Unk0131
+ .word ScrCmd_Unk0132
+ .word ScrCmd_Unk0133
+ .word ScrCmd_Unk0134
+ .word ScrCmd_Unk0135
+ .word ScrCmd_Unk0136
+ .word ScrCmd_Unk0137
+ .word ScrCmd_Unk0138
+ .word ScrCmd_Unk0139
+ .word ScrCmd_Unk013A
+ .word ScrCmd_Unk013B
+ .word ScrCmd_Unk013C
+ .word ScrCmd_Unk013D
+ .word ScrCmd_Unk013E
+ .word ScrCmd_Unk013F
+ .word ScrCmd_Unk0140
+ .word ScrCmd_Unk0141
+ .word ScrCmd_Unk0142
+ .word ScrCmd_Unk0143
+ .word ScrCmd_Unk0144
+ .word ScrCmd_Unk0145
+ .word ScrCmd_Unk0146
+ .word ScrCmd_NormalMart
+ .word ScrCmd_SpecialMart
+ .word ScrCmd_GoodsMart
+ .word ScrCmd_SealsMart
+ .word ScrCmd_Unk014B
+ .word ScrCmd_Unk014C
+ .word ScrCmd_GetPlayerGender
+ .word ScrCmd_HealParty
+ .word ScrCmd_Unk014F
+ .word ScrCmd_Unk0150
+ .word ScrCmd_Unk0151
+ .word ScrCmd_Unk0152
+ .word ScrCmd_Unk0153
+ .word ScrCmd_Unk0154
+ .word ScrCmd_Unk0155
+ .word ScrCmd_Unk0156
+ .word ScrCmd_HasSinnohDex
+ .word ScrCmd_GiveSinnohDex
+ .word ScrCmd_HasRunningShoes
+ .word ScrCmd_GiveRunningShoes
+ .word ScrCmd_HasBadge
+ .word ScrCmd_GiveBadge
+ .word ScrCmd_GetTotalEarnedBadges
+ .word ScrCmd_GiveBag
+ .word ScrCmd_HasBag
+ .word ScrCmd_Unk0160
+ .word ScrCmd_Unk0161
+ .word ScrCmd_Unk0162
+ .word ScrCmd_Unk0163
+ .word ScrCmd_Unk0164
+ .word ScrCmd_Unk0165
+ .word ScrCmd_CheckGameCompleted
+ .word ScrCmd_SetGameCompleted
+ .word ScrCmd_Unk0168
+ .word ScrCmd_Unk0169
+ .word ScrCmd_Unk016A
+ .word ScrCmd_Unk016B
+ .word ScrCmd_Unk016C
+ .word ScrCmd_GetDaycarePokemonNames
+ .word ScrCmd_GetDaycareStatus
+ .word ScrCmd_Unk016F
+ .word ScrCmd_Unk0170
+ .word ScrCmd_Unk0171
+ .word ScrCmd_Unk0172
+ .word ScrCmd_Unk0173
+ .word ScrCmd_Unk0174
+ .word ScrCmd_Unk0175
+ .word ScrCmd_Unk0176
+ .word ScrCmd_Unk0177
+ .word ScrCmd_Unk0178
+ .word ScrCmd_Unk0179
+ .word ScrCmd_Unk017A
+ .word ScrCmd_GetBerryName
.word ScrCmd_GetNatureName
- .word ScrCmd_Unk017D
- .word ScrCmd_Unk017E
- .word ScrCmd_Unk017F
- .word ScrCmd_Unk0180
- .word ScrCmd_Unk0181
- .word ScrCmd_Unk0182
- .word ScrCmd_Unk0183
+ .word ScrCmd_GetBerryTreeGrowth
+ .word ScrCmd_GetBerryTreeType
+ .word ScrCmd_GetBerryTreeMulch
+ .word ScrCmd_GetBerryTreeWater
+ .word ScrCmd_GetBerryTreeAmount
+ .word ScrCmd_SetBerryTreeMulch
+ .word ScrCmd_SetBerryTreeType
.word ScrCmd_Unk0184
- .word ScrCmd_Unk0185
- .word FUN_0203D998
- .word FUN_0203D9E8
- .word FUN_0203DA78
- .word FUN_0203DAB0
- .word FUN_0203DAE8
- .word FUN_0203DB38
- .word FUN_0203DB88
+ .word ScrCmd_TakeBerryTreeBerries
+ .word ScrCmd_Unk0186
+ .word ScrCmd_Unk0187
+ .word ScrCmd_Unk0188
+ .word ScrCmd_Unk0189
+ .word ScrCmd_Unk018A
+ .word ScrCmd_Unk018B
+ .word ScrCmd_Unk018C
.word ScrCmd_ShowSaveClock
.word ScrCmd_HideSaveClock
- .word FUN_0203DBD4
+ .word ScrCmd_Unk018F
.word ScrCmd_WaitButtonABTime
- .word FUN_0203B8E4
- .word FUN_0203B944
- .word FUN_0203B968
- .word FUN_0203B9B4
- .word FUN_0203BA3C
- .word FUN_0203BAB0
- .word FUN_0203BAF4
- .word ScrCmd_getpartyspecies
- .word ScrCmd_checkpartymonotid
- .word FUN_02044B2C
- .word FUN_02044B84
- .word FUN_02044C0C
- .word FUN_02044C88
- .word FUN_0203DD60
- .word FUN_0203DE00
- .word FUN_0203DE4C
- .word FUN_0203DE58
- .word FUN_0203DE80
+ .word ScrCmd_Unk0191
+ .word ScrCmd_Unk0192
+ .word ScrCmd_Unk0193
+ .word ScrCmd_Unk0194
+ .word ScrCmd_Unk0195
+ .word ScrCmd_Unk0196
+ .word ScrCmd_Unk0197
+ .word ScrCmd_GetPartySpecies
+ .word ScrCmd_CheckPartyMonOTID
+ .word ScrCmd_Unk019A
+ .word ScrCmd_Unk019B
+ .word ScrCmd_Unk019C
+ .word ScrCmd_Unk019D
+ .word ScrCmd_Unk019E
+ .word ScrCmd_Unk019F
+ .word ScrCmd_Unk01A0
+ .word ScrCmd_Unk01A1
+ .word ScrCmd_Unk01A2
.word ScrCmd_TakeMoneyAddress
.word ScrCmd_Unk01A4
.word ScrCmd_Unk01A5
.word ScrCmd_Unk01A6
.word ScrCmd_Unk01A7
- .word ScrCmd_Unk01A8
- .word ScrCmd_Unk01A9
+ .word ScrCmd_DeleteDaycareEgg
+ .word ScrCmd_GiveDaycareEgg
.word ScrCmd_Unk01AA
.word ScrCmd_HasEnoughMoneyAddress
- .word FUN_0203DD50
+ .word ScrCmd_Unk01AC
.word ScrCmd_Unk01AD
- .word ScrCmd_Unk01AE
+ .word ScrCmd_GetDaycareLevel
.word ScrCmd_Unk01AF
.word ScrCmd_Unk01B0
- .word FUN_0203DEC4
- .word FUN_0203DEF8
- .word FUN_0203DF2C
- .word FUN_0203DF38
- .word FUN_0203DF64
- .word FUN_0203DF84
- .word FUN_0203DFA8
- .word FUN_0203DFE0
- .word ScrCmd_getpartymonfriendship
- .word FUN_020448D4
- .word FUN_020449A4
+ .word ScrCmd_Unk01B1
+ .word ScrCmd_Unk01B2
+ .word ScrCmd_Unk01B3
+ .word ScrCmd_Unk01B4
+ .word ScrCmd_Unk01B5
+ .word ScrCmd_Unk01B6
+ .word ScrCmd_Unk01B7
+ .word ScrCmd_Unk01B8
+ .word ScrCmd_GetPartyMonFriendship
+ .word ScrCmd_Unk01BA
+ .word ScrCmd_Unk01BB
.word ScrCmd_Unk01BC
- .word FUN_0203B618
+ .word ScrCmd_Unk01BD
.word ScrCmd_Unk01BE
.word ScrCmd_Unk01BF
- .word FUN_02044F58
- .word FUN_0203E018
- .word FUN_0203E054
- .word FUN_0203E078
- .word FUN_0203E0CC
- .word FUN_0203E120
- .word FUN_02045D88
- .word FUN_02045DD0
- .word FUN_02044D8C
- .word FUN_02044E34
- .word FUN_02044E78
+ .word ScrCmd_Unk01C0
+ .word ScrCmd_Unk01C1
+ .word ScrCmd_Unk01C2
+ .word ScrCmd_Unk01C3
+ .word ScrCmd_Unk01C4
+ .word ScrCmd_Unk01C5
+ .word ScrCmd_Unk01C6
+ .word ScrCmd_Unk01C7
+ .word ScrCmd_Unk01C8
+ .word ScrCmd_Unk01C9
+ .word ScrCmd_Unk01CA
.word ScrCmd_GetPokemonMoveName
- .word FUN_0203E138
- .word FUN_0203E168
- .word FUN_0203E254
- .word FUN_02045678
- .word FUN_020456D4
- .word FUN_0204572C
- .word FUN_0203E258
- .word FUN_0203E29C
- .word FUN_0203E2F8
- .word FUN_0203E35C
- .word FUN_0203E38C
- .word FUN_0203C174
- .word FUN_0203C1AC
- .word FUN_0203C200
- .word FUN_02042354
- .word FUN_02042364
- .word FUN_02042394
- .word FUN_020423B0
- .word FUN_02042700
- .word FUN_02042780
- .word FUN_020427A8
- .word FUN_020427D0
- .word FUN_02042864
- .word FUN_02042894
- .word FUN_020428E0
- .word FUN_0203E4F0
- .word FUN_0203E510
- .word FUN_0203E568
- .word FUN_0203E3D0
- .word FUN_0203E408
- .word FUN_0203E440
- .word FUN_0203E470
- .word FUN_0203E4A0
- .word FUN_0203E4B0
- .word FUN_02044ED8
- .word FUN_0203E4D8
- .word FUN_02044F20
- .word ScrCmd_Unk01F1
+ .word ScrCmd_Unk01CC
+ .word ScrCmd_Unk01CD
+ .word ScrCmd_Unk01CE
+ .word ScrCmd_GetSetStrength
+ .word ScrCmd_GetSetFlash
+ .word ScrCmd_GetSetDefog
+ .word ScrCmd_Unk01D2
+ .word ScrCmd_Unk01D3
+ .word ScrCmd_Unk01D4
+ .word ScrCmd_Unk01D5
+ .word ScrCmd_Unk01D6
+ .word ScrCmd_Unk01D7
+ .word ScrCmd_Unk01D8
+ .word ScrCmd_Unk01D9
+ .word ScrCmd_Unk01DA
+ .word ScrCmd_Unk01DB
+ .word ScrCmd_Unk01DC
+ .word ScrCmd_Unk01DD
+ .word ScrCmd_Unk01DE
+ .word ScrCmd_Unk01DF
+ .word ScrCmd_Unk01E0
+ .word ScrCmd_Unk01E1
+ .word ScrCmd_Unk01E2
+ .word ScrCmd_Unk01E3
+ .word ScrCmd_Unk01E4
+ .word ScrCmd_Unk01E5
+ .word ScrCmd_Unk01E6
+ .word ScrCmd_Unk01E7
+ .word ScrCmd_Unk01E8
+ .word ScrCmd_Unk01E9
+ .word ScrCmd_Unk01EA
+ .word ScrCmd_Unk01EB
+ .word ScrCmd_Unk01EC
+ .word ScrCmd_Unk01ED
+ .word ScrCmd_Unk01EE
+ .word ScrCmd_Unk01EF
+ .word ScrCmd_Unk01F0
+ .word ScrCmd_CountFossils
.word ScrCmd_Unk01F2
.word ScrCmd_Unk01F3
- .word ScrCmd_Unk01F4
- .word ScrCmd_Unk01F5
- .word ScrCmd_countpartymonsatorbelowlevel
- .word ScrCmd_survivepsn
- .word FUN_0203BC2C
+ .word ScrCmd_GetFossilPokemon
+ .word ScrCmd_GetFossilMinimumAmount
+ .word ScrCmd_CountPartyMonsAtOrBelowLevel
+ .word ScrCmd_SurvivePsn
+ .word ScrCmd_Unk01F8
.word ScrCmd_DebugWatch
.word ScrCmd_MessageFrom
.word ScrCmd_MessageFrom2
@@ -661,202 +661,202 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_Unk01FD
.word ScrCmd_Unk01FE
.word ScrCmd_Unk01FF
- .word FUN_0203C7F4
- .word FUN_0203C820
- .word FUN_0203E5DC
- .word FUN_0203C788
- .word FUN_0203C7E4
- .word FUN_0203C0FC
- .word FUN_0203E674
- .word FUN_0203BD08
- .word FUN_0203BD28
- .word FUN_0203BE50
- .word FUN_0203BECC
- .word FUN_0203BF00
+ .word ScrCmd_Unk0200
+ .word ScrCmd_Unk0201
+ .word ScrCmd_Unk0202
+ .word ScrCmd_Unk0203
+ .word ScrCmd_Unk0204
+ .word ScrCmd_Unk0205
+ .word ScrCmd_Unk0206
+ .word ScrCmd_Unk0207
+ .word ScrCmd_Unk0208
+ .word ScrCmd_Unk0209
+ .word ScrCmd_Unk020A
+ .word ScrCmd_Unk020B
.word ScrCmd_Unk020C
- .word FUN_0203E684
- .word FUN_0203E6B4
- .word FUN_0203E6C4
- .word FUN_0203E6FC
- .word FUN_0203E72C
- .word ScrCmd_getpartymonnature
- .word ScrCmd_findpartymonwithnature
- .word FUN_0203E744
- .word FUN_02044158
- .word FUN_0204416C
- .word FUN_02044198
- .word FUN_0203E774
- .word FUN_0203E7F0
- .word FUN_0203E81C
- .word FUN_0203E848
- .word FUN_0203E858
- .word FUN_02041C38
- .word FUN_02045E1C
- .word FUN_02045E20
- .word FUN_02045EE0
- .word FUN_02045EE4
- .word FUN_02045F84
- .word FUN_02045F88
- .word FUN_02045F24
- .word FUN_02045FCC
- .word FUN_0203E870
- .word FUN_0203E894
- .word FUN_0203E8C4
- .word FUN_0203E8F4
- .word FUN_0203E928
- .word FUN_0203E940
- .word FUN_0203E954
- .word FUN_0203E968
- .word FUN_02044FE8
- .word FUN_0204505C
- .word FUN_02045104
- .word FUN_02045170
- .word ScrCmd_Unk0232
- .word FUN_0203E9CC
- .word FUN_0203EA68
- .word FUN_02041E40
- .word FUN_02041FDC
- .word FUN_02042038
- .word FUN_02042110
- .word FUN_0203EA90
- .word FUN_0203EAB0
- .word FUN_0203EB20
- .word FUN_0203EB48
- .word FUN_0203EB88
- .word FUN_02042D1C
+ .word ScrCmd_Unk020D
+ .word ScrCmd_Unk020E
+ .word ScrCmd_Unk020F
+ .word ScrCmd_Unk0210
+ .word ScrCmd_Unk0211
+ .word ScrCmd_GetPartyMonNature
+ .word ScrCmd_FindPartyMonWithNature
+ .word ScrCmd_Unk0214
+ .word ScrCmd_Unk0215
+ .word ScrCmd_Unk0216
+ .word ScrCmd_Unk0217
+ .word ScrCmd_Unk0218
+ .word ScrCmd_Unk0219
+ .word ScrCmd_Unk021A
+ .word ScrCmd_Unk021B
+ .word ScrCmd_Unk021C
+ .word ScrCmd_Unk021D
+ .word ScrCmd_Unk021E
+ .word ScrCmd_Unk021F
+ .word ScrCmd_Unk0220
+ .word ScrCmd_Unk0221
+ .word ScrCmd_Unk0222
+ .word ScrCmd_Unk0223
+ .word ScrCmd_Unk0224
+ .word ScrCmd_Unk0225
+ .word ScrCmd_Unk0226
+ .word ScrCmd_Unk0227
+ .word ScrCmd_Unk0228
+ .word ScrCmd_Unk0229
+ .word ScrCmd_Unk022A
+ .word ScrCmd_Unk022B
+ .word ScrCmd_Unk022C
+ .word ScrCmd_Unk022D
+ .word ScrCmd_Unk022E
+ .word ScrCmd_Unk022F
+ .word ScrCmd_Unk0230
+ .word ScrCmd_Unk0231
+ .word ScrCmd_GetRibbonName
+ .word ScrCmd_Unk0233
+ .word ScrCmd_Unk0234
+ .word ScrCmd_Unk0235
+ .word ScrCmd_Unk0236
+ .word ScrCmd_Unk0237
+ .word ScrCmd_Unk0238
+ .word ScrCmd_Unk0239
+ .word ScrCmd_Unk023A
+ .word ScrCmd_Unk023B
+ .word ScrCmd_Unk023C
+ .word ScrCmd_Unk023D
+ .word ScrCmd_Unk023E
.word ScrCmd_Unk023F
.word ScrCmd_Unk0240
.word ScrCmd_Unk0241
.word ScrCmd_Unk0242
- .word FUN_0203C5BC
- .word FUN_0203C614
- .word FUN_0203C680
- .word ScrCmd_gameversion
- .word FUN_02044A6C
- .word FUN_02044A94
- .word ScrCmd_givewallpaper
- .word FUN_0203ECAC
- .word FUN_0203ECD8
- .word FUN_0203ECF4
- .word FUN_0203ED10
- .word FUN_02041194
- .word FUN_020411C4
- .word FUN_02041340
+ .word ScrCmd_Unk0243
+ .word ScrCmd_Unk0244
+ .word ScrCmd_Unk0245
+ .word ScrCmd_GameVersion
+ .word ScrCmd_Unk0247
+ .word ScrCmd_Unk0248
+ .word ScrCmd_GiveWallpaper
+ .word ScrCmd_Unk024A
+ .word ScrCmd_Unk024B
+ .word ScrCmd_Unk024C
+ .word ScrCmd_Unk024D
+ .word ScrCmd_Unk024E
+ .word ScrCmd_Unk024F
+ .word ScrCmd_Unk0250
.word ScrCmd_Unk0251
- .word ScrCmd_pcfreespace
+ .word ScrCmd_PCFreeSpace
.word ScrCmd_Unk0253
.word ScrCmd_Unk0254
.word ScrCmd_Unk0255
.word ScrCmd_Unk0256
- .word FUN_0203FE80
- .word FUN_0203EDA4
- .word FUN_0203EDC8
- .word FUN_0203EDE0
- .word FUN_0203EE08
- .word FUN_0203EE18
- .word FUN_0203EE28
- .word FUN_0203EE58
- .word FUN_0203EE68
- .word FUN_0203EE78
+ .word ScrCmd_AccessoriesShop
+ .word ScrCmd_Unk0258
+ .word ScrCmd_Unk0259
+ .word ScrCmd_Unk025A
+ .word ScrCmd_Unk025B
+ .word ScrCmd_Unk025C
+ .word ScrCmd_Unk025D
+ .word ScrCmd_Unk025E
+ .word ScrCmd_Unk025F
+ .word ScrCmd_Unk0260
.word ScrCmd_GetFashionName
- .word FUN_0203EE98
- .word FUN_0203EED8
- .word FUN_0203EF58
- .word FUN_0203F00C
- .word FUN_0203F020
- .word FUN_0203F034
- .word FUN_0203F058
- .word FUN_0203F07C
- .word FUN_0203F110
- .word FUN_0203F174
- .word FUN_0203F19C
- .word ScrCmd_Unk026D
- .word FUN_0203F234
- .word FUN_0203F254
- .word FUN_0203F26C
- .word FUN_0203C58C
- .word ScrCmd_Unk0272
- .word FUN_0203F2AC
+ .word ScrCmd_Unk0262
+ .word ScrCmd_Unk0263
+ .word ScrCmd_Unk0264
+ .word ScrCmd_Unk0265
+ .word ScrCmd_Unk0266
+ .word ScrCmd_Unk0267
+ .word ScrCmd_Unk0268
+ .word ScrCmd_Unk0269
+ .word ScrCmd_Unk026A
+ .word ScrCmd_Unk026B
+ .word ScrCmd_Unk026C
+ .word ScrCmd_MessageUnown
+ .word ScrCmd_Unk026E
+ .word ScrCmd_Unk026F
+ .word ScrCmd_Unk0270
+ .word ScrCmd_Unk0271
+ .word ScrCmd_GetWhiteRockInscription
+ .word ScrCmd_Unk0273
.word ScrCmd_HasEnoughCoinsImmediate
- .word FUN_0203F2E4
+ .word ScrCmd_Unk0275
.word ScrCmd_CanGiveCoins
- .word FUN_0203F31C
- .word ScrCmd_getpartymonlevel
- .word FUN_0203F348
- .word FUN_0203F38C
- .word FUN_0203F39C
- .word FUN_0204214C
- .word FUN_0203F3AC
- .word FUN_0203F44C
- .word FUN_0203F418
+ .word ScrCmd_Unk0277
+ .word ScrCmd_GetPartyMonLevel
+ .word ScrCmd_Unk0279
+ .word ScrCmd_Unk027A
+ .word ScrCmd_Unk027B
+ .word ScrCmd_Unk027C
+ .word ScrCmd_Unk027D
+ .word ScrCmd_Unk027E
+ .word ScrCmd_Unk027F
.word ScrCmd_Unk0280
- .word FUN_02044A0C
- .word FUN_0203F484
- .word FUN_02041674
- .word FUN_0203F4D8
- .word FUN_0203F508
- .word FUN_0203F5D4
- .word FUN_0203F604
- .word FUN_0203F634
- .word FUN_0203F664
- .word FUN_0203F6E4
- .word FUN_0203F720
- .word FUN_0203BDB8
- .word FUN_0203BE68
- .word FUN_0203BE80
- .word FUN_0203F760
- .word FUN_0203F7C8
- .word FUN_0203F80C
- .word FUN_0203F880
- .word FUN_0203F924
- .word FUN_02042950
- .word FUN_02042980
- .word FUN_02042998
- .word FUN_020429B8
- .word FUN_020429E8
- .word FUN_02042A18
- .word FUN_02042A48
- .word FUN_02042A98
- .word FUN_0203D7DC
+ .word ScrCmd_Unk0281
+ .word ScrCmd_Unk0282
+ .word ScrCmd_SetVolume
+ .word ScrCmd_Unk0284
+ .word ScrCmd_Unk0285
+ .word ScrCmd_Unk0286
+ .word ScrCmd_Unk0287
+ .word ScrCmd_Unk0288
+ .word ScrCmd_Unk0289
+ .word ScrCmd_Unk028A
+ .word ScrCmd_Unk028B
+ .word ScrCmd_Unk028C
+ .word ScrCmd_Unk028D
+ .word ScrCmd_Unk028E
+ .word ScrCmd_Unk028F
+ .word ScrCmd_Unk0290
+ .word ScrCmd_Unk0291
+ .word ScrCmd_Unk0292
+ .word ScrCmd_Unk0293
+ .word ScrCmd_Unk0294
+ .word ScrCmd_Unk0295
+ .word ScrCmd_Unk0296
+ .word ScrCmd_Unk0297
+ .word ScrCmd_Unk0298
+ .word ScrCmd_Unk0299
+ .word ScrCmd_Unk029A
+ .word ScrCmd_Unk029B
+ .word ScrCmd_Unk029C
.word ScrCmd_Unk029D
- .word FUN_0203F8C0
- .word FUN_0203F954
- .word FUN_0204190C
- .word FUN_0203B024
- .word FUN_0203F9DC
- .word FUN_0203F988
- .word FUN_0203F9B0
- .word FUN_0203B914
- .word ScrCmd_Unk02A6
- .word FUN_0203FA14
+ .word ScrCmd_Unk029E
+ .word ScrCmd_Unk029F
+ .word ScrCmd_Unk02A0
+ .word ScrCmd_Unk02A1
+ .word ScrCmd_Unk02A2
+ .word ScrCmd_Unk02A3
+ .word ScrCmd_Unk02A4
+ .word ScrCmd_Unk02A5
+ .word ScrCmd_GetPrizeItemIdAndCost
+ .word ScrCmd_Unk02A7
.word ScrCmd_TakeCoinsAddress
.word ScrCmd_HasEnoughCoinsAddress
- .word FUN_0203FA58
- .word FUN_0203B7F0
- .word FUN_0203FB4C
- .word FUN_0203B790
- .word FUN_020413C0
- .word FUN_0203FB64
- .word FUN_0203FB94
- .word FUN_0203FBA0
- .word FUN_0203FBAC
+ .word ScrCmd_Unk02AA
+ .word ScrCmd_Unk02AB
+ .word ScrCmd_Unk02AC
+ .word ScrCmd_Unk02AD
+ .word ScrCmd_Unk02AE
+ .word ScrCmd_Unk02AF
+ .word ScrCmd_Unk02B0
+ .word ScrCmd_Unk02B1
+ .word ScrCmd_Unk02B2
.word ScrCmd_GetSealName
- .word FUN_0203B2E0
- .word FUN_0203FBBC
- .word FUN_0203FC1C
- .word FUN_020451D0
- .word FUN_02042000
+ .word ScrCmd_Unk02B4
+ .word ScrCmd_Unk02B5
+ .word ScrCmd_Unk02B6
+ .word ScrCmd_Unk02B7
+ .word ScrCmd_Unk02B8
.word ScrCmd_Unk02B9
- .word FUN_0203D4E8
- .word FUN_0203D920
- .word FUN_02041B40
- .word FUN_0203D0A4
- .word FUN_0203FC58
- .word FUN_0203CAE8
+ .word ScrCmd_Unk02BA
+ .word ScrCmd_Unk02BB
+ .word ScrCmd_Unk02BC
+ .word ScrCmd_Unk02BD
+ .word ScrCmd_Unk02BE
+ .word ScrCmd_Unk02BF
.word ScrCmd_Unk02C0
- .word FUN_0203FC80
- .word FUN_0203FCB0
- .word FUN_0203FCDC
+ .word ScrCmd_Unk02C1
+ .word ScrCmd_Unk02C2
+ .word ScrCmd_Unk02C3
.word ScrCmd_GetItemNameWithIndefArticle
.word ScrCmd_GetItemNamePlural
.word ScrCmd_GetDecorationNameWithArticle
@@ -1035,7 +1035,7 @@ _02038DA8:
ldrb r0, [r4, #0x9]
cmp r0, #0x0
bne _02038DC8
- bl ErrorHandling
+ bl GF_AssertFail
_02038DC8:
mov r0, #0x0
str r0, [r5, #0x38]
@@ -1089,7 +1089,7 @@ CreateFieldContext: ; 0x02038E20
bl AllocFromHeap
add r4, r0, #0x0
bne _02038E32
- bl ErrorHandling
+ bl GF_AssertFail
_02038E32:
add r0, r4, #0x0
mov r1, #0x0
@@ -1164,7 +1164,7 @@ CreateScriptContext: ; 0x02038EB0
bl AllocFromHeap
add r4, r0, #0x0
bne _02038EC6
- bl ErrorHandling
+ bl GF_AssertFail
_02038EC6:
ldr r2, _02038EE4 ; =sNumScriptCmds
ldr r1, _02038EE8 ; =gScriptCmdTable
@@ -1865,7 +1865,7 @@ _02039426:
add r0, r0, r1
pop {r3, pc}
_02039430:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
@@ -1880,7 +1880,7 @@ FUN_02039438: ; 0x02039438
ldr r0, _0203945C ; =0x0003643F
cmp r1, r0
beq _02039450
- bl ErrorHandling
+ bl GF_AssertFail
_02039450:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -1989,7 +1989,7 @@ FUN_02039504: ; 0x02039504
add r5, r0, #0x0
cmp r4, #0x10
blo _02039512
- bl ErrorHandling
+ bl GF_AssertFail
_02039512:
ldr r1, _02039524 ; =0x00004020
add r0, r5, #0x0
@@ -2236,7 +2236,7 @@ _020396C0:
_020396CE:
cmp r1, #0xe5
blo _020396DA
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r4, pc}
_020396DA:
@@ -2280,7 +2280,7 @@ _02039718:
_02039726:
cmp r1, #0xe5
blo _02039732
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
_02039732:
diff --git a/arm9/asm/unk_02047500.s b/arm9/asm/unk_02047500.s
index 905cf7b1..4a5b00a0 100644
--- a/arm9/asm/unk_02047500.s
+++ b/arm9/asm/unk_02047500.s
@@ -79,7 +79,7 @@ FUN_0204755C: ; 0x0204755C
add r4, r1, #0x0
cmp r5, #0x1f
blo _0204756A
- bl ErrorHandling
+ bl GF_AssertFail
_0204756A:
ldr r0, _02047580 ; =UNK_020F457C
lsl r1, r5, #0x2
@@ -101,7 +101,7 @@ FUN_02047588: ; 0x02047588
add r4, r0, #0x0
cmp r4, #0x1f
blo _02047594
- bl ErrorHandling
+ bl GF_AssertFail
_02047594:
ldr r0, _0204759C ; =UNK_020F457E
lsl r1, r4, #0x2
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index 7e25689f..a06056dd 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -97,7 +97,7 @@ _0204775C:
add r4, r7, #0x0
_02047774:
add r0, r5, #0x0
- bl FUN_02029EE4
+ bl Chatot_new
mov r1, #0x46
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -327,7 +327,7 @@ _0204796C:
ldr r0, [r5, #0x4]
cmp r0, #0x0
bne _02047976
- bl ErrorHandling
+ bl GF_AssertFail
_02047976:
ldr r0, [r5, #0x4]
bl FreeToHeap
@@ -343,7 +343,7 @@ _02047988:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02047996
- bl ErrorHandling
+ bl GF_AssertFail
_02047996:
add r0, r4, #0x0
add r0, #0xf8
@@ -361,7 +361,7 @@ _020479B0:
ldr r0, [r4, r6]
cmp r0, #0x0
bne _020479BA
- bl ErrorHandling
+ bl GF_AssertFail
_020479BA:
mov r0, #0x46
lsl r0, r0, #0x2
@@ -399,7 +399,7 @@ FUN_020479FC: ; 0x020479FC
add r6, r1, #0x0
cmp r4, #0x4
blt _02047A0C
- bl ErrorHandling
+ bl GF_AssertFail
_02047A0C:
lsl r0, r4, #0x2
add r0, r5, r0
@@ -408,7 +408,7 @@ _02047A0C:
bl AddMonToParty
cmp r0, #0x0
bne _02047A20
- bl ErrorHandling
+ bl GF_AssertFail
_02047A20:
pop {r4-r6, pc}
.balign 4
@@ -421,7 +421,7 @@ FUN_02047A24: ; 0x02047A24
add r6, r1, #0x0
cmp r4, #0x4
blt _02047A34
- bl ErrorHandling
+ bl GF_AssertFail
_02047A34:
lsl r1, r4, #0x2
add r1, r5, r1
@@ -439,7 +439,7 @@ FUN_02047A44: ; 0x02047A44
add r6, r1, #0x0
cmp r4, #0x4
blt _02047A54
- bl ErrorHandling
+ bl GF_AssertFail
_02047A54:
lsl r1, r4, #0x2
add r1, r5, r1
@@ -455,11 +455,11 @@ FUN_02047A64: ; 0x02047A64
add r2, r0, r2
mov r0, #0x46
lsl r0, r0, #0x2
- ldr r3, _02047A74 ; =FUN_02029F9C
+ ldr r3, _02047A74 ; =Chatot_copy
ldr r0, [r2, r0]
bx r3
nop
-_02047A74: .word FUN_02029F9C
+_02047A74: .word Chatot_copy
thumb_func_start FUN_02047A78
FUN_02047A78: ; 0x02047A78
@@ -480,7 +480,7 @@ FUN_02047A78: ; 0x02047A78
bl Sav2_Pokedex_get
str r0, [sp, #0x4]
ldr r0, [r4, #0xc]
- bl FUN_02029EF8
+ bl Sav2_Chatot_get
str r0, [sp, #0x8]
ldr r0, [r4, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
@@ -628,7 +628,7 @@ FUN_02047BC0: ; 0x02047BC0
str r0, [sp, #0xc]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_02029EF8
+ bl Sav2_Chatot_get
str r0, [sp, #0x8]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
@@ -795,7 +795,7 @@ FUN_02047D48: ; 0x02047D48
str r0, [sp, #0x18]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_02029EF8
+ bl Sav2_Chatot_get
str r0, [sp, #0x14]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
@@ -1144,7 +1144,7 @@ _02048054:
ldr r0, [r0, r1]
pop {r3-r5, pc}
_02048060:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0xc
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s
index 6f303045..780c4833 100644
--- a/arm9/asm/unk_02048120.s
+++ b/arm9/asm/unk_02048120.s
@@ -49,7 +49,7 @@ FUN_02048120: ; 0x02048120
mov r1, #0x6
mov r2, #0x0
lsl r3, r3, #0x4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x8
pop {r4, pc}
.balign 4
@@ -67,7 +67,7 @@ FUN_02048164: ; 0x02048164
bl AllocFromHeap
add r4, r0, #0x0
bne _0204817A
- bl ErrorHandling
+ bl GF_AssertFail
_0204817A:
add r0, r4, #0x0
mov r1, #0x0
@@ -209,7 +209,7 @@ _02048298:
add r0, r4, #0x0
add r0, #0xc
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -263,7 +263,7 @@ FUN_020482F4: ; 0x020482F4
add r0, r5, #0x0
add r0, #0xc
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x1c]
ldr r1, [sp, #0x10]
add r2, r6, #0x0
diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s
index 4750c7ea..929f1efa 100644
--- a/arm9/asm/unk_020484A8.s
+++ b/arm9/asm/unk_020484A8.s
@@ -343,7 +343,7 @@ FUN_02048764: ; 0x02048764
str r0, [r1, #0x30]
add r1, #0x1c
add r0, r1, #0x0
- bl FUN_0201901C
+ bl InitWindow
ldr r0, _020487D4 ; =UNK_020F46B0
bl GX_SetBanks
ldr r2, _020487D8 ; =0x04000304
diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s
index 1fcababe..f926f722 100644
--- a/arm9/asm/unk_02048904.s
+++ b/arm9/asm/unk_02048904.s
@@ -140,7 +140,7 @@ FUN_020489DC: ; 0x020489DC
ldr r0, [r4, #0x6c]
cmp r0, #0x5
blt _020489EA
- bl ErrorHandling
+ bl GF_AssertFail
_020489EA:
ldr r0, [r4, #0x70]
ldr r0, [r0, #0x0]
@@ -226,7 +226,7 @@ _02048A82:
bl MapHeader_GetCameraType
cmp r6, r0
beq _02048AB4
- bl ErrorHandling
+ bl GF_AssertFail
b _02048AB4
_02048AA6:
add r0, r7, #0x0
@@ -341,7 +341,7 @@ FUN_02048B90: ; 0x02048B90
ldr r0, [r4, #0x58]
cmp r0, #0x0
beq _02048BA2
- bl ErrorHandling
+ bl GF_AssertFail
_02048BA2:
ldr r0, [r4, #0x1c]
ldr r1, [r4, #0x28]
@@ -368,7 +368,7 @@ _02048BD8:
ldr r0, [r4, #0x6c]
cmp r0, #0x5
blt _02048BE2
- bl ErrorHandling
+ bl GF_AssertFail
_02048BE2:
ldr r0, [r4, #0x6c]
ldr r1, _02048C28 ; =UNK_020F46E0
@@ -413,7 +413,7 @@ FUN_02048C2C: ; 0x02048C2C
ldr r0, [r4, #0x58]
cmp r0, #0x0
bne _02048C3A
- bl ErrorHandling
+ bl GF_AssertFail
_02048C3A:
mov r0, #0x0
str r0, [r4, #0x58]
@@ -1064,7 +1064,7 @@ FUN_02049160: ; 0x02049160
bl FUN_0203739C
cmp r0, #0x0
beq _02049186
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_02049186:
mov r0, #0x0
@@ -1431,7 +1431,7 @@ FUN_02049430: ; 0x02049430
bl FUN_0203739C
cmp r0, #0x0
bne _02049452
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
_02049452:
ldr r0, [r5, #0x38]
@@ -1561,7 +1561,7 @@ _0204954A:
bl FUN_020637E0
b _0204955A
_02049556:
- bl ErrorHandling
+ bl GF_AssertFail
_0204955A:
add r0, r7, #0x0
bl FUN_020495B0
@@ -1682,7 +1682,7 @@ FUN_0204961C: ; 0x0204961C
bl FUN_0203739C
cmp r0, #0x0
bne _0204963E
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4-r6, pc}
_0204963E:
ldr r2, [r6, #0x4]
@@ -1883,11 +1883,11 @@ _020497A4:
sub r4, r0, #0x6
cmp r6, #0x0
bge _020497D4
- bl ErrorHandling
+ bl GF_AssertFail
_020497D4:
cmp r4, #0x0
bge _020497DC
- bl ErrorHandling
+ bl GF_AssertFail
_020497DC:
lsr r2, r6, #0x1f
lsl r1, r6, #0x1f
@@ -2395,7 +2395,7 @@ _02049BF4:
ldr r0, _02049C08 ; =FUN_02049ACC
pop {r3, pc}
_02049BFC:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -2502,7 +2502,7 @@ FUN_02049CB0: ; 0x02049CB0
bl FUN_0203739C
cmp r0, #0x0
beq _02049CD6
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_02049CD6:
mov r0, #0x0
diff --git a/arm9/asm/unk_0204A368.s b/arm9/asm/unk_0204A368.s
index 6a4e5e9b..f1f19746 100644
--- a/arm9/asm/unk_0204A368.s
+++ b/arm9/asm/unk_0204A368.s
@@ -160,7 +160,7 @@ _0204A478:
_0204A482:
cmp r4, #0x10
blo _0204A48A
- bl ErrorHandling
+ bl GF_AssertFail
_0204A48A:
lsl r0, r4, #0x1
strh r5, [r6, r0]
diff --git a/arm9/asm/unk_0204A498.s b/arm9/asm/unk_0204A498.s
index 4a255af1..67863650 100644
--- a/arm9/asm/unk_0204A498.s
+++ b/arm9/asm/unk_0204A498.s
@@ -295,7 +295,7 @@ _0204A69C:
str r1, [r0, #0x0]
pop {r3, pc}
_0204A6A6:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4
_0204A6AC: .word UNK_020F4708
@@ -404,7 +404,7 @@ _0204A754:
blt _0204A768
cmp r4, #0x0
bne _0204A76A
- bl ErrorHandling
+ bl GF_AssertFail
b _0204A76A
_0204A768:
mov r4, #0x0
@@ -542,7 +542,7 @@ FUN_0204A840: ; 0x0204A840
cmp r7, #0x0
bge _0204A868
_0204A864:
- bl ErrorHandling
+ bl GF_AssertFail
_0204A868:
lsl r0, r6, #0x10
str r0, [r5, #0x0]
diff --git a/arm9/asm/unk_0204AF24.s b/arm9/asm/unk_0204AF24.s
index e6593c72..fb084cbc 100644
--- a/arm9/asm/unk_0204AF24.s
+++ b/arm9/asm/unk_0204AF24.s
@@ -26,7 +26,7 @@ FUN_0204AF3C: ; 0x0204AF3C
bl FUN_0203739C
cmp r0, #0x0
bne _0204AF54
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r5, pc}
_0204AF54:
add r0, r4, #0x0
@@ -62,7 +62,7 @@ FUN_0204AF84: ; 0x0204AF84
bl FUN_0203739C
cmp r0, #0x0
beq _0204AF9C
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r5, pc}
_0204AF9C:
add r0, r4, #0x0
@@ -97,7 +97,7 @@ FUN_0204AFC8: ; 0x0204AFC8
bl FUN_0203739C
cmp r0, #0x0
bne _0204AFE2
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r3-r4, pc}
_0204AFE2:
@@ -130,7 +130,7 @@ FUN_0204B00C: ; 0x0204B00C
bl FUN_0203739C
cmp r0, #0x0
bne _0204B026
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r3-r4, pc}
_0204B026:
diff --git a/arm9/asm/unk_0204B0A0.s b/arm9/asm/unk_0204B0A0.s
deleted file mode 100644
index a78c13d0..00000000
--- a/arm9/asm/unk_0204B0A0.s
+++ /dev/null
@@ -1,302 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0204B0F8
-FUN_0204B0F8: ; 0x0204B0F8
- push {r4-r5, lr}
- sub sp, #0x1c
- add r5, r0, #0x0
- ldr r0, [r5, #0xc]
- bl Sav2_SysInfo_RTC_get
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _0204B12A
- add r0, sp, #0xc
- add r1, sp, #0x0
- bl GF_RTC_CopyDateTime
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, sp, #0xc
- bl FUN_0204B130
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, sp, #0xc
- add r3, sp, #0x0
- bl FUN_0204B158
-_0204B12A:
- add sp, #0x1c
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204B130
-FUN_0204B130: ; 0x0204B130
- push {r4-r6, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r0, r2, #0x0
- bl RTC_ConvertDateToDay
- ldr r1, [r5, #0x20]
- add r4, r0, #0x0
- cmp r4, r1
- bhs _0204B148
- str r4, [r5, #0x20]
- pop {r4-r6, pc}
-_0204B148:
- cmp r4, r1
- bls _0204B156
- add r0, r6, #0x0
- sub r1, r4, r1
- bl FUN_0204B1DC
- str r4, [r5, #0x20]
-_0204B156:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0204B158
-FUN_0204B158: ; 0x0204B158
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r2, #0x0
- str r0, [sp, #0x0]
- add r6, r3, #0x0
- add r5, r1, #0x0
- add r0, r4, #0x0
- add r1, r6, #0x0
- bl RTC_ConvertDateTimeToSecond
- str r1, [sp, #0x8]
- add r1, r5, #0x0
- add r7, r0, #0x0
- add r0, r5, #0x4
- add r1, #0x14
- bl RTC_ConvertDateTimeToSecond
- add r2, r1, #0x0
- sub r1, r7, r0
- ldr r1, [sp, #0x8]
- sbc r1, r2
- bge _0204B19C
- add r2, r5, #0x4
- ldmia r4!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r4!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r6!, {r0-r1}
- add r5, #0x14
- stmia r5!, {r0-r1}
- ldr r0, [r6, #0x0]
- add sp, #0xc
- str r0, [r5, #0x0]
- pop {r4-r7, pc}
-_0204B19C:
- ldr r1, [sp, #0x8]
- sub r0, r7, r0
- sbc r1, r2
- mov r2, #0x3c
- mov r3, #0x0
- str r1, [sp, #0x8]
- bl _ll_sdiv
- add r7, r0, #0x0
- cmp r7, #0x0
- ble _0204B1D8
- add r0, r5, #0x0
- add r1, r7, #0x0
- bl FUN_02023884
- ldr r0, [sp, #0x0]
- add r1, r7, #0x0
- add r2, r6, #0x0
- bl FUN_0204B270
- add r2, r5, #0x4
- ldmia r4!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r4!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r6!, {r0-r1}
- add r5, #0x14
- stmia r5!, {r0-r1}
- ldr r0, [r6, #0x0]
- str r0, [r5, #0x0]
-_0204B1D8:
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0204B1DC
-FUN_0204B1DC: ; 0x0204B1DC
- push {r4-r6, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- add r1, r4, #0x0
- bl FUN_02025A60
- add r0, r5, #0x0
- bl FUN_0203959C
- ldr r0, [r5, #0xc]
- add r1, r4, #0x0
- bl FUN_02060344
- ldr r0, [r5, #0xc]
- bl FUN_0202881C
- add r1, r4, #0x0
- bl FUN_02028754
- ldr r0, [r5, #0xc]
- bl FUN_0202A9B0
- add r6, r0, #0x0
- ldr r0, [r5, #0xc]
- bl FUN_0202881C
- bl FUN_020287A4
- add r1, r0, #0x0
- add r0, r6, #0x0
- bl FUN_0202A988
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl Party_UpdatePokerus
- ldr r0, [r5, #0xc]
- bl SavArray_Flags_get
- add r6, r0, #0x0
- bl FUN_0205F594
- cmp r0, r4
- ble _0204B244
- sub r0, r0, r4
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- b _0204B246
-_0204B244:
- mov r1, #0x0
-_0204B246:
- add r0, r6, #0x0
- bl FUN_0205F5A4
- lsl r1, r4, #0x10
- ldr r0, [r5, #0xc]
- lsr r1, r1, #0x10
- bl FUN_0205F618
- ldr r0, [r5, #0xc]
- bl FUN_0205F668
- ldr r0, [r5, #0xc]
- bl FUN_0206007C
- ldr r0, [r5, #0xc]
- bl FUN_02029AFC
- bl FUN_02029C08
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0204B270
-FUN_0204B270: ; 0x0204B270
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl FUN_0204B3D0
- ldr r0, [r5, #0xc]
- add r1, r4, #0x0
- bl FUN_0202A9D0
- add r0, r5, #0x0
- bl FUN_0204B33C
- add r2, r0, #0x0
- ldr r0, [r5, #0xc]
- add r1, r4, #0x0
- bl FUN_02025B60
- ldr r0, [r5, #0xc]
- bl FUN_02022504
- ldr r2, [r6, #0x4]
- add r1, r4, #0x0
- bl FUN_0202B3C4
- pop {r4-r6, pc}
-
- thumb_func_start Script_GetTimeOfDay
-Script_GetTimeOfDay: ; 0x0204B2A4
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- ldr r0, [r0, #0x14]
- bl GF_RTC_GetTimeOfDayByHour
- pop {r3, pc}
-
- thumb_func_start Script_GetMonth
-Script_GetMonth: ; 0x0204B2B4
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- ldr r0, [r0, #0x8]
- pop {r3, pc}
-
- thumb_func_start Script_GetDay
-Script_GetDay: ; 0x0204B2C0
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- ldr r0, [r0, #0xc]
- pop {r3, pc}
-
- thumb_func_start Script_GetWeekday
-Script_GetWeekday: ; 0x0204B2CC
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- ldr r0, [r0, #0x10]
- pop {r3, pc}
-
- thumb_func_start Script_GetHour
-Script_GetHour: ; 0x0204B2D8
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- ldr r0, [r0, #0x14]
- pop {r3, pc}
-
- thumb_func_start Script_GetMinute
-Script_GetMinute: ; 0x0204B2E4
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- ldr r0, [r0, #0x18]
- pop {r3, pc}
-
- thumb_func_start Script_SavRTC_x24toDateTime
-Script_SavRTC_x24toDateTime: ; 0x0204B2F0
- push {r3-r5, lr}
- ldr r0, [r0, #0xc]
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl Sav2_SysInfo_RTC_get
- add r3, r0, #0x0
- ldr r2, [r3, #0x24]
- ldr r3, [r3, #0x28]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl RTC_ConvertSecondToDateTime
- pop {r3-r5, pc}
-
- thumb_func_start Script_SavRTC_x2CtoDateTime
-Script_SavRTC_x2CtoDateTime: ; 0x0204B30C
- push {r3-r5, lr}
- ldr r0, [r0, #0xc]
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl Sav2_SysInfo_RTC_get
- add r3, r0, #0x0
- ldr r2, [r3, #0x2c]
- ldr r3, [r3, #0x30]
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl RTC_ConvertSecondToDateTime
- pop {r3-r5, pc}
-
- thumb_func_start Script_SavRTC_DateTimeTox2C
-Script_SavRTC_DateTimeTox2C: ; 0x0204B328
- push {r4, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- add r4, r0, #0x0
- bl GF_RTC_DateTimeToSec
- str r0, [r4, #0x2c]
- str r1, [r4, #0x30]
- pop {r4, pc}
-
- thumb_func_start FUN_0204B33C
-FUN_0204B33C: ; 0x0204B33C
- push {r3, lr}
- ldr r0, [r0, #0xc]
- bl Sav2_SysInfo_RTC_get
- bl FUN_02023874
- pop {r3, pc}
- .balign 4
diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s
index fe9cc3fd..ff93214d 100644
--- a/arm9/asm/unk_0204B34C.s
+++ b/arm9/asm/unk_0204B34C.s
@@ -532,7 +532,7 @@ _0204B73A:
add r4, r4, #0x1
b _0204B746
_0204B742:
- bl ErrorHandling
+ bl GF_AssertFail
_0204B746:
add r0, r7, #0x0
add r1, r6, #0x0
@@ -604,7 +604,7 @@ _0204B7C0:
add r4, r4, #0x1
b _0204B7CC
_0204B7C8:
- bl ErrorHandling
+ bl GF_AssertFail
_0204B7CC:
ldr r0, [r5, #0x34]
add r1, r7, #0x0
diff --git a/arm9/asm/unk_0204B9EC.s b/arm9/asm/unk_0204B9EC.s
index 04b6134b..2511f182 100644
--- a/arm9/asm/unk_0204B9EC.s
+++ b/arm9/asm/unk_0204B9EC.s
@@ -44,7 +44,7 @@ FUN_0204BA1C: ; 0x0204BA1C
add r2, r0, #0x0
ldr r0, [r1, #0x40]
ldr r1, [r1, #0x44]
- bl FUN_020127C0
+ bl GF_RTC_TimeDelta
mov r2, #0xfa
mov r3, #0x0
lsl r2, r2, #0x2
@@ -157,7 +157,7 @@ FUN_0204BAF4: ; 0x0204BAF4
cmp r5, r0
bls _0204BB08
_0204BB04:
- bl ErrorHandling
+ bl GF_AssertFail
_0204BB08:
mov r3, #0x6
add r0, r4, #0x0
@@ -267,7 +267,7 @@ FUN_0204BBC4: ; 0x0204BBC4
lsr r5, r0, #0x10
cmp r5, #0xa
blo _0204BBDE
- bl ErrorHandling
+ bl GF_AssertFail
_0204BBDE:
add r0, r5, #0x5
str r0, [r4, #0x38]
@@ -373,7 +373,7 @@ _0204BC86:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bne _0204BC94
- bl ErrorHandling
+ bl GF_AssertFail
_0204BC94:
add r0, r6, #0x0
add r0, #0x14
@@ -405,7 +405,7 @@ _0204BCA4:
lsr r0, r0, #0x10
cmp r4, r0
blo _0204BCD8
- bl ErrorHandling
+ bl GF_AssertFail
_0204BCD8:
cmp r4, #0x14
bge _0204BCE0
@@ -437,7 +437,7 @@ _0204BD04:
add r0, #0x8
cmp r1, #0x6
blt _0204BCE6
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r7, pc}
.balign 4
@@ -463,7 +463,7 @@ _0204BD28:
strb r1, [r0, #0x0]
pop {r4, pc}
_0204BD3A:
- bl ErrorHandling
+ bl GF_AssertFail
_0204BD3E:
pop {r4, pc}
diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s
index 73f9c7a5..6efee84e 100644
--- a/arm9/asm/unk_0204C1B4.s
+++ b/arm9/asm/unk_0204C1B4.s
@@ -186,7 +186,7 @@ _0204C2F4:
mov r4, #0x6
b _0204C36A
_0204C302:
- bl ErrorHandling
+ bl GF_AssertFail
b _0204C36A
_0204C308:
ldr r0, [sp, #0x8]
@@ -207,7 +207,7 @@ _0204C320:
mov r4, #0x6
b _0204C36A
_0204C32E:
- bl ErrorHandling
+ bl GF_AssertFail
b _0204C36A
_0204C334:
ldr r0, [sp, #0x8]
@@ -229,10 +229,10 @@ _0204C356:
bl FUN_02034930
cmp r0, #0x0
bne _0204C36A
- bl ErrorHandling
+ bl GF_AssertFail
b _0204C36A
_0204C366:
- bl ErrorHandling
+ bl GF_AssertFail
_0204C36A:
ldr r1, _0204C37C ; =FUN_0204C380
add r0, r7, #0x0
@@ -556,7 +556,7 @@ _0204C5E6:
bl FUN_0205ADDC
b _0204C5F6
_0204C5F2:
- bl ErrorHandling
+ bl GF_AssertFail
_0204C5F6:
ldr r0, [r4, #0x4]
add r0, r0, #0x1
@@ -926,7 +926,7 @@ _0204C8EA:
bl FUN_0205ADDC
b _0204C8FC
_0204C8F8:
- bl ErrorHandling
+ bl GF_AssertFail
_0204C8FC:
ldr r0, [r4, #0x4]
add r0, r0, #0x1
diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s
index 52fbcfa7..a0dc5ce2 100644
--- a/arm9/asm/unk_0204CB20.s
+++ b/arm9/asm/unk_0204CB20.s
@@ -360,7 +360,7 @@ FUN_0204CD78: ; 0x0204CD78
bl FUN_02064520
b _0204CDA2
_0204CD9E:
- bl ErrorHandling
+ bl GF_AssertFail
_0204CDA2:
ldr r0, _0204CDB0 ; =UNK_021C5A68
mov r1, #0x0
@@ -1129,7 +1129,7 @@ _0204D37C:
bl FUN_02055068
add r7, r0, #0x0
bne _0204D3B2
- bl ErrorHandling
+ bl GF_AssertFail
_0204D3B2:
ldr r0, _0204D430 ; =UNK_021C5A68
ldr r0, [r0, #0x0]
@@ -1503,11 +1503,11 @@ FUN_0204D67C: ; 0x0204D67C
beq _0204D6B8
cmp r1, #0x1
beq _0204D692
- bl ErrorHandling
+ bl GF_AssertFail
_0204D692:
cmp r5, #0x8
blt _0204D69A
- bl ErrorHandling
+ bl GF_AssertFail
_0204D69A:
ldrb r0, [r4, #0x0]
mov r1, #0x1
@@ -1519,7 +1519,7 @@ _0204D69A:
_0204D6A8:
cmp r1, #0x0
bne _0204D6B0
- bl ErrorHandling
+ bl GF_AssertFail
_0204D6B0:
ldrb r1, [r4, #0x0]
add r0, r5, #0x0
@@ -1773,7 +1773,7 @@ FUN_0204D870: ; 0x0204D870
cmp r4, #0x5
str r0, [r2, #0x0]
blt _0204D88E
- bl ErrorHandling
+ bl GF_AssertFail
_0204D88E:
lsl r1, r4, #0x2
add r0, sp, #0x0
@@ -2180,7 +2180,7 @@ _0204DB5A:
bl FUN_0204A6B4
cmp r0, #0x0
beq _0204DBBC
- bl ErrorHandling
+ bl GF_AssertFail
_0204DBBC:
pop {r3-r7, pc}
nop
@@ -4023,7 +4023,7 @@ FUN_0204E96C: ; 0x0204E96C
ldrb r0, [r5, #0x1]
cmp r0, #0x8
blo _0204E988
- bl ErrorHandling
+ bl GF_AssertFail
_0204E988:
ldrb r0, [r5, #0x0]
cmp r0, #0x4
@@ -5605,7 +5605,7 @@ _0204F62A:
mov r0, #0x2
pop {r3, pc}
_0204F632:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x2
pop {r3, pc}
.balign 4
@@ -6052,11 +6052,11 @@ _0204F96E:
add r5, r0, #0x0
cmp r4, #0x0
bne _0204F988
- bl ErrorHandling
+ bl GF_AssertFail
_0204F988:
cmp r5, #0x0
bne _0204F990
- bl ErrorHandling
+ bl GF_AssertFail
_0204F990:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -6150,7 +6150,7 @@ _0204FA26:
strb r2, [r1, r0]
pop {r3-r7, pc}
_0204FA4C:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x8
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_0204FBA8.s b/arm9/asm/unk_0204FBA8.s
index 32c2e3c1..f1101a82 100644
--- a/arm9/asm/unk_0204FBA8.s
+++ b/arm9/asm/unk_0204FBA8.s
@@ -2093,7 +2093,7 @@ FUN_02050BF8: ; 0x02050BF8
add r4, r0, #0x0
cmp r4, #0x4
blt _02050C04
- bl ErrorHandling
+ bl GF_AssertFail
_02050C04:
ldr r0, _02050C10 ; =UNK_021C5A6C
ldr r1, [r0, #0x0]
diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s
index c8a8a153..fbe0aed9 100644
--- a/arm9/asm/unk_02050E48.s
+++ b/arm9/asm/unk_02050E48.s
@@ -1255,7 +1255,7 @@ _02051836:
bl FUN_02019178
add r0, r5, #0x0
add r0, #0x14
- bl FUN_0201901C
+ bl InitWindow
_02051846:
add r0, r5, #0x0
add r0, #0x54
@@ -1267,7 +1267,7 @@ _02051846:
bl FUN_02019178
add r0, r5, #0x0
add r0, #0x54
- bl FUN_0201901C
+ bl InitWindow
_02051862:
add r0, r5, #0x0
add r0, #0x64
@@ -1279,7 +1279,7 @@ _02051862:
bl FUN_02019178
add r5, #0x64
add r0, r5, #0x0
- bl FUN_0201901C
+ bl InitWindow
_0205187E:
pop {r3-r5, pc}
@@ -1325,15 +1325,15 @@ _0205188E:
str r0, [r4, #0x10]
add r0, r4, #0x0
add r0, #0x14
- bl FUN_0201901C
+ bl InitWindow
add r0, r4, #0x0
add r0, #0x54
- bl FUN_0201901C
+ bl InitWindow
add r0, r4, #0x0
add r0, #0x64
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0xb
- bl FUN_02013690
+ bl ListMenuCursorNew
str r0, [r4, #0x78]
bl FUN_02033534
add r1, r4, #0x0
@@ -1442,7 +1442,7 @@ _020519BA:
ldr r0, [r4, #0x10]
bl String_dtor
ldr r0, [r4, #0x78]
- bl FUN_020136C0
+ bl DestroyListMenuCursorObj
add r0, r4, #0x0
mov r1, #0x1
bl FUN_02051810
@@ -1711,7 +1711,7 @@ FUN_02051B68: ; 0x02051B68
bl FUN_0200CB00
ldr r0, [sp, #0x20]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r7, #0x0
add r6, r7, #0x0
add r4, r7, #0x0
@@ -1769,14 +1769,14 @@ _02051C34:
lsr r0, r0, #0x10
str r0, [sp, #0x4]
ldr r0, [sp, #0x20]
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r3, [sp, #0x14]
add r1, r5, #0x0
ldr r0, [r5, #0x78]
add r1, #0x54
mov r2, #0x0
lsl r3, r3, #0x4
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
add r0, r5, #0x0
add r0, #0x54
mov r1, #0x0
@@ -1837,7 +1837,7 @@ FUN_02051C88: ; 0x02051C88
bl FUN_0200CB00
add r0, r7, #0x0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r6, #0x0
add r4, r6, #0x0
_02051CE0:
@@ -1880,13 +1880,13 @@ _02051D0A:
str r0, [sp, #0x4]
add r0, r7, #0x0
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r3, [sp, #0x14]
ldr r0, [r5, #0x78]
ldr r1, [r5, #0x7c]
mov r2, #0x0
lsl r3, r3, #0x4
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
ldr r0, [r5, #0x7c]
mov r1, #0x0
mov r2, #0x1
@@ -1987,14 +1987,14 @@ _02051DE0:
lsr r1, r1, #0x10
str r1, [sp, #0x4]
mov r1, #0xf
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r3, #0x81
ldrsb r3, [r4, r3]
ldr r0, [r4, #0x78]
ldr r1, [r4, #0x7c]
mov r2, #0x0
lsl r3, r3, #0x4
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
ldr r0, [r4, #0x7c]
bl FUN_02019548
mov r0, #0x0
diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s
index d29ed837..8ff9a9a1 100644
--- a/arm9/asm/unk_020520AC.s
+++ b/arm9/asm/unk_020520AC.s
@@ -125,7 +125,7 @@ FUN_020520AC: ; 0x020520AC
push {r3-r5, lr}
add r4, r0, #0x0
bne _020520B6
- bl ErrorHandling
+ bl GF_AssertFail
_020520B6:
ldr r0, [r4, #0x78]
cmp r0, #0x0
@@ -814,7 +814,7 @@ _020525F4:
mov r0, #0x5
pop {r4-r6, pc}
_020525F8:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r4-r6, pc}
.balign 4
@@ -1144,7 +1144,7 @@ FUN_02052814: ; 0x02052814
mvn r0, r0
cmp r4, r0
bne _02052836
- bl ErrorHandling
+ bl GF_AssertFail
b _02052836
_02052834:
add r5, r4, #0x0
@@ -1516,7 +1516,7 @@ _02052AF2:
ldr r0, [r0, r1]
pop {r4-r6, pc}
_02052AFA:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x28
pop {r4-r6, pc}
nop
diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s
index 3d8839c2..0c163fd8 100644
--- a/arm9/asm/unk_02052EE8.s
+++ b/arm9/asm/unk_02052EE8.s
@@ -300,7 +300,7 @@ FUN_02053104: ; 0x02053104
ldr r0, [r0, r5]
cmp r3, r0
beq _02053120
- bl ErrorHandling
+ bl GF_AssertFail
_02053120:
pop {r4-r6, pc}
nop
@@ -426,7 +426,7 @@ _02053206:
bl FUN_02058060
add r5, r0, #0x0
bne _02053216
- bl ErrorHandling
+ bl GF_AssertFail
_02053216:
ldrb r0, [r4, #0xd]
cmp r0, #0x4
@@ -761,7 +761,7 @@ _020534AC:
bl FUN_02058060
add r4, r0, #0x0
bne _020534BC
- bl ErrorHandling
+ bl GF_AssertFail
_020534BC:
add r0, r4, #0x0
mov r1, #0x1
@@ -787,7 +787,7 @@ FUN_020534DC: ; 0x020534DC
bl FUN_02058060
add r4, r0, #0x0
bne _020534F0
- bl ErrorHandling
+ bl GF_AssertFail
_020534F0:
add r0, r4, #0x0
bl FUN_0205AD98
@@ -811,7 +811,7 @@ _0205350E:
bl FUN_02058060
add r4, r0, #0x0
bne _02053524
- bl ErrorHandling
+ bl GF_AssertFail
_02053524:
ldrb r1, [r5, #0x8]
add r0, r4, #0x0
diff --git a/arm9/asm/unk_0205363C.s b/arm9/asm/unk_0205363C.s
index 3b13ed24..aa73064c 100644
--- a/arm9/asm/unk_0205363C.s
+++ b/arm9/asm/unk_0205363C.s
@@ -148,7 +148,7 @@ _020536EE:
ldr r0, [r0, r1]
pop {r4, pc}
_020536F8:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
_020536FE:
pop {r4, pc}
@@ -165,7 +165,7 @@ FUN_02053708: ; 0x02053708
mov r1, #0x7
add r2, sp, #0x0
add r3, r5, #0x0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
mov r1, #0x9
add r4, r0, #0x0
add r0, r5, #0x0
diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s
index 6ab54142..38f594ef 100644
--- a/arm9/asm/unk_02053750.s
+++ b/arm9/asm/unk_02053750.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_020FFA38
+ .extern FX_SinCosTable_
.section .rodata
.global UNK_020F5C04
@@ -1222,7 +1222,7 @@ FUN_02054008: ; 0x02054008
bl FUN_0201FE94
add r4, r0, #0x0
bne _02054064
- bl ErrorHandling
+ bl GF_AssertFail
_02054064:
add r0, r4, #0x0
add sp, #0x30
@@ -1291,7 +1291,7 @@ FUN_020540C8: ; 0x020540C8
bl FUN_0201FFC8
ldr r1, [r4, #0x0]
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x0
str r0, [r4, #0x0]
_020540E4:
@@ -1320,7 +1320,7 @@ FUN_020540E8: ; 0x020540E8
ldr r1, [sp, #0x4]
asr r0, r0, #0x4
lsl r5, r0, #0x2
- ldr r0, _02054164 ; =UNK_020FFA38
+ ldr r0, _02054164 ; =FX_SinCosTable_
ldrsh r5, [r0, r5]
asr r0, r5, #0x1f
lsr r6, r5, #0x10
@@ -1363,7 +1363,7 @@ _0205415E:
add sp, #0xc
pop {r3-r6, pc}
.balign 4
-_02054164: .word UNK_020FFA38
+_02054164: .word FX_SinCosTable_
thumb_func_start FUN_02054168
FUN_02054168: ; 0x02054168
@@ -1408,7 +1408,7 @@ FUN_020541A4: ; 0x020541A4
bl FUN_0201FFC8
ldr r1, [r4, #0x0]
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x0
str r0, [r4, #0x0]
_020541C0:
@@ -1481,7 +1481,7 @@ FUN_02054228: ; 0x02054228
bl FUN_0201FFC8
ldr r1, [r4, #0x0]
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x0
str r0, [r4, #0x0]
_02054244:
@@ -1581,7 +1581,7 @@ FUN_020542E8: ; 0x020542E8
bl FUN_0201FFC8
ldr r1, [r4, #0x0]
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x0
str r0, [r4, #0x0]
_02054304:
@@ -1749,7 +1749,7 @@ FUN_0205442C: ; 0x0205442C
bl FUN_0201FFC8
ldr r1, [r4, #0x0]
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x0
str r0, [r4, #0x0]
_02054448:
@@ -1801,7 +1801,7 @@ _0205447E:
ldr r6, [sp, #0x4]
asr r0, r0, #0x4
lsl r1, r0, #0x2
- ldr r0, _02054500 ; =UNK_020FFA38
+ ldr r0, _02054500 ; =FX_SinCosTable_
ldrsh r0, [r0, r1]
asr r3, r0, #0x1f
lsr r1, r0, #0xf
@@ -1851,7 +1851,7 @@ _020544F8:
add sp, #0xc
pop {r4-r7, pc}
nop
-_02054500: .word UNK_020FFA38
+_02054500: .word FX_SinCosTable_
_02054504: .word 0x00000666
thumb_func_start FUN_02054508
@@ -1900,7 +1900,7 @@ FUN_0205454C: ; 0x0205454C
bl FUN_0201FFC8
ldr r1, [r4, #0x0]
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x0
str r0, [r4, #0x0]
_02054568:
diff --git a/arm9/asm/unk_02055068.s b/arm9/asm/unk_02055068.s
index 7db8d152..61561cbe 100644
--- a/arm9/asm/unk_02055068.s
+++ b/arm9/asm/unk_02055068.s
@@ -82,7 +82,7 @@ FUN_02055108: ; 0x02055108
bl FUN_020553A0
add r4, r0, #0x0
bne _02055118
- bl ErrorHandling
+ bl GF_AssertFail
_02055118:
add r0, r4, #0x0
bl FUN_02058578
@@ -139,7 +139,7 @@ FUN_0205517C: ; 0x0205517C
bl AllocFromHeap
add r4, r0, #0x0
bne _0205518E
- bl ErrorHandling
+ bl GF_AssertFail
_0205518E:
add r0, r4, #0x0
mov r1, #0x0
@@ -208,7 +208,7 @@ FUN_02055208: ; 0x02055208
bl FUN_0205753C
add r5, r0, #0x0
bne _02055228
- bl ErrorHandling
+ bl GF_AssertFail
_02055228:
add r0, r5, #0x0
mov r1, #0xff
@@ -300,7 +300,7 @@ FUN_020552E4: ; 0x020552E4
bl FUN_020552A4
add r4, r0, #0x0
bne _020552F2
- bl ErrorHandling
+ bl GF_AssertFail
_020552F2:
add r0, r4, #0x0
pop {r4, pc}
@@ -432,7 +432,7 @@ FUN_020553A8: ; 0x020553A8
add r5, r0, #0x0
cmp r4, #0x3
blt _020553B6
- bl ErrorHandling
+ bl GF_AssertFail
_020553B6:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -446,7 +446,7 @@ FUN_020553C4: ; 0x020553C4
push {r4, lr}
add r4, r0, #0x0
bne _020553CE
- bl ErrorHandling
+ bl GF_AssertFail
_020553CE:
ldr r0, [r4, #0x18]
pop {r4, pc}
@@ -884,7 +884,7 @@ _0205563A:
mov r0, #0xc9
pop {r3, pc}
_0205563E:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -937,7 +937,7 @@ _0205568A:
lsl r0, r0, #0x8
pop {r3, pc}
_02055690:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x1
pop {r3, pc}
diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s
index c2c01f1c..0a5c6e31 100644
--- a/arm9/asm/unk_020557F4.s
+++ b/arm9/asm/unk_020557F4.s
@@ -1157,7 +1157,7 @@ _0205614C:
add sp, #0xc
pop {r4-r7, pc}
_02056162:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r4-r7, pc}
.balign 4
@@ -1248,7 +1248,7 @@ _02056204:
mov r0, #0x2
pop {r3, pc}
_02056208:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
@@ -1709,7 +1709,7 @@ _0205657E:
mov r0, #0x1
pop {r3, pc}
_02056582:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -2096,7 +2096,7 @@ _0205689A:
mov r0, #0x1
pop {r3, pc}
_0205689E:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -3227,7 +3227,7 @@ _02057172:
b _0205718E
_02057188:
mov r4, #0x0
- bl ErrorHandling
+ bl GF_AssertFail
_0205718E:
add r0, r4, #0x0
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02057380.s b/arm9/asm/unk_02057380.s
index c6a25876..adfa2f07 100644
--- a/arm9/asm/unk_02057380.s
+++ b/arm9/asm/unk_02057380.s
@@ -33,10 +33,10 @@ FUN_020573AC: ; 0x020573AC
bl FUN_020583CC
add r1, r0, #0x0
mov r0, #0xb
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0xb
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.balign 4
@@ -110,7 +110,7 @@ FUN_02057444: ; 0x02057444
bl AllocFromHeap
add r5, r0, #0x0
bne _0205745A
- bl ErrorHandling
+ bl GF_AssertFail
_0205745A:
mov r2, #0x4b
add r0, r5, #0x0
@@ -126,7 +126,7 @@ _0205745A:
bl AllocFromHeap
add r4, r0, #0x0
bne _0205747E
- bl ErrorHandling
+ bl GF_AssertFail
_0205747E:
add r0, r4, #0x0
mov r1, #0x0
@@ -455,7 +455,7 @@ FUN_02057750: ; 0x02057750
bl FUN_020587E0
cmp r0, #0x1
beq _02057760
- bl ErrorHandling
+ bl GF_AssertFail
_02057760:
add r0, r5, #0x0
mov r4, #0x0
@@ -497,7 +497,7 @@ FUN_020577A8: ; 0x020577A8
bl FUN_020587E0
cmp r0, #0x1
beq _020577B8
- bl ErrorHandling
+ bl GF_AssertFail
_020577B8:
add r0, r5, #0x0
mov r4, #0x0
@@ -559,7 +559,7 @@ _02057820:
add r5, #0x50
cmp r4, #0x0
bgt _02057836
- bl ErrorHandling
+ bl GF_AssertFail
_02057836:
add r0, r6, #0x0
add r1, sp, #0x0
@@ -597,7 +597,7 @@ _02057866:
bl FUN_02057C64
add r4, r0, #0x0
bne _0205787C
- bl ErrorHandling
+ bl GF_AssertFail
_0205787C:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -961,7 +961,7 @@ FUN_02057BAC: ; 0x02057BAC
str r1, [sp, #0x0]
cmp r5, #0x0
bne _02057BC0
- bl ErrorHandling
+ bl GF_AssertFail
_02057BC0:
lsl r0, r5, #0x5
str r0, [sp, #0x4]
@@ -970,7 +970,7 @@ _02057BC0:
bl AllocFromHeapAtEnd
add r6, r0, #0x0
bne _02057BD4
- bl ErrorHandling
+ bl GF_AssertFail
_02057BD4:
ldr r2, [sp, #0x4]
add r0, r6, #0x0
@@ -981,7 +981,7 @@ _02057BD4:
bl AllocFromHeapAtEnd
add r4, r0, #0x0
bne _02057BEE
- bl ErrorHandling
+ bl GF_AssertFail
_02057BEE:
ldr r0, [sp, #0x0]
str r0, [r4, #0x0]
@@ -1023,7 +1023,7 @@ _02057C30:
bl FUN_02057494
cmp r0, #0x0
bne _02057C42
- bl ErrorHandling
+ bl GF_AssertFail
_02057C42:
ldr r0, [r6, #0x0]
add r4, #0x20
@@ -1035,10 +1035,10 @@ _02057C42:
blt _02057C1A
ldr r1, [r5, #0x10]
mov r0, #0xb
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0xb
add r1, r5, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r3-r7, pc}
thumb_func_start FUN_02057C64
@@ -1135,7 +1135,7 @@ _02057D0A:
bl FUN_0200CA44
add r5, r0, #0x0
bne _02057D1C
- bl ErrorHandling
+ bl GF_AssertFail
_02057D1C:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -1512,7 +1512,7 @@ FUN_02058060: ; 0x02058060
add r6, r1, #0x0
cmp r5, #0x0
bne _0205806E
- bl ErrorHandling
+ bl GF_AssertFail
_0205806E:
add r0, r5, #0x0
bl FUN_02058368
@@ -1745,7 +1745,7 @@ FUN_02058214: ; 0x02058214
bl FUN_020589CC
cmp r0, #0x1
beq _02058228
- bl ErrorHandling
+ bl GF_AssertFail
_02058228:
add r0, r5, #0x0
mov r1, #0x0
@@ -1776,7 +1776,7 @@ FUN_02058258: ; 0x02058258
bl FUN_02058CE0
cmp r0, #0x1
beq _0205826E
- bl ErrorHandling
+ bl GF_AssertFail
_0205826E:
add r0, r5, #0x0
mov r1, #0x1
@@ -2046,7 +2046,7 @@ FUN_020583F4: ; 0x020583F4
ldr r0, [r4, #0x14]
cmp r0, #0x0
bne _02058402
- bl ErrorHandling
+ bl GF_AssertFail
_02058402:
ldr r0, [r4, #0x14]
pop {r4, pc}
@@ -2279,7 +2279,7 @@ _02058504:
str r1, [r0, #0x40]
pop {r3, pc}
_02058508:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4
@@ -2303,7 +2303,7 @@ _02058528:
ldr r0, [r0, #0x40]
pop {r3, pc}
_0205852C:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
@@ -2392,7 +2392,7 @@ FUN_0205858C: ; 0x0205858C
add r4, r0, #0x0
cmp r5, #0x10
ble _0205859A
- bl ErrorHandling
+ bl GF_AssertFail
_0205859A:
add r0, r4, #0x0
bl FUN_020585B0
@@ -2416,7 +2416,7 @@ FUN_020585B4: ; 0x020585B4
add r4, r0, #0x0
cmp r5, #0x10
ble _020585C2
- bl ErrorHandling
+ bl GF_AssertFail
_020585C2:
add r0, r4, #0x0
bl FUN_020585D8
@@ -2440,7 +2440,7 @@ FUN_020585DC: ; 0x020585DC
add r4, r0, #0x0
cmp r5, #0x10
ble _020585EA
- bl ErrorHandling
+ bl GF_AssertFail
_020585EA:
add r0, r4, #0x0
bl FUN_02058600
@@ -2464,7 +2464,7 @@ FUN_02058604: ; 0x02058604
add r4, r0, #0x0
cmp r5, #0x20
ble _02058612
- bl ErrorHandling
+ bl GF_AssertFail
_02058612:
add r0, r4, #0x0
bl FUN_02058628
@@ -2712,7 +2712,7 @@ FUN_02058750: ; 0x02058750
bl FUN_020589CC
cmp r0, #0x1
beq _02058760
- bl ErrorHandling
+ bl GF_AssertFail
_02058760:
add r0, r4, #0x0
bl FUN_02058490
@@ -3583,7 +3583,7 @@ _02058C4C:
strh r1, [r0, #0x12]
pop {r3, pc}
_02058C50:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4
@@ -3607,7 +3607,7 @@ _02058C70:
ldrh r0, [r0, #0x12]
pop {r3, pc}
_02058C74:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
@@ -3718,7 +3718,7 @@ FUN_02058CFC: ; 0x02058CFC
bl FUN_02058CE0
cmp r0, #0x1
beq _02058D0C
- bl ErrorHandling
+ bl GF_AssertFail
_02058D0C:
add r0, r4, #0x0
bl FUN_02058C1C
@@ -3730,7 +3730,7 @@ FUN_02058D14: ; 0x02058D14
add r4, r0, #0x0
cmp r4, #0x37
blo _02058D20
- bl ErrorHandling
+ bl GF_AssertFail
_02058D20:
ldr r0, _02058D28 ; =UNK_020F6364
lsl r1, r4, #0x2
@@ -3795,7 +3795,7 @@ _02058D5C:
ldr r2, [r3, #0x0]
cmp r2, r1
bne _02058D52
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_02058EE8.s b/arm9/asm/unk_02058EE8.s
index 70e6414e..b021f2bd 100644
--- a/arm9/asm/unk_02058EE8.s
+++ b/arm9/asm/unk_02058EE8.s
@@ -2621,11 +2621,11 @@ FUN_02059A60: ; 0x02059A60
mvn r0, r0
cmp r5, r0
bne _02059A92
- bl ErrorHandling
+ bl GF_AssertFail
_02059A92:
cmp r5, #0x4
blt _02059A9A
- bl ErrorHandling
+ bl GF_AssertFail
_02059A9A:
ldr r1, _02059ABC ; =UNK_020F6630
lsl r5, r5, #0x2
diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s
index 310d4f03..26971d97 100644
--- a/arm9/asm/unk_02059F04.s
+++ b/arm9/asm/unk_02059F04.s
@@ -480,7 +480,7 @@ _0205A254:
str r0, [r4, #0xc]
pop {r3-r7, pc}
_0205A268:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x8
pop {r3-r7, pc}
@@ -785,7 +785,7 @@ _0205A486:
mvn r0, r0
cmp r1, r0
bne _0205A496
- bl ErrorHandling
+ bl GF_AssertFail
_0205A496:
add r4, r4, #0x1
lsl r0, r4, #0x2
@@ -942,7 +942,7 @@ _0205A5A2:
mvn r0, r0
cmp r1, r0
bne _0205A5B2
- bl ErrorHandling
+ bl GF_AssertFail
_0205A5B2:
add r4, r4, #0x1
lsl r0, r4, #0x2
@@ -1617,7 +1617,7 @@ _0205AA9A:
_0205AAA4:
cmp r4, #0x0
bne _0205AAAC
- bl ErrorHandling
+ bl GF_AssertFail
_0205AAAC:
add r0, r4, #0x0
pop {r4, pc}
@@ -1674,7 +1674,7 @@ _0205AB0A:
ldr r2, [r1, #0x0]
cmp r2, #0x27
bne _0205AB02
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
nop
@@ -1965,7 +1965,7 @@ _0205AD26:
_0205AD36:
cmp r4, #0x4
blt _0205AD3E
- bl ErrorHandling
+ bl GF_AssertFail
_0205AD3E:
add r0, r4, #0x1
lsr r2, r0, #0x1f
diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s
index bc0fa0dd..b780cf26 100644
--- a/arm9/asm/unk_0205AD98.s
+++ b/arm9/asm/unk_0205AD98.s
@@ -54,7 +54,7 @@ FUN_0205ADDC: ; 0x0205ADDC
add r5, r0, #0x0
cmp r4, #0x69
blt _0205ADEA
- bl ErrorHandling
+ bl GF_AssertFail
_0205ADEA:
add r0, r5, #0x0
add r1, r4, #0x0
@@ -160,7 +160,7 @@ FUN_0205AEA4: ; 0x0205AEA4
bl AllocFromHeapAtEnd
add r4, r0, #0x0
bne _0205AEBA
- bl ErrorHandling
+ bl GF_AssertFail
_0205AEBA:
add r2, r4, #0x0
mov r1, #0x14
@@ -179,7 +179,7 @@ _0205AEC0:
bl FUN_0200CA44
add r7, r0, #0x0
bne _0205AEE4
- bl ErrorHandling
+ bl GF_AssertFail
_0205AEE4:
str r5, [r4, #0xc]
str r6, [r4, #0x10]
@@ -206,13 +206,13 @@ FUN_0205AEFC: ; 0x0205AEFC
bl FUN_0205AE28
cmp r0, #0x1
beq _0205AF14
- bl ErrorHandling
+ bl GF_AssertFail
_0205AF14:
ldr r0, [r4, #0xc]
bl FUN_0205AE50
mov r0, #0x4
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r5, #0x0
bl FUN_0200CAB4
pop {r3-r5, pc}
@@ -335,7 +335,7 @@ FUN_0205AFDC: ; 0x0205AFDC
add r4, r1, #0x0
cmp r7, #0x4
blt _0205AFEA
- bl ErrorHandling
+ bl GF_AssertFail
_0205AFEA:
ldr r3, _0205B01C ; =UNK_020F6308
ldr r6, [r3, #0x0]
@@ -362,7 +362,7 @@ _0205B004:
cmp r6, #0x0
bne _0205AFF4
_0205B014:
- bl ErrorHandling
+ bl GF_AssertFail
add r0, r4, #0x0
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_0205BEF8.s b/arm9/asm/unk_0205BEF8.s
index bb032e3d..3df9f7d7 100644
--- a/arm9/asm/unk_0205BEF8.s
+++ b/arm9/asm/unk_0205BEF8.s
@@ -530,7 +530,7 @@ _0205C266:
_0205C276:
cmp r5, #0x4
blt _0205C27E
- bl ErrorHandling
+ bl GF_AssertFail
_0205C27E:
add r0, r5, #0x1
lsr r2, r0, #0x1f
diff --git a/arm9/asm/unk_0205C334.s b/arm9/asm/unk_0205C334.s
index b975a3f0..22bba443 100644
--- a/arm9/asm/unk_0205C334.s
+++ b/arm9/asm/unk_0205C334.s
@@ -316,7 +316,7 @@ _0205C584:
ldr r0, [r2, #0x8]
pop {r3, pc}
_0205C588:
- bl ErrorHandling
+ bl GF_AssertFail
ldr r0, _0205C590 ; =0x0000FFFF
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s
index ac7a6808..b40cf1a7 100644
--- a/arm9/asm/unk_0205C598.s
+++ b/arm9/asm/unk_0205C598.s
@@ -153,7 +153,7 @@ _0205C650:
mov r0, #0x1
pop {r3-r7, pc}
_0205C6AE:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
add sp, #0x58
pop {r3-r7, pc}
@@ -627,7 +627,7 @@ _0205CA30:
cmp r0, #0x0
bne _0205CA10
_0205CA40:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
add sp, #0x8
pop {r3-r7, pc}
@@ -652,7 +652,7 @@ FUN_0205CA64: ; 0x0205CA64
push {r4, lr}
add r4, r0, #0x0
bne _0205CA6E
- bl ErrorHandling
+ bl GF_AssertFail
_0205CA6E:
add r0, r4, #0x0
bl FUN_0205CAD4
@@ -678,7 +678,7 @@ FUN_0205CA80: ; 0x0205CA80
bl AllocFromHeapAtEnd
add r4, r0, #0x0
bne _0205CA9A
- bl ErrorHandling
+ bl GF_AssertFail
_0205CA9A:
add r0, r4, #0x0
mov r1, #0x0
@@ -701,7 +701,7 @@ _0205CA9A:
bl FUN_0200CA44
add r4, r0, #0x0
bne _0205CACC
- bl ErrorHandling
+ bl GF_AssertFail
_0205CACC:
add r0, r4, #0x0
pop {r3-r7, pc}
@@ -723,7 +723,7 @@ FUN_0205CAE0: ; 0x0205CAE0
bl FUN_0201B6C8
add r1, r0, #0x0
mov r0, #0x4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r4, #0x0
bl FUN_0200CAB4
pop {r4, pc}
@@ -840,7 +840,7 @@ _0205CBB6:
mvn r0, r0
cmp r1, r0
bne _0205CBC4
- bl ErrorHandling
+ bl GF_AssertFail
_0205CBC4:
ldr r0, [r4, #0x8]
mov r1, #0x0
diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s
index 80b7ca1a..890feee8 100644
--- a/arm9/asm/unk_0205DD18.s
+++ b/arm9/asm/unk_0205DD18.s
@@ -101,7 +101,7 @@ _0205DDB6:
ldrb r4, [r0, r5]
cmp r4, #0x0
bne _0205DDC2
- bl ErrorHandling
+ bl GF_AssertFail
_0205DDC2:
cmp r4, #0x1
bhi _0205DDCA
@@ -123,7 +123,7 @@ _0205DDCA:
lsr r6, r0, #0x10
cmp r6, r4
blo _0205DDF2
- bl ErrorHandling
+ bl GF_AssertFail
_0205DDF2:
lsl r1, r5, #0x1
mov r0, #0x9
@@ -158,7 +158,7 @@ _0205DE30:
lsl r7, r4, #0x1
cmp r6, r7
bge _0205DE3A
- bl ErrorHandling
+ bl GF_AssertFail
_0205DE3A:
sub r0, r6, r7
lsl r0, r0, #0x18
@@ -267,7 +267,7 @@ _0205DEE0:
lsr r7, r0, #0x10
cmp r7, #0x64
blo _0205DF12
- bl ErrorHandling
+ bl GF_AssertFail
_0205DF12:
cmp r7, #0x32
bhs _0205DF1A
@@ -477,7 +477,7 @@ FUN_0205E080: ; 0x0205E080
add r6, r2, #0x0
cmp r4, #0x0
bne _0205E090
- bl ErrorHandling
+ bl GF_AssertFail
_0205E090:
str r4, [r5, #0x8]
str r6, [r5, #0xc]
@@ -726,7 +726,7 @@ _0205E24C:
add r1, r1, #0x1
cmp r1, #0x3
blt _0205E23A
- bl ErrorHandling
+ bl GF_AssertFail
_0205E256:
pop {r4-r6, pc}
@@ -814,7 +814,7 @@ _0205E2DC:
lsr r4, r0, #0x10
cmp r4, #0x64
blo _0205E2F4
- bl ErrorHandling
+ bl GF_AssertFail
_0205E2F4:
ldrb r0, [r6, r5]
cmp r4, r0
@@ -970,7 +970,7 @@ _0205E426:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
bne _0205E430
- bl ErrorHandling
+ bl GF_AssertFail
_0205E430:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
@@ -997,7 +997,7 @@ _0205E43C:
lsr r0, r0, #0x10
cmp r4, r0
blo _0205E46A
- bl ErrorHandling
+ bl GF_AssertFail
_0205E46A:
cmp r4, #0x0
bne _0205E472
diff --git a/arm9/asm/unk_0205EC84.s b/arm9/asm/unk_0205EC84.s
index 74662b87..a0c7d147 100644
--- a/arm9/asm/unk_0205EC84.s
+++ b/arm9/asm/unk_0205EC84.s
@@ -50,7 +50,7 @@ _0205ECC0:
bl FUN_0205EC94
pop {r3, pc}
_0205ECCA:
- bl ErrorHandling
+ bl GF_AssertFail
_0205ECCE:
mov r0, #0x0
pop {r3, pc}
@@ -886,7 +886,7 @@ FUN_0205F2E4: ; 0x0205F2E4
add r6, r1, #0x0
cmp r4, #0x45
blo _0205F2F4
- bl ErrorHandling
+ bl GF_AssertFail
_0205F2F4:
mov r2, #0x9b
lsl r2, r2, #0x4
diff --git a/arm9/asm/unk_0205F314.s b/arm9/asm/unk_0205F314.s
index d6c97ced..548cd5a4 100644
--- a/arm9/asm/unk_0205F314.s
+++ b/arm9/asm/unk_0205F314.s
@@ -27,7 +27,7 @@ FUN_0205F314: ; 0x0205F314
cmp r5, r1
bls _0205F334
_0205F32C:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x0
pop {r3-r5, pc}
_0205F334:
@@ -212,7 +212,7 @@ FUN_0205F45C: ; 0x0205F45C
cmp r4, #0x3
blo _0205F46A
_0205F466:
- bl ErrorHandling
+ bl GF_AssertFail
_0205F46A:
ldr r0, _0205F474 ; =UNK_020F7430
lsl r1, r4, #0x1
@@ -271,7 +271,7 @@ FUN_0205F4C8: ; 0x0205F4C8
cmp r4, #0x4
blt _0205F4D6
_0205F4D2:
- bl ErrorHandling
+ bl GF_AssertFail
_0205F4D6:
ldr r0, _0205F4E0 ; =UNK_020F7436
lsl r1, r4, #0x1
diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s
index b781112b..624176f9 100644
--- a/arm9/asm/unk_0205F7A0.s
+++ b/arm9/asm/unk_0205F7A0.s
@@ -173,7 +173,7 @@ FUN_0205F8CC: ; 0x0205F8CC
bl FS_OpenFile
cmp r0, #0x0
bne _0205F8F8
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x70
pop {r3-r7, pc}
_0205F8F8:
@@ -183,7 +183,7 @@ _0205F8F8:
bl FS_ReadFile
cmp r0, #0x0
bge _0205F90A
- bl ErrorHandling
+ bl GF_AssertFail
_0205F90A:
mov r0, #0xb
mov r1, #0x4
diff --git a/arm9/asm/unk_0206015C.s b/arm9/asm/unk_0206015C.s
deleted file mode 100644
index 296e65c5..00000000
--- a/arm9/asm/unk_0206015C.s
+++ /dev/null
@@ -1,233 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
-
- .text
-
- thumb_func_start FUN_0206015C
-FUN_0206015C: ; 0x0206015C
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0xb
- mov r1, #0x10
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- mov r0, #0xb
- bl MOD06_02244DB0
- str r0, [r4, #0x0]
- mov r0, #0xb
- add r1, r5, #0x0
- bl MOD06_02245114
- str r0, [r4, #0x4]
- mov r0, #0x0
- strb r0, [r4, #0xc]
- strb r0, [r4, #0xd]
- ldr r0, [r5, #0x10]
- ldr r1, _02060190 ; =FUN_02060194
- add r2, r4, #0x0
- bl FUN_0204640C
- pop {r3-r5, pc}
- nop
-_02060190: .word FUN_02060194
-
- thumb_func_start FUN_02060194
-FUN_02060194: ; 0x02060194
- push {r3-r7, lr}
- sub sp, #0x10
- add r5, r0, #0x0
- bl FUN_02046528
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0204652C
- add r4, r0, #0x0
- ldrb r0, [r4, #0xc]
- cmp r0, #0x8
- bls _020601B0
- b _02060332
-_020601B0:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020601BC: ; jump table (using 16-bit offset)
- .short _020601CE - _020601BC - 2; case 0
- .short _020601F2 - _020601BC - 2; case 1
- .short _020601FE - _020601BC - 2; case 2
- .short _02060226 - _020601BC - 2; case 3
- .short _02060232 - _020601BC - 2; case 4
- .short _020602A2 - _020601BC - 2; case 5
- .short _020602F0 - _020601BC - 2; case 6
- .short _020602FC - _020601BC - 2; case 7
- .short _02060312 - _020601BC - 2; case 8
-_020601CE:
- add r0, r6, #0x0
- mov r1, #0x1
- bl FUN_0206367C
- ldrb r0, [r4, #0xd]
- ldr r1, [r4, #0x4]
- bl MOD06_02245198
- ldr r0, [r4, #0x4]
- bl MOD06_022451F0
- str r0, [r4, #0x8]
- add r0, r5, #0x0
- bl FUN_0204AFC8
- mov r0, #0x1
- strb r0, [r4, #0xc]
- b _02060332
-_020601F2:
- add r0, r5, #0x0
- bl FUN_0204AF3C
- mov r0, #0x2
- strb r0, [r4, #0xc]
- b _02060332
-_020601FE:
- ldr r0, [r6, #0xc]
- bl SavArray_Flags_get
- ldrb r1, [r4, #0xd]
- cmp r1, #0x0
- bne _02060210
- bl FUN_0205F1C4
- b _02060218
-_02060210:
- cmp r1, #0x5
- bne _02060218
- bl FUN_0205F1D4
-_02060218:
- ldr r1, [r4, #0x8]
- add r0, r5, #0x0
- bl FUN_02049160
- mov r0, #0x3
- strb r0, [r4, #0xc]
- b _02060332
-_02060226:
- add r0, r5, #0x0
- bl FUN_0204AF84
- mov r0, #0x4
- strb r0, [r4, #0xc]
- b _02060332
-_02060232:
- ldr r0, [r6, #0x38]
- bl FUN_020553A0
- ldrb r1, [r4, #0xd]
- add r7, r0, #0x0
- add r1, r1, #0x1
- strb r1, [r4, #0xd]
- ldrb r1, [r4, #0xd]
- cmp r1, #0x5
- bhi _02060290
- add r0, r6, #0x0
- bl MOD06_02245088
- add r6, r0, #0x0
- add r0, r7, #0x0
- mov r1, #0x1
- bl FUN_0205889C
- ldr r0, [r4, #0x0]
- add r1, r6, #0x0
- bl MOD06_02244DC4
- ldr r0, [r4, #0x0]
- bl MOD06_02244EF8
- mov r0, #0x0
- strb r0, [r4, #0xe]
- ldr r0, _02060338 ; =0x00000679
- bl FUN_020054C8
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x6
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- mov r0, #0xb
- str r0, [sp, #0xc]
- ldr r3, _0206033C ; =0x0000FFFF
- add r0, r5, #0x0
- mov r1, #0x3
- mov r2, #0x11
- bl FUN_0204C1B4
- mov r0, #0x5
- strb r0, [r4, #0xc]
- b _02060332
-_02060290:
- mov r1, #0x0
- bl FUN_0205889C
- add r0, r5, #0x0
- bl FUN_0204B00C
- mov r0, #0x8
- strb r0, [r4, #0xc]
- b _02060332
-_020602A2:
- ldrb r0, [r4, #0xe]
- add r0, r0, #0x1
- strb r0, [r4, #0xe]
- ldrb r0, [r4, #0xe]
- cmp r0, #0x3c
- bhs _020602B8
- ldr r0, _02060340 ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #0x1
- tst r0, r1
- beq _02060332
-_020602B8:
- ldrb r0, [r4, #0xd]
- ldr r1, [r4, #0x4]
- bl MOD06_02245198
- ldr r0, [r4, #0x4]
- bl MOD06_022451F0
- str r0, [r4, #0x8]
- ldr r0, _02060338 ; =0x00000679
- bl FUN_020054C8
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r0, #0x6
- str r0, [sp, #0x4]
- mov r0, #0x1
- str r0, [sp, #0x8]
- mov r0, #0xb
- str r0, [sp, #0xc]
- ldr r3, _0206033C ; =0x0000FFFF
- add r0, r5, #0x0
- mov r1, #0x3
- mov r2, #0x10
- bl FUN_0204C1B4
- mov r0, #0x6
- strb r0, [r4, #0xc]
- b _02060332
-_020602F0:
- ldr r0, [r4, #0x0]
- bl MOD06_02244F18
- mov r0, #0x7
- strb r0, [r4, #0xc]
- b _02060332
-_020602FC:
- ldr r0, [r4, #0x0]
- bl MOD06_02244F24
- cmp r0, #0x0
- beq _02060332
- ldr r0, [r4, #0x0]
- bl MOD06_02244F2C
- mov r0, #0x1
- strb r0, [r4, #0xc]
- b _02060332
-_02060312:
- add r0, r6, #0x0
- mov r1, #0x0
- bl FUN_0206367C
- ldr r0, [r4, #0x4]
- bl MOD06_02245190
- ldr r0, [r4, #0x0]
- bl MOD06_02244DBC
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x10
- mov r0, #0x1
- pop {r3-r7, pc}
-_02060332:
- mov r0, #0x0
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-_02060338: .word 0x00000679
-_0206033C: .word 0x0000FFFF
-_02060340: .word gMain
diff --git a/arm9/asm/unk_02060344.s b/arm9/asm/unk_02060344.s
index 8f67bca3..9dcfde2e 100644
--- a/arm9/asm/unk_02060344.s
+++ b/arm9/asm/unk_02060344.s
@@ -40,7 +40,7 @@ _0206036A:
_0206038C:
cmp r1, #0xc8
blt _02060394
- bl ErrorHandling
+ bl GF_AssertFail
_02060394:
mov r1, #0x0
_02060396:
diff --git a/arm9/asm/unk_020603B0.s b/arm9/asm/unk_020603B0.s
index 7550dc1d..d4aa42f5 100644
--- a/arm9/asm/unk_020603B0.s
+++ b/arm9/asm/unk_020603B0.s
@@ -100,7 +100,7 @@ _020603F6:
lsr r6, r0, #0x10
cmp r6, #0x10
blo _02060412
- bl ErrorHandling
+ bl GF_AssertFail
_02060412:
cmp r6, #0x0
bne _02060420
@@ -129,7 +129,7 @@ FUN_0206043C: ; 0x0206043C
add r4, r0, #0x0
cmp r4, #0x1d
blo _02060448
- bl ErrorHandling
+ bl GF_AssertFail
_02060448:
ldr r0, _02060450 ; =UNK_020F7460
lsl r1, r4, #0x2
@@ -206,7 +206,7 @@ _020604C2:
mov r6, #0x28
b _020604D0
_020604C8:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x20
pop {r3-r7, pc}
_020604D0:
@@ -303,7 +303,7 @@ _0206059C:
lsr r5, r0, #0x10
cmp r5, #0x1d
blo _020605B2
- bl ErrorHandling
+ bl GF_AssertFail
_020605B2:
lsl r0, r5, #0x18
lsr r2, r0, #0x18
@@ -361,7 +361,7 @@ _0206061E:
ldrh r5, [r4, #0x0]
cmp r5, #0x0
bne _02060628
- bl ErrorHandling
+ bl GF_AssertFail
_02060628:
cmp r5, #0x1
bhi _02060630
@@ -383,7 +383,7 @@ _02060630:
lsr r6, r0, #0x10
cmp r6, r5
blo _02060658
- bl ErrorHandling
+ bl GF_AssertFail
_02060658:
lsl r0, r6, #0x18
lsr r0, r0, #0x17
diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s
index 45fc311a..2e2c4e21 100644
--- a/arm9/asm/unk_020607D4.s
+++ b/arm9/asm/unk_020607D4.s
@@ -149,7 +149,7 @@ _020608F0:
bl FUN_020054C8
b _0206090A
_020608F8:
- bl ErrorHandling
+ bl GF_AssertFail
add r0, r4, #0x0
bl FreeToHeap
add sp, #0x28
@@ -472,7 +472,7 @@ _02060B6A:
str r0, [r4, #0x24]
b _02060B86
_02060B7C:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
mov r0, #0x1
pop {r3-r4, pc}
@@ -556,7 +556,7 @@ _02060BF6:
add r0, r4, #0x0
bl MOD05_021F4BD0
ldr r0, [r0, #0x0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r2, sp, #0x20
mov r3, #0x0
@@ -569,7 +569,7 @@ _02060BF6:
bl FUN_0204A9F0
cmp r0, #0x0
bne _02060C38
- bl ErrorHandling
+ bl GF_AssertFail
_02060C38:
ldr r0, [sp, #0x20]
bl MOD05_021E7EC8
@@ -594,7 +594,7 @@ _02060C38:
bl MOD05_021DA464
b _02060C6E
_02060C6A:
- bl ErrorHandling
+ bl GF_AssertFail
_02060C6E:
add r0, r6, #0x1
lsl r0, r0, #0x18
@@ -644,7 +644,7 @@ _02060CA8:
str r1, [r0, #0x8]
pop {r3, pc}
_02060CC4:
- bl ErrorHandling
+ bl GF_AssertFail
_02060CC8:
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s
index b6692f24..918488c5 100644
--- a/arm9/asm/unk_02060CCC.s
+++ b/arm9/asm/unk_02060CCC.s
@@ -153,7 +153,7 @@ FUN_02060CCC: ; 0x02060CCC
cmp r5, #0x5
blt _02060CDC
_02060CD8:
- bl ErrorHandling
+ bl GF_AssertFail
_02060CDC:
sub r1, r5, #0x1
ldr r6, _02060CF4 ; =UNK_020F767C
@@ -163,7 +163,7 @@ _02060CDC:
ldr r0, [r6, r4]
cmp r0, r5
beq _02060CF0
- bl ErrorHandling
+ bl GF_AssertFail
_02060CF0:
add r0, r6, r4
pop {r4-r6, pc}
@@ -183,7 +183,7 @@ FUN_02060CF8: ; 0x02060CF8
cmp r4, r0
blt _02060D12
_02060D0E:
- bl ErrorHandling
+ bl GF_AssertFail
_02060D12:
sub r0, r4, #0x1
ldr r1, [r5, #0x8]
@@ -206,7 +206,7 @@ FUN_02060D1C: ; 0x02060D1C
ldr r4, [r0, #0x0]
cmp r4, #0x0
bne _02060D3E
- bl ErrorHandling
+ bl GF_AssertFail
_02060D3E:
add r0, r6, #0x0
add r1, r7, #0x0
@@ -629,7 +629,7 @@ FUN_02061028: ; 0x02061028
ldrh r0, [r5, #0x22]
cmp r0, #0x0
bne _0206106C
- bl ErrorHandling
+ bl GF_AssertFail
_0206106C:
add r2, r5, #0x0
add r5, #0xc
@@ -1207,7 +1207,7 @@ FUN_02061498: ; 0x02061498
lsr r4, r0, #0x10
cmp r4, #0x5
blo _020614F0
- bl ErrorHandling
+ bl GF_AssertFail
_020614F0:
add r4, #0x11
add r0, r4, #0x0
@@ -1615,7 +1615,7 @@ FUN_020617D8: ; 0x020617D8
lsr r4, r0, #0x10
cmp r4, #0x3
blo _02061826
- bl ErrorHandling
+ bl GF_AssertFail
_02061826:
add r4, #0x21
add r0, r4, #0x0
@@ -1663,7 +1663,7 @@ FUN_02061868: ; 0x02061868
ldr r1, [r4, #0x0]
cmp r1, r0
beq _02061884
- bl ErrorHandling
+ bl GF_AssertFail
_02061884:
add r0, r5, #0x0
mov r1, #0x0
@@ -2724,7 +2724,7 @@ FUN_020620A0: ; 0x020620A0
add r4, r0, #0x0
cmp r4, #0x0
bgt _020620BE
- bl ErrorHandling
+ bl GF_AssertFail
_020620BE:
cmp r4, #0x1
ble _020620D0
@@ -2760,7 +2760,7 @@ _020620F0:
_020620F8:
cmp r5, #0x0
beq _02062100
- bl ErrorHandling
+ bl GF_AssertFail
_02062100:
bl LCRandom
mov r1, #0xf1
@@ -2770,7 +2770,7 @@ _02062100:
lsr r4, r0, #0x10
cmp r4, #0x11
blo _02062118
- bl ErrorHandling
+ bl GF_AssertFail
_02062118:
cmp r4, #0x9
blt _0206211E
@@ -2828,7 +2828,7 @@ FUN_02062170: ; 0x02062170
lsr r4, r0, #0x10
cmp r4, #0x5
blo _0206218C
- bl ErrorHandling
+ bl GF_AssertFail
_0206218C:
ldr r0, _02062238 ; =UNK_02105FBC
lsl r1, r4, #0x1
@@ -2870,7 +2870,7 @@ _020621D4:
lsr r4, r0, #0x10
cmp r4, #0x4
blo _020621E4
- bl ErrorHandling
+ bl GF_AssertFail
_020621E4:
cmp r4, #0x3
bhi _0206220C
@@ -2922,7 +2922,7 @@ _02062228:
mov r0, #0xc
pop {r3-r7, pc}
_0206222C:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
@@ -3014,7 +3014,7 @@ FUN_020622C4: ; 0x020622C4
lsr r5, r0, #0x10
cmp r5, #0x11
blo _020622E0
- bl ErrorHandling
+ bl GF_AssertFail
_020622E0:
cmp r5, #0x9
blt _020622E6
@@ -3028,7 +3028,7 @@ _020622E6:
lsr r4, r0, #0x10
cmp r4, #0x11
blo _020622FE
- bl ErrorHandling
+ bl GF_AssertFail
_020622FE:
cmp r4, #0x9
blt _02062304
@@ -3121,7 +3121,7 @@ _02062392:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
bne _020623A4
- bl ErrorHandling
+ bl GF_AssertFail
_020623A4:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
@@ -3148,7 +3148,7 @@ _020623B0:
lsr r0, r0, #0x10
cmp r5, r0
blo _020623DE
- bl ErrorHandling
+ bl GF_AssertFail
_020623DE:
add r0, sp, #0x10
add r0, #0x2
@@ -3244,7 +3244,7 @@ FUN_02062474: ; 0x02062474
lsl r0, r0, #0x10
lsr r4, r0, #0x10
bne _02062496
- bl ErrorHandling
+ bl GF_AssertFail
_02062496:
cmp r4, #0x1
bhi _0206249E
@@ -3266,7 +3266,7 @@ _0206249E:
lsr r5, r0, #0x10
cmp r5, r4
blo _020624C6
- bl ErrorHandling
+ bl GF_AssertFail
_020624C6:
lsl r4, r5, #0x2
add r0, sp, #0x4
@@ -3363,7 +3363,7 @@ _0206256C:
_02062572:
cmp r4, #0xb
blt _0206257A
- bl ErrorHandling
+ bl GF_AssertFail
_0206257A:
ldr r1, [sp, #0x8]
add r0, r6, #0x0
diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s
index 2ec122fa..fc235004 100644
--- a/arm9/asm/unk_020625EC.s
+++ b/arm9/asm/unk_020625EC.s
@@ -246,7 +246,7 @@ FUN_02062770: ; 0x02062770
add r4, r0, #0x0
add r0, #0xc0
ldr r0, [r0, #0x0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r1, _020627C8 ; =gMain
ldr r3, [r1, #0x48]
mov r1, #0x2
@@ -467,7 +467,7 @@ _0206290C:
_02062912:
add r0, #0xe4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x0
str r3, [sp, #0x0]
ldrh r0, [r4, #0x1a]
@@ -578,7 +578,7 @@ FUN_020629D8: ; 0x020629D8
_020629EE:
add r0, #0xe4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x0
str r3, [sp, #0x0]
ldrh r0, [r4, #0x1a]
@@ -1173,7 +1173,7 @@ FUN_02062DB0: ; 0x02062DB0
add r4, #0xe4
add r0, r4, #0x0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x14
pop {r3-r4, pc}
.balign 4
@@ -1361,7 +1361,7 @@ FUN_02063028: ; 0x02063028
ldr r1, [r5, #0x0]
add r7, r0, #0x1
add r0, r7, #0x0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0x0
add r1, #0xc4
str r0, [r1, #0x0]
@@ -1385,7 +1385,7 @@ FUN_02063028: ; 0x02063028
add r0, r5, #0x0
add r0, #0xd4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrb r0, [r5, #0x18]
mov r6, #0x0
cmp r0, #0x0
@@ -1397,7 +1397,7 @@ _0206307C:
ldr r0, [r0, #0x0]
ldr r1, [r4, #0x64]
add r2, r6, #0x0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
ldrb r0, [r5, #0x18]
add r6, r6, #0x1
add r4, r4, #0x4
@@ -1409,7 +1409,7 @@ _02063094:
ldr r0, [r0, #0x0]
ldr r1, [r5, #0x38]
ldr r2, _02063160 ; =0x0000FFFF
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r1, r5, #0x0
ldr r0, _02063164 ; =UNK_020F7C2C
add r1, #0xa0
@@ -1455,7 +1455,7 @@ _02063094:
ldr r2, [sp, #0x18]
add r0, #0xa0
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
add r1, r5, #0x0
add r1, #0xc0
str r0, [r1, #0x0]
@@ -1474,7 +1474,7 @@ _02063094:
add r0, r5, #0x0
add r0, #0xe4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x0
str r3, [sp, #0x0]
ldr r0, _02063174 ; =0x0001020F
@@ -1515,11 +1515,11 @@ FUN_02063178: ; 0x02063178
ldr r0, [r0, #0x0]
add r1, #0x22
add r2, #0x24
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #0x0
add r0, #0xc4
ldr r0, [r0, #0x0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0x0
add r0, #0xd4
bl FUN_02019570
@@ -1546,16 +1546,16 @@ FUN_020631C8: ; 0x020631C8
push {r3-r5, lr}
mov r1, #0x13
add r5, r0, #0x0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0x0
add r4, r0, #0x0
add r0, r5, #0x0
add r1, #0x2
add r2, sp, #0x0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, r5, #0x0
mov r1, #0x2
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r2, sp, #0x0
ldrh r3, [r2, #0x0]
ldrh r2, [r2, #0x2]
@@ -1579,7 +1579,7 @@ FUN_02063208: ; 0x02063208
add r4, r0, #0x0
add r0, #0xe4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x0
str r3, [sp, #0x0]
ldr r0, _02063234 ; =0x0001020F
@@ -1626,7 +1626,7 @@ FUN_02063264: ; 0x02063264
add r4, r0, #0x0
add r0, #0xe4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x0
str r3, [sp, #0x0]
ldr r0, _020632A0 ; =0x0001020F
@@ -1675,7 +1675,7 @@ FUN_020632A4: ; 0x020632A4
add r0, r4, #0x0
add r0, #0xd4
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x1
str r0, [sp, #0x1c]
mov r0, #0x0
@@ -1901,7 +1901,7 @@ FUN_02063430: ; 0x02063430
add r0, r4, #0x0
add r0, #0xf4
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0x0
str r1, [sp, #0x0]
ldr r0, _020634D8 ; =0x00010200
diff --git a/arm9/asm/unk_02063888.s b/arm9/asm/unk_02063888.s
index 0e213436..19cd07cc 100644
--- a/arm9/asm/unk_02063888.s
+++ b/arm9/asm/unk_02063888.s
@@ -77,7 +77,7 @@ _020638F8:
lsl r0, r0, #0x10
lsr r6, r0, #0x10
bne _02063920
- bl ErrorHandling
+ bl GF_AssertFail
_02063920:
add r0, r6, #0x0
add r1, sp, #0x8
diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s
index 854eaedd..b111b655 100644
--- a/arm9/asm/unk_02063948.s
+++ b/arm9/asm/unk_02063948.s
@@ -189,7 +189,7 @@ FUN_02063A80: ; 0x02063A80
ldr r0, _02063A98 ; =0x19740205
cmp r1, r0
beq _02063A90
- bl ErrorHandling
+ bl GF_AssertFail
_02063A90:
add r0, r4, #0x0
bl FreeToHeap
diff --git a/arm9/asm/unk_0206439C.s b/arm9/asm/unk_0206439C.s
deleted file mode 100644
index 4cc91f4f..00000000
--- a/arm9/asm/unk_0206439C.s
+++ /dev/null
@@ -1,22 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0206439C
-FUN_0206439C: ; 0x0206439C
- push {r4-r6, lr}
- add r5, r1, #0x0
- add r6, r2, #0x0
- mov r1, #0x8
- bl AllocFromHeapAtEnd
- add r4, r0, #0x0
- add r0, r6, #0x0
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- str r0, [r4, #0x0]
- mov r0, #0x0
- str r0, [r4, #0x4]
- add r0, r4, #0x0
- pop {r4-r6, pc}
diff --git a/arm9/asm/unk_020643C0.s b/arm9/asm/unk_020643C0.s
index bc843c82..9215f816 100644
--- a/arm9/asm/unk_020643C0.s
+++ b/arm9/asm/unk_020643C0.s
@@ -175,7 +175,7 @@ FUN_02064520: ; 0x02064520
push {r4, lr}
add r4, r0, #0x0
bne _0206452A
- bl ErrorHandling
+ bl GF_AssertFail
_0206452A:
add r0, r4, #0x0
bl FUN_020646A0
@@ -254,7 +254,7 @@ FUN_020645B0: ; 0x020645B0
bl FUN_0200CA44
add r4, r0, #0x0
bne _020645C6
- bl ErrorHandling
+ bl GF_AssertFail
_020645C6:
add r0, r4, #0x0
pop {r4, pc}
@@ -276,7 +276,7 @@ FUN_020645DC: ; 0x020645DC
bl AllocFromHeap
add r4, r0, #0x0
bne _020645EC
- bl ErrorHandling
+ bl GF_AssertFail
_020645EC:
add r2, r4, #0x0
mov r1, #0x10
@@ -292,12 +292,12 @@ _020645F2:
thumb_func_start FUN_02064600
FUN_02064600: ; 0x02064600
- ldr r3, _02064608 ; =FUN_02016A8C
+ ldr r3, _02064608 ; =FreeToHeapExplicit
add r1, r0, #0x0
ldr r0, [r1, #0x8]
bx r3
.balign 4
-_02064608: .word FUN_02016A8C
+_02064608: .word FreeToHeapExplicit
thumb_func_start FUN_0206460C
FUN_0206460C: ; 0x0206460C
@@ -309,7 +309,7 @@ FUN_0206460C: ; 0x0206460C
bl AllocFromHeap
add r4, r0, #0x0
bne _02064622
- bl ErrorHandling
+ bl GF_AssertFail
_02064622:
add r0, r4, #0x0
mov r1, #0x0
@@ -320,13 +320,13 @@ _02064622:
thumb_func_start FUN_02064630
FUN_02064630: ; 0x02064630
- ldr r3, _0206463C ; =FUN_02016A8C
+ ldr r3, _0206463C ; =FreeToHeapExplicit
add r1, r0, #0x0
ldr r0, [r1, #0x8]
ldr r1, [r1, #0xc]
bx r3
nop
-_0206463C: .word FUN_02016A8C
+_0206463C: .word FreeToHeapExplicit
thumb_func_start FUN_02064640
FUN_02064640: ; 0x02064640
diff --git a/arm9/asm/unk_020647A4.s b/arm9/asm/unk_020647A4.s
index cba18409..7476df71 100644
--- a/arm9/asm/unk_020647A4.s
+++ b/arm9/asm/unk_020647A4.s
@@ -105,7 +105,7 @@ _0206480A:
bl FUN_0204AA5C
cmp r0, #0x0
bne _0206482C
- bl ErrorHandling
+ bl GF_AssertFail
_0206482C:
ldr r1, [sp, #0x14]
add r0, sp, #0x18
@@ -316,7 +316,7 @@ _02064996:
str r1, [r0, #0x8]
pop {r3-r5, pc}
_020649A0:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r5, pc}
nop
_020649A8: .word 0x00000123
@@ -474,7 +474,7 @@ _02064ACA:
bl FUN_0204AA5C
cmp r0, #0x0
bne _02064AEC
- bl ErrorHandling
+ bl GF_AssertFail
_02064AEC:
ldr r1, [sp, #0xc]
add r0, sp, #0x10
@@ -598,7 +598,7 @@ _02064BCA:
bl FUN_0204AA5C
cmp r0, #0x0
bne _02064BEC
- bl ErrorHandling
+ bl GF_AssertFail
_02064BEC:
ldr r1, [sp, #0xc]
add r0, sp, #0x10
diff --git a/arm9/asm/unk_02064CA8.s b/arm9/asm/unk_02064CA8.s
index 851aec52..c81aafec 100644
--- a/arm9/asm/unk_02064CA8.s
+++ b/arm9/asm/unk_02064CA8.s
@@ -127,7 +127,7 @@ FUN_02064D88: ; 0x02064D88
add r7, r0, #0x0
cmp r5, #0x3
blo _02064D96
- bl ErrorHandling
+ bl GF_AssertFail
_02064D96:
add r0, r7, #0x0
bl ScriptEnvironment_GetSav2Ptr
@@ -163,7 +163,7 @@ _02064DD2:
mov r6, #0x19
b _02064DDE
_02064DDA:
- bl ErrorHandling
+ bl GF_AssertFail
_02064DDE:
ldr r0, [r7, #0x1c]
ldr r0, [r0, #0xc]
@@ -182,7 +182,7 @@ FUN_02064DEC: ; 0x02064DEC
add r6, r2, #0x0
cmp r4, #0x1
bls _02064DFC
- bl ErrorHandling
+ bl GF_AssertFail
_02064DFC:
mov r0, #0x0
mvn r0, r0
diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s
index 3d43d136..df203337 100644
--- a/arm9/asm/unk_020653EC.s
+++ b/arm9/asm/unk_020653EC.s
@@ -146,7 +146,7 @@ FUN_020654D0: ; 0x020654D0
add r5, r1, #0x0
lsl r0, r0, #0x4
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0x0
mov r0, #0x69
lsl r0, r0, #0x2
@@ -256,7 +256,7 @@ FUN_020655B0: ; 0x020655B0
add r4, r1, #0x0
lsl r0, r0, #0x4
ldr r0, [r4, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r5, r0, #0x0
ldr r0, _02065638 ; =gMain
mov r1, #0x2
@@ -967,16 +967,16 @@ FUN_02065AF4: ; 0x02065AF4
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrb r0, [r5, #0x1b]
ldr r1, [r5, #0x0]
add r0, r0, #0x1
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r1, #0x59
lsl r1, r1, #0x2
add r7, r5, #0x0
@@ -995,7 +995,7 @@ _02065B7E:
ldr r1, [r2, #0x8]
ldrb r2, [r2, #0x0]
ldr r0, [r5, r0]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r6, #0x1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
@@ -1011,7 +1011,7 @@ _02065B9E:
sub r1, #0x4c
ldr r1, [r5, r1]
ldr r2, _02065CE0 ; =0x0000FFFF
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r6, #0x1
lsl r0, r0, #0x18
mov r1, #0x5
@@ -1110,7 +1110,7 @@ _02065C64:
lsl r3, r3, #0x18
ldrh r2, [r5, r2]
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r5, r1]
@@ -1169,7 +1169,7 @@ FUN_02065CFC: ; 0x02065CFC
add r4, r1, #0x0
mov r1, #0x13
add r5, r0, #0x0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
ldr r1, _02065D48 ; =0x0000FFFF
cmp r4, r1
bne _02065D1C
@@ -1177,7 +1177,7 @@ FUN_02065CFC: ; 0x02065CFC
mov r1, #0x1
mov r2, #0xf
mov r3, #0x2
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3-r5, pc}
_02065D1C:
mov r1, #0xc
@@ -1191,14 +1191,14 @@ _02065D1C:
mov r1, #0x3
mov r2, #0xf
mov r3, #0x4
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3-r5, pc}
_02065D38:
add r0, r5, #0x0
mov r1, #0x7
mov r2, #0xf
mov r3, #0x8
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3-r5, pc}
nop
_02065D48: .word 0x0000FFFF
@@ -1210,16 +1210,16 @@ FUN_02065D4C: ; 0x02065D4C
mov r1, #0x13
add r4, r0, #0x0
add r6, r2, #0x0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0x0
add r5, r0, #0x0
add r0, r4, #0x0
add r1, #0x2
add r2, sp, #0x0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02001470
+ bl ListMenuGetTemplateField
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r6, #0x0
@@ -1280,7 +1280,7 @@ FUN_02065DD8: ; 0x02065DD8
str r2, [sp, #0x4]
ldr r1, [r5, #0x0]
mov r0, #0x4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r1, #0x59
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -1295,7 +1295,7 @@ FUN_02065DD8: ; 0x02065DD8
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r7, #0x43
ldr r6, _02065ECC ; =UNK_020F7EAC
mov r4, #0x0
@@ -1309,7 +1309,7 @@ _02065E14:
ldr r1, [r5, r7]
ldr r2, [r6, r2]
ldr r3, [r3, #0x4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r4, #0x1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -1362,7 +1362,7 @@ _02065E14:
ldr r2, [sp, #0x4]
add r0, r5, r0
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r5, r1]
@@ -1418,11 +1418,11 @@ FUN_02065EF8: ; 0x02065EF8
ldr r0, [r4, r0]
add r1, #0x2
add r2, sp, #0x0
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x59
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r4, r0
@@ -1495,11 +1495,11 @@ FUN_02065F8C: ; 0x02065F8C
ldr r0, [r4, r0]
add r1, #0x2
add r2, sp, #0x0
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x59
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
@@ -2006,7 +2006,7 @@ FUN_02066334: ; 0x02066334
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x14
pop {r3-r4, pc}
.balign 4
@@ -2066,7 +2066,7 @@ _02066426:
add r0, r5, r1
mov r1, #0xff
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #0x1
bl FUN_02002B60
mov r0, #0x0
diff --git a/arm9/asm/unk_0206BF90.s b/arm9/asm/unk_0206BF90.s
index d672d875..acf84738 100644
--- a/arm9/asm/unk_0206BF90.s
+++ b/arm9/asm/unk_0206BF90.s
@@ -572,7 +572,7 @@ _0206C350:
add r0, r4, #0x0
ldr r1, [r2, r1]
add r0, #0x20
- bl FUN_02029F9C
+ bl Chatot_copy
mov r0, #0x1
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 879f7f48..4ba1b745 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -117,7 +117,7 @@ FUN_0206C700: ; 0x0206C700
str r0, [r4, #0x0]
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r4, #0x4]
ldr r0, [sp, #0x18]
str r0, [r4, #0x2c]
@@ -147,7 +147,7 @@ FUN_0206C700: ; 0x0206C700
bl FUN_02019064
ldr r0, [r4, #0x4]
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x4]
mov r1, #0x0
mov r2, #0x1
@@ -743,7 +743,7 @@ _0206CCCE:
lsl r1, r1, #0xe
cmp r0, r1
bhi _0206CD16
- bl ErrorHandling
+ bl GF_AssertFail
_0206CD16:
ldr r0, _0206CE24 ; =0x000005F9
bl FUN_020054C8
@@ -2365,7 +2365,7 @@ _0206DA26:
str r0, [sp, #0xc]
mov r0, #0x76
mov r3, #0x3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -2376,7 +2376,7 @@ _0206DA26:
str r0, [sp, #0xc]
mov r0, #0x76
mov r3, #0x3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0x0
str r1, [sp, #0x0]
mov r0, #0x40
@@ -2441,7 +2441,7 @@ _0206DA26:
mov r0, #0xc
add r2, r4, #0x0
mov r3, #0x4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -2453,7 +2453,7 @@ _0206DA26:
mov r0, #0xc
add r2, r4, #0x0
mov r3, #0x4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x1
str r0, [sp, #0x0]
mov r0, #0x20
@@ -2673,7 +2673,7 @@ FUN_0206DD6C: ; 0x0206DD6C
bl FreeToHeap
ldr r0, [r4, #0x4]
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x2c]
bl Options_GetTextFrameDelay
mov r3, #0x0
@@ -2719,7 +2719,7 @@ _0206DDDC:
b _0206DDFA
_0206DDE4:
ldr r0, _0206DE00 ; =0x00000484
- bl PlayBGM
+ bl PlaySound
b _0206DDFA
_0206DDEC:
ldr r0, _0206DE04 ; =0x000005E6
@@ -2727,7 +2727,7 @@ _0206DDEC:
b _0206DDFA
_0206DDF4:
ldr r0, _0206DE08 ; =0x00000483
- bl PlayBGM
+ bl PlaySound
_0206DDFA:
add r0, r4, #0x0
pop {r4, pc}
diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s
index 0bc45eb2..3203cc10 100644
--- a/arm9/asm/unk_0206DE24.s
+++ b/arm9/asm/unk_0206DE24.s
@@ -1,8 +1,8 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021064C0
- .extern UNK_021064B8
+ .extern NNS_GfdDefaultFuncAllocPlttVram
+ .extern NNS_GfdDefaultFuncAllocTexVram
.text
@@ -128,14 +128,14 @@ _0206DF14: .word 0x04000580
thumb_func_start FUN_0206DF18
FUN_0206DF18: ; 0x0206DF18
push {r3-r5, lr}
- ldr r3, _0206DF50 ; =UNK_021064B8
+ ldr r3, _0206DF50 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #0x2
mov r1, #0x0
ldr r3, [r3, #0x0]
lsl r0, r0, #0xe
add r2, r1, #0x0
blx r3
- ldr r3, _0206DF54 ; =UNK_021064C0
+ ldr r3, _0206DF54 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0x0
add r4, r0, #0x0
ldr r3, [r3, #0x0]
@@ -145,17 +145,17 @@ FUN_0206DF18: ; 0x0206DF18
add r5, r0, #0x0
cmp r4, #0x0
bne _0206DF40
- bl ErrorHandling
+ bl GF_AssertFail
_0206DF40:
cmp r5, #0x0
bne _0206DF48
- bl ErrorHandling
+ bl GF_AssertFail
_0206DF48:
bl FUN_02012CC8
pop {r3-r5, pc}
nop
-_0206DF50: .word UNK_021064B8
-_0206DF54: .word UNK_021064C0
+_0206DF50: .word NNS_GfdDefaultFuncAllocTexVram
+_0206DF54: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_0206DF58
FUN_0206DF58: ; 0x0206DF58
@@ -165,7 +165,7 @@ FUN_0206DF58: ; 0x0206DF58
cmp r0, #0x0
ble _0206DF6E
bl FUN_020222AC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
_0206DF6E:
bl FUN_02013388
mov r0, #0x1
@@ -176,7 +176,7 @@ _0206DF6E:
thumb_func_start FUN_0206DF7C
FUN_0206DF7C: ; 0x0206DF7C
push {r4, lr}
- ldr r3, _0206DF94 ; =UNK_021064B8
+ ldr r3, _0206DF94 ; =NNS_GfdDefaultFuncAllocTexVram
mov r2, #0x0
ldr r3, [r3, #0x0]
blx r3
@@ -186,12 +186,12 @@ FUN_0206DF7C: ; 0x0206DF7C
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_0206DF94: .word UNK_021064B8
+_0206DF94: .word NNS_GfdDefaultFuncAllocTexVram
thumb_func_start FUN_0206DF98
FUN_0206DF98: ; 0x0206DF98
push {r4, lr}
- ldr r3, _0206DFB0 ; =UNK_021064C0
+ ldr r3, _0206DFB0 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r2, #0x0
ldr r3, [r3, #0x0]
blx r3
@@ -201,7 +201,7 @@ FUN_0206DF98: ; 0x0206DF98
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_0206DFB0: .word UNK_021064C0
+_0206DFB0: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_0206DFB4
FUN_0206DFB4: ; 0x0206DFB4
@@ -313,7 +313,7 @@ FUN_0206E07C: ; 0x0206E07C
bl AllocFromHeap
add r4, r0, #0x0
bne _0206E090
- bl ErrorHandling
+ bl GF_AssertFail
_0206E090:
ldr r0, [r5, #0x0]
ldr r2, [r5, #0x4]
diff --git a/arm9/asm/unk_0206E0F0.s b/arm9/asm/unk_0206E0F0.s
index 533ddc30..d00119f8 100644
--- a/arm9/asm/unk_0206E0F0.s
+++ b/arm9/asm/unk_0206E0F0.s
@@ -33,7 +33,7 @@ FUN_0206E0F0: ; 0x0206E0F0
add r4, r0, #0x0
cmp r4, #0x17
blo _0206E0FC
- bl ErrorHandling
+ bl GF_AssertFail
_0206E0FC:
ldr r0, _0206E104 ; =UNK_020F83E0
lsl r1, r4, #0x2
@@ -63,7 +63,7 @@ FUN_0206E114: ; 0x0206E114
add r4, r0, #0x0
cmp r4, #0x17
blo _0206E120
- bl ErrorHandling
+ bl GF_AssertFail
_0206E120:
ldr r0, _0206E128 ; =UNK_020F843C
ldrb r0, [r0, r4]
@@ -255,7 +255,7 @@ FUN_0206E278: ; 0x0206E278
add r4, r0, #0x0
cmp r4, #0x3
blo _0206E284
- bl ErrorHandling
+ bl GF_AssertFail
_0206E284:
ldr r0, _0206E28C ; =UNK_020F83D4
lsl r1, r4, #0x2
@@ -270,7 +270,7 @@ FUN_0206E290: ; 0x0206E290
add r4, r0, #0x0
cmp r4, #0x3
blo _0206E29C
- bl ErrorHandling
+ bl GF_AssertFail
_0206E29C:
ldr r0, _0206E2A4 ; =UNK_020F83D0
ldrb r0, [r0, r4]
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index b7b79b0e..17adb2d2 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -781,7 +781,7 @@ _0206F914:
bl FUN_02001C5C
ldr r0, _0206F978 ; =0x000006F8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0x0
mov r1, #0x1d
mov r2, #0x1
@@ -1237,7 +1237,7 @@ FUN_0206FCD4: ; 0x0206FCD4
bl FUN_020178A0
mov r0, #0xc
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.balign 4
@@ -1256,7 +1256,7 @@ FUN_0206FD24: ; 0x0206FD24
mov r0, #0x14
mov r1, #0xf
mov r3, #0x3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -1267,14 +1267,14 @@ FUN_0206FD24: ; 0x0206FD24
mov r0, #0x14
mov r1, #0x11
mov r3, #0x3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x14 ; NARC_GRAPHIC_PLIST_GRA
mov r1, #0x10
mov r2, #0xc
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x10
add r4, r0, #0x0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r2, [sp, #0x10]
mov r0, #0x3
ldr r1, [r2, #0xc]
@@ -1293,7 +1293,7 @@ FUN_0206FD24: ; 0x0206FD24
bl memcpy
mov r0, #0xc
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r1, #0x1a
mov r0, #0x0
lsl r1, r1, #0x4
@@ -1331,7 +1331,7 @@ FUN_0206FD24: ; 0x0206FD24
mov r0, #0x14
mov r1, #0x3
mov r3, #0x4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0x20
mov r1, #0x4
str r3, [sp, #0x0]
@@ -1339,7 +1339,7 @@ FUN_0206FD24: ; 0x0206FD24
str r0, [sp, #0x4]
mov r0, #0x14
add r2, r1, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -1349,7 +1349,7 @@ FUN_0206FD24: ; 0x0206FD24
ldr r2, [r5, #0x0]
mov r0, #0x14
mov r3, #0x5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -1360,7 +1360,7 @@ FUN_0206FD24: ; 0x0206FD24
mov r0, #0x14
mov r1, #0xe
mov r3, #0x5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp, #0x0]
mov r0, #0xc
@@ -1369,7 +1369,7 @@ FUN_0206FD24: ; 0x0206FD24
mov r1, #0xd
mov r2, #0x4
mov r3, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r2, #0x99
lsl r2, r2, #0x2
mov r3, #0xf9
@@ -3729,7 +3729,7 @@ _02071146:
bl FUN_02072844
mov r0, #0xc
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r5, #0x0
bl FUN_0207295C
mov r1, #0x0
@@ -5223,7 +5223,7 @@ FUN_02071CB4: ; 0x02071CB4
lsl r1, r1, #0x4
add r0, r0, r1
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
add r1, r6, #0x0
bl FUN_02072B7C
@@ -5645,7 +5645,7 @@ _02072054:
bl FUN_0200D0BC
add r0, r5, r7
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
bl FUN_0207322C
add r0, r4, #0x0
@@ -5902,7 +5902,7 @@ _02072282:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
bl FUN_0207322C
mov r0, #0xb
@@ -6066,7 +6066,7 @@ _020723D6:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
bl FUN_0207322C
ldr r0, _02072410 ; =0x000005A4
@@ -6204,7 +6204,7 @@ FUN_020724D4: ; 0x020724D4
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0xc
str r0, [sp, #0x8]
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r0, [sp, #0xc]
mov r4, #0x0
str r0, [sp, #0x4]
diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s
index 5b3ed0a3..a08d279d 100644
--- a/arm9/asm/unk_02072548.s
+++ b/arm9/asm/unk_02072548.s
@@ -453,7 +453,7 @@ FUN_02072844: ; 0x02072844
bl FUN_02019064
ldr r0, [sp, #0x14]
mov r1, #0xc
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _0207294C ; =0x000006F8
mov r6, #0x0
str r0, [r5, r1]
@@ -473,7 +473,7 @@ _02072890:
ldr r1, _02072950 ; =0x000006E8
ldr r0, [r5, r0]
ldr r1, [r3, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r6, #0x1
lsl r0, r0, #0x10
lsr r6, r0, #0x10
@@ -488,7 +488,7 @@ _020728B4:
ldr r1, _02072954 ; =0x000006AC
ldr r0, [r5, r0]
ldr r1, [r3, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
_020728CC:
add r0, r4, #0x1
lsl r0, r0, #0x10
@@ -870,7 +870,7 @@ FUN_02072BBC: ; 0x02072BBC
add r0, r5, r4
mov r2, #0x4
add r3, r1, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r5, r4
bl FUN_02019220
add sp, #0x8
@@ -1000,7 +1000,7 @@ _02072CBE:
mov r1, #0xa
mov r2, #0x0
mov r3, #0x2
- bl FUN_020196F4
+ bl FillWindowPixelRect
str r5, [sp, #0x0]
mov r0, #0x2
str r0, [sp, #0x4]
@@ -1008,7 +1008,7 @@ _02072CBE:
mov r1, #0x9
mov r2, #0x0
mov r3, #0x3
- bl FUN_020196F4
+ bl FillWindowPixelRect
str r5, [sp, #0x0]
mov r0, #0x1
str r0, [sp, #0x4]
@@ -1016,7 +1016,7 @@ _02072CBE:
mov r1, #0xa
mov r2, #0x0
mov r3, #0x5
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r4, #0x0
bl FUN_02019220
add sp, #0xc
@@ -1042,14 +1042,14 @@ FUN_02072D1C: ; 0x02072D1C
str r0, [sp, #0x4]
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x1
lsl r0, r0, #0x4
add r7, r5, #0x4
str r0, [sp, #0x8]
add r0, r7, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r7, #0x0
str r0, [sp, #0xc]
add r0, r4, #0x2
@@ -1058,7 +1058,7 @@ FUN_02072D1C: ; 0x02072D1C
str r0, [sp, #0x10]
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r7, #0x0
str r0, [sp, #0x14]
add r0, r4, #0x3
@@ -1066,7 +1066,7 @@ FUN_02072D1C: ; 0x02072D1C
ldr r0, [sp, #0x14]
mov r1, #0x0
add r0, r0, r4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
add r1, r6, #0x0
bl FUN_02072A54
@@ -1179,13 +1179,13 @@ FUN_02072E4C: ; 0x02072E4C
lsl r0, r6, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0x1
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02072A54
@@ -1249,13 +1249,13 @@ FUN_02072EE4: ; 0x02072EE4
lsl r0, r6, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0x1
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02072A54
@@ -1319,13 +1319,13 @@ FUN_02072F78: ; 0x02072F78
lsl r0, r6, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0x1
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02072A54
@@ -1367,13 +1367,13 @@ FUN_02072FDC: ; 0x02072FDC
lsl r0, r6, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0x1
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02072A54
@@ -1463,12 +1463,12 @@ FUN_02073094: ; 0x02073094
add r4, r1, #0x0
add r0, r5, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x7d
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x1
tst r0, r4
beq _020730FE
@@ -1563,7 +1563,7 @@ FUN_02073160: ; 0x02073160
_0207317A:
add r0, r4, #0x0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x0
mvn r0, r0
cmp r6, r0
@@ -1634,7 +1634,7 @@ FUN_020731E8: ; 0x020731E8
_02073202:
add r0, r5, r6
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x0
mvn r0, r0
cmp r4, r0
@@ -1717,7 +1717,7 @@ _020732A6:
b _020732BE
_020732AE:
ldr r0, _020732C8 ; =0x00000483
- bl PlayBGM
+ bl PlaySound
b _020732BE
_020732B6:
ldr r0, _020732C4 ; =0x000005E6
@@ -1763,7 +1763,7 @@ FUN_020732F4: ; 0x020732F4
add r0, r4, r6
mov r1, #0x0
add r7, r2, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r7, #0x0
beq _02073318
cmp r7, #0x1
@@ -1817,7 +1817,7 @@ FUN_02073364: ; 0x02073364
add r0, r4, r7
mov r1, #0x0
add r6, r2, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r6, #0x0
beq _0207338C
cmp r6, #0x1
@@ -1880,7 +1880,7 @@ FUN_020733E4: ; 0x020733E4
add r0, r4, r6
mov r1, #0x0
add r7, r2, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r7, #0x0
ldr r0, _02073440 ; =0x0000069C
bne _0207340E
@@ -1928,7 +1928,7 @@ FUN_02073448: ; 0x02073448
add r0, r4, r7
mov r1, #0x0
add r6, r2, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r6, #0x6
ldr r0, _020734B8 ; =0x0000069C
bhs _02073476
@@ -2046,7 +2046,7 @@ FUN_020734C0: ; 0x020734C0
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r4, #0x0
str r4, [sp, #0x14]
add r7, r5, #0x0
@@ -2158,7 +2158,7 @@ FUN_0207363C: ; 0x0207363C
mov r1, #0xf
mov r2, #0x50
mov r3, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _020736E8 ; =0x0000069C
mov r1, #0xc0
ldr r0, [r5, r0]
diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s
index 6635b399..9cac1662 100644
--- a/arm9/asm/unk_02073DA8.s
+++ b/arm9/asm/unk_02073DA8.s
@@ -46,7 +46,7 @@ FUN_02073DB4: ; 0x02073DB4
bl FUN_02001C5C
ldr r0, _02073DF0 ; =0x000006F8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r4, r0
@@ -69,7 +69,7 @@ FUN_02073DF4: ; 0x02073DF4
bl FUN_020731D4
mov r0, #0x3
mov r1, #0xc
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02073EB0 ; =0x000006F8
str r0, [r5, r1]
mov r0, #0x3
@@ -79,7 +79,7 @@ FUN_02073DF4: ; 0x02073DF4
ldr r0, [r5, r1]
sub r1, #0x40
ldr r1, [r5, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
mov r0, #0x4
bl FUN_02073DA8
ldr r1, _02073EB0 ; =0x000006F8
@@ -87,7 +87,7 @@ FUN_02073DF4: ; 0x02073DF4
ldr r0, [r5, r1]
sub r1, #0x3c
ldr r1, [r5, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
mov r0, #0x9
bl FUN_02073DA8
ldr r1, _02073EB0 ; =0x000006F8
@@ -95,7 +95,7 @@ FUN_02073DF4: ; 0x02073DF4
ldr r0, [r5, r1]
sub r1, #0x28
ldr r1, [r5, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
ldr r0, _02073EB0 ; =0x000006F8
mov r1, #0x0
ldr r0, [r5, r0]
@@ -155,7 +155,7 @@ FUN_02073EB8: ; 0x02073EB8
bl FUN_02001C5C
ldr r0, _02073EE4 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02073EE8 ; =0x000005A4
mov r1, #0x3
ldr r0, [r5, r0]
@@ -186,7 +186,7 @@ FUN_02073EEC: ; 0x02073EEC
bl FUN_02001C5C
ldr r0, _02074048 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _0207404C ; =0x00000B25
ldrb r1, [r5, r0]
mov r0, #0x2c
@@ -316,7 +316,7 @@ _02074018:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
bl FUN_0207322C
mov r0, #0xf
@@ -381,7 +381,7 @@ FUN_020740AC: ; 0x020740AC
bl FUN_020731D4
mov r0, #0x3
mov r1, #0xc
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02074168 ; =0x000006F8
str r0, [r5, r1]
mov r0, #0x6
@@ -391,7 +391,7 @@ FUN_020740AC: ; 0x020740AC
ldr r0, [r5, r1]
sub r1, #0x34
ldr r1, [r5, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
mov r0, #0x7
bl FUN_02073DA8
ldr r1, _02074168 ; =0x000006F8
@@ -399,7 +399,7 @@ FUN_020740AC: ; 0x020740AC
ldr r0, [r5, r1]
sub r1, #0x30
ldr r1, [r5, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
mov r0, #0x9
bl FUN_02073DA8
ldr r1, _02074168 ; =0x000006F8
@@ -407,7 +407,7 @@ FUN_020740AC: ; 0x020740AC
ldr r0, [r5, r1]
sub r1, #0x28
ldr r1, [r5, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
ldr r0, _02074168 ; =0x000006F8
mov r1, #0x0
ldr r0, [r5, r0]
@@ -467,7 +467,7 @@ FUN_02074170: ; 0x02074170
bl FUN_02001C5C
ldr r0, _0207419C ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _020741A0 ; =0x000005A4
mov r1, #0x7
ldr r0, [r5, r0]
@@ -497,7 +497,7 @@ FUN_020741A4: ; 0x020741A4
bl FUN_02001C5C
ldr r0, _020741F0 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0x0
mov r1, #0x2b
mov r2, #0x1
@@ -744,7 +744,7 @@ FUN_020743AC: ; 0x020743AC
bl FUN_02001C5C
ldr r0, _02074414 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02074418 ; =0x000005A4
mov r1, #0x0
ldr r0, [r5, r0]
@@ -1672,7 +1672,7 @@ _02074B6A:
add r1, r7, #0x0
str r0, [r3, #0x0]
mov r0, #0xc
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r1, #0x3
lsl r1, r1, #0x8
ldrb r3, [r4, r1]
@@ -2324,7 +2324,7 @@ FUN_02075090: ; 0x02075090
bl FUN_02001C5C
ldr r0, _020750C0 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x1b
str r0, [r4, #0x0]
pop {r3-r5, pc}
@@ -2349,7 +2349,7 @@ FUN_020750C4: ; 0x020750C4
bl FUN_02001C5C
ldr r0, _020750F4 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x1b
str r0, [r4, #0x0]
pop {r3-r5, pc}
@@ -2482,7 +2482,7 @@ _020751E4:
bl FUN_02001C5C
ldr r0, _0207523C ; =0x000006F8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x1b
str r0, [r6, #0x0]
pop {r4-r6, pc}
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 14488621..9e2ab9b0 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -1403,7 +1403,7 @@ _020760D4:
lsl r1, r1, #0x4
add r0, r0, r1
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, _02076134 ; =0x00000B25
add r0, r5, #0x0
ldrb r1, [r5, r1]
@@ -1672,7 +1672,7 @@ _020762DC:
lsl r1, r1, #0x4
add r0, r0, r1
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, _020763E0 ; =0x00000B25
add r0, r4, #0x0
ldrb r1, [r4, r1]
@@ -3174,7 +3174,7 @@ FUN_02076FB0: ; 0x02076FB0
mov r2, #0x2
ldr r1, [r5, r1]
mvn r2, r2
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
mov r0, #0x0
pop {r3-r7, pc}
_0207701C:
@@ -3182,7 +3182,7 @@ _0207701C:
sub r1, #0x50
ldr r1, [r5, r1]
add r2, r6, #0x0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
@@ -3209,7 +3209,7 @@ _02077050:
_02077058:
mov r0, #0x4
mov r1, #0xc
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02077108 ; =0x000006F8
str r0, [r4, r1]
add r0, r4, #0x0
@@ -3328,7 +3328,7 @@ _02077130:
bl FUN_02001C5C
ldr r0, _02077230 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0x0
mov r1, #0x20
mov r2, #0x1
@@ -3353,7 +3353,7 @@ _0207716A:
bl FUN_02001C5C
ldr r0, _02077230 ; =0x000006F8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02077234 ; =0x000005A4
ldr r6, [r5, r0]
add r0, r5, #0x0
diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s
index a5d7b26d..87e9cab0 100644
--- a/arm9/asm/unk_020772F0.s
+++ b/arm9/asm/unk_020772F0.s
@@ -1013,7 +1013,7 @@ _02077594:
ldr r0, _020776B0 ; =0x00000448
mov r1, #0xf
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _020776B0 ; =0x00000448
mov r2, #0x1
add r0, r4, r0
@@ -1509,18 +1509,18 @@ _02077982:
ldr r1, _02077A70 ; =0x000004AC
mov r0, #0x12
ldr r1, [r4, r1]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [r4, #0x0]
cmp r0, #0x1
bne _020779C2
ldr r1, _02077A74 ; =0x000004B4
mov r0, #0x12
ldr r1, [r4, r1]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r1, _02077A78 ; =0x000004BC
mov r0, #0x12
ldr r1, [r4, r1]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_020779C2:
mov r0, #0x16
lsl r0, r0, #0x4
@@ -1639,11 +1639,11 @@ FUN_02077AC4: ; 0x02077AC4
ldr r0, [r4, #0x18]
cmp r0, #0x0
bne _02077AD2
- bl ErrorHandling
+ bl GF_AssertFail
_02077AD2:
cmp r4, #0x0
bne _02077ADA
- bl ErrorHandling
+ bl GF_AssertFail
_02077ADA:
ldr r0, [r4, #0x18]
bl String_dtor
@@ -2250,7 +2250,7 @@ _02077FB0:
bl FUN_020178A0
mov r0, #0x12
add r1, r6, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4-r6, pc}
thumb_func_start FUN_02077FE8
@@ -2269,7 +2269,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r0, #0x1f
add r2, r1, #0x0
add r3, r1, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp, #0x0]
mov r0, #0x12
@@ -2278,7 +2278,7 @@ FUN_02077FE8: ; 0x02077FE8
add r1, r0, #0x0
mov r2, #0x4
mov r3, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x4
mov r1, #0x0
bl FUN_02017FE4
@@ -2295,7 +2295,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r0, #0x1f
add r2, r4, #0x0
add r3, r1, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x6
@@ -2309,7 +2309,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r1, #0x4
add r2, r4, #0x0
mov r3, #0x2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x2
@@ -2322,7 +2322,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r0, #0x1f
mov r1, #0x2
add r2, r4, #0x0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0xe
@@ -2335,7 +2335,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r0, #0x1f
mov r1, #0x6
add r2, r4, #0x0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0x0
mov r0, #0xe
str r3, [sp, #0x0]
@@ -2348,7 +2348,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r0, #0x1f
mov r1, #0x7
add r2, r4, #0x0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0x6
mov r0, #0x0
lsl r1, r1, #0x6
@@ -2382,7 +2382,7 @@ FUN_02077FE8: ; 0x02077FE8
mov r1, #0x10
mov r2, #0x1
add r3, r5, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
ldr r1, _0207810C ; =0x000004AC
str r0, [r5, r1]
add sp, #0x10
@@ -2418,7 +2418,7 @@ FUN_02078140: ; 0x02078140
push {r4-r7, lr}
sub sp, #0x14
add r5, r0, #0x0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0x0
str r0, [sp, #0x0]
mov r1, #0x80
@@ -2533,7 +2533,7 @@ _0207818C:
mov r0, #0x13
mov r2, #0x0
add r3, r5, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
ldr r1, _02078320 ; =0x000004B4
str r0, [r5, r1]
add r0, r1, #0x4
@@ -2547,7 +2547,7 @@ _0207818C:
lsl r2, r0, #0x6
add r2, r5, r2
mov r3, #0x12
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
ldr r1, _02078324 ; =0x000004BC
str r0, [r5, r1]
add r0, r1, #0x4
@@ -3131,7 +3131,7 @@ _020786F0:
mov r0, #0x1f
add r1, r7, #0x6
add r3, r6, #0x0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0x0
add r1, r6, #0x0
bl FUN_02078BA8
@@ -3359,7 +3359,7 @@ FUN_020788C4: ; 0x020788C4
_020788DE:
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0x0
str r1, [sp, #0x0]
ldr r0, _02078908 ; =0x000E0F01
@@ -3435,7 +3435,7 @@ FUN_0207890C: ; 0x0207890C
ldr r2, [r5, r2]
mov r0, #0x1f
mov r1, #0x9
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x46
mov r1, #0x4
lsl r0, r0, #0x4
@@ -3524,7 +3524,7 @@ _020789D8:
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x3
str r0, [sp, #0x0]
mov r0, #0x7
@@ -3548,7 +3548,7 @@ _020789D8:
ldr r0, _02078B74 ; =0x00000438
mov r1, #0x1
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r5, #0x0]
cmp r1, #0x5
bne _02078A90
@@ -3581,7 +3581,7 @@ _02078A90:
ldr r0, _02078B78 ; =0x00000448
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0x5e
ldr r0, _02078B78 ; =0x00000448
lsl r2, r2, #0x2
@@ -3640,7 +3640,7 @@ _02078B0E:
bl FUN_02019064
add r0, r7, r6
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, r4, #0x1
cmp r4, #0x3
blt _02078B0E
@@ -3661,7 +3661,7 @@ _02078B0E:
ldr r0, _02078B84 ; =0x00000428
mov r1, #0x0
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x14
pop {r4-r7, pc}
.balign 4
@@ -4119,7 +4119,7 @@ _02078EB4:
mov r2, #0x0
ldr r0, [sp, #0x18]
add r3, r2, #0x0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
b _02078F56
_02078F00:
ldr r0, _02078F78 ; =0x0000D004
@@ -4212,7 +4212,7 @@ FUN_02078FA0: ; 0x02078FA0
mov r1, #0x0
add r5, r2, #0x0
add r4, r3, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0x0
ldr r3, _0207906C ; =0x000D0E0F
add r0, #0x30
@@ -4266,7 +4266,7 @@ _02079012:
strh r1, [r0, #0x2]
add r0, r6, r7
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
add r1, sp, #0xc
bl CopyU16ArrayToString
@@ -4563,7 +4563,7 @@ _0207924A:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xc
str r0, [sp, #0x0]
mov r2, #0x0
@@ -4599,7 +4599,7 @@ _0207927C:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xc
str r0, [sp, #0x0]
mov r2, #0x0
@@ -4632,7 +4632,7 @@ _020792CA:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xc
str r0, [sp, #0x0]
mov r2, #0x0
@@ -4708,7 +4708,7 @@ _0207936A:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x56
lsl r0, r0, #0x2
ldrh r0, [r4, r0]
@@ -4835,7 +4835,7 @@ _02079470:
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x1
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xc
str r0, [sp, #0x0]
mov r2, #0x0
@@ -5203,7 +5203,7 @@ FUN_0207974C: ; 0x0207974C
add r5, r0, #0x0
str r3, [sp, #0x14]
str r2, [sp, #0x30]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, _0207982C ; =UNK_020F9D30
ldr r0, [sp, #0x10]
mov r7, #0x0
@@ -5219,7 +5219,7 @@ _0207976C:
add r1, r4, #0x0
lsr r2, r2, #0x10
mov r3, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #0x10
str r0, [sp, #0x0]
mov r0, #0x13
@@ -5229,7 +5229,7 @@ _0207976C:
add r1, r4, #0x0
lsr r2, r2, #0x10
mov r3, #0x26
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #0x10
str r0, [sp, #0x0]
mov r0, #0x13
@@ -5239,7 +5239,7 @@ _0207976C:
add r1, r4, #0x0
lsr r2, r2, #0x10
mov r3, #0x4c
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r7, r7, #0x1
add r6, #0x20
cmp r7, #0x6
@@ -5256,7 +5256,7 @@ _020797BA:
add r1, r4, #0x0
lsr r2, r2, #0x10
mov r3, #0x13
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #0x10
str r0, [sp, #0x0]
mov r0, #0x13
@@ -5266,7 +5266,7 @@ _020797BA:
add r1, r4, #0x0
lsr r2, r2, #0x10
mov r3, #0x39
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r7, r7, #0x1
add r6, #0x20
cmp r7, #0x7
diff --git a/arm9/asm/unk_020799E8.s b/arm9/asm/unk_020799E8.s
index 7f35d1a7..9227ca82 100644
--- a/arm9/asm/unk_020799E8.s
+++ b/arm9/asm/unk_020799E8.s
@@ -264,7 +264,7 @@ FUN_02079B60: ; 0x02079B60
_02079B9A:
add r0, r7, #0x0
add r1, sp, #0x10
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
cmp r4, #0x0
bne _02079BAE
ldr r0, [sp, #0x10]
@@ -286,7 +286,7 @@ _02079BAE:
_02079BC6:
add r0, r7, #0x0
add r1, sp, #0xc
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
cmp r4, #0x0
bne _02079BDA
ldr r0, [sp, #0xc]
@@ -322,7 +322,7 @@ _02079BF8:
_02079C10:
add r0, r7, #0x0
add r1, sp, #0x8
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r4, #0x0
bne _02079C24
ldr r0, [sp, #0x8]
@@ -363,6 +363,6 @@ FUN_02079C40: ; 0x02079C40
bl NARC_ReadWholeMember
add r0, r4, #0x0
add r1, r7, #0x0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
add r0, r4, #0x0
pop {r3-r7, pc}
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index 722c8144..3134a96c 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -533,7 +533,7 @@ FUN_0207A08C: ; 0x0207A08C
bl FUN_020178A0
mov r0, #0x13
add r1, r4, #0x0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.balign 4
@@ -551,7 +551,7 @@ FUN_0207A0CC: ; 0x0207A0CC
ldr r2, [r4, #0x0]
mov r0, #0x27
mov r3, #0x3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -562,7 +562,7 @@ FUN_0207A0CC: ; 0x0207A0CC
ldr r2, [r4, #0x0]
mov r0, #0x27
add r3, r1, #0x0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0x0
str r2, [sp, #0x0]
mov r0, #0x13
@@ -570,7 +570,7 @@ FUN_0207A0CC: ; 0x0207A0CC
mov r0, #0x27
mov r1, #0x1
add r3, r2, #0x0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -581,7 +581,7 @@ FUN_0207A0CC: ; 0x0207A0CC
mov r0, #0x27
mov r1, #0xb
mov r3, #0x2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -592,7 +592,7 @@ FUN_0207A0CC: ; 0x0207A0CC
mov r0, #0x27
mov r1, #0x2
mov r3, #0x4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -603,7 +603,7 @@ FUN_0207A0CC: ; 0x0207A0CC
mov r0, #0x27
mov r1, #0x10
mov r3, #0x5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -614,7 +614,7 @@ FUN_0207A0CC: ; 0x0207A0CC
mov r0, #0x27
mov r1, #0xf
mov r3, #0x5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0x0
str r3, [sp, #0x0]
mov r0, #0x13
@@ -622,7 +622,7 @@ FUN_0207A0CC: ; 0x0207A0CC
mov r0, #0x27
mov r1, #0xe
mov r2, #0x4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
@@ -2750,7 +2750,7 @@ _0207B256:
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0xc
add r4, r0, #0x0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
mov r3, #0x0
str r3, [sp, #0x0]
mov r0, #0x20
diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s
index 2546b905..5a814a79 100644
--- a/arm9/asm/unk_0207D5BC.s
+++ b/arm9/asm/unk_0207D5BC.s
@@ -82,7 +82,7 @@ _0207D5C4:
bl FUN_02019150
add r0, r4, r6
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
@@ -190,7 +190,7 @@ _0207D692:
mov r0, #0x13
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_02018FF4
+ bl AllocWindows
mov r1, #0x91
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -300,7 +300,7 @@ FUN_0207D768: ; 0x0207D768
lsl r4, r4, #0x2
add r0, r5, r4
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0x0
add r2, r4, #0x0
str r1, [sp, #0x0]
@@ -371,7 +371,7 @@ FUN_0207D800: ; 0x0207D800
lsl r6, r6, #0x2
add r0, r5, r6
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0x0
add r0, #0x8c
ldr r0, [r5, r0]
@@ -444,7 +444,7 @@ FUN_0207D8A0: ; 0x0207D8A0
lsl r0, r0, #0x2
add r0, r5, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0207D918 ; =0x0000025E
ldrh r2, [r5, r0]
cmp r2, #0x0
@@ -504,7 +504,7 @@ FUN_0207D924: ; 0x0207D924
add r4, r1, #0x0
add r0, r5, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x0
str r0, [sp, #0x0]
ldr r3, _0207D954 ; =0x000F0E00
@@ -581,7 +581,7 @@ _0207D9B4:
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r6, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r0, r0, r5
@@ -598,7 +598,7 @@ _0207D9D8:
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r6, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r1, r0, r5
@@ -1151,37 +1151,37 @@ FUN_0207DE3C: ; 0x0207DE3C
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0x93
lsl r1, r1, #0x2
ldr r0, [r4, r1]
@@ -1522,7 +1522,7 @@ FUN_0207E190: ; 0x0207E190
lsl r0, r0, #0x2
ldr r0, [r5, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
bl FUN_0207B628
add r6, r0, #0x0
@@ -1601,53 +1601,53 @@ FUN_0207E200: ; 0x0207E200
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x60
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x70
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_0201AB0C
+ bl GetWindowWidth
mov r1, #0x76
str r1, [sp, #0x0]
mov r1, #0x9d
@@ -1875,7 +1875,7 @@ _0207E4C6:
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _0207E584 ; =0x00000674
mov r1, #0xa5
ldr r0, [r4, r2]
@@ -1929,7 +1929,7 @@ _0207E4C6:
sub r0, #0x8
ldr r0, [r4, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _0207E584 ; =0x00000674
mov r1, #0xa3
ldr r0, [r4, r2]
@@ -1991,25 +1991,25 @@ _0207E5BC:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207EA44
@@ -2074,25 +2074,25 @@ _0207E678:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207EA44
@@ -2144,7 +2144,7 @@ FUN_0207E70C: ; 0x0207E70C
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x0
str r0, [sp, #0x0]
ldr r2, _0207E780 ; =0x00000699
@@ -2214,7 +2214,7 @@ _0207E7BC:
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _0207E830 ; =0x00000674
mov r1, #0xa5
ldr r0, [r4, r2]
@@ -2278,7 +2278,7 @@ FUN_0207E840: ; 0x0207E840
ldr r0, [r5, r0]
mov r1, #0x0
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0207E994 ; =0x00000674
mov r1, #0xba
ldr r0, [r5, r0]
@@ -2436,13 +2436,13 @@ FUN_0207E9A0: ; 0x0207E9A0
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0207EA34 ; =0x0000069A
mov r1, #0x3
ldrb r0, [r4, r0]
@@ -2659,19 +2659,19 @@ FUN_0207EB64: ; 0x0207EB64
ldr r0, [r5, r0]
mov r1, #0x0
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
mov r1, #0x0
add r0, #0x60
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
mov r1, #0x0
add r0, #0x70
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
mov r1, #0x2
bl GetWazaAttr
@@ -2819,7 +2819,7 @@ FUN_0207ECDC: ; 0x0207ECDC
ldr r0, [r4, r0]
mov r1, #0x0
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
mov r1, #0x4
bl FUN_0207EA44
@@ -2862,7 +2862,7 @@ FUN_0207ED30: ; 0x0207ED30
lsl r0, r0, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r1, [r4, r0]
@@ -2873,7 +2873,7 @@ FUN_0207ED30: ; 0x0207ED30
lsl r0, r0, #0x4
add r0, r1, r0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, _0207EDB0 ; =0x0000068D
add r0, r4, #0x0
ldrb r1, [r4, r1]
@@ -2946,7 +2946,7 @@ _0207EDEE:
_0207EDF6:
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _0207EE24 ; =0x00000674
mov r1, #0x9c
ldr r0, [r5, r2]
@@ -2977,7 +2977,7 @@ FUN_0207EE2C: ; 0x0207EE2C
add r4, r1, #0x0
add r0, #0x50
mov r1, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0x0
mov r1, #0xa
bl GetWazaAttr
@@ -3098,7 +3098,7 @@ _0207EF10:
bl FUN_0200D0BC
add r0, r6, #0x0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _0207EF64 ; =0x00000674
add r1, r5, #0x0
ldr r0, [r4, r2]
diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s
index 8fcaed0c..e4e29259 100644
--- a/arm9/asm/unk_0207EF6C.s
+++ b/arm9/asm/unk_0207EF6C.s
@@ -99,7 +99,7 @@ UNK_020FB6E6: ; 0x020FB6E6
FUN_0207EF6C: ; 0x0207EF6C
push {r3-r4, lr}
sub sp, #0x4
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_Init
bl G3X_InitMtxStack
ldr r0, _0207EFEC ; =0x04000060
@@ -183,16 +183,16 @@ FUN_0207F008: ; 0x0207F008
mov r0, #0x2
str r0, [r2, #0x0]
str r3, [r1, #0x0]
- bl FUN_020B849C
+ bl NNS_G3dGlbFlushP
mov r0, #0xb7
lsl r0, r0, #0x2
add r0, r4, r0
bl FUN_0207F108
- bl FUN_020B849C
+ bl NNS_G3dGlbFlushP
add r0, r4, #0x0
bl FUN_0207F1A4
_0207F046:
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
mov r0, #0xae
lsl r0, r0, #0x2
ldr r0, [r4, r0]
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 0f1630ed..3e0d058c 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -246,7 +246,7 @@ _02080DD4:
str r0, [r4, #0x4]
b _02080DF2
_02080DE2:
- bl ErrorHandling
+ bl GF_AssertFail
_02080DE6:
add r0, r4, #0x0
bl FreeToHeap
@@ -497,7 +497,7 @@ _02080FC0:
str r0, [r4, #0x4]
b _02080FDC
_02080FCE:
- bl ErrorHandling
+ bl GF_AssertFail
_02080FD2:
add r0, r4, #0x0
bl FreeToHeap
@@ -747,7 +747,7 @@ _02081196:
str r0, [r4, #0x4]
b _020811B4
_020811A4:
- bl ErrorHandling
+ bl GF_AssertFail
_020811A8:
add r0, r4, #0x0
bl FreeToHeap
@@ -916,7 +916,7 @@ _020812F2:
add r5, r4, #0x0
_02081304:
mov r0, #0x14
- bl FUN_02029EE4
+ bl Chatot_new
mov r1, #0x57
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -927,7 +927,7 @@ _02081304:
add r0, r1, #0x0
ldr r0, [r4, r0]
ldr r1, [r6, #0x20]
- bl FUN_02029F9C
+ bl Chatot_copy
ldr r0, [r6, #0x8]
ldr r1, [r4, #0x0]
bl CopyPokemonToPokemon
@@ -1259,7 +1259,7 @@ _020815A6:
add r6, r0, #0x0
b _020815BA
_020815B6:
- bl ErrorHandling
+ bl GF_AssertFail
_020815BA:
cmp r6, #0x0
beq _020815CA
@@ -1900,7 +1900,7 @@ _02081A7C:
strb r0, [r4, r2]
pop {r3-r7, pc}
_02081A8A:
- bl FUN_02029EC4
+ bl Sav2_Chatot_sizeof
add r2, r0, #0x0
mov r0, #0x57
lsl r0, r0, #0x2
@@ -2347,7 +2347,7 @@ _02081DEC:
bl FUN_0202DFA4
add r7, r0, #0x0
bne _02081DFA
- bl ErrorHandling
+ bl GF_AssertFail
_02081DFA:
add r0, r7, #0x0
bl PlayerProfile_GetGameClearFlag
@@ -2374,7 +2374,7 @@ _02081E1E:
bl FUN_0202DFA4
add r7, r0, #0x0
bne _02081E2C
- bl ErrorHandling
+ bl GF_AssertFail
_02081E2C:
add r0, r7, #0x0
bl PlayerProfile_GetNatDexFlag
@@ -2471,7 +2471,7 @@ FUN_02081ED4: ; 0x02081ED4
ldr r0, [r4, r0]
cmp r0, #0x0
beq _02081EE6
- bl ErrorHandling
+ bl GF_AssertFail
_02081EE6:
ldr r0, _02081F00 ; =0x00000176
mov r1, #0x0
@@ -3031,7 +3031,7 @@ _020822C8:
add r0, #0x31
b _020822D6
_020822D0:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r5, pc}
_020822D6:
lsl r0, r0, #0x18
@@ -3229,7 +3229,7 @@ _02082412:
_02082414:
cmp r4, #0x64
bne _0208241C
- bl ErrorHandling
+ bl GF_AssertFail
_0208241C:
ldr r0, _02082440 ; =0x0000198C
ldr r0, [r5, r0]
@@ -3258,7 +3258,7 @@ FUN_02082444: ; 0x02082444
ldr r0, [r5, r0]
cmp r0, #0x0
beq _02082456
- bl ErrorHandling
+ bl GF_AssertFail
_02082456:
mov r0, #0x4
mov r1, #0x10
diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s
index f63a493e..a64d7ab7 100644
--- a/arm9/asm/unk_020828BC.s
+++ b/arm9/asm/unk_020828BC.s
@@ -177,7 +177,7 @@ _0208292A:
mov r0, #0x5a
add r2, r1, #0x0
add r3, r5, #0x0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x14]
mov r0, #0x5a
mov r1, #0x0
@@ -311,7 +311,7 @@ _02082A26:
ldr r0, [sp, #0x8]
cmp r6, r0
bge _02082A30
- bl ErrorHandling
+ bl GF_AssertFail
_02082A30:
mov r0, #0x0
str r0, [sp, #0x10]
@@ -469,7 +469,7 @@ _02082B44:
_02082B4E:
cmp r6, #0x4
bhs _02082B56
- bl ErrorHandling
+ bl GF_AssertFail
_02082B56:
mov r6, #0x0
mov r7, #0x30
@@ -513,7 +513,7 @@ FUN_02082B90: ; 0x02082B90
mov r0, #0x5a
mov r1, #0x2
mov r2, #0x0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x14]
ldr r1, _02082D10 ; =0x00000121
ldr r0, [sp, #0x8]
@@ -633,7 +633,7 @@ _02082C66:
ldrb r2, [r0, #0x0]
b _02082C74
_02082C6E:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #0x0
_02082C74:
mov r0, #0x54
@@ -891,7 +891,7 @@ FUN_02082E64: ; 0x02082E64
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _02082E98
- bl ErrorHandling
+ bl GF_AssertFail
_02082E98:
add r1, sp, #0x14
ldrh r0, [r1, #0x0]
@@ -938,7 +938,7 @@ FUN_02082ED0: ; 0x02082ED0
add r2, r5, #0x0
add r4, r5, #0x0
str r1, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x14]
mov r0, #0x5a
mov r1, #0x1
@@ -1094,7 +1094,7 @@ _0208300A:
strb r1, [r0, r4]
cmp r5, #0x2
bhs _0208301A
- bl ErrorHandling
+ bl GF_AssertFail
_0208301A:
ldr r2, [sp, #0x4]
mov r3, #0x0
@@ -1126,7 +1126,7 @@ _0208301E:
blt _0208301E
cmp r4, #0x1
bhs _02083058
- bl ErrorHandling
+ bl GF_AssertFail
_02083058:
ldr r0, [sp, #0x4]
bl FUN_02082878
@@ -1224,7 +1224,7 @@ FUN_02083114: ; 0x02083114
add r4, r0, #0x0
cmp r4, #0x18
blo _02083120
- bl ErrorHandling
+ bl GF_AssertFail
_02083120:
mov r0, #0x1a
add r1, r4, #0x0
@@ -1243,7 +1243,7 @@ FUN_02083130: ; 0x02083130
add r6, r2, #0x0
cmp r5, #0x18
blo _02083140
- bl ErrorHandling
+ bl GF_AssertFail
_02083140:
mov r0, #0x1a
add r1, r5, #0x0
@@ -1265,7 +1265,7 @@ FUN_0208315C: ; 0x0208315C
add r4, r0, #0x0
cmp r4, #0x18
blo _02083168
- bl ErrorHandling
+ bl GF_AssertFail
_02083168:
add r4, #0x2d
add r0, r4, #0x0
@@ -1281,7 +1281,7 @@ FUN_02083170: ; 0x02083170
add r6, r3, #0x0
cmp r4, #0x18
blo _02083182
- bl ErrorHandling
+ bl GF_AssertFail
_02083182:
cmp r7, #0x4
bhi _0208319C
@@ -1702,7 +1702,7 @@ _02083448:
add r0, #0x8a
pop {r3, pc}
_0208344C:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x7a
pop {r3, pc}
diff --git a/arm9/asm/unk_020834D0.s b/arm9/asm/unk_020834D0.s
index e86c6f2d..88308c6e 100644
--- a/arm9/asm/unk_020834D0.s
+++ b/arm9/asm/unk_020834D0.s
@@ -43,7 +43,7 @@ FUN_020834E4: ; 0x020834E4
add r4, r1, #0x0
cmp r2, r0
blt _020834F6
- bl ErrorHandling
+ bl GF_AssertFail
_020834F6:
ldr r0, _02083500 ; =0x00000985
add r1, r4, r0
@@ -110,21 +110,21 @@ _0208354A:
add r4, r1, r0
b _0208355E
_02083558:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3-r7, pc}
_0208355E:
mov r0, #0x2
lsl r0, r0, #0x8
cmp r6, r0
ble _0208356A
- bl ErrorHandling
+ bl GF_AssertFail
_0208356A:
ldr r0, _0208359C ; =0x00000A11
add r7, r4, r0
ldrb r0, [r7, r5]
cmp r0, #0x0
beq _02083578
- bl ErrorHandling
+ bl GF_AssertFail
_02083578:
mov r1, #0x21
lsl r1, r1, #0x4
@@ -666,7 +666,7 @@ FUN_02083970: ; 0x02083970
lsl r0, r0, #0xa
cmp r1, r0
blt _0208398C
- bl ErrorHandling
+ bl GF_AssertFail
_0208398C:
mov r7, #0x0
ldr r4, [sp, #0x4]
@@ -709,7 +709,7 @@ FUN_020839C0: ; 0x020839C0
str r0, [sp, #0x0]
cmp r0, r1
blt _020839DE
- bl ErrorHandling
+ bl GF_AssertFail
_020839DE:
ldr r0, _02083A18 ; =0x00000585
mov r7, #0x0
@@ -830,7 +830,7 @@ FUN_02083AA8: ; 0x02083AA8
push {r3-r5, lr}
add r5, r2, #0x0
add r4, r3, #0x0
- bl FUN_02029EC4
+ bl Sav2_Chatot_sizeof
add r2, r0, #0x0
ldrb r1, [r5, r2]
add r0, r5, #0x0
@@ -854,7 +854,7 @@ FUN_02083AD4: ; 0x02083AD4
add r4, r0, #0x0
add r7, r1, #0x0
add r6, r2, #0x0
- bl FUN_02029EC4
+ bl Sav2_Chatot_sizeof
add r5, r0, #0x0
ldr r0, _02083B0C ; =0x00000585
add r4, r4, r0
diff --git a/arm9/asm/unk_02083D48.s b/arm9/asm/unk_02083D48.s
index 4a15e685..1974ae4b 100644
--- a/arm9/asm/unk_02083D48.s
+++ b/arm9/asm/unk_02083D48.s
@@ -472,7 +472,7 @@ FUN_02083FDC: ; 0x02083FDC
bl FUN_02031190
cmp r0, #0x0
beq _02083FEE
- bl ErrorHandling
+ bl GF_AssertFail
_02083FEE:
bl FUN_02031190
cmp r0, #0x0
diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s
index 2e98e9cf..a2f90e0a 100644
--- a/arm9/asm/unk_020859C0.s
+++ b/arm9/asm/unk_020859C0.s
@@ -586,7 +586,7 @@ FUN_02085D6C: ; 0x02085D6C
ldr r0, [r4, #0x0]
cmp r0, r1
bge _02085D7C
- bl ErrorHandling
+ bl GF_AssertFail
mov r1, #0x0
_02085D7C:
lsl r0, r1, #0x2
@@ -712,7 +712,7 @@ _02085E48:
beq _02085E5A
cmp r0, #0x1
beq _02085E60
- bl ErrorHandling
+ bl GF_AssertFail
_02085E5A:
mov r0, #0x5
str r0, [r6, #0x14]
@@ -874,7 +874,7 @@ FUN_02085FAC: ; 0x02085FAC
ldr r0, _02085FC8 ; =0x0000032A
cmp r4, r0
blo _02085FBA
- bl ErrorHandling
+ bl GF_AssertFail
_02085FBA:
mov r0, #0xa
add r1, r4, #0x0
@@ -893,7 +893,7 @@ FUN_02085FD0: ; 0x02085FD0
ldr r0, _02085FEC ; =0x0000032A
cmp r4, r0
blo _02085FDE
- bl ErrorHandling
+ bl GF_AssertFail
_02085FDE:
mov r0, #0xa
add r1, r4, #0x0
@@ -912,7 +912,7 @@ FUN_02085FF4: ; 0x02085FF4
ldr r0, _02086010 ; =0x0000032A
cmp r4, r0
blo _02086002
- bl ErrorHandling
+ bl GF_AssertFail
_02086002:
mov r0, #0xa
add r1, r4, #0x0
@@ -931,7 +931,7 @@ FUN_02086018: ; 0x02086018
ldr r0, _02086034 ; =0x0000032A
cmp r4, r0
blo _02086026
- bl ErrorHandling
+ bl GF_AssertFail
_02086026:
mov r0, #0xa
add r1, r4, #0x0
@@ -950,7 +950,7 @@ FUN_0208603C: ; 0x0208603C
ldr r0, _02086058 ; =0x0000032A
cmp r4, r0
blo _0208604A
- bl ErrorHandling
+ bl GF_AssertFail
_0208604A:
mov r0, #0xa
add r1, r4, #0x0
@@ -969,7 +969,7 @@ FUN_02086060: ; 0x02086060
ldr r0, _0208607C ; =0x0000032A
cmp r4, r0
blo _0208606E
- bl ErrorHandling
+ bl GF_AssertFail
_0208606E:
mov r0, #0xa
add r1, r4, #0x0
diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s
index 7e7745fe..54ce0190 100644
--- a/arm9/asm/unk_02086414.s
+++ b/arm9/asm/unk_02086414.s
@@ -1,8 +1,8 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021064B8
- .extern UNK_021064C0
+ .extern NNS_GfdDefaultFuncAllocTexVram
+ .extern NNS_GfdDefaultFuncAllocPlttVram
.section .rodata
@@ -217,14 +217,14 @@ _02086508: .word 0x04000580
thumb_func_start FUN_0208650C
FUN_0208650C: ; 0x0208650C
push {r3-r5, lr}
- ldr r3, _02086544 ; =UNK_021064B8
+ ldr r3, _02086544 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #0x2
mov r1, #0x0
ldr r3, [r3, #0x0]
lsl r0, r0, #0xe
add r2, r1, #0x0
blx r3
- ldr r3, _02086548 ; =UNK_021064C0
+ ldr r3, _02086548 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0x0
add r4, r0, #0x0
ldr r3, [r3, #0x0]
@@ -234,17 +234,17 @@ FUN_0208650C: ; 0x0208650C
add r5, r0, #0x0
cmp r4, #0x0
bne _02086534
- bl ErrorHandling
+ bl GF_AssertFail
_02086534:
cmp r5, #0x0
bne _0208653C
- bl ErrorHandling
+ bl GF_AssertFail
_0208653C:
bl FUN_02012CC8
pop {r3-r5, pc}
nop
-_02086544: .word UNK_021064B8
-_02086548: .word UNK_021064C0
+_02086544: .word NNS_GfdDefaultFuncAllocTexVram
+_02086548: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_0208654C
FUN_0208654C: ; 0x0208654C
@@ -400,7 +400,7 @@ FUN_02086698: ; 0x02086698
cmp r0, #0x0
ble _020866AE
bl FUN_020222AC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
_020866AE:
bl FUN_02013388
mov r0, #0x1
@@ -517,7 +517,7 @@ FUN_02086784: ; 0x02086784
add r0, r5, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [sp, #0x28]
lsl r2, r4, #0x18
lsl r0, r0, #0x18
@@ -552,7 +552,7 @@ FUN_02086784: ; 0x02086784
bl FUN_0200D0BC
add r0, r5, #0x0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0x0
bl CopyWindowToVram
add sp, #0x14
@@ -567,7 +567,7 @@ FUN_020867EC: ; 0x020867EC
str r0, [sp, #0xc]
str r2, [sp, #0x10]
add r6, r3, #0x0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _02086874 ; =0x0000013F
mov r0, #0x0
mov r1, #0x1a
@@ -627,7 +627,7 @@ FUN_02086878: ; 0x02086878
add r6, r1, #0x0
str r2, [sp, #0x14]
add r4, r3, #0x0
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [sp, #0x3c]
ldr r3, [sp, #0x38]
lsl r0, r0, #0x18
@@ -658,7 +658,7 @@ FUN_02086878: ; 0x02086878
bl FUN_02019064
mov r0, #0x2
mov r1, #0x47
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x44]
ldr r2, _0208695C ; =0x0000013F
mov r0, #0x0
@@ -675,7 +675,7 @@ _020868DE:
ldr r0, [r5, #0x44]
add r1, r6, #0x0
add r2, r4, #0x0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r6, #0x0
bl String_dtor
add r4, r4, #0x1
@@ -744,7 +744,7 @@ FUN_02086960: ; 0x02086960
mov r1, #0x0
bl FUN_02001C5C
ldr r0, [r4, #0x44]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
pop {r4, pc}
thumb_func_start FUN_0208698C
@@ -772,7 +772,7 @@ FUN_0208699C: ; 0x0208699C
mov r0, #0x76
add r2, r5, #0x0
mov r3, #0x3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -783,7 +783,7 @@ FUN_0208699C: ; 0x0208699C
mov r0, #0x76
add r2, r5, #0x0
mov r3, #0x3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0x0
str r1, [sp, #0x0]
mov r0, #0x40
@@ -815,7 +815,7 @@ FUN_020869F0: ; 0x020869F0
mov r1, #0xa
add r2, r5, #0x0
mov r3, #0x4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -827,7 +827,7 @@ FUN_020869F0: ; 0x020869F0
mov r1, #0xb
add r2, r5, #0x0
mov r3, #0x4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x1
str r0, [sp, #0x0]
mov r0, #0x20
@@ -845,7 +845,7 @@ FUN_020869F0: ; 0x020869F0
thumb_func_start FUN_02086A48
FUN_02086A48: ; 0x02086A48
push {r4, lr}
- ldr r3, _02086A60 ; =UNK_021064B8
+ ldr r3, _02086A60 ; =NNS_GfdDefaultFuncAllocTexVram
mov r2, #0x0
ldr r3, [r3, #0x0]
blx r3
@@ -855,12 +855,12 @@ FUN_02086A48: ; 0x02086A48
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02086A60: .word UNK_021064B8
+_02086A60: .word NNS_GfdDefaultFuncAllocTexVram
thumb_func_start FUN_02086A64
FUN_02086A64: ; 0x02086A64
push {r4, lr}
- ldr r3, _02086A7C ; =UNK_021064C0
+ ldr r3, _02086A7C ; =NNS_GfdDefaultFuncAllocPlttVram
mov r2, #0x0
ldr r3, [r3, #0x0]
blx r3
@@ -870,7 +870,7 @@ FUN_02086A64: ; 0x02086A64
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02086A7C: .word UNK_021064C0
+_02086A7C: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start FUN_02086A80
FUN_02086A80: ; 0x02086A80
@@ -978,7 +978,7 @@ FUN_02086B40: ; 0x02086B40
bl AllocFromHeap
add r4, r0, #0x0
bne _02086B54
- bl ErrorHandling
+ bl GF_AssertFail
_02086B54:
ldr r0, [r5, #0x0]
ldr r2, [r5, #0x4]
@@ -1403,7 +1403,7 @@ FUN_02086E48: ; 0x02086E48
bl FUN_0200BBF0
cmp r0, #0x0
bne _02086EB2
- bl ErrorHandling
+ bl GF_AssertFail
_02086EB2:
ldr r0, [r4, #0x4c]
ldr r1, [r4, #0x48]
@@ -1411,7 +1411,7 @@ _02086EB2:
bl FUN_0200BF60
cmp r0, #0x0
bne _02086EC4
- bl ErrorHandling
+ bl GF_AssertFail
_02086EC4:
add sp, #0x4c
pop {r3-r6, pc}
diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s
index 2ccd040d..5e0a8dfa 100644
--- a/arm9/asm/unk_02086FA8.s
+++ b/arm9/asm/unk_02086FA8.s
@@ -185,7 +185,7 @@ _0208710E:
cmp r0, #0x0
bne _0208712A
ldr r0, _02087244 ; =0x00000484
- bl PlayBGM
+ bl PlaySound
ldr r0, [r4, #0x5c]
add r0, r0, #0x1
str r0, [r4, #0x5c]
@@ -463,14 +463,14 @@ _02087322:
str r0, [r4, #0x5c]
b _02087486
_0208735C:
- bl ErrorHandling
+ bl GF_AssertFail
b _02087486
_02087362:
bl FUN_02005670
cmp r0, #0x0
bne _0208737E
ldr r0, _02087498 ; =0x00000484
- bl PlayBGM
+ bl PlaySound
ldr r0, [r4, #0x5c]
add r0, r0, #0x1
str r0, [r4, #0x5c]
diff --git a/arm9/asm/unk_02087A6C.s b/arm9/asm/unk_02087A6C.s
index b343ac2c..1ab7b908 100644
--- a/arm9/asm/unk_02087A6C.s
+++ b/arm9/asm/unk_02087A6C.s
@@ -29,7 +29,7 @@ FUN_02087A84: ; 0x02087A84
push {r4, lr}
add r4, r0, #0x0
bne _02087A8E
- bl ErrorHandling
+ bl GF_AssertFail
_02087A8E:
add r0, r4, #0x0
bl FreeToHeap
@@ -44,17 +44,17 @@ FUN_02087A98: ; 0x02087A98
add r4, r2, #0x0
cmp r5, #0x0
bne _02087AA8
- bl ErrorHandling
+ bl GF_AssertFail
_02087AA8:
ldr r0, [r5, #0x0]
cmp r0, #0x0
beq _02087AB2
- bl ErrorHandling
+ bl GF_AssertFail
_02087AB2:
ldr r0, [r5, #0x4]
cmp r0, #0x0
beq _02087ABC
- bl ErrorHandling
+ bl GF_AssertFail
_02087ABC:
add r0, r4, #0x0
bl FUN_02087C18
@@ -99,12 +99,12 @@ FUN_02087B0C: ; 0x02087B0C
ldr r0, [r4, #0x0]
cmp r0, #0x0
bne _02087B1A
- bl ErrorHandling
+ bl GF_AssertFail
_02087B1A:
ldr r0, [r4, #0x4]
cmp r0, #0x0
bne _02087B24
- bl ErrorHandling
+ bl GF_AssertFail
_02087B24:
ldr r0, [r4, #0x0]
bl FreeToHeap
@@ -134,12 +134,12 @@ FUN_02087B58: ; 0x02087B58
add r4, r1, #0x0
cmp r5, #0x0
bne _02087B66
- bl ErrorHandling
+ bl GF_AssertFail
_02087B66:
ldr r0, [r5, #0x0]
cmp r0, #0x0
bne _02087B70
- bl ErrorHandling
+ bl GF_AssertFail
_02087B70:
ldr r1, [r5, #0x0]
lsl r0, r4, #0x2
@@ -153,12 +153,12 @@ FUN_02087B78: ; 0x02087B78
add r4, r1, #0x0
cmp r5, #0x0
bne _02087B86
- bl ErrorHandling
+ bl GF_AssertFail
_02087B86:
ldr r0, [r5, #0x4]
cmp r0, #0x0
bne _02087B90
- bl ErrorHandling
+ bl GF_AssertFail
_02087B90:
ldr r1, [r5, #0x4]
lsl r0, r4, #0x2
@@ -172,12 +172,12 @@ FUN_02087B98: ; 0x02087B98
add r4, r1, #0x0
cmp r5, #0x0
bne _02087BA6
- bl ErrorHandling
+ bl GF_AssertFail
_02087BA6:
ldr r0, [r5, #0x8]
cmp r0, #0x0
bne _02087BB0
- bl ErrorHandling
+ bl GF_AssertFail
_02087BB0:
ldr r1, [r5, #0x8]
lsl r0, r4, #0x1
@@ -191,12 +191,12 @@ FUN_02087BB8: ; 0x02087BB8
add r4, r1, #0x0
cmp r5, #0x0
bne _02087BC6
- bl ErrorHandling
+ bl GF_AssertFail
_02087BC6:
ldr r0, [r5, #0xc]
cmp r0, #0x0
bne _02087BD0
- bl ErrorHandling
+ bl GF_AssertFail
_02087BD0:
ldr r1, [r5, #0xc]
lsl r0, r4, #0x1
@@ -210,12 +210,12 @@ FUN_02087BD8: ; 0x02087BD8
add r4, r1, #0x0
cmp r5, #0x0
bne _02087BE6
- bl ErrorHandling
+ bl GF_AssertFail
_02087BE6:
ldr r0, [r5, #0x10]
cmp r0, #0x0
bne _02087BF0
- bl ErrorHandling
+ bl GF_AssertFail
_02087BF0:
ldr r1, [r5, #0x10]
lsl r0, r4, #0x1
@@ -229,12 +229,12 @@ FUN_02087BF8: ; 0x02087BF8
add r4, r1, #0x0
cmp r5, #0x0
bne _02087C06
- bl ErrorHandling
+ bl GF_AssertFail
_02087C06:
ldr r0, [r5, #0x14]
cmp r0, #0x0
bne _02087C10
- bl ErrorHandling
+ bl GF_AssertFail
_02087C10:
ldr r1, [r5, #0x14]
lsl r0, r4, #0x1
@@ -249,7 +249,7 @@ FUN_02087C18: ; 0x02087C18
mov r0, #0x4b
add r2, r1, #0x0
str r1, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
pop {r3, pc}
.balign 4
@@ -261,7 +261,7 @@ FUN_02087C2C: ; 0x02087C2C
mov r0, #0x4b
mov r1, #0x1
str r2, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
pop {r3, pc}
.balign 4
@@ -277,14 +277,14 @@ FUN_02087C40: ; 0x02087C40
mov r0, #0x4b
mov r1, #0x9
add r3, r6, #0x0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r5, #0x0]
mov r2, #0x0
mov r0, #0x4b
mov r1, #0xa
add r3, r6, #0x0
str r2, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x0]
add sp, #0x4
pop {r3-r6, pc}
@@ -302,14 +302,14 @@ FUN_02087C70: ; 0x02087C70
mov r0, #0x4b
mov r1, #0x7
add r3, r6, #0x0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r5, #0x0]
mov r2, #0x0
mov r0, #0x4b
mov r1, #0x8
add r3, r6, #0x0
str r2, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x0]
add sp, #0x4
pop {r3-r6, pc}
@@ -327,14 +327,14 @@ FUN_02087CA0: ; 0x02087CA0
mov r0, #0x4b
mov r1, #0x5
add r3, r6, #0x0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r5, #0x0]
mov r2, #0x0
mov r0, #0x4b
mov r1, #0x6
add r3, r6, #0x0
str r2, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x0]
add sp, #0x4
pop {r3-r6, pc}
@@ -352,14 +352,14 @@ FUN_02087CD0: ; 0x02087CD0
mov r0, #0x4b
mov r1, #0x3
add r3, r6, #0x0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r5, #0x0]
mov r2, #0x0
mov r0, #0x4b
mov r1, #0x4
add r3, r6, #0x0
str r2, [sp, #0x0]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x0]
add sp, #0x4
pop {r3-r6, pc}
diff --git a/arm9/asm/unk_02088320.s b/arm9/asm/unk_02088320.s
index 92381e59..aa080143 100644
--- a/arm9/asm/unk_02088320.s
+++ b/arm9/asm/unk_02088320.s
@@ -209,7 +209,7 @@ FUN_02088490: ; 0x02088490
str r0, [sp, #0x3c]
cmp r0, #0x0
bge _020884B4
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x70
mov r0, #0x0
pop {r3-r7, pc}
@@ -404,7 +404,7 @@ _02088612:
bl FUN_02020248
b _02088656
_02088652:
- bl ErrorHandling
+ bl GF_AssertFail
_02088656:
ldr r0, [sp, #0x38]
str r4, [r0, #0x4]
@@ -495,7 +495,7 @@ FUN_020886CC: ; 0x020886CC
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02088704
- bl ErrorHandling
+ bl GF_AssertFail
_02088704:
ldr r0, [r5, #0x4]
cmp r0, #0x0
@@ -546,7 +546,7 @@ _02088734:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02088768
- bl ErrorHandling
+ bl GF_AssertFail
_02088768:
add r4, r4, #0x1
add r6, r6, #0x4
@@ -584,7 +584,7 @@ _02088780:
ldr r0, [r0, r4]
cmp r0, #0x0
bne _020887B4
- bl ErrorHandling
+ bl GF_AssertFail
_020887B4:
ldr r0, [r6, #0x0]
ldr r0, [r0, r4]
diff --git a/arm9/asm/unk_0208890C.s b/arm9/asm/unk_0208890C.s
deleted file mode 100644
index d27130c9..00000000
--- a/arm9/asm/unk_0208890C.s
+++ /dev/null
@@ -1,73 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020FD6E4
-UNK_020FD6E4: ; 0x020FD6E4
- .word FUN_020889B0, FUN_02088A00, FUN_02088A78, 0xFFFFFFFF
-
- .text
-
- thumb_func_start FUN_0208890C
-FUN_0208890C: ; 0x0208890C
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r0, r2, #0x0
- mov r1, #0x20
- add r7, r3, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- mov r1, #0x0
- mov r2, #0x20
- bl MI_CpuFill8
- str r5, [r4, #0xc]
- add r0, r5, #0x0
- bl FUN_02028048
- str r0, [r4, #0x8]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetProfileAddr
- str r0, [r4, #0x10]
- add r0, r5, #0x0
- bl Sav2_Bag_get
- str r0, [r4, #0x14]
- add r0, r5, #0x0
- bl Sav2_PlayerData_GetOptionsAddr
- str r0, [r4, #0x18]
- str r7, [r4, #0x1c]
- str r6, [r4, #0x4]
- add r0, r4, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02088950
-FUN_02088950: ; 0x02088950
- ldr r3, _02088958 ; =FUN_020373D4
- add r2, r1, #0x0
- ldr r1, _0208895C ; =UNK_020FD6E4
- bx r3
- .balign 4
-_02088958: .word FUN_020373D4
-_0208895C: .word UNK_020FD6E4
-
- thumb_func_start FUN_02088960
-FUN_02088960: ; 0x02088960
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- add r3, r5, #0x0
- add r3, #0x98
- add r1, r0, #0x0
- ldr r3, [r3, #0x0]
- add r0, r4, #0x0
- add r2, r6, #0x0
- bl FUN_0208890C
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02088950
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/asm/unk_02088AAC.s b/arm9/asm/unk_02088AAC.s
index 65ce7a60..6f47b864 100644
--- a/arm9/asm/unk_02088AAC.s
+++ b/arm9/asm/unk_02088AAC.s
@@ -217,7 +217,7 @@ _02088C12:
mov r0, #0x5
pop {r3-r5, pc}
_02088C16:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x95
str r0, [r4, #0x8]
_02088C1E:
@@ -231,7 +231,7 @@ _02088C1E:
bl Bag_TakeItem
cmp r0, #0x0
bne _02088C38
- bl ErrorHandling
+ bl GF_AssertFail
_02088C38:
mov r0, #0x4
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02088D1C.s b/arm9/asm/unk_02088D1C.s
index a7a41701..f82d0498 100644
--- a/arm9/asm/unk_02088D1C.s
+++ b/arm9/asm/unk_02088D1C.s
@@ -209,7 +209,7 @@ FUN_02088D4C: ; 0x02088D4C
add r4, r0, #0x0
cmp r4, #0x13
blo _02088D58
- bl ErrorHandling
+ bl GF_AssertFail
_02088D58:
mov r0, #0xc
add r1, r4, #0x0
@@ -226,7 +226,7 @@ FUN_02088D68: ; 0x02088D68
add r4, r0, #0x0
cmp r4, #0x13
blo _02088D74
- bl ErrorHandling
+ bl GF_AssertFail
_02088D74:
mov r0, #0xc
add r1, r4, #0x0
@@ -243,7 +243,7 @@ FUN_02088D84: ; 0x02088D84
add r4, r0, #0x0
cmp r4, #0x13
blo _02088D90
- bl ErrorHandling
+ bl GF_AssertFail
_02088D90:
mov r0, #0xc
add r1, r4, #0x0
@@ -260,7 +260,7 @@ FUN_02088DA0: ; 0x02088DA0
add r4, r0, #0x0
cmp r4, #0x13
blo _02088DAC
- bl ErrorHandling
+ bl GF_AssertFail
_02088DAC:
mov r0, #0xc
add r1, r4, #0x0
@@ -277,7 +277,7 @@ FUN_02088DBC: ; 0x02088DBC
add r4, r0, #0x0
cmp r4, #0x13
blo _02088DC8
- bl ErrorHandling
+ bl GF_AssertFail
_02088DC8:
mov r0, #0xc
add r1, r4, #0x0
diff --git a/arm9/asm/unk_020893E0.s b/arm9/asm/unk_020893E0.s
index d1cbe3de..566bab92 100644
--- a/arm9/asm/unk_020893E0.s
+++ b/arm9/asm/unk_020893E0.s
@@ -40,7 +40,7 @@ FUN_020893F0: ; 0x020893F0
str r4, [r0, #0x0]
pop {r4, pc}
_0208940A:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
.balign 4
_02089410: .word UNK_021C5C58
@@ -62,7 +62,7 @@ FUN_02089418: ; 0x02089418
mov r0, #0x1
pop {r3, pc}
_02089434:
- bl ErrorHandling
+ bl GF_AssertFail
_02089438:
mov r0, #0x0
pop {r3, pc}
@@ -85,7 +85,7 @@ FUN_02089444: ; 0x02089444
str r4, [r0, #0x0]
pop {r4, pc}
_0208945E:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
.balign 4
_02089464: .word UNK_021C5C58
@@ -107,7 +107,7 @@ FUN_0208946C: ; 0x0208946C
mov r0, #0x1
pop {r3, pc}
_02089488:
- bl ErrorHandling
+ bl GF_AssertFail
_0208948C:
mov r0, #0x0
pop {r3, pc}
diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s
index b4c7a133..3facd182 100644
--- a/arm9/asm/unk_02089498.s
+++ b/arm9/asm/unk_02089498.s
@@ -360,7 +360,7 @@ FUN_02089734: ; 0x02089734
add r0, r4, #0x0
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #0x8
pop {r4, pc}
nop
@@ -539,7 +539,7 @@ _020898B8:
mov r1, #0xf
add r2, r6, #0x0
add r3, r6, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r5, #0x0
ldr r2, _02089958 ; =0x000001E2
add r0, #0x1c
diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s
index 4502d1f9..9c06a4ab 100644
--- a/arm9/asm/unk_02089960.s
+++ b/arm9/asm/unk_02089960.s
@@ -299,7 +299,7 @@ FUN_02089B80: ; 0x02089B80
add r0, r4, #0x0
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #0x8
pop {r4, pc}
nop
@@ -466,7 +466,7 @@ _02089CE8:
mov r1, #0xf
add r2, r6, #0x0
add r3, r6, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r5, #0x0
ldr r2, _02089D88 ; =0x000001E2
add r0, #0x20
diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s
index 92b9e987..e7b88272 100644
--- a/arm9/asm/unk_02089D90.s
+++ b/arm9/asm/unk_02089D90.s
@@ -137,7 +137,7 @@ FUN_02089D90: ; 0x02089D90
add r0, sp, #0xc
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _02089F18 ; =0x000001F7
add r0, sp, #0xc
mov r1, #0x0
diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s
index b678254c..b5c93a8a 100644
--- a/arm9/asm/unk_02089F24.s
+++ b/arm9/asm/unk_02089F24.s
@@ -141,7 +141,7 @@ FUN_02089F24: ; 0x02089F24
add r0, sp, #0xc
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _0208A0AC ; =0x000001F7
add r0, sp, #0xc
mov r1, #0x0
@@ -310,7 +310,7 @@ _0208A0C8:
add r0, sp, #0xc
mov r1, #0xf
add r3, r2, #0x0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _0208A24C ; =0x000001F7
add r0, sp, #0xc
mov r1, #0x0
diff --git a/arm9/asm/unk_0208A300.s b/arm9/asm/unk_0208A300.s
deleted file mode 100644
index fe273a33..00000000
--- a/arm9/asm/unk_0208A300.s
+++ /dev/null
@@ -1,49 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0208A300
-FUN_0208A300: ; 0x0208A300
- push {r3, lr}
- mov r1, #0x8
- bl AllocFromHeap
- mov r1, #0x0
- strb r1, [r0, #0x0]
- strb r1, [r0, #0x1]
- strb r1, [r0, #0x2]
- strb r1, [r0, #0x3]
- strb r1, [r0, #0x4]
- strb r1, [r0, #0x5]
- strb r1, [r0, #0x6]
- strb r1, [r0, #0x7]
- mov r1, #0x2
- str r1, [r0, #0x4]
- pop {r3, pc}
-
- thumb_func_start FUN_0208A320
-FUN_0208A320: ; 0x0208A320
- ldr r3, _0208A324 ; =FreeToHeap
- bx r3
- .balign 4
-_0208A324: .word FreeToHeap
-
- thumb_func_start FUN_0208A328
-FUN_0208A328: ; 0x0208A328
- ldr r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_0208A32C
-FUN_0208A32C: ; 0x0208A32C
- str r1, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_0208A330
-FUN_0208A330: ; 0x0208A330
- ldr r0, [r0, #0x4]
- bx lr
-
- thumb_func_start FUN_0208A334
-FUN_0208A334: ; 0x0208A334
- str r1, [r0, #0x4]
- bx lr
diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s
index 2be81a9f..bafa4c91 100644
--- a/arm9/asm/unk_0208A338.s
+++ b/arm9/asm/unk_0208A338.s
@@ -36,7 +36,7 @@ FUN_0208A338: ; 0x0208A338
bl NewMsgDataFromNarc
str r0, [r4, #0x10]
mov r0, #0x20
- bl FUN_02013690
+ bl ListMenuCursorNew
str r0, [r4, #0x14]
ldr r2, [r4, #0x0]
mov r0, #0x2
@@ -48,13 +48,13 @@ FUN_0208A338: ; 0x0208A338
bl FUN_020853DC
add r0, r4, #0x0
add r0, #0x18
- bl FUN_0201901C
+ bl InitWindow
add r0, r4, #0x0
add r0, #0x28
- bl FUN_0201901C
+ bl InitWindow
add r0, r4, #0x0
add r0, #0x38
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0x0
str r0, [r4, #0x54]
ldr r1, _0208A3C4 ; =FUN_0208A458
@@ -73,7 +73,7 @@ FUN_0208A3C8: ; 0x0208A3C8
ldr r0, [r4, #0x50]
bl FUN_020853A8
ldr r0, [r4, #0x14]
- bl FUN_020136C0
+ bl DestroyListMenuCursorObj
ldr r0, [r4, #0x4]
bl String_dtor
ldr r0, [r4, #0x8]
@@ -102,7 +102,7 @@ FUN_0208A400: ; 0x0208A400
bl FUN_02019178
add r0, r4, #0x0
add r0, #0x18
- bl FUN_0201901C
+ bl InitWindow
_0208A41E:
add r0, r4, #0x0
add r0, #0x28
@@ -114,7 +114,7 @@ _0208A41E:
bl FUN_02019178
add r0, r4, #0x0
add r0, #0x28
- bl FUN_0201901C
+ bl InitWindow
_0208A43A:
add r0, r4, #0x0
add r0, #0x38
@@ -126,7 +126,7 @@ _0208A43A:
bl FUN_02019178
add r4, #0x38
add r0, r4, #0x0
- bl FUN_0201901C
+ bl InitWindow
_0208A456:
pop {r4, pc}
@@ -556,7 +556,7 @@ FUN_0208A77C: ; 0x0208A77C
bl FUN_02019064
add r0, r7, #0x0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r6, #0x0
add r4, r6, #0x0
_0208A7D2:
@@ -583,7 +583,7 @@ _0208A7D2:
ldr r0, [r5, #0x14]
add r1, r7, #0x0
add r3, r2, #0x0
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
_0208A808:
str r7, [r5, #0x68]
mov r1, #0x0
@@ -644,7 +644,7 @@ FUN_0208A82C: ; 0x0208A82C
bl FUN_02019064
add r0, r7, #0x0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r6, #0x0
add r4, r6, #0x0
_0208A882:
@@ -671,7 +671,7 @@ _0208A882:
ldr r0, [r5, #0x14]
add r1, r7, #0x0
add r3, r2, #0x0
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
_0208A8B8:
str r7, [r5, #0x68]
mov r1, #0x0
@@ -771,13 +771,13 @@ _0208A954:
lsr r1, r1, #0x10
str r1, [sp, #0x4]
mov r1, #0xf
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r3, [r4, #0x5c]
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x68]
mov r2, #0x0
lsl r3, r3, #0x4
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
ldr r0, [r4, #0x68]
bl FUN_02019548
ldr r0, _0208A994 ; =0x000005DC
diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s
index 4d334a19..2f1ab9a6 100644
--- a/arm9/asm/unk_0208AC14.s
+++ b/arm9/asm/unk_0208AC14.s
@@ -1,9 +1,9 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_020FFA38
- .extern UNK_021064B8
- .extern UNK_021064C0
+ .extern FX_SinCosTable_
+ .extern NNS_GfdDefaultFuncAllocTexVram
+ .extern NNS_GfdDefaultFuncAllocPlttVram
.section .data
.global UNK_02106158
@@ -773,7 +773,7 @@ _0208B60C:
FUN_0208B630: ; 0x0208B630
stmdb sp!, {lr}
sub sp, sp, #0x4
- ldr r3, _0208B660 ; =UNK_021064C0
+ ldr r3, _0208B660 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r2, #0x0
ldr r3, [r3, #0x0]
blx r3
@@ -784,14 +784,14 @@ FUN_0208B630: ; 0x0208B630
ldmia sp!, {lr}
bx lr
.balign 4
-_0208B660: .word UNK_021064C0
+_0208B660: .word NNS_GfdDefaultFuncAllocPlttVram
_0208B664: .word 0x0000FFFF
arm_func_start FUN_0208B668
FUN_0208B668: ; 0x0208B668
stmdb sp!, {lr}
sub sp, sp, #0x4
- ldr r3, _0208B698 ; =UNK_021064B8
+ ldr r3, _0208B698 ; =NNS_GfdDefaultFuncAllocTexVram
mov r2, #0x0
ldr r3, [r3, #0x0]
blx r3
@@ -802,7 +802,7 @@ FUN_0208B668: ; 0x0208B668
ldmia sp!, {lr}
bx lr
.balign 4
-_0208B698: .word UNK_021064B8
+_0208B698: .word NNS_GfdDefaultFuncAllocTexVram
_0208B69C: .word 0x0000FFFF
arm_func_start FUN_0208B6A0
@@ -1823,7 +1823,7 @@ FUN_0208C4F4: ; 0x0208C4F4
ldr r0, [r5, #0x40]
ldrh r1, [r4, #0x20]
ldr r0, [r0, #0x20]
- ldr r6, _0208C954 ; =UNK_020FFA38
+ ldr r6, _0208C954 ; =FX_SinCosTable_
ldr r0, [r0, #0x14]
mov r1, r1, asr #0x4
ldrh r0, [r0, #0x0]
@@ -2087,7 +2087,7 @@ _0208C8BC:
bx lr
.balign 4
_0208C950: .word 0x040004A4
-_0208C954: .word UNK_020FFA38
+_0208C954: .word FX_SinCosTable_
_0208C958: .word UNK_02106160
_0208C95C: .word 0x00000CCD
_0208C960: .word 0xFFFFF333
@@ -2125,7 +2125,7 @@ FUN_0208C974: ; 0x0208C974
ldr r0, [r5, #0x40]
ldrh r1, [r4, #0x20]
ldr r0, [r0, #0x20]
- ldr r6, _0208CDD0 ; =UNK_020FFA38
+ ldr r6, _0208CDD0 ; =FX_SinCosTable_
ldr r0, [r0, #0x0]
mov r1, r1, asr #0x4
mov r2, r1, lsl #0x1
@@ -2388,7 +2388,7 @@ _0208CD38:
bx lr
.balign 4
_0208CDCC: .word 0x040004A4
-_0208CDD0: .word UNK_020FFA38
+_0208CDD0: .word FX_SinCosTable_
_0208CDD4: .word UNK_02106160
_0208CDD8: .word 0x00000CCD
_0208CDDC: .word 0xFFFFF333
@@ -2426,7 +2426,7 @@ FUN_0208CDF0: ; 0x0208CDF0
ldr r0, [r5, #0x40]
ldrh r1, [r4, #0x20]
ldr r0, [r0, #0x20]
- ldr r6, _0208D128 ; =UNK_020FFA38
+ ldr r6, _0208D128 ; =FX_SinCosTable_
ldr r0, [r0, #0x14]
mov r1, r1, asr #0x4
ldrh r0, [r0, #0x0]
@@ -2612,7 +2612,7 @@ _0208D090:
bx lr
.balign 4
_0208D124: .word 0x040004A4
-_0208D128: .word UNK_020FFA38
+_0208D128: .word FX_SinCosTable_
_0208D12C: .word UNK_02106160
_0208D130: .word 0x04000454
_0208D134: .word 0x04000470
@@ -2648,7 +2648,7 @@ FUN_0208D140: ; 0x0208D140
ldr r0, [r5, #0x40]
ldrh r1, [r4, #0x20]
ldr r0, [r0, #0x20]
- ldr r6, _0208D478 ; =UNK_020FFA38
+ ldr r6, _0208D478 ; =FX_SinCosTable_
ldr r0, [r0, #0x0]
mov r1, r1, asr #0x4
mov r2, r1, lsl #0x1
@@ -2834,7 +2834,7 @@ _0208D3E0:
bx lr
.balign 4
_0208D474: .word 0x040004A4
-_0208D478: .word UNK_020FFA38
+_0208D478: .word FX_SinCosTable_
_0208D47C: .word UNK_02106160
_0208D480: .word 0x04000454
_0208D484: .word 0x04000470
@@ -3854,7 +3854,7 @@ _0208E39C:
str r3, [sp, #0x8]
bl MTX_MultVec43
ldrh r0, [r6, #0x20]
- ldr r2, _0208E69C ; =UNK_020FFA38
+ ldr r2, _0208E69C ; =FX_SinCosTable_
mov r9, #0x0
mov r0, r0, asr #0x4
mov r3, r0, lsl #0x1
@@ -3935,7 +3935,7 @@ _0208E4BC:
str r3, [sp, #0x8]
bl MTX_MultVec43
ldrh r0, [r6, #0x20]
- ldr r2, _0208E69C ; =UNK_020FFA38
+ ldr r2, _0208E69C ; =FX_SinCosTable_
mov lr, #0x0
mov r0, r0, asr #0x4
mov r3, r0, lsl #0x1
@@ -4029,7 +4029,7 @@ _0208E620:
bx lr
.balign 4
_0208E698: .word 0x040004A4
-_0208E69C: .word UNK_020FFA38
+_0208E69C: .word FX_SinCosTable_
_0208E6A0: .word 0x04000454
_0208E6A4: .word 0x04000470
_0208E6A8: .word 0x04000480
@@ -4139,7 +4139,7 @@ _0208E7E0:
str r3, [sp, #0x8]
bl MTX_MultVec43
ldrh r0, [r8, #0x20]
- ldr r2, _0208EAE8 ; =UNK_020FFA38
+ ldr r2, _0208EAE8 ; =FX_SinCosTable_
ldr r12, [sp, #0x0]
mov r0, r0, asr #0x4
mov r3, r0, lsl #0x1
@@ -4220,7 +4220,7 @@ _0208E90C:
str r3, [sp, #0x8]
bl MTX_MultVec43
ldrh r0, [r8, #0x20]
- ldr r2, _0208EAE8 ; =UNK_020FFA38
+ ldr r2, _0208EAE8 ; =FX_SinCosTable_
mov r8, #0x0
mov r0, r0, asr #0x4
mov r3, r0, lsl #0x1
@@ -4313,7 +4313,7 @@ _0208EA70:
bx lr
.balign 4
_0208EAE4: .word 0x040004A4
-_0208EAE8: .word UNK_020FFA38
+_0208EAE8: .word FX_SinCosTable_
_0208EAEC: .word 0x04000454
_0208EAF0: .word 0x04000470
_0208EAF4: .word 0x04000480
@@ -4846,12 +4846,12 @@ _0208F294:
add r1, r1, #0x10000
mov r2, r0, lsl #0x1
str r1, [sp, #0x18]
- ldr r0, _0208FD98 ; =UNK_020FFA38
+ ldr r0, _0208FD98 ; =FX_SinCosTable_
mov r1, r2, lsl #0x1
ldrsh r0, [r0, r1]
add r1, r2, #0x1
mov r2, r1, lsl #0x1
- ldr r1, _0208FD98 ; =UNK_020FFA38
+ ldr r1, _0208FD98 ; =FX_SinCosTable_
ldrsh r3, [r1, r2]
ldr r2, [r9, #0x5c]
mov r1, #0x800
@@ -5562,7 +5562,7 @@ _0208FD88: .word 0x00000FFF
_0208FD8C: .word UNK_021C8C5C
_0208FD90: .word 0x5EEDF715
_0208FD94: .word 0x1B0CB173
-_0208FD98: .word UNK_020FFA38
+_0208FD98: .word FX_SinCosTable_
_0208FD9C: .word 0x00000003
_0208FDA0: .word 0xAAAAAAAB
_0208FDA4: .word 0x0000FFFF
@@ -6265,7 +6265,7 @@ FUN_02090780: ; 0x02090780
b _02090838
_020907AC:
ldrh r1, [r0, #0x0]
- ldr r3, _02090854 ; =UNK_020FFA38
+ ldr r3, _02090854 ; =FX_SinCosTable_
add r0, sp, #0x0
mov r1, r1, asr #0x4
mov r2, r1, lsl #0x1
@@ -6278,7 +6278,7 @@ _020907AC:
b _02090838
_020907DC:
ldrh r1, [r0, #0x0]
- ldr r3, _02090854 ; =UNK_020FFA38
+ ldr r3, _02090854 ; =FX_SinCosTable_
add r0, sp, #0x0
mov r1, r1, asr #0x4
mov r2, r1, lsl #0x1
@@ -6291,7 +6291,7 @@ _020907DC:
b _02090838
_0209080C:
ldrh r1, [r0, #0x0]
- ldr r3, _02090854 ; =UNK_020FFA38
+ ldr r3, _02090854 ; =FX_SinCosTable_
add r0, sp, #0x0
mov r1, r1, asr #0x4
mov r2, r1, lsl #0x1
@@ -6310,7 +6310,7 @@ _02090838:
ldmia sp!, {r4,lr}
bx lr
.balign 4
-_02090854: .word UNK_020FFA38
+_02090854: .word FX_SinCosTable_
arm_func_start FUN_02090858
FUN_02090858: ; 0x02090858
diff --git a/arm9/asm/unk_020ADA84.s b/arm9/asm/unk_020ADA84.s
deleted file mode 100644
index 29fddc4a..00000000
--- a/arm9/asm/unk_020ADA84.s
+++ /dev/null
@@ -1,23258 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern SNDi_DecibelTable
- .extern GXi_DmaId
-
- .section .rodata
-
- .global UNK_020FF7CC
-UNK_020FF7CC: ; 0x020FF7CC
- .word FUN_020AE894
- .word FUN_020AE884
-
- .global UNK_020FF7D4
-UNK_020FF7D4: ; 0x020FF7D4
- .word FUN_020AF2B4
- .word FUN_020AF288
- .word FUN_020AF25C
- .word FUN_020AF230
- .word GX_LoadBG0Char_2
- .word GX_LoadBG1Char_2
- .word GX_LoadBG2Char_2
- .word GX_LoadBG3Char_2
- .word GX_LoadBG0Scr_2
- .word GX_LoadBG1Scr_2
- .word GX_LoadBG2Scr_2
- .word GX_LoadBG3Scr_2
- .word GX_LoadBG2Scr_3
- .word GX_LoadBG3Scr_3
- .word GX_LoadOBJPltt_2
- .word GX_LoadBGPltt_2
- .word FUN_020AF174
- .word FUN_020AF148
- .word GX_LoadOAM_2
- .word GX_LoadOBJ_2
- .word GXS_LoadBG0Char_2
- .word GXS_LoadBG1Char_2
- .word GXS_LoadBG2Char_2
- .word GXS_LoadBG3Char_2
- .word GXS_LoadBG0Scr_2
- .word GXS_LoadBG1Scr_2
- .word GXS_LoadBG2Scr_2
- .word GXS_LoadBG3Scr_2
- .word GXS_LoadBG2Scr_3
- .word GXS_LoadBG3Scr_3
- .word GXS_LoadOBJPltt_2
- .word GXS_LoadBGPltt_2
- .word FUN_020AF074
- .word FUN_020AF048
- .word GXS_LoadOAM_2
- .word GXS_LoadOBJ_2
-
- .global UNK_020FF864
-UNK_020FF864: ; 0x020FF864
- .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020FF894
-UNK_020FF894: ; 0x020FF894
- .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00
- .byte 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00
-
- .global UNK_020FF8AC
-UNK_020FF8AC: ; 0x020FF8AC
- .byte 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00
- .byte 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00
-
- .global UNK_020FF8C4
-UNK_020FF8C4: ; 0x020FF8C4
- .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00
-
- .global UNK_020FF8D0
-UNK_020FF8D0: ; 0x020FF8D0
- .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
-
- .global UNK_020FF8D8
-UNK_020FF8D8: ; 0x020FF8D8
- .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
- .byte 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
-
- .global UNK_020FF8F8
-UNK_020FF8F8: ; 0x020FF8F8
- .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK_020FF928
-UNK_020FF928: ; 0x020FF928
- .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
-
- .global UNK_020FF958
-UNK_020FF958: ; 0x020FF958
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020FF970
-UNK_020FF970: ; 0x020FF970
- .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01
- .byte 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03
-
- .global UNK_020FF990
-UNK_020FF990: ; 0x020FF990
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0xC0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xC0
-
- .global UNK_020FF9D0
-UNK_020FF9D0: ; 0x020FF9D0
- .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F
- .byte 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F
-
- .global UNK_020FF9F0
-UNK_020FF9F0: ; 0x020FF9F0
- .byte 0x04
-
- .global UNK_020FF9F1
-UNK_020FF9F1: ; 0x020FF9F1
- .byte 0x05
-
- .global UNK_020FF9F2
-UNK_020FF9F2: ; 0x020FF9F2
- .byte 0x07
-
- .global UNK_020FF9F3
-UNK_020FF9F3: ; 0x020FF9F3
- .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06
- .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03
- .byte 0x04
-
- .global UNK_020FFA14
-UNK_020FFA14: ; 0x020FFA14
- .byte 0x04
-
- .global UNK_020FFA15
-UNK_020FFA15: ; 0x020FFA15
- .byte 0x05
-
- .global UNK_020FFA16
-UNK_020FFA16: ; 0x020FFA16
- .byte 0x07
-
- .global UNK_020FFA17
-UNK_020FFA17: ; 0x020FFA17
- .byte 0x08, 0x03, 0x05, 0x06, 0x08, 0x03, 0x04, 0x06, 0x07, 0x01, 0x02, 0x07, 0x08, 0x00, 0x02, 0x06
- .byte 0x08, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 0x04, 0x05, 0x00, 0x02, 0x03, 0x05, 0x00, 0x01, 0x03
- .byte 0x04
-
- .global UNK_020FFA38
-UNK_020FFA38: ; 0x020FFA38
- .byte 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10,
- .byte 0x19, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10,
- .byte 0x32, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x45, 0x00, 0xFF, 0x0F,
- .byte 0x4B, 0x00, 0xFF, 0x0F, 0x52, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F,
- .byte 0x65, 0x00, 0xFF, 0x0F, 0x6B, 0x00, 0xFF, 0x0F, 0x71, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F,
- .byte 0x7E, 0x00, 0xFE, 0x0F, 0x84, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x90, 0x00, 0xFD, 0x0F,
- .byte 0x97, 0x00, 0xFD, 0x0F, 0x9D, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0xAA, 0x00, 0xFC, 0x0F,
- .byte 0xB0, 0x00, 0xFC, 0x0F, 0xB6, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xC3, 0x00, 0xFB, 0x0F,
- .byte 0xC9, 0x00, 0xFB, 0x0F, 0xCF, 0x00, 0xFB, 0x0F, 0xD6, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F,
- .byte 0xE2, 0x00, 0xFA, 0x0F, 0xE8, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F,
- .byte 0xFB, 0x00, 0xF8, 0x0F, 0x01, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x0E, 0x01, 0xF7, 0x0F,
- .byte 0x14, 0x01, 0xF7, 0x0F, 0x1B, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x27, 0x01, 0xF5, 0x0F,
- .byte 0x2D, 0x01, 0xF5, 0x0F, 0x34, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x40, 0x01, 0xF3, 0x0F,
- .byte 0x46, 0x01, 0xF3, 0x0F, 0x4D, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x59, 0x01, 0xF1, 0x0F,
- .byte 0x5F, 0x01, 0xF1, 0x0F, 0x66, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x72, 0x01, 0xEF, 0x0F,
- .byte 0x78, 0x01, 0xEF, 0x0F, 0x7F, 0x01, 0xEE, 0x0F, 0x85, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F,
- .byte 0x91, 0x01, 0xEC, 0x0F, 0x98, 0x01, 0xEC, 0x0F, 0x9E, 0x01, 0xEB, 0x0F, 0xA4, 0x01, 0xEA, 0x0F,
- .byte 0xAA, 0x01, 0xEA, 0x0F, 0xB1, 0x01, 0xE9, 0x0F, 0xB7, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F,
- .byte 0xC3, 0x01, 0xE7, 0x0F, 0xCA, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xD6, 0x01, 0xE5, 0x0F,
- .byte 0xDC, 0x01, 0xE4, 0x0F, 0xE3, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xEF, 0x01, 0xE2, 0x0F,
- .byte 0xF5, 0x01, 0xE1, 0x0F, 0xFC, 0x01, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0x08, 0x02, 0xDF, 0x0F,
- .byte 0x0E, 0x02, 0xDE, 0x0F, 0x15, 0x02, 0xDD, 0x0F, 0x1B, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F,
- .byte 0x27, 0x02, 0xDB, 0x0F, 0x2D, 0x02, 0xDA, 0x0F, 0x34, 0x02, 0xD9, 0x0F, 0x3A, 0x02, 0xD8, 0x0F,
- .byte 0x40, 0x02, 0xD7, 0x0F, 0x46, 0x02, 0xD6, 0x0F, 0x4D, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F,
- .byte 0x59, 0x02, 0xD4, 0x0F, 0x5F, 0x02, 0xD3, 0x0F, 0x65, 0x02, 0xD2, 0x0F, 0x6C, 0x02, 0xD1, 0x0F,
- .byte 0x72, 0x02, 0xD0, 0x0F, 0x78, 0x02, 0xCF, 0x0F, 0x7E, 0x02, 0xCE, 0x0F, 0x84, 0x02, 0xCD, 0x0F,
- .byte 0x8B, 0x02, 0xCC, 0x0F, 0x91, 0x02, 0xCB, 0x0F, 0x97, 0x02, 0xCA, 0x0F, 0x9D, 0x02, 0xC9, 0x0F,
- .byte 0xA3, 0x02, 0xC8, 0x0F, 0xAA, 0x02, 0xC7, 0x0F, 0xB0, 0x02, 0xC6, 0x0F, 0xB6, 0x02, 0xC5, 0x0F,
- .byte 0xBC, 0x02, 0xC4, 0x0F, 0xC2, 0x02, 0xC3, 0x0F, 0xC9, 0x02, 0xC2, 0x0F, 0xCF, 0x02, 0xC0, 0x0F,
- .byte 0xD5, 0x02, 0xBF, 0x0F, 0xDB, 0x02, 0xBE, 0x0F, 0xE1, 0x02, 0xBD, 0x0F, 0xE8, 0x02, 0xBC, 0x0F,
- .byte 0xEE, 0x02, 0xBB, 0x0F, 0xF4, 0x02, 0xBA, 0x0F, 0xFA, 0x02, 0xB8, 0x0F, 0x00, 0x03, 0xB7, 0x0F,
- .byte 0x06, 0x03, 0xB6, 0x0F, 0x0D, 0x03, 0xB5, 0x0F, 0x13, 0x03, 0xB4, 0x0F, 0x19, 0x03, 0xB3, 0x0F,
- .byte 0x1F, 0x03, 0xB1, 0x0F, 0x25, 0x03, 0xB0, 0x0F, 0x2B, 0x03, 0xAF, 0x0F, 0x32, 0x03, 0xAE, 0x0F,
- .byte 0x38, 0x03, 0xAC, 0x0F, 0x3E, 0x03, 0xAB, 0x0F, 0x44, 0x03, 0xAA, 0x0F, 0x4A, 0x03, 0xA8, 0x0F,
- .byte 0x50, 0x03, 0xA7, 0x0F, 0x56, 0x03, 0xA6, 0x0F, 0x5D, 0x03, 0xA5, 0x0F, 0x63, 0x03, 0xA3, 0x0F,
- .byte 0x69, 0x03, 0xA2, 0x0F, 0x6F, 0x03, 0xA1, 0x0F, 0x75, 0x03, 0x9F, 0x0F, 0x7B, 0x03, 0x9E, 0x0F,
- .byte 0x81, 0x03, 0x9C, 0x0F, 0x88, 0x03, 0x9B, 0x0F, 0x8E, 0x03, 0x9A, 0x0F, 0x94, 0x03, 0x98, 0x0F,
- .byte 0x9A, 0x03, 0x97, 0x0F, 0xA0, 0x03, 0x95, 0x0F, 0xA6, 0x03, 0x94, 0x0F, 0xAC, 0x03, 0x93, 0x0F,
- .byte 0xB2, 0x03, 0x91, 0x0F, 0xB9, 0x03, 0x90, 0x0F, 0xBF, 0x03, 0x8E, 0x0F, 0xC5, 0x03, 0x8D, 0x0F,
- .byte 0xCB, 0x03, 0x8B, 0x0F, 0xD1, 0x03, 0x8A, 0x0F, 0xD7, 0x03, 0x88, 0x0F, 0xDD, 0x03, 0x87, 0x0F,
- .byte 0xE3, 0x03, 0x85, 0x0F, 0xE9, 0x03, 0x84, 0x0F, 0xEF, 0x03, 0x82, 0x0F, 0xF6, 0x03, 0x81, 0x0F,
- .byte 0xFC, 0x03, 0x7F, 0x0F, 0x02, 0x04, 0x7D, 0x0F, 0x08, 0x04, 0x7C, 0x0F, 0x0E, 0x04, 0x7A, 0x0F,
- .byte 0x14, 0x04, 0x79, 0x0F, 0x1A, 0x04, 0x77, 0x0F, 0x20, 0x04, 0x76, 0x0F, 0x26, 0x04, 0x74, 0x0F,
- .byte 0x2C, 0x04, 0x72, 0x0F, 0x32, 0x04, 0x71, 0x0F, 0x38, 0x04, 0x6F, 0x0F, 0x3E, 0x04, 0x6D, 0x0F,
- .byte 0x44, 0x04, 0x6C, 0x0F, 0x4B, 0x04, 0x6A, 0x0F, 0x51, 0x04, 0x68, 0x0F, 0x57, 0x04, 0x67, 0x0F,
- .byte 0x5D, 0x04, 0x65, 0x0F, 0x63, 0x04, 0x63, 0x0F, 0x69, 0x04, 0x61, 0x0F, 0x6F, 0x04, 0x60, 0x0F,
- .byte 0x75, 0x04, 0x5E, 0x0F, 0x7B, 0x04, 0x5C, 0x0F, 0x81, 0x04, 0x5A, 0x0F, 0x87, 0x04, 0x59, 0x0F,
- .byte 0x8D, 0x04, 0x57, 0x0F, 0x93, 0x04, 0x55, 0x0F, 0x99, 0x04, 0x53, 0x0F, 0x9F, 0x04, 0x51, 0x0F,
- .byte 0xA5, 0x04, 0x50, 0x0F, 0xAB, 0x04, 0x4E, 0x0F, 0xB1, 0x04, 0x4C, 0x0F, 0xB7, 0x04, 0x4A, 0x0F,
- .byte 0xBD, 0x04, 0x48, 0x0F, 0xC3, 0x04, 0x46, 0x0F, 0xC9, 0x04, 0x45, 0x0F, 0xCF, 0x04, 0x43, 0x0F,
- .byte 0xD5, 0x04, 0x41, 0x0F, 0xDB, 0x04, 0x3F, 0x0F, 0xE1, 0x04, 0x3D, 0x0F, 0xE7, 0x04, 0x3B, 0x0F,
- .byte 0xED, 0x04, 0x39, 0x0F, 0xF3, 0x04, 0x37, 0x0F, 0xF9, 0x04, 0x35, 0x0F, 0xFF, 0x04, 0x33, 0x0F,
- .byte 0x05, 0x05, 0x31, 0x0F, 0x0B, 0x05, 0x2F, 0x0F, 0x11, 0x05, 0x2D, 0x0F, 0x17, 0x05, 0x2B, 0x0F,
- .byte 0x1D, 0x05, 0x29, 0x0F, 0x23, 0x05, 0x27, 0x0F, 0x29, 0x05, 0x25, 0x0F, 0x2F, 0x05, 0x23, 0x0F,
- .byte 0x34, 0x05, 0x21, 0x0F, 0x3A, 0x05, 0x1F, 0x0F, 0x40, 0x05, 0x1D, 0x0F, 0x46, 0x05, 0x1B, 0x0F,
- .byte 0x4C, 0x05, 0x19, 0x0F, 0x52, 0x05, 0x17, 0x0F, 0x58, 0x05, 0x15, 0x0F, 0x5E, 0x05, 0x13, 0x0F,
- .byte 0x64, 0x05, 0x11, 0x0F, 0x6A, 0x05, 0x0E, 0x0F, 0x70, 0x05, 0x0C, 0x0F, 0x76, 0x05, 0x0A, 0x0F,
- .byte 0x7C, 0x05, 0x08, 0x0F, 0x81, 0x05, 0x06, 0x0F, 0x87, 0x05, 0x04, 0x0F, 0x8D, 0x05, 0x02, 0x0F,
- .byte 0x93, 0x05, 0xFF, 0x0E, 0x99, 0x05, 0xFD, 0x0E, 0x9F, 0x05, 0xFB, 0x0E, 0xA5, 0x05, 0xF9, 0x0E,
- .byte 0xAB, 0x05, 0xF7, 0x0E, 0xB1, 0x05, 0xF4, 0x0E, 0xB6, 0x05, 0xF2, 0x0E, 0xBC, 0x05, 0xF0, 0x0E,
- .byte 0xC2, 0x05, 0xEE, 0x0E, 0xC8, 0x05, 0xEB, 0x0E, 0xCE, 0x05, 0xE9, 0x0E, 0xD4, 0x05, 0xE7, 0x0E,
- .byte 0xDA, 0x05, 0xE4, 0x0E, 0xDF, 0x05, 0xE2, 0x0E, 0xE5, 0x05, 0xE0, 0x0E, 0xEB, 0x05, 0xDD, 0x0E,
- .byte 0xF1, 0x05, 0xDB, 0x0E, 0xF7, 0x05, 0xD9, 0x0E, 0xFD, 0x05, 0xD6, 0x0E, 0x02, 0x06, 0xD4, 0x0E,
- .byte 0x08, 0x06, 0xD2, 0x0E, 0x0E, 0x06, 0xCF, 0x0E, 0x14, 0x06, 0xCD, 0x0E, 0x1A, 0x06, 0xCB, 0x0E,
- .byte 0x1F, 0x06, 0xC8, 0x0E, 0x25, 0x06, 0xC6, 0x0E, 0x2B, 0x06, 0xC3, 0x0E, 0x31, 0x06, 0xC1, 0x0E,
- .byte 0x37, 0x06, 0xBF, 0x0E, 0x3C, 0x06, 0xBC, 0x0E, 0x42, 0x06, 0xBA, 0x0E, 0x48, 0x06, 0xB7, 0x0E,
- .byte 0x4E, 0x06, 0xB5, 0x0E, 0x54, 0x06, 0xB2, 0x0E, 0x59, 0x06, 0xB0, 0x0E, 0x5F, 0x06, 0xAD, 0x0E,
- .byte 0x65, 0x06, 0xAB, 0x0E, 0x6B, 0x06, 0xA8, 0x0E, 0x70, 0x06, 0xA6, 0x0E, 0x76, 0x06, 0xA3, 0x0E,
- .byte 0x7C, 0x06, 0xA1, 0x0E, 0x82, 0x06, 0x9E, 0x0E, 0x87, 0x06, 0x9B, 0x0E, 0x8D, 0x06, 0x99, 0x0E,
- .byte 0x93, 0x06, 0x96, 0x0E, 0x99, 0x06, 0x94, 0x0E, 0x9E, 0x06, 0x91, 0x0E, 0xA4, 0x06, 0x8F, 0x0E,
- .byte 0xAA, 0x06, 0x8C, 0x0E, 0xAF, 0x06, 0x89, 0x0E, 0xB5, 0x06, 0x87, 0x0E, 0xBB, 0x06, 0x84, 0x0E,
- .byte 0xC1, 0x06, 0x81, 0x0E, 0xC6, 0x06, 0x7F, 0x0E, 0xCC, 0x06, 0x7C, 0x0E, 0xD2, 0x06, 0x79, 0x0E,
- .byte 0xD7, 0x06, 0x77, 0x0E, 0xDD, 0x06, 0x74, 0x0E, 0xE3, 0x06, 0x71, 0x0E, 0xE8, 0x06, 0x6F, 0x0E,
- .byte 0xEE, 0x06, 0x6C, 0x0E, 0xF4, 0x06, 0x69, 0x0E, 0xF9, 0x06, 0x66, 0x0E, 0xFF, 0x06, 0x64, 0x0E,
- .byte 0x05, 0x07, 0x61, 0x0E, 0x0A, 0x07, 0x5E, 0x0E, 0x10, 0x07, 0x5B, 0x0E, 0x15, 0x07, 0x59, 0x0E,
- .byte 0x1B, 0x07, 0x56, 0x0E, 0x21, 0x07, 0x53, 0x0E, 0x26, 0x07, 0x50, 0x0E, 0x2C, 0x07, 0x4D, 0x0E,
- .byte 0x32, 0x07, 0x4B, 0x0E, 0x37, 0x07, 0x48, 0x0E, 0x3D, 0x07, 0x45, 0x0E, 0x42, 0x07, 0x42, 0x0E,
- .byte 0x48, 0x07, 0x3F, 0x0E, 0x4E, 0x07, 0x3C, 0x0E, 0x53, 0x07, 0x3A, 0x0E, 0x59, 0x07, 0x37, 0x0E,
- .byte 0x5E, 0x07, 0x34, 0x0E, 0x64, 0x07, 0x31, 0x0E, 0x6A, 0x07, 0x2E, 0x0E, 0x6F, 0x07, 0x2B, 0x0E,
- .byte 0x75, 0x07, 0x28, 0x0E, 0x7A, 0x07, 0x25, 0x0E, 0x80, 0x07, 0x22, 0x0E, 0x85, 0x07, 0x1F, 0x0E,
- .byte 0x8B, 0x07, 0x1C, 0x0E, 0x90, 0x07, 0x19, 0x0E, 0x96, 0x07, 0x16, 0x0E, 0x9B, 0x07, 0x13, 0x0E,
- .byte 0xA1, 0x07, 0x10, 0x0E, 0xA6, 0x07, 0x0D, 0x0E, 0xAC, 0x07, 0x0A, 0x0E, 0xB2, 0x07, 0x07, 0x0E,
- .byte 0xB7, 0x07, 0x04, 0x0E, 0xBD, 0x07, 0x01, 0x0E, 0xC2, 0x07, 0xFE, 0x0D, 0xC8, 0x07, 0xFB, 0x0D,
- .byte 0xCD, 0x07, 0xF8, 0x0D, 0xD2, 0x07, 0xF5, 0x0D, 0xD8, 0x07, 0xF2, 0x0D, 0xDD, 0x07, 0xEF, 0x0D,
- .byte 0xE3, 0x07, 0xEC, 0x0D, 0xE8, 0x07, 0xE9, 0x0D, 0xEE, 0x07, 0xE6, 0x0D, 0xF3, 0x07, 0xE3, 0x0D,
- .byte 0xF9, 0x07, 0xDF, 0x0D, 0xFE, 0x07, 0xDC, 0x0D, 0x04, 0x08, 0xD9, 0x0D, 0x09, 0x08, 0xD6, 0x0D,
- .byte 0x0E, 0x08, 0xD3, 0x0D, 0x14, 0x08, 0xD0, 0x0D, 0x19, 0x08, 0xCC, 0x0D, 0x1F, 0x08, 0xC9, 0x0D,
- .byte 0x24, 0x08, 0xC6, 0x0D, 0x2A, 0x08, 0xC3, 0x0D, 0x2F, 0x08, 0xC0, 0x0D, 0x34, 0x08, 0xBC, 0x0D,
- .byte 0x3A, 0x08, 0xB9, 0x0D, 0x3F, 0x08, 0xB6, 0x0D, 0x45, 0x08, 0xB3, 0x0D, 0x4A, 0x08, 0xB0, 0x0D,
- .byte 0x4F, 0x08, 0xAC, 0x0D, 0x55, 0x08, 0xA9, 0x0D, 0x5A, 0x08, 0xA6, 0x0D, 0x5F, 0x08, 0xA2, 0x0D,
- .byte 0x65, 0x08, 0x9F, 0x0D, 0x6A, 0x08, 0x9C, 0x0D, 0x6F, 0x08, 0x99, 0x0D, 0x75, 0x08, 0x95, 0x0D,
- .byte 0x7A, 0x08, 0x92, 0x0D, 0x7F, 0x08, 0x8F, 0x0D, 0x85, 0x08, 0x8B, 0x0D, 0x8A, 0x08, 0x88, 0x0D,
- .byte 0x8F, 0x08, 0x85, 0x0D, 0x95, 0x08, 0x81, 0x0D, 0x9A, 0x08, 0x7E, 0x0D, 0x9F, 0x08, 0x7A, 0x0D,
- .byte 0xA5, 0x08, 0x77, 0x0D, 0xAA, 0x08, 0x74, 0x0D, 0xAF, 0x08, 0x70, 0x0D, 0xB4, 0x08, 0x6D, 0x0D,
- .byte 0xBA, 0x08, 0x69, 0x0D, 0xBF, 0x08, 0x66, 0x0D, 0xC4, 0x08, 0x62, 0x0D, 0xC9, 0x08, 0x5F, 0x0D,
- .byte 0xCF, 0x08, 0x5C, 0x0D, 0xD4, 0x08, 0x58, 0x0D, 0xD9, 0x08, 0x55, 0x0D, 0xDE, 0x08, 0x51, 0x0D,
- .byte 0xE4, 0x08, 0x4E, 0x0D, 0xE9, 0x08, 0x4A, 0x0D, 0xEE, 0x08, 0x47, 0x0D, 0xF3, 0x08, 0x43, 0x0D,
- .byte 0xF8, 0x08, 0x40, 0x0D, 0xFE, 0x08, 0x3C, 0x0D, 0x03, 0x09, 0x39, 0x0D, 0x08, 0x09, 0x35, 0x0D,
- .byte 0x0D, 0x09, 0x32, 0x0D, 0x12, 0x09, 0x2E, 0x0D, 0x18, 0x09, 0x2A, 0x0D, 0x1D, 0x09, 0x27, 0x0D,
- .byte 0x22, 0x09, 0x23, 0x0D, 0x27, 0x09, 0x20, 0x0D, 0x2C, 0x09, 0x1C, 0x0D, 0x31, 0x09, 0x18, 0x0D,
- .byte 0x37, 0x09, 0x15, 0x0D, 0x3C, 0x09, 0x11, 0x0D, 0x41, 0x09, 0x0E, 0x0D, 0x46, 0x09, 0x0A, 0x0D,
- .byte 0x4B, 0x09, 0x06, 0x0D, 0x50, 0x09, 0x03, 0x0D, 0x55, 0x09, 0xFF, 0x0C, 0x5A, 0x09, 0xFB, 0x0C,
- .byte 0x5F, 0x09, 0xF8, 0x0C, 0x65, 0x09, 0xF4, 0x0C, 0x6A, 0x09, 0xF0, 0x0C, 0x6F, 0x09, 0xED, 0x0C,
- .byte 0x74, 0x09, 0xE9, 0x0C, 0x79, 0x09, 0xE5, 0x0C, 0x7E, 0x09, 0xE1, 0x0C, 0x83, 0x09, 0xDE, 0x0C,
- .byte 0x88, 0x09, 0xDA, 0x0C, 0x8D, 0x09, 0xD6, 0x0C, 0x92, 0x09, 0xD2, 0x0C, 0x97, 0x09, 0xCF, 0x0C,
- .byte 0x9C, 0x09, 0xCB, 0x0C, 0xA1, 0x09, 0xC7, 0x0C, 0xA6, 0x09, 0xC3, 0x0C, 0xAB, 0x09, 0xC0, 0x0C,
- .byte 0xB0, 0x09, 0xBC, 0x0C, 0xB5, 0x09, 0xB8, 0x0C, 0xBA, 0x09, 0xB4, 0x0C, 0xBF, 0x09, 0xB0, 0x0C,
- .byte 0xC4, 0x09, 0xAC, 0x0C, 0xC9, 0x09, 0xA9, 0x0C, 0xCE, 0x09, 0xA5, 0x0C, 0xD3, 0x09, 0xA1, 0x0C,
- .byte 0xD8, 0x09, 0x9D, 0x0C, 0xDD, 0x09, 0x99, 0x0C, 0xE2, 0x09, 0x95, 0x0C, 0xE7, 0x09, 0x91, 0x0C,
- .byte 0xEC, 0x09, 0x8E, 0x0C, 0xF1, 0x09, 0x8A, 0x0C, 0xF6, 0x09, 0x86, 0x0C, 0xFB, 0x09, 0x82, 0x0C,
- .byte 0xFF, 0x09, 0x7E, 0x0C, 0x04, 0x0A, 0x7A, 0x0C, 0x09, 0x0A, 0x76, 0x0C, 0x0E, 0x0A, 0x72, 0x0C,
- .byte 0x13, 0x0A, 0x6E, 0x0C, 0x18, 0x0A, 0x6A, 0x0C, 0x1D, 0x0A, 0x66, 0x0C, 0x22, 0x0A, 0x62, 0x0C,
- .byte 0x26, 0x0A, 0x5E, 0x0C, 0x2B, 0x0A, 0x5A, 0x0C, 0x30, 0x0A, 0x56, 0x0C, 0x35, 0x0A, 0x52, 0x0C,
- .byte 0x3A, 0x0A, 0x4E, 0x0C, 0x3F, 0x0A, 0x4A, 0x0C, 0x44, 0x0A, 0x46, 0x0C, 0x48, 0x0A, 0x42, 0x0C,
- .byte 0x4D, 0x0A, 0x3E, 0x0C, 0x52, 0x0A, 0x3A, 0x0C, 0x57, 0x0A, 0x36, 0x0C, 0x5C, 0x0A, 0x32, 0x0C,
- .byte 0x60, 0x0A, 0x2E, 0x0C, 0x65, 0x0A, 0x2A, 0x0C, 0x6A, 0x0A, 0x26, 0x0C, 0x6F, 0x0A, 0x22, 0x0C,
- .byte 0x73, 0x0A, 0x1E, 0x0C, 0x78, 0x0A, 0x19, 0x0C, 0x7D, 0x0A, 0x15, 0x0C, 0x82, 0x0A, 0x11, 0x0C,
- .byte 0x86, 0x0A, 0x0D, 0x0C, 0x8B, 0x0A, 0x09, 0x0C, 0x90, 0x0A, 0x05, 0x0C, 0x95, 0x0A, 0x01, 0x0C,
- .byte 0x99, 0x0A, 0xFC, 0x0B, 0x9E, 0x0A, 0xF8, 0x0B, 0xA3, 0x0A, 0xF4, 0x0B, 0xA7, 0x0A, 0xF0, 0x0B,
- .byte 0xAC, 0x0A, 0xEC, 0x0B, 0xB1, 0x0A, 0xE8, 0x0B, 0xB5, 0x0A, 0xE3, 0x0B, 0xBA, 0x0A, 0xDF, 0x0B,
- .byte 0xBF, 0x0A, 0xDB, 0x0B, 0xC3, 0x0A, 0xD7, 0x0B, 0xC8, 0x0A, 0xD2, 0x0B, 0xCD, 0x0A, 0xCE, 0x0B,
- .byte 0xD1, 0x0A, 0xCA, 0x0B, 0xD6, 0x0A, 0xC6, 0x0B, 0xDB, 0x0A, 0xC1, 0x0B, 0xDF, 0x0A, 0xBD, 0x0B,
- .byte 0xE4, 0x0A, 0xB9, 0x0B, 0xE8, 0x0A, 0xB5, 0x0B, 0xED, 0x0A, 0xB0, 0x0B, 0xF2, 0x0A, 0xAC, 0x0B,
- .byte 0xF6, 0x0A, 0xA8, 0x0B, 0xFB, 0x0A, 0xA3, 0x0B, 0xFF, 0x0A, 0x9F, 0x0B, 0x04, 0x0B, 0x9B, 0x0B,
- .byte 0x08, 0x0B, 0x97, 0x0B, 0x0D, 0x0B, 0x92, 0x0B, 0x11, 0x0B, 0x8E, 0x0B, 0x16, 0x0B, 0x89, 0x0B,
- .byte 0x1B, 0x0B, 0x85, 0x0B, 0x1F, 0x0B, 0x81, 0x0B, 0x24, 0x0B, 0x7C, 0x0B, 0x28, 0x0B, 0x78, 0x0B,
- .byte 0x2D, 0x0B, 0x74, 0x0B, 0x31, 0x0B, 0x6F, 0x0B, 0x36, 0x0B, 0x6B, 0x0B, 0x3A, 0x0B, 0x66, 0x0B,
- .byte 0x3E, 0x0B, 0x62, 0x0B, 0x43, 0x0B, 0x5E, 0x0B, 0x47, 0x0B, 0x59, 0x0B, 0x4C, 0x0B, 0x55, 0x0B,
- .byte 0x50, 0x0B, 0x50, 0x0B, 0x55, 0x0B, 0x4C, 0x0B, 0x59, 0x0B, 0x47, 0x0B, 0x5E, 0x0B, 0x43, 0x0B,
- .byte 0x62, 0x0B, 0x3E, 0x0B, 0x66, 0x0B, 0x3A, 0x0B, 0x6B, 0x0B, 0x36, 0x0B, 0x6F, 0x0B, 0x31, 0x0B,
- .byte 0x74, 0x0B, 0x2D, 0x0B, 0x78, 0x0B, 0x28, 0x0B, 0x7C, 0x0B, 0x24, 0x0B, 0x81, 0x0B, 0x1F, 0x0B,
- .byte 0x85, 0x0B, 0x1B, 0x0B, 0x89, 0x0B, 0x16, 0x0B, 0x8E, 0x0B, 0x11, 0x0B, 0x92, 0x0B, 0x0D, 0x0B,
- .byte 0x97, 0x0B, 0x08, 0x0B, 0x9B, 0x0B, 0x04, 0x0B, 0x9F, 0x0B, 0xFF, 0x0A, 0xA3, 0x0B, 0xFB, 0x0A,
- .byte 0xA8, 0x0B, 0xF6, 0x0A, 0xAC, 0x0B, 0xF2, 0x0A, 0xB0, 0x0B, 0xED, 0x0A, 0xB5, 0x0B, 0xE8, 0x0A,
- .byte 0xB9, 0x0B, 0xE4, 0x0A, 0xBD, 0x0B, 0xDF, 0x0A, 0xC1, 0x0B, 0xDB, 0x0A, 0xC6, 0x0B, 0xD6, 0x0A,
- .byte 0xCA, 0x0B, 0xD1, 0x0A, 0xCE, 0x0B, 0xCD, 0x0A, 0xD2, 0x0B, 0xC8, 0x0A, 0xD7, 0x0B, 0xC3, 0x0A,
- .byte 0xDB, 0x0B, 0xBF, 0x0A, 0xDF, 0x0B, 0xBA, 0x0A, 0xE3, 0x0B, 0xB5, 0x0A, 0xE8, 0x0B, 0xB1, 0x0A,
- .byte 0xEC, 0x0B, 0xAC, 0x0A, 0xF0, 0x0B, 0xA7, 0x0A, 0xF4, 0x0B, 0xA3, 0x0A, 0xF8, 0x0B, 0x9E, 0x0A,
- .byte 0xFC, 0x0B, 0x99, 0x0A, 0x01, 0x0C, 0x95, 0x0A, 0x05, 0x0C, 0x90, 0x0A, 0x09, 0x0C, 0x8B, 0x0A,
- .byte 0x0D, 0x0C, 0x86, 0x0A, 0x11, 0x0C, 0x82, 0x0A, 0x15, 0x0C, 0x7D, 0x0A, 0x19, 0x0C, 0x78, 0x0A,
- .byte 0x1E, 0x0C, 0x73, 0x0A, 0x22, 0x0C, 0x6F, 0x0A, 0x26, 0x0C, 0x6A, 0x0A, 0x2A, 0x0C, 0x65, 0x0A,
- .byte 0x2E, 0x0C, 0x60, 0x0A, 0x32, 0x0C, 0x5C, 0x0A, 0x36, 0x0C, 0x57, 0x0A, 0x3A, 0x0C, 0x52, 0x0A,
- .byte 0x3E, 0x0C, 0x4D, 0x0A, 0x42, 0x0C, 0x48, 0x0A, 0x46, 0x0C, 0x44, 0x0A, 0x4A, 0x0C, 0x3F, 0x0A,
- .byte 0x4E, 0x0C, 0x3A, 0x0A, 0x52, 0x0C, 0x35, 0x0A, 0x56, 0x0C, 0x30, 0x0A, 0x5A, 0x0C, 0x2B, 0x0A,
- .byte 0x5E, 0x0C, 0x26, 0x0A, 0x62, 0x0C, 0x22, 0x0A, 0x66, 0x0C, 0x1D, 0x0A, 0x6A, 0x0C, 0x18, 0x0A,
- .byte 0x6E, 0x0C, 0x13, 0x0A, 0x72, 0x0C, 0x0E, 0x0A, 0x76, 0x0C, 0x09, 0x0A, 0x7A, 0x0C, 0x04, 0x0A,
- .byte 0x7E, 0x0C, 0xFF, 0x09, 0x82, 0x0C, 0xFB, 0x09, 0x86, 0x0C, 0xF6, 0x09, 0x8A, 0x0C, 0xF1, 0x09,
- .byte 0x8E, 0x0C, 0xEC, 0x09, 0x91, 0x0C, 0xE7, 0x09, 0x95, 0x0C, 0xE2, 0x09, 0x99, 0x0C, 0xDD, 0x09,
- .byte 0x9D, 0x0C, 0xD8, 0x09, 0xA1, 0x0C, 0xD3, 0x09, 0xA5, 0x0C, 0xCE, 0x09, 0xA9, 0x0C, 0xC9, 0x09,
- .byte 0xAC, 0x0C, 0xC4, 0x09, 0xB0, 0x0C, 0xBF, 0x09, 0xB4, 0x0C, 0xBA, 0x09, 0xB8, 0x0C, 0xB5, 0x09,
- .byte 0xBC, 0x0C, 0xB0, 0x09, 0xC0, 0x0C, 0xAB, 0x09, 0xC3, 0x0C, 0xA6, 0x09, 0xC7, 0x0C, 0xA1, 0x09,
- .byte 0xCB, 0x0C, 0x9C, 0x09, 0xCF, 0x0C, 0x97, 0x09, 0xD2, 0x0C, 0x92, 0x09, 0xD6, 0x0C, 0x8D, 0x09,
- .byte 0xDA, 0x0C, 0x88, 0x09, 0xDE, 0x0C, 0x83, 0x09, 0xE1, 0x0C, 0x7E, 0x09, 0xE5, 0x0C, 0x79, 0x09,
- .byte 0xE9, 0x0C, 0x74, 0x09, 0xED, 0x0C, 0x6F, 0x09, 0xF0, 0x0C, 0x6A, 0x09, 0xF4, 0x0C, 0x65, 0x09,
- .byte 0xF8, 0x0C, 0x5F, 0x09, 0xFB, 0x0C, 0x5A, 0x09, 0xFF, 0x0C, 0x55, 0x09, 0x03, 0x0D, 0x50, 0x09,
- .byte 0x06, 0x0D, 0x4B, 0x09, 0x0A, 0x0D, 0x46, 0x09, 0x0E, 0x0D, 0x41, 0x09, 0x11, 0x0D, 0x3C, 0x09,
- .byte 0x15, 0x0D, 0x37, 0x09, 0x18, 0x0D, 0x31, 0x09, 0x1C, 0x0D, 0x2C, 0x09, 0x20, 0x0D, 0x27, 0x09,
- .byte 0x23, 0x0D, 0x22, 0x09, 0x27, 0x0D, 0x1D, 0x09, 0x2A, 0x0D, 0x18, 0x09, 0x2E, 0x0D, 0x12, 0x09,
- .byte 0x32, 0x0D, 0x0D, 0x09, 0x35, 0x0D, 0x08, 0x09, 0x39, 0x0D, 0x03, 0x09, 0x3C, 0x0D, 0xFE, 0x08,
- .byte 0x40, 0x0D, 0xF8, 0x08, 0x43, 0x0D, 0xF3, 0x08, 0x47, 0x0D, 0xEE, 0x08, 0x4A, 0x0D, 0xE9, 0x08,
- .byte 0x4E, 0x0D, 0xE4, 0x08, 0x51, 0x0D, 0xDE, 0x08, 0x55, 0x0D, 0xD9, 0x08, 0x58, 0x0D, 0xD4, 0x08,
- .byte 0x5C, 0x0D, 0xCF, 0x08, 0x5F, 0x0D, 0xC9, 0x08, 0x62, 0x0D, 0xC4, 0x08, 0x66, 0x0D, 0xBF, 0x08,
- .byte 0x69, 0x0D, 0xBA, 0x08, 0x6D, 0x0D, 0xB4, 0x08, 0x70, 0x0D, 0xAF, 0x08, 0x74, 0x0D, 0xAA, 0x08,
- .byte 0x77, 0x0D, 0xA5, 0x08, 0x7A, 0x0D, 0x9F, 0x08, 0x7E, 0x0D, 0x9A, 0x08, 0x81, 0x0D, 0x95, 0x08,
- .byte 0x85, 0x0D, 0x8F, 0x08, 0x88, 0x0D, 0x8A, 0x08, 0x8B, 0x0D, 0x85, 0x08, 0x8F, 0x0D, 0x7F, 0x08,
- .byte 0x92, 0x0D, 0x7A, 0x08, 0x95, 0x0D, 0x75, 0x08, 0x99, 0x0D, 0x6F, 0x08, 0x9C, 0x0D, 0x6A, 0x08,
- .byte 0x9F, 0x0D, 0x65, 0x08, 0xA2, 0x0D, 0x5F, 0x08, 0xA6, 0x0D, 0x5A, 0x08, 0xA9, 0x0D, 0x55, 0x08,
- .byte 0xAC, 0x0D, 0x4F, 0x08, 0xB0, 0x0D, 0x4A, 0x08, 0xB3, 0x0D, 0x45, 0x08, 0xB6, 0x0D, 0x3F, 0x08,
- .byte 0xB9, 0x0D, 0x3A, 0x08, 0xBC, 0x0D, 0x34, 0x08, 0xC0, 0x0D, 0x2F, 0x08, 0xC3, 0x0D, 0x2A, 0x08,
- .byte 0xC6, 0x0D, 0x24, 0x08, 0xC9, 0x0D, 0x1F, 0x08, 0xCC, 0x0D, 0x19, 0x08, 0xD0, 0x0D, 0x14, 0x08,
- .byte 0xD3, 0x0D, 0x0E, 0x08, 0xD6, 0x0D, 0x09, 0x08, 0xD9, 0x0D, 0x04, 0x08, 0xDC, 0x0D, 0xFE, 0x07,
- .byte 0xDF, 0x0D, 0xF9, 0x07, 0xE3, 0x0D, 0xF3, 0x07, 0xE6, 0x0D, 0xEE, 0x07, 0xE9, 0x0D, 0xE8, 0x07,
- .byte 0xEC, 0x0D, 0xE3, 0x07, 0xEF, 0x0D, 0xDD, 0x07, 0xF2, 0x0D, 0xD8, 0x07, 0xF5, 0x0D, 0xD2, 0x07,
- .byte 0xF8, 0x0D, 0xCD, 0x07, 0xFB, 0x0D, 0xC8, 0x07, 0xFE, 0x0D, 0xC2, 0x07, 0x01, 0x0E, 0xBD, 0x07,
- .byte 0x04, 0x0E, 0xB7, 0x07, 0x07, 0x0E, 0xB2, 0x07, 0x0A, 0x0E, 0xAC, 0x07, 0x0D, 0x0E, 0xA6, 0x07,
- .byte 0x10, 0x0E, 0xA1, 0x07, 0x13, 0x0E, 0x9B, 0x07, 0x16, 0x0E, 0x96, 0x07, 0x19, 0x0E, 0x90, 0x07,
- .byte 0x1C, 0x0E, 0x8B, 0x07, 0x1F, 0x0E, 0x85, 0x07, 0x22, 0x0E, 0x80, 0x07, 0x25, 0x0E, 0x7A, 0x07,
- .byte 0x28, 0x0E, 0x75, 0x07, 0x2B, 0x0E, 0x6F, 0x07, 0x2E, 0x0E, 0x6A, 0x07, 0x31, 0x0E, 0x64, 0x07,
- .byte 0x34, 0x0E, 0x5E, 0x07, 0x37, 0x0E, 0x59, 0x07, 0x3A, 0x0E, 0x53, 0x07, 0x3C, 0x0E, 0x4E, 0x07,
- .byte 0x3F, 0x0E, 0x48, 0x07, 0x42, 0x0E, 0x42, 0x07, 0x45, 0x0E, 0x3D, 0x07, 0x48, 0x0E, 0x37, 0x07,
- .byte 0x4B, 0x0E, 0x32, 0x07, 0x4D, 0x0E, 0x2C, 0x07, 0x50, 0x0E, 0x26, 0x07, 0x53, 0x0E, 0x21, 0x07,
- .byte 0x56, 0x0E, 0x1B, 0x07, 0x59, 0x0E, 0x15, 0x07, 0x5B, 0x0E, 0x10, 0x07, 0x5E, 0x0E, 0x0A, 0x07,
- .byte 0x61, 0x0E, 0x05, 0x07, 0x64, 0x0E, 0xFF, 0x06, 0x66, 0x0E, 0xF9, 0x06, 0x69, 0x0E, 0xF4, 0x06,
- .byte 0x6C, 0x0E, 0xEE, 0x06, 0x6F, 0x0E, 0xE8, 0x06, 0x71, 0x0E, 0xE3, 0x06, 0x74, 0x0E, 0xDD, 0x06,
- .byte 0x77, 0x0E, 0xD7, 0x06, 0x79, 0x0E, 0xD2, 0x06, 0x7C, 0x0E, 0xCC, 0x06, 0x7F, 0x0E, 0xC6, 0x06,
- .byte 0x81, 0x0E, 0xC1, 0x06, 0x84, 0x0E, 0xBB, 0x06, 0x87, 0x0E, 0xB5, 0x06, 0x89, 0x0E, 0xAF, 0x06,
- .byte 0x8C, 0x0E, 0xAA, 0x06, 0x8F, 0x0E, 0xA4, 0x06, 0x91, 0x0E, 0x9E, 0x06, 0x94, 0x0E, 0x99, 0x06,
- .byte 0x96, 0x0E, 0x93, 0x06, 0x99, 0x0E, 0x8D, 0x06, 0x9B, 0x0E, 0x87, 0x06, 0x9E, 0x0E, 0x82, 0x06,
- .byte 0xA1, 0x0E, 0x7C, 0x06, 0xA3, 0x0E, 0x76, 0x06, 0xA6, 0x0E, 0x70, 0x06, 0xA8, 0x0E, 0x6B, 0x06,
- .byte 0xAB, 0x0E, 0x65, 0x06, 0xAD, 0x0E, 0x5F, 0x06, 0xB0, 0x0E, 0x59, 0x06, 0xB2, 0x0E, 0x54, 0x06,
- .byte 0xB5, 0x0E, 0x4E, 0x06, 0xB7, 0x0E, 0x48, 0x06, 0xBA, 0x0E, 0x42, 0x06, 0xBC, 0x0E, 0x3C, 0x06,
- .byte 0xBF, 0x0E, 0x37, 0x06, 0xC1, 0x0E, 0x31, 0x06, 0xC3, 0x0E, 0x2B, 0x06, 0xC6, 0x0E, 0x25, 0x06,
- .byte 0xC8, 0x0E, 0x1F, 0x06, 0xCB, 0x0E, 0x1A, 0x06, 0xCD, 0x0E, 0x14, 0x06, 0xCF, 0x0E, 0x0E, 0x06,
- .byte 0xD2, 0x0E, 0x08, 0x06, 0xD4, 0x0E, 0x02, 0x06, 0xD6, 0x0E, 0xFD, 0x05, 0xD9, 0x0E, 0xF7, 0x05,
- .byte 0xDB, 0x0E, 0xF1, 0x05, 0xDD, 0x0E, 0xEB, 0x05, 0xE0, 0x0E, 0xE5, 0x05, 0xE2, 0x0E, 0xDF, 0x05,
- .byte 0xE4, 0x0E, 0xDA, 0x05, 0xE7, 0x0E, 0xD4, 0x05, 0xE9, 0x0E, 0xCE, 0x05, 0xEB, 0x0E, 0xC8, 0x05,
- .byte 0xEE, 0x0E, 0xC2, 0x05, 0xF0, 0x0E, 0xBC, 0x05, 0xF2, 0x0E, 0xB6, 0x05, 0xF4, 0x0E, 0xB1, 0x05,
- .byte 0xF7, 0x0E, 0xAB, 0x05, 0xF9, 0x0E, 0xA5, 0x05, 0xFB, 0x0E, 0x9F, 0x05, 0xFD, 0x0E, 0x99, 0x05,
- .byte 0xFF, 0x0E, 0x93, 0x05, 0x02, 0x0F, 0x8D, 0x05, 0x04, 0x0F, 0x87, 0x05, 0x06, 0x0F, 0x81, 0x05,
- .byte 0x08, 0x0F, 0x7C, 0x05, 0x0A, 0x0F, 0x76, 0x05, 0x0C, 0x0F, 0x70, 0x05, 0x0E, 0x0F, 0x6A, 0x05,
- .byte 0x11, 0x0F, 0x64, 0x05, 0x13, 0x0F, 0x5E, 0x05, 0x15, 0x0F, 0x58, 0x05, 0x17, 0x0F, 0x52, 0x05,
- .byte 0x19, 0x0F, 0x4C, 0x05, 0x1B, 0x0F, 0x46, 0x05, 0x1D, 0x0F, 0x40, 0x05, 0x1F, 0x0F, 0x3A, 0x05,
- .byte 0x21, 0x0F, 0x34, 0x05, 0x23, 0x0F, 0x2F, 0x05, 0x25, 0x0F, 0x29, 0x05, 0x27, 0x0F, 0x23, 0x05,
- .byte 0x29, 0x0F, 0x1D, 0x05, 0x2B, 0x0F, 0x17, 0x05, 0x2D, 0x0F, 0x11, 0x05, 0x2F, 0x0F, 0x0B, 0x05,
- .byte 0x31, 0x0F, 0x05, 0x05, 0x33, 0x0F, 0xFF, 0x04, 0x35, 0x0F, 0xF9, 0x04, 0x37, 0x0F, 0xF3, 0x04,
- .byte 0x39, 0x0F, 0xED, 0x04, 0x3B, 0x0F, 0xE7, 0x04, 0x3D, 0x0F, 0xE1, 0x04, 0x3F, 0x0F, 0xDB, 0x04,
- .byte 0x41, 0x0F, 0xD5, 0x04, 0x43, 0x0F, 0xCF, 0x04, 0x45, 0x0F, 0xC9, 0x04, 0x46, 0x0F, 0xC3, 0x04,
- .byte 0x48, 0x0F, 0xBD, 0x04, 0x4A, 0x0F, 0xB7, 0x04, 0x4C, 0x0F, 0xB1, 0x04, 0x4E, 0x0F, 0xAB, 0x04,
- .byte 0x50, 0x0F, 0xA5, 0x04, 0x51, 0x0F, 0x9F, 0x04, 0x53, 0x0F, 0x99, 0x04, 0x55, 0x0F, 0x93, 0x04,
- .byte 0x57, 0x0F, 0x8D, 0x04, 0x59, 0x0F, 0x87, 0x04, 0x5A, 0x0F, 0x81, 0x04, 0x5C, 0x0F, 0x7B, 0x04,
- .byte 0x5E, 0x0F, 0x75, 0x04, 0x60, 0x0F, 0x6F, 0x04, 0x61, 0x0F, 0x69, 0x04, 0x63, 0x0F, 0x63, 0x04,
- .byte 0x65, 0x0F, 0x5D, 0x04, 0x67, 0x0F, 0x57, 0x04, 0x68, 0x0F, 0x51, 0x04, 0x6A, 0x0F, 0x4B, 0x04,
- .byte 0x6C, 0x0F, 0x44, 0x04, 0x6D, 0x0F, 0x3E, 0x04, 0x6F, 0x0F, 0x38, 0x04, 0x71, 0x0F, 0x32, 0x04,
- .byte 0x72, 0x0F, 0x2C, 0x04, 0x74, 0x0F, 0x26, 0x04, 0x76, 0x0F, 0x20, 0x04, 0x77, 0x0F, 0x1A, 0x04,
- .byte 0x79, 0x0F, 0x14, 0x04, 0x7A, 0x0F, 0x0E, 0x04, 0x7C, 0x0F, 0x08, 0x04, 0x7D, 0x0F, 0x02, 0x04,
- .byte 0x7F, 0x0F, 0xFC, 0x03, 0x81, 0x0F, 0xF6, 0x03, 0x82, 0x0F, 0xEF, 0x03, 0x84, 0x0F, 0xE9, 0x03,
- .byte 0x85, 0x0F, 0xE3, 0x03, 0x87, 0x0F, 0xDD, 0x03, 0x88, 0x0F, 0xD7, 0x03, 0x8A, 0x0F, 0xD1, 0x03,
- .byte 0x8B, 0x0F, 0xCB, 0x03, 0x8D, 0x0F, 0xC5, 0x03, 0x8E, 0x0F, 0xBF, 0x03, 0x90, 0x0F, 0xB9, 0x03,
- .byte 0x91, 0x0F, 0xB2, 0x03, 0x93, 0x0F, 0xAC, 0x03, 0x94, 0x0F, 0xA6, 0x03, 0x95, 0x0F, 0xA0, 0x03,
- .byte 0x97, 0x0F, 0x9A, 0x03, 0x98, 0x0F, 0x94, 0x03, 0x9A, 0x0F, 0x8E, 0x03, 0x9B, 0x0F, 0x88, 0x03,
- .byte 0x9C, 0x0F, 0x81, 0x03, 0x9E, 0x0F, 0x7B, 0x03, 0x9F, 0x0F, 0x75, 0x03, 0xA1, 0x0F, 0x6F, 0x03,
- .byte 0xA2, 0x0F, 0x69, 0x03, 0xA3, 0x0F, 0x63, 0x03, 0xA5, 0x0F, 0x5D, 0x03, 0xA6, 0x0F, 0x56, 0x03,
- .byte 0xA7, 0x0F, 0x50, 0x03, 0xA8, 0x0F, 0x4A, 0x03, 0xAA, 0x0F, 0x44, 0x03, 0xAB, 0x0F, 0x3E, 0x03,
- .byte 0xAC, 0x0F, 0x38, 0x03, 0xAE, 0x0F, 0x32, 0x03, 0xAF, 0x0F, 0x2B, 0x03, 0xB0, 0x0F, 0x25, 0x03,
- .byte 0xB1, 0x0F, 0x1F, 0x03, 0xB3, 0x0F, 0x19, 0x03, 0xB4, 0x0F, 0x13, 0x03, 0xB5, 0x0F, 0x0D, 0x03,
- .byte 0xB6, 0x0F, 0x06, 0x03, 0xB7, 0x0F, 0x00, 0x03, 0xB8, 0x0F, 0xFA, 0x02, 0xBA, 0x0F, 0xF4, 0x02,
- .byte 0xBB, 0x0F, 0xEE, 0x02, 0xBC, 0x0F, 0xE8, 0x02, 0xBD, 0x0F, 0xE1, 0x02, 0xBE, 0x0F, 0xDB, 0x02,
- .byte 0xBF, 0x0F, 0xD5, 0x02, 0xC0, 0x0F, 0xCF, 0x02, 0xC2, 0x0F, 0xC9, 0x02, 0xC3, 0x0F, 0xC2, 0x02,
- .byte 0xC4, 0x0F, 0xBC, 0x02, 0xC5, 0x0F, 0xB6, 0x02, 0xC6, 0x0F, 0xB0, 0x02, 0xC7, 0x0F, 0xAA, 0x02,
- .byte 0xC8, 0x0F, 0xA3, 0x02, 0xC9, 0x0F, 0x9D, 0x02, 0xCA, 0x0F, 0x97, 0x02, 0xCB, 0x0F, 0x91, 0x02,
- .byte 0xCC, 0x0F, 0x8B, 0x02, 0xCD, 0x0F, 0x84, 0x02, 0xCE, 0x0F, 0x7E, 0x02, 0xCF, 0x0F, 0x78, 0x02,
- .byte 0xD0, 0x0F, 0x72, 0x02, 0xD1, 0x0F, 0x6C, 0x02, 0xD2, 0x0F, 0x65, 0x02, 0xD3, 0x0F, 0x5F, 0x02,
- .byte 0xD4, 0x0F, 0x59, 0x02, 0xD5, 0x0F, 0x53, 0x02, 0xD5, 0x0F, 0x4D, 0x02, 0xD6, 0x0F, 0x46, 0x02,
- .byte 0xD7, 0x0F, 0x40, 0x02, 0xD8, 0x0F, 0x3A, 0x02, 0xD9, 0x0F, 0x34, 0x02, 0xDA, 0x0F, 0x2D, 0x02,
- .byte 0xDB, 0x0F, 0x27, 0x02, 0xDC, 0x0F, 0x21, 0x02, 0xDC, 0x0F, 0x1B, 0x02, 0xDD, 0x0F, 0x15, 0x02,
- .byte 0xDE, 0x0F, 0x0E, 0x02, 0xDF, 0x0F, 0x08, 0x02, 0xE0, 0x0F, 0x02, 0x02, 0xE0, 0x0F, 0xFC, 0x01,
- .byte 0xE1, 0x0F, 0xF5, 0x01, 0xE2, 0x0F, 0xEF, 0x01, 0xE3, 0x0F, 0xE9, 0x01, 0xE3, 0x0F, 0xE3, 0x01,
- .byte 0xE4, 0x0F, 0xDC, 0x01, 0xE5, 0x0F, 0xD6, 0x01, 0xE6, 0x0F, 0xD0, 0x01, 0xE6, 0x0F, 0xCA, 0x01,
- .byte 0xE7, 0x0F, 0xC3, 0x01, 0xE8, 0x0F, 0xBD, 0x01, 0xE8, 0x0F, 0xB7, 0x01, 0xE9, 0x0F, 0xB1, 0x01,
- .byte 0xEA, 0x0F, 0xAA, 0x01, 0xEA, 0x0F, 0xA4, 0x01, 0xEB, 0x0F, 0x9E, 0x01, 0xEC, 0x0F, 0x98, 0x01,
- .byte 0xEC, 0x0F, 0x91, 0x01, 0xED, 0x0F, 0x8B, 0x01, 0xED, 0x0F, 0x85, 0x01, 0xEE, 0x0F, 0x7F, 0x01,
- .byte 0xEF, 0x0F, 0x78, 0x01, 0xEF, 0x0F, 0x72, 0x01, 0xF0, 0x0F, 0x6C, 0x01, 0xF0, 0x0F, 0x66, 0x01,
- .byte 0xF1, 0x0F, 0x5F, 0x01, 0xF1, 0x0F, 0x59, 0x01, 0xF2, 0x0F, 0x53, 0x01, 0xF2, 0x0F, 0x4D, 0x01,
- .byte 0xF3, 0x0F, 0x46, 0x01, 0xF3, 0x0F, 0x40, 0x01, 0xF4, 0x0F, 0x3A, 0x01, 0xF4, 0x0F, 0x34, 0x01,
- .byte 0xF5, 0x0F, 0x2D, 0x01, 0xF5, 0x0F, 0x27, 0x01, 0xF6, 0x0F, 0x21, 0x01, 0xF6, 0x0F, 0x1B, 0x01,
- .byte 0xF7, 0x0F, 0x14, 0x01, 0xF7, 0x0F, 0x0E, 0x01, 0xF8, 0x0F, 0x08, 0x01, 0xF8, 0x0F, 0x01, 0x01,
- .byte 0xF8, 0x0F, 0xFB, 0x00, 0xF9, 0x0F, 0xF5, 0x00, 0xF9, 0x0F, 0xEF, 0x00, 0xF9, 0x0F, 0xE8, 0x00,
- .byte 0xFA, 0x0F, 0xE2, 0x00, 0xFA, 0x0F, 0xDC, 0x00, 0xFA, 0x0F, 0xD6, 0x00, 0xFB, 0x0F, 0xCF, 0x00,
- .byte 0xFB, 0x0F, 0xC9, 0x00, 0xFB, 0x0F, 0xC3, 0x00, 0xFC, 0x0F, 0xBC, 0x00, 0xFC, 0x0F, 0xB6, 0x00,
- .byte 0xFC, 0x0F, 0xB0, 0x00, 0xFC, 0x0F, 0xAA, 0x00, 0xFD, 0x0F, 0xA3, 0x00, 0xFD, 0x0F, 0x9D, 0x00,
- .byte 0xFD, 0x0F, 0x97, 0x00, 0xFD, 0x0F, 0x90, 0x00, 0xFE, 0x0F, 0x8A, 0x00, 0xFE, 0x0F, 0x84, 0x00,
- .byte 0xFE, 0x0F, 0x7E, 0x00, 0xFE, 0x0F, 0x77, 0x00, 0xFE, 0x0F, 0x71, 0x00, 0xFF, 0x0F, 0x6B, 0x00,
- .byte 0xFF, 0x0F, 0x65, 0x00, 0xFF, 0x0F, 0x5E, 0x00, 0xFF, 0x0F, 0x58, 0x00, 0xFF, 0x0F, 0x52, 0x00,
- .byte 0xFF, 0x0F, 0x4B, 0x00, 0xFF, 0x0F, 0x45, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x10, 0x39, 0x00,
- .byte 0x00, 0x10, 0x32, 0x00, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x10, 0x26, 0x00, 0x00, 0x10, 0x1F, 0x00,
- .byte 0x00, 0x10, 0x19, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x10, 0x0D, 0x00, 0x00, 0x10, 0x06, 0x00,
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xED, 0xFF,
- .byte 0x00, 0x10, 0xE7, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xD4, 0xFF,
- .byte 0x00, 0x10, 0xCE, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10, 0xC1, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF,
- .byte 0xFF, 0x0F, 0xB5, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF,
- .byte 0xFF, 0x0F, 0x9B, 0xFF, 0xFF, 0x0F, 0x95, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x89, 0xFF,
- .byte 0xFE, 0x0F, 0x82, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F, 0x76, 0xFF, 0xFD, 0x0F, 0x70, 0xFF,
- .byte 0xFD, 0x0F, 0x69, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F, 0x5D, 0xFF, 0xFC, 0x0F, 0x56, 0xFF,
- .byte 0xFC, 0x0F, 0x50, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F, 0x44, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF,
- .byte 0xFB, 0x0F, 0x37, 0xFF, 0xFB, 0x0F, 0x31, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x24, 0xFF,
- .byte 0xFA, 0x0F, 0x1E, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x0B, 0xFF,
- .byte 0xF8, 0x0F, 0x05, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0xF8, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE,
- .byte 0xF7, 0x0F, 0xEC, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F, 0xDF, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE,
- .byte 0xF5, 0x0F, 0xD3, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F, 0xC6, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE,
- .byte 0xF3, 0x0F, 0xBA, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F, 0xAD, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE,
- .byte 0xF1, 0x0F, 0xA1, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F, 0x94, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE,
- .byte 0xEF, 0x0F, 0x88, 0xFE, 0xEE, 0x0F, 0x81, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x75, 0xFE,
- .byte 0xEC, 0x0F, 0x6F, 0xFE, 0xEC, 0x0F, 0x68, 0xFE, 0xEB, 0x0F, 0x62, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE,
- .byte 0xEA, 0x0F, 0x56, 0xFE, 0xE9, 0x0F, 0x4F, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x43, 0xFE,
- .byte 0xE7, 0x0F, 0x3D, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F, 0x30, 0xFE, 0xE5, 0x0F, 0x2A, 0xFE,
- .byte 0xE4, 0x0F, 0x24, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F, 0x17, 0xFE, 0xE2, 0x0F, 0x11, 0xFE,
- .byte 0xE1, 0x0F, 0x0B, 0xFE, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F, 0xFE, 0xFD, 0xDF, 0x0F, 0xF8, 0xFD,
- .byte 0xDE, 0x0F, 0xF2, 0xFD, 0xDD, 0x0F, 0xEB, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xDF, 0xFD,
- .byte 0xDB, 0x0F, 0xD9, 0xFD, 0xDA, 0x0F, 0xD3, 0xFD, 0xD9, 0x0F, 0xCC, 0xFD, 0xD8, 0x0F, 0xC6, 0xFD,
- .byte 0xD7, 0x0F, 0xC0, 0xFD, 0xD6, 0x0F, 0xBA, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xAD, 0xFD,
- .byte 0xD4, 0x0F, 0xA7, 0xFD, 0xD3, 0x0F, 0xA1, 0xFD, 0xD2, 0x0F, 0x9B, 0xFD, 0xD1, 0x0F, 0x94, 0xFD,
- .byte 0xD0, 0x0F, 0x8E, 0xFD, 0xCF, 0x0F, 0x88, 0xFD, 0xCE, 0x0F, 0x82, 0xFD, 0xCD, 0x0F, 0x7C, 0xFD,
- .byte 0xCC, 0x0F, 0x75, 0xFD, 0xCB, 0x0F, 0x6F, 0xFD, 0xCA, 0x0F, 0x69, 0xFD, 0xC9, 0x0F, 0x63, 0xFD,
- .byte 0xC8, 0x0F, 0x5D, 0xFD, 0xC7, 0x0F, 0x56, 0xFD, 0xC6, 0x0F, 0x50, 0xFD, 0xC5, 0x0F, 0x4A, 0xFD,
- .byte 0xC4, 0x0F, 0x44, 0xFD, 0xC3, 0x0F, 0x3E, 0xFD, 0xC2, 0x0F, 0x37, 0xFD, 0xC0, 0x0F, 0x31, 0xFD,
- .byte 0xBF, 0x0F, 0x2B, 0xFD, 0xBE, 0x0F, 0x25, 0xFD, 0xBD, 0x0F, 0x1F, 0xFD, 0xBC, 0x0F, 0x18, 0xFD,
- .byte 0xBB, 0x0F, 0x12, 0xFD, 0xBA, 0x0F, 0x0C, 0xFD, 0xB8, 0x0F, 0x06, 0xFD, 0xB7, 0x0F, 0x00, 0xFD,
- .byte 0xB6, 0x0F, 0xFA, 0xFC, 0xB5, 0x0F, 0xF3, 0xFC, 0xB4, 0x0F, 0xED, 0xFC, 0xB3, 0x0F, 0xE7, 0xFC,
- .byte 0xB1, 0x0F, 0xE1, 0xFC, 0xB0, 0x0F, 0xDB, 0xFC, 0xAF, 0x0F, 0xD5, 0xFC, 0xAE, 0x0F, 0xCE, 0xFC,
- .byte 0xAC, 0x0F, 0xC8, 0xFC, 0xAB, 0x0F, 0xC2, 0xFC, 0xAA, 0x0F, 0xBC, 0xFC, 0xA8, 0x0F, 0xB6, 0xFC,
- .byte 0xA7, 0x0F, 0xB0, 0xFC, 0xA6, 0x0F, 0xAA, 0xFC, 0xA5, 0x0F, 0xA3, 0xFC, 0xA3, 0x0F, 0x9D, 0xFC,
- .byte 0xA2, 0x0F, 0x97, 0xFC, 0xA1, 0x0F, 0x91, 0xFC, 0x9F, 0x0F, 0x8B, 0xFC, 0x9E, 0x0F, 0x85, 0xFC,
- .byte 0x9C, 0x0F, 0x7F, 0xFC, 0x9B, 0x0F, 0x78, 0xFC, 0x9A, 0x0F, 0x72, 0xFC, 0x98, 0x0F, 0x6C, 0xFC,
- .byte 0x97, 0x0F, 0x66, 0xFC, 0x95, 0x0F, 0x60, 0xFC, 0x94, 0x0F, 0x5A, 0xFC, 0x93, 0x0F, 0x54, 0xFC,
- .byte 0x91, 0x0F, 0x4E, 0xFC, 0x90, 0x0F, 0x47, 0xFC, 0x8E, 0x0F, 0x41, 0xFC, 0x8D, 0x0F, 0x3B, 0xFC,
- .byte 0x8B, 0x0F, 0x35, 0xFC, 0x8A, 0x0F, 0x2F, 0xFC, 0x88, 0x0F, 0x29, 0xFC, 0x87, 0x0F, 0x23, 0xFC,
- .byte 0x85, 0x0F, 0x1D, 0xFC, 0x84, 0x0F, 0x17, 0xFC, 0x82, 0x0F, 0x11, 0xFC, 0x81, 0x0F, 0x0A, 0xFC,
- .byte 0x7F, 0x0F, 0x04, 0xFC, 0x7D, 0x0F, 0xFE, 0xFB, 0x7C, 0x0F, 0xF8, 0xFB, 0x7A, 0x0F, 0xF2, 0xFB,
- .byte 0x79, 0x0F, 0xEC, 0xFB, 0x77, 0x0F, 0xE6, 0xFB, 0x76, 0x0F, 0xE0, 0xFB, 0x74, 0x0F, 0xDA, 0xFB,
- .byte 0x72, 0x0F, 0xD4, 0xFB, 0x71, 0x0F, 0xCE, 0xFB, 0x6F, 0x0F, 0xC8, 0xFB, 0x6D, 0x0F, 0xC2, 0xFB,
- .byte 0x6C, 0x0F, 0xBC, 0xFB, 0x6A, 0x0F, 0xB5, 0xFB, 0x68, 0x0F, 0xAF, 0xFB, 0x67, 0x0F, 0xA9, 0xFB,
- .byte 0x65, 0x0F, 0xA3, 0xFB, 0x63, 0x0F, 0x9D, 0xFB, 0x61, 0x0F, 0x97, 0xFB, 0x60, 0x0F, 0x91, 0xFB,
- .byte 0x5E, 0x0F, 0x8B, 0xFB, 0x5C, 0x0F, 0x85, 0xFB, 0x5A, 0x0F, 0x7F, 0xFB, 0x59, 0x0F, 0x79, 0xFB,
- .byte 0x57, 0x0F, 0x73, 0xFB, 0x55, 0x0F, 0x6D, 0xFB, 0x53, 0x0F, 0x67, 0xFB, 0x51, 0x0F, 0x61, 0xFB,
- .byte 0x50, 0x0F, 0x5B, 0xFB, 0x4E, 0x0F, 0x55, 0xFB, 0x4C, 0x0F, 0x4F, 0xFB, 0x4A, 0x0F, 0x49, 0xFB,
- .byte 0x48, 0x0F, 0x43, 0xFB, 0x46, 0x0F, 0x3D, 0xFB, 0x45, 0x0F, 0x37, 0xFB, 0x43, 0x0F, 0x31, 0xFB,
- .byte 0x41, 0x0F, 0x2B, 0xFB, 0x3F, 0x0F, 0x25, 0xFB, 0x3D, 0x0F, 0x1F, 0xFB, 0x3B, 0x0F, 0x19, 0xFB,
- .byte 0x39, 0x0F, 0x13, 0xFB, 0x37, 0x0F, 0x0D, 0xFB, 0x35, 0x0F, 0x07, 0xFB, 0x33, 0x0F, 0x01, 0xFB,
- .byte 0x31, 0x0F, 0xFB, 0xFA, 0x2F, 0x0F, 0xF5, 0xFA, 0x2D, 0x0F, 0xEF, 0xFA, 0x2B, 0x0F, 0xE9, 0xFA,
- .byte 0x29, 0x0F, 0xE3, 0xFA, 0x27, 0x0F, 0xDD, 0xFA, 0x25, 0x0F, 0xD7, 0xFA, 0x23, 0x0F, 0xD1, 0xFA,
- .byte 0x21, 0x0F, 0xCC, 0xFA, 0x1F, 0x0F, 0xC6, 0xFA, 0x1D, 0x0F, 0xC0, 0xFA, 0x1B, 0x0F, 0xBA, 0xFA,
- .byte 0x19, 0x0F, 0xB4, 0xFA, 0x17, 0x0F, 0xAE, 0xFA, 0x15, 0x0F, 0xA8, 0xFA, 0x13, 0x0F, 0xA2, 0xFA,
- .byte 0x11, 0x0F, 0x9C, 0xFA, 0x0E, 0x0F, 0x96, 0xFA, 0x0C, 0x0F, 0x90, 0xFA, 0x0A, 0x0F, 0x8A, 0xFA,
- .byte 0x08, 0x0F, 0x84, 0xFA, 0x06, 0x0F, 0x7F, 0xFA, 0x04, 0x0F, 0x79, 0xFA, 0x02, 0x0F, 0x73, 0xFA,
- .byte 0xFF, 0x0E, 0x6D, 0xFA, 0xFD, 0x0E, 0x67, 0xFA, 0xFB, 0x0E, 0x61, 0xFA, 0xF9, 0x0E, 0x5B, 0xFA,
- .byte 0xF7, 0x0E, 0x55, 0xFA, 0xF4, 0x0E, 0x4F, 0xFA, 0xF2, 0x0E, 0x4A, 0xFA, 0xF0, 0x0E, 0x44, 0xFA,
- .byte 0xEE, 0x0E, 0x3E, 0xFA, 0xEB, 0x0E, 0x38, 0xFA, 0xE9, 0x0E, 0x32, 0xFA, 0xE7, 0x0E, 0x2C, 0xFA,
- .byte 0xE4, 0x0E, 0x26, 0xFA, 0xE2, 0x0E, 0x21, 0xFA, 0xE0, 0x0E, 0x1B, 0xFA, 0xDD, 0x0E, 0x15, 0xFA,
- .byte 0xDB, 0x0E, 0x0F, 0xFA, 0xD9, 0x0E, 0x09, 0xFA, 0xD6, 0x0E, 0x03, 0xFA, 0xD4, 0x0E, 0xFE, 0xF9,
- .byte 0xD2, 0x0E, 0xF8, 0xF9, 0xCF, 0x0E, 0xF2, 0xF9, 0xCD, 0x0E, 0xEC, 0xF9, 0xCB, 0x0E, 0xE6, 0xF9,
- .byte 0xC8, 0x0E, 0xE1, 0xF9, 0xC6, 0x0E, 0xDB, 0xF9, 0xC3, 0x0E, 0xD5, 0xF9, 0xC1, 0x0E, 0xCF, 0xF9,
- .byte 0xBF, 0x0E, 0xC9, 0xF9, 0xBC, 0x0E, 0xC4, 0xF9, 0xBA, 0x0E, 0xBE, 0xF9, 0xB7, 0x0E, 0xB8, 0xF9,
- .byte 0xB5, 0x0E, 0xB2, 0xF9, 0xB2, 0x0E, 0xAC, 0xF9, 0xB0, 0x0E, 0xA7, 0xF9, 0xAD, 0x0E, 0xA1, 0xF9,
- .byte 0xAB, 0x0E, 0x9B, 0xF9, 0xA8, 0x0E, 0x95, 0xF9, 0xA6, 0x0E, 0x90, 0xF9, 0xA3, 0x0E, 0x8A, 0xF9,
- .byte 0xA1, 0x0E, 0x84, 0xF9, 0x9E, 0x0E, 0x7E, 0xF9, 0x9B, 0x0E, 0x79, 0xF9, 0x99, 0x0E, 0x73, 0xF9,
- .byte 0x96, 0x0E, 0x6D, 0xF9, 0x94, 0x0E, 0x67, 0xF9, 0x91, 0x0E, 0x62, 0xF9, 0x8F, 0x0E, 0x5C, 0xF9,
- .byte 0x8C, 0x0E, 0x56, 0xF9, 0x89, 0x0E, 0x51, 0xF9, 0x87, 0x0E, 0x4B, 0xF9, 0x84, 0x0E, 0x45, 0xF9,
- .byte 0x81, 0x0E, 0x3F, 0xF9, 0x7F, 0x0E, 0x3A, 0xF9, 0x7C, 0x0E, 0x34, 0xF9, 0x79, 0x0E, 0x2E, 0xF9,
- .byte 0x77, 0x0E, 0x29, 0xF9, 0x74, 0x0E, 0x23, 0xF9, 0x71, 0x0E, 0x1D, 0xF9, 0x6F, 0x0E, 0x18, 0xF9,
- .byte 0x6C, 0x0E, 0x12, 0xF9, 0x69, 0x0E, 0x0C, 0xF9, 0x66, 0x0E, 0x07, 0xF9, 0x64, 0x0E, 0x01, 0xF9,
- .byte 0x61, 0x0E, 0xFB, 0xF8, 0x5E, 0x0E, 0xF6, 0xF8, 0x5B, 0x0E, 0xF0, 0xF8, 0x59, 0x0E, 0xEB, 0xF8,
- .byte 0x56, 0x0E, 0xE5, 0xF8, 0x53, 0x0E, 0xDF, 0xF8, 0x50, 0x0E, 0xDA, 0xF8, 0x4D, 0x0E, 0xD4, 0xF8,
- .byte 0x4B, 0x0E, 0xCE, 0xF8, 0x48, 0x0E, 0xC9, 0xF8, 0x45, 0x0E, 0xC3, 0xF8, 0x42, 0x0E, 0xBE, 0xF8,
- .byte 0x3F, 0x0E, 0xB8, 0xF8, 0x3C, 0x0E, 0xB2, 0xF8, 0x3A, 0x0E, 0xAD, 0xF8, 0x37, 0x0E, 0xA7, 0xF8,
- .byte 0x34, 0x0E, 0xA2, 0xF8, 0x31, 0x0E, 0x9C, 0xF8, 0x2E, 0x0E, 0x96, 0xF8, 0x2B, 0x0E, 0x91, 0xF8,
- .byte 0x28, 0x0E, 0x8B, 0xF8, 0x25, 0x0E, 0x86, 0xF8, 0x22, 0x0E, 0x80, 0xF8, 0x1F, 0x0E, 0x7B, 0xF8,
- .byte 0x1C, 0x0E, 0x75, 0xF8, 0x19, 0x0E, 0x70, 0xF8, 0x16, 0x0E, 0x6A, 0xF8, 0x13, 0x0E, 0x65, 0xF8,
- .byte 0x10, 0x0E, 0x5F, 0xF8, 0x0D, 0x0E, 0x5A, 0xF8, 0x0A, 0x0E, 0x54, 0xF8, 0x07, 0x0E, 0x4E, 0xF8,
- .byte 0x04, 0x0E, 0x49, 0xF8, 0x01, 0x0E, 0x43, 0xF8, 0xFE, 0x0D, 0x3E, 0xF8, 0xFB, 0x0D, 0x38, 0xF8,
- .byte 0xF8, 0x0D, 0x33, 0xF8, 0xF5, 0x0D, 0x2E, 0xF8, 0xF2, 0x0D, 0x28, 0xF8, 0xEF, 0x0D, 0x23, 0xF8,
- .byte 0xEC, 0x0D, 0x1D, 0xF8, 0xE9, 0x0D, 0x18, 0xF8, 0xE6, 0x0D, 0x12, 0xF8, 0xE3, 0x0D, 0x0D, 0xF8,
- .byte 0xDF, 0x0D, 0x07, 0xF8, 0xDC, 0x0D, 0x02, 0xF8, 0xD9, 0x0D, 0xFC, 0xF7, 0xD6, 0x0D, 0xF7, 0xF7,
- .byte 0xD3, 0x0D, 0xF2, 0xF7, 0xD0, 0x0D, 0xEC, 0xF7, 0xCC, 0x0D, 0xE7, 0xF7, 0xC9, 0x0D, 0xE1, 0xF7,
- .byte 0xC6, 0x0D, 0xDC, 0xF7, 0xC3, 0x0D, 0xD6, 0xF7, 0xC0, 0x0D, 0xD1, 0xF7, 0xBC, 0x0D, 0xCC, 0xF7,
- .byte 0xB9, 0x0D, 0xC6, 0xF7, 0xB6, 0x0D, 0xC1, 0xF7, 0xB3, 0x0D, 0xBB, 0xF7, 0xB0, 0x0D, 0xB6, 0xF7,
- .byte 0xAC, 0x0D, 0xB1, 0xF7, 0xA9, 0x0D, 0xAB, 0xF7, 0xA6, 0x0D, 0xA6, 0xF7, 0xA2, 0x0D, 0xA1, 0xF7,
- .byte 0x9F, 0x0D, 0x9B, 0xF7, 0x9C, 0x0D, 0x96, 0xF7, 0x99, 0x0D, 0x91, 0xF7, 0x95, 0x0D, 0x8B, 0xF7,
- .byte 0x92, 0x0D, 0x86, 0xF7, 0x8F, 0x0D, 0x81, 0xF7, 0x8B, 0x0D, 0x7B, 0xF7, 0x88, 0x0D, 0x76, 0xF7,
- .byte 0x85, 0x0D, 0x71, 0xF7, 0x81, 0x0D, 0x6B, 0xF7, 0x7E, 0x0D, 0x66, 0xF7, 0x7A, 0x0D, 0x61, 0xF7,
- .byte 0x77, 0x0D, 0x5B, 0xF7, 0x74, 0x0D, 0x56, 0xF7, 0x70, 0x0D, 0x51, 0xF7, 0x6D, 0x0D, 0x4C, 0xF7,
- .byte 0x69, 0x0D, 0x46, 0xF7, 0x66, 0x0D, 0x41, 0xF7, 0x62, 0x0D, 0x3C, 0xF7, 0x5F, 0x0D, 0x37, 0xF7,
- .byte 0x5C, 0x0D, 0x31, 0xF7, 0x58, 0x0D, 0x2C, 0xF7, 0x55, 0x0D, 0x27, 0xF7, 0x51, 0x0D, 0x22, 0xF7,
- .byte 0x4E, 0x0D, 0x1C, 0xF7, 0x4A, 0x0D, 0x17, 0xF7, 0x47, 0x0D, 0x12, 0xF7, 0x43, 0x0D, 0x0D, 0xF7,
- .byte 0x40, 0x0D, 0x08, 0xF7, 0x3C, 0x0D, 0x02, 0xF7, 0x39, 0x0D, 0xFD, 0xF6, 0x35, 0x0D, 0xF8, 0xF6,
- .byte 0x32, 0x0D, 0xF3, 0xF6, 0x2E, 0x0D, 0xEE, 0xF6, 0x2A, 0x0D, 0xE8, 0xF6, 0x27, 0x0D, 0xE3, 0xF6,
- .byte 0x23, 0x0D, 0xDE, 0xF6, 0x20, 0x0D, 0xD9, 0xF6, 0x1C, 0x0D, 0xD4, 0xF6, 0x18, 0x0D, 0xCF, 0xF6,
- .byte 0x15, 0x0D, 0xC9, 0xF6, 0x11, 0x0D, 0xC4, 0xF6, 0x0E, 0x0D, 0xBF, 0xF6, 0x0A, 0x0D, 0xBA, 0xF6,
- .byte 0x06, 0x0D, 0xB5, 0xF6, 0x03, 0x0D, 0xB0, 0xF6, 0xFF, 0x0C, 0xAB, 0xF6, 0xFB, 0x0C, 0xA6, 0xF6,
- .byte 0xF8, 0x0C, 0xA1, 0xF6, 0xF4, 0x0C, 0x9B, 0xF6, 0xF0, 0x0C, 0x96, 0xF6, 0xED, 0x0C, 0x91, 0xF6,
- .byte 0xE9, 0x0C, 0x8C, 0xF6, 0xE5, 0x0C, 0x87, 0xF6, 0xE1, 0x0C, 0x82, 0xF6, 0xDE, 0x0C, 0x7D, 0xF6,
- .byte 0xDA, 0x0C, 0x78, 0xF6, 0xD6, 0x0C, 0x73, 0xF6, 0xD2, 0x0C, 0x6E, 0xF6, 0xCF, 0x0C, 0x69, 0xF6,
- .byte 0xCB, 0x0C, 0x64, 0xF6, 0xC7, 0x0C, 0x5F, 0xF6, 0xC3, 0x0C, 0x5A, 0xF6, 0xC0, 0x0C, 0x55, 0xF6,
- .byte 0xBC, 0x0C, 0x50, 0xF6, 0xB8, 0x0C, 0x4B, 0xF6, 0xB4, 0x0C, 0x46, 0xF6, 0xB0, 0x0C, 0x41, 0xF6,
- .byte 0xAC, 0x0C, 0x3C, 0xF6, 0xA9, 0x0C, 0x37, 0xF6, 0xA5, 0x0C, 0x32, 0xF6, 0xA1, 0x0C, 0x2D, 0xF6,
- .byte 0x9D, 0x0C, 0x28, 0xF6, 0x99, 0x0C, 0x23, 0xF6, 0x95, 0x0C, 0x1E, 0xF6, 0x91, 0x0C, 0x19, 0xF6,
- .byte 0x8E, 0x0C, 0x14, 0xF6, 0x8A, 0x0C, 0x0F, 0xF6, 0x86, 0x0C, 0x0A, 0xF6, 0x82, 0x0C, 0x05, 0xF6,
- .byte 0x7E, 0x0C, 0x01, 0xF6, 0x7A, 0x0C, 0xFC, 0xF5, 0x76, 0x0C, 0xF7, 0xF5, 0x72, 0x0C, 0xF2, 0xF5,
- .byte 0x6E, 0x0C, 0xED, 0xF5, 0x6A, 0x0C, 0xE8, 0xF5, 0x66, 0x0C, 0xE3, 0xF5, 0x62, 0x0C, 0xDE, 0xF5,
- .byte 0x5E, 0x0C, 0xDA, 0xF5, 0x5A, 0x0C, 0xD5, 0xF5, 0x56, 0x0C, 0xD0, 0xF5, 0x52, 0x0C, 0xCB, 0xF5,
- .byte 0x4E, 0x0C, 0xC6, 0xF5, 0x4A, 0x0C, 0xC1, 0xF5, 0x46, 0x0C, 0xBC, 0xF5, 0x42, 0x0C, 0xB8, 0xF5,
- .byte 0x3E, 0x0C, 0xB3, 0xF5, 0x3A, 0x0C, 0xAE, 0xF5, 0x36, 0x0C, 0xA9, 0xF5, 0x32, 0x0C, 0xA4, 0xF5,
- .byte 0x2E, 0x0C, 0xA0, 0xF5, 0x2A, 0x0C, 0x9B, 0xF5, 0x26, 0x0C, 0x96, 0xF5, 0x22, 0x0C, 0x91, 0xF5,
- .byte 0x1E, 0x0C, 0x8D, 0xF5, 0x19, 0x0C, 0x88, 0xF5, 0x15, 0x0C, 0x83, 0xF5, 0x11, 0x0C, 0x7E, 0xF5,
- .byte 0x0D, 0x0C, 0x7A, 0xF5, 0x09, 0x0C, 0x75, 0xF5, 0x05, 0x0C, 0x70, 0xF5, 0x01, 0x0C, 0x6B, 0xF5,
- .byte 0xFC, 0x0B, 0x67, 0xF5, 0xF8, 0x0B, 0x62, 0xF5, 0xF4, 0x0B, 0x5D, 0xF5, 0xF0, 0x0B, 0x59, 0xF5,
- .byte 0xEC, 0x0B, 0x54, 0xF5, 0xE8, 0x0B, 0x4F, 0xF5, 0xE3, 0x0B, 0x4B, 0xF5, 0xDF, 0x0B, 0x46, 0xF5,
- .byte 0xDB, 0x0B, 0x41, 0xF5, 0xD7, 0x0B, 0x3D, 0xF5, 0xD2, 0x0B, 0x38, 0xF5, 0xCE, 0x0B, 0x33, 0xF5,
- .byte 0xCA, 0x0B, 0x2F, 0xF5, 0xC6, 0x0B, 0x2A, 0xF5, 0xC1, 0x0B, 0x25, 0xF5, 0xBD, 0x0B, 0x21, 0xF5,
- .byte 0xB9, 0x0B, 0x1C, 0xF5, 0xB5, 0x0B, 0x18, 0xF5, 0xB0, 0x0B, 0x13, 0xF5, 0xAC, 0x0B, 0x0E, 0xF5,
- .byte 0xA8, 0x0B, 0x0A, 0xF5, 0xA3, 0x0B, 0x05, 0xF5, 0x9F, 0x0B, 0x01, 0xF5, 0x9B, 0x0B, 0xFC, 0xF4,
- .byte 0x97, 0x0B, 0xF8, 0xF4, 0x92, 0x0B, 0xF3, 0xF4, 0x8E, 0x0B, 0xEF, 0xF4, 0x89, 0x0B, 0xEA, 0xF4,
- .byte 0x85, 0x0B, 0xE5, 0xF4, 0x81, 0x0B, 0xE1, 0xF4, 0x7C, 0x0B, 0xDC, 0xF4, 0x78, 0x0B, 0xD8, 0xF4,
- .byte 0x74, 0x0B, 0xD3, 0xF4, 0x6F, 0x0B, 0xCF, 0xF4, 0x6B, 0x0B, 0xCA, 0xF4, 0x66, 0x0B, 0xC6, 0xF4,
- .byte 0x62, 0x0B, 0xC2, 0xF4, 0x5E, 0x0B, 0xBD, 0xF4, 0x59, 0x0B, 0xB9, 0xF4, 0x55, 0x0B, 0xB4, 0xF4,
- .byte 0x50, 0x0B, 0xB0, 0xF4, 0x4C, 0x0B, 0xAB, 0xF4, 0x47, 0x0B, 0xA7, 0xF4, 0x43, 0x0B, 0xA2, 0xF4,
- .byte 0x3E, 0x0B, 0x9E, 0xF4, 0x3A, 0x0B, 0x9A, 0xF4, 0x36, 0x0B, 0x95, 0xF4, 0x31, 0x0B, 0x91, 0xF4,
- .byte 0x2D, 0x0B, 0x8C, 0xF4, 0x28, 0x0B, 0x88, 0xF4, 0x24, 0x0B, 0x84, 0xF4, 0x1F, 0x0B, 0x7F, 0xF4,
- .byte 0x1B, 0x0B, 0x7B, 0xF4, 0x16, 0x0B, 0x77, 0xF4, 0x11, 0x0B, 0x72, 0xF4, 0x0D, 0x0B, 0x6E, 0xF4,
- .byte 0x08, 0x0B, 0x69, 0xF4, 0x04, 0x0B, 0x65, 0xF4, 0xFF, 0x0A, 0x61, 0xF4, 0xFB, 0x0A, 0x5D, 0xF4,
- .byte 0xF6, 0x0A, 0x58, 0xF4, 0xF2, 0x0A, 0x54, 0xF4, 0xED, 0x0A, 0x50, 0xF4, 0xE8, 0x0A, 0x4B, 0xF4,
- .byte 0xE4, 0x0A, 0x47, 0xF4, 0xDF, 0x0A, 0x43, 0xF4, 0xDB, 0x0A, 0x3F, 0xF4, 0xD6, 0x0A, 0x3A, 0xF4,
- .byte 0xD1, 0x0A, 0x36, 0xF4, 0xCD, 0x0A, 0x32, 0xF4, 0xC8, 0x0A, 0x2E, 0xF4, 0xC3, 0x0A, 0x29, 0xF4,
- .byte 0xBF, 0x0A, 0x25, 0xF4, 0xBA, 0x0A, 0x21, 0xF4, 0xB5, 0x0A, 0x1D, 0xF4, 0xB1, 0x0A, 0x18, 0xF4,
- .byte 0xAC, 0x0A, 0x14, 0xF4, 0xA7, 0x0A, 0x10, 0xF4, 0xA3, 0x0A, 0x0C, 0xF4, 0x9E, 0x0A, 0x08, 0xF4,
- .byte 0x99, 0x0A, 0x04, 0xF4, 0x95, 0x0A, 0xFF, 0xF3, 0x90, 0x0A, 0xFB, 0xF3, 0x8B, 0x0A, 0xF7, 0xF3,
- .byte 0x86, 0x0A, 0xF3, 0xF3, 0x82, 0x0A, 0xEF, 0xF3, 0x7D, 0x0A, 0xEB, 0xF3, 0x78, 0x0A, 0xE7, 0xF3,
- .byte 0x73, 0x0A, 0xE2, 0xF3, 0x6F, 0x0A, 0xDE, 0xF3, 0x6A, 0x0A, 0xDA, 0xF3, 0x65, 0x0A, 0xD6, 0xF3,
- .byte 0x60, 0x0A, 0xD2, 0xF3, 0x5C, 0x0A, 0xCE, 0xF3, 0x57, 0x0A, 0xCA, 0xF3, 0x52, 0x0A, 0xC6, 0xF3,
- .byte 0x4D, 0x0A, 0xC2, 0xF3, 0x48, 0x0A, 0xBE, 0xF3, 0x44, 0x0A, 0xBA, 0xF3, 0x3F, 0x0A, 0xB6, 0xF3,
- .byte 0x3A, 0x0A, 0xB2, 0xF3, 0x35, 0x0A, 0xAE, 0xF3, 0x30, 0x0A, 0xAA, 0xF3, 0x2B, 0x0A, 0xA6, 0xF3,
- .byte 0x26, 0x0A, 0xA2, 0xF3, 0x22, 0x0A, 0x9E, 0xF3, 0x1D, 0x0A, 0x9A, 0xF3, 0x18, 0x0A, 0x96, 0xF3,
- .byte 0x13, 0x0A, 0x92, 0xF3, 0x0E, 0x0A, 0x8E, 0xF3, 0x09, 0x0A, 0x8A, 0xF3, 0x04, 0x0A, 0x86, 0xF3,
- .byte 0xFF, 0x09, 0x82, 0xF3, 0xFB, 0x09, 0x7E, 0xF3, 0xF6, 0x09, 0x7A, 0xF3, 0xF1, 0x09, 0x76, 0xF3,
- .byte 0xEC, 0x09, 0x72, 0xF3, 0xE7, 0x09, 0x6F, 0xF3, 0xE2, 0x09, 0x6B, 0xF3, 0xDD, 0x09, 0x67, 0xF3,
- .byte 0xD8, 0x09, 0x63, 0xF3, 0xD3, 0x09, 0x5F, 0xF3, 0xCE, 0x09, 0x5B, 0xF3, 0xC9, 0x09, 0x57, 0xF3,
- .byte 0xC4, 0x09, 0x54, 0xF3, 0xBF, 0x09, 0x50, 0xF3, 0xBA, 0x09, 0x4C, 0xF3, 0xB5, 0x09, 0x48, 0xF3,
- .byte 0xB0, 0x09, 0x44, 0xF3, 0xAB, 0x09, 0x40, 0xF3, 0xA6, 0x09, 0x3D, 0xF3, 0xA1, 0x09, 0x39, 0xF3,
- .byte 0x9C, 0x09, 0x35, 0xF3, 0x97, 0x09, 0x31, 0xF3, 0x92, 0x09, 0x2E, 0xF3, 0x8D, 0x09, 0x2A, 0xF3,
- .byte 0x88, 0x09, 0x26, 0xF3, 0x83, 0x09, 0x22, 0xF3, 0x7E, 0x09, 0x1F, 0xF3, 0x79, 0x09, 0x1B, 0xF3,
- .byte 0x74, 0x09, 0x17, 0xF3, 0x6F, 0x09, 0x13, 0xF3, 0x6A, 0x09, 0x10, 0xF3, 0x65, 0x09, 0x0C, 0xF3,
- .byte 0x5F, 0x09, 0x08, 0xF3, 0x5A, 0x09, 0x05, 0xF3, 0x55, 0x09, 0x01, 0xF3, 0x50, 0x09, 0xFD, 0xF2,
- .byte 0x4B, 0x09, 0xFA, 0xF2, 0x46, 0x09, 0xF6, 0xF2, 0x41, 0x09, 0xF2, 0xF2, 0x3C, 0x09, 0xEF, 0xF2,
- .byte 0x37, 0x09, 0xEB, 0xF2, 0x31, 0x09, 0xE8, 0xF2, 0x2C, 0x09, 0xE4, 0xF2, 0x27, 0x09, 0xE0, 0xF2,
- .byte 0x22, 0x09, 0xDD, 0xF2, 0x1D, 0x09, 0xD9, 0xF2, 0x18, 0x09, 0xD6, 0xF2, 0x12, 0x09, 0xD2, 0xF2,
- .byte 0x0D, 0x09, 0xCE, 0xF2, 0x08, 0x09, 0xCB, 0xF2, 0x03, 0x09, 0xC7, 0xF2, 0xFE, 0x08, 0xC4, 0xF2,
- .byte 0xF8, 0x08, 0xC0, 0xF2, 0xF3, 0x08, 0xBD, 0xF2, 0xEE, 0x08, 0xB9, 0xF2, 0xE9, 0x08, 0xB6, 0xF2,
- .byte 0xE4, 0x08, 0xB2, 0xF2, 0xDE, 0x08, 0xAF, 0xF2, 0xD9, 0x08, 0xAB, 0xF2, 0xD4, 0x08, 0xA8, 0xF2,
- .byte 0xCF, 0x08, 0xA4, 0xF2, 0xC9, 0x08, 0xA1, 0xF2, 0xC4, 0x08, 0x9E, 0xF2, 0xBF, 0x08, 0x9A, 0xF2,
- .byte 0xBA, 0x08, 0x97, 0xF2, 0xB4, 0x08, 0x93, 0xF2, 0xAF, 0x08, 0x90, 0xF2, 0xAA, 0x08, 0x8C, 0xF2,
- .byte 0xA5, 0x08, 0x89, 0xF2, 0x9F, 0x08, 0x86, 0xF2, 0x9A, 0x08, 0x82, 0xF2, 0x95, 0x08, 0x7F, 0xF2,
- .byte 0x8F, 0x08, 0x7B, 0xF2, 0x8A, 0x08, 0x78, 0xF2, 0x85, 0x08, 0x75, 0xF2, 0x7F, 0x08, 0x71, 0xF2,
- .byte 0x7A, 0x08, 0x6E, 0xF2, 0x75, 0x08, 0x6B, 0xF2, 0x6F, 0x08, 0x67, 0xF2, 0x6A, 0x08, 0x64, 0xF2,
- .byte 0x65, 0x08, 0x61, 0xF2, 0x5F, 0x08, 0x5E, 0xF2, 0x5A, 0x08, 0x5A, 0xF2, 0x55, 0x08, 0x57, 0xF2,
- .byte 0x4F, 0x08, 0x54, 0xF2, 0x4A, 0x08, 0x50, 0xF2, 0x45, 0x08, 0x4D, 0xF2, 0x3F, 0x08, 0x4A, 0xF2,
- .byte 0x3A, 0x08, 0x47, 0xF2, 0x34, 0x08, 0x44, 0xF2, 0x2F, 0x08, 0x40, 0xF2, 0x2A, 0x08, 0x3D, 0xF2,
- .byte 0x24, 0x08, 0x3A, 0xF2, 0x1F, 0x08, 0x37, 0xF2, 0x19, 0x08, 0x34, 0xF2, 0x14, 0x08, 0x30, 0xF2,
- .byte 0x0E, 0x08, 0x2D, 0xF2, 0x09, 0x08, 0x2A, 0xF2, 0x04, 0x08, 0x27, 0xF2, 0xFE, 0x07, 0x24, 0xF2,
- .byte 0xF9, 0x07, 0x21, 0xF2, 0xF3, 0x07, 0x1D, 0xF2, 0xEE, 0x07, 0x1A, 0xF2, 0xE8, 0x07, 0x17, 0xF2,
- .byte 0xE3, 0x07, 0x14, 0xF2, 0xDD, 0x07, 0x11, 0xF2, 0xD8, 0x07, 0x0E, 0xF2, 0xD2, 0x07, 0x0B, 0xF2,
- .byte 0xCD, 0x07, 0x08, 0xF2, 0xC8, 0x07, 0x05, 0xF2, 0xC2, 0x07, 0x02, 0xF2, 0xBD, 0x07, 0xFF, 0xF1,
- .byte 0xB7, 0x07, 0xFC, 0xF1, 0xB2, 0x07, 0xF9, 0xF1, 0xAC, 0x07, 0xF6, 0xF1, 0xA6, 0x07, 0xF3, 0xF1,
- .byte 0xA1, 0x07, 0xF0, 0xF1, 0x9B, 0x07, 0xED, 0xF1, 0x96, 0x07, 0xEA, 0xF1, 0x90, 0x07, 0xE7, 0xF1,
- .byte 0x8B, 0x07, 0xE4, 0xF1, 0x85, 0x07, 0xE1, 0xF1, 0x80, 0x07, 0xDE, 0xF1, 0x7A, 0x07, 0xDB, 0xF1,
- .byte 0x75, 0x07, 0xD8, 0xF1, 0x6F, 0x07, 0xD5, 0xF1, 0x6A, 0x07, 0xD2, 0xF1, 0x64, 0x07, 0xCF, 0xF1,
- .byte 0x5E, 0x07, 0xCC, 0xF1, 0x59, 0x07, 0xC9, 0xF1, 0x53, 0x07, 0xC6, 0xF1, 0x4E, 0x07, 0xC4, 0xF1,
- .byte 0x48, 0x07, 0xC1, 0xF1, 0x42, 0x07, 0xBE, 0xF1, 0x3D, 0x07, 0xBB, 0xF1, 0x37, 0x07, 0xB8, 0xF1,
- .byte 0x32, 0x07, 0xB5, 0xF1, 0x2C, 0x07, 0xB3, 0xF1, 0x26, 0x07, 0xB0, 0xF1, 0x21, 0x07, 0xAD, 0xF1,
- .byte 0x1B, 0x07, 0xAA, 0xF1, 0x15, 0x07, 0xA7, 0xF1, 0x10, 0x07, 0xA5, 0xF1, 0x0A, 0x07, 0xA2, 0xF1,
- .byte 0x05, 0x07, 0x9F, 0xF1, 0xFF, 0x06, 0x9C, 0xF1, 0xF9, 0x06, 0x9A, 0xF1, 0xF4, 0x06, 0x97, 0xF1,
- .byte 0xEE, 0x06, 0x94, 0xF1, 0xE8, 0x06, 0x91, 0xF1, 0xE3, 0x06, 0x8F, 0xF1, 0xDD, 0x06, 0x8C, 0xF1,
- .byte 0xD7, 0x06, 0x89, 0xF1, 0xD2, 0x06, 0x87, 0xF1, 0xCC, 0x06, 0x84, 0xF1, 0xC6, 0x06, 0x81, 0xF1,
- .byte 0xC1, 0x06, 0x7F, 0xF1, 0xBB, 0x06, 0x7C, 0xF1, 0xB5, 0x06, 0x79, 0xF1, 0xAF, 0x06, 0x77, 0xF1,
- .byte 0xAA, 0x06, 0x74, 0xF1, 0xA4, 0x06, 0x71, 0xF1, 0x9E, 0x06, 0x6F, 0xF1, 0x99, 0x06, 0x6C, 0xF1,
- .byte 0x93, 0x06, 0x6A, 0xF1, 0x8D, 0x06, 0x67, 0xF1, 0x87, 0x06, 0x65, 0xF1, 0x82, 0x06, 0x62, 0xF1,
- .byte 0x7C, 0x06, 0x5F, 0xF1, 0x76, 0x06, 0x5D, 0xF1, 0x70, 0x06, 0x5A, 0xF1, 0x6B, 0x06, 0x58, 0xF1,
- .byte 0x65, 0x06, 0x55, 0xF1, 0x5F, 0x06, 0x53, 0xF1, 0x59, 0x06, 0x50, 0xF1, 0x54, 0x06, 0x4E, 0xF1,
- .byte 0x4E, 0x06, 0x4B, 0xF1, 0x48, 0x06, 0x49, 0xF1, 0x42, 0x06, 0x46, 0xF1, 0x3C, 0x06, 0x44, 0xF1,
- .byte 0x37, 0x06, 0x41, 0xF1, 0x31, 0x06, 0x3F, 0xF1, 0x2B, 0x06, 0x3D, 0xF1, 0x25, 0x06, 0x3A, 0xF1,
- .byte 0x1F, 0x06, 0x38, 0xF1, 0x1A, 0x06, 0x35, 0xF1, 0x14, 0x06, 0x33, 0xF1, 0x0E, 0x06, 0x31, 0xF1,
- .byte 0x08, 0x06, 0x2E, 0xF1, 0x02, 0x06, 0x2C, 0xF1, 0xFD, 0x05, 0x2A, 0xF1, 0xF7, 0x05, 0x27, 0xF1,
- .byte 0xF1, 0x05, 0x25, 0xF1, 0xEB, 0x05, 0x23, 0xF1, 0xE5, 0x05, 0x20, 0xF1, 0xDF, 0x05, 0x1E, 0xF1,
- .byte 0xDA, 0x05, 0x1C, 0xF1, 0xD4, 0x05, 0x19, 0xF1, 0xCE, 0x05, 0x17, 0xF1, 0xC8, 0x05, 0x15, 0xF1,
- .byte 0xC2, 0x05, 0x12, 0xF1, 0xBC, 0x05, 0x10, 0xF1, 0xB6, 0x05, 0x0E, 0xF1, 0xB1, 0x05, 0x0C, 0xF1,
- .byte 0xAB, 0x05, 0x09, 0xF1, 0xA5, 0x05, 0x07, 0xF1, 0x9F, 0x05, 0x05, 0xF1, 0x99, 0x05, 0x03, 0xF1,
- .byte 0x93, 0x05, 0x01, 0xF1, 0x8D, 0x05, 0xFE, 0xF0, 0x87, 0x05, 0xFC, 0xF0, 0x81, 0x05, 0xFA, 0xF0,
- .byte 0x7C, 0x05, 0xF8, 0xF0, 0x76, 0x05, 0xF6, 0xF0, 0x70, 0x05, 0xF4, 0xF0, 0x6A, 0x05, 0xF2, 0xF0,
- .byte 0x64, 0x05, 0xEF, 0xF0, 0x5E, 0x05, 0xED, 0xF0, 0x58, 0x05, 0xEB, 0xF0, 0x52, 0x05, 0xE9, 0xF0,
- .byte 0x4C, 0x05, 0xE7, 0xF0, 0x46, 0x05, 0xE5, 0xF0, 0x40, 0x05, 0xE3, 0xF0, 0x3A, 0x05, 0xE1, 0xF0,
- .byte 0x34, 0x05, 0xDF, 0xF0, 0x2F, 0x05, 0xDD, 0xF0, 0x29, 0x05, 0xDB, 0xF0, 0x23, 0x05, 0xD9, 0xF0,
- .byte 0x1D, 0x05, 0xD7, 0xF0, 0x17, 0x05, 0xD5, 0xF0, 0x11, 0x05, 0xD3, 0xF0, 0x0B, 0x05, 0xD1, 0xF0,
- .byte 0x05, 0x05, 0xCF, 0xF0, 0xFF, 0x04, 0xCD, 0xF0, 0xF9, 0x04, 0xCB, 0xF0, 0xF3, 0x04, 0xC9, 0xF0,
- .byte 0xED, 0x04, 0xC7, 0xF0, 0xE7, 0x04, 0xC5, 0xF0, 0xE1, 0x04, 0xC3, 0xF0, 0xDB, 0x04, 0xC1, 0xF0,
- .byte 0xD5, 0x04, 0xBF, 0xF0, 0xCF, 0x04, 0xBD, 0xF0, 0xC9, 0x04, 0xBB, 0xF0, 0xC3, 0x04, 0xBA, 0xF0,
- .byte 0xBD, 0x04, 0xB8, 0xF0, 0xB7, 0x04, 0xB6, 0xF0, 0xB1, 0x04, 0xB4, 0xF0, 0xAB, 0x04, 0xB2, 0xF0,
- .byte 0xA5, 0x04, 0xB0, 0xF0, 0x9F, 0x04, 0xAF, 0xF0, 0x99, 0x04, 0xAD, 0xF0, 0x93, 0x04, 0xAB, 0xF0,
- .byte 0x8D, 0x04, 0xA9, 0xF0, 0x87, 0x04, 0xA7, 0xF0, 0x81, 0x04, 0xA6, 0xF0, 0x7B, 0x04, 0xA4, 0xF0,
- .byte 0x75, 0x04, 0xA2, 0xF0, 0x6F, 0x04, 0xA0, 0xF0, 0x69, 0x04, 0x9F, 0xF0, 0x63, 0x04, 0x9D, 0xF0,
- .byte 0x5D, 0x04, 0x9B, 0xF0, 0x57, 0x04, 0x99, 0xF0, 0x51, 0x04, 0x98, 0xF0, 0x4B, 0x04, 0x96, 0xF0,
- .byte 0x44, 0x04, 0x94, 0xF0, 0x3E, 0x04, 0x93, 0xF0, 0x38, 0x04, 0x91, 0xF0, 0x32, 0x04, 0x8F, 0xF0,
- .byte 0x2C, 0x04, 0x8E, 0xF0, 0x26, 0x04, 0x8C, 0xF0, 0x20, 0x04, 0x8A, 0xF0, 0x1A, 0x04, 0x89, 0xF0,
- .byte 0x14, 0x04, 0x87, 0xF0, 0x0E, 0x04, 0x86, 0xF0, 0x08, 0x04, 0x84, 0xF0, 0x02, 0x04, 0x83, 0xF0,
- .byte 0xFC, 0x03, 0x81, 0xF0, 0xF6, 0x03, 0x7F, 0xF0, 0xEF, 0x03, 0x7E, 0xF0, 0xE9, 0x03, 0x7C, 0xF0,
- .byte 0xE3, 0x03, 0x7B, 0xF0, 0xDD, 0x03, 0x79, 0xF0, 0xD7, 0x03, 0x78, 0xF0, 0xD1, 0x03, 0x76, 0xF0,
- .byte 0xCB, 0x03, 0x75, 0xF0, 0xC5, 0x03, 0x73, 0xF0, 0xBF, 0x03, 0x72, 0xF0, 0xB9, 0x03, 0x70, 0xF0,
- .byte 0xB2, 0x03, 0x6F, 0xF0, 0xAC, 0x03, 0x6D, 0xF0, 0xA6, 0x03, 0x6C, 0xF0, 0xA0, 0x03, 0x6B, 0xF0,
- .byte 0x9A, 0x03, 0x69, 0xF0, 0x94, 0x03, 0x68, 0xF0, 0x8E, 0x03, 0x66, 0xF0, 0x88, 0x03, 0x65, 0xF0,
- .byte 0x81, 0x03, 0x64, 0xF0, 0x7B, 0x03, 0x62, 0xF0, 0x75, 0x03, 0x61, 0xF0, 0x6F, 0x03, 0x5F, 0xF0,
- .byte 0x69, 0x03, 0x5E, 0xF0, 0x63, 0x03, 0x5D, 0xF0, 0x5D, 0x03, 0x5B, 0xF0, 0x56, 0x03, 0x5A, 0xF0,
- .byte 0x50, 0x03, 0x59, 0xF0, 0x4A, 0x03, 0x58, 0xF0, 0x44, 0x03, 0x56, 0xF0, 0x3E, 0x03, 0x55, 0xF0,
- .byte 0x38, 0x03, 0x54, 0xF0, 0x32, 0x03, 0x52, 0xF0, 0x2B, 0x03, 0x51, 0xF0, 0x25, 0x03, 0x50, 0xF0,
- .byte 0x1F, 0x03, 0x4F, 0xF0, 0x19, 0x03, 0x4D, 0xF0, 0x13, 0x03, 0x4C, 0xF0, 0x0D, 0x03, 0x4B, 0xF0,
- .byte 0x06, 0x03, 0x4A, 0xF0, 0x00, 0x03, 0x49, 0xF0, 0xFA, 0x02, 0x48, 0xF0, 0xF4, 0x02, 0x46, 0xF0,
- .byte 0xEE, 0x02, 0x45, 0xF0, 0xE8, 0x02, 0x44, 0xF0, 0xE1, 0x02, 0x43, 0xF0, 0xDB, 0x02, 0x42, 0xF0,
- .byte 0xD5, 0x02, 0x41, 0xF0, 0xCF, 0x02, 0x40, 0xF0, 0xC9, 0x02, 0x3E, 0xF0, 0xC2, 0x02, 0x3D, 0xF0,
- .byte 0xBC, 0x02, 0x3C, 0xF0, 0xB6, 0x02, 0x3B, 0xF0, 0xB0, 0x02, 0x3A, 0xF0, 0xAA, 0x02, 0x39, 0xF0,
- .byte 0xA3, 0x02, 0x38, 0xF0, 0x9D, 0x02, 0x37, 0xF0, 0x97, 0x02, 0x36, 0xF0, 0x91, 0x02, 0x35, 0xF0,
- .byte 0x8B, 0x02, 0x34, 0xF0, 0x84, 0x02, 0x33, 0xF0, 0x7E, 0x02, 0x32, 0xF0, 0x78, 0x02, 0x31, 0xF0,
- .byte 0x72, 0x02, 0x30, 0xF0, 0x6C, 0x02, 0x2F, 0xF0, 0x65, 0x02, 0x2E, 0xF0, 0x5F, 0x02, 0x2D, 0xF0,
- .byte 0x59, 0x02, 0x2C, 0xF0, 0x53, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x46, 0x02, 0x2A, 0xF0,
- .byte 0x40, 0x02, 0x29, 0xF0, 0x3A, 0x02, 0x28, 0xF0, 0x34, 0x02, 0x27, 0xF0, 0x2D, 0x02, 0x26, 0xF0,
- .byte 0x27, 0x02, 0x25, 0xF0, 0x21, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x15, 0x02, 0x23, 0xF0,
- .byte 0x0E, 0x02, 0x22, 0xF0, 0x08, 0x02, 0x21, 0xF0, 0x02, 0x02, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0,
- .byte 0xF5, 0x01, 0x1F, 0xF0, 0xEF, 0x01, 0x1E, 0xF0, 0xE9, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0,
- .byte 0xDC, 0x01, 0x1C, 0xF0, 0xD6, 0x01, 0x1B, 0xF0, 0xD0, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0,
- .byte 0xC3, 0x01, 0x19, 0xF0, 0xBD, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xB1, 0x01, 0x17, 0xF0,
- .byte 0xAA, 0x01, 0x16, 0xF0, 0xA4, 0x01, 0x16, 0xF0, 0x9E, 0x01, 0x15, 0xF0, 0x98, 0x01, 0x14, 0xF0,
- .byte 0x91, 0x01, 0x14, 0xF0, 0x8B, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x7F, 0x01, 0x12, 0xF0,
- .byte 0x78, 0x01, 0x11, 0xF0, 0x72, 0x01, 0x11, 0xF0, 0x6C, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0,
- .byte 0x5F, 0x01, 0x0F, 0xF0, 0x59, 0x01, 0x0F, 0xF0, 0x53, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0,
- .byte 0x46, 0x01, 0x0D, 0xF0, 0x40, 0x01, 0x0D, 0xF0, 0x3A, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0,
- .byte 0x2D, 0x01, 0x0B, 0xF0, 0x27, 0x01, 0x0B, 0xF0, 0x21, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0,
- .byte 0x14, 0x01, 0x09, 0xF0, 0x0E, 0x01, 0x09, 0xF0, 0x08, 0x01, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0,
- .byte 0xFB, 0x00, 0x08, 0xF0, 0xF5, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0,
- .byte 0xE2, 0x00, 0x06, 0xF0, 0xDC, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xCF, 0x00, 0x05, 0xF0,
- .byte 0xC9, 0x00, 0x05, 0xF0, 0xC3, 0x00, 0x05, 0xF0, 0xBC, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0,
- .byte 0xB0, 0x00, 0x04, 0xF0, 0xAA, 0x00, 0x04, 0xF0, 0xA3, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0,
- .byte 0x97, 0x00, 0x03, 0xF0, 0x90, 0x00, 0x03, 0xF0, 0x8A, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0,
- .byte 0x7E, 0x00, 0x02, 0xF0, 0x77, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x6B, 0x00, 0x01, 0xF0,
- .byte 0x65, 0x00, 0x01, 0xF0, 0x5E, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0,
- .byte 0x4B, 0x00, 0x01, 0xF0, 0x45, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0,
- .byte 0x32, 0x00, 0x00, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0,
- .byte 0x19, 0x00, 0x00, 0xF0, 0x13, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0,
- .byte 0x00, 0x00, 0x00, 0xF0, 0xFA, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0,
- .byte 0xE7, 0xFF, 0x00, 0xF0, 0xE1, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0,
- .byte 0xCE, 0xFF, 0x00, 0xF0, 0xC7, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xBB, 0xFF, 0x01, 0xF0,
- .byte 0xB5, 0xFF, 0x01, 0xF0, 0xAE, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0,
- .byte 0x9B, 0xFF, 0x01, 0xF0, 0x95, 0xFF, 0x01, 0xF0, 0x8F, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0,
- .byte 0x82, 0xFF, 0x02, 0xF0, 0x7C, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x70, 0xFF, 0x03, 0xF0,
- .byte 0x69, 0xFF, 0x03, 0xF0, 0x63, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x56, 0xFF, 0x04, 0xF0,
- .byte 0x50, 0xFF, 0x04, 0xF0, 0x4A, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x3D, 0xFF, 0x05, 0xF0,
- .byte 0x37, 0xFF, 0x05, 0xF0, 0x31, 0xFF, 0x05, 0xF0, 0x2A, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0,
- .byte 0x1E, 0xFF, 0x06, 0xF0, 0x18, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0,
- .byte 0x05, 0xFF, 0x08, 0xF0, 0xFF, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xF2, 0xFE, 0x09, 0xF0,
- .byte 0xEC, 0xFE, 0x09, 0xF0, 0xE5, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xD9, 0xFE, 0x0B, 0xF0,
- .byte 0xD3, 0xFE, 0x0B, 0xF0, 0xCC, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xC0, 0xFE, 0x0D, 0xF0,
- .byte 0xBA, 0xFE, 0x0D, 0xF0, 0xB3, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xA7, 0xFE, 0x0F, 0xF0,
- .byte 0xA1, 0xFE, 0x0F, 0xF0, 0x9A, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x8E, 0xFE, 0x11, 0xF0,
- .byte 0x88, 0xFE, 0x11, 0xF0, 0x81, 0xFE, 0x12, 0xF0, 0x7B, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0,
- .byte 0x6F, 0xFE, 0x14, 0xF0, 0x68, 0xFE, 0x14, 0xF0, 0x62, 0xFE, 0x15, 0xF0, 0x5C, 0xFE, 0x16, 0xF0,
- .byte 0x56, 0xFE, 0x16, 0xF0, 0x4F, 0xFE, 0x17, 0xF0, 0x49, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0,
- .byte 0x3D, 0xFE, 0x19, 0xF0, 0x36, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x2A, 0xFE, 0x1B, 0xF0,
- .byte 0x24, 0xFE, 0x1C, 0xF0, 0x1D, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x11, 0xFE, 0x1E, 0xF0,
- .byte 0x0B, 0xFE, 0x1F, 0xF0, 0x04, 0xFE, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0xF8, 0xFD, 0x21, 0xF0,
- .byte 0xF2, 0xFD, 0x22, 0xF0, 0xEB, 0xFD, 0x23, 0xF0, 0xE5, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0,
- .byte 0xD9, 0xFD, 0x25, 0xF0, 0xD3, 0xFD, 0x26, 0xF0, 0xCC, 0xFD, 0x27, 0xF0, 0xC6, 0xFD, 0x28, 0xF0,
- .byte 0xC0, 0xFD, 0x29, 0xF0, 0xBA, 0xFD, 0x2A, 0xF0, 0xB3, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0,
- .byte 0xA7, 0xFD, 0x2C, 0xF0, 0xA1, 0xFD, 0x2D, 0xF0, 0x9B, 0xFD, 0x2E, 0xF0, 0x94, 0xFD, 0x2F, 0xF0,
- .byte 0x8E, 0xFD, 0x30, 0xF0, 0x88, 0xFD, 0x31, 0xF0, 0x82, 0xFD, 0x32, 0xF0, 0x7C, 0xFD, 0x33, 0xF0,
- .byte 0x75, 0xFD, 0x34, 0xF0, 0x6F, 0xFD, 0x35, 0xF0, 0x69, 0xFD, 0x36, 0xF0, 0x63, 0xFD, 0x37, 0xF0,
- .byte 0x5D, 0xFD, 0x38, 0xF0, 0x56, 0xFD, 0x39, 0xF0, 0x50, 0xFD, 0x3A, 0xF0, 0x4A, 0xFD, 0x3B, 0xF0,
- .byte 0x44, 0xFD, 0x3C, 0xF0, 0x3E, 0xFD, 0x3D, 0xF0, 0x37, 0xFD, 0x3E, 0xF0, 0x31, 0xFD, 0x40, 0xF0,
- .byte 0x2B, 0xFD, 0x41, 0xF0, 0x25, 0xFD, 0x42, 0xF0, 0x1F, 0xFD, 0x43, 0xF0, 0x18, 0xFD, 0x44, 0xF0,
- .byte 0x12, 0xFD, 0x45, 0xF0, 0x0C, 0xFD, 0x46, 0xF0, 0x06, 0xFD, 0x48, 0xF0, 0x00, 0xFD, 0x49, 0xF0,
- .byte 0xFA, 0xFC, 0x4A, 0xF0, 0xF3, 0xFC, 0x4B, 0xF0, 0xED, 0xFC, 0x4C, 0xF0, 0xE7, 0xFC, 0x4D, 0xF0,
- .byte 0xE1, 0xFC, 0x4F, 0xF0, 0xDB, 0xFC, 0x50, 0xF0, 0xD5, 0xFC, 0x51, 0xF0, 0xCE, 0xFC, 0x52, 0xF0,
- .byte 0xC8, 0xFC, 0x54, 0xF0, 0xC2, 0xFC, 0x55, 0xF0, 0xBC, 0xFC, 0x56, 0xF0, 0xB6, 0xFC, 0x58, 0xF0,
- .byte 0xB0, 0xFC, 0x59, 0xF0, 0xAA, 0xFC, 0x5A, 0xF0, 0xA3, 0xFC, 0x5B, 0xF0, 0x9D, 0xFC, 0x5D, 0xF0,
- .byte 0x97, 0xFC, 0x5E, 0xF0, 0x91, 0xFC, 0x5F, 0xF0, 0x8B, 0xFC, 0x61, 0xF0, 0x85, 0xFC, 0x62, 0xF0,
- .byte 0x7F, 0xFC, 0x64, 0xF0, 0x78, 0xFC, 0x65, 0xF0, 0x72, 0xFC, 0x66, 0xF0, 0x6C, 0xFC, 0x68, 0xF0,
- .byte 0x66, 0xFC, 0x69, 0xF0, 0x60, 0xFC, 0x6B, 0xF0, 0x5A, 0xFC, 0x6C, 0xF0, 0x54, 0xFC, 0x6D, 0xF0,
- .byte 0x4E, 0xFC, 0x6F, 0xF0, 0x47, 0xFC, 0x70, 0xF0, 0x41, 0xFC, 0x72, 0xF0, 0x3B, 0xFC, 0x73, 0xF0,
- .byte 0x35, 0xFC, 0x75, 0xF0, 0x2F, 0xFC, 0x76, 0xF0, 0x29, 0xFC, 0x78, 0xF0, 0x23, 0xFC, 0x79, 0xF0,
- .byte 0x1D, 0xFC, 0x7B, 0xF0, 0x17, 0xFC, 0x7C, 0xF0, 0x11, 0xFC, 0x7E, 0xF0, 0x0A, 0xFC, 0x7F, 0xF0,
- .byte 0x04, 0xFC, 0x81, 0xF0, 0xFE, 0xFB, 0x83, 0xF0, 0xF8, 0xFB, 0x84, 0xF0, 0xF2, 0xFB, 0x86, 0xF0,
- .byte 0xEC, 0xFB, 0x87, 0xF0, 0xE6, 0xFB, 0x89, 0xF0, 0xE0, 0xFB, 0x8A, 0xF0, 0xDA, 0xFB, 0x8C, 0xF0,
- .byte 0xD4, 0xFB, 0x8E, 0xF0, 0xCE, 0xFB, 0x8F, 0xF0, 0xC8, 0xFB, 0x91, 0xF0, 0xC2, 0xFB, 0x93, 0xF0,
- .byte 0xBC, 0xFB, 0x94, 0xF0, 0xB5, 0xFB, 0x96, 0xF0, 0xAF, 0xFB, 0x98, 0xF0, 0xA9, 0xFB, 0x99, 0xF0,
- .byte 0xA3, 0xFB, 0x9B, 0xF0, 0x9D, 0xFB, 0x9D, 0xF0, 0x97, 0xFB, 0x9F, 0xF0, 0x91, 0xFB, 0xA0, 0xF0,
- .byte 0x8B, 0xFB, 0xA2, 0xF0, 0x85, 0xFB, 0xA4, 0xF0, 0x7F, 0xFB, 0xA6, 0xF0, 0x79, 0xFB, 0xA7, 0xF0,
- .byte 0x73, 0xFB, 0xA9, 0xF0, 0x6D, 0xFB, 0xAB, 0xF0, 0x67, 0xFB, 0xAD, 0xF0, 0x61, 0xFB, 0xAF, 0xF0,
- .byte 0x5B, 0xFB, 0xB0, 0xF0, 0x55, 0xFB, 0xB2, 0xF0, 0x4F, 0xFB, 0xB4, 0xF0, 0x49, 0xFB, 0xB6, 0xF0,
- .byte 0x43, 0xFB, 0xB8, 0xF0, 0x3D, 0xFB, 0xBA, 0xF0, 0x37, 0xFB, 0xBB, 0xF0, 0x31, 0xFB, 0xBD, 0xF0,
- .byte 0x2B, 0xFB, 0xBF, 0xF0, 0x25, 0xFB, 0xC1, 0xF0, 0x1F, 0xFB, 0xC3, 0xF0, 0x19, 0xFB, 0xC5, 0xF0,
- .byte 0x13, 0xFB, 0xC7, 0xF0, 0x0D, 0xFB, 0xC9, 0xF0, 0x07, 0xFB, 0xCB, 0xF0, 0x01, 0xFB, 0xCD, 0xF0,
- .byte 0xFB, 0xFA, 0xCF, 0xF0, 0xF5, 0xFA, 0xD1, 0xF0, 0xEF, 0xFA, 0xD3, 0xF0, 0xE9, 0xFA, 0xD5, 0xF0,
- .byte 0xE3, 0xFA, 0xD7, 0xF0, 0xDD, 0xFA, 0xD9, 0xF0, 0xD7, 0xFA, 0xDB, 0xF0, 0xD1, 0xFA, 0xDD, 0xF0,
- .byte 0xCC, 0xFA, 0xDF, 0xF0, 0xC6, 0xFA, 0xE1, 0xF0, 0xC0, 0xFA, 0xE3, 0xF0, 0xBA, 0xFA, 0xE5, 0xF0,
- .byte 0xB4, 0xFA, 0xE7, 0xF0, 0xAE, 0xFA, 0xE9, 0xF0, 0xA8, 0xFA, 0xEB, 0xF0, 0xA2, 0xFA, 0xED, 0xF0,
- .byte 0x9C, 0xFA, 0xEF, 0xF0, 0x96, 0xFA, 0xF2, 0xF0, 0x90, 0xFA, 0xF4, 0xF0, 0x8A, 0xFA, 0xF6, 0xF0,
- .byte 0x84, 0xFA, 0xF8, 0xF0, 0x7F, 0xFA, 0xFA, 0xF0, 0x79, 0xFA, 0xFC, 0xF0, 0x73, 0xFA, 0xFE, 0xF0,
- .byte 0x6D, 0xFA, 0x01, 0xF1, 0x67, 0xFA, 0x03, 0xF1, 0x61, 0xFA, 0x05, 0xF1, 0x5B, 0xFA, 0x07, 0xF1,
- .byte 0x55, 0xFA, 0x09, 0xF1, 0x4F, 0xFA, 0x0C, 0xF1, 0x4A, 0xFA, 0x0E, 0xF1, 0x44, 0xFA, 0x10, 0xF1,
- .byte 0x3E, 0xFA, 0x12, 0xF1, 0x38, 0xFA, 0x15, 0xF1, 0x32, 0xFA, 0x17, 0xF1, 0x2C, 0xFA, 0x19, 0xF1,
- .byte 0x26, 0xFA, 0x1C, 0xF1, 0x21, 0xFA, 0x1E, 0xF1, 0x1B, 0xFA, 0x20, 0xF1, 0x15, 0xFA, 0x23, 0xF1,
- .byte 0x0F, 0xFA, 0x25, 0xF1, 0x09, 0xFA, 0x27, 0xF1, 0x03, 0xFA, 0x2A, 0xF1, 0xFE, 0xF9, 0x2C, 0xF1,
- .byte 0xF8, 0xF9, 0x2E, 0xF1, 0xF2, 0xF9, 0x31, 0xF1, 0xEC, 0xF9, 0x33, 0xF1, 0xE6, 0xF9, 0x35, 0xF1,
- .byte 0xE1, 0xF9, 0x38, 0xF1, 0xDB, 0xF9, 0x3A, 0xF1, 0xD5, 0xF9, 0x3D, 0xF1, 0xCF, 0xF9, 0x3F, 0xF1,
- .byte 0xC9, 0xF9, 0x41, 0xF1, 0xC4, 0xF9, 0x44, 0xF1, 0xBE, 0xF9, 0x46, 0xF1, 0xB8, 0xF9, 0x49, 0xF1,
- .byte 0xB2, 0xF9, 0x4B, 0xF1, 0xAC, 0xF9, 0x4E, 0xF1, 0xA7, 0xF9, 0x50, 0xF1, 0xA1, 0xF9, 0x53, 0xF1,
- .byte 0x9B, 0xF9, 0x55, 0xF1, 0x95, 0xF9, 0x58, 0xF1, 0x90, 0xF9, 0x5A, 0xF1, 0x8A, 0xF9, 0x5D, 0xF1,
- .byte 0x84, 0xF9, 0x5F, 0xF1, 0x7E, 0xF9, 0x62, 0xF1, 0x79, 0xF9, 0x65, 0xF1, 0x73, 0xF9, 0x67, 0xF1,
- .byte 0x6D, 0xF9, 0x6A, 0xF1, 0x67, 0xF9, 0x6C, 0xF1, 0x62, 0xF9, 0x6F, 0xF1, 0x5C, 0xF9, 0x71, 0xF1,
- .byte 0x56, 0xF9, 0x74, 0xF1, 0x51, 0xF9, 0x77, 0xF1, 0x4B, 0xF9, 0x79, 0xF1, 0x45, 0xF9, 0x7C, 0xF1,
- .byte 0x3F, 0xF9, 0x7F, 0xF1, 0x3A, 0xF9, 0x81, 0xF1, 0x34, 0xF9, 0x84, 0xF1, 0x2E, 0xF9, 0x87, 0xF1,
- .byte 0x29, 0xF9, 0x89, 0xF1, 0x23, 0xF9, 0x8C, 0xF1, 0x1D, 0xF9, 0x8F, 0xF1, 0x18, 0xF9, 0x91, 0xF1,
- .byte 0x12, 0xF9, 0x94, 0xF1, 0x0C, 0xF9, 0x97, 0xF1, 0x07, 0xF9, 0x9A, 0xF1, 0x01, 0xF9, 0x9C, 0xF1,
- .byte 0xFB, 0xF8, 0x9F, 0xF1, 0xF6, 0xF8, 0xA2, 0xF1, 0xF0, 0xF8, 0xA5, 0xF1, 0xEB, 0xF8, 0xA7, 0xF1,
- .byte 0xE5, 0xF8, 0xAA, 0xF1, 0xDF, 0xF8, 0xAD, 0xF1, 0xDA, 0xF8, 0xB0, 0xF1, 0xD4, 0xF8, 0xB3, 0xF1,
- .byte 0xCE, 0xF8, 0xB5, 0xF1, 0xC9, 0xF8, 0xB8, 0xF1, 0xC3, 0xF8, 0xBB, 0xF1, 0xBE, 0xF8, 0xBE, 0xF1,
- .byte 0xB8, 0xF8, 0xC1, 0xF1, 0xB2, 0xF8, 0xC4, 0xF1, 0xAD, 0xF8, 0xC6, 0xF1, 0xA7, 0xF8, 0xC9, 0xF1,
- .byte 0xA2, 0xF8, 0xCC, 0xF1, 0x9C, 0xF8, 0xCF, 0xF1, 0x96, 0xF8, 0xD2, 0xF1, 0x91, 0xF8, 0xD5, 0xF1,
- .byte 0x8B, 0xF8, 0xD8, 0xF1, 0x86, 0xF8, 0xDB, 0xF1, 0x80, 0xF8, 0xDE, 0xF1, 0x7B, 0xF8, 0xE1, 0xF1,
- .byte 0x75, 0xF8, 0xE4, 0xF1, 0x70, 0xF8, 0xE7, 0xF1, 0x6A, 0xF8, 0xEA, 0xF1, 0x65, 0xF8, 0xED, 0xF1,
- .byte 0x5F, 0xF8, 0xF0, 0xF1, 0x5A, 0xF8, 0xF3, 0xF1, 0x54, 0xF8, 0xF6, 0xF1, 0x4E, 0xF8, 0xF9, 0xF1,
- .byte 0x49, 0xF8, 0xFC, 0xF1, 0x43, 0xF8, 0xFF, 0xF1, 0x3E, 0xF8, 0x02, 0xF2, 0x38, 0xF8, 0x05, 0xF2,
- .byte 0x33, 0xF8, 0x08, 0xF2, 0x2E, 0xF8, 0x0B, 0xF2, 0x28, 0xF8, 0x0E, 0xF2, 0x23, 0xF8, 0x11, 0xF2,
- .byte 0x1D, 0xF8, 0x14, 0xF2, 0x18, 0xF8, 0x17, 0xF2, 0x12, 0xF8, 0x1A, 0xF2, 0x0D, 0xF8, 0x1D, 0xF2,
- .byte 0x07, 0xF8, 0x21, 0xF2, 0x02, 0xF8, 0x24, 0xF2, 0xFC, 0xF7, 0x27, 0xF2, 0xF7, 0xF7, 0x2A, 0xF2,
- .byte 0xF2, 0xF7, 0x2D, 0xF2, 0xEC, 0xF7, 0x30, 0xF2, 0xE7, 0xF7, 0x34, 0xF2, 0xE1, 0xF7, 0x37, 0xF2,
- .byte 0xDC, 0xF7, 0x3A, 0xF2, 0xD6, 0xF7, 0x3D, 0xF2, 0xD1, 0xF7, 0x40, 0xF2, 0xCC, 0xF7, 0x44, 0xF2,
- .byte 0xC6, 0xF7, 0x47, 0xF2, 0xC1, 0xF7, 0x4A, 0xF2, 0xBB, 0xF7, 0x4D, 0xF2, 0xB6, 0xF7, 0x50, 0xF2,
- .byte 0xB1, 0xF7, 0x54, 0xF2, 0xAB, 0xF7, 0x57, 0xF2, 0xA6, 0xF7, 0x5A, 0xF2, 0xA1, 0xF7, 0x5E, 0xF2,
- .byte 0x9B, 0xF7, 0x61, 0xF2, 0x96, 0xF7, 0x64, 0xF2, 0x91, 0xF7, 0x67, 0xF2, 0x8B, 0xF7, 0x6B, 0xF2,
- .byte 0x86, 0xF7, 0x6E, 0xF2, 0x81, 0xF7, 0x71, 0xF2, 0x7B, 0xF7, 0x75, 0xF2, 0x76, 0xF7, 0x78, 0xF2,
- .byte 0x71, 0xF7, 0x7B, 0xF2, 0x6B, 0xF7, 0x7F, 0xF2, 0x66, 0xF7, 0x82, 0xF2, 0x61, 0xF7, 0x86, 0xF2,
- .byte 0x5B, 0xF7, 0x89, 0xF2, 0x56, 0xF7, 0x8C, 0xF2, 0x51, 0xF7, 0x90, 0xF2, 0x4C, 0xF7, 0x93, 0xF2,
- .byte 0x46, 0xF7, 0x97, 0xF2, 0x41, 0xF7, 0x9A, 0xF2, 0x3C, 0xF7, 0x9E, 0xF2, 0x37, 0xF7, 0xA1, 0xF2,
- .byte 0x31, 0xF7, 0xA4, 0xF2, 0x2C, 0xF7, 0xA8, 0xF2, 0x27, 0xF7, 0xAB, 0xF2, 0x22, 0xF7, 0xAF, 0xF2,
- .byte 0x1C, 0xF7, 0xB2, 0xF2, 0x17, 0xF7, 0xB6, 0xF2, 0x12, 0xF7, 0xB9, 0xF2, 0x0D, 0xF7, 0xBD, 0xF2,
- .byte 0x08, 0xF7, 0xC0, 0xF2, 0x02, 0xF7, 0xC4, 0xF2, 0xFD, 0xF6, 0xC7, 0xF2, 0xF8, 0xF6, 0xCB, 0xF2,
- .byte 0xF3, 0xF6, 0xCE, 0xF2, 0xEE, 0xF6, 0xD2, 0xF2, 0xE8, 0xF6, 0xD6, 0xF2, 0xE3, 0xF6, 0xD9, 0xF2,
- .byte 0xDE, 0xF6, 0xDD, 0xF2, 0xD9, 0xF6, 0xE0, 0xF2, 0xD4, 0xF6, 0xE4, 0xF2, 0xCF, 0xF6, 0xE8, 0xF2,
- .byte 0xC9, 0xF6, 0xEB, 0xF2, 0xC4, 0xF6, 0xEF, 0xF2, 0xBF, 0xF6, 0xF2, 0xF2, 0xBA, 0xF6, 0xF6, 0xF2,
- .byte 0xB5, 0xF6, 0xFA, 0xF2, 0xB0, 0xF6, 0xFD, 0xF2, 0xAB, 0xF6, 0x01, 0xF3, 0xA6, 0xF6, 0x05, 0xF3,
- .byte 0xA1, 0xF6, 0x08, 0xF3, 0x9B, 0xF6, 0x0C, 0xF3, 0x96, 0xF6, 0x10, 0xF3, 0x91, 0xF6, 0x13, 0xF3,
- .byte 0x8C, 0xF6, 0x17, 0xF3, 0x87, 0xF6, 0x1B, 0xF3, 0x82, 0xF6, 0x1F, 0xF3, 0x7D, 0xF6, 0x22, 0xF3,
- .byte 0x78, 0xF6, 0x26, 0xF3, 0x73, 0xF6, 0x2A, 0xF3, 0x6E, 0xF6, 0x2E, 0xF3, 0x69, 0xF6, 0x31, 0xF3,
- .byte 0x64, 0xF6, 0x35, 0xF3, 0x5F, 0xF6, 0x39, 0xF3, 0x5A, 0xF6, 0x3D, 0xF3, 0x55, 0xF6, 0x40, 0xF3,
- .byte 0x50, 0xF6, 0x44, 0xF3, 0x4B, 0xF6, 0x48, 0xF3, 0x46, 0xF6, 0x4C, 0xF3, 0x41, 0xF6, 0x50, 0xF3,
- .byte 0x3C, 0xF6, 0x54, 0xF3, 0x37, 0xF6, 0x57, 0xF3, 0x32, 0xF6, 0x5B, 0xF3, 0x2D, 0xF6, 0x5F, 0xF3,
- .byte 0x28, 0xF6, 0x63, 0xF3, 0x23, 0xF6, 0x67, 0xF3, 0x1E, 0xF6, 0x6B, 0xF3, 0x19, 0xF6, 0x6F, 0xF3,
- .byte 0x14, 0xF6, 0x72, 0xF3, 0x0F, 0xF6, 0x76, 0xF3, 0x0A, 0xF6, 0x7A, 0xF3, 0x05, 0xF6, 0x7E, 0xF3,
- .byte 0x01, 0xF6, 0x82, 0xF3, 0xFC, 0xF5, 0x86, 0xF3, 0xF7, 0xF5, 0x8A, 0xF3, 0xF2, 0xF5, 0x8E, 0xF3,
- .byte 0xED, 0xF5, 0x92, 0xF3, 0xE8, 0xF5, 0x96, 0xF3, 0xE3, 0xF5, 0x9A, 0xF3, 0xDE, 0xF5, 0x9E, 0xF3,
- .byte 0xDA, 0xF5, 0xA2, 0xF3, 0xD5, 0xF5, 0xA6, 0xF3, 0xD0, 0xF5, 0xAA, 0xF3, 0xCB, 0xF5, 0xAE, 0xF3,
- .byte 0xC6, 0xF5, 0xB2, 0xF3, 0xC1, 0xF5, 0xB6, 0xF3, 0xBC, 0xF5, 0xBA, 0xF3, 0xB8, 0xF5, 0xBE, 0xF3,
- .byte 0xB3, 0xF5, 0xC2, 0xF3, 0xAE, 0xF5, 0xC6, 0xF3, 0xA9, 0xF5, 0xCA, 0xF3, 0xA4, 0xF5, 0xCE, 0xF3,
- .byte 0xA0, 0xF5, 0xD2, 0xF3, 0x9B, 0xF5, 0xD6, 0xF3, 0x96, 0xF5, 0xDA, 0xF3, 0x91, 0xF5, 0xDE, 0xF3,
- .byte 0x8D, 0xF5, 0xE2, 0xF3, 0x88, 0xF5, 0xE7, 0xF3, 0x83, 0xF5, 0xEB, 0xF3, 0x7E, 0xF5, 0xEF, 0xF3,
- .byte 0x7A, 0xF5, 0xF3, 0xF3, 0x75, 0xF5, 0xF7, 0xF3, 0x70, 0xF5, 0xFB, 0xF3, 0x6B, 0xF5, 0xFF, 0xF3,
- .byte 0x67, 0xF5, 0x04, 0xF4, 0x62, 0xF5, 0x08, 0xF4, 0x5D, 0xF5, 0x0C, 0xF4, 0x59, 0xF5, 0x10, 0xF4,
- .byte 0x54, 0xF5, 0x14, 0xF4, 0x4F, 0xF5, 0x18, 0xF4, 0x4B, 0xF5, 0x1D, 0xF4, 0x46, 0xF5, 0x21, 0xF4,
- .byte 0x41, 0xF5, 0x25, 0xF4, 0x3D, 0xF5, 0x29, 0xF4, 0x38, 0xF5, 0x2E, 0xF4, 0x33, 0xF5, 0x32, 0xF4,
- .byte 0x2F, 0xF5, 0x36, 0xF4, 0x2A, 0xF5, 0x3A, 0xF4, 0x25, 0xF5, 0x3F, 0xF4, 0x21, 0xF5, 0x43, 0xF4,
- .byte 0x1C, 0xF5, 0x47, 0xF4, 0x18, 0xF5, 0x4B, 0xF4, 0x13, 0xF5, 0x50, 0xF4, 0x0E, 0xF5, 0x54, 0xF4,
- .byte 0x0A, 0xF5, 0x58, 0xF4, 0x05, 0xF5, 0x5D, 0xF4, 0x01, 0xF5, 0x61, 0xF4, 0xFC, 0xF4, 0x65, 0xF4,
- .byte 0xF8, 0xF4, 0x69, 0xF4, 0xF3, 0xF4, 0x6E, 0xF4, 0xEF, 0xF4, 0x72, 0xF4, 0xEA, 0xF4, 0x77, 0xF4,
- .byte 0xE5, 0xF4, 0x7B, 0xF4, 0xE1, 0xF4, 0x7F, 0xF4, 0xDC, 0xF4, 0x84, 0xF4, 0xD8, 0xF4, 0x88, 0xF4,
- .byte 0xD3, 0xF4, 0x8C, 0xF4, 0xCF, 0xF4, 0x91, 0xF4, 0xCA, 0xF4, 0x95, 0xF4, 0xC6, 0xF4, 0x9A, 0xF4,
- .byte 0xC2, 0xF4, 0x9E, 0xF4, 0xBD, 0xF4, 0xA2, 0xF4, 0xB9, 0xF4, 0xA7, 0xF4, 0xB4, 0xF4, 0xAB, 0xF4,
- .byte 0xB0, 0xF4, 0xB0, 0xF4, 0xAB, 0xF4, 0xB4, 0xF4, 0xA7, 0xF4, 0xB9, 0xF4, 0xA2, 0xF4, 0xBD, 0xF4,
- .byte 0x9E, 0xF4, 0xC2, 0xF4, 0x9A, 0xF4, 0xC6, 0xF4, 0x95, 0xF4, 0xCA, 0xF4, 0x91, 0xF4, 0xCF, 0xF4,
- .byte 0x8C, 0xF4, 0xD3, 0xF4, 0x88, 0xF4, 0xD8, 0xF4, 0x84, 0xF4, 0xDC, 0xF4, 0x7F, 0xF4, 0xE1, 0xF4,
- .byte 0x7B, 0xF4, 0xE5, 0xF4, 0x77, 0xF4, 0xEA, 0xF4, 0x72, 0xF4, 0xEF, 0xF4, 0x6E, 0xF4, 0xF3, 0xF4,
- .byte 0x69, 0xF4, 0xF8, 0xF4, 0x65, 0xF4, 0xFC, 0xF4, 0x61, 0xF4, 0x01, 0xF5, 0x5D, 0xF4, 0x05, 0xF5,
- .byte 0x58, 0xF4, 0x0A, 0xF5, 0x54, 0xF4, 0x0E, 0xF5, 0x50, 0xF4, 0x13, 0xF5, 0x4B, 0xF4, 0x18, 0xF5,
- .byte 0x47, 0xF4, 0x1C, 0xF5, 0x43, 0xF4, 0x21, 0xF5, 0x3F, 0xF4, 0x25, 0xF5, 0x3A, 0xF4, 0x2A, 0xF5,
- .byte 0x36, 0xF4, 0x2F, 0xF5, 0x32, 0xF4, 0x33, 0xF5, 0x2E, 0xF4, 0x38, 0xF5, 0x29, 0xF4, 0x3D, 0xF5,
- .byte 0x25, 0xF4, 0x41, 0xF5, 0x21, 0xF4, 0x46, 0xF5, 0x1D, 0xF4, 0x4B, 0xF5, 0x18, 0xF4, 0x4F, 0xF5,
- .byte 0x14, 0xF4, 0x54, 0xF5, 0x10, 0xF4, 0x59, 0xF5, 0x0C, 0xF4, 0x5D, 0xF5, 0x08, 0xF4, 0x62, 0xF5,
- .byte 0x04, 0xF4, 0x67, 0xF5, 0xFF, 0xF3, 0x6B, 0xF5, 0xFB, 0xF3, 0x70, 0xF5, 0xF7, 0xF3, 0x75, 0xF5,
- .byte 0xF3, 0xF3, 0x7A, 0xF5, 0xEF, 0xF3, 0x7E, 0xF5, 0xEB, 0xF3, 0x83, 0xF5, 0xE7, 0xF3, 0x88, 0xF5,
- .byte 0xE2, 0xF3, 0x8D, 0xF5, 0xDE, 0xF3, 0x91, 0xF5, 0xDA, 0xF3, 0x96, 0xF5, 0xD6, 0xF3, 0x9B, 0xF5,
- .byte 0xD2, 0xF3, 0xA0, 0xF5, 0xCE, 0xF3, 0xA4, 0xF5, 0xCA, 0xF3, 0xA9, 0xF5, 0xC6, 0xF3, 0xAE, 0xF5,
- .byte 0xC2, 0xF3, 0xB3, 0xF5, 0xBE, 0xF3, 0xB8, 0xF5, 0xBA, 0xF3, 0xBC, 0xF5, 0xB6, 0xF3, 0xC1, 0xF5,
- .byte 0xB2, 0xF3, 0xC6, 0xF5, 0xAE, 0xF3, 0xCB, 0xF5, 0xAA, 0xF3, 0xD0, 0xF5, 0xA6, 0xF3, 0xD5, 0xF5,
- .byte 0xA2, 0xF3, 0xDA, 0xF5, 0x9E, 0xF3, 0xDE, 0xF5, 0x9A, 0xF3, 0xE3, 0xF5, 0x96, 0xF3, 0xE8, 0xF5,
- .byte 0x92, 0xF3, 0xED, 0xF5, 0x8E, 0xF3, 0xF2, 0xF5, 0x8A, 0xF3, 0xF7, 0xF5, 0x86, 0xF3, 0xFC, 0xF5,
- .byte 0x82, 0xF3, 0x01, 0xF6, 0x7E, 0xF3, 0x05, 0xF6, 0x7A, 0xF3, 0x0A, 0xF6, 0x76, 0xF3, 0x0F, 0xF6,
- .byte 0x72, 0xF3, 0x14, 0xF6, 0x6F, 0xF3, 0x19, 0xF6, 0x6B, 0xF3, 0x1E, 0xF6, 0x67, 0xF3, 0x23, 0xF6,
- .byte 0x63, 0xF3, 0x28, 0xF6, 0x5F, 0xF3, 0x2D, 0xF6, 0x5B, 0xF3, 0x32, 0xF6, 0x57, 0xF3, 0x37, 0xF6,
- .byte 0x54, 0xF3, 0x3C, 0xF6, 0x50, 0xF3, 0x41, 0xF6, 0x4C, 0xF3, 0x46, 0xF6, 0x48, 0xF3, 0x4B, 0xF6,
- .byte 0x44, 0xF3, 0x50, 0xF6, 0x40, 0xF3, 0x55, 0xF6, 0x3D, 0xF3, 0x5A, 0xF6, 0x39, 0xF3, 0x5F, 0xF6,
- .byte 0x35, 0xF3, 0x64, 0xF6, 0x31, 0xF3, 0x69, 0xF6, 0x2E, 0xF3, 0x6E, 0xF6, 0x2A, 0xF3, 0x73, 0xF6,
- .byte 0x26, 0xF3, 0x78, 0xF6, 0x22, 0xF3, 0x7D, 0xF6, 0x1F, 0xF3, 0x82, 0xF6, 0x1B, 0xF3, 0x87, 0xF6,
- .byte 0x17, 0xF3, 0x8C, 0xF6, 0x13, 0xF3, 0x91, 0xF6, 0x10, 0xF3, 0x96, 0xF6, 0x0C, 0xF3, 0x9B, 0xF6,
- .byte 0x08, 0xF3, 0xA1, 0xF6, 0x05, 0xF3, 0xA6, 0xF6, 0x01, 0xF3, 0xAB, 0xF6, 0xFD, 0xF2, 0xB0, 0xF6,
- .byte 0xFA, 0xF2, 0xB5, 0xF6, 0xF6, 0xF2, 0xBA, 0xF6, 0xF2, 0xF2, 0xBF, 0xF6, 0xEF, 0xF2, 0xC4, 0xF6,
- .byte 0xEB, 0xF2, 0xC9, 0xF6, 0xE8, 0xF2, 0xCF, 0xF6, 0xE4, 0xF2, 0xD4, 0xF6, 0xE0, 0xF2, 0xD9, 0xF6,
- .byte 0xDD, 0xF2, 0xDE, 0xF6, 0xD9, 0xF2, 0xE3, 0xF6, 0xD6, 0xF2, 0xE8, 0xF6, 0xD2, 0xF2, 0xEE, 0xF6,
- .byte 0xCE, 0xF2, 0xF3, 0xF6, 0xCB, 0xF2, 0xF8, 0xF6, 0xC7, 0xF2, 0xFD, 0xF6, 0xC4, 0xF2, 0x02, 0xF7,
- .byte 0xC0, 0xF2, 0x08, 0xF7, 0xBD, 0xF2, 0x0D, 0xF7, 0xB9, 0xF2, 0x12, 0xF7, 0xB6, 0xF2, 0x17, 0xF7,
- .byte 0xB2, 0xF2, 0x1C, 0xF7, 0xAF, 0xF2, 0x22, 0xF7, 0xAB, 0xF2, 0x27, 0xF7, 0xA8, 0xF2, 0x2C, 0xF7,
- .byte 0xA4, 0xF2, 0x31, 0xF7, 0xA1, 0xF2, 0x37, 0xF7, 0x9E, 0xF2, 0x3C, 0xF7, 0x9A, 0xF2, 0x41, 0xF7,
- .byte 0x97, 0xF2, 0x46, 0xF7, 0x93, 0xF2, 0x4C, 0xF7, 0x90, 0xF2, 0x51, 0xF7, 0x8C, 0xF2, 0x56, 0xF7,
- .byte 0x89, 0xF2, 0x5B, 0xF7, 0x86, 0xF2, 0x61, 0xF7, 0x82, 0xF2, 0x66, 0xF7, 0x7F, 0xF2, 0x6B, 0xF7,
- .byte 0x7B, 0xF2, 0x71, 0xF7, 0x78, 0xF2, 0x76, 0xF7, 0x75, 0xF2, 0x7B, 0xF7, 0x71, 0xF2, 0x81, 0xF7,
- .byte 0x6E, 0xF2, 0x86, 0xF7, 0x6B, 0xF2, 0x8B, 0xF7, 0x67, 0xF2, 0x91, 0xF7, 0x64, 0xF2, 0x96, 0xF7,
- .byte 0x61, 0xF2, 0x9B, 0xF7, 0x5E, 0xF2, 0xA1, 0xF7, 0x5A, 0xF2, 0xA6, 0xF7, 0x57, 0xF2, 0xAB, 0xF7,
- .byte 0x54, 0xF2, 0xB1, 0xF7, 0x50, 0xF2, 0xB6, 0xF7, 0x4D, 0xF2, 0xBB, 0xF7, 0x4A, 0xF2, 0xC1, 0xF7,
- .byte 0x47, 0xF2, 0xC6, 0xF7, 0x44, 0xF2, 0xCC, 0xF7, 0x40, 0xF2, 0xD1, 0xF7, 0x3D, 0xF2, 0xD6, 0xF7,
- .byte 0x3A, 0xF2, 0xDC, 0xF7, 0x37, 0xF2, 0xE1, 0xF7, 0x34, 0xF2, 0xE7, 0xF7, 0x30, 0xF2, 0xEC, 0xF7,
- .byte 0x2D, 0xF2, 0xF2, 0xF7, 0x2A, 0xF2, 0xF7, 0xF7, 0x27, 0xF2, 0xFC, 0xF7, 0x24, 0xF2, 0x02, 0xF8,
- .byte 0x21, 0xF2, 0x07, 0xF8, 0x1D, 0xF2, 0x0D, 0xF8, 0x1A, 0xF2, 0x12, 0xF8, 0x17, 0xF2, 0x18, 0xF8,
- .byte 0x14, 0xF2, 0x1D, 0xF8, 0x11, 0xF2, 0x23, 0xF8, 0x0E, 0xF2, 0x28, 0xF8, 0x0B, 0xF2, 0x2E, 0xF8,
- .byte 0x08, 0xF2, 0x33, 0xF8, 0x05, 0xF2, 0x38, 0xF8, 0x02, 0xF2, 0x3E, 0xF8, 0xFF, 0xF1, 0x43, 0xF8,
- .byte 0xFC, 0xF1, 0x49, 0xF8, 0xF9, 0xF1, 0x4E, 0xF8, 0xF6, 0xF1, 0x54, 0xF8, 0xF3, 0xF1, 0x5A, 0xF8,
- .byte 0xF0, 0xF1, 0x5F, 0xF8, 0xED, 0xF1, 0x65, 0xF8, 0xEA, 0xF1, 0x6A, 0xF8, 0xE7, 0xF1, 0x70, 0xF8,
- .byte 0xE4, 0xF1, 0x75, 0xF8, 0xE1, 0xF1, 0x7B, 0xF8, 0xDE, 0xF1, 0x80, 0xF8, 0xDB, 0xF1, 0x86, 0xF8,
- .byte 0xD8, 0xF1, 0x8B, 0xF8, 0xD5, 0xF1, 0x91, 0xF8, 0xD2, 0xF1, 0x96, 0xF8, 0xCF, 0xF1, 0x9C, 0xF8,
- .byte 0xCC, 0xF1, 0xA2, 0xF8, 0xC9, 0xF1, 0xA7, 0xF8, 0xC6, 0xF1, 0xAD, 0xF8, 0xC4, 0xF1, 0xB2, 0xF8,
- .byte 0xC1, 0xF1, 0xB8, 0xF8, 0xBE, 0xF1, 0xBE, 0xF8, 0xBB, 0xF1, 0xC3, 0xF8, 0xB8, 0xF1, 0xC9, 0xF8,
- .byte 0xB5, 0xF1, 0xCE, 0xF8, 0xB3, 0xF1, 0xD4, 0xF8, 0xB0, 0xF1, 0xDA, 0xF8, 0xAD, 0xF1, 0xDF, 0xF8,
- .byte 0xAA, 0xF1, 0xE5, 0xF8, 0xA7, 0xF1, 0xEB, 0xF8, 0xA5, 0xF1, 0xF0, 0xF8, 0xA2, 0xF1, 0xF6, 0xF8,
- .byte 0x9F, 0xF1, 0xFB, 0xF8, 0x9C, 0xF1, 0x01, 0xF9, 0x9A, 0xF1, 0x07, 0xF9, 0x97, 0xF1, 0x0C, 0xF9,
- .byte 0x94, 0xF1, 0x12, 0xF9, 0x91, 0xF1, 0x18, 0xF9, 0x8F, 0xF1, 0x1D, 0xF9, 0x8C, 0xF1, 0x23, 0xF9,
- .byte 0x89, 0xF1, 0x29, 0xF9, 0x87, 0xF1, 0x2E, 0xF9, 0x84, 0xF1, 0x34, 0xF9, 0x81, 0xF1, 0x3A, 0xF9,
- .byte 0x7F, 0xF1, 0x3F, 0xF9, 0x7C, 0xF1, 0x45, 0xF9, 0x79, 0xF1, 0x4B, 0xF9, 0x77, 0xF1, 0x51, 0xF9,
- .byte 0x74, 0xF1, 0x56, 0xF9, 0x71, 0xF1, 0x5C, 0xF9, 0x6F, 0xF1, 0x62, 0xF9, 0x6C, 0xF1, 0x67, 0xF9,
- .byte 0x6A, 0xF1, 0x6D, 0xF9, 0x67, 0xF1, 0x73, 0xF9, 0x65, 0xF1, 0x79, 0xF9, 0x62, 0xF1, 0x7E, 0xF9,
- .byte 0x5F, 0xF1, 0x84, 0xF9, 0x5D, 0xF1, 0x8A, 0xF9, 0x5A, 0xF1, 0x90, 0xF9, 0x58, 0xF1, 0x95, 0xF9,
- .byte 0x55, 0xF1, 0x9B, 0xF9, 0x53, 0xF1, 0xA1, 0xF9, 0x50, 0xF1, 0xA7, 0xF9, 0x4E, 0xF1, 0xAC, 0xF9,
- .byte 0x4B, 0xF1, 0xB2, 0xF9, 0x49, 0xF1, 0xB8, 0xF9, 0x46, 0xF1, 0xBE, 0xF9, 0x44, 0xF1, 0xC4, 0xF9,
- .byte 0x41, 0xF1, 0xC9, 0xF9, 0x3F, 0xF1, 0xCF, 0xF9, 0x3D, 0xF1, 0xD5, 0xF9, 0x3A, 0xF1, 0xDB, 0xF9,
- .byte 0x38, 0xF1, 0xE1, 0xF9, 0x35, 0xF1, 0xE6, 0xF9, 0x33, 0xF1, 0xEC, 0xF9, 0x31, 0xF1, 0xF2, 0xF9,
- .byte 0x2E, 0xF1, 0xF8, 0xF9, 0x2C, 0xF1, 0xFE, 0xF9, 0x2A, 0xF1, 0x03, 0xFA, 0x27, 0xF1, 0x09, 0xFA,
- .byte 0x25, 0xF1, 0x0F, 0xFA, 0x23, 0xF1, 0x15, 0xFA, 0x20, 0xF1, 0x1B, 0xFA, 0x1E, 0xF1, 0x21, 0xFA,
- .byte 0x1C, 0xF1, 0x26, 0xFA, 0x19, 0xF1, 0x2C, 0xFA, 0x17, 0xF1, 0x32, 0xFA, 0x15, 0xF1, 0x38, 0xFA,
- .byte 0x12, 0xF1, 0x3E, 0xFA, 0x10, 0xF1, 0x44, 0xFA, 0x0E, 0xF1, 0x4A, 0xFA, 0x0C, 0xF1, 0x4F, 0xFA,
- .byte 0x09, 0xF1, 0x55, 0xFA, 0x07, 0xF1, 0x5B, 0xFA, 0x05, 0xF1, 0x61, 0xFA, 0x03, 0xF1, 0x67, 0xFA,
- .byte 0x01, 0xF1, 0x6D, 0xFA, 0xFE, 0xF0, 0x73, 0xFA, 0xFC, 0xF0, 0x79, 0xFA, 0xFA, 0xF0, 0x7F, 0xFA,
- .byte 0xF8, 0xF0, 0x84, 0xFA, 0xF6, 0xF0, 0x8A, 0xFA, 0xF4, 0xF0, 0x90, 0xFA, 0xF2, 0xF0, 0x96, 0xFA,
- .byte 0xEF, 0xF0, 0x9C, 0xFA, 0xED, 0xF0, 0xA2, 0xFA, 0xEB, 0xF0, 0xA8, 0xFA, 0xE9, 0xF0, 0xAE, 0xFA,
- .byte 0xE7, 0xF0, 0xB4, 0xFA, 0xE5, 0xF0, 0xBA, 0xFA, 0xE3, 0xF0, 0xC0, 0xFA, 0xE1, 0xF0, 0xC6, 0xFA,
- .byte 0xDF, 0xF0, 0xCC, 0xFA, 0xDD, 0xF0, 0xD1, 0xFA, 0xDB, 0xF0, 0xD7, 0xFA, 0xD9, 0xF0, 0xDD, 0xFA,
- .byte 0xD7, 0xF0, 0xE3, 0xFA, 0xD5, 0xF0, 0xE9, 0xFA, 0xD3, 0xF0, 0xEF, 0xFA, 0xD1, 0xF0, 0xF5, 0xFA,
- .byte 0xCF, 0xF0, 0xFB, 0xFA, 0xCD, 0xF0, 0x01, 0xFB, 0xCB, 0xF0, 0x07, 0xFB, 0xC9, 0xF0, 0x0D, 0xFB,
- .byte 0xC7, 0xF0, 0x13, 0xFB, 0xC5, 0xF0, 0x19, 0xFB, 0xC3, 0xF0, 0x1F, 0xFB, 0xC1, 0xF0, 0x25, 0xFB,
- .byte 0xBF, 0xF0, 0x2B, 0xFB, 0xBD, 0xF0, 0x31, 0xFB, 0xBB, 0xF0, 0x37, 0xFB, 0xBA, 0xF0, 0x3D, 0xFB,
- .byte 0xB8, 0xF0, 0x43, 0xFB, 0xB6, 0xF0, 0x49, 0xFB, 0xB4, 0xF0, 0x4F, 0xFB, 0xB2, 0xF0, 0x55, 0xFB,
- .byte 0xB0, 0xF0, 0x5B, 0xFB, 0xAF, 0xF0, 0x61, 0xFB, 0xAD, 0xF0, 0x67, 0xFB, 0xAB, 0xF0, 0x6D, 0xFB,
- .byte 0xA9, 0xF0, 0x73, 0xFB, 0xA7, 0xF0, 0x79, 0xFB, 0xA6, 0xF0, 0x7F, 0xFB, 0xA4, 0xF0, 0x85, 0xFB,
- .byte 0xA2, 0xF0, 0x8B, 0xFB, 0xA0, 0xF0, 0x91, 0xFB, 0x9F, 0xF0, 0x97, 0xFB, 0x9D, 0xF0, 0x9D, 0xFB,
- .byte 0x9B, 0xF0, 0xA3, 0xFB, 0x99, 0xF0, 0xA9, 0xFB, 0x98, 0xF0, 0xAF, 0xFB, 0x96, 0xF0, 0xB5, 0xFB,
- .byte 0x94, 0xF0, 0xBC, 0xFB, 0x93, 0xF0, 0xC2, 0xFB, 0x91, 0xF0, 0xC8, 0xFB, 0x8F, 0xF0, 0xCE, 0xFB,
- .byte 0x8E, 0xF0, 0xD4, 0xFB, 0x8C, 0xF0, 0xDA, 0xFB, 0x8A, 0xF0, 0xE0, 0xFB, 0x89, 0xF0, 0xE6, 0xFB,
- .byte 0x87, 0xF0, 0xEC, 0xFB, 0x86, 0xF0, 0xF2, 0xFB, 0x84, 0xF0, 0xF8, 0xFB, 0x83, 0xF0, 0xFE, 0xFB,
- .byte 0x81, 0xF0, 0x04, 0xFC, 0x7F, 0xF0, 0x0A, 0xFC, 0x7E, 0xF0, 0x11, 0xFC, 0x7C, 0xF0, 0x17, 0xFC,
- .byte 0x7B, 0xF0, 0x1D, 0xFC, 0x79, 0xF0, 0x23, 0xFC, 0x78, 0xF0, 0x29, 0xFC, 0x76, 0xF0, 0x2F, 0xFC,
- .byte 0x75, 0xF0, 0x35, 0xFC, 0x73, 0xF0, 0x3B, 0xFC, 0x72, 0xF0, 0x41, 0xFC, 0x70, 0xF0, 0x47, 0xFC,
- .byte 0x6F, 0xF0, 0x4E, 0xFC, 0x6D, 0xF0, 0x54, 0xFC, 0x6C, 0xF0, 0x5A, 0xFC, 0x6B, 0xF0, 0x60, 0xFC,
- .byte 0x69, 0xF0, 0x66, 0xFC, 0x68, 0xF0, 0x6C, 0xFC, 0x66, 0xF0, 0x72, 0xFC, 0x65, 0xF0, 0x78, 0xFC,
- .byte 0x64, 0xF0, 0x7F, 0xFC, 0x62, 0xF0, 0x85, 0xFC, 0x61, 0xF0, 0x8B, 0xFC, 0x5F, 0xF0, 0x91, 0xFC,
- .byte 0x5E, 0xF0, 0x97, 0xFC, 0x5D, 0xF0, 0x9D, 0xFC, 0x5B, 0xF0, 0xA3, 0xFC, 0x5A, 0xF0, 0xAA, 0xFC,
- .byte 0x59, 0xF0, 0xB0, 0xFC, 0x58, 0xF0, 0xB6, 0xFC, 0x56, 0xF0, 0xBC, 0xFC, 0x55, 0xF0, 0xC2, 0xFC,
- .byte 0x54, 0xF0, 0xC8, 0xFC, 0x52, 0xF0, 0xCE, 0xFC, 0x51, 0xF0, 0xD5, 0xFC, 0x50, 0xF0, 0xDB, 0xFC,
- .byte 0x4F, 0xF0, 0xE1, 0xFC, 0x4D, 0xF0, 0xE7, 0xFC, 0x4C, 0xF0, 0xED, 0xFC, 0x4B, 0xF0, 0xF3, 0xFC,
- .byte 0x4A, 0xF0, 0xFA, 0xFC, 0x49, 0xF0, 0x00, 0xFD, 0x48, 0xF0, 0x06, 0xFD, 0x46, 0xF0, 0x0C, 0xFD,
- .byte 0x45, 0xF0, 0x12, 0xFD, 0x44, 0xF0, 0x18, 0xFD, 0x43, 0xF0, 0x1F, 0xFD, 0x42, 0xF0, 0x25, 0xFD,
- .byte 0x41, 0xF0, 0x2B, 0xFD, 0x40, 0xF0, 0x31, 0xFD, 0x3E, 0xF0, 0x37, 0xFD, 0x3D, 0xF0, 0x3E, 0xFD,
- .byte 0x3C, 0xF0, 0x44, 0xFD, 0x3B, 0xF0, 0x4A, 0xFD, 0x3A, 0xF0, 0x50, 0xFD, 0x39, 0xF0, 0x56, 0xFD,
- .byte 0x38, 0xF0, 0x5D, 0xFD, 0x37, 0xF0, 0x63, 0xFD, 0x36, 0xF0, 0x69, 0xFD, 0x35, 0xF0, 0x6F, 0xFD,
- .byte 0x34, 0xF0, 0x75, 0xFD, 0x33, 0xF0, 0x7C, 0xFD, 0x32, 0xF0, 0x82, 0xFD, 0x31, 0xF0, 0x88, 0xFD,
- .byte 0x30, 0xF0, 0x8E, 0xFD, 0x2F, 0xF0, 0x94, 0xFD, 0x2E, 0xF0, 0x9B, 0xFD, 0x2D, 0xF0, 0xA1, 0xFD,
- .byte 0x2C, 0xF0, 0xA7, 0xFD, 0x2B, 0xF0, 0xAD, 0xFD, 0x2B, 0xF0, 0xB3, 0xFD, 0x2A, 0xF0, 0xBA, 0xFD,
- .byte 0x29, 0xF0, 0xC0, 0xFD, 0x28, 0xF0, 0xC6, 0xFD, 0x27, 0xF0, 0xCC, 0xFD, 0x26, 0xF0, 0xD3, 0xFD,
- .byte 0x25, 0xF0, 0xD9, 0xFD, 0x24, 0xF0, 0xDF, 0xFD, 0x24, 0xF0, 0xE5, 0xFD, 0x23, 0xF0, 0xEB, 0xFD,
- .byte 0x22, 0xF0, 0xF2, 0xFD, 0x21, 0xF0, 0xF8, 0xFD, 0x20, 0xF0, 0xFE, 0xFD, 0x20, 0xF0, 0x04, 0xFE,
- .byte 0x1F, 0xF0, 0x0B, 0xFE, 0x1E, 0xF0, 0x11, 0xFE, 0x1D, 0xF0, 0x17, 0xFE, 0x1D, 0xF0, 0x1D, 0xFE,
- .byte 0x1C, 0xF0, 0x24, 0xFE, 0x1B, 0xF0, 0x2A, 0xFE, 0x1A, 0xF0, 0x30, 0xFE, 0x1A, 0xF0, 0x36, 0xFE,
- .byte 0x19, 0xF0, 0x3D, 0xFE, 0x18, 0xF0, 0x43, 0xFE, 0x18, 0xF0, 0x49, 0xFE, 0x17, 0xF0, 0x4F, 0xFE,
- .byte 0x16, 0xF0, 0x56, 0xFE, 0x16, 0xF0, 0x5C, 0xFE, 0x15, 0xF0, 0x62, 0xFE, 0x14, 0xF0, 0x68, 0xFE,
- .byte 0x14, 0xF0, 0x6F, 0xFE, 0x13, 0xF0, 0x75, 0xFE, 0x13, 0xF0, 0x7B, 0xFE, 0x12, 0xF0, 0x81, 0xFE,
- .byte 0x11, 0xF0, 0x88, 0xFE, 0x11, 0xF0, 0x8E, 0xFE, 0x10, 0xF0, 0x94, 0xFE, 0x10, 0xF0, 0x9A, 0xFE,
- .byte 0x0F, 0xF0, 0xA1, 0xFE, 0x0F, 0xF0, 0xA7, 0xFE, 0x0E, 0xF0, 0xAD, 0xFE, 0x0E, 0xF0, 0xB3, 0xFE,
- .byte 0x0D, 0xF0, 0xBA, 0xFE, 0x0D, 0xF0, 0xC0, 0xFE, 0x0C, 0xF0, 0xC6, 0xFE, 0x0C, 0xF0, 0xCC, 0xFE,
- .byte 0x0B, 0xF0, 0xD3, 0xFE, 0x0B, 0xF0, 0xD9, 0xFE, 0x0A, 0xF0, 0xDF, 0xFE, 0x0A, 0xF0, 0xE5, 0xFE,
- .byte 0x09, 0xF0, 0xEC, 0xFE, 0x09, 0xF0, 0xF2, 0xFE, 0x08, 0xF0, 0xF8, 0xFE, 0x08, 0xF0, 0xFF, 0xFE,
- .byte 0x08, 0xF0, 0x05, 0xFF, 0x07, 0xF0, 0x0B, 0xFF, 0x07, 0xF0, 0x11, 0xFF, 0x07, 0xF0, 0x18, 0xFF,
- .byte 0x06, 0xF0, 0x1E, 0xFF, 0x06, 0xF0, 0x24, 0xFF, 0x06, 0xF0, 0x2A, 0xFF, 0x05, 0xF0, 0x31, 0xFF,
- .byte 0x05, 0xF0, 0x37, 0xFF, 0x05, 0xF0, 0x3D, 0xFF, 0x04, 0xF0, 0x44, 0xFF, 0x04, 0xF0, 0x4A, 0xFF,
- .byte 0x04, 0xF0, 0x50, 0xFF, 0x04, 0xF0, 0x56, 0xFF, 0x03, 0xF0, 0x5D, 0xFF, 0x03, 0xF0, 0x63, 0xFF,
- .byte 0x03, 0xF0, 0x69, 0xFF, 0x03, 0xF0, 0x70, 0xFF, 0x02, 0xF0, 0x76, 0xFF, 0x02, 0xF0, 0x7C, 0xFF,
- .byte 0x02, 0xF0, 0x82, 0xFF, 0x02, 0xF0, 0x89, 0xFF, 0x02, 0xF0, 0x8F, 0xFF, 0x01, 0xF0, 0x95, 0xFF,
- .byte 0x01, 0xF0, 0x9B, 0xFF, 0x01, 0xF0, 0xA2, 0xFF, 0x01, 0xF0, 0xA8, 0xFF, 0x01, 0xF0, 0xAE, 0xFF,
- .byte 0x01, 0xF0, 0xB5, 0xFF, 0x01, 0xF0, 0xBB, 0xFF, 0x00, 0xF0, 0xC1, 0xFF, 0x00, 0xF0, 0xC7, 0xFF,
- .byte 0x00, 0xF0, 0xCE, 0xFF, 0x00, 0xF0, 0xD4, 0xFF, 0x00, 0xF0, 0xDA, 0xFF, 0x00, 0xF0, 0xE1, 0xFF,
- .byte 0x00, 0xF0, 0xE7, 0xFF, 0x00, 0xF0, 0xED, 0xFF, 0x00, 0xF0, 0xF3, 0xFF, 0x00, 0xF0, 0xFA, 0xFF,
- .byte 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0xF0, 0x0D, 0x00, 0x00, 0xF0, 0x13, 0x00,
- .byte 0x00, 0xF0, 0x19, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x26, 0x00, 0x00, 0xF0, 0x2C, 0x00,
- .byte 0x00, 0xF0, 0x32, 0x00, 0x00, 0xF0, 0x39, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x01, 0xF0, 0x45, 0x00,
- .byte 0x01, 0xF0, 0x4B, 0x00, 0x01, 0xF0, 0x52, 0x00, 0x01, 0xF0, 0x58, 0x00, 0x01, 0xF0, 0x5E, 0x00,
- .byte 0x01, 0xF0, 0x65, 0x00, 0x01, 0xF0, 0x6B, 0x00, 0x02, 0xF0, 0x71, 0x00, 0x02, 0xF0, 0x77, 0x00,
- .byte 0x02, 0xF0, 0x7E, 0x00, 0x02, 0xF0, 0x84, 0x00, 0x02, 0xF0, 0x8A, 0x00, 0x03, 0xF0, 0x90, 0x00,
- .byte 0x03, 0xF0, 0x97, 0x00, 0x03, 0xF0, 0x9D, 0x00, 0x03, 0xF0, 0xA3, 0x00, 0x04, 0xF0, 0xAA, 0x00,
- .byte 0x04, 0xF0, 0xB0, 0x00, 0x04, 0xF0, 0xB6, 0x00, 0x04, 0xF0, 0xBC, 0x00, 0x05, 0xF0, 0xC3, 0x00,
- .byte 0x05, 0xF0, 0xC9, 0x00, 0x05, 0xF0, 0xCF, 0x00, 0x06, 0xF0, 0xD6, 0x00, 0x06, 0xF0, 0xDC, 0x00,
- .byte 0x06, 0xF0, 0xE2, 0x00, 0x07, 0xF0, 0xE8, 0x00, 0x07, 0xF0, 0xEF, 0x00, 0x07, 0xF0, 0xF5, 0x00,
- .byte 0x08, 0xF0, 0xFB, 0x00, 0x08, 0xF0, 0x01, 0x01, 0x08, 0xF0, 0x08, 0x01, 0x09, 0xF0, 0x0E, 0x01,
- .byte 0x09, 0xF0, 0x14, 0x01, 0x0A, 0xF0, 0x1B, 0x01, 0x0A, 0xF0, 0x21, 0x01, 0x0B, 0xF0, 0x27, 0x01,
- .byte 0x0B, 0xF0, 0x2D, 0x01, 0x0C, 0xF0, 0x34, 0x01, 0x0C, 0xF0, 0x3A, 0x01, 0x0D, 0xF0, 0x40, 0x01,
- .byte 0x0D, 0xF0, 0x46, 0x01, 0x0E, 0xF0, 0x4D, 0x01, 0x0E, 0xF0, 0x53, 0x01, 0x0F, 0xF0, 0x59, 0x01,
- .byte 0x0F, 0xF0, 0x5F, 0x01, 0x10, 0xF0, 0x66, 0x01, 0x10, 0xF0, 0x6C, 0x01, 0x11, 0xF0, 0x72, 0x01,
- .byte 0x11, 0xF0, 0x78, 0x01, 0x12, 0xF0, 0x7F, 0x01, 0x13, 0xF0, 0x85, 0x01, 0x13, 0xF0, 0x8B, 0x01,
- .byte 0x14, 0xF0, 0x91, 0x01, 0x14, 0xF0, 0x98, 0x01, 0x15, 0xF0, 0x9E, 0x01, 0x16, 0xF0, 0xA4, 0x01,
- .byte 0x16, 0xF0, 0xAA, 0x01, 0x17, 0xF0, 0xB1, 0x01, 0x18, 0xF0, 0xB7, 0x01, 0x18, 0xF0, 0xBD, 0x01,
- .byte 0x19, 0xF0, 0xC3, 0x01, 0x1A, 0xF0, 0xCA, 0x01, 0x1A, 0xF0, 0xD0, 0x01, 0x1B, 0xF0, 0xD6, 0x01,
- .byte 0x1C, 0xF0, 0xDC, 0x01, 0x1D, 0xF0, 0xE3, 0x01, 0x1D, 0xF0, 0xE9, 0x01, 0x1E, 0xF0, 0xEF, 0x01,
- .byte 0x1F, 0xF0, 0xF5, 0x01, 0x20, 0xF0, 0xFC, 0x01, 0x20, 0xF0, 0x02, 0x02, 0x21, 0xF0, 0x08, 0x02,
- .byte 0x22, 0xF0, 0x0E, 0x02, 0x23, 0xF0, 0x15, 0x02, 0x24, 0xF0, 0x1B, 0x02, 0x24, 0xF0, 0x21, 0x02,
- .byte 0x25, 0xF0, 0x27, 0x02, 0x26, 0xF0, 0x2D, 0x02, 0x27, 0xF0, 0x34, 0x02, 0x28, 0xF0, 0x3A, 0x02,
- .byte 0x29, 0xF0, 0x40, 0x02, 0x2A, 0xF0, 0x46, 0x02, 0x2B, 0xF0, 0x4D, 0x02, 0x2B, 0xF0, 0x53, 0x02,
- .byte 0x2C, 0xF0, 0x59, 0x02, 0x2D, 0xF0, 0x5F, 0x02, 0x2E, 0xF0, 0x65, 0x02, 0x2F, 0xF0, 0x6C, 0x02,
- .byte 0x30, 0xF0, 0x72, 0x02, 0x31, 0xF0, 0x78, 0x02, 0x32, 0xF0, 0x7E, 0x02, 0x33, 0xF0, 0x84, 0x02,
- .byte 0x34, 0xF0, 0x8B, 0x02, 0x35, 0xF0, 0x91, 0x02, 0x36, 0xF0, 0x97, 0x02, 0x37, 0xF0, 0x9D, 0x02,
- .byte 0x38, 0xF0, 0xA3, 0x02, 0x39, 0xF0, 0xAA, 0x02, 0x3A, 0xF0, 0xB0, 0x02, 0x3B, 0xF0, 0xB6, 0x02,
- .byte 0x3C, 0xF0, 0xBC, 0x02, 0x3D, 0xF0, 0xC2, 0x02, 0x3E, 0xF0, 0xC9, 0x02, 0x40, 0xF0, 0xCF, 0x02,
- .byte 0x41, 0xF0, 0xD5, 0x02, 0x42, 0xF0, 0xDB, 0x02, 0x43, 0xF0, 0xE1, 0x02, 0x44, 0xF0, 0xE8, 0x02,
- .byte 0x45, 0xF0, 0xEE, 0x02, 0x46, 0xF0, 0xF4, 0x02, 0x48, 0xF0, 0xFA, 0x02, 0x49, 0xF0, 0x00, 0x03,
- .byte 0x4A, 0xF0, 0x06, 0x03, 0x4B, 0xF0, 0x0D, 0x03, 0x4C, 0xF0, 0x13, 0x03, 0x4D, 0xF0, 0x19, 0x03,
- .byte 0x4F, 0xF0, 0x1F, 0x03, 0x50, 0xF0, 0x25, 0x03, 0x51, 0xF0, 0x2B, 0x03, 0x52, 0xF0, 0x32, 0x03,
- .byte 0x54, 0xF0, 0x38, 0x03, 0x55, 0xF0, 0x3E, 0x03, 0x56, 0xF0, 0x44, 0x03, 0x58, 0xF0, 0x4A, 0x03,
- .byte 0x59, 0xF0, 0x50, 0x03, 0x5A, 0xF0, 0x56, 0x03, 0x5B, 0xF0, 0x5D, 0x03, 0x5D, 0xF0, 0x63, 0x03,
- .byte 0x5E, 0xF0, 0x69, 0x03, 0x5F, 0xF0, 0x6F, 0x03, 0x61, 0xF0, 0x75, 0x03, 0x62, 0xF0, 0x7B, 0x03,
- .byte 0x64, 0xF0, 0x81, 0x03, 0x65, 0xF0, 0x88, 0x03, 0x66, 0xF0, 0x8E, 0x03, 0x68, 0xF0, 0x94, 0x03,
- .byte 0x69, 0xF0, 0x9A, 0x03, 0x6B, 0xF0, 0xA0, 0x03, 0x6C, 0xF0, 0xA6, 0x03, 0x6D, 0xF0, 0xAC, 0x03,
- .byte 0x6F, 0xF0, 0xB2, 0x03, 0x70, 0xF0, 0xB9, 0x03, 0x72, 0xF0, 0xBF, 0x03, 0x73, 0xF0, 0xC5, 0x03,
- .byte 0x75, 0xF0, 0xCB, 0x03, 0x76, 0xF0, 0xD1, 0x03, 0x78, 0xF0, 0xD7, 0x03, 0x79, 0xF0, 0xDD, 0x03,
- .byte 0x7B, 0xF0, 0xE3, 0x03, 0x7C, 0xF0, 0xE9, 0x03, 0x7E, 0xF0, 0xEF, 0x03, 0x7F, 0xF0, 0xF6, 0x03,
- .byte 0x81, 0xF0, 0xFC, 0x03, 0x83, 0xF0, 0x02, 0x04, 0x84, 0xF0, 0x08, 0x04, 0x86, 0xF0, 0x0E, 0x04,
- .byte 0x87, 0xF0, 0x14, 0x04, 0x89, 0xF0, 0x1A, 0x04, 0x8A, 0xF0, 0x20, 0x04, 0x8C, 0xF0, 0x26, 0x04,
- .byte 0x8E, 0xF0, 0x2C, 0x04, 0x8F, 0xF0, 0x32, 0x04, 0x91, 0xF0, 0x38, 0x04, 0x93, 0xF0, 0x3E, 0x04,
- .byte 0x94, 0xF0, 0x44, 0x04, 0x96, 0xF0, 0x4B, 0x04, 0x98, 0xF0, 0x51, 0x04, 0x99, 0xF0, 0x57, 0x04,
- .byte 0x9B, 0xF0, 0x5D, 0x04, 0x9D, 0xF0, 0x63, 0x04, 0x9F, 0xF0, 0x69, 0x04, 0xA0, 0xF0, 0x6F, 0x04,
- .byte 0xA2, 0xF0, 0x75, 0x04, 0xA4, 0xF0, 0x7B, 0x04, 0xA6, 0xF0, 0x81, 0x04, 0xA7, 0xF0, 0x87, 0x04,
- .byte 0xA9, 0xF0, 0x8D, 0x04, 0xAB, 0xF0, 0x93, 0x04, 0xAD, 0xF0, 0x99, 0x04, 0xAF, 0xF0, 0x9F, 0x04,
- .byte 0xB0, 0xF0, 0xA5, 0x04, 0xB2, 0xF0, 0xAB, 0x04, 0xB4, 0xF0, 0xB1, 0x04, 0xB6, 0xF0, 0xB7, 0x04,
- .byte 0xB8, 0xF0, 0xBD, 0x04, 0xBA, 0xF0, 0xC3, 0x04, 0xBB, 0xF0, 0xC9, 0x04, 0xBD, 0xF0, 0xCF, 0x04,
- .byte 0xBF, 0xF0, 0xD5, 0x04, 0xC1, 0xF0, 0xDB, 0x04, 0xC3, 0xF0, 0xE1, 0x04, 0xC5, 0xF0, 0xE7, 0x04,
- .byte 0xC7, 0xF0, 0xED, 0x04, 0xC9, 0xF0, 0xF3, 0x04, 0xCB, 0xF0, 0xF9, 0x04, 0xCD, 0xF0, 0xFF, 0x04,
- .byte 0xCF, 0xF0, 0x05, 0x05, 0xD1, 0xF0, 0x0B, 0x05, 0xD3, 0xF0, 0x11, 0x05, 0xD5, 0xF0, 0x17, 0x05,
- .byte 0xD7, 0xF0, 0x1D, 0x05, 0xD9, 0xF0, 0x23, 0x05, 0xDB, 0xF0, 0x29, 0x05, 0xDD, 0xF0, 0x2F, 0x05,
- .byte 0xDF, 0xF0, 0x34, 0x05, 0xE1, 0xF0, 0x3A, 0x05, 0xE3, 0xF0, 0x40, 0x05, 0xE5, 0xF0, 0x46, 0x05,
- .byte 0xE7, 0xF0, 0x4C, 0x05, 0xE9, 0xF0, 0x52, 0x05, 0xEB, 0xF0, 0x58, 0x05, 0xED, 0xF0, 0x5E, 0x05,
- .byte 0xEF, 0xF0, 0x64, 0x05, 0xF2, 0xF0, 0x6A, 0x05, 0xF4, 0xF0, 0x70, 0x05, 0xF6, 0xF0, 0x76, 0x05,
- .byte 0xF8, 0xF0, 0x7C, 0x05, 0xFA, 0xF0, 0x81, 0x05, 0xFC, 0xF0, 0x87, 0x05, 0xFE, 0xF0, 0x8D, 0x05,
- .byte 0x01, 0xF1, 0x93, 0x05, 0x03, 0xF1, 0x99, 0x05, 0x05, 0xF1, 0x9F, 0x05, 0x07, 0xF1, 0xA5, 0x05,
- .byte 0x09, 0xF1, 0xAB, 0x05, 0x0C, 0xF1, 0xB1, 0x05, 0x0E, 0xF1, 0xB6, 0x05, 0x10, 0xF1, 0xBC, 0x05,
- .byte 0x12, 0xF1, 0xC2, 0x05, 0x15, 0xF1, 0xC8, 0x05, 0x17, 0xF1, 0xCE, 0x05, 0x19, 0xF1, 0xD4, 0x05,
- .byte 0x1C, 0xF1, 0xDA, 0x05, 0x1E, 0xF1, 0xDF, 0x05, 0x20, 0xF1, 0xE5, 0x05, 0x23, 0xF1, 0xEB, 0x05,
- .byte 0x25, 0xF1, 0xF1, 0x05, 0x27, 0xF1, 0xF7, 0x05, 0x2A, 0xF1, 0xFD, 0x05, 0x2C, 0xF1, 0x02, 0x06,
- .byte 0x2E, 0xF1, 0x08, 0x06, 0x31, 0xF1, 0x0E, 0x06, 0x33, 0xF1, 0x14, 0x06, 0x35, 0xF1, 0x1A, 0x06,
- .byte 0x38, 0xF1, 0x1F, 0x06, 0x3A, 0xF1, 0x25, 0x06, 0x3D, 0xF1, 0x2B, 0x06, 0x3F, 0xF1, 0x31, 0x06,
- .byte 0x41, 0xF1, 0x37, 0x06, 0x44, 0xF1, 0x3C, 0x06, 0x46, 0xF1, 0x42, 0x06, 0x49, 0xF1, 0x48, 0x06,
- .byte 0x4B, 0xF1, 0x4E, 0x06, 0x4E, 0xF1, 0x54, 0x06, 0x50, 0xF1, 0x59, 0x06, 0x53, 0xF1, 0x5F, 0x06,
- .byte 0x55, 0xF1, 0x65, 0x06, 0x58, 0xF1, 0x6B, 0x06, 0x5A, 0xF1, 0x70, 0x06, 0x5D, 0xF1, 0x76, 0x06,
- .byte 0x5F, 0xF1, 0x7C, 0x06, 0x62, 0xF1, 0x82, 0x06, 0x65, 0xF1, 0x87, 0x06, 0x67, 0xF1, 0x8D, 0x06,
- .byte 0x6A, 0xF1, 0x93, 0x06, 0x6C, 0xF1, 0x99, 0x06, 0x6F, 0xF1, 0x9E, 0x06, 0x71, 0xF1, 0xA4, 0x06,
- .byte 0x74, 0xF1, 0xAA, 0x06, 0x77, 0xF1, 0xAF, 0x06, 0x79, 0xF1, 0xB5, 0x06, 0x7C, 0xF1, 0xBB, 0x06,
- .byte 0x7F, 0xF1, 0xC1, 0x06, 0x81, 0xF1, 0xC6, 0x06, 0x84, 0xF1, 0xCC, 0x06, 0x87, 0xF1, 0xD2, 0x06,
- .byte 0x89, 0xF1, 0xD7, 0x06, 0x8C, 0xF1, 0xDD, 0x06, 0x8F, 0xF1, 0xE3, 0x06, 0x91, 0xF1, 0xE8, 0x06,
- .byte 0x94, 0xF1, 0xEE, 0x06, 0x97, 0xF1, 0xF4, 0x06, 0x9A, 0xF1, 0xF9, 0x06, 0x9C, 0xF1, 0xFF, 0x06,
- .byte 0x9F, 0xF1, 0x05, 0x07, 0xA2, 0xF1, 0x0A, 0x07, 0xA5, 0xF1, 0x10, 0x07, 0xA7, 0xF1, 0x15, 0x07,
- .byte 0xAA, 0xF1, 0x1B, 0x07, 0xAD, 0xF1, 0x21, 0x07, 0xB0, 0xF1, 0x26, 0x07, 0xB3, 0xF1, 0x2C, 0x07,
- .byte 0xB5, 0xF1, 0x32, 0x07, 0xB8, 0xF1, 0x37, 0x07, 0xBB, 0xF1, 0x3D, 0x07, 0xBE, 0xF1, 0x42, 0x07,
- .byte 0xC1, 0xF1, 0x48, 0x07, 0xC4, 0xF1, 0x4E, 0x07, 0xC6, 0xF1, 0x53, 0x07, 0xC9, 0xF1, 0x59, 0x07,
- .byte 0xCC, 0xF1, 0x5E, 0x07, 0xCF, 0xF1, 0x64, 0x07, 0xD2, 0xF1, 0x6A, 0x07, 0xD5, 0xF1, 0x6F, 0x07,
- .byte 0xD8, 0xF1, 0x75, 0x07, 0xDB, 0xF1, 0x7A, 0x07, 0xDE, 0xF1, 0x80, 0x07, 0xE1, 0xF1, 0x85, 0x07,
- .byte 0xE4, 0xF1, 0x8B, 0x07, 0xE7, 0xF1, 0x90, 0x07, 0xEA, 0xF1, 0x96, 0x07, 0xED, 0xF1, 0x9B, 0x07,
- .byte 0xF0, 0xF1, 0xA1, 0x07, 0xF3, 0xF1, 0xA6, 0x07, 0xF6, 0xF1, 0xAC, 0x07, 0xF9, 0xF1, 0xB2, 0x07,
- .byte 0xFC, 0xF1, 0xB7, 0x07, 0xFF, 0xF1, 0xBD, 0x07, 0x02, 0xF2, 0xC2, 0x07, 0x05, 0xF2, 0xC8, 0x07,
- .byte 0x08, 0xF2, 0xCD, 0x07, 0x0B, 0xF2, 0xD2, 0x07, 0x0E, 0xF2, 0xD8, 0x07, 0x11, 0xF2, 0xDD, 0x07,
- .byte 0x14, 0xF2, 0xE3, 0x07, 0x17, 0xF2, 0xE8, 0x07, 0x1A, 0xF2, 0xEE, 0x07, 0x1D, 0xF2, 0xF3, 0x07,
- .byte 0x21, 0xF2, 0xF9, 0x07, 0x24, 0xF2, 0xFE, 0x07, 0x27, 0xF2, 0x04, 0x08, 0x2A, 0xF2, 0x09, 0x08,
- .byte 0x2D, 0xF2, 0x0E, 0x08, 0x30, 0xF2, 0x14, 0x08, 0x34, 0xF2, 0x19, 0x08, 0x37, 0xF2, 0x1F, 0x08,
- .byte 0x3A, 0xF2, 0x24, 0x08, 0x3D, 0xF2, 0x2A, 0x08, 0x40, 0xF2, 0x2F, 0x08, 0x44, 0xF2, 0x34, 0x08,
- .byte 0x47, 0xF2, 0x3A, 0x08, 0x4A, 0xF2, 0x3F, 0x08, 0x4D, 0xF2, 0x45, 0x08, 0x50, 0xF2, 0x4A, 0x08,
- .byte 0x54, 0xF2, 0x4F, 0x08, 0x57, 0xF2, 0x55, 0x08, 0x5A, 0xF2, 0x5A, 0x08, 0x5E, 0xF2, 0x5F, 0x08,
- .byte 0x61, 0xF2, 0x65, 0x08, 0x64, 0xF2, 0x6A, 0x08, 0x67, 0xF2, 0x6F, 0x08, 0x6B, 0xF2, 0x75, 0x08,
- .byte 0x6E, 0xF2, 0x7A, 0x08, 0x71, 0xF2, 0x7F, 0x08, 0x75, 0xF2, 0x85, 0x08, 0x78, 0xF2, 0x8A, 0x08,
- .byte 0x7B, 0xF2, 0x8F, 0x08, 0x7F, 0xF2, 0x95, 0x08, 0x82, 0xF2, 0x9A, 0x08, 0x86, 0xF2, 0x9F, 0x08,
- .byte 0x89, 0xF2, 0xA5, 0x08, 0x8C, 0xF2, 0xAA, 0x08, 0x90, 0xF2, 0xAF, 0x08, 0x93, 0xF2, 0xB4, 0x08,
- .byte 0x97, 0xF2, 0xBA, 0x08, 0x9A, 0xF2, 0xBF, 0x08, 0x9E, 0xF2, 0xC4, 0x08, 0xA1, 0xF2, 0xC9, 0x08,
- .byte 0xA4, 0xF2, 0xCF, 0x08, 0xA8, 0xF2, 0xD4, 0x08, 0xAB, 0xF2, 0xD9, 0x08, 0xAF, 0xF2, 0xDE, 0x08,
- .byte 0xB2, 0xF2, 0xE4, 0x08, 0xB6, 0xF2, 0xE9, 0x08, 0xB9, 0xF2, 0xEE, 0x08, 0xBD, 0xF2, 0xF3, 0x08,
- .byte 0xC0, 0xF2, 0xF8, 0x08, 0xC4, 0xF2, 0xFE, 0x08, 0xC7, 0xF2, 0x03, 0x09, 0xCB, 0xF2, 0x08, 0x09,
- .byte 0xCE, 0xF2, 0x0D, 0x09, 0xD2, 0xF2, 0x12, 0x09, 0xD6, 0xF2, 0x18, 0x09, 0xD9, 0xF2, 0x1D, 0x09,
- .byte 0xDD, 0xF2, 0x22, 0x09, 0xE0, 0xF2, 0x27, 0x09, 0xE4, 0xF2, 0x2C, 0x09, 0xE8, 0xF2, 0x31, 0x09,
- .byte 0xEB, 0xF2, 0x37, 0x09, 0xEF, 0xF2, 0x3C, 0x09, 0xF2, 0xF2, 0x41, 0x09, 0xF6, 0xF2, 0x46, 0x09,
- .byte 0xFA, 0xF2, 0x4B, 0x09, 0xFD, 0xF2, 0x50, 0x09, 0x01, 0xF3, 0x55, 0x09, 0x05, 0xF3, 0x5A, 0x09,
- .byte 0x08, 0xF3, 0x5F, 0x09, 0x0C, 0xF3, 0x65, 0x09, 0x10, 0xF3, 0x6A, 0x09, 0x13, 0xF3, 0x6F, 0x09,
- .byte 0x17, 0xF3, 0x74, 0x09, 0x1B, 0xF3, 0x79, 0x09, 0x1F, 0xF3, 0x7E, 0x09, 0x22, 0xF3, 0x83, 0x09,
- .byte 0x26, 0xF3, 0x88, 0x09, 0x2A, 0xF3, 0x8D, 0x09, 0x2E, 0xF3, 0x92, 0x09, 0x31, 0xF3, 0x97, 0x09,
- .byte 0x35, 0xF3, 0x9C, 0x09, 0x39, 0xF3, 0xA1, 0x09, 0x3D, 0xF3, 0xA6, 0x09, 0x40, 0xF3, 0xAB, 0x09,
- .byte 0x44, 0xF3, 0xB0, 0x09, 0x48, 0xF3, 0xB5, 0x09, 0x4C, 0xF3, 0xBA, 0x09, 0x50, 0xF3, 0xBF, 0x09,
- .byte 0x54, 0xF3, 0xC4, 0x09, 0x57, 0xF3, 0xC9, 0x09, 0x5B, 0xF3, 0xCE, 0x09, 0x5F, 0xF3, 0xD3, 0x09,
- .byte 0x63, 0xF3, 0xD8, 0x09, 0x67, 0xF3, 0xDD, 0x09, 0x6B, 0xF3, 0xE2, 0x09, 0x6F, 0xF3, 0xE7, 0x09,
- .byte 0x72, 0xF3, 0xEC, 0x09, 0x76, 0xF3, 0xF1, 0x09, 0x7A, 0xF3, 0xF6, 0x09, 0x7E, 0xF3, 0xFB, 0x09,
- .byte 0x82, 0xF3, 0xFF, 0x09, 0x86, 0xF3, 0x04, 0x0A, 0x8A, 0xF3, 0x09, 0x0A, 0x8E, 0xF3, 0x0E, 0x0A,
- .byte 0x92, 0xF3, 0x13, 0x0A, 0x96, 0xF3, 0x18, 0x0A, 0x9A, 0xF3, 0x1D, 0x0A, 0x9E, 0xF3, 0x22, 0x0A,
- .byte 0xA2, 0xF3, 0x26, 0x0A, 0xA6, 0xF3, 0x2B, 0x0A, 0xAA, 0xF3, 0x30, 0x0A, 0xAE, 0xF3, 0x35, 0x0A,
- .byte 0xB2, 0xF3, 0x3A, 0x0A, 0xB6, 0xF3, 0x3F, 0x0A, 0xBA, 0xF3, 0x44, 0x0A, 0xBE, 0xF3, 0x48, 0x0A,
- .byte 0xC2, 0xF3, 0x4D, 0x0A, 0xC6, 0xF3, 0x52, 0x0A, 0xCA, 0xF3, 0x57, 0x0A, 0xCE, 0xF3, 0x5C, 0x0A,
- .byte 0xD2, 0xF3, 0x60, 0x0A, 0xD6, 0xF3, 0x65, 0x0A, 0xDA, 0xF3, 0x6A, 0x0A, 0xDE, 0xF3, 0x6F, 0x0A,
- .byte 0xE2, 0xF3, 0x73, 0x0A, 0xE7, 0xF3, 0x78, 0x0A, 0xEB, 0xF3, 0x7D, 0x0A, 0xEF, 0xF3, 0x82, 0x0A,
- .byte 0xF3, 0xF3, 0x86, 0x0A, 0xF7, 0xF3, 0x8B, 0x0A, 0xFB, 0xF3, 0x90, 0x0A, 0xFF, 0xF3, 0x95, 0x0A,
- .byte 0x04, 0xF4, 0x99, 0x0A, 0x08, 0xF4, 0x9E, 0x0A, 0x0C, 0xF4, 0xA3, 0x0A, 0x10, 0xF4, 0xA7, 0x0A,
- .byte 0x14, 0xF4, 0xAC, 0x0A, 0x18, 0xF4, 0xB1, 0x0A, 0x1D, 0xF4, 0xB5, 0x0A, 0x21, 0xF4, 0xBA, 0x0A,
- .byte 0x25, 0xF4, 0xBF, 0x0A, 0x29, 0xF4, 0xC3, 0x0A, 0x2E, 0xF4, 0xC8, 0x0A, 0x32, 0xF4, 0xCD, 0x0A,
- .byte 0x36, 0xF4, 0xD1, 0x0A, 0x3A, 0xF4, 0xD6, 0x0A, 0x3F, 0xF4, 0xDB, 0x0A, 0x43, 0xF4, 0xDF, 0x0A,
- .byte 0x47, 0xF4, 0xE4, 0x0A, 0x4B, 0xF4, 0xE8, 0x0A, 0x50, 0xF4, 0xED, 0x0A, 0x54, 0xF4, 0xF2, 0x0A,
- .byte 0x58, 0xF4, 0xF6, 0x0A, 0x5D, 0xF4, 0xFB, 0x0A, 0x61, 0xF4, 0xFF, 0x0A, 0x65, 0xF4, 0x04, 0x0B,
- .byte 0x69, 0xF4, 0x08, 0x0B, 0x6E, 0xF4, 0x0D, 0x0B, 0x72, 0xF4, 0x11, 0x0B, 0x77, 0xF4, 0x16, 0x0B,
- .byte 0x7B, 0xF4, 0x1B, 0x0B, 0x7F, 0xF4, 0x1F, 0x0B, 0x84, 0xF4, 0x24, 0x0B, 0x88, 0xF4, 0x28, 0x0B,
- .byte 0x8C, 0xF4, 0x2D, 0x0B, 0x91, 0xF4, 0x31, 0x0B, 0x95, 0xF4, 0x36, 0x0B, 0x9A, 0xF4, 0x3A, 0x0B,
- .byte 0x9E, 0xF4, 0x3E, 0x0B, 0xA2, 0xF4, 0x43, 0x0B, 0xA7, 0xF4, 0x47, 0x0B, 0xAB, 0xF4, 0x4C, 0x0B,
- .byte 0xB0, 0xF4, 0x50, 0x0B, 0xB4, 0xF4, 0x55, 0x0B, 0xB9, 0xF4, 0x59, 0x0B, 0xBD, 0xF4, 0x5E, 0x0B,
- .byte 0xC2, 0xF4, 0x62, 0x0B, 0xC6, 0xF4, 0x66, 0x0B, 0xCA, 0xF4, 0x6B, 0x0B, 0xCF, 0xF4, 0x6F, 0x0B,
- .byte 0xD3, 0xF4, 0x74, 0x0B, 0xD8, 0xF4, 0x78, 0x0B, 0xDC, 0xF4, 0x7C, 0x0B, 0xE1, 0xF4, 0x81, 0x0B,
- .byte 0xE5, 0xF4, 0x85, 0x0B, 0xEA, 0xF4, 0x89, 0x0B, 0xEF, 0xF4, 0x8E, 0x0B, 0xF3, 0xF4, 0x92, 0x0B,
- .byte 0xF8, 0xF4, 0x97, 0x0B, 0xFC, 0xF4, 0x9B, 0x0B, 0x01, 0xF5, 0x9F, 0x0B, 0x05, 0xF5, 0xA3, 0x0B,
- .byte 0x0A, 0xF5, 0xA8, 0x0B, 0x0E, 0xF5, 0xAC, 0x0B, 0x13, 0xF5, 0xB0, 0x0B, 0x18, 0xF5, 0xB5, 0x0B,
- .byte 0x1C, 0xF5, 0xB9, 0x0B, 0x21, 0xF5, 0xBD, 0x0B, 0x25, 0xF5, 0xC1, 0x0B, 0x2A, 0xF5, 0xC6, 0x0B,
- .byte 0x2F, 0xF5, 0xCA, 0x0B, 0x33, 0xF5, 0xCE, 0x0B, 0x38, 0xF5, 0xD2, 0x0B, 0x3D, 0xF5, 0xD7, 0x0B,
- .byte 0x41, 0xF5, 0xDB, 0x0B, 0x46, 0xF5, 0xDF, 0x0B, 0x4B, 0xF5, 0xE3, 0x0B, 0x4F, 0xF5, 0xE8, 0x0B,
- .byte 0x54, 0xF5, 0xEC, 0x0B, 0x59, 0xF5, 0xF0, 0x0B, 0x5D, 0xF5, 0xF4, 0x0B, 0x62, 0xF5, 0xF8, 0x0B,
- .byte 0x67, 0xF5, 0xFC, 0x0B, 0x6B, 0xF5, 0x01, 0x0C, 0x70, 0xF5, 0x05, 0x0C, 0x75, 0xF5, 0x09, 0x0C,
- .byte 0x7A, 0xF5, 0x0D, 0x0C, 0x7E, 0xF5, 0x11, 0x0C, 0x83, 0xF5, 0x15, 0x0C, 0x88, 0xF5, 0x19, 0x0C,
- .byte 0x8D, 0xF5, 0x1E, 0x0C, 0x91, 0xF5, 0x22, 0x0C, 0x96, 0xF5, 0x26, 0x0C, 0x9B, 0xF5, 0x2A, 0x0C,
- .byte 0xA0, 0xF5, 0x2E, 0x0C, 0xA4, 0xF5, 0x32, 0x0C, 0xA9, 0xF5, 0x36, 0x0C, 0xAE, 0xF5, 0x3A, 0x0C,
- .byte 0xB3, 0xF5, 0x3E, 0x0C, 0xB8, 0xF5, 0x42, 0x0C, 0xBC, 0xF5, 0x46, 0x0C, 0xC1, 0xF5, 0x4A, 0x0C,
- .byte 0xC6, 0xF5, 0x4E, 0x0C, 0xCB, 0xF5, 0x52, 0x0C, 0xD0, 0xF5, 0x56, 0x0C, 0xD5, 0xF5, 0x5A, 0x0C,
- .byte 0xDA, 0xF5, 0x5E, 0x0C, 0xDE, 0xF5, 0x62, 0x0C, 0xE3, 0xF5, 0x66, 0x0C, 0xE8, 0xF5, 0x6A, 0x0C,
- .byte 0xED, 0xF5, 0x6E, 0x0C, 0xF2, 0xF5, 0x72, 0x0C, 0xF7, 0xF5, 0x76, 0x0C, 0xFC, 0xF5, 0x7A, 0x0C,
- .byte 0x01, 0xF6, 0x7E, 0x0C, 0x05, 0xF6, 0x82, 0x0C, 0x0A, 0xF6, 0x86, 0x0C, 0x0F, 0xF6, 0x8A, 0x0C,
- .byte 0x14, 0xF6, 0x8E, 0x0C, 0x19, 0xF6, 0x91, 0x0C, 0x1E, 0xF6, 0x95, 0x0C, 0x23, 0xF6, 0x99, 0x0C,
- .byte 0x28, 0xF6, 0x9D, 0x0C, 0x2D, 0xF6, 0xA1, 0x0C, 0x32, 0xF6, 0xA5, 0x0C, 0x37, 0xF6, 0xA9, 0x0C,
- .byte 0x3C, 0xF6, 0xAC, 0x0C, 0x41, 0xF6, 0xB0, 0x0C, 0x46, 0xF6, 0xB4, 0x0C, 0x4B, 0xF6, 0xB8, 0x0C,
- .byte 0x50, 0xF6, 0xBC, 0x0C, 0x55, 0xF6, 0xC0, 0x0C, 0x5A, 0xF6, 0xC3, 0x0C, 0x5F, 0xF6, 0xC7, 0x0C,
- .byte 0x64, 0xF6, 0xCB, 0x0C, 0x69, 0xF6, 0xCF, 0x0C, 0x6E, 0xF6, 0xD2, 0x0C, 0x73, 0xF6, 0xD6, 0x0C,
- .byte 0x78, 0xF6, 0xDA, 0x0C, 0x7D, 0xF6, 0xDE, 0x0C, 0x82, 0xF6, 0xE1, 0x0C, 0x87, 0xF6, 0xE5, 0x0C,
- .byte 0x8C, 0xF6, 0xE9, 0x0C, 0x91, 0xF6, 0xED, 0x0C, 0x96, 0xF6, 0xF0, 0x0C, 0x9B, 0xF6, 0xF4, 0x0C,
- .byte 0xA1, 0xF6, 0xF8, 0x0C, 0xA6, 0xF6, 0xFB, 0x0C, 0xAB, 0xF6, 0xFF, 0x0C, 0xB0, 0xF6, 0x03, 0x0D,
- .byte 0xB5, 0xF6, 0x06, 0x0D, 0xBA, 0xF6, 0x0A, 0x0D, 0xBF, 0xF6, 0x0E, 0x0D, 0xC4, 0xF6, 0x11, 0x0D,
- .byte 0xC9, 0xF6, 0x15, 0x0D, 0xCF, 0xF6, 0x18, 0x0D, 0xD4, 0xF6, 0x1C, 0x0D, 0xD9, 0xF6, 0x20, 0x0D,
- .byte 0xDE, 0xF6, 0x23, 0x0D, 0xE3, 0xF6, 0x27, 0x0D, 0xE8, 0xF6, 0x2A, 0x0D, 0xEE, 0xF6, 0x2E, 0x0D,
- .byte 0xF3, 0xF6, 0x32, 0x0D, 0xF8, 0xF6, 0x35, 0x0D, 0xFD, 0xF6, 0x39, 0x0D, 0x02, 0xF7, 0x3C, 0x0D,
- .byte 0x08, 0xF7, 0x40, 0x0D, 0x0D, 0xF7, 0x43, 0x0D, 0x12, 0xF7, 0x47, 0x0D, 0x17, 0xF7, 0x4A, 0x0D,
- .byte 0x1C, 0xF7, 0x4E, 0x0D, 0x22, 0xF7, 0x51, 0x0D, 0x27, 0xF7, 0x55, 0x0D, 0x2C, 0xF7, 0x58, 0x0D,
- .byte 0x31, 0xF7, 0x5C, 0x0D, 0x37, 0xF7, 0x5F, 0x0D, 0x3C, 0xF7, 0x62, 0x0D, 0x41, 0xF7, 0x66, 0x0D,
- .byte 0x46, 0xF7, 0x69, 0x0D, 0x4C, 0xF7, 0x6D, 0x0D, 0x51, 0xF7, 0x70, 0x0D, 0x56, 0xF7, 0x74, 0x0D,
- .byte 0x5B, 0xF7, 0x77, 0x0D, 0x61, 0xF7, 0x7A, 0x0D, 0x66, 0xF7, 0x7E, 0x0D, 0x6B, 0xF7, 0x81, 0x0D,
- .byte 0x71, 0xF7, 0x85, 0x0D, 0x76, 0xF7, 0x88, 0x0D, 0x7B, 0xF7, 0x8B, 0x0D, 0x81, 0xF7, 0x8F, 0x0D,
- .byte 0x86, 0xF7, 0x92, 0x0D, 0x8B, 0xF7, 0x95, 0x0D, 0x91, 0xF7, 0x99, 0x0D, 0x96, 0xF7, 0x9C, 0x0D,
- .byte 0x9B, 0xF7, 0x9F, 0x0D, 0xA1, 0xF7, 0xA2, 0x0D, 0xA6, 0xF7, 0xA6, 0x0D, 0xAB, 0xF7, 0xA9, 0x0D,
- .byte 0xB1, 0xF7, 0xAC, 0x0D, 0xB6, 0xF7, 0xB0, 0x0D, 0xBB, 0xF7, 0xB3, 0x0D, 0xC1, 0xF7, 0xB6, 0x0D,
- .byte 0xC6, 0xF7, 0xB9, 0x0D, 0xCC, 0xF7, 0xBC, 0x0D, 0xD1, 0xF7, 0xC0, 0x0D, 0xD6, 0xF7, 0xC3, 0x0D,
- .byte 0xDC, 0xF7, 0xC6, 0x0D, 0xE1, 0xF7, 0xC9, 0x0D, 0xE7, 0xF7, 0xCC, 0x0D, 0xEC, 0xF7, 0xD0, 0x0D,
- .byte 0xF2, 0xF7, 0xD3, 0x0D, 0xF7, 0xF7, 0xD6, 0x0D, 0xFC, 0xF7, 0xD9, 0x0D, 0x02, 0xF8, 0xDC, 0x0D,
- .byte 0x07, 0xF8, 0xDF, 0x0D, 0x0D, 0xF8, 0xE3, 0x0D, 0x12, 0xF8, 0xE6, 0x0D, 0x18, 0xF8, 0xE9, 0x0D,
- .byte 0x1D, 0xF8, 0xEC, 0x0D, 0x23, 0xF8, 0xEF, 0x0D, 0x28, 0xF8, 0xF2, 0x0D, 0x2E, 0xF8, 0xF5, 0x0D,
- .byte 0x33, 0xF8, 0xF8, 0x0D, 0x38, 0xF8, 0xFB, 0x0D, 0x3E, 0xF8, 0xFE, 0x0D, 0x43, 0xF8, 0x01, 0x0E,
- .byte 0x49, 0xF8, 0x04, 0x0E, 0x4E, 0xF8, 0x07, 0x0E, 0x54, 0xF8, 0x0A, 0x0E, 0x5A, 0xF8, 0x0D, 0x0E,
- .byte 0x5F, 0xF8, 0x10, 0x0E, 0x65, 0xF8, 0x13, 0x0E, 0x6A, 0xF8, 0x16, 0x0E, 0x70, 0xF8, 0x19, 0x0E,
- .byte 0x75, 0xF8, 0x1C, 0x0E, 0x7B, 0xF8, 0x1F, 0x0E, 0x80, 0xF8, 0x22, 0x0E, 0x86, 0xF8, 0x25, 0x0E,
- .byte 0x8B, 0xF8, 0x28, 0x0E, 0x91, 0xF8, 0x2B, 0x0E, 0x96, 0xF8, 0x2E, 0x0E, 0x9C, 0xF8, 0x31, 0x0E,
- .byte 0xA2, 0xF8, 0x34, 0x0E, 0xA7, 0xF8, 0x37, 0x0E, 0xAD, 0xF8, 0x3A, 0x0E, 0xB2, 0xF8, 0x3C, 0x0E,
- .byte 0xB8, 0xF8, 0x3F, 0x0E, 0xBE, 0xF8, 0x42, 0x0E, 0xC3, 0xF8, 0x45, 0x0E, 0xC9, 0xF8, 0x48, 0x0E,
- .byte 0xCE, 0xF8, 0x4B, 0x0E, 0xD4, 0xF8, 0x4D, 0x0E, 0xDA, 0xF8, 0x50, 0x0E, 0xDF, 0xF8, 0x53, 0x0E,
- .byte 0xE5, 0xF8, 0x56, 0x0E, 0xEB, 0xF8, 0x59, 0x0E, 0xF0, 0xF8, 0x5B, 0x0E, 0xF6, 0xF8, 0x5E, 0x0E,
- .byte 0xFB, 0xF8, 0x61, 0x0E, 0x01, 0xF9, 0x64, 0x0E, 0x07, 0xF9, 0x66, 0x0E, 0x0C, 0xF9, 0x69, 0x0E,
- .byte 0x12, 0xF9, 0x6C, 0x0E, 0x18, 0xF9, 0x6F, 0x0E, 0x1D, 0xF9, 0x71, 0x0E, 0x23, 0xF9, 0x74, 0x0E,
- .byte 0x29, 0xF9, 0x77, 0x0E, 0x2E, 0xF9, 0x79, 0x0E, 0x34, 0xF9, 0x7C, 0x0E, 0x3A, 0xF9, 0x7F, 0x0E,
- .byte 0x3F, 0xF9, 0x81, 0x0E, 0x45, 0xF9, 0x84, 0x0E, 0x4B, 0xF9, 0x87, 0x0E, 0x51, 0xF9, 0x89, 0x0E,
- .byte 0x56, 0xF9, 0x8C, 0x0E, 0x5C, 0xF9, 0x8F, 0x0E, 0x62, 0xF9, 0x91, 0x0E, 0x67, 0xF9, 0x94, 0x0E,
- .byte 0x6D, 0xF9, 0x96, 0x0E, 0x73, 0xF9, 0x99, 0x0E, 0x79, 0xF9, 0x9B, 0x0E, 0x7E, 0xF9, 0x9E, 0x0E,
- .byte 0x84, 0xF9, 0xA1, 0x0E, 0x8A, 0xF9, 0xA3, 0x0E, 0x90, 0xF9, 0xA6, 0x0E, 0x95, 0xF9, 0xA8, 0x0E,
- .byte 0x9B, 0xF9, 0xAB, 0x0E, 0xA1, 0xF9, 0xAD, 0x0E, 0xA7, 0xF9, 0xB0, 0x0E, 0xAC, 0xF9, 0xB2, 0x0E,
- .byte 0xB2, 0xF9, 0xB5, 0x0E, 0xB8, 0xF9, 0xB7, 0x0E, 0xBE, 0xF9, 0xBA, 0x0E, 0xC4, 0xF9, 0xBC, 0x0E,
- .byte 0xC9, 0xF9, 0xBF, 0x0E, 0xCF, 0xF9, 0xC1, 0x0E, 0xD5, 0xF9, 0xC3, 0x0E, 0xDB, 0xF9, 0xC6, 0x0E,
- .byte 0xE1, 0xF9, 0xC8, 0x0E, 0xE6, 0xF9, 0xCB, 0x0E, 0xEC, 0xF9, 0xCD, 0x0E, 0xF2, 0xF9, 0xCF, 0x0E,
- .byte 0xF8, 0xF9, 0xD2, 0x0E, 0xFE, 0xF9, 0xD4, 0x0E, 0x03, 0xFA, 0xD6, 0x0E, 0x09, 0xFA, 0xD9, 0x0E,
- .byte 0x0F, 0xFA, 0xDB, 0x0E, 0x15, 0xFA, 0xDD, 0x0E, 0x1B, 0xFA, 0xE0, 0x0E, 0x21, 0xFA, 0xE2, 0x0E,
- .byte 0x26, 0xFA, 0xE4, 0x0E, 0x2C, 0xFA, 0xE7, 0x0E, 0x32, 0xFA, 0xE9, 0x0E, 0x38, 0xFA, 0xEB, 0x0E,
- .byte 0x3E, 0xFA, 0xEE, 0x0E, 0x44, 0xFA, 0xF0, 0x0E, 0x4A, 0xFA, 0xF2, 0x0E, 0x4F, 0xFA, 0xF4, 0x0E,
- .byte 0x55, 0xFA, 0xF7, 0x0E, 0x5B, 0xFA, 0xF9, 0x0E, 0x61, 0xFA, 0xFB, 0x0E, 0x67, 0xFA, 0xFD, 0x0E,
- .byte 0x6D, 0xFA, 0xFF, 0x0E, 0x73, 0xFA, 0x02, 0x0F, 0x79, 0xFA, 0x04, 0x0F, 0x7F, 0xFA, 0x06, 0x0F,
- .byte 0x84, 0xFA, 0x08, 0x0F, 0x8A, 0xFA, 0x0A, 0x0F, 0x90, 0xFA, 0x0C, 0x0F, 0x96, 0xFA, 0x0E, 0x0F,
- .byte 0x9C, 0xFA, 0x11, 0x0F, 0xA2, 0xFA, 0x13, 0x0F, 0xA8, 0xFA, 0x15, 0x0F, 0xAE, 0xFA, 0x17, 0x0F,
- .byte 0xB4, 0xFA, 0x19, 0x0F, 0xBA, 0xFA, 0x1B, 0x0F, 0xC0, 0xFA, 0x1D, 0x0F, 0xC6, 0xFA, 0x1F, 0x0F,
- .byte 0xCC, 0xFA, 0x21, 0x0F, 0xD1, 0xFA, 0x23, 0x0F, 0xD7, 0xFA, 0x25, 0x0F, 0xDD, 0xFA, 0x27, 0x0F,
- .byte 0xE3, 0xFA, 0x29, 0x0F, 0xE9, 0xFA, 0x2B, 0x0F, 0xEF, 0xFA, 0x2D, 0x0F, 0xF5, 0xFA, 0x2F, 0x0F,
- .byte 0xFB, 0xFA, 0x31, 0x0F, 0x01, 0xFB, 0x33, 0x0F, 0x07, 0xFB, 0x35, 0x0F, 0x0D, 0xFB, 0x37, 0x0F,
- .byte 0x13, 0xFB, 0x39, 0x0F, 0x19, 0xFB, 0x3B, 0x0F, 0x1F, 0xFB, 0x3D, 0x0F, 0x25, 0xFB, 0x3F, 0x0F,
- .byte 0x2B, 0xFB, 0x41, 0x0F, 0x31, 0xFB, 0x43, 0x0F, 0x37, 0xFB, 0x45, 0x0F, 0x3D, 0xFB, 0x46, 0x0F,
- .byte 0x43, 0xFB, 0x48, 0x0F, 0x49, 0xFB, 0x4A, 0x0F, 0x4F, 0xFB, 0x4C, 0x0F, 0x55, 0xFB, 0x4E, 0x0F,
- .byte 0x5B, 0xFB, 0x50, 0x0F, 0x61, 0xFB, 0x51, 0x0F, 0x67, 0xFB, 0x53, 0x0F, 0x6D, 0xFB, 0x55, 0x0F,
- .byte 0x73, 0xFB, 0x57, 0x0F, 0x79, 0xFB, 0x59, 0x0F, 0x7F, 0xFB, 0x5A, 0x0F, 0x85, 0xFB, 0x5C, 0x0F,
- .byte 0x8B, 0xFB, 0x5E, 0x0F, 0x91, 0xFB, 0x60, 0x0F, 0x97, 0xFB, 0x61, 0x0F, 0x9D, 0xFB, 0x63, 0x0F,
- .byte 0xA3, 0xFB, 0x65, 0x0F, 0xA9, 0xFB, 0x67, 0x0F, 0xAF, 0xFB, 0x68, 0x0F, 0xB5, 0xFB, 0x6A, 0x0F,
- .byte 0xBC, 0xFB, 0x6C, 0x0F, 0xC2, 0xFB, 0x6D, 0x0F, 0xC8, 0xFB, 0x6F, 0x0F, 0xCE, 0xFB, 0x71, 0x0F,
- .byte 0xD4, 0xFB, 0x72, 0x0F, 0xDA, 0xFB, 0x74, 0x0F, 0xE0, 0xFB, 0x76, 0x0F, 0xE6, 0xFB, 0x77, 0x0F,
- .byte 0xEC, 0xFB, 0x79, 0x0F, 0xF2, 0xFB, 0x7A, 0x0F, 0xF8, 0xFB, 0x7C, 0x0F, 0xFE, 0xFB, 0x7D, 0x0F,
- .byte 0x04, 0xFC, 0x7F, 0x0F, 0x0A, 0xFC, 0x81, 0x0F, 0x11, 0xFC, 0x82, 0x0F, 0x17, 0xFC, 0x84, 0x0F,
- .byte 0x1D, 0xFC, 0x85, 0x0F, 0x23, 0xFC, 0x87, 0x0F, 0x29, 0xFC, 0x88, 0x0F, 0x2F, 0xFC, 0x8A, 0x0F,
- .byte 0x35, 0xFC, 0x8B, 0x0F, 0x3B, 0xFC, 0x8D, 0x0F, 0x41, 0xFC, 0x8E, 0x0F, 0x47, 0xFC, 0x90, 0x0F,
- .byte 0x4E, 0xFC, 0x91, 0x0F, 0x54, 0xFC, 0x93, 0x0F, 0x5A, 0xFC, 0x94, 0x0F, 0x60, 0xFC, 0x95, 0x0F,
- .byte 0x66, 0xFC, 0x97, 0x0F, 0x6C, 0xFC, 0x98, 0x0F, 0x72, 0xFC, 0x9A, 0x0F, 0x78, 0xFC, 0x9B, 0x0F,
- .byte 0x7F, 0xFC, 0x9C, 0x0F, 0x85, 0xFC, 0x9E, 0x0F, 0x8B, 0xFC, 0x9F, 0x0F, 0x91, 0xFC, 0xA1, 0x0F,
- .byte 0x97, 0xFC, 0xA2, 0x0F, 0x9D, 0xFC, 0xA3, 0x0F, 0xA3, 0xFC, 0xA5, 0x0F, 0xAA, 0xFC, 0xA6, 0x0F,
- .byte 0xB0, 0xFC, 0xA7, 0x0F, 0xB6, 0xFC, 0xA8, 0x0F, 0xBC, 0xFC, 0xAA, 0x0F, 0xC2, 0xFC, 0xAB, 0x0F,
- .byte 0xC8, 0xFC, 0xAC, 0x0F, 0xCE, 0xFC, 0xAE, 0x0F, 0xD5, 0xFC, 0xAF, 0x0F, 0xDB, 0xFC, 0xB0, 0x0F,
- .byte 0xE1, 0xFC, 0xB1, 0x0F, 0xE7, 0xFC, 0xB3, 0x0F, 0xED, 0xFC, 0xB4, 0x0F, 0xF3, 0xFC, 0xB5, 0x0F,
- .byte 0xFA, 0xFC, 0xB6, 0x0F, 0x00, 0xFD, 0xB7, 0x0F, 0x06, 0xFD, 0xB8, 0x0F, 0x0C, 0xFD, 0xBA, 0x0F,
- .byte 0x12, 0xFD, 0xBB, 0x0F, 0x18, 0xFD, 0xBC, 0x0F, 0x1F, 0xFD, 0xBD, 0x0F, 0x25, 0xFD, 0xBE, 0x0F,
- .byte 0x2B, 0xFD, 0xBF, 0x0F, 0x31, 0xFD, 0xC0, 0x0F, 0x37, 0xFD, 0xC2, 0x0F, 0x3E, 0xFD, 0xC3, 0x0F,
- .byte 0x44, 0xFD, 0xC4, 0x0F, 0x4A, 0xFD, 0xC5, 0x0F, 0x50, 0xFD, 0xC6, 0x0F, 0x56, 0xFD, 0xC7, 0x0F,
- .byte 0x5D, 0xFD, 0xC8, 0x0F, 0x63, 0xFD, 0xC9, 0x0F, 0x69, 0xFD, 0xCA, 0x0F, 0x6F, 0xFD, 0xCB, 0x0F,
- .byte 0x75, 0xFD, 0xCC, 0x0F, 0x7C, 0xFD, 0xCD, 0x0F, 0x82, 0xFD, 0xCE, 0x0F, 0x88, 0xFD, 0xCF, 0x0F,
- .byte 0x8E, 0xFD, 0xD0, 0x0F, 0x94, 0xFD, 0xD1, 0x0F, 0x9B, 0xFD, 0xD2, 0x0F, 0xA1, 0xFD, 0xD3, 0x0F,
- .byte 0xA7, 0xFD, 0xD4, 0x0F, 0xAD, 0xFD, 0xD5, 0x0F, 0xB3, 0xFD, 0xD5, 0x0F, 0xBA, 0xFD, 0xD6, 0x0F,
- .byte 0xC0, 0xFD, 0xD7, 0x0F, 0xC6, 0xFD, 0xD8, 0x0F, 0xCC, 0xFD, 0xD9, 0x0F, 0xD3, 0xFD, 0xDA, 0x0F,
- .byte 0xD9, 0xFD, 0xDB, 0x0F, 0xDF, 0xFD, 0xDC, 0x0F, 0xE5, 0xFD, 0xDC, 0x0F, 0xEB, 0xFD, 0xDD, 0x0F,
- .byte 0xF2, 0xFD, 0xDE, 0x0F, 0xF8, 0xFD, 0xDF, 0x0F, 0xFE, 0xFD, 0xE0, 0x0F, 0x04, 0xFE, 0xE0, 0x0F,
- .byte 0x0B, 0xFE, 0xE1, 0x0F, 0x11, 0xFE, 0xE2, 0x0F, 0x17, 0xFE, 0xE3, 0x0F, 0x1D, 0xFE, 0xE3, 0x0F,
- .byte 0x24, 0xFE, 0xE4, 0x0F, 0x2A, 0xFE, 0xE5, 0x0F, 0x30, 0xFE, 0xE6, 0x0F, 0x36, 0xFE, 0xE6, 0x0F,
- .byte 0x3D, 0xFE, 0xE7, 0x0F, 0x43, 0xFE, 0xE8, 0x0F, 0x49, 0xFE, 0xE8, 0x0F, 0x4F, 0xFE, 0xE9, 0x0F,
- .byte 0x56, 0xFE, 0xEA, 0x0F, 0x5C, 0xFE, 0xEA, 0x0F, 0x62, 0xFE, 0xEB, 0x0F, 0x68, 0xFE, 0xEC, 0x0F,
- .byte 0x6F, 0xFE, 0xEC, 0x0F, 0x75, 0xFE, 0xED, 0x0F, 0x7B, 0xFE, 0xED, 0x0F, 0x81, 0xFE, 0xEE, 0x0F,
- .byte 0x88, 0xFE, 0xEF, 0x0F, 0x8E, 0xFE, 0xEF, 0x0F, 0x94, 0xFE, 0xF0, 0x0F, 0x9A, 0xFE, 0xF0, 0x0F,
- .byte 0xA1, 0xFE, 0xF1, 0x0F, 0xA7, 0xFE, 0xF1, 0x0F, 0xAD, 0xFE, 0xF2, 0x0F, 0xB3, 0xFE, 0xF2, 0x0F,
- .byte 0xBA, 0xFE, 0xF3, 0x0F, 0xC0, 0xFE, 0xF3, 0x0F, 0xC6, 0xFE, 0xF4, 0x0F, 0xCC, 0xFE, 0xF4, 0x0F,
- .byte 0xD3, 0xFE, 0xF5, 0x0F, 0xD9, 0xFE, 0xF5, 0x0F, 0xDF, 0xFE, 0xF6, 0x0F, 0xE5, 0xFE, 0xF6, 0x0F,
- .byte 0xEC, 0xFE, 0xF7, 0x0F, 0xF2, 0xFE, 0xF7, 0x0F, 0xF8, 0xFE, 0xF8, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F,
- .byte 0x05, 0xFF, 0xF8, 0x0F, 0x0B, 0xFF, 0xF9, 0x0F, 0x11, 0xFF, 0xF9, 0x0F, 0x18, 0xFF, 0xF9, 0x0F,
- .byte 0x1E, 0xFF, 0xFA, 0x0F, 0x24, 0xFF, 0xFA, 0x0F, 0x2A, 0xFF, 0xFA, 0x0F, 0x31, 0xFF, 0xFB, 0x0F,
- .byte 0x37, 0xFF, 0xFB, 0x0F, 0x3D, 0xFF, 0xFB, 0x0F, 0x44, 0xFF, 0xFC, 0x0F, 0x4A, 0xFF, 0xFC, 0x0F,
- .byte 0x50, 0xFF, 0xFC, 0x0F, 0x56, 0xFF, 0xFC, 0x0F, 0x5D, 0xFF, 0xFD, 0x0F, 0x63, 0xFF, 0xFD, 0x0F,
- .byte 0x69, 0xFF, 0xFD, 0x0F, 0x70, 0xFF, 0xFD, 0x0F, 0x76, 0xFF, 0xFE, 0x0F, 0x7C, 0xFF, 0xFE, 0x0F,
- .byte 0x82, 0xFF, 0xFE, 0x0F, 0x89, 0xFF, 0xFE, 0x0F, 0x8F, 0xFF, 0xFE, 0x0F, 0x95, 0xFF, 0xFF, 0x0F,
- .byte 0x9B, 0xFF, 0xFF, 0x0F, 0xA2, 0xFF, 0xFF, 0x0F, 0xA8, 0xFF, 0xFF, 0x0F, 0xAE, 0xFF, 0xFF, 0x0F,
- .byte 0xB5, 0xFF, 0xFF, 0x0F, 0xBB, 0xFF, 0xFF, 0x0F, 0xC1, 0xFF, 0x00, 0x10, 0xC7, 0xFF, 0x00, 0x10,
- .byte 0xCE, 0xFF, 0x00, 0x10, 0xD4, 0xFF, 0x00, 0x10, 0xDA, 0xFF, 0x00, 0x10, 0xE1, 0xFF, 0x00, 0x10,
- .byte 0xE7, 0xFF, 0x00, 0x10, 0xED, 0xFF, 0x00, 0x10, 0xF3, 0xFF, 0x00, 0x10, 0xFA, 0xFF, 0x00, 0x10
-
- .section .data
-
- .global UNK_021064B8
-UNK_021064B8: ; 0x021064B8
- .word FUN_020AE8B4
-
- .global UNK_021064BC
-UNK_021064BC: ; 0x021064BC
- .word FUN_020AE8AC
-
- .global UNK_021064C0
-UNK_021064C0: ; 0x021064C0
- .word FUN_020AE8C4
-
- .global UNK_021064C4
-UNK_021064C4: ; 0x021064C4
- .word FUN_020AE8BC
-
- .global UNK_021064C8
-UNK_021064C8: ; 0x021064C8
- .word UNK_021064E4
- .word UNK_0210652C
-
- .global UNK_021064D0
-UNK_021064D0: ; 0x021064D0
- .word UNK_02106544
- .word UNK_0210652C
- .word UNK_021064E4
- .word UNK_02106514
- .word UNK_021064FC
-
- .global UNK_021064E4
-UNK_021064E4: ; 0x021064E4
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_021064FC
-UNK_021064FC: ; 0x021064FC
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00
-
- .global UNK_02106514
-UNK_02106514: ; 0x02106514
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x00
-
- .global UNK_0210652C
-UNK_0210652C: ; 0x0210652C
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x00
-
- .global UNK_02106544
-UNK_02106544: ; 0x02106544
- .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x00
-
- .global UNK_0210655C
-UNK_0210655C: ; 0x0210655C
- .word FUN_020B1088
- .word FUN_020B1098
- .word 0
- .word 0
- .word 0
-
- .global UNK_02106570
-UNK_02106570: ; 0x02106570
- .short -2
-
- .balign 4, 0
- .global UNK_02106574
-UNK_02106574: ; 0x02106574
- .word -1
-
- .global UNK_02106578
-UNK_02106578: ; 0x02106578
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106590
-UNK_02106590: ; 0x02106590
- .byte 0x00, 0xF0, 0xFF, 0xFF
-
- .global UNK_02106594
-UNK_02106594: ; 0x02106594
- .byte 0x05, 0x00, 0x00, 0x00
-
- .global UNK_02106598
-UNK_02106598: ; 0x02106598
- .word FUN_020BE5A0
-
- .global UNK_0210659C
-UNK_0210659C: ; 0x0210659C
- .word FUN_020BDA70
-
- .global UNK_021065A0
-UNK_021065A0: ; 0x021065A0
- .word FUN_020BDF38
-
- .global UNK_021065A4
-UNK_021065A4: ; 0x021065A4
- .word FUN_020BE334
-
- .global UNK_021065A8
-UNK_021065A8: ; 0x021065A8
- .word FUN_020BDB40
-
- .global UNK_021065AC
-UNK_021065AC: ; 0x021065AC
- .word FUN_020B8640
-
- .global UNK_021065B0
-UNK_021065B0: ; 0x021065B0
- .word FUN_020B86B0
-
- .global UNK_021065B4
-UNK_021065B4: ; 0x021065B4
- .word FUN_020B8A08
-
- .global UNK_021065B8
-UNK_021065B8: ; 0x021065B8
- .byte 0x4D, 0x00, 0x41, 0x4D
-
- .global UNK_021065BC
-UNK_021065BC: ; 0x021065BC
- .word FUN_020BDC0C
- .byte 0x4D, 0x00, 0x50, 0x54
- .word FUN_020BE4F0
- .byte 0x4D, 0x00, 0x41, 0x54
- .word FUN_020BDF84
- .byte 0x56, 0x00, 0x41, 0x56
- .word FUN_020BE5E0
- .byte 0x4A, 0x00, 0x41, 0x43
- .word FUN_020BDAB4
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106608
-UNK_02106608: ; 0x02106608
- .word FUN_020BE668
- .word FUN_020BEE3C
- .word FUN_020BF2FC
-
- .global UNK_02106614
-UNK_02106614: ; 0x02106614
- .word FUN_020BE62C
- .word FUN_020BECEC
- .word FUN_020BF0D4
-
- .global UNK_02106620
-UNK_02106620: ; 0x02106620
- .word FUN_020BE6E4
- .word FUN_020BEF10
- .word FUN_020BF42C
- .word FUN_020BFA9C
-
- .global UNK_02106630
-UNK_02106630: ; 0x02106630
- .byte 0x2A, 0x00, 0x00, 0x00
-
- .global UNK_02106634
-UNK_02106634: ; 0x02106634
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106638
-UNK_02106638: ; 0x02106638
- .byte 0x2A, 0x00, 0x00, 0x00
-
- .global UNK_0210663C
-UNK_0210663C: ; 0x0210663C
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106640
-UNK_02106640: ; 0x02106640
- .word FUN_020BA58C
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106650
-UNK_02106650: ; 0x02106650
- .word FUN_020BA438
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106660
-UNK_02106660: ; 0x02106660
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00
-
- .global UNK_021066A0
-UNK_021066A0: ; 0x021066A0
- .byte 0x12, 0x10, 0x17, 0x1B
-
- .global UNK_021066A4
-UNK_021066A4: ; 0x021066A4
- .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK_021066AC
-UNK_021066AC: ; 0x021066AC
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00
-
- .global UNK_021066D0
-UNK_021066D0: ; 0x021066D0
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_021066DC
-UNK_021066DC: ; 0x021066DC
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_021066E8
-UNK_021066E8: ; 0x021066E8
- .byte 0x12, 0x10, 0x17, 0x1B
-
- .global UNK_021066EC
-UNK_021066EC: ; 0x021066EC
- .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
- .global UNK_021066F4
-UNK_021066F4: ; 0x021066F4
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x10, 0x00, 0x00
-
- .global UNK_02106718
-UNK_02106718: ; 0x02106718
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106724
-UNK_02106724: ; 0x02106724
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106730
-UNK_02106730: ; 0x02106730
- .word FUN_020BAC70
- .word FUN_020BAC48
- .word FUN_020BAAC0
- .word FUN_020BA9EC
- .word FUN_020BA50C
- .word FUN_020BA3C4
- .word FUN_020B9F84
- .word FUN_020B9C54
- .word FUN_020B98C4
- .word FUN_020B9258
- .word FUN_020B9178
- .word FUN_020B9110
- .word FUN_020B8DF0
- .word FUN_020B8A60
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_021067B0
-UNK_021067B0: ; 0x021067B0
- .word FUN_020BEBD8
- .word FUN_020BEB00
- .word FUN_020BEA84
- .word FUN_020BEA3C
- .word FUN_020BE954
- .word FUN_020BE894
- .word FUN_020BE850
- .word FUN_020BE82C
-
- .global UNK_021067D0
-UNK_021067D0: ; 0x021067D0
- .word FUN_020BF988
- .word FUN_020BF894
- .word FUN_020BF810
- .word FUN_020BF7C8
- .word FUN_020BF6C8
- .word FUN_020BF5E8
- .word FUN_020BF598
- .word FUN_020BF574
-
- .global UNK_021067F0
-UNK_021067F0: ; 0x021067F0
- .word FUN_020BFFD4
- .word FUN_020BFEEC
- .word FUN_020BFE68
- .word FUN_020BFE0C
- .word FUN_020BFD38
- .word FUN_020BFC8C
- .word FUN_020BFC4C
- .word FUN_020BFC28
-
- .section .bss
-
- .global UNK_021CCD38
-UNK_021CCD38: ; 0x021CCD38
- .space 0x4
-
- .global UNK_021CCD3C
-UNK_021CCD3C: ; 0x021CCD3C
- .space 0xc
-
- .global UNK_021CCD48
-UNK_021CCD48: ; 0x021CCD48
- .space 0x4
-
- .global UNK_021CCD4C
-UNK_021CCD4C: ; 0x021CCD4C
- .space 0xc
-
- .global UNK_021CCD58
-UNK_021CCD58: ; 0x021CCD58
- .space 0x14
-
- .global UNK_021CCD6C
-UNK_021CCD6C: ; 0x021CCD6C
- .space 0x4
-
- .global UNK_021CCD70
-UNK_021CCD70: ; 0x021CCD70
- .space 0x4
-
- .global UNK_021CCD74
-UNK_021CCD74: ; 0x021CCD74
- .space 0x14
-
- .global UNK_021CCD88
-UNK_021CCD88: ; 0x021CCD88
- .space 0x4
-
- .global UNK_021CCD8C
-UNK_021CCD8C: ; 0x021CCD8C
- .space 0x10
-
- .global UNK_021CCD9C
-UNK_021CCD9C: ; 0x021CCD9C
- .space 0x4
-
- .global UNK_021CCDA0
-UNK_021CCDA0: ; 0x021CCDA0
- .space 0x100
-
- .global UNK_021CCEA0
-UNK_021CCEA0: ; 0x021CCEA0
- .space 0x400
-
- .global UNK_021CD2A0
-UNK_021CD2A0: ; 0x021CD2A0
- .space 0x40
-
- .global UNK_021CD2E0
-UNK_021CD2E0: ; 0x021CD2E0
- .space 0x100
-
- .global UNK_021CD3E0
-UNK_021CD3E0: ; 0x021CD3E0
- .space 0x400
-
- .global UNK_021CD7E0
-UNK_021CD7E0: ; 0x021CD7E0
- .space 0x40
-
- .global UNK_021CD820
-UNK_021CD820: ; 0x021CD820
- .space 0x100
-
- .global UNK_021CD920
-UNK_021CD920: ; 0x021CD920
- .space 0x400
-
- .global UNK_021CDD20
-UNK_021CDD20: ; 0x021CDD20
- .space 0x40
-
- .global UNK_021CDD60
-UNK_021CDD60: ; 0x021CDD60
- .space 0x4
-
- .global UNK_021CDD64
-UNK_021CDD64: ; 0x021CDD64
- .space 0x4
-
- .global UNK_021CDD68
-UNK_021CDD68: ; 0x021CDD68
- .space 0x4
-
- .global UNK_021CDD6C
-UNK_021CDD6C: ; 0x021CDD6C
- .space 0x4
-
- .global UNK_021CDD70
-UNK_021CDD70: ; 0x021CDD70
- .space 0x4
-
- .global UNK_021CDD74
-UNK_021CDD74: ; 0x021CDD74
- .space 0x80
-
- .global UNK_021CDDF4
-UNK_021CDDF4: ; 0x021CDDF4
- .space 0x4
-
- .global UNK_021CDDF8
-UNK_021CDDF8: ; 0x021CDDF8
- .space 0xfc
-
- .global UNK_021CDEF4
-UNK_021CDEF4: ; 0x021CDEF4
- .space 0x10
-
- .global UNK_021CDF04
-UNK_021CDF04: ; 0x021CDF04
- .space 0x4
-
- .global UNK_021CDF08
-UNK_021CDF08: ; 0x021CDF08
- .space 0x2ec
-
- .global UNK_021CE1F4
-UNK_021CE1F4: ; 0x021CE1F4
- .space 0x300
-
- .global UNK_021CE4F4
-UNK_021CE4F4: ; 0x021CE4F4
- .space 0x400
-
- .global UNK_021CE8F4
-UNK_021CE8F4: ; 0x021CE8F4
- .space 0x4
-
- .global UNK_021CE8F8
-UNK_021CE8F8: ; 0x021CE8F8
- .space 0x404
-
- .global UNK_021CECFC
-UNK_021CECFC: ; 0x021CECFC
- .space 0x4
-
- .global UNK_021CED00
-UNK_021CED00: ; 0x021CED00
- .space 0x4
-
- .global UNK_021CED04
-UNK_021CED04: ; 0x021CED04
- .space 0x4
-
- .global UNK_021CED08
-UNK_021CED08: ; 0x021CED08
- .space 0x4
-
- .global UNK_021CED0C
-UNK_021CED0C: ; 0x021CED0C
- .space 0x4
-
- .global UNK_021CED10
-UNK_021CED10: ; 0x021CED10
- .space 0x4
-
- .global UNK_021CED14
-UNK_021CED14: ; 0x021CED14
- .space 0x4
-
- .global UNK_021CED18
-UNK_021CED18: ; 0x021CED18
- .space 0x8
-
- .global UNK_021CED20
-UNK_021CED20: ; 0x021CED20
- .space 0x44
-
- .global UNK_021CED64
-UNK_021CED64: ; 0x021CED64
- .space 0x34
-
- .global UNK_021CED98
-UNK_021CED98: ; 0x021CED98
- .space 0x28
-
- .global UNK_021CEDC0
-UNK_021CEDC0: ; 0x021CEDC0
- .space 0x14
-
- .global UNK_021CEDD4
-UNK_021CEDD4: ; 0x021CEDD4
- .space 0x24
-
- .global UNK_021CEDF8
-UNK_021CEDF8: ; 0x021CEDF8
- .space 0xc
-
- .global UNK_021CEE04
-UNK_021CEE04: ; 0x021CEE04
- .space 0x14
-
- .global UNK_021CEE18
-UNK_021CEE18: ; 0x021CEE18
- .space 0x30
-
- .global UNK_021CEE48
-UNK_021CEE48: ; 0x021CEE48
- .space 0x30
-
- .global UNK_021CEE78
-UNK_021CEE78: ; 0x021CEE78
- .space 0xe0
-
- .global UNK_021CEF58
-UNK_021CEF58: ; 0x021CEF58
- .space 0xc
-
- .global UNK_021CEF64
-UNK_021CEF64: ; 0x021CEF64
- .space 0xc
-
- .global UNK_021CEF70
-UNK_021CEF70: ; 0x021CEF70
- .space 0xc
-
- .global UNK_021CEF7C
-UNK_021CEF7C: ; 0x021CEF7C
- .space 0x4
-
- .global UNK_021CEF80
-UNK_021CEF80: ; 0x021CEF80
- .space 0xe00
-
- .global UNK_021CFD80
-UNK_021CFD80: ; 0x021CFD80
- .space 0x4
-
- .global UNK_021CFD84
-UNK_021CFD84: ; 0x021CFD84
- .space 0x4
-
- .global UNK_021CFD88
-UNK_021CFD88: ; 0x021CFD88
- .space 0x4
-
- .global UNK_021CFD8C
-UNK_021CFD8C: ; 0x021CFD8C
- .space 0x4
-
- .global UNK_021CFD90
-UNK_021CFD90: ; 0x021CFD90
- .space 0x4
-
- .global UNK_021CFD94
-UNK_021CFD94: ; 0x021CFD94
- .space 0x2ba
-
- .global UNK_021D004E
-UNK_021D004E: ; 0x021D004E
- .space 0x332
-
- .global UNK_021D0380
-UNK_021D0380: ; 0x021D0380
- .space 0x40
-
- .global UNK_021D03C0
-UNK_021D03C0: ; 0x021D03C0
- .space 0xb42
-
- .global UNK_021D0F02
-UNK_021D0F02: ; 0x021D0F02
- .space 0xd7e
-
- .global UNK_021D1C80
-UNK_021D1C80: ; 0x021D1C80
- .space 0x4
-
- .global UNK_021D1C84
-UNK_021D1C84: ; 0x021D1C84
- .space 0x4
-
- .global UNK_021D1C88
-UNK_021D1C88: ; 0x021D1C88
- .space 0x4
-
- .text
-
- arm_func_start FUN_020ADA84
-FUN_020ADA84: ; 0x020ADA84
- cmp r1, #0x0
- ldreq r0, [r0, #0x4]
- ldrneh r0, [r0, #0xa]
- ldrne r0, [r1, r0]
- bx lr
-
- arm_func_start FUN_020ADA98
-FUN_020ADA98: ; 0x020ADA98
- cmp r1, #0x0
- ldreq r0, [r0, #0x0]
- ldrneh r0, [r0, #0xa]
- addne r0, r1, r0
- ldrne r0, [r0, #0x4]
- bx lr
-
- arm_func_start FUN_020ADAB0
-FUN_020ADAB0: ; 0x020ADAB0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldrh r12, [r0, #0xa]
- ldr r3, [r1, r12]
- add lr, r1, r12
- cmp r3, #0x0
- ldreq r1, [lr, #0x4]
- streq r1, [r0, #0x0]
- ldrne r2, [lr, #0x4]
- addne r1, r3, r12
- strne r2, [r1, #0x4]
- ldr r3, [lr, #0x4]
- cmp r3, #0x0
- ldreq r1, [lr, #0x0]
- streq r1, [r0, #0x4]
- ldrneh r1, [r0, #0xa]
- ldrne r2, [lr, #0x0]
- strne r2, [r3, r1]
- mov r1, #0x0
- str r1, [lr, #0x0]
- str r1, [lr, #0x4]
- ldrh r1, [r0, #0x8]
- sub r1, r1, #0x1
- strh r1, [r0, #0x8]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020ADB18
-FUN_020ADB18: ; 0x020ADB18
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r1, #0x0
- bne _020ADB38
- mov r1, r2
- bl FUN_020ADBE8
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020ADB38:
- ldr r3, [r0, #0x0]
- cmp r1, r3
- bne _020ADB54
- mov r1, r2
- bl FUN_020ADB8C
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020ADB54:
- ldrh lr, [r0, #0xa]
- ldr r3, [r1, lr]
- add r12, r2, lr
- str r3, [r2, lr]
- str r1, [r12, #0x4]
- add r3, r3, lr
- str r2, [r3, #0x4]
- ldrh r3, [r0, #0xa]
- str r2, [r1, r3]
- ldrh r1, [r0, #0x8]
- add r1, r1, #0x1
- strh r1, [r0, #0x8]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020ADB8C
-FUN_020ADB8C: ; 0x020ADB8C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- bne _020ADBAC
- bl FUN_020ADC48
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020ADBAC:
- ldrh r3, [r0, #0xa]
- mov r2, #0x0
- str r2, [r1, r3]
- ldr r2, [r0, #0x0]
- add r3, r1, r3
- str r2, [r3, #0x4]
- ldrh r2, [r0, #0xa]
- ldr r3, [r0, #0x0]
- str r1, [r3, r2]
- str r1, [r0, #0x0]
- ldrh r1, [r0, #0x8]
- add r1, r1, #0x1
- strh r1, [r0, #0x8]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020ADBE8
-FUN_020ADBE8: ; 0x020ADBE8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- bne _020ADC08
- bl FUN_020ADC48
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020ADC08:
- ldrh r12, [r0, #0xa]
- ldr r3, [r0, #0x4]
- mov r2, #0x0
- str r3, [r1, r12]
- add r3, r1, r12
- str r2, [r3, #0x4]
- ldrh r2, [r0, #0xa]
- ldr r3, [r0, #0x4]
- add r2, r3, r2
- str r1, [r2, #0x4]
- str r1, [r0, #0x4]
- ldrh r1, [r0, #0x8]
- add r1, r1, #0x1
- strh r1, [r0, #0x8]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020ADC48
-FUN_020ADC48: ; 0x020ADC48
- ldrh r3, [r0, #0xa]
- mov r2, #0x0
- add r12, r1, r3
- str r2, [r12, #0x4]
- str r2, [r1, r3]
- str r1, [r0, #0x0]
- str r1, [r0, #0x4]
- ldrh r1, [r0, #0x8]
- add r1, r1, #0x1
- strh r1, [r0, #0x8]
- bx lr
-
- arm_func_start FUN_020ADC74
-FUN_020ADC74: ; 0x020ADC74
- mov r2, #0x0
- str r2, [r0, #0x0]
- str r2, [r0, #0x4]
- strh r2, [r0, #0x8]
- strh r1, [r0, #0xa]
- bx lr
-
- arm_func_start FUN_020ADC8C
-FUN_020ADC8C: ; 0x020ADC8C
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020ADD30
- mov r1, r4
- bl FUN_020ADAB0
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020ADCA4
-FUN_020ADCA4:
- stmdb sp!, {r4,lr}
- mov r4, r0
- str r1, [r4, #0x0]
- str r2, [r4, #0x18]
- str r3, [r4, #0x1c]
- mov r0, #0x0
- str r0, [r4, #0x20]
- ldr r1, [r4, #0x20]
- ldrh r0, [sp, #0x8]
- bic r1, r1, #0xff
- str r1, [r4, #0x20]
- ldr r1, [r4, #0x20]
- and r0, r0, #0xff
- orr r2, r1, r0
- add r0, r4, #0xc
- mov r1, #0x4
- str r2, [r4, #0x20]
- bl FUN_020ADC74
- ldr r0, _020ADD28 ; =UNK_021CCD38
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020ADD14
- ldr r0, _020ADD2C ; =UNK_021CCD3C
- mov r1, #0x4
- bl FUN_020ADC74
- ldr r0, _020ADD28 ; =UNK_021CCD38
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020ADD14:
- mov r0, r4
- bl FUN_020ADD30
- mov r1, r4
- bl FUN_020ADBE8
- ldmia sp!, {r4,pc}
- .balign 4
-_020ADD28: .word UNK_021CCD38
-_020ADD2C: .word UNK_021CCD3C
-
- arm_func_start FUN_020ADD30
-FUN_020ADD30: ; 0x020ADD30
- stmdb sp!, {r4,lr}
- ldr r4, _020ADD54 ; =UNK_021CCD3C
- mov r1, r0
- mov r0, r4
- bl FUN_020ADD58
- cmp r0, #0x0
- addne r4, r0, #0xc
- mov r0, r4
- ldmia sp!, {r4,pc}
- .balign 4
-_020ADD54: .word UNK_021CCD3C
-
- arm_func_start FUN_020ADD58
-FUN_020ADD58:
- stmdb sp!, {r4-r6,lr}
- mov r5, r1
- mov r1, #0x0
- mov r6, r0
- bl FUN_020ADA98
- movs r4, r0
- beq _020ADDB8
-_020ADD74:
- ldr r0, [r4, #0x18]
- cmp r0, r5
- bhi _020ADDA4
- ldr r0, [r4, #0x1c]
- cmp r5, r0
- bhs _020ADDA4
- mov r1, r5
- add r0, r4, #0xc
- bl FUN_020ADD58
- cmp r0, #0x0
- moveq r0, r4
- ldmia sp!, {r4-r6,pc}
-_020ADDA4:
- mov r0, r6
- mov r1, r4
- bl FUN_020ADA98
- movs r4, r0
- bne _020ADD74
-_020ADDB8:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020ADDC0
-FUN_020ADDC0: ; 0x020ADDC0
- ldr r0, [r0, #-0xc]
- bx lr
-
- arm_func_start FUN_020ADDC8
-FUN_020ADDC8: ; 0x020ADDC8
- ldr r2, [r0, #0x24]
- mov r0, #0x0
- cmp r2, #0x0
- bxeq lr
-_020ADDD8:
- ldr r1, [r2, #0x4]
- ldr r2, [r2, #0xc]
- add r0, r0, r1
- cmp r2, #0x0
- bne _020ADDD8
- bx lr
-
- arm_func_start FUN_020ADDF0
-FUN_020ADDF0: ; 0x020ADDF0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- sub r4, r1, #0x10
- add r5, r0, #0x24
- add r0, sp, #0x0
- mov r1, r4
- bl FUN_020AE528
- mov r1, r4
- add r0, r5, #0x8
- bl FUN_020AE500
- add r1, sp, #0x0
- mov r0, r5
- bl FUN_020AE02C
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020ADE2C
-FUN_020ADE2C: ; 0x020ADE2C
- stmdb sp!, {r4-r10,lr}
- sub sp, sp, #0x10
- mov r4, r1
- mov r10, r2
- sub r6, r4, #0x10
- add r1, r10, #0x3
- mov r5, r0
- ldr r8, [r6, #0x4]
- bic r10, r1, #0x3
- cmp r10, r8
- add r7, r5, #0x24
- addeq sp, sp, #0x10
- moveq r0, r10
- ldmeqia sp!, {r4-r10,pc}
- cmp r10, r8
- bls _020ADF60
- ldr r9, [r7, #0x0]
- add r0, r6, #0x10
- cmp r9, #0x0
- add r0, r8, r0
- beq _020ADE94
-_020ADE80:
- cmp r9, r0
- beq _020ADE94
- ldr r9, [r9, #0xc]
- cmp r9, #0x0
- bne _020ADE80
-_020ADE94:
- cmp r9, #0x0
- beq _020ADEB0
- ldr r0, [r9, #0x4]
- add r1, r8, #0x10
- add r0, r1, r0
- cmp r10, r0
- bls _020ADEBC
-_020ADEB0:
- add sp, sp, #0x10
- mov r0, #0x0
- ldmia sp!, {r4-r10,pc}
-_020ADEBC:
- add r0, sp, #0x0
- mov r1, r9
- bl FUN_020AE528
- mov r0, r7
- mov r1, r9
- bl FUN_020AE500
- ldr r2, [sp, #0x4]
- add r3, r10, r4
- ldr r9, [sp, #0x0]
- sub r1, r2, r3
- str r3, [sp, #0x0]
- cmp r1, #0x10
- strcc r2, [sp, #0x0]
- mov r8, r0
- ldr r0, [sp, #0x0]
- sub r0, r0, r4
- str r0, [r6, #0x4]
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x0]
- sub r0, r1, r0
- cmp r0, #0x10
- blo _020ADF30
- ldr r1, _020ADF9C ; =0x00004652
- add r0, sp, #0x0
- bl FUN_020AE4A0
- mov r1, r0
- mov r0, r7
- mov r2, r8
- bl FUN_020AE4D0
-_020ADF30:
- ldr r0, [r5, #0x20]
- ldr r1, [sp, #0x0]
- and r0, r0, #0xff
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- sub r2, r1, r9
- ands r0, r0, #0x1
- beq _020ADF90
- mov r1, r9
- mov r0, #0x0
- bl MIi_CpuClear32
- b _020ADF90
-_020ADF60:
- add r0, r10, r4
- str r0, [sp, #0x8]
- ldr r1, [r6, #0x4]
- add r0, r6, #0x10
- add r0, r1, r0
- str r0, [sp, #0xc]
- add r1, sp, #0x8
- mov r0, r7
- str r10, [r6, #0x4]
- bl FUN_020AE02C
- cmp r0, #0x0
- streq r8, [r6, #0x4]
-_020ADF90:
- ldr r0, [r6, #0x4]
- add sp, sp, #0x10
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020ADF9C: .word 0x00004652
-
- arm_func_start tempName_NNS_FndAllocFromExpHeapEx
-tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r1, #0x0
- moveq r1, #0x1
- add r1, r1, #0x3
- cmp r2, #0x0
- bic r1, r1, #0x3
- blt _020ADFCC
- bl FUN_020AE1D8
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020ADFCC:
- rsb r2, r2, #0x0
- bl FUN_020AE11C
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start thunk_FUN_020adc8c
-thunk_FUN_020adc8c: ; 0x020ADFDC
- ldr ip, _020ADFE4 ; =FUN_020ADC8C
- bx r12
- .balign 4
-_020ADFE4: .word FUN_020ADC8C
-
- arm_func_start tempName_NNS_FndCreateExpHeapEx
-tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- add r1, r1, r0
- add r0, r0, #0x3
- bic r1, r1, #0x3
- bic r0, r0, #0x3
- cmp r0, r1
- bhi _020AE014
- sub r3, r1, r0
- cmp r3, #0x4c
- bhs _020AE020
-_020AE014:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {pc}
-_020AE020:
- bl FUN_020AE420
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AE02C
-FUN_020AE02C:
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- mov r5, r1
- ldr r2, [r5, #0x0]
- ldr r1, [r5, #0x4]
- mov r6, r0
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, [r6, #0x0]
- mov r4, #0x0
- cmp r1, #0x0
- beq _020AE0A0
- ldr r0, [r5, #0x0]
-_020AE060:
- cmp r1, r0
- movcc r4, r1
- blo _020AE094
- ldr r0, [r5, #0x4]
- cmp r1, r0
- bne _020AE0A0
- ldr r2, [r1, #0x4]
- add r0, r1, #0x10
- add r2, r2, r0
- mov r0, r6
- str r2, [sp, #0x4]
- bl FUN_020AE500
- b _020AE0A0
-_020AE094:
- ldr r1, [r1, #0xc]
- cmp r1, #0x0
- bne _020AE060
-_020AE0A0:
- cmp r4, #0x0
- beq _020AE0D4
- ldr r2, [r4, #0x4]
- add r1, r4, #0x10
- ldr r0, [r5, #0x0]
- add r1, r2, r1
- cmp r1, r0
- bne _020AE0D4
- mov r0, r6
- mov r1, r4
- str r4, [sp, #0x0]
- bl FUN_020AE500
- mov r4, r0
-_020AE0D4:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x0]
- sub r0, r1, r0
- cmp r0, #0x10
- addcc sp, sp, #0x8
- movcc r0, #0x0
- ldmccia sp!, {r4-r6,pc}
- ldr r1, _020AE118 ; =0x00004652
- add r0, sp, #0x0
- bl FUN_020AE4A0
- mov r1, r0
- mov r0, r6
- mov r2, r4
- bl FUN_020AE4D0
- mov r0, #0x1
- add sp, sp, #0x8
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020AE118: .word 0x00004652
-
- arm_func_start FUN_020AE11C
-FUN_020AE11C: ; 0x020AE11C
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- add r0, r0, #0x24
- ldrh r4, [r0, #0x12]
- mov r3, r1
- mvn lr, #0x0
- and r1, r4, #0x1
- mov r1, r1, lsl #0x10
- movs r1, r1, lsr #0x10
- moveq r5, #0x1
- mov r1, #0x0
- ldr r4, [r0, #0x4]
- movne r5, #0x0
- mov r12, r1
- cmp r4, #0x0
- beq _020AE1B0
- sub r2, r2, #0x1
- mvn r2, r2
-_020AE164:
- ldr r8, [r4, #0x4]
- add r9, r4, #0x10
- add r6, r8, r9
- sub r6, r6, r3
- and r7, r2, r6
- subs r6, r7, r9
- bmi _020AE1A4
- cmp lr, r8
- bls _020AE1A4
- mov r1, r4
- mov lr, r8
- mov r12, r7
- cmp r5, #0x0
- bne _020AE1B0
- cmp r8, r3
- beq _020AE1B0
-_020AE1A4:
- ldr r4, [r4, #0x8]
- cmp r4, #0x0
- bne _020AE164
-_020AE1B0:
- cmp r1, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9,pc}
- mov r4, #0x1
- mov r2, r12
- str r4, [sp, #0x0]
- bl FUN_020AE298
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start FUN_020AE1D8
-FUN_020AE1D8: ; 0x020AE1D8
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- add r0, r0, #0x24
- ldrh r4, [r0, #0x12]
- mov r3, r1
- ldr r5, [r0, #0x0]
- and r1, r4, #0x1
- mov r1, r1, lsl #0x10
- movs r1, r1, lsr #0x10
- moveq r6, #0x1
- mov r1, #0x0
- movne r6, #0x0
- mov lr, r1
- cmp r5, #0x0
- mvn r4, #0x0
- beq _020AE270
- sub r12, r2, #0x1
- mvn r2, r12
-_020AE220:
- add r8, r5, #0x10
- add r7, r12, r8
- and r9, r2, r7
- sub r7, r9, r8
- ldr r8, [r5, #0x4]
- add r7, r3, r7
- cmp r8, r7
- blo _020AE264
- cmp r4, r8
- bls _020AE264
- mov r1, r5
- mov r4, r8
- mov lr, r9
- cmp r6, #0x0
- bne _020AE270
- cmp r8, r3
- beq _020AE270
-_020AE264:
- ldr r5, [r5, #0xc]
- cmp r5, #0x0
- bne _020AE220
-_020AE270:
- cmp r1, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9,pc}
- mov r4, #0x0
- mov r2, lr
- str r4, [sp, #0x0]
- bl FUN_020AE298
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start FUN_020AE298
-FUN_020AE298: ; 0x020AE298
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x18
- mov r7, r0
- add r0, sp, #0x0
- mov r8, r1
- mov r6, r2
- mov r5, r3
- bl FUN_020AE528
- ldr r3, [sp, #0x4]
- sub r4, r6, #0x10
- add r2, r5, r6
- mov r0, r7
- mov r1, r8
- str r4, [sp, #0x4]
- str r3, [sp, #0xc]
- str r2, [sp, #0x8]
- bl FUN_020AE500
- ldr r2, [sp, #0x0]
- ldr r1, [sp, #0x4]
- mov r5, r0
- sub r0, r1, r2
- cmp r0, #0x10
- strcc r2, [sp, #0x4]
- blo _020AE318
- ldr r1, _020AE418 ; =0x00004652
- add r0, sp, #0x0
- bl FUN_020AE4A0
- mov r1, r0
- mov r0, r7
- mov r2, r5
- bl FUN_020AE4D0
- mov r5, r0
-_020AE318:
- ldr r1, [sp, #0xc]
- ldr r0, [sp, #0x8]
- sub r0, r1, r0
- cmp r0, #0x10
- strcc r1, [sp, #0x8]
- blo _020AE34C
- ldr r1, _020AE418 ; =0x00004652
- add r0, sp, #0x8
- bl FUN_020AE4A0
- mov r1, r0
- mov r0, r7
- mov r2, r5
- bl FUN_020AE4D0
-_020AE34C:
- ldr r0, [r7, #-0x4]
- ldr r1, [sp, #0x4]
- and r0, r0, #0xff
- mov r0, r0, lsl #0x10
- ldr r2, [sp, #0x8]
- mov r0, r0, lsr #0x10
- sub r2, r2, r1
- ands r0, r0, #0x1
- beq _020AE378
- mov r0, #0x0
- bl MIi_CpuClear32
-_020AE378:
- ldr r2, [sp, #0x8]
- ldr r1, _020AE41C ; =0x00005544
- add r0, sp, #0x10
- str r4, [sp, #0x10]
- str r2, [sp, #0x14]
- bl FUN_020AE4A0
- mov r1, r0
- ldrh r3, [r1, #0x2]
- ldrh r2, [sp, #0x30]
- add r0, r7, #0x8
- bic r3, r3, #0x8000
- strh r3, [r1, #0x2]
- ldrh r3, [r1, #0x2]
- and r2, r2, #0x1
- orr r2, r3, r2, lsl #0xf
- strh r2, [r1, #0x2]
- ldrh r2, [r1, #0x2]
- ldr r3, [sp, #0x4]
- bic r2, r2, #0x7f00
- strh r2, [r1, #0x2]
- sub r2, r1, r3
- mov r2, r2, lsl #0x10
- mov r2, r2, lsr #0x10
- ldrh r3, [r1, #0x2]
- and r2, r2, #0x7f
- orr r2, r3, r2, lsl #0x8
- strh r2, [r1, #0x2]
- ldrh r2, [r1, #0x2]
- ldrh r3, [r7, #0x10]
- bic r2, r2, #0xff
- strh r2, [r1, #0x2]
- ldrh r2, [r1, #0x2]
- and r3, r3, #0xff
- orr r2, r2, r3
- strh r2, [r1, #0x2]
- ldr r2, [r7, #0xc]
- bl FUN_020AE4D0
- mov r0, r6
- add sp, sp, #0x18
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020AE418: .word 0x00004652
-_020AE41C: .word 0x00005544
-
- arm_func_start FUN_020AE420
-FUN_020AE420: ; 0x020AE420
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- mov r3, r1
- add r4, r5, #0x24
- str r2, [sp, #0x0]
- ldr r1, _020AE498 ; =0x45585048
- add r2, r4, #0x14
- bl FUN_020ADCA4
- mov r0, #0x0
- strh r0, [r4, #0x10]
- strh r0, [r4, #0x12]
- ldrh r2, [r4, #0x12]
- ldr r1, _020AE49C ; =0x00004652
- add r0, sp, #0x4
- bic r2, r2, #0x1
- strh r2, [r4, #0x12]
- ldr r2, [r5, #0x18]
- str r2, [sp, #0x4]
- ldr r2, [r5, #0x1c]
- str r2, [sp, #0x8]
- bl FUN_020AE4A0
- str r0, [r5, #0x24]
- str r0, [r4, #0x4]
- mov r1, #0x0
- str r1, [r4, #0x8]
- mov r0, r5
- str r1, [r4, #0xc]
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AE498: .word 0x45585048
-_020AE49C: .word 0x00004652
-
- arm_func_start FUN_020AE4A0
-FUN_020AE4A0: ; 0x020AE4A0
- ldr r3, [r0, #0x0]
- mov r2, #0x0
- strh r1, [r3, #0x0]
- strh r2, [r3, #0x2]
- ldr r1, [r0, #0x4]
- add r0, r3, #0x10
- sub r0, r1, r0
- str r0, [r3, #0x4]
- str r2, [r3, #0x8]
- mov r0, r3
- str r2, [r3, #0xc]
- bx lr
-
- arm_func_start FUN_020AE4D0
-FUN_020AE4D0: ; 0x020AE4D0
- str r2, [r1, #0x8]
- cmp r2, #0x0
- ldrne r3, [r2, #0xc]
- strne r1, [r2, #0xc]
- ldreq r3, [r0, #0x0]
- streq r1, [r0, #0x0]
- str r3, [r1, #0xc]
- cmp r3, #0x0
- strne r1, [r3, #0x8]
- streq r1, [r0, #0x4]
- mov r0, r1
- bx lr
-
- arm_func_start FUN_020AE500
-FUN_020AE500: ; 0x020AE500
- ldr r2, [r1, #0x8]
- ldr r1, [r1, #0xc]
- cmp r2, #0x0
- strne r1, [r2, #0xc]
- streq r1, [r0, #0x0]
- cmp r1, #0x0
- strne r2, [r1, #0x8]
- streq r2, [r0, #0x4]
- mov r0, r2
- bx lr
-
- arm_func_start FUN_020AE528
-FUN_020AE528: ; 0x020AE528
- ldrh r2, [r1, #0x2]
- add r3, r1, #0x10
- mov r2, r2, asr #0x8
- and r2, r2, #0x7f
- mov r2, r2, lsl #0x10
- sub r2, r1, r2, lsr #0x10
- str r2, [r0, #0x0]
- ldr r1, [r1, #0x4]
- add r1, r1, r3
- str r1, [r0, #0x4]
- bx lr
-
- arm_func_start FUN_020AE554
-FUN_020AE554: ; 0x020AE554
- add r2, r0, #0x24
- cmp r1, #0x0
- ldr r3, [r2, #0x8]
- beq _020AE584
- cmp r3, #0x0
- beq _020AE584
-_020AE56C:
- ldr r0, [r3, #0x0]
- cmp r0, r1
- beq _020AE584
- ldr r3, [r3, #0xc]
- cmp r3, #0x0
- bne _020AE56C
-_020AE584:
- cmp r3, #0x0
- moveq r0, #0x0
- bxeq lr
- ldr r1, [r3, #0x4]
- mov r0, #0x1
- str r1, [r2, #0x0]
- ldr r1, [r3, #0x8]
- str r1, [r2, #0x4]
- ldr r1, [r3, #0xc]
- str r1, [r2, #0x8]
- bx lr
-
- arm_func_start FUN_020AE5B0
-FUN_020AE5B0: ; 0x020AE5B0
- stmdb sp!, {r4-r6,lr}
- add r4, r0, #0x24
- ldr r5, [r0, #0x24]
- mov r6, r1
- mov r0, r4
- mov r1, #0x10
- mov r2, #0x4
- bl FUN_020AE77C
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- str r6, [r0, #0x0]
- str r5, [r0, #0x4]
- ldr r1, [r4, #0x4]
- str r1, [r0, #0x8]
- ldr r1, [r4, #0x8]
- str r1, [r0, #0xc]
- str r0, [r4, #0x8]
- mov r0, #0x1
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AE600
-FUN_020AE600: ; 0x020AE600
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r5, r0
- ands r1, r4, #0x1
- beq _020AE61C
- bl FUN_020AE6F8
-_020AE61C:
- ands r0, r4, #0x2
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- mov r0, r5
- bl FUN_020AE6C8
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020AE638
-FUN_020AE638: ; 0x020AE638
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r1, #0x0
- moveq r1, #0x1
- add r1, r1, #0x3
- add r0, r0, #0x24
- cmp r2, #0x0
- bic r1, r1, #0x3
- blt _020AE668
- bl FUN_020AE77C
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020AE668:
- rsb r2, r2, #0x0
- bl FUN_020AE710
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start thunk_FUN_020adc8c_2
-thunk_FUN_020adc8c_2: ; 0x020AE678
- ldr ip, _020AE680 ; =FUN_020ADC8C
- bx r12
- .balign 4
-_020AE680: .word FUN_020ADC8C
-
- arm_func_start FUN_020AE684
-FUN_020AE684: ; 0x020AE684
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- add r1, r1, r0
- add r0, r0, #0x3
- bic r1, r1, #0x3
- bic r0, r0, #0x3
- cmp r0, r1
- bhi _020AE6B0
- sub r3, r1, r0
- cmp r3, #0x30
- bhs _020AE6BC
-_020AE6B0:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {pc}
-_020AE6BC:
- bl FUN_020AE7E0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AE6C8
-FUN_020AE6C8: ; 0x020AE6C8
- add r2, r0, #0x24
- ldr r3, [r2, #0x8]
- cmp r3, #0x0
- beq _020AE6EC
-_020AE6D8:
- ldr r1, [r0, #0x1c]
- str r1, [r3, #0x8]
- ldr r3, [r3, #0xc]
- cmp r3, #0x0
- bne _020AE6D8
-_020AE6EC:
- ldr r0, [r0, #0x1c]
- str r0, [r2, #0x4]
- bx lr
-
- arm_func_start FUN_020AE6F8
-FUN_020AE6F8: ; 0x020AE6F8
- ldr r1, [r0, #0x18]
- add r2, r0, #0x24
- str r1, [r0, #0x24]
- mov r0, #0x0
- str r0, [r2, #0x8]
- bx lr
-
- arm_func_start FUN_020AE710
-FUN_020AE710: ; 0x020AE710
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r3, [r5, #0x4]
- sub r0, r2, #0x1
- mvn r2, r0
- sub r1, r3, r1
- ldr r0, [r5, #0x0]
- and r4, r2, r1
- cmp r4, r0
- addcc sp, sp, #0x4
- movcc r0, #0x0
- ldmccia sp!, {r4-r5,pc}
- ldr r0, [r5, #-0x4]
- sub r2, r3, r4
- and r0, r0, #0xff
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- ands r0, r0, #0x1
- beq _020AE76C
- mov r1, r4
- mov r0, #0x0
- bl MIi_CpuClear32
-_020AE76C:
- mov r0, r4
- str r4, [r5, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020AE77C
-FUN_020AE77C:
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldr r0, [r6, #0x0]
- sub r2, r2, #0x1
- mvn r3, r2
- add r2, r2, r0
- and r5, r3, r2
- ldr r2, [r6, #0x4]
- add r4, r1, r5
- cmp r4, r2
- movhi r0, #0x0
- ldmhiia sp!, {r4-r6,pc}
- ldr r1, [r6, #-0x4]
- sub r2, r4, r0
- and r1, r1, #0xff
- mov r1, r1, lsl #0x10
- mov r1, r1, lsr #0x10
- ands r1, r1, #0x1
- beq _020AE7D4
- mov r1, r0
- mov r0, #0x0
- bl MIi_CpuClear32
-_020AE7D4:
- mov r0, r5
- str r4, [r6, #0x0]
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AE7E0
-FUN_020AE7E0: ; 0x020AE7E0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r3, r1
- add r4, r5, #0x24
- str r2, [sp, #0x0]
- ldr r1, _020AE828 ; =0x46524D48
- add r2, r4, #0xc
- bl FUN_020ADCA4
- ldr r0, [r5, #0x18]
- mov r1, #0x0
- str r0, [r5, #0x24]
- ldr r2, [r5, #0x1c]
- mov r0, r5
- str r2, [r4, #0x4]
- str r1, [r4, #0x8]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AE828: .word 0x46524D48
-
- arm_func_start FUN_020AE82C
-FUN_020AE82C: ; 0x020AE82C
- ldr ip, _020AE848 ; =UNK_020FF7CC
- mov r3, #0x0
- str r12, [r0, #0x0]
- str r1, [r0, #0x4]
- str r2, [r0, #0x8]
- str r3, [r0, #0xc]
- bx lr
- .balign 4
-_020AE848: .word UNK_020FF7CC
-
- arm_func_start FUN_020AE84C
-FUN_020AE84C: ; 0x020AE84C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x0]
- ldr r2, [r2, #0x4]
- blx r2
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AE868
-FUN_020AE868: ; 0x020AE868
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x0]
- ldr r2, [r2, #0x0]
- blx r2
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AE884
-FUN_020AE884: ; 0x020AE884
- ldr ip, _020AE890 ; =FUN_020ADDF0
- ldr r0, [r0, #0x4]
- bx r12
- .balign 4
-_020AE890: .word FUN_020ADDF0
-
- arm_func_start FUN_020AE894
-FUN_020AE894: ; 0x020AE894
- ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx
- mov r2, r0
- ldr r0, [r2, #0x4]
- ldr r2, [r2, #0x8]
- bx r12
- .balign 4
-_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx
-
- arm_func_start FUN_020AE8AC
-FUN_020AE8AC: ; 0x020AE8AC
- mvn r0, #0x0
- bx lr
-
- arm_func_start FUN_020AE8B4
-FUN_020AE8B4: ; 0x020AE8B4
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020AE8BC
-FUN_020AE8BC: ; 0x020AE8BC
- mvn r0, #0x0
- bx lr
-
- arm_func_start FUN_020AE8C4
-FUN_020AE8C4: ; 0x020AE8C4
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020AE8CC
-FUN_020AE8CC: ; 0x020AE8CC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, #0x0
- ldr r3, _020AE914 ; =UNK_021064E4
- mov r12, lr
- mov r2, #0x1
-_020AE8E4:
- ldr r1, [r0, r12, lsl #0x2]
- add lr, lr, #0x1
- str r1, [r3, #0x0]
- ldr r1, [r0, r2, lsl #0x2]
- cmp lr, #0x5
- str r1, [r3, #0x4]
- add r12, r12, #0x2
- add r3, r3, #0x18
- add r2, r2, #0x2
- blt _020AE8E4
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020AE914: .word UNK_021064E4
-
- arm_func_start FUN_020AE918
-FUN_020AE918: ; 0x020AE918
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov lr, #0x0
- ldr ip, _020AE960 ; =UNK_021064E4
- mov r3, lr
- mov r2, #0x1
-_020AE930:
- ldr r1, [r12, #0x0]
- add lr, lr, #0x1
- str r1, [r0, r3, lsl #0x2]
- ldr r1, [r12, #0x4]
- cmp lr, #0x5
- str r1, [r0, r2, lsl #0x2]
- add r12, r12, #0x18
- add r3, r3, #0x2
- add r2, r2, #0x2
- blt _020AE930
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020AE960: .word UNK_021064E4
-
- arm_func_start FUN_020AE964
-FUN_020AE964: ; 0x020AE964
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020AE96C
-FUN_020AE96C: ; 0x020AE96C
- stmdb sp!, {r4-r10,lr}
- cmp r0, #0x0
- moveq r7, #0x10
- addne r0, r0, #0xf
- bicne r7, r0, #0xf
- ldr r0, _020AEADC ; =0x0007FFF0
- cmp r7, r0
- movcs r0, #0x0
- ldmcsia sp!, {r4-r10,pc}
- cmp r1, #0x0
- beq _020AEA5C
- mov lr, r7, lsr #0x1
- mov r6, #0x0
- ldr r2, _020AEAE0 ; =UNK_02106514
- ldr r3, _020AEAE4 ; =UNK_021064FC
- ldr ip, _020AEAE8 ; =UNK_021064C8
- mov r0, r6
-_020AE9B0:
- ldr r5, [r12, r6, lsl #0x2]
- ldr r4, [r5, #0x8]
- cmp r4, #0x0
- beq _020AEA48
- ldr r9, [r5, #0x4]
- ldr r4, [r5, #0x0]
- sub r4, r9, r4
- cmp r4, r7
- blo _020AEA48
- ldrh r4, [r5, #0x10]
- cmp r4, #0x0
- beq _020AE9EC
- cmp r4, #0x3
- beq _020AE9F4
- b _020AE9FC
-_020AE9EC:
- mov r4, r3
- b _020AEA00
-_020AE9F4:
- mov r4, r2
- b _020AEA00
-_020AE9FC:
- mov r4, r0
-_020AEA00:
- ldr r9, [r4, #0x8]
- cmp r9, #0x0
- beq _020AEA48
- ldr r10, [r4, #0x4]
- ldr r9, [r4, #0x0]
- sub r9, r10, r9
- cmp r9, lr
- blo _020AEA48
- ldr r3, [r5, #0x0]
- mov r0, #0x1
- add r2, r3, r7
- str r2, [r5, #0x0]
- ldr r2, [r4, #0x0]
- add r2, r2, lr
- str r2, [r4, #0x0]
- ldr r2, [r5, #0x14]
- add r8, r3, r2
- b _020AEAB8
-_020AEA48:
- add r6, r6, #0x1
- cmp r6, #0x2
- blt _020AE9B0
- mov r0, #0x0
- b _020AEAB8
-_020AEA5C:
- ldr r3, _020AEAEC ; =UNK_021064D0
- mov r5, #0x0
-_020AEA64:
- ldr r4, [r3, r5, lsl #0x2]
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- beq _020AEAA8
- ldr r2, [r4, #0x4]
- ldr r0, [r4, #0x0]
- sub r0, r2, r0
- cmp r0, r7
- blo _020AEAA8
- ldr r2, [r4, #0x4]
- mov r0, #0x1
- sub r2, r2, r7
- str r2, [r4, #0x4]
- ldr r3, [r4, #0x4]
- ldr r2, [r4, #0x14]
- add r8, r3, r2
- b _020AEAB8
-_020AEAA8:
- add r5, r5, #0x1
- cmp r5, #0x5
- blt _020AEA64
- mov r0, #0x0
-_020AEAB8:
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4-r10,pc}
- ldr r0, _020AEAF0 ; =0x0000FFFF
- mov r2, r7, lsr #0x4
- and r0, r0, r8, lsr #0x3
- orr r0, r0, r2, lsl #0x10
- orr r0, r0, r1, lsl #0x1f
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020AEADC: .word 0x0007FFF0
-_020AEAE0: .word UNK_02106514
-_020AEAE4: .word UNK_021064FC
-_020AEAE8: .word UNK_021064C8
-_020AEAEC: .word UNK_021064D0
-_020AEAF0: .word 0x0000FFFF
-
- arm_func_start FUN_020AEAF4
-FUN_020AEAF4:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r0, _020AEB68 ; =UNK_021CCD48
- mov r6, #0x0
- ldrh r7, [r0, #0x0]
- ldr r5, _020AEB6C ; =UNK_021064E4
- mov lr, r6
- cmp r7, #0x1
- addhi r7, r7, #0x1
- mov r1, r6
- mov r3, r6
- mov r4, #0x1
- mov r0, #0x20000
- mov r2, #0x10000
-_020AEB2C:
- cmp r6, r7
- strlt r4, [r5, #0x8]
- strge lr, [r5, #0x8]
- ldr r12, [r5, #0xc]
- add r6, r6, #0x1
- cmp r12, #0x0
- strne r3, [r5, #0x0]
- strne r2, [r5, #0x4]
- streq r1, [r5, #0x0]
- streq r0, [r5, #0x4]
- cmp r6, #0x5
- add r5, r5, #0x18
- blt _020AEB2C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020AEB68: .word UNK_021CCD48
-_020AEB6C: .word UNK_021064E4
-
- arm_func_start FUN_020AEB70
-FUN_020AEB70: ; 0x020AEB70
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- cmp r5, #0x2
- bhi _020AEBA8
- mov r12, #0x1
- mov r0, #0x4
- mov r1, #0x3
- mov r2, #0x2
- mov r3, #0x0
- str r12, [sp, #0x0]
- bl FUN_020AEC10
- b _020AEBC4
-_020AEBA8:
- mov r12, #0x1
- mov r0, #0x4
- mov r1, #0x3
- mov r2, #0x0
- mov r3, #0x2
- str r12, [sp, #0x0]
- bl FUN_020AEC10
-_020AEBC4:
- ldr r0, _020AEBFC ; =UNK_021CCD48
- strh r5, [r0, #0x0]
- bl FUN_020AEAF4
- cmp r4, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldr r3, _020AEC00 ; =FUN_020AE96C
- ldr r1, _020AEC04 ; =UNK_021064B8
- ldr r2, _020AEC08 ; =FUN_020AE964
- ldr r0, _020AEC0C ; =UNK_021064BC
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AEBFC: .word UNK_021CCD48
-_020AEC00: .word FUN_020AE96C
-_020AEC04: .word UNK_021064B8
-_020AEC08: .word FUN_020AE964
-_020AEC0C: .word UNK_021064BC
-
- arm_func_start FUN_020AEC10
-FUN_020AEC10: ; 0x020AEC10
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr lr, [sp, #0x18]
- ldr r6, _020AEC58 ; =UNK_021064E4
- mov r12, #0x18
- mla r7, r0, r12, r6
- ldr r0, _020AEC5C ; =UNK_021064D0
- mla r5, r1, r12, r6
- mla r4, r2, r12, r6
- mla r2, r3, r12, r6
- mla r1, lr, r12, r6
- str r7, [r0, #0x0]
- str r5, [r0, #0x4]
- str r4, [r0, #0x8]
- str r2, [r0, #0xc]
- str r1, [r0, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020AEC58: .word UNK_021064E4
-_020AEC5C: .word UNK_021064D0
-
- arm_func_start FUN_020AEC60
-FUN_020AEC60:
- ldr r0, _020AEC78 ; =UNK_021CCD4C
- mov r2, #0x0
- ldr r1, [r0, #0x8]
- str r2, [r0, #0x0]
- str r1, [r0, #0x4]
- bx lr
- .balign 4
-_020AEC78: .word UNK_021CCD4C
-
- arm_func_start FUN_020AEC7C
-FUN_020AEC7C: ; 0x020AEC7C
- ldr r2, [r0, #0x0]
- ldr r1, _020AEC94 ; =UNK_021CCD4C
- str r2, [r1, #0x0]
- ldr r0, [r0, #0x4]
- str r0, [r1, #0x4]
- bx lr
- .balign 4
-_020AEC94: .word UNK_021CCD4C
-
- arm_func_start FUN_020AEC98
-FUN_020AEC98: ; 0x020AEC98
- ldr r1, _020AECB0 ; =UNK_021CCD4C
- ldr r2, [r1, #0x0]
- str r2, [r0, #0x0]
- ldr r1, [r1, #0x4]
- str r1, [r0, #0x4]
- bx lr
- .balign 4
-_020AECB0: .word UNK_021CCD4C
-
- arm_func_start FUN_020AECB4
-FUN_020AECB4: ; 0x020AECB4
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020AECBC
-FUN_020AECBC: ; 0x020AECBC
- stmdb sp!, {r4,lr}
- cmp r0, #0x0
- moveq r0, #0x8
- addne r0, r0, #0x7
- ldr ip, _020AEDE8 ; =0x0007FFF8
- bicne r0, r0, #0x7
- cmp r0, r12
- mov r3, #0x0
- movcs r0, #0x0
- ldmcsia sp!, {r4,pc}
- cmp r2, #0x1
- bne _020AED64
- ldr r2, _020AEDEC ; =UNK_021CCD4C
- cmp r1, #0x0
- ldr r12, [r2, #0x0]
- andne r2, r12, #0x7
- rsbne r2, r2, #0x8
- andne r4, r2, #0x7
- andeq r2, r12, #0xf
- rsbeq r2, r2, #0x10
- andeq r4, r2, #0xf
- ldr r2, _020AEDEC ; =UNK_021CCD4C
- add lr, r0, r4
- ldr r2, [r2, #0x4]
- sub r2, r2, r12
- cmp r2, lr
- blo _020AED5C
- cmp r1, #0x0
- add r1, r12, lr
- beq _020AED40
- cmp r1, #0x10000
- movhi r12, #0x0
- bhi _020AEDCC
-_020AED40:
- ldr r1, _020AEDEC ; =UNK_021CCD4C
- add r3, r12, r4
- ldr r2, [r1, #0x0]
- mov r12, #0x1
- add r2, r2, lr
- str r2, [r1, #0x0]
- b _020AEDCC
-_020AED5C:
- mov r12, #0x0
- b _020AEDCC
-_020AED64:
- ldr r2, _020AEDEC ; =UNK_021CCD4C
- ldr r12, [r2, #0x4]
- cmp r12, r0
- blo _020AEDC8
- sub r2, r12, r0
- cmp r1, #0x0
- andne r4, r2, #0x7
- andeq r4, r2, #0xf
- ldr r2, _020AEDEC ; =UNK_021CCD4C
- add lr, r0, r4
- ldr r2, [r2, #0x0]
- sub r2, r12, r2
- cmp r2, lr
- blo _020AEDC8
- cmp r1, #0x0
- beq _020AEDB0
- cmp r12, #0x10000
- movhi r12, #0x0
- bhi _020AEDCC
-_020AEDB0:
- ldr r1, _020AEDEC ; =UNK_021CCD4C
- mov r12, #0x1
- ldr r2, [r1, #0x4]
- sub r3, r2, lr
- str r3, [r1, #0x4]
- b _020AEDCC
-_020AEDC8:
- mov r12, #0x0
-_020AEDCC:
- cmp r12, #0x0
- ldrne r1, _020AEDF0 ; =0x0000FFFF
- movne r2, r0, lsr #0x3
- andne r0, r1, r3, lsr #0x3
- orrne r0, r0, r2, lsl #0x10
- moveq r0, #0x0
- ldmia sp!, {r4,pc}
- .balign 4
-_020AEDE8: .word 0x0007FFF8
-_020AEDEC: .word UNK_021CCD4C
-_020AEDF0: .word 0x0000FFFF
-
- arm_func_start FUN_020AEDF4
-FUN_020AEDF4: ; 0x020AEDF4
- stmdb sp!, {r4,lr}
- ldr r2, _020AEE2C ; =UNK_021CCD4C
- mov r4, r1
- str r0, [r2, #0x8]
- bl FUN_020AEC60
- cmp r4, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r3, _020AEE30 ; =FUN_020AECBC
- ldr r1, _020AEE34 ; =UNK_021064C0
- ldr r2, _020AEE38 ; =FUN_020AECB4
- ldr r0, _020AEE3C ; =UNK_021064C4
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- ldmia sp!, {r4,pc}
- .balign 4
-_020AEE2C: .word UNK_021CCD4C
-_020AEE30: .word FUN_020AECBC
-_020AEE34: .word UNK_021064C0
-_020AEE38: .word FUN_020AECB4
-_020AEE3C: .word UNK_021064C4
-
- arm_func_start FUN_020AEE40
-FUN_020AEE40: ; 0x020AEE40
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- ldr r5, _020AEEB4 ; =UNK_021CCD58
- mov r9, r0
- mov r0, r5
- mov r8, r1
- mov r7, r2
- mov r6, r3
- bl FUN_020AF2F4
- cmp r0, #0x0
- addne sp, sp, #0x4
- movne r0, #0x0
- ldmneia sp!, {r4-r9,pc}
- mov r0, r5
- bl FUN_020AEF78
- mov r4, r0
- str r9, [r4, #0x0]
- str r7, [r4, #0x4]
- str r8, [r4, #0x8]
- mov r0, r5
- str r6, [r4, #0xc]
- bl FUN_020AEF98
- ldr r2, [r5, #0x10]
- ldr r1, [r4, #0xc]
- mov r0, #0x1
- add r1, r2, r1
- str r1, [r5, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020AEEB4: .word UNK_021CCD58
-
- arm_func_start FUN_020AEEB8
-FUN_020AEEB8: ; 0x020AEEB8
- stmdb sp!, {r4-r6,lr}
- ldr r6, _020AEF18 ; =UNK_021CCD58
- mov r0, r6
- bl FUN_020AEF88
- mov r5, r0
- mov r0, r6
- bl FUN_020AEF3C
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- add r4, r6, #0x10
-_020AEEE0:
- mov r0, r5
- bl FUN_020AEFF0
- ldr r2, [r4, #0x0]
- ldr r1, [r5, #0xc]
- mov r0, r6
- sub r1, r2, r1
- str r1, [r4, #0x0]
- bl FUN_020AEF88
- mov r5, r0
- mov r0, r6
- bl FUN_020AEF3C
- cmp r0, #0x0
- bne _020AEEE0
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020AEF18: .word UNK_021CCD58
-
- arm_func_start FUN_020AEF1C
-FUN_020AEF1C: ; 0x020AEF1C
- ldr r2, _020AEF34 ; =UNK_021CCD58
- ldr ip, _020AEF38 ; =FUN_020AEFD4
- str r0, [r2, #0x0]
- mov r0, r2
- str r1, [r2, #0x4]
- bx r12
- .balign 4
-_020AEF34: .word UNK_021CCD58
-_020AEF38: .word FUN_020AEFD4
-
- arm_func_start FUN_020AEF3C
-FUN_020AEF3C:
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020AF2E0
- cmp r0, #0x0
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- ldrh r1, [r4, #0x8]
- mov r0, r4
- bl FUN_020AF30C
- strh r0, [r4, #0x8]
- ldrh r1, [r4, #0xc]
- mov r0, #0x1
- sub r1, r1, #0x1
- strh r1, [r4, #0xc]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020AEF78
-FUN_020AEF78: ; 0x020AEF78
- ldrh r1, [r0, #0xa]
- ldr r0, [r0, #0x0]
- add r0, r0, r1, lsl #0x4
- bx lr
-
- arm_func_start FUN_020AEF88
-FUN_020AEF88: ; 0x020AEF88
- ldrh r1, [r0, #0x8]
- ldr r0, [r0, #0x0]
- add r0, r0, r1, lsl #0x4
- bx lr
-
- arm_func_start FUN_020AEF98
-FUN_020AEF98: ; 0x020AEF98
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020AF2F4
- cmp r0, #0x0
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- ldrh r1, [r4, #0xa]
- mov r0, r4
- bl FUN_020AF30C
- strh r0, [r4, #0xa]
- ldrh r1, [r4, #0xc]
- mov r0, #0x1
- add r1, r1, #0x1
- strh r1, [r4, #0xc]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020AEFD4
-FUN_020AEFD4: ; 0x020AEFD4
- mov r2, #0x0
- strh r2, [r0, #0xa]
- ldrh r1, [r0, #0xa]
- strh r1, [r0, #0x8]
- strh r2, [r0, #0xc]
- str r2, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020AEFF0
-FUN_020AEFF0: ; 0x020AEFF0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r3, [r5, #0x0]
- ldr r2, _020AF02C ; =UNK_020FF7D4
- ldr r0, [r5, #0x4]
- ldr r1, [r5, #0xc]
- ldr r4, [r2, r3, lsl #0x2]
- bl DC_FlushRange
- ldr r0, [r5, #0x4]
- ldr r1, [r5, #0x8]
- ldr r2, [r5, #0xc]
- blx r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AF02C: .word UNK_020FF7D4
-
- arm_func_start GXS_LoadOBJ_2
-GXS_LoadOBJ_2:
- ldr ip, _020AF038 ; =GXS_LoadOBJ
- bx r12
- .balign 4
-_020AF038: .word GXS_LoadOBJ
-
- arm_func_start GXS_LoadOAM_2
-GXS_LoadOAM_2: ; 0x020AF03C
- ldr ip, _020AF044 ; =GXS_LoadOAM
- bx r12
- .balign 4
-_020AF044: .word GXS_LoadOAM
-
- arm_func_start FUN_020AF048
-FUN_020AF048: ; 0x020AF048
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl GXS_BeginLoadBGExtPltt
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl GXS_LoadBGExtPltt
- bl GXS_EndLoadBGExtPltt
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AF074
-FUN_020AF074: ; 0x020AF074
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl GXS_BeginLoadOBJExtPltt
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl GXS_LoadOBJExtPltt
- bl GXS_EndLoadOBJExtPltt
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start GXS_LoadBGPltt_2
-GXS_LoadBGPltt_2: ; 0x020AF0A0
- ldr ip, _020AF0A8 ; =GXS_LoadBGPltt
- bx r12
- .balign 4
-_020AF0A8: .word GXS_LoadBGPltt
-
- arm_func_start GXS_LoadOBJPltt_2
-GXS_LoadOBJPltt_2: ; 0x020AF0AC
- ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt
- bx r12
- .balign 4
-_020AF0B4: .word GXS_LoadOBJPltt
-
- arm_func_start GXS_LoadBG3Scr_3
-GXS_LoadBG3Scr_3: ; 0x020AF0B8
- ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr
- bx r12
- .balign 4
-_020AF0C0: .word GXS_LoadBG3Scr
-
- arm_func_start GXS_LoadBG2Scr_3
-GXS_LoadBG2Scr_3: ; 0x020AF0C4
- ldr ip, _020AF0CC ; =GXS_LoadBG2Scr
- bx r12
- .balign 4
-_020AF0CC: .word GXS_LoadBG2Scr
-
- arm_func_start GXS_LoadBG3Scr_2
-GXS_LoadBG3Scr_2: ; 0x020AF0D0
- ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr
- bx r12
- .balign 4
-_020AF0D8: .word GXS_LoadBG3Scr
-
- arm_func_start GXS_LoadBG2Scr_2
-GXS_LoadBG2Scr_2: ; 0x020AF0DC
- ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr
- bx r12
- .balign 4
-_020AF0E4: .word GXS_LoadBG2Scr
-
- arm_func_start GXS_LoadBG1Scr_2
-GXS_LoadBG1Scr_2: ; 0x020AF0E8
- ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr
- bx r12
- .balign 4
-_020AF0F0: .word GXS_LoadBG1Scr
-
- arm_func_start GXS_LoadBG0Scr_2
-GXS_LoadBG0Scr_2: ; 0x020AF0F4
- ldr ip, _020AF0FC ; =GXS_LoadBG0Scr
- bx r12
- .balign 4
-_020AF0FC: .word GXS_LoadBG0Scr
-
- arm_func_start GXS_LoadBG3Char_2
-GXS_LoadBG3Char_2: ; 0x020AF100
- ldr ip, _020AF108 ; =GXS_LoadBG3Char
- bx r12
- .balign 4
-_020AF108: .word GXS_LoadBG3Char
-
- arm_func_start GXS_LoadBG2Char_2
-GXS_LoadBG2Char_2: ; 0x020AF10C
- ldr ip, _020AF114 ; =GXS_LoadBG2Char
- bx r12
- .balign 4
-_020AF114: .word GXS_LoadBG2Char
-
- arm_func_start GXS_LoadBG1Char_2
-GXS_LoadBG1Char_2: ; 0x020AF118
- ldr ip, _020AF120 ; =GXS_LoadBG1Char
- bx r12
- .balign 4
-_020AF120: .word GXS_LoadBG1Char
-
- arm_func_start GXS_LoadBG0Char_2
-GXS_LoadBG0Char_2: ; 0x020AF124
- ldr ip, _020AF12C ; =GXS_LoadBG0Char
- bx r12
- .balign 4
-_020AF12C: .word GXS_LoadBG0Char
-
- arm_func_start GX_LoadOBJ_2
-GX_LoadOBJ_2: ; 0x020AF130
- ldr ip, _020AF138 ; =GX_LoadOBJ
- bx r12
- .balign 4
-_020AF138: .word GX_LoadOBJ
-
- arm_func_start GX_LoadOAM_2
-GX_LoadOAM_2: ; 0x020AF13C
- ldr ip, _020AF144 ; =GX_LoadOAM
- bx r12
- .balign 4
-_020AF144: .word GX_LoadOAM
-
- arm_func_start FUN_020AF148
-FUN_020AF148: ; 0x020AF148
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl GX_BeginLoadBGExtPltt
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl GX_LoadBGExtPltt
- bl GX_EndLoadBGExtPltt
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AF174
-FUN_020AF174: ; 0x020AF174
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl GX_BeginLoadOBJExtPltt
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl GX_LoadOBJExtPltt
- bl GX_EndLoadOBJExtPltt
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start GX_LoadBGPltt_2
-GX_LoadBGPltt_2: ; 0x020AF1A0
- ldr ip, _020AF1A8 ; =GX_LoadBGPltt
- bx r12
- .balign 4
-_020AF1A8: .word GX_LoadBGPltt
-
- arm_func_start GX_LoadOBJPltt_2
-GX_LoadOBJPltt_2: ; 0x020AF1AC
- ldr ip, _020AF1B4 ; =GX_LoadOBJPltt
- bx r12
- .balign 4
-_020AF1B4: .word GX_LoadOBJPltt
-
- arm_func_start GX_LoadBG3Scr_3
-GX_LoadBG3Scr_3: ; 0x020AF1B8
- ldr ip, _020AF1C0 ; =GX_LoadBG3Scr
- bx r12
- .balign 4
-_020AF1C0: .word GX_LoadBG3Scr
-
- arm_func_start GX_LoadBG2Scr_3
-GX_LoadBG2Scr_3: ; 0x020AF1C4
- ldr ip, _020AF1CC ; =GX_LoadBG2Scr
- bx r12
- .balign 4
-_020AF1CC: .word GX_LoadBG2Scr
-
- arm_func_start GX_LoadBG3Scr_2
-GX_LoadBG3Scr_2: ; 0x020AF1D0
- ldr ip, _020AF1D8 ; =GX_LoadBG3Scr
- bx r12
- .balign 4
-_020AF1D8: .word GX_LoadBG3Scr
-
- arm_func_start GX_LoadBG2Scr_2
-GX_LoadBG2Scr_2: ; 0x020AF1DC
- ldr ip, _020AF1E4 ; =GX_LoadBG2Scr
- bx r12
- .balign 4
-_020AF1E4: .word GX_LoadBG2Scr
-
- arm_func_start GX_LoadBG1Scr_2
-GX_LoadBG1Scr_2: ; 0x020AF1E8
- ldr ip, _020AF1F0 ; =GX_LoadBG1Scr
- bx r12
- .balign 4
-_020AF1F0: .word GX_LoadBG1Scr
-
- arm_func_start GX_LoadBG0Scr_2
-GX_LoadBG0Scr_2: ; 0x020AF1F4
- ldr ip, _020AF1FC ; =GX_LoadBG0Scr
- bx r12
- .balign 4
-_020AF1FC: .word GX_LoadBG0Scr
-
- arm_func_start GX_LoadBG3Char_2
-GX_LoadBG3Char_2: ; 0x020AF200
- ldr ip, _020AF208 ; =GX_LoadBG3Char
- bx r12
- .balign 4
-_020AF208: .word GX_LoadBG3Char
-
- arm_func_start GX_LoadBG2Char_2
-GX_LoadBG2Char_2: ; 0x020AF20C
- ldr ip, _020AF214 ; =GX_LoadBG2Char
- bx r12
- .balign 4
-_020AF214: .word GX_LoadBG2Char
-
- arm_func_start GX_LoadBG1Char_2
-GX_LoadBG1Char_2: ; 0x020AF218
- ldr ip, _020AF220 ; =GX_LoadBG1Char
- bx r12
- .balign 4
-_020AF220: .word GX_LoadBG1Char
-
- arm_func_start GX_LoadBG0Char_2
-GX_LoadBG0Char_2: ; 0x020AF224
- ldr ip, _020AF22C ; =GX_LoadBG0Char
- bx r12
- .balign 4
-_020AF22C: .word GX_LoadBG0Char
-
- arm_func_start FUN_020AF230
-FUN_020AF230: ; 0x020AF230
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r2
- bl GX_BeginLoadClearImage
- mov r0, r5
- mov r1, r4
- bl GX_LoadClearImageDepth
- bl GX_EndLoadClearImage
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020AF25C
-FUN_020AF25C: ; 0x020AF25C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r2
- bl GX_BeginLoadClearImage
- mov r0, r5
- mov r1, r4
- bl GX_LoadClearImageColor
- bl GX_EndLoadClearImage
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020AF288
-FUN_020AF288: ; 0x020AF288
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl GX_BeginLoadTexPltt
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl GX_LoadTexPltt
- bl GX_EndLoadTexPltt
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AF2B4
-FUN_020AF2B4: ; 0x020AF2B4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- mov r4, r2
- bl GX_BeginLoadTex
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl GX_LoadTex
- bl GX_EndLoadTex
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AF2E0
-FUN_020AF2E0: ; 0x020AF2E0
- ldrh r0, [r0, #0xc]
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-
- arm_func_start FUN_020AF2F4
-FUN_020AF2F4: ; 0x020AF2F4
- ldrh r1, [r0, #0xc]
- ldr r0, [r0, #0x4]
- cmp r1, r0
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-
- arm_func_start FUN_020AF30C
-FUN_020AF30C: ; 0x020AF30C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r2, r0
- add r0, r1, #0x1
- ldr r1, [r2, #0x4]
- bl _u32_div_f
- mov r0, r1, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AF334
-FUN_020AF334:
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x10
- add r3, r2, r3
- str r2, [sp, #0x0]
- str r2, [sp, #0x8]
- str r3, [sp, #0x4]
- str r3, [sp, #0xc]
- ldr r3, [r0, #0x0]
- add r12, sp, #0x0
- cmp r3, #0x0
- beq _020AF418
- mov r6, #0x0
-_020AF364:
- ldr r5, [r3, #0x0]
- ldr r4, [r12, #0x4]
- ldr r2, [r3, #0xc]
- cmp r5, r4
- bne _020AF3B8
- ldr r4, [r3, #0x4]
- add r4, r5, r4
- str r4, [sp, #0xc]
- ldr r4, [r3, #0x8]
- cmp r4, #0x0
- strne r2, [r4, #0xc]
- streq r2, [r0, #0x0]
- cmp r2, #0x0
- strne r4, [r2, #0x8]
- ldr r4, [r1, #0x0]
- cmp r4, #0x0
- strne r3, [r4, #0x8]
- ldr r4, [r1, #0x0]
- str r4, [r3, #0xc]
- str r6, [r3, #0x8]
- str r3, [r1, #0x0]
-_020AF3B8:
- ldr r5, [r3, #0x0]
- ldr lr, [r3, #0x4]
- ldr r4, [r12, #0x0]
- add lr, r5, lr
- cmp r4, lr
- bne _020AF40C
- str r5, [sp, #0x8]
- ldr r5, [r3, #0x8]
- ldr r4, [r3, #0xc]
- cmp r5, #0x0
- strne r4, [r5, #0xc]
- streq r4, [r0, #0x0]
- cmp r4, #0x0
- strne r5, [r4, #0x8]
- ldr lr, [r1, #0x0]
- cmp lr, #0x0
- strne r3, [lr, #0x8]
- ldr lr, [r1, #0x0]
- str lr, [r3, #0xc]
- str r6, [r3, #0x8]
- str r3, [r1, #0x0]
-_020AF40C:
- mov r3, r2
- cmp r2, #0x0
- bne _020AF364
-_020AF418:
- ldr r4, [r1, #0x0]
- cmp r4, #0x0
- ldrne r2, [r4, #0xc]
- strne r2, [r1, #0x0]
- cmp r4, #0x0
- addeq sp, sp, #0x10
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r2, [sp, #0x8]
- mov r1, #0x0
- str r2, [r4, #0x0]
- ldr r3, [sp, #0xc]
- ldr r2, [sp, #0x8]
- sub r2, r3, r2
- str r2, [r4, #0x4]
- str r1, [r4, #0x8]
- str r1, [r4, #0xc]
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- strne r4, [r1, #0x8]
- ldr r2, [r0, #0x0]
- mov r1, #0x0
- str r2, [r4, #0xc]
- str r1, [r4, #0x8]
- str r4, [r0, #0x0]
- mov r0, #0x1
- add sp, sp, #0x10
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AF488
-FUN_020AF488:
- stmdb sp!, {r4-r10,lr}
- ldr r4, [r0, #0x0]
- ldr r9, [sp, #0x20]
- cmp r4, #0x0
- mov r5, #0x0
- beq _020AF4EC
- sub r12, r9, #0x1
- mvn lr, r12
-_020AF4A8:
- cmp r9, #0x1
- ldrls r8, [r4, #0x0]
- movls r6, r5
- movls r7, r3
- bls _020AF4D0
- ldr r7, [r4, #0x0]
- add r6, r7, r12
- and r8, lr, r6
- sub r6, r8, r7
- add r7, r3, r6
-_020AF4D0:
- ldr r10, [r4, #0x4]
- cmp r10, r7
- movcs r5, r4
- bhs _020AF4EC
- ldr r4, [r4, #0xc]
- cmp r4, #0x0
- bne _020AF4A8
-_020AF4EC:
- cmp r5, #0x0
- beq _020AF5B8
- cmp r6, #0x0
- beq _020AF54C
- ldr r9, [r1, #0x0]
- cmp r9, #0x0
- ldrne r3, [r9, #0xc]
- strne r3, [r1, #0x0]
- cmp r9, #0x0
- beq _020AF5B8
- ldr r4, [r5, #0x0]
- mov r3, #0x0
- str r4, [r9, #0x0]
- str r6, [r9, #0x4]
- str r3, [r9, #0x8]
- str r3, [r9, #0xc]
- ldr r3, [r0, #0x0]
- cmp r3, #0x0
- strne r9, [r3, #0x8]
- ldr r4, [r0, #0x0]
- mov r3, #0x0
- str r4, [r9, #0xc]
- str r3, [r9, #0x8]
- str r9, [r0, #0x0]
-_020AF54C:
- ldr r3, [r5, #0x4]
- sub r3, r3, r7
- str r3, [r5, #0x4]
- ldr r3, [r5, #0x0]
- add r3, r3, r7
- str r3, [r5, #0x0]
- ldr r3, [r5, #0x4]
- cmp r3, #0x0
- bne _020AF5AC
- ldr r4, [r5, #0x8]
- ldr r3, [r5, #0xc]
- cmp r4, #0x0
- strne r3, [r4, #0xc]
- streq r3, [r0, #0x0]
- cmp r3, #0x0
- strne r4, [r3, #0x8]
- ldr r0, [r1, #0x0]
- cmp r0, #0x0
- strne r5, [r0, #0x8]
- ldr r3, [r1, #0x0]
- mov r0, #0x0
- str r3, [r5, #0xc]
- str r0, [r5, #0x8]
- str r5, [r1, #0x0]
-_020AF5AC:
- str r8, [r2, #0x0]
- mov r0, #0x1
- ldmia sp!, {r4-r10,pc}
-_020AF5B8:
- mov r0, #0x0
- str r0, [r2, #0x0]
- ldmia sp!, {r4-r10,pc}
-
- arm_func_start FUN_020AF5C4
-FUN_020AF5C4:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r12, #0x0
- str r12, [sp, #0x0]
- bl FUN_020AF488
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AF5E0
-FUN_020AF5E0: ; 0x020AF5E0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr lr, [r1, #0x0]
- cmp lr, #0x0
- ldrne r12, [lr, #0xc]
- strne r12, [r1, #0x0]
- cmp lr, #0x0
- beq _020AF640
- str r2, [lr, #0x0]
- str r3, [lr, #0x4]
- mov r1, #0x0
- str r1, [lr, #0x8]
- str r1, [lr, #0xc]
- ldr r1, [r0, #0x0]
- add sp, sp, #0x4
- cmp r1, #0x0
- strne lr, [r1, #0x8]
- ldr r2, [r0, #0x0]
- mov r1, #0x0
- str r2, [lr, #0xc]
- str r1, [lr, #0x8]
- str lr, [r0, #0x0]
- mov r0, #0x1
- ldmia sp!, {pc}
-_020AF640:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020AF64C
-FUN_020AF64C: ; 0x020AF64C
- stmdb sp!, {r4,lr}
- subs lr, r1, #0x1
- mov r2, #0x0
- beq _020AF684
- mov r4, r0
-_020AF660:
- add r12, r2, #0x1
- add r2, r0, r2, lsl #0x4
- add r3, r0, r12, lsl #0x4
- str r3, [r2, #0xc]
- str r4, [r3, #0x8]
- mov r2, r12
- cmp r12, lr
- add r4, r4, #0x10
- blo _020AF660
-_020AF684:
- mov r2, #0x0
- str r2, [r0, #0x8]
- add r1, r0, r1, lsl #0x4
- str r2, [r1, #-0x4]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020AF698
-FUN_020AF698: ; 0x020AF698
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020AF6A4
-FUN_020AF6A4: ; 0x020AF6A4
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x30
- ldr r6, _020AF884 ; =UNK_020FF864
- add r5, sp, #0x0
- ldmia r6!, {r0-r3}
- mov r12, r5
- stmia r5!, {r0-r3}
- ldmia r6!, {r0-r3}
- stmia r5!, {r0-r3}
- ldr r4, _020AF888 ; =UNK_021CCD6C
- ldmia r6, {r0-r3}
- stmia r5, {r0-r3}
- ldr lr, [r4, #0x10]
- ldr r1, [r4, #0xc]
- add r0, lr, lr, lsr #0x1
- mov r4, lr, lsr #0x1
- sub r0, r1, r0
- mov r3, #0x0
-_020AF6EC:
- cmp r3, #0x0
- beq _020AF6FC
- cmp r3, #0x2
- bne _020AF734
-_020AF6FC:
- ldr r2, [r12, #0x0]
- cmp r2, #0x0
- beq _020AF734
- cmp lr, #0x0
- beq _020AF734
- ldr r1, [r12, #0x8]
- cmp r2, lr
- movhi r2, lr
- add r1, r1, r2
- str r1, [r12, #0x8]
- ldr r1, [r12, #0x0]
- sub lr, lr, r2
- sub r1, r1, r2
- str r1, [r12, #0x0]
-_020AF734:
- add r3, r3, #0x1
- cmp r3, #0x4
- add r12, r12, #0xc
- blo _020AF6EC
- ldr r1, [sp, #0xc]
- add r5, sp, #0x0
- sub r1, r1, r4
- str r1, [sp, #0xc]
- mov r3, #0x0
-_020AF758:
- ldr r2, [r5, #0x0]
- cmp r2, #0x0
- beq _020AF790
- cmp r0, #0x0
- beq _020AF790
- ldr r1, [r5, #0x4]
- cmp r2, r0
- movhi r2, r0
- add r1, r1, r2
- str r1, [r5, #0x4]
- ldr r1, [r5, #0x0]
- sub r0, r0, r2
- sub r1, r1, r2
- str r1, [r5, #0x0]
-_020AF790:
- add r3, r3, #0x1
- cmp r3, #0x4
- add r5, r5, #0xc
- blo _020AF758
- ldr r0, _020AF888 ; =UNK_021CCD6C
- bl FUN_020AF698
- ldr r0, _020AF88C ; =UNK_021CCD70
- bl FUN_020AF698
- ldr r0, _020AF888 ; =UNK_021CCD6C
- ldr r1, [r0, #0x18]
- ldr r0, [r0, #0x14]
- mov r1, r1, lsr #0x4
- bl FUN_020AF64C
- ldr r3, [sp, #0x8]
- ldr r1, _020AF888 ; =UNK_021CCD6C
- cmp r3, #0x0
- str r0, [r1, #0x8]
- beq _020AF7E8
- ldr r0, _020AF88C ; =UNK_021CCD70
- ldr r1, _020AF890 ; =UNK_021CCD74
- mov r2, #0x0
- bl FUN_020AF5E0
-_020AF7E8:
- ldr r3, [sp, #0x4]
- ldr r2, [sp, #0x8]
- cmp r3, #0x0
- beq _020AF804
- ldr r0, _020AF888 ; =UNK_021CCD6C
- ldr r1, _020AF890 ; =UNK_021CCD74
- bl FUN_020AF5E0
-_020AF804:
- ldr r3, [sp, #0x20]
- cmp r3, #0x0
- beq _020AF820
- ldr r0, _020AF88C ; =UNK_021CCD70
- ldr r1, _020AF890 ; =UNK_021CCD74
- mov r2, #0x40000
- bl FUN_020AF5E0
-_020AF820:
- ldr r3, [sp, #0x1c]
- ldr r0, [sp, #0x20]
- cmp r3, #0x0
- add r2, r0, #0x40000
- beq _020AF840
- ldr r0, _020AF888 ; =UNK_021CCD6C
- ldr r1, _020AF890 ; =UNK_021CCD74
- bl FUN_020AF5E0
-_020AF840:
- ldr r3, [sp, #0x28]
- cmp r3, #0x0
- beq _020AF85C
- ldr r0, _020AF888 ; =UNK_021CCD6C
- ldr r1, _020AF890 ; =UNK_021CCD74
- mov r2, #0x60000
- bl FUN_020AF5E0
-_020AF85C:
- ldr r3, [sp, #0x10]
- cmp r3, #0x0
- addeq sp, sp, #0x30
- ldmeqia sp!, {r4-r6,pc}
- ldr r0, _020AF888 ; =UNK_021CCD6C
- ldr r1, _020AF890 ; =UNK_021CCD74
- add r2, r4, #0x20000
- bl FUN_020AF5E0
- add sp, sp, #0x30
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020AF884: .word UNK_020FF864
-_020AF888: .word UNK_021CCD6C
-_020AF88C: .word UNK_021CCD70
-_020AF890: .word UNK_021CCD74
-
- arm_func_start FUN_020AF894
-FUN_020AF894: ; 0x020AF894
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, _020AF908 ; =0x7FFF0000
- ldr r1, _020AF90C ; =0x0000FFFF
- and r2, r0, r2
- and r3, r0, r1
- mov r1, r2, lsr #0x10
- and r0, r0, #0x80000000
- mov r2, r3, lsl #0x3
- movs r3, r1, lsl #0x4
- mov r0, r0, lsr #0x1f
- beq _020AF8FC
- cmp r0, #0x0
- beq _020AF8DC
- ldr r0, _020AF910 ; =UNK_021CCD70
- ldr r1, _020AF914 ; =UNK_021CCD74
- bl FUN_020AF334
- b _020AF8E8
-_020AF8DC:
- ldr r0, _020AF918 ; =UNK_021CCD6C
- ldr r1, _020AF914 ; =UNK_021CCD74
- bl FUN_020AF334
-_020AF8E8:
- cmp r0, #0x0
- movne r0, #0x0
- add sp, sp, #0x4
- moveq r0, #0x1
- ldmia sp!, {pc}
-_020AF8FC:
- mov r0, #0x2
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020AF908: .word 0x7FFF0000
-_020AF90C: .word 0x0000FFFF
-_020AF910: .word UNK_021CCD70
-_020AF914: .word UNK_021CCD74
-_020AF918: .word UNK_021CCD6C
-
- arm_func_start FUN_020AF91C
-FUN_020AF91C: ; 0x020AF91C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- cmp r0, #0x0
- moveq r5, #0x10
- addne r0, r0, #0xf
- bicne r5, r0, #0xf
- ldr r0, _020AF9B0 ; =0x0007FFF0
- mov r4, r1
- cmp r5, r0
- addcs sp, sp, #0x4
- movcs r0, #0x0
- ldmcsia sp!, {r4-r5,pc}
- cmp r4, #0x0
- beq _020AF96C
- ldr r0, _020AF9B4 ; =UNK_021CCD70
- ldr r1, _020AF9B8 ; =UNK_021CCD74
- add r2, sp, #0x0
- mov r3, r5
- bl FUN_020AF5C4
- b _020AF980
-_020AF96C:
- ldr r0, _020AF9BC ; =UNK_021CCD6C
- ldr r1, _020AF9B8 ; =UNK_021CCD74
- add r2, sp, #0x0
- mov r3, r5
- bl FUN_020AF5C4
-_020AF980:
- cmp r0, #0x0
- addeq sp, sp, #0x4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r5,pc}
- ldr r1, [sp, #0x0]
- ldr r0, _020AF9C0 ; =0x0000FFFF
- mov r2, r5, lsr #0x4
- and r0, r0, r1, lsr #0x3
- orr r0, r0, r2, lsl #0x10
- orr r0, r0, r4, lsl #0x1f
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AF9B0: .word 0x0007FFF0
-_020AF9B4: .word UNK_021CCD70
-_020AF9B8: .word UNK_021CCD74
-_020AF9BC: .word UNK_021CCD6C
-_020AF9C0: .word 0x0000FFFF
-
- arm_func_start FUN_020AF9C4
-FUN_020AF9C4: ; 0x020AF9C4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr ip, _020AFA14 ; =UNK_021CCD6C
- str r0, [r12, #0xc]
- str r1, [r12, #0x10]
- str r2, [r12, #0x14]
- str r3, [r12, #0x18]
- bl FUN_020AF6A4
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r3, _020AFA18 ; =FUN_020AF91C
- ldr r1, _020AFA1C ; =UNK_021064B8
- ldr r2, _020AFA20 ; =FUN_020AF894
- ldr r0, _020AFA24 ; =UNK_021064BC
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020AFA14: .word UNK_021CCD6C
-_020AFA18: .word FUN_020AF91C
-_020AFA1C: .word UNK_021064B8
-_020AFA20: .word FUN_020AF894
-_020AFA24: .word UNK_021064BC
-
- arm_func_start FUN_020AFA28
-FUN_020AFA28: ; 0x020AFA28
- mov r0, r0, lsl #0x4
- bx lr
-
- arm_func_start FUN_020AFA30
-FUN_020AFA30:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020AFA78 ; =UNK_021CCD88
- ldr r1, [r0, #0x10]
- ldr r0, [r0, #0xc]
- mov r1, r1, lsr #0x4
- bl FUN_020AF64C
- ldr r1, _020AFA78 ; =UNK_021CCD88
- str r0, [r1, #0x4]
- mov r0, r1
- bl FUN_020AF698
- ldr r0, _020AFA78 ; =UNK_021CCD88
- ldr r1, _020AFA7C ; =UNK_021CCD8C
- ldr r3, [r0, #0x8]
- mov r2, #0x0
- bl FUN_020AF5E0
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020AFA78: .word UNK_021CCD88
-_020AFA7C: .word UNK_021CCD8C
-
- arm_func_start FUN_020AFA80
-FUN_020AFA80: ; 0x020AFA80
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r1, #0x10000
- rsb r2, r1, #0x0
- ldr r1, _020AFAC8 ; =0x0000FFFF
- and r2, r0, r2
- and r12, r0, r1
- mov r3, r2, lsr #0x10
- ldr r0, _020AFACC ; =UNK_021CCD88
- ldr r1, _020AFAD0 ; =UNK_021CCD8C
- mov r2, r12, lsl #0x3
- mov r3, r3, lsl #0x3
- bl FUN_020AF334
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020AFAC8: .word 0x0000FFFF
-_020AFACC: .word UNK_021CCD88
-_020AFAD0: .word UNK_021CCD8C
-
- arm_func_start FUN_020AFAD4
-FUN_020AFAD4: ; 0x020AFAD4
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x8
- cmp r0, #0x0
- moveq r4, #0x8
- addne r0, r0, #0x7
- bicne r4, r0, #0x7
- ldr r0, _020AFB98 ; =0x0007FFF8
- cmp r4, r0
- addcs sp, sp, #0x8
- movcs r0, #0x0
- ldmcsia sp!, {r4,pc}
- cmp r1, #0x0
- beq _020AFB50
- mov r12, #0x8
- ldr r0, _020AFB9C ; =UNK_021CCD88
- ldr r1, _020AFBA0 ; =UNK_021CCD8C
- add r2, sp, #0x4
- mov r3, r4
- str r12, [sp, #0x0]
- bl FUN_020AF488
- ldr r2, [sp, #0x4]
- add r1, r2, r4
- cmp r1, #0x10000
- bls _020AFB6C
- ldr r0, _020AFB9C ; =UNK_021CCD88
- ldr r1, _020AFBA0 ; =UNK_021CCD8C
- mov r3, r4
- bl FUN_020AF334
- add sp, sp, #0x8
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-_020AFB50:
- ldr r0, _020AFB9C ; =UNK_021CCD88
- mov r12, #0x10
- ldr r1, _020AFBA0 ; =UNK_021CCD8C
- add r2, sp, #0x4
- mov r3, r4
- str r12, [sp, #0x0]
- bl FUN_020AF488
-_020AFB6C:
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r1, [sp, #0x4]
- ldr r0, _020AFBA4 ; =0x0000FFFF
- mov r2, r4, lsr #0x3
- and r0, r0, r1, lsr #0x3
- orr r0, r0, r2, lsl #0x10
- add sp, sp, #0x8
- ldmia sp!, {r4,pc}
- .balign 4
-_020AFB98: .word 0x0007FFF8
-_020AFB9C: .word UNK_021CCD88
-_020AFBA0: .word UNK_021CCD8C
-_020AFBA4: .word 0x0000FFFF
-
- arm_func_start FUN_020AFBA8
-FUN_020AFBA8: ; 0x020AFBA8
- stmdb sp!, {r4,lr}
- ldr ip, _020AFBE8 ; =UNK_021CCD88
- mov r4, r3
- str r0, [r12, #0x8]
- str r1, [r12, #0xc]
- str r2, [r12, #0x10]
- bl FUN_020AFA30
- cmp r4, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r3, _020AFBEC ; =FUN_020AFAD4
- ldr r1, _020AFBF0 ; =UNK_021064C0
- ldr r2, _020AFBF4 ; =FUN_020AFA80
- ldr r0, _020AFBF8 ; =UNK_021064C4
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- ldmia sp!, {r4,pc}
- .balign 4
-_020AFBE8: .word UNK_021CCD88
-_020AFBEC: .word FUN_020AFAD4
-_020AFBF0: .word UNK_021064C0
-_020AFBF4: .word FUN_020AFA80
-_020AFBF8: .word UNK_021064C4
-
- arm_func_start FUN_020AFBFC
-FUN_020AFBFC: ; 0x020AFBFC
- mov r0, r0, lsl #0x4
- bx lr
-
- arm_func_start FUN_020AFC04
-FUN_020AFC04: ; 0x020AFC04
- ldrh r2, [r0, #0x0]
- cmp r2, r1
- ldrhi r0, [r0, #0x4]
- addhi r0, r0, r1, lsl #0x4
- movls r0, #0x0
- bx lr
-
- arm_func_start FUN_020AFC1C
-FUN_020AFC1C: ; 0x020AFC1C
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- ldr r1, [r0, #0x4]
- mov r6, #0x0
- add r1, r1, r0
- str r1, [r0, #0x4]
- ldr r1, [r0, #0x8]
- add r1, r1, r0
- str r1, [r0, #0x8]
- ldr r1, [r0, #0xc]
- add r1, r1, r0
- str r1, [r0, #0xc]
- ldrh r1, [r0, #0x0]
- ldr r4, [r0, #0x4]
- ldr lr, [r0, #0x8]
- cmp r1, #0x0
- ldr r12, [r0, #0xc]
- bls _020AFCCC
- mov r1, r6
-_020AFC68:
- add r2, r4, r6, lsl #0x4
- ldr r5, [r2, #0xc]
- mov r3, r6, lsl #0x4
- add r5, lr, r5
- str r5, [r2, #0xc]
- ldrh r7, [r4, r3]
- mov r5, r1
- cmp r7, #0x0
- bls _020AFCB4
-_020AFC8C:
- ldr r9, [r2, #0xc]
- add r7, r5, #0x1
- ldr r8, [r9, r5, lsl #0x3]
- mov r7, r7, lsl #0x10
- add r8, r12, r8
- str r8, [r9, r5, lsl #0x3]
- ldrh r8, [r4, r3]
- mov r5, r7, lsr #0x10
- cmp r5, r8
- blo _020AFC8C
-_020AFCB4:
- add r2, r6, #0x1
- mov r2, r2, lsl #0x10
- ldrh r3, [r0, #0x0]
- mov r6, r2, lsr #0x10
- cmp r6, r3
- blo _020AFC68
-_020AFCCC:
- ldr r1, [r0, #0x14]
- cmp r1, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r9,pc}
- add r1, r1, r0
- str r1, [r0, #0x14]
- ldr r1, [r0, #0x14]
- mov r12, #0x0
- add r2, r1, #0x8
- ldr r0, [r2, #0x4]
- add r0, r0, r2
- str r0, [r2, #0x4]
- ldrh r0, [r1, #0x8]
- cmp r0, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r9,pc}
- mov r0, r12
- mov r6, r12
-_020AFD14:
- ldr r5, [r2, #0x4]
- mov r3, r6
- add r1, r5, r0
- ldr r4, [r1, #0x4]
- add r4, r4, r2
- str r4, [r1, #0x4]
- ldr r4, [r1, #0x8]
- add r4, r4, r2
- str r4, [r1, #0x8]
- ldrh r4, [r5, r0]
- cmp r4, #0x0
- bls _020AFD6C
- mov r7, r6
-_020AFD48:
- ldr r5, [r1, #0x8]
- add r3, r3, #0x1
- ldr r4, [r5, r7]
- add r4, r4, r2
- str r4, [r5, r7]
- ldrh r4, [r1, #0x0]
- add r7, r7, #0x4
- cmp r3, r4
- blo _020AFD48
-_020AFD6C:
- ldrh r1, [r2, #0x0]
- add r12, r12, #0x1
- add r0, r0, #0xc
- cmp r12, r1
- blo _020AFD14
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start thunk_FUN_020afda0
-thunk_FUN_020afda0: ; 0x020AFD88
- ldr ip, _020AFD90 ; =FUN_020AFDA0
- bx r12
- .balign 4
-_020AFD90: .word FUN_020AFDA0
-
- arm_func_start thunk_FUN_020afda0_2
-thunk_FUN_020afda0_2: ; 0x020AFD94
- ldr ip, _020AFD9C ; =FUN_020AFDA0
- bx r12
- .balign 4
-_020AFD9C: .word FUN_020AFDA0
-
- arm_func_start FUN_020AFDA0
-FUN_020AFDA0: ; 0x020AFDA0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020AFDE4 ; =0x41424E4B
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020AFC1C
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AFDE4: .word 0x41424E4B
-
- arm_func_start FUN_020AFDE8
-FUN_020AFDE8: ; 0x020AFDE8
- stmdb sp!, {r4-r6,lr}
- mov r5, r0
- ldr r1, [r5, #0x4]
- add r1, r1, r5
- str r1, [r5, #0x4]
- bl FUN_020AFF10
- ldrh r1, [r5, #0x0]
- mov r4, r0
- mov r6, #0x0
- cmp r1, #0x0
- bls _020AFE44
-_020AFE14:
- mov r0, r5
- mov r1, r6
- bl FUN_020AFE8C
- ldr r2, [r0, #0x4]
- add r1, r6, #0x1
- add r2, r2, r4
- str r2, [r0, #0x4]
- mov r0, r1, lsl #0x10
- ldrh r1, [r5, #0x0]
- mov r6, r0, lsr #0x10
- cmp r6, r1
- blo _020AFE14
-_020AFE44:
- ldr r0, [r5, #0xc]
- cmp r0, #0x0
- beq _020AFE6C
- add r0, r0, r5
- str r0, [r5, #0xc]
- ldr r1, [r5, #0xc]
- ldr r0, [r1, #0x4]
- add r0, r0, r1
- str r0, [r1, #0x4]
- str r1, [r5, #0xc]
-_020AFE6C:
- ldr r0, [r5, #0x14]
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- add r0, r0, r5
- str r0, [r5, #0x14]
- ldr r0, [r5, #0x14]
- bl FUN_020AFF00
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020AFE8C
-FUN_020AFE8C: ; 0x020AFE8C
- ldrh r2, [r0, #0x0]
- cmp r1, r2
- movcs r0, #0x0
- bxcs lr
- ldrh r2, [r0, #0x2]
- ands r2, r2, #0x1
- ldrne r0, [r0, #0x4]
- addne r0, r0, r1, lsl #0x4
- ldreq r0, [r0, #0x4]
- addeq r0, r0, r1, lsl #0x3
- bx lr
-
- arm_func_start FUN_020AFEB8
-FUN_020AFEB8: ; 0x020AFEB8
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020AFEFC ; =0x4345424B
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020AFDE8
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020AFEFC: .word 0x4345424B
-
- arm_func_start FUN_020AFF00
-FUN_020AFF00: ; 0x020AFF00
- ldr ip, _020AFF0C ; =FUN_020B01B0
- add r0, r0, #0x8
- bx r12
- .balign 4
-_020AFF0C: .word FUN_020B01B0
-
- arm_func_start FUN_020AFF10
-FUN_020AFF10: ; 0x020AFF10
- ldrh r1, [r0, #0x2]
- ands r1, r1, #0x1
- ldrneh r1, [r0, #0x0]
- ldrne r0, [r0, #0x4]
- addne r0, r0, r1, lsl #0x4
- ldreqh r1, [r0, #0x0]
- ldreq r0, [r0, #0x4]
- addeq r0, r0, r1, lsl #0x3
- bx lr
-
- arm_func_start FUN_020AFF34
-FUN_020AFF34: ; 0x020AFF34
- ldrh r2, [r0, #0x0]
- cmp r1, r2
- ldrcc r0, [r0, #0x4]
- addcc r0, r0, r1, lsl #0x3
- movcs r0, #0x0
- bx lr
-
- arm_func_start FUN_020AFF4C
-FUN_020AFF4C: ; 0x020AFF4C
- stmdb sp!, {r4,lr}
- ldr r1, [r0, #0x4]
- mov r4, #0x0
- add r1, r1, r0
- str r1, [r0, #0x4]
- ldr r1, [r0, #0x8]
- add r1, r1, r0
- str r1, [r0, #0x8]
- ldrh r1, [r0, #0x0]
- ldr lr, [r0, #0x4]
- cmp r1, #0x0
- bls _020AFFA8
-_020AFF7C:
- add r3, lr, r4, lsl #0x3
- ldr r12, [r0, #0x8]
- ldr r2, [r3, #0x4]
- add r1, r4, #0x1
- add r2, r12, r2
- str r2, [r3, #0x4]
- mov r1, r1, lsl #0x10
- ldrh r2, [r0, #0x0]
- mov r4, r1, lsr #0x10
- cmp r4, r2
- blo _020AFF7C
-_020AFFA8:
- ldr r1, [r0, #0x10]
- cmp r1, #0x0
- ldmeqia sp!, {r4,pc}
- add r1, r1, r0
- str r1, [r0, #0x10]
- ldr r0, [r0, #0x10]
- bl FUN_020AFFC8
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020AFFC8
-FUN_020AFFC8: ; 0x020AFFC8
- ldr ip, _020AFFD4 ; =FUN_020B01B0
- add r0, r0, #0x8
- bx r12
- .balign 4
-_020AFFD4: .word FUN_020B01B0
-
- arm_func_start FUN_020AFFD8
-FUN_020AFFD8: ; 0x020AFFD8
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020B001C ; =0x4D43424B
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020AFF4C
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B001C: .word 0x4D43424B
-
- arm_func_start FUN_020B0020
-FUN_020B0020: ; 0x020B0020
- ldr r1, [r0, #0x14]
- add r1, r1, r0
- str r1, [r0, #0x14]
- bx lr
-
- arm_func_start FUN_020B0030
-FUN_020B0030: ; 0x020B0030
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020B0074 ; =0x43484152
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020B0020
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B0074: .word 0x43484152
-
- arm_func_start FUN_020B0078
-FUN_020B0078: ; 0x020B0078
- ldr r1, [r0, #0x14]
- add r1, r1, r0
- str r1, [r0, #0x14]
- bx lr
-
- arm_func_start FUN_020B0088
-FUN_020B0088: ; 0x020B0088
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020B00CC ; =0x43484152
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020B0078
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B00CC: .word 0x43484152
-
- arm_func_start FUN_020B00D0
-FUN_020B00D0: ; 0x020B00D0
- ldr r1, [r0, #0xc]
- add r1, r1, r0
- str r1, [r0, #0xc]
- bx lr
-
- arm_func_start FUN_020B00E0
-FUN_020B00E0: ; 0x020B00E0
- ldr r1, [r0, #0x4]
- add r1, r1, r0
- str r1, [r0, #0x4]
- bx lr
-
- arm_func_start FUN_020B00F0
-FUN_020B00F0: ; 0x020B00F0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020B0134 ; =0x50434D50
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020B00E0
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B0134: .word 0x50434D50
-
- arm_func_start FUN_020B0138
-FUN_020B0138: ; 0x020B0138
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldr r1, _020B017C ; =0x504C5454
- bl FUN_020B01F8
- movs r4, r0
- moveq r0, #0x0
- addeq sp, sp, #0x4
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r5,pc}
- add r0, r4, #0x8
- bl FUN_020B00D0
- add r0, r4, #0x8
- str r0, [r5, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B017C: .word 0x504C5454
-
- arm_func_start FUN_020B0180
-FUN_020B0180: ; 0x020B0180
- stmdb sp!, {r4,lr}
- mov r4, r1
- ldr r1, _020B01AC ; =0x5343524E
- bl FUN_020B01F8
- cmp r0, #0x0
- addne r0, r0, #0x8
- strne r0, [r4, #0x0]
- movne r0, #0x1
- moveq r0, #0x0
- streq r0, [r4, #0x0]
- ldmia sp!, {r4,pc}
- .balign 4
-_020B01AC: .word 0x5343524E
-
- arm_func_start FUN_020B01B0
-FUN_020B01B0: ; 0x020B01B0
- ldr r1, [r0, #0x4]
- mov r12, #0x0
- add r1, r1, r0
- str r1, [r0, #0x4]
- ldrh r1, [r0, #0x0]
- cmp r1, #0x0
- bxls lr
-_020B01CC:
- ldr r3, [r0, #0x4]
- add r1, r12, #0x1
- ldr r2, [r3, r12, lsl #0x2]
- mov r1, r1, lsl #0x10
- add r2, r0, r2
- str r2, [r3, r12, lsl #0x2]
- ldrh r2, [r0, #0x0]
- mov r12, r1, lsr #0x10
- cmp r12, r2
- blo _020B01CC
- bx lr
-
- arm_func_start FUN_020B01F8
-FUN_020B01F8:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldrh r2, [r0, #0xc]
- ldrh r12, [r0, #0xe]
- mov lr, #0x0
- add r0, r0, r2
- cmp r12, #0x0
- bls _020B0244
-_020B0218:
- ldr r2, [r0, #0x0]
- cmp r2, r1
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- add r2, lr, #0x1
- mov r2, r2, lsl #0x10
- ldr r3, [r0, #0x4]
- mov lr, r2, lsr #0x10
- cmp lr, r12
- add r0, r0, r3
- blo _020B0218
-_020B0244:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020B0250
-FUN_020B0250: ; 0x020B0250
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r5, _020B02C0 ; =0x04000470
- mov r0, r0, lsl #0xc
- str r0, [r5, #0x0]
- mov r4, r1, lsl #0xc
- ldr r12, [sp, #0x10]
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #0x1c]
- str r4, [r5, #0x0]
- mov r4, r2, lsl #0xc
- ldr r2, [sp, #0x18]
- ldr lr, _020B02C4 ; =0x0400046C
- str r4, [r5, #0x0]
- mov r4, r3, lsl #0xc
- ldr r3, [sp, #0x20]
- str r4, [lr, #0x0]
- mov r12, r12, lsl #0xc
- str r12, [lr, #0x0]
- mov r12, #0x1000
- mov r0, r0, lsl #0xc
- mov r1, r1, lsl #0xc
- mov r2, r2, lsl #0xc
- mov r3, r3, lsl #0xc
- str r12, [lr, #0x0]
- bl FUN_020B0340
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B02C0: .word 0x04000470
-_020B02C4: .word 0x0400046C
-
- arm_func_start FUN_020B02C8
-FUN_020B02C8: ; 0x020B02C8
- stmdb sp!, {lr}
- sub sp, sp, #0x14
- ldr r2, _020B0330 ; =0xBFFF0000
- ldr r0, _020B0334 ; =0x04000580
- mov r1, #0x400000
- str r2, [r0, #0x0]
- rsb r0, r1, #0x0
- str r0, [sp, #0x0]
- str r1, [sp, #0x4]
- mov r0, #0x0
- str r1, [sp, #0x8]
- mov r1, #0x1
- str r1, [sp, #0xc]
- mov r2, r0
- mov r1, #0xc0000
- mov r3, #0x100000
- str r0, [sp, #0x10]
- bl G3i_OrthoW_
- ldr r1, _020B0338 ; =0x0400044C
- mov r2, #0x0
- ldr r0, _020B033C ; =0x04000440
- str r2, [r1, #0x0]
- mov r1, #0x1
- str r1, [r0, #0x0]
- add sp, sp, #0x14
- ldmia sp!, {pc}
- .balign 4
-_020B0330: .word 0xBFFF0000
-_020B0334: .word 0x04000580
-_020B0338: .word 0x0400044C
-_020B033C: .word 0x04000440
-
- arm_func_start FUN_020B0340
-FUN_020B0340: ; 0x020B0340
- stmdb sp!, {r4-r6,lr}
- mov r3, r3, lsl #0x8
- mov r0, r0, lsl #0x8
- mov r4, r3, asr #0x10
- mov r3, r0, asr #0x10
- mov r0, r4, lsl #0x10
- mov r3, r3, lsl #0x10
- mov r1, r1, lsl #0x8
- mov r1, r1, asr #0x10
- mov r1, r1, lsl #0x10
- mov r2, r2, lsl #0x8
- mov r2, r2, asr #0x10
- mov r2, r2, lsl #0x10
- ldr ip, _020B03F4 ; =0x04000500
- mov lr, #0x1
- mov r6, r0, lsr #0x10
- mov r5, r3, lsr #0x10
- mov r3, r1, lsr #0x10
- mov r1, r2, lsr #0x10
- ldr r4, _020B03F8 ; =0x04000488
- str lr, [r12, #0x0]
- orr r0, r5, r6, lsl #0x10
- ldr lr, _020B03FC ; =0x0400048C
- str r0, [r4, #0x0]
- mov r0, #0x10000000
- str r0, [lr, #0x0]
- mov r12, #0x0
- str r12, [lr, #0x0]
- orr r2, r3, r6, lsl #0x10
- ldr r0, _020B0400 ; =0x10001000
- str r2, [r4, #0x0]
- str r0, [lr, #0x0]
- str r12, [lr, #0x0]
- orr r0, r3, r1, lsl #0x10
- str r0, [r4, #0x0]
- mov r0, #0x1000
- str r0, [lr, #0x0]
- str r12, [lr, #0x0]
- orr r0, r5, r1, lsl #0x10
- str r0, [r4, #0x0]
- str r12, [lr, #0x0]
- ldr r0, _020B0404 ; =0x04000504
- str r12, [lr, #0x0]
- str r12, [r0, #0x0]
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B03F4: .word 0x04000500
-_020B03F8: .word 0x04000488
-_020B03FC: .word 0x0400048C
-_020B0400: .word 0x10001000
-_020B0404: .word 0x04000504
-
- arm_func_start FUN_020B0408
-FUN_020B0408:
- ldr r1, [r0, #0x14]
- cmp r1, #0x0
- ldreq r0, [r0, #0x18]
- ldreq r1, [r0, #0x8]
- cmp r1, #0x2
- beq _020B0428
- cmp r1, #0x4
- bne _020B0430
-_020B0428:
- mov r0, #0x1
- bx lr
-_020B0430:
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020B0438
-FUN_020B0438: ; 0x020B0438
- ldr ip, _020B0444 ; =FUN_020B0448
- str r1, [r0, #0x18]
- bx r12
- .balign 4
-_020B0444: .word FUN_020B0448
-
- arm_func_start FUN_020B0448
-FUN_020B0448: ; 0x020B0448
- ldr r1, [r0, #0x10]
- cmp r1, #0x0
- movgt r2, #0x1
- ldr r1, [r0, #0x4]
- movle r2, #0x0
- eors r1, r2, r1
- beq _020B047C
- ldr r2, [r0, #0x18]
- ldrh r1, [r2, #0x2]
- ldr r2, [r2, #0xc]
- add r1, r2, r1, lsl #0x3
- str r1, [r0, #0x0]
- b _020B0494
-_020B047C:
- ldr r2, [r0, #0x18]
- ldrh r1, [r2, #0x0]
- ldr r2, [r2, #0xc]
- add r1, r2, r1, lsl #0x3
- sub r1, r1, #0x8
- str r1, [r0, #0x0]
-_020B0494:
- ldr ip, _020B04A4 ; =FUN_020B0534
- mov r1, #0x0
- str r1, [r0, #0xc]
- bx r12
- .balign 4
-_020B04A4: .word FUN_020B0534
-
- arm_func_start FUN_020B04A8
-FUN_020B04A8: ; 0x020B04A8
- mov r1, #0x0
- str r1, [r0, #0x0]
- str r1, [r0, #0x4]
- str r1, [r0, #0x8]
- strh r1, [r0, #0xc]
- bx lr
-
- arm_func_start FUN_020B04C0
-FUN_020B04C0: ; 0x020B04C0
- stmdb sp!, {r4,lr}
- mov r4, r0
- add r0, r4, #0x1c
- bl FUN_020B04A8
- mov r1, #0x0
- str r1, [r4, #0x0]
- str r1, [r4, #0x4]
- mov r0, #0x1
- str r0, [r4, #0x8]
- str r1, [r4, #0xc]
- mov r0, #0x1000
- str r0, [r4, #0x10]
- str r1, [r4, #0x14]
- str r1, [r4, #0x18]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B04FC
-FUN_020B04FC: ; 0x020B04FC
- ldr r1, [r0, #0x18]
- ldr r2, [r0, #0x0]
- ldr r0, [r1, #0xc]
- sub r0, r2, r0
- mov r0, r0, lsl #0xd
- mov r0, r0, lsr #0x10
- bx lr
-
- arm_func_start FUN_020B0518
-FUN_020B0518:
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020B06EC
- cmp r0, #0x0
- movne r1, #0x0
- strne r1, [r4, #0xc]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B0534
-FUN_020B0534:
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- ldr r0, [r8, #0x8]
- mov r7, #0x0
- cmp r0, #0x1
- movne r0, r7
- ldmneia sp!, {r4-r8,pc}
- ldr r2, [r8, #0x10]
- mov r0, #0x800
- smull r3, r1, r2, r1
- adds r0, r3, r0
- adc r1, r1, r7
- mov r0, r0, lsr #0xc
- orr r0, r0, r1, lsl #0x14
- bl abs
- ldr r1, [r8, #0xc]
- add r6, r8, #0xc
- add r0, r1, r0
- str r0, [r8, #0xc]
- mov r4, r7
- mov r5, #0x1
- b _020B06A8
-_020B058C:
- ldr r0, [r8, #0x0]
- ldr r1, [r6, #0x0]
- ldrh r0, [r0, #0x4]
- mov r7, r5
- sub r0, r1, r0, lsl #0xc
- str r0, [r6, #0x0]
- ldr r0, [r8, #0x10]
- cmp r0, #0x0
- movgt r1, r5
- ldr r0, [r8, #0x4]
- movle r1, r4
- eors r0, r1, r0
- ldrne r0, [r8, #0x0]
- addne r0, r0, #0x8
- strne r0, [r8, #0x0]
- ldreq r0, [r8, #0x0]
- subeq r0, r0, #0x8
- streq r0, [r8, #0x0]
- ldr r1, [r8, #0x10]
- ldr r0, [r8, #0x0]
- cmp r1, #0x0
- movgt r2, r5
- ldr r1, [r8, #0x4]
- movle r2, r4
- eors r1, r2, r1
- beq _020B0614
- ldr r2, [r8, #0x18]
- ldrh r1, [r2, #0x0]
- ldr r2, [r2, #0xc]
- add r1, r2, r1, lsl #0x3
- cmp r0, r1
- movcs r0, r5
- movcc r0, r4
- b _020B0634
-_020B0614:
- ldr r2, [r8, #0x18]
- ldrh r1, [r2, #0x2]
- ldr r2, [r2, #0xc]
- add r1, r2, r1, lsl #0x3
- sub r1, r1, #0x8
- cmp r0, r1
- movls r0, r5
- movhi r0, r4
-_020B0634:
- cmp r0, #0x0
- beq _020B0644
- mov r0, r8
- bl FUN_020B0710
-_020B0644:
- ldr r0, [r8, #0x1c]
- cmp r0, #0x0
- beq _020B06A8
- ldr r0, [r8, #0x18]
- ldr r2, [r8, #0x1c]
- ldr r1, [r8, #0x0]
- ldr r0, [r0, #0xc]
- cmp r2, #0x2
- sub r0, r1, r0
- mov r0, r0, lsl #0xd
- mov r1, r0, lsr #0x10
- beq _020B0680
- cmp r2, #0x3
- beq _020B069C
- b _020B06A8
-_020B0680:
- ldrh r0, [r8, #0x28]
- cmp r1, r0
- bne _020B06A8
- ldr r0, [r8, #0x20]
- ldr r2, [r8, #0x24]
- blx r2
- b _020B06A8
-_020B069C:
- ldr r0, [r8, #0x20]
- ldr r2, [r8, #0x24]
- blx r2
-_020B06A8:
- ldr r0, [r8, #0x8]
- cmp r0, #0x0
- beq _020B06CC
- ldr r0, [r8, #0x0]
- ldr r1, [r8, #0xc]
- ldrh r0, [r0, #0x4]
- cmp r1, r0, lsl #0xc
- movge r0, r5
- bge _020B06D0
-_020B06CC:
- mov r0, r4
-_020B06D0:
- cmp r0, #0x0
- bne _020B058C
- mov r0, r7
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B06E0
-FUN_020B06E0: ; 0x020B06E0
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020B06EC
-FUN_020B06EC:
- ldr r3, [r0, #0x18]
- ldrh r2, [r3, #0x0]
- cmp r1, r2
- ldrcc r2, [r3, #0xc]
- addcc r1, r2, r1, lsl #0x3
- strcc r1, [r0, #0x0]
- movcc r0, #0x1
- movcs r0, #0x0
- bx lr
-
- arm_func_start FUN_020B0710
-FUN_020B0710: ; 0x020B0710
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x14]
- cmp r0, #0x0
- ldreq r0, [r4, #0x18]
- ldreq r0, [r0, #0x8]
- cmp r0, #0x3
- beq _020B0738
- cmp r0, #0x4
- bne _020B07B4
-_020B0738:
- ldr r0, [r4, #0x4]
- eor r0, r0, #0x1
- str r0, [r4, #0x4]
- ldr r1, [r4, #0x18]
- ldr r2, [r4, #0x0]
- ldrh r0, [r1, #0x2]
- ldr r1, [r1, #0xc]
- add r0, r1, r0, lsl #0x3
- sub r0, r0, #0x8
- cmp r2, r0
- bhi _020B0800
- ldr r0, [r4, #0x1c]
- cmp r0, #0x1
- bne _020B0780
- ldr r0, [r4, #0x20]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x24]
- blx r2
-_020B0780:
- ldr r0, [r4, #0x14]
- cmp r0, #0x0
- ldreq r0, [r4, #0x18]
- ldreq r0, [r0, #0x8]
- cmp r0, #0x2
- beq _020B07A8
- cmp r0, #0x4
- movne r0, #0x0
- strne r0, [r4, #0x8]
- bne _020B0800
-_020B07A8:
- mov r0, r4
- bl FUN_020B0448
- b _020B0800
-_020B07B4:
- ldr r0, [r4, #0x1c]
- cmp r0, #0x1
- bne _020B07D0
- ldr r0, [r4, #0x20]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x24]
- blx r2
-_020B07D0:
- ldr r0, [r4, #0x14]
- cmp r0, #0x0
- ldreq r0, [r4, #0x18]
- ldreq r0, [r0, #0x8]
- cmp r0, #0x2
- beq _020B07F8
- cmp r0, #0x4
- movne r0, #0x0
- strne r0, [r4, #0x8]
- bne _020B0800
-_020B07F8:
- mov r0, r4
- bl FUN_020B0448
-_020B0800:
- ldr r1, [r4, #0x18]
- ldr r2, [r4, #0x0]
- ldrh r0, [r1, #0x0]
- ldr r1, [r1, #0xc]
- add r0, r1, r0, lsl #0x3
- sub r0, r0, #0x8
- cmp r2, r0
- strhi r0, [r4, #0x0]
- ldmhiia sp!, {r4,pc}
- cmp r2, r1
- strcc r1, [r4, #0x0]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B0830
-FUN_020B0830: ; 0x020B0830
- ldrh r3, [r0, #0x6]
- ldrh r2, [r0, #0x8]
- mov r12, #0x0
- add r1, r3, #0x1
- cmp r2, r1
- bgt _020B0854
- ldrh r0, [r0, #0x4]
- cmp r0, r3
- movls r12, #0x1
-_020B0854:
- cmp r12, #0x0
- subne r0, r3, r2
- addne r0, r0, #0x1
- movne r0, r0, lsl #0x10
- movne r0, r0, lsr #0x10
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020B0870
-FUN_020B0870: ; 0x020B0870
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020B09B4
- mov r0, r4
- bl FUN_020B0888
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B0888
-FUN_020B0888: ; 0x020B0888
- stmdb sp!, {r4-r6,lr}
- mov r5, r0
- ldr r0, [r5, #0x14]
- cmp r0, #0x0
- beq _020B0944
- ldrh r2, [r5, #0x6]
- ldrh r1, [r5, #0x8]
- mov r3, #0x0
- add r0, r2, #0x1
- cmp r1, r0
- bgt _020B08C0
- ldrh r0, [r5, #0x4]
- cmp r0, r2
- movls r3, #0x1
-_020B08C0:
- cmp r3, #0x0
- moveq r4, #0x0
- beq _020B08E0
- ldrh r0, [r5, #0x4]
- sub r0, r2, r0
- add r0, r0, #0x1
- mov r0, r0, lsl #0x10
- mov r4, r0, lsr #0xd
-_020B08E0:
- ldr r2, [r5, #0x0]
- ldr r1, _020B09AC ; =UNK_021CCDA0
- mov r0, #0x540
- mla r1, r2, r0, r1
- ldrh r0, [r5, #0x4]
- add r2, r1, #0x100
- mov r1, r4
- add r6, r2, r0, lsl #0x3
- mov r0, r6
- bl DC_InvalidateRange
- ldr r0, _020B09B0 ; =GXi_DmaId
- mvn r1, #0x0
- ldr r0, [r0, #0x0]
- cmp r0, r1
- beq _020B0930
- mov r1, r6
- mov r3, r4
- mov r2, #0xc0
- bl MI_DmaFill32
- b _020B0998
-_020B0930:
- mov r1, r6
- mov r2, r4
- mov r0, #0xc0
- bl MIi_CpuClear32
- b _020B0998
-_020B0944:
- ldr r2, [r5, #0x0]
- ldr r1, _020B09AC ; =UNK_021CCDA0
- mov r0, #0x540
- mla r1, r2, r0, r1
- ldrh r2, [r5, #0x4]
- ldrh r0, [r5, #0x6]
- add r1, r1, #0x100
- add r3, r1, r2, lsl #0x3
- sub r0, r0, r2
- add r0, r0, #0x1
- mov r0, r0, lsl #0x10
- movs r2, r0, lsr #0x10
- mov r0, #0x0
- beq _020B0998
- mov r1, #0xc0
-_020B0980:
- add r0, r0, #0x1
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- cmp r0, r2
- strh r1, [r3], #0x8
- blo _020B0980
-_020B0998:
- ldrh r0, [r5, #0x4]
- strh r0, [r5, #0x8]
- ldrh r0, [r5, #0xa]
- strh r0, [r5, #0xe]
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B09AC: .word UNK_021CCDA0
-_020B09B0: .word GXi_DmaId
-
- arm_func_start FUN_020B09B4
-FUN_020B09B4: ; 0x020B09B4
- stmdb sp!, {r4-r10,lr}
- mov r7, r0
- ldr r0, [r7, #0x14]
- cmp r0, #0x0
- beq _020B0A48
- ldr r5, [r7, #0x0]
- ldr r1, _020B0BA8 ; =UNK_021CCDA0
- mov r0, #0x540
- mla r1, r5, r0, r1
- ldrh r2, [r7, #0x4]
- ldrh r0, [r7, #0x6]
- add r1, r1, #0x100
- add r4, r1, r2, lsl #0x3
- sub r0, r0, r2
- add r0, r0, #0x1
- mov r0, r0, lsl #0x13
- mov r6, r0, lsr #0x10
- mov r2, r2, lsl #0x13
- mov r0, r4
- mov r1, r6
- mov r7, r2, lsr #0x10
- bl DC_FlushRange
- cmp r5, #0x0
- beq _020B0A20
- cmp r5, #0x1
- beq _020B0A34
- ldmia sp!, {r4-r10,pc}
-_020B0A20:
- mov r0, r4
- mov r1, r7
- mov r2, r6
- bl GX_LoadOAM
- ldmia sp!, {r4-r10,pc}
-_020B0A34:
- mov r0, r4
- mov r1, r7
- mov r2, r6
- bl GXS_LoadOAM
- ldmia sp!, {r4-r10,pc}
-_020B0A48:
- ldr r0, [r7, #0x0]
- ldr r2, _020B0BA8 ; =UNK_021CCDA0
- mov r1, #0x540
- mla r2, r0, r1, r2
- ldrh r5, [r7, #0x4]
- ldrh r1, [r7, #0x6]
- ldr r3, _020B0BAC ; =UNK_0210655C
- add r4, r2, #0x100
- sub r1, r1, r5
- add r1, r1, #0x1
- mov r1, r1, lsl #0x10
- mov r2, r5, lsl #0x13
- add r6, r4, r5, lsl #0x3
- movs r5, r1, lsr #0x10
- mov r4, r2, lsr #0x10
- ldr r9, [r3, r0, lsl #0x2]
- mov r10, #0x0
- beq _020B0AC8
- mov r8, #0x6
-_020B0A94:
- mov r0, r6
- mov r1, r4
- mov r2, r8
- blx r9
- add r0, r10, #0x1
- add r2, r4, #0x8
- mov r1, r0, lsl #0x10
- mov r0, r2, lsl #0x10
- mov r10, r1, lsr #0x10
- cmp r10, r5
- mov r4, r0, lsr #0x10
- add r6, r6, #0x8
- blo _020B0A94
-_020B0AC8:
- ldrh r2, [r7, #0xc]
- ldrh r1, [r7, #0xe]
- mov r3, #0x0
- add r0, r2, #0x1
- cmp r1, r0
- bgt _020B0AEC
- ldrh r0, [r7, #0xa]
- cmp r0, r2
- movls r3, #0x1
-_020B0AEC:
- cmp r3, #0x0
- ldmeqia sp!, {r4-r10,pc}
- ldr r0, [r7, #0x0]
- ldr r2, _020B0BA8 ; =UNK_021CCDA0
- mov r1, #0x540
- mla r2, r0, r1, r2
- ldrh r5, [r7, #0xa]
- add r4, r2, #0x100
- ldrh r1, [r7, #0xc]
- mov r2, r5, lsl #0x15
- ldr r3, _020B0BAC ; =UNK_0210655C
- sub r1, r1, r5
- add r1, r1, #0x1
- mov r1, r1, lsl #0x10
- add r9, r4, r5, lsl #0x5
- ldr r5, [r3, r0, lsl #0x2]
- movs r8, r1, lsr #0x10
- mov r7, r2, lsr #0x10
- mov r6, #0x0
- ldmeqia sp!, {r4-r10,pc}
- mov r4, #0x2
-_020B0B40:
- mov r2, r4
- add r0, r9, #0x6
- add r1, r7, #0x6
- blx r5
- mov r2, r4
- add r0, r9, #0xe
- add r1, r7, #0xe
- blx r5
- mov r2, r4
- add r0, r9, #0x16
- add r1, r7, #0x16
- blx r5
- add r0, r9, #0x1e
- add r1, r7, #0x1e
- mov r2, r4
- blx r5
- add r0, r7, #0x20
- mov r0, r0, lsl #0x10
- mov r7, r0, lsr #0x10
- add r9, r9, #0x20
- add r0, r6, #0x1
- mov r0, r0, lsl #0x10
- mov r6, r0, lsr #0x10
- cmp r6, r8
- blo _020B0B40
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020B0BA8: .word UNK_021CCDA0
-_020B0BAC: .word UNK_0210655C
-
- arm_func_start FUN_020B0BB0
-FUN_020B0BB0: ; 0x020B0BB0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldrh r12, [r0, #0xc]
- ldrh r3, [r0, #0xe]
- mov lr, #0x0
- add r2, r12, #0x1
- cmp r3, r2
- bgt _020B0BDC
- ldrh r2, [r0, #0xa]
- cmp r2, r12
- movls lr, #0x1
-_020B0BDC:
- cmp lr, #0x0
- subne r2, r12, r3
- addne r2, r2, #0x1
- movne r2, r2, lsl #0x10
- movne r2, r2, lsr #0x10
- moveq r2, #0x0
- cmp r2, #0x1
- movcs r2, #0x1
- movcc r2, #0x0
- cmp r2, #0x0
- addeq sp, sp, #0x4
- ldreq r0, _020B0C74 ; =0x0000FFFE
- ldmeqia sp!, {pc}
- ldr lr, [r0, #0x0]
- ldr r3, _020B0C78 ; =UNK_021CCDA0
- mov r2, #0x540
- mla r12, lr, r2, r3
- ldr r3, [r1, #0x0]
- ldrh r2, [r0, #0xe]
- add r12, r12, #0x100
- mov r3, r3, asr #0x4
- add r12, r12, r2, lsl #0x5
- strh r3, [r12, #0x6]
- ldr r3, [r1, #0x4]
- mov r3, r3, asr #0x4
- strh r3, [r12, #0xe]
- ldr r3, [r1, #0x8]
- mov r3, r3, asr #0x4
- strh r3, [r12, #0x16]
- ldr r1, [r1, #0xc]
- mov r1, r1, asr #0x4
- strh r1, [r12, #0x1e]
- ldrh r1, [r0, #0xe]
- add r1, r1, #0x1
- strh r1, [r0, #0xe]
- mov r0, r2
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B0C74: .word 0x0000FFFE
-_020B0C78: .word UNK_021CCDA0
-
- arm_func_start FUN_020B0C7C
-FUN_020B0C7C: ; 0x020B0C7C
- stmdb sp!, {r4,lr}
- ldrh r12, [r0, #0x6]
- ldrh r4, [r0, #0x8]
- mov lr, #0x0
- add r3, r12, #0x1
- cmp r4, r3
- bgt _020B0CA4
- ldrh r3, [r0, #0x4]
- cmp r3, r12
- movls lr, #0x1
-_020B0CA4:
- cmp lr, #0x0
- subne r3, r12, r4
- addne r3, r3, #0x1
- movne r3, r3, lsl #0x10
- movne r3, r3, lsr #0x10
- moveq r3, #0x0
- cmp r3, #0x1
- movcs r3, #0x1
- movcc r3, #0x0
- cmp r3, #0x0
- beq _020B0D48
- ldr r4, [r0, #0x0]
- ldr ip, _020B0D50 ; =UNK_021CCDA0
- mov r3, #0x540
- mla r12, r4, r3, r12
- ldrh r3, [r0, #0x8]
- add r4, r12, #0x100
- ldrh r12, [r1, #0x0]
- mov lr, r3, lsl #0x3
- add r3, r4, r3, lsl #0x3
- strh r12, [r4, lr]
- ldrh lr, [r1, #0x2]
- ldr ip, _020B0D54 ; =0x0000FFFE
- strh lr, [r3, #0x2]
- ldrh r1, [r1, #0x4]
- cmp r2, r12
- strh r1, [r3, #0x4]
- beq _020B0D34
- ldr r1, [r3, #0x0]
- mov r12, r1, lsl #0x16
- mov r12, r12, lsr #0x1e
- ands r12, r12, #0x1
- bicne r12, r1, #0x3e000000
- andne r1, r2, #0x1f
- orrne r1, r12, r1, lsl #0x19
- strne r1, [r3, #0x0]
-_020B0D34:
- ldrh r1, [r0, #0x8]
- add r1, r1, #0x1
- strh r1, [r0, #0x8]
- mov r0, #0x1
- ldmia sp!, {r4,pc}
-_020B0D48:
- mov r0, #0x0
- ldmia sp!, {r4,pc}
- .balign 4
-_020B0D50: .word UNK_021CCDA0
-_020B0D54: .word 0x0000FFFE
-
- arm_func_start FUN_020B0D58
-FUN_020B0D58: ; 0x020B0D58
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldrh lr, [r0, #0x6]
- ldrh r12, [r0, #0x8]
- mov r4, #0x0
- add r3, lr, #0x1
- cmp r12, r3
- bgt _020B0D84
- ldrh r3, [r0, #0x4]
- cmp r3, lr
- movls r4, #0x1
-_020B0D84:
- cmp r4, #0x0
- subne r3, lr, r12
- addne r3, r3, #0x1
- movne r3, r3, lsl #0x10
- movne r3, r3, lsr #0x10
- moveq r3, #0x0
- cmp r3, r2
- movcs r3, #0x1
- movcc r3, #0x0
- cmp r3, #0x0
- beq _020B0E24
- ldr lr, [r0, #0x0]
- ldr ip, _020B0E30 ; =UNK_021CCDA0
- mov r3, #0x540
- mla r12, lr, r3, r12
- ldrh r3, [r0, #0x8]
- add r12, r12, #0x100
- cmp r2, #0x0
- add r4, r12, r3, lsl #0x3
- mov r5, #0x0
- ble _020B0E18
- add r3, r0, #0x8
-_020B0DDC:
- ldrh lr, [r1, #0x0]
- mov r0, r5, lsl #0x3
- add r12, r4, r5, lsl #0x3
- strh lr, [r4, r0]
- ldrh r0, [r1, #0x2]
- add r5, r5, #0x1
- cmp r5, r2
- strh r0, [r12, #0x2]
- ldrh r0, [r1, #0x4]
- add r1, r1, #0x8
- strh r0, [r12, #0x4]
- ldrh r0, [r3, #0x0]
- add r0, r0, #0x1
- strh r0, [r3, #0x0]
- blt _020B0DDC
-_020B0E18:
- add sp, sp, #0x4
- mov r0, #0x1
- ldmia sp!, {r4-r5,pc}
-_020B0E24:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B0E30: .word UNK_021CCDA0
-
- arm_func_start FUN_020B0E34
-FUN_020B0E34: ; 0x020B0E34
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr r5, [sp, #0x1c]
- ldr r6, _020B0FB4 ; =UNK_021CCDA0
- mov r4, #0x540
- mla r4, r5, r4, r6
- mov lr, r1
- sub r1, r2, #0x1
- add r1, lr, r1
- mov r1, r1, lsl #0x10
- mov r12, r1, lsr #0x10
- add r7, r4, lr, lsl #0x1
- add r2, r4, r12, lsl #0x1
- mov r6, r0
- mov r5, r3
- cmp r7, r2
- mov r3, lr, lsl #0x1
- bhi _020B0E9C
- ldr r0, _020B0FB8 ; =0x0000FFFF
-_020B0E80:
- ldrh r1, [r7, #0x0]
- cmp r1, r0
- movne r0, #0x0
- bne _020B0EA0
- add r7, r7, #0x2
- cmp r7, r2
- bls _020B0E80
-_020B0E9C:
- mov r0, #0x1
-_020B0EA0:
- cmp r0, #0x0
- beq _020B0EE0
- ldr r0, _020B0FBC ; =UNK_021CCD9C
- sub r2, r12, lr
- ldrh r7, [r0, #0x0]
- add r1, r4, r3
- mov r2, r2, lsl #0x1
- add r3, r7, #0x1
- strh r3, [r0, #0x0]
- strh r7, [r6, #0x10]
- strh lr, [r6, #0x4]
- strh r12, [r6, #0x6]
- strh lr, [r6, #0x8]
- ldrh r0, [r6, #0x10]
- bl MIi_CpuClear16
- b _020B0EEC
-_020B0EE0:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r4-r7,pc}
-_020B0EEC:
- ldrh r0, [sp, #0x18]
- add r4, r4, #0x500
- cmp r0, #0x0
- bne _020B0F18
- mov r0, #0x20
- strh r0, [r6, #0xa]
- mov r0, #0x0
- strh r0, [r6, #0xc]
- ldrh r0, [r6, #0xa]
- strh r0, [r6, #0xe]
- b _020B0F98
-_020B0F18:
- sub r0, r0, #0x1
- add r0, r5, r0
- mov r0, r0, lsl #0x10
- mov r12, r0, lsr #0x10
- add r7, r4, r5, lsl #0x1
- add r2, r4, r12, lsl #0x1
- cmp r7, r2
- mov r3, r5, lsl #0x1
- bhi _020B0F5C
- ldr r0, _020B0FB8 ; =0x0000FFFF
-_020B0F40:
- ldrh r1, [r7, #0x0]
- cmp r1, r0
- movne r0, #0x0
- bne _020B0F60
- add r7, r7, #0x2
- cmp r7, r2
- bls _020B0F40
-_020B0F5C:
- mov r0, #0x1
-_020B0F60:
- cmp r0, #0x0
- beq _020B0F8C
- strh r5, [r6, #0xa]
- strh r12, [r6, #0xc]
- strh r5, [r6, #0xe]
- ldrh r0, [r6, #0x10]
- sub r2, r12, r5
- add r1, r4, r3
- mov r2, r2, lsl #0x1
- bl MIi_CpuClear16
- b _020B0F98
-_020B0F8C:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r4-r7,pc}
-_020B0F98:
- mov r1, #0x0
- ldr r0, [sp, #0x1c]
- str r1, [r6, #0x14]
- str r0, [r6, #0x0]
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B0FB4: .word UNK_021CCDA0
-_020B0FB8: .word 0x0000FFFF
-_020B0FBC: .word UNK_021CCD9C
-
- arm_func_start FUN_020B0FC0
-FUN_020B0FC0: ; 0x020B0FC0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020B1060 ; =UNK_021CCEA0
- mov r0, #0xc0
- mov r2, #0x400
- bl MIi_CpuClear16
- ldr r1, _020B1064 ; =UNK_021CD3E0
- mov r0, #0xc0
- mov r2, #0x400
- bl MIi_CpuClear16
- ldr r1, _020B1068 ; =UNK_021CD920
- mov r0, #0xc0
- mov r2, #0x400
- bl MIi_CpuClear16
- ldr r0, _020B106C ; =0x0000FFFF
- ldr r1, _020B1070 ; =UNK_021CCDA0
- mov r2, #0x100
- bl MIi_CpuClear16
- ldr r0, _020B106C ; =0x0000FFFF
- ldr r1, _020B1074 ; =UNK_021CD2E0
- mov r2, #0x100
- bl MIi_CpuClear16
- ldr r0, _020B106C ; =0x0000FFFF
- ldr r1, _020B1078 ; =UNK_021CD820
- mov r2, #0x100
- bl MIi_CpuClear16
- ldr r0, _020B106C ; =0x0000FFFF
- ldr r1, _020B107C ; =UNK_021CD2A0
- mov r2, #0x40
- bl MIi_CpuClear16
- ldr r0, _020B106C ; =0x0000FFFF
- ldr r1, _020B1080 ; =UNK_021CD7E0
- mov r2, #0x40
- bl MIi_CpuClear16
- ldr r0, _020B106C ; =0x0000FFFF
- ldr r1, _020B1084 ; =UNK_021CDD20
- mov r2, #0x40
- bl MIi_CpuClear16
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B1060: .word UNK_021CCEA0
-_020B1064: .word UNK_021CD3E0
-_020B1068: .word UNK_021CD920
-_020B106C: .word 0x0000FFFF
-_020B1070: .word UNK_021CCDA0
-_020B1074: .word UNK_021CD2E0
-_020B1078: .word UNK_021CD820
-_020B107C: .word UNK_021CD2A0
-_020B1080: .word UNK_021CD7E0
-_020B1084: .word UNK_021CDD20
-
- arm_func_start FUN_020B1088
-FUN_020B1088: ; 0x020B1088
- ldr ip, _020B1094 ; =MIi_CpuCopy16
- add r1, r1, #0x7000000
- bx r12
- .balign 4
-_020B1094: .word MIi_CpuCopy16
-
- arm_func_start FUN_020B1098
-FUN_020B1098: ; 0x020B1098
- ldr r3, _020B10A8 ; =0x07000400
- ldr ip, _020B10AC ; =MIi_CpuCopy16
- add r1, r1, r3
- bx r12
- .balign 4
-_020B10A8: .word 0x07000400
-_020B10AC: .word MIi_CpuCopy16
-
- arm_func_start FUN_020B10B0
-FUN_020B10B0: ; 0x020B10B0
- mov r1, r1, lsl #0x1
- ldrh r0, [r0, r1]
- bx lr
-
- arm_func_start FUN_020B10BC
-FUN_020B10BC: ; 0x020B10BC
- ldr r0, [r0, r1, lsl #0x2]
- bx lr
-
- arm_func_start FUN_020B10C4
-FUN_020B10C4:
- str r2, [r0, r1, lsl #0x2]
- bx lr
-
- arm_func_start FUN_020B10CC
-FUN_020B10CC:
- mov r2, #0x0
- mvn r1, #0x0
-_020B10D4:
- str r1, [r0, r2, lsl #0x2]
- add r2, r2, #0x1
- cmp r2, #0x3
- blt _020B10D4
- bx lr
-
- arm_func_start FUN_020B10E8
-FUN_020B10E8: ; 0x020B10E8
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r10, r0
- ldr r0, [r10, #0x0]
- mov r9, r1
- cmp r0, #0x3
- ldr r0, [sp, #0x28]
- moveq r7, #0x20
- str r0, [sp, #0x28]
- ldrh r0, [r9, #0x0]
- movne r7, #0x200
- mov r11, r2
- mov r8, r3
- str r0, [sp, #0x0]
- mov r6, #0x0
- cmp r0, #0x0
- bls _020B1210
-_020B112C:
- ldr r1, [r9, #0x4]
- mov r0, r6, lsl #0x1
- ldrh r2, [r1, r0]
- ldr r0, [r10, #0xc]
- ldr r1, [r10, #0x8]
- mla r5, r7, r2, r11
- mla r4, r7, r6, r0
- bl DC_FlushRange
- cmp r8, #0x0
- beq _020B11E0
- cmp r8, #0x1
- beq _020B1168
- cmp r8, #0x2
- beq _020B11A4
- b _020B11F8
-_020B1168:
- ldr r0, [r10, #0x4]
- cmp r0, #0x0
- beq _020B1190
- bl GX_BeginLoadOBJExtPltt
- mov r0, r4
- mov r1, r5
- mov r2, r7
- bl GX_LoadOBJExtPltt
- bl GX_EndLoadOBJExtPltt
- b _020B11F8
-_020B1190:
- mov r0, r4
- mov r1, r5
- mov r2, r7
- bl GX_LoadOBJPltt
- b _020B11F8
-_020B11A4:
- ldr r0, [r10, #0x4]
- cmp r0, #0x0
- beq _020B11CC
- bl GXS_BeginLoadOBJExtPltt
- mov r0, r4
- mov r1, r5
- mov r2, r7
- bl GXS_LoadOBJExtPltt
- bl GXS_EndLoadOBJExtPltt
- b _020B11F8
-_020B11CC:
- mov r0, r4
- mov r1, r5
- mov r2, r7
- bl GXS_LoadOBJPltt
- b _020B11F8
-_020B11E0:
- bl GX_BeginLoadTexPltt
- mov r0, r4
- mov r1, r5
- mov r2, r7
- bl GX_LoadTexPltt
- bl GX_EndLoadTexPltt
-_020B11F8:
- add r0, r6, #0x1
- mov r0, r0, lsl #0x10
- mov r6, r0, lsr #0x10
- ldr r0, [sp, #0x0]
- cmp r6, r0
- blo _020B112C
-_020B1210:
- ldr r0, [sp, #0x28]
- ldr r2, [r10, #0x0]
- mov r1, r0
- str r2, [r1, #0x0]
- ldr r4, [r10, #0x4]
- mov r3, r0
- mov r1, r8
- mov r2, r11
- str r4, [r3, #0x4]
- bl FUN_020B19D0
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B1240
-FUN_020B1240: ; 0x020B1240
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r9, r0
- ldr r5, [r9, #0xc]
- ldr r4, [r9, #0x8]
- mov r8, r1
- mov r7, r2
- mov r0, r5
- mov r1, r4
- mov r6, r3
- bl DC_FlushRange
- cmp r7, #0x0
- beq _020B1300
- cmp r7, #0x1
- beq _020B1288
- cmp r7, #0x2
- beq _020B12C4
- b _020B1318
-_020B1288:
- ldr r0, [r9, #0x4]
- cmp r0, #0x0
- beq _020B12B0
- bl GX_BeginLoadOBJExtPltt
- mov r0, r5
- mov r1, r8
- mov r2, r4
- bl GX_LoadOBJExtPltt
- bl GX_EndLoadOBJExtPltt
- b _020B1318
-_020B12B0:
- mov r0, r5
- mov r1, r8
- mov r2, r4
- bl GX_LoadOBJPltt
- b _020B1318
-_020B12C4:
- ldr r0, [r9, #0x4]
- cmp r0, #0x0
- beq _020B12EC
- bl GXS_BeginLoadOBJExtPltt
- mov r0, r5
- mov r1, r8
- mov r2, r4
- bl GXS_LoadOBJExtPltt
- bl GXS_EndLoadOBJExtPltt
- b _020B1318
-_020B12EC:
- mov r0, r5
- mov r1, r8
- mov r2, r4
- bl GXS_LoadOBJPltt
- b _020B1318
-_020B1300:
- bl GX_BeginLoadTexPltt
- mov r0, r5
- mov r1, r8
- mov r2, r4
- bl GX_LoadTexPltt
- bl GX_EndLoadTexPltt
-_020B1318:
- ldr r1, [r9, #0x0]
- mov r0, r6
- str r1, [r6, #0x0]
- ldr r3, [r9, #0x4]
- mov r1, r7
- mov r2, r8
- str r3, [r6, #0x4]
- bl FUN_020B19D0
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start FUN_020B1340
-FUN_020B1340: ; 0x020B1340
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- mov r6, r1
- ldr r0, [r7, #0x14]
- ldr r1, [r7, #0x10]
- mov r5, r2
- mov r4, r3
- bl DC_FlushRange
- cmp r5, #0x0
- ldr r0, [r7, #0x8]
- beq _020B13B8
- cmp r5, #0x1
- beq _020B1384
- cmp r5, #0x2
- beq _020B13A0
- b _020B13B8
-_020B1384:
- mov r3, #0x4000000
- ldr r2, [r3, #0x0]
- ldr r1, _020B1520 ; =0xFFCFFFEF
- and r1, r2, r1
- orr r0, r1, r0
- str r0, [r3, #0x0]
- b _020B13B8
-_020B13A0:
- ldr r3, _020B1524 ; =0x04001000
- ldr r1, _020B1520 ; =0xFFCFFFEF
- ldr r2, [r3, #0x0]
- and r1, r2, r1
- orr r0, r1, r0
- str r0, [r3, #0x0]
-_020B13B8:
- ldr r0, [r7, #0x8]
- cmp r0, #0x0
- bne _020B14D8
- ldrh r0, [r7, #0x2]
- cmp r0, #0x10
- bgt _020B1408
- cmp r0, #0x10
- bge _020B1434
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020B1444
- ; Jump table
- b _020B1444 ; case 0
- b _020B1414 ; case 1
- b _020B141C ; case 2
- b _020B1444 ; case 3
- b _020B1424 ; case 4
- b _020B1444 ; case 5
- b _020B1444 ; case 6
- b _020B1444 ; case 7
- b _020B142C ; case 8
-_020B1408:
- cmp r0, #0x20
- beq _020B143C
- b _020B1444
-_020B1414:
- mov r0, #0x0
- b _020B1448
-_020B141C:
- mov r0, #0x1
- b _020B1448
-_020B1424:
- mov r0, #0x2
- b _020B1448
-_020B142C:
- mov r0, #0x3
- b _020B1448
-_020B1434:
- mov r0, #0x4
- b _020B1448
-_020B143C:
- mov r0, #0x5
- b _020B1448
-_020B1444:
- mov r0, #0x0
-_020B1448:
- str r0, [r4, #0xc]
- ldrh r0, [r7, #0x0]
- cmp r0, #0x10
- bgt _020B1490
- cmp r0, #0x10
- bge _020B14BC
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020B14CC
- ; Jump table
- b _020B14CC ; case 0
- b _020B149C ; case 1
- b _020B14A4 ; case 2
- b _020B14CC ; case 3
- b _020B14AC ; case 4
- b _020B14CC ; case 5
- b _020B14CC ; case 6
- b _020B14CC ; case 7
- b _020B14B4 ; case 8
-_020B1490:
- cmp r0, #0x20
- beq _020B14C4
- b _020B14CC
-_020B149C:
- mov r0, #0x0
- b _020B14D0
-_020B14A4:
- mov r0, #0x1
- b _020B14D0
-_020B14AC:
- mov r0, #0x2
- b _020B14D0
-_020B14B4:
- mov r0, #0x3
- b _020B14D0
-_020B14BC:
- mov r0, #0x4
- b _020B14D0
-_020B14C4:
- mov r0, #0x5
- b _020B14D0
-_020B14CC:
- mov r0, #0x0
-_020B14D0:
- str r0, [r4, #0x10]
- b _020B14E8
-_020B14D8:
- ldrh r0, [r7, #0x2]
- str r0, [r4, #0xc]
- ldrh r0, [r7, #0x0]
- str r0, [r4, #0x10]
-_020B14E8:
- ldr r1, [r7, #0x4]
- mov r0, #0x0
- str r1, [r4, #0x14]
- str r0, [r4, #0x18]
- mov r0, #0x1
- str r0, [r4, #0x1c]
- ldr r3, [r7, #0x8]
- mov r0, r4
- mov r1, r5
- mov r2, r6
- str r3, [r4, #0x20]
- bl FUN_020B1A1C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B1520: .word 0xFFCFFFEF
-_020B1524: .word 0x04001000
-
- arm_func_start FUN_020B1528
-FUN_020B1528: ; 0x020B1528
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- movs r5, r2
- mov r6, r1
- mov r4, r3
- ldr r0, [r7, #0x8]
- beq _020B1590
- cmp r5, #0x1
- beq _020B155C
- cmp r5, #0x2
- beq _020B1578
- b _020B1590
-_020B155C:
- mov r3, #0x4000000
- ldr r2, [r3, #0x0]
- ldr r1, _020B1760 ; =0xFFCFFFEF
- and r1, r2, r1
- orr r0, r1, r0
- str r0, [r3, #0x0]
- b _020B1590
-_020B1578:
- ldr r3, _020B1764 ; =0x04001000
- ldr r1, _020B1760 ; =0xFFCFFFEF
- ldr r2, [r3, #0x0]
- and r1, r2, r1
- orr r0, r1, r0
- str r0, [r3, #0x0]
-_020B1590:
- ldr r0, [r7, #0x14]
- ldr r1, [r7, #0x10]
- bl DC_FlushRange
- cmp r5, #0x0
- beq _020B15B8
- cmp r5, #0x1
- beq _020B15D4
- cmp r5, #0x2
- beq _020B15E8
- b _020B15F8
-_020B15B8:
- bl GX_BeginLoadTex
- ldr r0, [r7, #0x14]
- ldr r2, [r7, #0x10]
- mov r1, r6
- bl GX_LoadTex
- bl GX_EndLoadTex
- b _020B15F8
-_020B15D4:
- ldr r0, [r7, #0x14]
- ldr r2, [r7, #0x10]
- mov r1, r6
- bl GX_LoadOBJ
- b _020B15F8
-_020B15E8:
- ldr r0, [r7, #0x14]
- ldr r2, [r7, #0x10]
- mov r1, r6
- bl GXS_LoadOBJ
-_020B15F8:
- ldr r0, [r7, #0x8]
- cmp r0, #0x0
- bne _020B1718
- ldrh r0, [r7, #0x2]
- cmp r0, #0x10
- bgt _020B1648
- cmp r0, #0x10
- bge _020B1674
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020B1684
- ; Jump table
- b _020B1684 ; case 0
- b _020B1654 ; case 1
- b _020B165C ; case 2
- b _020B1684 ; case 3
- b _020B1664 ; case 4
- b _020B1684 ; case 5
- b _020B1684 ; case 6
- b _020B1684 ; case 7
- b _020B166C ; case 8
-_020B1648:
- cmp r0, #0x20
- beq _020B167C
- b _020B1684
-_020B1654:
- mov r0, #0x0
- b _020B1688
-_020B165C:
- mov r0, #0x1
- b _020B1688
-_020B1664:
- mov r0, #0x2
- b _020B1688
-_020B166C:
- mov r0, #0x3
- b _020B1688
-_020B1674:
- mov r0, #0x4
- b _020B1688
-_020B167C:
- mov r0, #0x5
- b _020B1688
-_020B1684:
- mov r0, #0x0
-_020B1688:
- str r0, [r4, #0xc]
- ldrh r0, [r7, #0x0]
- cmp r0, #0x10
- bgt _020B16D0
- cmp r0, #0x10
- bge _020B16FC
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020B170C
- ; Jump table
- b _020B170C ; case 0
- b _020B16DC ; case 1
- b _020B16E4 ; case 2
- b _020B170C ; case 3
- b _020B16EC ; case 4
- b _020B170C ; case 5
- b _020B170C ; case 6
- b _020B170C ; case 7
- b _020B16F4 ; case 8
-_020B16D0:
- cmp r0, #0x20
- beq _020B1704
- b _020B170C
-_020B16DC:
- mov r0, #0x0
- b _020B1710
-_020B16E4:
- mov r0, #0x1
- b _020B1710
-_020B16EC:
- mov r0, #0x2
- b _020B1710
-_020B16F4:
- mov r0, #0x3
- b _020B1710
-_020B16FC:
- mov r0, #0x4
- b _020B1710
-_020B1704:
- mov r0, #0x5
- b _020B1710
-_020B170C:
- mov r0, #0x0
-_020B1710:
- str r0, [r4, #0x10]
- b _020B1728
-_020B1718:
- ldrh r0, [r7, #0x2]
- str r0, [r4, #0xc]
- ldrh r0, [r7, #0x0]
- str r0, [r4, #0x10]
-_020B1728:
- ldr r1, [r7, #0x4]
- mov r0, #0x0
- str r1, [r4, #0x14]
- str r0, [r4, #0x18]
- mov r0, #0x1
- str r0, [r4, #0x1c]
- ldr r3, [r7, #0x8]
- mov r0, r4
- mov r1, r5
- mov r2, r6
- str r3, [r4, #0x20]
- bl FUN_020B1A1C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B1760: .word 0xFFCFFFEF
-_020B1764: .word 0x04001000
-
- arm_func_start FUN_020B1768
-FUN_020B1768: ; 0x020B1768
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- movs r5, r2
- mov r6, r1
- mov r4, r3
- ldr r0, [r7, #0x8]
- beq _020B17D0
- cmp r5, #0x1
- beq _020B179C
- cmp r5, #0x2
- beq _020B17B8
- b _020B17D0
-_020B179C:
- mov r3, #0x4000000
- ldr r2, [r3, #0x0]
- ldr r1, _020B19A0 ; =0xFFCFFFEF
- and r1, r2, r1
- orr r0, r1, r0
- str r0, [r3, #0x0]
- b _020B17D0
-_020B17B8:
- ldr r3, _020B19A4 ; =0x04001000
- ldr r1, _020B19A0 ; =0xFFCFFFEF
- ldr r2, [r3, #0x0]
- and r1, r2, r1
- orr r0, r1, r0
- str r0, [r3, #0x0]
-_020B17D0:
- ldr r0, [r7, #0x14]
- ldr r1, [r7, #0x10]
- bl DC_FlushRange
- cmp r5, #0x0
- beq _020B17F8
- cmp r5, #0x1
- beq _020B1814
- cmp r5, #0x2
- beq _020B1828
- b _020B1838
-_020B17F8:
- bl GX_BeginLoadTex
- ldr r0, [r7, #0x14]
- ldr r2, [r7, #0x10]
- mov r1, r6
- bl GX_LoadTex
- bl GX_EndLoadTex
- b _020B1838
-_020B1814:
- ldr r0, [r7, #0x14]
- ldr r2, [r7, #0x10]
- mov r1, r6
- bl GX_LoadOBJ
- b _020B1838
-_020B1828:
- ldr r0, [r7, #0x14]
- ldr r2, [r7, #0x10]
- mov r1, r6
- bl GXS_LoadOBJ
-_020B1838:
- ldr r0, [r7, #0x8]
- cmp r0, #0x0
- bne _020B1958
- ldrh r0, [r7, #0x2]
- cmp r0, #0x10
- bgt _020B1888
- cmp r0, #0x10
- bge _020B18B4
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020B18C4
- ; Jump table
- b _020B18C4 ; case 0
- b _020B1894 ; case 1
- b _020B189C ; case 2
- b _020B18C4 ; case 3
- b _020B18A4 ; case 4
- b _020B18C4 ; case 5
- b _020B18C4 ; case 6
- b _020B18C4 ; case 7
- b _020B18AC ; case 8
-_020B1888:
- cmp r0, #0x20
- beq _020B18BC
- b _020B18C4
-_020B1894:
- mov r0, #0x0
- b _020B18C8
-_020B189C:
- mov r0, #0x1
- b _020B18C8
-_020B18A4:
- mov r0, #0x2
- b _020B18C8
-_020B18AC:
- mov r0, #0x3
- b _020B18C8
-_020B18B4:
- mov r0, #0x4
- b _020B18C8
-_020B18BC:
- mov r0, #0x5
- b _020B18C8
-_020B18C4:
- mov r0, #0x0
-_020B18C8:
- str r0, [r4, #0xc]
- ldrh r0, [r7, #0x0]
- cmp r0, #0x10
- bgt _020B1910
- cmp r0, #0x10
- bge _020B193C
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020B194C
- ; Jump table
- b _020B194C ; case 0
- b _020B191C ; case 1
- b _020B1924 ; case 2
- b _020B194C ; case 3
- b _020B192C ; case 4
- b _020B194C ; case 5
- b _020B194C ; case 6
- b _020B194C ; case 7
- b _020B1934 ; case 8
-_020B1910:
- cmp r0, #0x20
- beq _020B1944
- b _020B194C
-_020B191C:
- mov r0, #0x0
- b _020B1950
-_020B1924:
- mov r0, #0x1
- b _020B1950
-_020B192C:
- mov r0, #0x2
- b _020B1950
-_020B1934:
- mov r0, #0x3
- b _020B1950
-_020B193C:
- mov r0, #0x4
- b _020B1950
-_020B1944:
- mov r0, #0x5
- b _020B1950
-_020B194C:
- mov r0, #0x0
-_020B1950:
- str r0, [r4, #0x10]
- b _020B1968
-_020B1958:
- ldrh r0, [r7, #0x2]
- str r0, [r4, #0xc]
- ldrh r0, [r7, #0x0]
- str r0, [r4, #0x10]
-_020B1968:
- ldr r1, [r7, #0x4]
- mov r0, #0x0
- str r1, [r4, #0x14]
- str r0, [r4, #0x18]
- mov r0, #0x1
- str r0, [r4, #0x1c]
- ldr r3, [r7, #0x8]
- mov r0, r4
- mov r1, r5
- mov r2, r6
- str r3, [r4, #0x20]
- bl FUN_020B1A1C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B19A0: .word 0xFFCFFFEF
-_020B19A4: .word 0x04001000
-
- arm_func_start FUN_020B19A8
-FUN_020B19A8:
- add r0, r0, r1, lsl #0x2
- ldr r1, [r0, #0x8]
- mvn r0, #0x0
- cmp r1, r0
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020B19C4
-FUN_020B19C4: ; 0x020B19C4
- add r0, r0, r1, lsl #0x2
- ldr r0, [r0, #0x8]
- bx lr
-
- arm_func_start FUN_020B19D0
-FUN_020B19D0: ; 0x020B19D0
- add r0, r0, r1, lsl #0x2
- str r2, [r0, #0x8]
- bx lr
-
- arm_func_start FUN_020B19DC
-FUN_020B19DC: ; 0x020B19DC
- mov r3, #0x0
- mvn r2, #0x0
-_020B19E4:
- add r1, r0, r3, lsl #0x2
- add r3, r3, #0x1
- str r2, [r1, #0x8]
- cmp r3, #0x3
- blt _020B19E4
- bx lr
-
- arm_func_start FUN_020B19FC
-FUN_020B19FC:
- ldr r1, [r0, r1, lsl #0x2]
- mvn r0, #0x0
- cmp r1, r0
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020B1A14
-FUN_020B1A14: ; 0x020B1A14
- ldr r0, [r0, r1, lsl #0x2]
- bx lr
-
- arm_func_start FUN_020B1A1C
-FUN_020B1A1C: ; 0x020B1A1C
- str r2, [r0, r1, lsl #0x2]
- bx lr
-
- arm_func_start FUN_020B1A24
-FUN_020B1A24: ; 0x020B1A24
- mov r2, #0x0
- mvn r1, #0x0
-_020B1A2C:
- str r1, [r0, r2, lsl #0x2]
- add r2, r2, #0x1
- cmp r2, #0x3
- blt _020B1A2C
- bx lr
-
- arm_func_start FUN_020B1A40
-FUN_020B1A40: ; 0x020B1A40
- stmdb sp!, {r4,lr}
- mov r4, r0
- add r1, r4, #0x4
- mov r0, #0x0
- mov r2, #0x18
- bl MIi_CpuClear16
- mov r0, #0x1000
- str r0, [r4, #0x4]
- str r0, [r4, #0x8]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B1A68
-FUN_020B1A68:
- ldr ip, _020B1A74 ; =FUN_020B1A40
- str r1, [r0, #0x0]
- bx r12
- .balign 4
-_020B1A74: .word FUN_020B1A40
-
- arm_func_start FUN_020B1A78
-FUN_020B1A78: ; 0x020B1A78
- ldr r3, [r0, #0x0]
- cmp r3, #0x1
- ldreqh r3, [r0, #0x12]
- orreq r3, r3, #0x2
- streqh r3, [r0, #0x12]
- streq r1, [r0, #0x4]
- streq r2, [r0, #0x8]
- bx lr
-
- arm_func_start FUN_020B1A98
-FUN_020B1A98: ; 0x020B1A98
- ldr r2, [r0, #0x0]
- cmp r2, #0x1
- ldreqh r2, [r0, #0x12]
- orreq r2, r2, #0x4
- streqh r2, [r0, #0x12]
- streqh r1, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020B1AB4
-FUN_020B1AB4: ; 0x020B1AB4
- ldr r3, [r0, #0x0]
- cmp r3, #0x1
- ldreqh r3, [r0, #0x12]
- orreq r3, r3, #0x8
- streqh r3, [r0, #0x12]
- streqh r1, [r0, #0xc]
- streqh r2, [r0, #0xe]
- bx lr
-
- arm_func_start FUN_020B1AD4
-FUN_020B1AD4: ; 0x020B1AD4
- mov r2, #0x0
- str r2, [r0, #0x0]
- str r1, [r0, #0x4]
- mov r1, #0x1
- str r1, [r0, #0x8]
- ldr ip, _020B1AF4 ; =FUN_020B1A68
- add r0, r0, #0xc
- bx r12
- .balign 4
-_020B1AF4: .word FUN_020B1A68
-
- arm_func_start FUN_020B1AF8
-FUN_020B1AF8: ; 0x020B1AF8
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x34
- ldrh r5, [r2, #0x0]
- ldr r4, [sp, #0x60]
- ldr r10, [sp, #0x58]
- str r4, [sp, #0x60]
- cmp r1, r5
- movcs r1, r5
- mov r4, #0x0
- cmp r1, #0x0
- str r4, [sp, #0x0]
- bls _020B1E7C
- ldrh r4, [sp, #0x5c]
- mov r4, r4, lsl #0x19
- str r4, [sp, #0x4]
- ldr r4, [sp, #0x0]
- str r4, [sp, #0x14]
- mov r4, #0x100
- str r4, [sp, #0xc]
- mov r4, #0x300
- str r4, [sp, #0x8]
- mov r4, #0x1
- str r4, [sp, #0x10]
-_020B1B54:
- ldr r5, [sp, #0x0]
- mov r6, #0x6
- mul r6, r5, r6
- ldr r8, [r2, #0x4]
- ldr r4, [sp, #0x0]
- add r7, r0, r5, lsl #0x3
- ldrh r5, [r8, r6]
- mov r4, r4, lsl #0x3
- add r9, r8, r6
- strh r5, [r0, r4]
- ldrh r4, [r9, #0x2]
- cmp r3, #0x0
- strh r4, [r7, #0x2]
- ldrh r4, [r9, #0x4]
- strh r4, [r7, #0x4]
- bne _020B1B9C
- cmp r10, #0x0
- beq _020B1E60
-_020B1B9C:
- ldr r5, [r7, #0x0]
- ldr r4, _020B1E88 ; =0x01FF0000
- and r4, r5, r4
- mov r4, r4, lsr #0x10
- mov r4, r4, lsl #0x10
- mov r4, r4, asr #0x10
- cmp r4, #0xff
- orrgt r4, r4, #0xff00
- movgt r4, r4, lsl #0x10
- movgt r4, r4, asr #0x10
- mov r4, r4, lsl #0xc
- str r4, [sp, #0x20]
- ldr r4, [r7, #0x0]
- and r4, r4, #0xff
- mov r4, r4, lsl #0x10
- mov r4, r4, asr #0x10
- cmp r4, #0x7f
- orrgt r4, r4, #0xff00
- movgt r4, r4, lsl #0x10
- movgt r4, r4, asr #0x10
- mov r4, r4, lsl #0xc
- str r4, [sp, #0x24]
- cmp r3, #0x0
- beq _020B1E00
- ldr r5, [r7, #0x0]
- and r6, r5, #0x300
- cmp r6, #0x100
- beq _020B1C1C
- cmp r6, #0x300
- beq _020B1C1C
- and r4, r5, #0x30000000
- orr r6, r6, r4
-_020B1C1C:
- cmp r6, #0x300
- bne _020B1C70
- ldr r4, _020B1E8C ; =0xC000C000
- ldr r8, _020B1E90 ; =UNK_020FF8AC
- and r5, r5, r4
- and r4, r5, #0xc000
- mov r6, r4, asr #0xe
- and r4, r5, #0xc0000000
- mov r4, r4, lsr #0x1e
- mov r4, r4, lsl #0x1
- add r8, r8, r6, lsl #0x3
- ldrh r9, [r4, r8]
- ldr r8, _020B1E94 ; =UNK_020FF894
- ldr r5, [sp, #0x20]
- add r6, r8, r6, lsl #0x3
- add r5, r5, r9, lsl #0xb
- str r5, [sp, #0x20]
- ldrh r4, [r4, r6]
- ldr r5, [sp, #0x24]
- add r4, r5, r4, lsl #0xb
- str r4, [sp, #0x24]
-_020B1C70:
- ldr r4, [sp, #0x60]
- ldr r5, [r3, #0x8]
- cmp r4, #0x0
- ldrne r8, [sp, #0x8]
- add r4, sp, #0x20
- ldreq r8, [sp, #0xc]
- mov r6, r4
- cmp r8, #0x300
- ldreq r9, [sp, #0x10]
- mov r12, #0x1000
- ldrne r9, [sp, #0x14]
- cmp r4, r4
- ldr r4, [sp, #0x24]
- addeq r6, sp, #0x28
- smull r11, r4, r5, r4
- adds r5, r11, r12
- adc r11, r4, #0x0
- ldr r4, [r3, #0x0]
- ldr lr, [sp, #0x20]
- smlal r5, r11, r4, lr
- mov r4, r5, lsr #0xc
- orr r4, r4, r11, lsl #0x14
- str r4, [r6, #0x0]
- ldr r4, [r3, #0xc]
- ldr r5, [sp, #0x24]
- ldr lr, [r3, #0x4]
- smull r11, r5, r4, r5
- adds r11, r11, r12
- adc r4, r5, #0x0
- add r5, sp, #0x28
- cmp r6, r5
- ldr r5, [sp, #0x20]
- smlal r11, r4, lr, r5
- mov r5, r11, lsr #0xc
- orr r5, r5, r4, lsl #0x14
- str r5, [r6, #0x4]
- ldreq r5, [sp, #0x28]
- ldreq r4, [sp, #0x2c]
- streq r5, [sp, #0x20]
- streq r4, [sp, #0x24]
- cmp r8, #0x100
- beq _020B1D38
- cmp r8, #0x300
- beq _020B1D38
- ldr r5, [r7, #0x0]
- ldr r4, _020B1E98 ; =0xC1FFFCFF
- and r4, r5, r4
- orr r4, r4, r8
- str r4, [r7, #0x0]
- b _020B1D54
-_020B1D38:
- ldr r5, [r7, #0x0]
- ldr r4, _020B1E98 ; =0xC1FFFCFF
- and r4, r5, r4
- orr r5, r4, r8
- ldr r4, [sp, #0x4]
- orr r4, r4, r5
- str r4, [r7, #0x0]
-_020B1D54:
- ldr r6, [r7, #0x0]
- ldr r5, _020B1E8C ; =0xC000C000
- cmp r9, #0x0
- and r8, r6, r5
- and r5, r8, #0xc000
- mov r6, r5, asr #0xe
- and r5, r8, #0xc0000000
- ldr r8, _020B1E90 ; =UNK_020FF8AC
- mov r5, r5, lsr #0x1e
- mov r5, r5, lsl #0x1
- add r8, r8, r6, lsl #0x3
- ldrh r9, [r5, r8]
- ldr r8, _020B1E94 ; =UNK_020FF894
- ldr r4, [sp, #0x20]
- add r6, r8, r6, lsl #0x3
- mov r11, r9, asr #0x1
- ldrh r5, [r5, r6]
- mov r8, r11, lsl #0xc
- ldr r6, [r3, #0x0]
- rsb r12, r8, #0x0
- mov r9, r5, asr #0x1
- mla r12, r6, r11, r12
- ldr r5, [r3, #0x8]
- mla r6, r5, r9, r12
- add r6, r4, r6
- str r6, [sp, #0x20]
- ldr r12, [r3, #0x4]
- mov r5, r9, lsl #0xc
- str r12, [sp, #0x1c]
- ldr r12, [r3, #0xc]
- rsb lr, r5, #0x0
- str r12, [sp, #0x18]
- ldr r12, [sp, #0x1c]
- ldr r4, [sp, #0x24]
- mla r11, r12, r11, lr
- ldr r12, [sp, #0x18]
- subne r6, r6, r8
- mla r9, r12, r9, r11
- add r4, r4, r9
- str r4, [sp, #0x24]
- subne r4, r4, r5
- strne r6, [sp, #0x20]
- strne r4, [sp, #0x24]
-_020B1E00:
- cmp r10, #0x0
- beq _020B1E28
- ldr r6, [sp, #0x20]
- ldr r4, [r10, #0x0]
- ldr r5, [sp, #0x24]
- add r4, r6, r4
- str r4, [sp, #0x20]
- ldr r4, [r10, #0x4]
- add r4, r5, r4
- str r4, [sp, #0x24]
-_020B1E28:
- ldr r4, [sp, #0x20]
- ldr r6, [r7, #0x0]
- add r5, r4, #0x800
- ldr r4, _020B1E9C ; =0x000001FF
- and r4, r4, r5, asr #0xc
- ldr r5, _020B1EA0 ; =0xFE00FF00
- and r6, r6, r5
- ldr r5, [sp, #0x24]
- add r5, r5, #0x800
- mov r5, r5, asr #0xc
- and r5, r5, #0xff
- orr r5, r6, r5
- orr r4, r5, r4, lsl #0x10
- str r4, [r7, #0x0]
-_020B1E60:
- ldr r4, [sp, #0x0]
- add r4, r4, #0x1
- mov r4, r4, lsl #0x10
- mov r4, r4, lsr #0x10
- str r4, [sp, #0x0]
- cmp r4, r1
- blo _020B1B54
-_020B1E7C:
- mov r0, r1
- add sp, sp, #0x34
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B1E88: .word 0x01FF0000
-_020B1E8C: .word 0xC000C000
-_020B1E90: .word UNK_020FF8AC
-_020B1E94: .word UNK_020FF894
-_020B1E98: .word 0xC1FFFCFF
-_020B1E9C: .word 0x000001FF
-_020B1EA0: .word 0xFE00FF00
-
- arm_func_start FUN_020B1EA4
-FUN_020B1EA4: ; 0x020B1EA4
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020B0518
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- mov r0, r4
- bl FUN_020B1FC4
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B1EC4
-FUN_020B1EC4: ; 0x020B1EC4
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020B0534
- cmp r0, #0x0
- ldmeqia sp!, {r4,pc}
- mov r0, r4
- bl FUN_020B1FC4
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B1EE4
-FUN_020B1EE4: ; 0x020B1EE4
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl FUN_020B0438
- mov r0, r4
- bl FUN_020B1FC4
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B1EFC
-FUN_020B1EFC: ; 0x020B1EFC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x14
- mov r4, r2
- ldr r2, [r4, #0xc]
- mov r5, r1
- ldr r1, [r2, #0x0]
- ldr r2, [sp, #0x34]
- str r1, [sp, #0x0]
- ldr r1, [sp, #0x38]
- str r2, [sp, #0x4]
- mov r6, r3
- mov r7, r0
- ldr r12, [sp, #0x3c]
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x28]
- ldr r2, [sp, #0x2c]
- ldr r3, [sp, #0x30]
- mov r0, r6
- str r12, [sp, #0xc]
- bl FUN_020B45F0
- str r6, [r7, #0x34]
- str r4, [r7, #0x30]
- add r0, r7, #0x38
- mov r1, #0x1
- str r6, [r7, #0x34]
- bl FUN_020B1A68
- mov r0, r7
- bl FUN_020B04C0
- mov r0, r7
- mov r1, r5
- bl FUN_020B1EE4
- add sp, sp, #0x14
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B1F80
-FUN_020B1F80: ; 0x020B1F80
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- str r2, [r5, #0x30]
- mvn r2, #0x0
- add r0, r5, #0x38
- mov r1, #0x1
- str r2, [r5, #0x34]
- bl FUN_020B1A68
- mov r0, r5
- bl FUN_020B04C0
- mov r0, r5
- mov r1, r4
- bl FUN_020B1EE4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020B1FC4
-FUN_020B1FC4: ; 0x020B1FC4
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r1, [r5, #0x0]
- ldrh r1, [r1, #0x4]
- cmp r1, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- bl FUN_020B06E0
- mov r4, r0
- ldr r7, [r5, #0x30]
- ldrh r1, [r4, #0x0]
- mov r0, r7
- bl FUN_020AFE8C
- str r0, [r5, #0x2c]
- ldr r1, [r5, #0x18]
- add r0, r5, #0x38
- ldr r2, [r1, #0x4]
- mov r1, #0x1
- and r6, r2, #0xff
- bl FUN_020B1A68
- cmp r6, #0x0
- beq _020B2068
- cmp r6, #0x2
- bne _020B203C
- ldrsh r1, [r4, #0x4]
- ldrsh r2, [r4, #0x6]
- add r0, r5, #0x38
- bl FUN_020B1AB4
- b _020B2068
-_020B203C:
- ldr r1, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r0, r5, #0x38
- bl FUN_020B1A78
- ldrh r1, [r4, #0x2]
- add r0, r5, #0x38
- bl FUN_020B1A98
- ldrsh r1, [r4, #0xc]
- ldrsh r2, [r4, #0xe]
- add r0, r5, #0x38
- bl FUN_020B1AB4
-_020B2068:
- ldr r2, [r7, #0xc]
- cmp r2, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- ldr r1, [r5, #0x34]
- mvn r0, #0x0
- cmp r1, r0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- ldrh r1, [r4, #0x0]
- ldr r2, [r2, #0x4]
- ldr r0, [r5, #0x34]
- add r3, r2, r1, lsl #0x3
- ldr r1, [r2, r1, lsl #0x3]
- ldr r2, [r3, #0x4]
- bl FUN_020B4400
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B20C8
-FUN_020B20C8: ; 0x020B20C8
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- mov r6, #0x0
- str r6, [r0, #0x38]
- ldr r7, [sp, #0x30]
- str r6, [r0, #0x30]
- mov r10, r1
- str r7, [r0, #0x34]
- str r0, [sp, #0x0]
- movs r8, r3
- mov r9, r2
- str r10, [r0, #0x3c]
- ldr r11, [sp, #0x34]
- beq _020B215C
- mov r0, #0x1
- str r6, [sp, #0x8]
- str r0, [sp, #0x4]
-_020B210C:
- mov r0, #0x28
- mul r4, r6, r0
- ldr r1, [sp, #0x4]
- add r0, r10, r4
- bl FUN_020B1AD4
- mov r0, #0x54
- mla r5, r6, r0, r9
- ldr r1, [sp, #0x8]
- mov r0, r7
- str r5, [r10, r4]
- bl FUN_020AFC04
- mov r1, r0
- mov r0, r5
- mov r2, r11
- bl FUN_020B1F80
- add r0, r6, #0x1
- mov r0, r0, lsl #0x10
- mov r6, r0, lsr #0x10
- cmp r6, r8
- blo _020B210C
-_020B215C:
- ldr r0, [sp, #0x0]
- bl FUN_020B04C0
- ldr r0, [sp, #0x0]
- ldr r3, [sp, #0x38]
- ldr r2, [sp, #0x0]
- add r0, r0, #0x44
- mov r1, #0x1
- str r3, [r2, #0x40]
- bl FUN_020B1A68
- ldr r0, [sp, #0x0]
- mov r1, #0x0
- strh r1, [r0, #0x2c]
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B2194
-FUN_020B2194: ; 0x020B2194
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- bl FUN_020B0518
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- mov r0, r7
- bl FUN_020B06E0
- mov r4, r0
- ldrh r1, [r4, #0x0]
- ldr r0, [r7, #0x40]
- bl FUN_020AFF34
- ldr r1, [r7, #0x18]
- mov r6, r0
- ldr r1, [r1, #0x4]
- add r0, r7, #0x44
- and r5, r1, #0xff
- mov r1, #0x1
- bl FUN_020B1A68
- cmp r5, #0x0
- beq _020B2234
- cmp r5, #0x2
- bne _020B2208
- ldrsh r1, [r4, #0x4]
- ldrsh r2, [r4, #0x6]
- add r0, r7, #0x44
- bl FUN_020B1AB4
- b _020B2234
-_020B2208:
- ldr r1, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r0, r7, #0x44
- bl FUN_020B1A78
- ldrh r1, [r4, #0x2]
- add r0, r7, #0x44
- bl FUN_020B1A98
- ldrsh r1, [r4, #0xc]
- ldrsh r2, [r4, #0xe]
- add r0, r7, #0x44
- bl FUN_020B1AB4
-_020B2234:
- ldrh r2, [r7, #0x2c]
- mov r1, r6
- add r0, r7, #0x30
- bl FUN_020B24E0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B224C
-FUN_020B224C: ; 0x020B224C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r4, r0
- ldr r2, [r4, #0x0]
- mov r6, r1
- ldrh r5, [r2, #0x4]
- bl FUN_020B0534
- cmp r0, #0x0
- beq _020B2318
- ldrh r1, [r4, #0x2c]
- mov r0, r4
- add r1, r1, r5
- strh r1, [r4, #0x2c]
- bl FUN_020B06E0
- mov r5, r0
- ldrh r1, [r5, #0x0]
- ldr r0, [r4, #0x40]
- bl FUN_020AFF34
- ldr r1, [r4, #0x18]
- mov r7, r0
- ldr r1, [r1, #0x4]
- add r0, r4, #0x44
- and r6, r1, #0xff
- mov r1, #0x1
- bl FUN_020B1A68
- cmp r6, #0x0
- beq _020B2300
- cmp r6, #0x2
- bne _020B22D4
- ldrsh r1, [r5, #0x4]
- ldrsh r2, [r5, #0x6]
- add r0, r4, #0x44
- bl FUN_020B1AB4
- b _020B2300
-_020B22D4:
- ldr r1, [r5, #0x4]
- ldr r2, [r5, #0x8]
- add r0, r4, #0x44
- bl FUN_020B1A78
- ldrh r1, [r5, #0x2]
- add r0, r4, #0x44
- bl FUN_020B1A98
- ldrsh r1, [r5, #0xc]
- ldrsh r2, [r5, #0xe]
- add r0, r4, #0x44
- bl FUN_020B1AB4
-_020B2300:
- ldrh r2, [r4, #0x2c]
- mov r1, r7
- add r0, r4, #0x30
- bl FUN_020B24E0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-_020B2318:
- mov r1, r6
- add r0, r4, #0x30
- bl FUN_020B232C
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B232C
-FUN_020B232C: ; 0x020B232C
- stmdb sp!, {r4-r8,lr}
- mov r7, r0
- ldr r0, [r7, #0x8]
- mov r6, r1
- cmp r0, #0x1
- bne _020B238C
- ldr r0, [r7, #0x0]
- ldr r4, [r7, #0xc]
- ldrh r0, [r0, #0x2]
- mov r5, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r8,pc}
- mov r8, #0x58
-_020B2360:
- mla r0, r5, r8, r4
- mov r1, r6
- bl FUN_020B1EC4
- ldr r1, [r7, #0x0]
- add r0, r5, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r1, #0x2]
- mov r5, r0, lsr #0x10
- cmp r5, r1
- blo _020B2360
- ldmia sp!, {r4-r8,pc}
-_020B238C:
- ldr r0, [r7, #0x0]
- ldr r4, [r7, #0xc]
- ldrh r0, [r0, #0x0]
- mov r5, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r8,pc}
- mov r8, #0x28
-_020B23A8:
- mul r0, r5, r8
- ldr r0, [r4, r0]
- mov r1, r6
- bl FUN_020B1EC4
- ldr r1, [r7, #0x0]
- add r0, r5, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r1, #0x0]
- mov r5, r0, lsr #0x10
- cmp r5, r1
- blo _020B23A8
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B23D8
-FUN_020B23D8: ; 0x020B23D8
- stmdb sp!, {r4-r6,lr}
- mov r5, r0
- ldrh r0, [r5, #0x0]
- mov r4, #0x0
- mov r6, r4
- cmp r0, #0x0
- bls _020B2424
-_020B23F4:
- mov r0, r5
- mov r1, r6
- bl FUN_020AFF34
- ldrh r0, [r0, #0x0]
- ldrh r1, [r5, #0x0]
- cmp r0, r4
- movhi r4, r0
- add r0, r6, #0x1
- mov r0, r0, lsl #0x10
- mov r6, r0, lsr #0x10
- cmp r6, r1
- blo _020B23F4
-_020B2424:
- mov r0, r4
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020B242C
-FUN_020B242C: ; 0x020B242C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- bl FUN_020B0438
- mov r1, #0x0
- mov r0, r7
- strh r1, [r7, #0x2c]
- bl FUN_020B06E0
- mov r4, r0
- ldrh r1, [r4, #0x0]
- ldr r0, [r7, #0x40]
- bl FUN_020AFF34
- ldr r1, [r7, #0x18]
- mov r6, r0
- ldr r1, [r1, #0x4]
- add r0, r7, #0x44
- and r5, r1, #0xff
- mov r1, #0x1
- bl FUN_020B1A68
- cmp r5, #0x0
- beq _020B24C8
- cmp r5, #0x2
- bne _020B249C
- ldrsh r1, [r4, #0x4]
- ldrsh r2, [r4, #0x6]
- add r0, r7, #0x44
- bl FUN_020B1AB4
- b _020B24C8
-_020B249C:
- ldr r1, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r0, r7, #0x44
- bl FUN_020B1A78
- ldrh r1, [r4, #0x2]
- add r0, r7, #0x44
- bl FUN_020B1A98
- ldrsh r1, [r4, #0xc]
- ldrsh r2, [r4, #0xe]
- add r0, r7, #0x44
- bl FUN_020B1AB4
-_020B24C8:
- ldrh r2, [r7, #0x2c]
- mov r1, r6
- add r0, r7, #0x30
- bl FUN_020B24E0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B24E0
-FUN_020B24E0: ; 0x020B24E0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x14
- mov r10, r1
- str r0, [sp, #0x0]
- str r10, [r0, #0x0]
- ldr r0, [r0, #0x8]
- mov r9, r2
- cmp r0, #0x1
- bne _020B2654
- ldrh r1, [r10, #0x2]
- ldr r0, [sp, #0x0]
- mov r4, #0x0
- ldr r8, [r0, #0xc]
- cmp r1, #0x0
- bls _020B2544
- mov r3, r4
- mov r0, #0x58
-_020B2524:
- mla r1, r4, r0, r8
- str r3, [r1, #0x54]
- add r1, r4, #0x1
- mov r1, r1, lsl #0x10
- ldrh r2, [r10, #0x2]
- mov r4, r1, lsr #0x10
- cmp r4, r2
- blo _020B2524
-_020B2544:
- ldrh r0, [r10, #0x0]
- mov r5, #0x0
- cmp r0, #0x0
- addls sp, sp, #0x14
- ldmlsia sp!, {r4-r11,pc}
- str r5, [sp, #0x4]
- mov r11, #0x1
-_020B2560:
- ldr r0, [r10, #0x4]
- mov r1, #0x58
- add r7, r0, r5, lsl #0x3
- ldrh r0, [r7, #0x6]
- and r0, r0, #0xff00
- mov r0, r0, lsl #0x8
- mov r0, r0, lsr #0x10
- mla r6, r0, r1, r8
- ldr r0, [r6, #0x54]
- cmp r0, #0x0
- bne _020B2634
- ldr r0, [sp, #0x0]
- ldrh r1, [r7, #0x0]
- ldr r0, [r0, #0x4]
- bl FUN_020AFC04
- mov r4, r0
- mov r0, r6
- mov r1, r4
- bl FUN_020B1EE4
- str r11, [r6, #0x8]
- ldrh r0, [r7, #0x6]
- and r0, r0, #0xf
- cmp r0, #0x1
- bne _020B2630
- ldrh r1, [r4, #0x0]
- ldr r7, [sp, #0x4]
- mov r3, r7
- cmp r1, #0x0
- bls _020B25F0
- ldr r2, [r4, #0xc]
-_020B25D8:
- add r0, r2, r3, lsl #0x3
- ldrh r0, [r0, #0x4]
- add r3, r3, #0x1
- cmp r3, r1
- add r7, r7, r0
- blo _020B25D8
-_020B25F0:
- mov r0, r6
- bl FUN_020B0408
- cmp r0, #0x0
- beq _020B261C
- mov r0, r9
- mov r1, r7
- bl _u32_div_f
- mov r0, r6
- mov r1, r1, lsl #0xc
- bl FUN_020B1EC4
- b _020B2630
-_020B261C:
- cmp r9, r7
- movcc r7, r9
- mov r0, r6
- mov r1, r7, lsl #0xc
- bl FUN_020B1EC4
-_020B2630:
- str r11, [r6, #0x54]
-_020B2634:
- add r0, r5, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r10, #0x0]
- mov r5, r0, lsr #0x10
- cmp r5, r1
- blo _020B2560
- add sp, sp, #0x14
- ldmia sp!, {r4-r11,pc}
-_020B2654:
- ldrh r1, [r10, #0x0]
- ldr r0, [sp, #0x0]
- mov r4, #0x0
- cmp r1, #0x0
- ldr r11, [r0, #0xc]
- addls sp, sp, #0x14
- ldmlsia sp!, {r4-r11,pc}
- mov r0, #0x1
- str r4, [sp, #0xc]
- str r0, [sp, #0x8]
-_020B267C:
- mov r0, #0x28
- mul r2, r4, r0
- ldr r3, [r10, #0x4]
- mov r0, r4, lsl #0x3
- ldrh r1, [r3, r0]
- ldr r0, [sp, #0x0]
- ldr r6, [r11, r2]
- ldr r0, [r0, #0x4]
- add r7, r3, r4, lsl #0x3
- bl FUN_020AFC04
- mov r5, r0
- mov r0, r6
- mov r1, r5
- bl FUN_020B1EE4
- ldr r0, [sp, #0x8]
- str r0, [r6, #0x8]
- ldrh r0, [r7, #0x6]
- and r0, r0, #0xf
- cmp r0, #0x1
- bne _020B2740
- ldrh r1, [r5, #0x0]
- ldr r8, [sp, #0xc]
- mov r0, r8
- cmp r1, #0x0
- bls _020B2700
- ldr r3, [r5, #0xc]
-_020B26E4:
- add r1, r3, r0, lsl #0x3
- ldrh r2, [r1, #0x4]
- add r0, r0, #0x1
- ldrh r1, [r5, #0x0]
- add r8, r8, r2
- cmp r0, r1
- blo _020B26E4
-_020B2700:
- mov r0, r6
- bl FUN_020B0408
- cmp r0, #0x0
- beq _020B272C
- mov r0, r9
- mov r1, r8
- bl _u32_div_f
- mov r0, r6
- mov r1, r1, lsl #0xc
- bl FUN_020B1EC4
- b _020B2740
-_020B272C:
- cmp r9, r8
- movcc r8, r9
- mov r0, r6
- mov r1, r8, lsl #0xc
- bl FUN_020B1EC4
-_020B2740:
- mov r0, #0x28
- mla r3, r4, r0, r11
- ldr r0, [sp, #0x8]
- str r0, [r3, #0x8]
- ldrsh r1, [r7, #0x2]
- ldrsh r2, [r7, #0x4]
- add r0, r3, #0xc
- bl FUN_020B1AB4
- add r0, r4, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r10, #0x0]
- mov r4, r0, lsr #0x10
- cmp r4, r1
- blo _020B267C
- add sp, sp, #0x14
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start thunk_FUN_020b5040
-thunk_FUN_020b5040: ; 0x020B2780
- ldr ip, _020B2788 ; =FUN_020B5040
- bx r12
- .balign 4
-_020B2788: .word FUN_020B5040
-
- arm_func_start FUN_020B278C
-FUN_020B278C:
- ldr r0, [r0, #0x78]
- bx lr
-
- arm_func_start FUN_020B2794
-FUN_020B2794: ; 0x020B2794
- stmdb sp!, {lr}
- sub sp, sp, #0x1c
- ldr r2, _020B2894 ; =UNK_021CDD70
- mov lr, #0x0
- ldr r12, [r2, #0x0]
- ldr r3, _020B2898 ; =UNK_021CDEF4
- mov r2, #0x18
- str r1, [sp, #0x0]
- str r1, [sp, #0xc]
- mla r1, r12, r2, r3
- rsb r3, r0, #0x0
- str r0, [sp, #0x4]
- add r0, sp, #0x0
- mov r2, r1
- str r3, [sp, #0x8]
- str lr, [sp, #0x10]
- str lr, [sp, #0x14]
- bl FUN_020B423C
- ldr r0, _020B2894 ; =UNK_021CDD70
- ldr r1, _020B289C ; =UNK_021CE1F4
- ldr r2, [r0, #0x0]
- mov r0, #0x18
- mla r1, r2, r0, r1
- add r0, sp, #0x0
- mov r2, r1
- bl FUN_020B423C
- ldr r0, _020B28A0 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020B2824
- ldr r1, _020B28A4 ; =UNK_02106570
- ldr r0, _020B28A8 ; =0x0000FFFE
- ldrh r1, [r1, #0x0]
- cmp r1, r0
- movne r0, #0x1
- bne _020B2828
-_020B2824:
- mov r0, #0x0
-_020B2828:
- cmp r0, #0x0
- ldreq r1, _020B2894 ; =UNK_021CDD70
- ldreq r0, _020B28A4 ; =UNK_02106570
- ldreq r1, [r1, #0x0]
- streqh r1, [r0, #0x0]
- ldr r0, _020B2894 ; =UNK_021CDD70
- ldr r1, _020B28AC ; =UNK_021CDDF4
- ldr r0, [r0, #0x0]
- mov r0, r0, lsl #0x10
- add r12, r1, r0, lsr #0xd
- ldrh r0, [r12, #0x4]
- cmp r0, #0x3
- addls pc, pc, r0, lsl #0x2
- b _020B288C
- ; Jump table
- b _020B2870 ; case 0
- b _020B288C ; case 1
- b _020B2870 ; case 2
- b _020B2870 ; case 3
-_020B2870:
- ldr r0, _020B28B0 ; =UNK_021CDD64
- mov r1, #0x1
- ldrh r3, [r0, #0x0]
- add r2, r3, #0x1
- strh r2, [r0, #0x0]
- strh r3, [r12, #0x2]
- strh r1, [r12, #0x4]
-_020B288C:
- add sp, sp, #0x1c
- ldmia sp!, {pc}
- .balign 4
-_020B2894: .word UNK_021CDD70
-_020B2898: .word UNK_021CDEF4
-_020B289C: .word UNK_021CE1F4
-_020B28A0: .word UNK_021CDD68
-_020B28A4: .word UNK_02106570
-_020B28A8: .word 0x0000FFFE
-_020B28AC: .word UNK_021CDDF4
-_020B28B0: .word UNK_021CDD64
-
- arm_func_start FUN_020B28B4
-FUN_020B28B4: ; 0x020B28B4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x1c
- ldr r2, _020B29E8 ; =UNK_021CDD70
- mov r12, #0x0
- ldr r3, [r2, #0x0]
- mov r4, r1
- ldr r2, _020B29EC ; =UNK_021CDEF4
- mov r1, #0x18
- mla r1, r3, r1, r2
- mov r5, r0
- add r0, sp, #0x0
- mov r2, r1
- str r5, [sp, #0x0]
- str r12, [sp, #0x4]
- str r12, [sp, #0x8]
- str r4, [sp, #0xc]
- str r12, [sp, #0x10]
- str r12, [sp, #0x14]
- bl FUN_020B423C
- mov r0, r5
- bl FX_Inv
- mov r1, #0x0
- str r0, [sp, #0x0]
- mov r0, r4
- str r1, [sp, #0x4]
- str r1, [sp, #0x8]
- bl FX_Inv
- mov r3, #0x0
- ldr r1, _020B29E8 ; =UNK_021CDD70
- str r0, [sp, #0xc]
- ldr r2, [r1, #0x0]
- ldr r1, _020B29F0 ; =UNK_021CE1F4
- mov r0, #0x18
- mla r1, r2, r0, r1
- add r0, sp, #0x0
- mov r2, r1
- str r3, [sp, #0x10]
- str r3, [sp, #0x14]
- bl FUN_020B423C
- ldr r0, _020B29F4 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020B2978
- ldr r1, _020B29F8 ; =UNK_02106570
- ldr r0, _020B29FC ; =0x0000FFFE
- ldrh r1, [r1, #0x0]
- cmp r1, r0
- movne r0, #0x1
- bne _020B297C
-_020B2978:
- mov r0, #0x0
-_020B297C:
- cmp r0, #0x0
- ldreq r1, _020B29E8 ; =UNK_021CDD70
- ldreq r0, _020B29F8 ; =UNK_02106570
- ldreq r1, [r1, #0x0]
- streqh r1, [r0, #0x0]
- ldr r0, _020B29E8 ; =UNK_021CDD70
- ldr r1, _020B2A00 ; =UNK_021CDDF4
- ldr r0, [r0, #0x0]
- mov r0, r0, lsl #0x10
- add r12, r1, r0, lsr #0xd
- ldrh r0, [r12, #0x4]
- cmp r0, #0x3
- addls pc, pc, r0, lsl #0x2
- b _020B29E0
- ; Jump table
- b _020B29C4 ; case 0
- b _020B29E0 ; case 1
- b _020B29C4 ; case 2
- b _020B29C4 ; case 3
-_020B29C4:
- ldr r0, _020B2A04 ; =UNK_021CDD64
- mov r1, #0x1
- ldrh r3, [r0, #0x0]
- add r2, r3, #0x1
- strh r2, [r0, #0x0]
- strh r3, [r12, #0x2]
- strh r1, [r12, #0x4]
-_020B29E0:
- add sp, sp, #0x1c
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B29E8: .word UNK_021CDD70
-_020B29EC: .word UNK_021CDEF4
-_020B29F0: .word UNK_021CE1F4
-_020B29F4: .word UNK_021CDD68
-_020B29F8: .word UNK_02106570
-_020B29FC: .word 0x0000FFFE
-_020B2A00: .word UNK_021CDDF4
-_020B2A04: .word UNK_021CDD64
-
- arm_func_start FUN_020B2A08
-FUN_020B2A08: ; 0x020B2A08
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x1c
- ldr r3, _020B2AEC ; =UNK_021CDD68
- mov r4, r2
- ldr r2, [r3, #0x0]
- cmp r2, #0x0
- beq _020B2A6C
- ldr r2, _020B2AF0 ; =UNK_021CDD70
- mov r3, #0x18
- ldr r2, [r2, #0x0]
- ldr lr, _020B2AF4 ; =UNK_021CDF04
- mul r5, r2, r3
- ldr r3, [lr, r5]
- ldr ip, _020B2AF8 ; =UNK_021CDF08
- add r0, r3, r0
- str r0, [lr, r5]
- ldr r0, [r12, r5]
- ldr r3, _020B2AFC ; =UNK_021CDD74
- add r0, r0, r1
- str r0, [r12, r5]
- ldr r0, [r3, r2, lsl #0x2]
- add sp, sp, #0x1c
- add r0, r0, r4
- str r0, [r3, r2, lsl #0x2]
- ldmia sp!, {r4-r5,pc}
-_020B2A6C:
- ldr r2, _020B2AF0 ; =UNK_021CDD70
- mov lr, #0x1000
- ldr r12, [r2, #0x0]
- ldr r3, _020B2B00 ; =UNK_021CDEF4
- mov r2, #0x18
- str r1, [sp, #0x14]
- mla r1, r12, r2, r3
- mov r3, #0x0
- str r0, [sp, #0x10]
- add r0, sp, #0x0
- mov r2, r1
- str lr, [sp, #0x0]
- str r3, [sp, #0x4]
- str r3, [sp, #0x8]
- str lr, [sp, #0xc]
- bl FUN_020B423C
- ldr r0, _020B2AF0 ; =UNK_021CDD70
- ldr r1, _020B2B04 ; =UNK_021CE1F4
- ldr r2, [r0, #0x0]
- mov r0, #0x18
- mla r1, r2, r0, r1
- add r0, sp, #0x0
- mov r2, r1
- bl FUN_020B423C
- ldr r0, _020B2AF0 ; =UNK_021CDD70
- ldr r2, _020B2AFC ; =UNK_021CDD74
- ldr r1, [r0, #0x0]
- ldr r0, [r2, r1, lsl #0x2]
- add r0, r0, r4
- str r0, [r2, r1, lsl #0x2]
- add sp, sp, #0x1c
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B2AEC: .word UNK_021CDD68
-_020B2AF0: .word UNK_021CDD70
-_020B2AF4: .word UNK_021CDF04
-_020B2AF8: .word UNK_021CDF08
-_020B2AFC: .word UNK_021CDD74
-_020B2B00: .word UNK_021CDEF4
-_020B2B04: .word UNK_021CE1F4
-
- arm_func_start FUN_020B2B08
-FUN_020B2B08: ; 0x020B2B08
- ldr r0, _020B2B4C ; =UNK_021CDD70
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- movle r0, #0x1
- movgt r0, #0x0
- cmp r0, #0x0
- bxne lr
- ldr r1, _020B2B4C ; =UNK_021CDD70
- ldr r0, _020B2B50 ; =UNK_02106570
- ldr r3, [r1, #0x0]
- ldrh r2, [r0, #0x0]
- sub r3, r3, #0x1
- str r3, [r1, #0x0]
- cmp r2, r3
- ldrgt r1, _020B2B54 ; =0x0000FFFE
- strgth r1, [r0, #0x0]
- bx lr
- .balign 4
-_020B2B4C: .word UNK_021CDD70
-_020B2B50: .word UNK_02106570
-_020B2B54: .word 0x0000FFFE
-
- arm_func_start FUN_020B2B58
-FUN_020B2B58: ; 0x020B2B58
- stmdb sp!, {r4-r10,lr}
- ldr r0, _020B2D74 ; =UNK_021CDD6C
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x7c]
- ands r0, r0, #0x1
- bne _020B2CA4
- ldr r0, _020B2D78 ; =UNK_021CDD70
- ldr r1, [r0, #0x0]
- mov r0, r1, lsl #0x10
- add r5, r1, #0x1
- cmp r5, #0x20
- mov r4, r0, lsr #0x10
- movlt r0, #0x1
- movge r0, #0x0
- cmp r0, #0x0
- beq _020B2C44
- ldr r0, _020B2D7C ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020B2BE4
- ldr r1, _020B2D78 ; =UNK_021CDD70
- mov r0, #0x18
- ldr r3, [r1, #0x0]
- ldr r1, _020B2D80 ; =UNK_021CDD74
- mul r8, r3, r0
- ldr r6, _020B2D84 ; =UNK_021CDF04
- mul r7, r5, r0
- ldr r2, [r6, r8]
- ldr r0, [r1, r3, lsl #0x2]
- ldr r3, _020B2D88 ; =UNK_021CDF08
- str r2, [r6, r7]
- ldr r2, [r3, r8]
- str r0, [r1, r5, lsl #0x2]
- str r2, [r3, r7]
- b _020B2C3C
-_020B2BE4:
- ldr r1, _020B2D78 ; =UNK_021CDD70
- mov r0, #0x18
- ldr r2, [r1, #0x0]
- ldr r7, _020B2D80 ; =UNK_021CDD74
- mul lr, r2, r0
- ldr r1, _020B2D8C ; =UNK_021CDEF4
- mul r12, r5, r0
- ldr r8, _020B2D90 ; =UNK_021CE1F4
- add r10, r1, lr
- ldr r6, [r7, r2, lsl #0x2]
- add r9, r1, r12
- ldmia r10!, {r0-r3}
- stmia r9!, {r0-r3}
- ldmia r10, {r0-r1}
- str r6, [r7, r5, lsl #0x2]
- add r7, r8, lr
- stmia r9, {r0-r1}
- add r6, r8, r12
- ldmia r7!, {r0-r3}
- stmia r6!, {r0-r3}
- ldmia r7, {r0-r1}
- stmia r6, {r0-r1}
-_020B2C3C:
- ldr r0, _020B2D78 ; =UNK_021CDD70
- str r5, [r0, #0x0]
-_020B2C44:
- ldr r0, _020B2D78 ; =UNK_021CDD70
- ldr r2, _020B2D94 ; =UNK_021CDDF4
- ldr r0, [r0, #0x0]
- mov r5, r4, lsl #0x3
- mov r0, r0, lsl #0x10
- mov r3, r0, lsr #0x10
- add r4, r2, r4, lsl #0x3
- mov r6, r3, lsl #0x3
- ldrh r1, [r2, r5]
- ldrh r0, [r4, #0x2]
- add r3, r2, r3, lsl #0x3
- strh r1, [r2, r6]
- strh r0, [r3, #0x2]
- ldrh r2, [r4, #0x4]
- ldrh r0, [r4, #0x6]
- ldr r1, _020B2D98 ; =UNK_021CDDF8
- strh r2, [r3, #0x4]
- strh r0, [r3, #0x6]
- ldrh r0, [r1, r5]
- cmp r0, #0x1
- moveq r0, #0x2
- streqh r0, [r1, r6]
- strneh r0, [r1, r6]
- ldmia sp!, {r4-r10,pc}
-_020B2CA4:
- ldr r0, _020B2D78 ; =UNK_021CDD70
- ldr r0, [r0, #0x0]
- add r4, r0, #0x1
- cmp r4, #0x20
- movlt r0, #0x1
- movge r0, #0x0
- cmp r0, #0x0
- ldmeqia sp!, {r4-r10,pc}
- ldr r0, _020B2D7C ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020B2D10
- ldr r1, _020B2D78 ; =UNK_021CDD70
- mov r0, #0x18
- ldr r3, [r1, #0x0]
- ldr r1, _020B2D80 ; =UNK_021CDD74
- mul r7, r3, r0
- ldr r5, _020B2D84 ; =UNK_021CDF04
- mul r6, r4, r0
- ldr r2, [r5, r7]
- ldr r0, [r1, r3, lsl #0x2]
- ldr r3, _020B2D88 ; =UNK_021CDF08
- str r2, [r5, r6]
- ldr r2, [r3, r7]
- str r0, [r1, r4, lsl #0x2]
- str r2, [r3, r6]
- b _020B2D68
-_020B2D10:
- ldr r1, _020B2D78 ; =UNK_021CDD70
- mov r0, #0x18
- ldr r2, [r1, #0x0]
- ldr ip, _020B2D80 ; =UNK_021CDD74
- mul r9, r2, r0
- ldr r1, _020B2D8C ; =UNK_021CDEF4
- mul r8, r4, r0
- ldr lr, _020B2D90 ; =UNK_021CE1F4
- add r6, r1, r9
- ldr r5, [r12, r2, lsl #0x2]
- add r7, r1, r8
- ldmia r6!, {r0-r3}
- stmia r7!, {r0-r3}
- ldmia r6, {r0-r1}
- add r6, lr, r9
- stmia r7, {r0-r1}
- add lr, lr, r8
- ldmia r6!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r6, {r0-r1}
- stmia lr, {r0-r1}
- str r5, [r12, r4, lsl #0x2]
-_020B2D68:
- ldr r0, _020B2D78 ; =UNK_021CDD70
- str r4, [r0, #0x0]
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020B2D74: .word UNK_021CDD6C
-_020B2D78: .word UNK_021CDD70
-_020B2D7C: .word UNK_021CDD68
-_020B2D80: .word UNK_021CDD74
-_020B2D84: .word UNK_021CDF04
-_020B2D88: .word UNK_021CDF08
-_020B2D8C: .word UNK_021CDEF4
-_020B2D90: .word UNK_021CE1F4
-_020B2D94: .word UNK_021CDDF4
-_020B2D98: .word UNK_021CDDF8
-
- arm_func_start FUN_020B2D9C
-FUN_020B2D9C: ; 0x020B2D9C
- stmdb sp!, {r4-r6,lr}
- mov r4, r0
- ldrh r0, [r4, #0x56]
- cmp r0, #0x0
- bne _020B2DBC
- add r0, r4, #0x30
- bl FUN_020B2E78
- ldmia sp!, {r4-r6,pc}
-_020B2DBC:
- bl FUN_020B2B58
- ldrh r0, [r4, #0x56]
- ands r0, r0, #0x8
- beq _020B2E0C
- ldr r0, _020B2E70 ; =UNK_021CDD6C
- ldrsh r6, [r4, #0x52]
- ldr r0, [r0, #0x0]
- ldrsh r5, [r4, #0x50]
- bl FUN_020B4F88
- cmp r0, #0x0
- ldr r0, _020B2E70 ; =UNK_021CDD6C
- rsbne r5, r5, #0x0
- ldr r0, [r0, #0x0]
- bl FUN_020B4F74
- cmp r0, #0x0
- rsbne r6, r6, #0x0
- mov r0, r5, lsl #0xc
- mov r1, r6, lsl #0xc
- mov r2, #0x0
- bl FUN_020B2A08
-_020B2E0C:
- ldrh r0, [r4, #0x56]
- ands r0, r0, #0x4
- beq _020B2E40
- ldrh r0, [r4, #0x54]
- ldr r2, _020B2E74 ; =UNK_020FFA38
- mov r0, r0, asr #0x4
- mov r1, r0, lsl #0x1
- add r0, r1, #0x1
- mov r3, r1, lsl #0x1
- mov r1, r0, lsl #0x1
- ldrsh r0, [r2, r3]
- ldrsh r1, [r2, r1]
- bl FUN_020B2794
-_020B2E40:
- ldrh r0, [r4, #0x56]
- ands r0, r0, #0x2
- beq _020B2E5C
- ldr r0, [r4, #0x48]
- ldr r1, [r4, #0x4c]
- mov r2, #0x1000
- bl FUN_020B28B4
-_020B2E5C:
- add r0, r4, #0x30
- bl FUN_020B2E78
- mov r0, #0x1
- bl FUN_020B2B08
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B2E70: .word UNK_021CDD6C
-_020B2E74: .word UNK_020FFA38
-
- arm_func_start FUN_020B2E78
-FUN_020B2E78: ; 0x020B2E78
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- mov r5, r0
- ldr r0, [r5, #0x8]
- cmp r0, #0x1
- bne _020B309C
- ldr r0, [r5, #0x0]
- mov r2, #0x0
- ldrh r0, [r0, #0x2]
- cmp r0, #0x0
- bls _020B2ED0
- ldr r3, _020B3174 ; =UNK_021CE8F4
- mov r4, r2
-_020B2EAC:
- add r0, r3, r2, lsl #0x2
- str r4, [r0, #0x4]
- ldr r0, [r5, #0x0]
- add r2, r2, #0x1
- ldrh r1, [r0, #0x2]
- mov r0, r2, lsl #0x10
- mov r2, r0, lsr #0x10
- cmp r2, r1
- blo _020B2EAC
-_020B2ED0:
- ldr r0, _020B3178 ; =UNK_021CDD6C
- mov r6, #0x1
- ldr r1, [r0, #0x0]
- ldr r0, _020B3174 ; =UNK_021CE8F4
- str r6, [r0, #0x404]
- ldr r0, [r1, #0x80]
- cmp r0, #0x0
- beq _020B2FD8
- bl FUN_020B4948
- str r0, [sp, #0x0]
- mov r0, r6
- bl FUN_020B497C
- ldr r0, _020B3178 ; =UNK_021CDD6C
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x80]
- bl FUN_020B4958
- ldr r2, [r5, #0x0]
- mov r7, #0x0
- ldrh r0, [r2, #0x0]
- cmp r0, #0x0
- bls _020B2FC0
- mov r11, r7
-_020B2F28:
- ldr r0, [r2, #0x4]
- ldr r9, [r5, #0xc]
- add r10, r0, r7, lsl #0x3
- ldrh r0, [r10, #0x6]
- and r0, r0, #0xff00
- mov r0, r0, lsl #0x8
- mov r8, r0, lsr #0x10
- ldr r0, _020B3174 ; =UNK_021CE8F4
- strh r8, [r0, #0x0]
- bl FUN_020B2B58
- ldr r0, _020B3178 ; =UNK_021CDD6C
- ldrsh r4, [r10, #0x4]
- ldr r0, [r0, #0x0]
- ldrsh r10, [r10, #0x2]
- bl FUN_020B4F88
- cmp r0, #0x0
- ldr r0, _020B3178 ; =UNK_021CDD6C
- rsbne r10, r10, #0x0
- ldr r0, [r0, #0x0]
- bl FUN_020B4F74
- cmp r0, #0x0
- rsbne r4, r4, #0x0
- mov r2, r11
- mov r0, r10, lsl #0xc
- mov r1, r4, lsl #0xc
- bl FUN_020B2A08
- mov r0, #0x58
- mla r0, r8, r0, r9
- bl FUN_020B3554
- mov r0, r6
- bl FUN_020B2B08
- ldr r2, [r5, #0x0]
- add r0, r7, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r2, #0x0]
- mov r7, r0, lsr #0x10
- cmp r7, r1
- blo _020B2F28
-_020B2FC0:
- mov r0, #0x0
- bl FUN_020B497C
- ldr r0, [sp, #0x0]
- bl FUN_020B4958
- bl FUN_020B4968
- b _020B3088
-_020B2FD8:
- ldr r2, [r5, #0x0]
- mov r7, #0x0
- ldrh r0, [r2, #0x0]
- cmp r0, #0x0
- bls _020B3088
- str r7, [sp, #0x4]
- mov r11, #0x58
-_020B2FF4:
- ldr r0, [r2, #0x4]
- ldr r9, [r5, #0xc]
- add r10, r0, r7, lsl #0x3
- ldrh r0, [r10, #0x6]
- and r0, r0, #0xff00
- mov r0, r0, lsl #0x8
- mov r8, r0, lsr #0x10
- ldr r0, _020B3174 ; =UNK_021CE8F4
- strh r8, [r0, #0x0]
- bl FUN_020B2B58
- ldr r0, _020B3178 ; =UNK_021CDD6C
- ldrsh r4, [r10, #0x4]
- ldr r0, [r0, #0x0]
- ldrsh r10, [r10, #0x2]
- bl FUN_020B4F88
- cmp r0, #0x0
- ldr r0, _020B3178 ; =UNK_021CDD6C
- rsbne r10, r10, #0x0
- ldr r0, [r0, #0x0]
- bl FUN_020B4F74
- cmp r0, #0x0
- rsbne r4, r4, #0x0
- ldr r2, [sp, #0x4]
- mov r0, r10, lsl #0xc
- mov r1, r4, lsl #0xc
- bl FUN_020B2A08
- mla r0, r8, r11, r9
- bl FUN_020B3554
- mov r0, r6
- bl FUN_020B2B08
- ldr r2, [r5, #0x0]
- add r0, r7, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r2, #0x0]
- mov r7, r0, lsr #0x10
- cmp r7, r1
- blo _020B2FF4
-_020B3088:
- ldr r0, _020B3174 ; =UNK_021CE8F4
- mov r1, #0x0
- str r1, [r0, #0x404]
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-_020B309C:
- ldr r0, _020B3178 ; =UNK_021CDD6C
- ldr r7, [r5, #0xc]
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x80]
- cmp r0, #0x0
- beq _020B312C
- bl FUN_020B4948
- mov r6, r0
- mov r0, #0x1
- bl FUN_020B497C
- ldr r0, _020B3178 ; =UNK_021CDD6C
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x80]
- bl FUN_020B4958
- ldr r0, [r5, #0x0]
- mov r4, #0x0
- ldrh r0, [r0, #0x0]
- cmp r0, #0x0
- bls _020B3110
- mov r8, #0x28
-_020B30EC:
- mla r0, r4, r8, r7
- bl FUN_020B3474
- ldr r1, [r5, #0x0]
- add r0, r4, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r1, #0x0]
- mov r4, r0, lsr #0x10
- cmp r4, r1
- blo _020B30EC
-_020B3110:
- mov r0, #0x0
- bl FUN_020B497C
- mov r0, r6
- bl FUN_020B4958
- bl FUN_020B4968
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-_020B312C:
- ldr r0, [r5, #0x0]
- mov r4, #0x0
- ldrh r0, [r0, #0x0]
- cmp r0, #0x0
- addls sp, sp, #0xc
- ldmlsia sp!, {r4-r11,pc}
- mov r6, #0x28
-_020B3148:
- mla r0, r4, r6, r7
- bl FUN_020B3474
- ldr r1, [r5, #0x0]
- add r0, r4, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r1, #0x0]
- mov r4, r0, lsr #0x10
- cmp r4, r1
- blo _020B3148
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B3174: .word UNK_021CE8F4
-_020B3178: .word UNK_021CDD6C
-
- arm_func_start FUN_020B317C
-FUN_020B317C: ; 0x020B317C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r1, _020B31EC ; =UNK_021CDD6C
- mov r5, r0
- ldr r1, [r1, #0x0]
- ldr r1, [r1, #0x80]
- cmp r1, #0x0
- beq _020B31E0
- bl FUN_020B4948
- mov r4, r0
- mov r0, #0x1
- bl FUN_020B497C
- ldr r0, _020B31EC ; =UNK_021CDD6C
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x80]
- bl FUN_020B4958
- mov r0, r5
- bl FUN_020B3554
- mov r0, #0x0
- bl FUN_020B497C
- mov r0, r4
- bl FUN_020B4958
- bl FUN_020B4968
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020B31E0:
- bl FUN_020B3554
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B31EC: .word UNK_021CDD6C
-
- arm_func_start FUN_020B31F0
-FUN_020B31F0: ; 0x020B31F0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020B3260 ; =0x04000448
- mov r2, #0x1
- ldr r0, _020B3264 ; =UNK_021CDD6C
- str r2, [r1, #0x0]
- ldr r2, [r0, #0x0]
- ldr r3, [r2, #0x7c]
- cmp r3, #0x0
- beq _020B324C
- ands r0, r3, #0x1
- ldrne r0, _020B3268 ; =UNK_021CDD68
- movne r1, #0x0
- strne r1, [r0, #0x0]
- ands r0, r3, #0x2
- beq _020B323C
- mov r0, #0x0
- str r0, [r2, #0x74]
- bl FUN_020B4DA0
-_020B323C:
- ldr r0, _020B3264 ; =UNK_021CDD6C
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- str r1, [r0, #0x7c]
-_020B324C:
- ldr r0, _020B3264 ; =UNK_021CDD6C
- mov r1, #0x0
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B3260: .word 0x04000448
-_020B3264: .word UNK_021CDD6C
-_020B3268: .word UNK_021CDD68
-
- arm_func_start FUN_020B326C
-FUN_020B326C: ; 0x020B326C
- stmdb sp!, {r4-r8,lr}
- ldr r5, _020B330C ; =UNK_021CDD60
- ldr r3, _020B3310 ; =UNK_021CDD6C
- ldrh r6, [r5, #0x0]
- ldr r2, _020B3314 ; =UNK_021CDD70
- mov r4, #0x0
- ldr r7, _020B3318 ; =0x0000FFFE
- ldr r1, _020B331C ; =UNK_02106570
- str r0, [r3, #0x0]
- str r4, [r2, #0x0]
- strh r7, [r1, #0x0]
- cmp r6, #0x0
- ble _020B32D0
- ldr r8, _020B3320 ; =UNK_021CE4F4
- mvn r7, #0x0
- mov r6, #0x10
-_020B32AC:
- mov r0, r7
- mov r2, r6
- add r1, r8, #0x10
- bl MIi_CpuClearFast
- ldrh r0, [r5, #0x0]
- add r4, r4, #0x1
- add r8, r8, #0x20
- cmp r4, r0
- blt _020B32AC
-_020B32D0:
- ldr r4, _020B330C ; =UNK_021CDD60
- mov r0, #0x0
- ldr r3, _020B3324 ; =UNK_021CDD64
- ldr r1, _020B3328 ; =UNK_021CDDF4
- mov r2, #0x100
- strh r0, [r4, #0x0]
- strh r0, [r3, #0x0]
- bl MIi_CpuClearFast
- ldr r1, _020B332C ; =0x04000444
- mov r2, #0x0
- ldr r0, _020B3330 ; =0x04000454
- str r2, [r1, #0x0]
- str r2, [r0, #0x0]
- bl FUN_020B4178
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020B330C: .word UNK_021CDD60
-_020B3310: .word UNK_021CDD6C
-_020B3314: .word UNK_021CDD70
-_020B3318: .word 0x0000FFFE
-_020B331C: .word UNK_02106570
-_020B3320: .word UNK_021CE4F4
-_020B3324: .word UNK_021CDD64
-_020B3328: .word UNK_021CDDF4
-_020B332C: .word 0x04000444
-_020B3330: .word 0x04000454
-
- arm_func_start FUN_020B3334
-FUN_020B3334: ; 0x020B3334
- stmdb sp!, {r4,lr}
- mov r4, r0
- mov r1, r4
- mov r0, #0x0
- mov r2, #0x48
- bl MIi_CpuClear16
- mov r0, #0x1
- str r0, [r4, #0x10]
- mov r0, #0x3
- ldr r1, _020B3380 ; =FUN_020B3EE0
- str r0, [r4, #0x14]
- ldr r0, _020B3384 ; =FUN_020B3E48
- str r1, [r4, #0x18]
- ldr r1, _020B3388 ; =FUN_020B3C40
- str r0, [r4, #0x1c]
- ldr r0, _020B338C ; =FUN_020B3B90
- str r1, [r4, #0x20]
- str r0, [r4, #0x24]
- ldmia sp!, {r4,pc}
- .balign 4
-_020B3380: .word FUN_020B3EE0
-_020B3384: .word FUN_020B3E48
-_020B3388: .word FUN_020B3C40
-_020B338C: .word FUN_020B3B90
-
- arm_func_start FUN_020B3390
-FUN_020B3390: ; 0x020B3390
- ldr r2, [r0, #0x70]
- str r2, [r1, #0x30]
- str r1, [r0, #0x70]
- bx lr
-
- arm_func_start FUN_020B33A0
-FUN_020B33A0: ; 0x020B33A0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r4, r0
- bl FUN_020B504C
- mov r7, #0x0
- str r7, [r4, #0x70]
- str r7, [r4, #0x74]
- str r7, [r4, #0x78]
- str r7, [r4, #0x7c]
- str r7, [r4, #0x80]
- str r7, [r4, #0x84]
- strh r7, [r4, #0x88]
- strh r7, [r4, #0x8a]
- str r7, [r4, #0x8c]
- str r7, [r4, #0x90]
- ldr r1, _020B3454 ; =UNK_021CDD70
- strh r7, [r4, #0x94]
- ldr r2, _020B3458 ; =0x0000FFFE
- ldr r0, _020B345C ; =UNK_02106570
- ldr r6, _020B3460 ; =UNK_021CE4F4
- str r7, [r1, #0x0]
- strh r2, [r0, #0x0]
- mvn r5, #0x0
- mov r4, #0x10
-_020B3400:
- mov r0, r5
- mov r2, r4
- add r1, r6, #0x10
- bl MIi_CpuClearFast
- add r7, r7, #0x1
- cmp r7, #0x20
- add r6, r6, #0x20
- blt _020B3400
- ldr ip, _020B3464 ; =UNK_021CDD60
- mov r0, #0x0
- ldr r3, _020B3468 ; =UNK_021CDD64
- ldr r1, _020B346C ; =UNK_021CDDF4
- mov r2, #0x100
- strh r0, [r12, #0x0]
- strh r0, [r3, #0x0]
- bl MIi_CpuClearFast
- ldr r0, _020B3470 ; =UNK_021CDD68
- mov r1, #0x0
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B3454: .word UNK_021CDD70
-_020B3458: .word 0x0000FFFE
-_020B345C: .word UNK_02106570
-_020B3460: .word UNK_021CE4F4
-_020B3464: .word UNK_021CDD60
-_020B3468: .word UNK_021CDD64
-_020B346C: .word UNK_021CDDF4
-_020B3470: .word UNK_021CDD68
-
- arm_func_start FUN_020B3474
-FUN_020B3474: ; 0x020B3474
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r0, [r5, #0x8]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- ldr r4, [r5, #0x0]
- bl FUN_020B2B58
- ldrh r0, [r5, #0x1e]
- ands r0, r0, #0x8
- beq _020B34E4
- ldr r0, _020B354C ; =UNK_021CDD6C
- ldrsh r7, [r5, #0x1a]
- ldr r0, [r0, #0x0]
- ldrsh r6, [r5, #0x18]
- bl FUN_020B4F88
- cmp r0, #0x0
- ldr r0, _020B354C ; =UNK_021CDD6C
- rsbne r6, r6, #0x0
- ldr r0, [r0, #0x0]
- bl FUN_020B4F74
- cmp r0, #0x0
- rsbne r7, r7, #0x0
- mov r0, r6, lsl #0xc
- mov r1, r7, lsl #0xc
- mov r2, #0x0
- bl FUN_020B2A08
-_020B34E4:
- ldrh r0, [r5, #0x1e]
- ands r0, r0, #0x4
- beq _020B3518
- ldrh r0, [r5, #0x1c]
- ldr r2, _020B3550 ; =UNK_020FFA38
- mov r0, r0, asr #0x4
- mov r1, r0, lsl #0x1
- add r0, r1, #0x1
- mov r3, r1, lsl #0x1
- mov r1, r0, lsl #0x1
- ldrsh r0, [r2, r3]
- ldrsh r1, [r2, r1]
- bl FUN_020B2794
-_020B3518:
- ldrh r0, [r5, #0x1e]
- ands r0, r0, #0x2
- beq _020B3534
- ldr r0, [r5, #0x10]
- ldr r1, [r5, #0x14]
- mov r2, #0x1000
- bl FUN_020B28B4
-_020B3534:
- mov r0, r4
- bl FUN_020B3554
- mov r0, #0x1
- bl FUN_020B2B08
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B354C: .word UNK_021CDD6C
-_020B3550: .word UNK_020FFA38
-
- arm_func_start FUN_020B3554
-FUN_020B3554:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldrh r0, [r5, #0x4a]
- ldr r4, [r5, #0x2c]
- cmp r0, #0x0
- bne _020B35C0
- ldr r2, [r5, #0x34]
- mvn r0, #0x0
- cmp r2, r0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020B35B0
- ldr r1, _020B36B4 ; =UNK_02106574
- mov r0, r4
- str r2, [r1, #0x0]
- bl FUN_020B36C0
- ldr r0, _020B36B4 ; =UNK_02106574
- mvn r1, #0x0
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-_020B35B0:
- mov r0, r4
- bl FUN_020B36C0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-_020B35C0:
- bl FUN_020B2B58
- ldrh r0, [r5, #0x4a]
- ands r0, r0, #0x8
- beq _020B3610
- ldr r0, _020B36B8 ; =UNK_021CDD6C
- ldrsh r7, [r5, #0x46]
- ldr r0, [r0, #0x0]
- ldrsh r6, [r5, #0x44]
- bl FUN_020B4F88
- cmp r0, #0x0
- ldr r0, _020B36B8 ; =UNK_021CDD6C
- rsbne r6, r6, #0x0
- ldr r0, [r0, #0x0]
- bl FUN_020B4F74
- cmp r0, #0x0
- rsbne r7, r7, #0x0
- mov r0, r6, lsl #0xc
- mov r1, r7, lsl #0xc
- mov r2, #0x0
- bl FUN_020B2A08
-_020B3610:
- ldrh r0, [r5, #0x4a]
- ands r0, r0, #0x4
- beq _020B3644
- ldrh r0, [r5, #0x48]
- ldr r2, _020B36BC ; =UNK_020FFA38
- mov r0, r0, asr #0x4
- mov r1, r0, lsl #0x1
- add r0, r1, #0x1
- mov r3, r1, lsl #0x1
- mov r1, r0, lsl #0x1
- ldrsh r0, [r2, r3]
- ldrsh r1, [r2, r1]
- bl FUN_020B2794
-_020B3644:
- ldrh r0, [r5, #0x4a]
- ands r0, r0, #0x2
- beq _020B3660
- ldr r0, [r5, #0x3c]
- ldr r1, [r5, #0x40]
- mov r2, #0x1000
- bl FUN_020B28B4
-_020B3660:
- ldr r2, [r5, #0x34]
- mvn r0, #0x0
- cmp r2, r0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020B369C
- ldr r1, _020B36B4 ; =UNK_02106574
- mov r0, r4
- str r2, [r1, #0x0]
- bl FUN_020B36C0
- ldr r0, _020B36B4 ; =UNK_02106574
- mvn r1, #0x0
- str r1, [r0, #0x0]
- b _020B36A4
-_020B369C:
- mov r0, r4
- bl FUN_020B36C0
-_020B36A4:
- mov r0, #0x1
- bl FUN_020B2B08
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B36B4: .word UNK_02106574
-_020B36B8: .word UNK_021CDD6C
-_020B36BC: .word UNK_020FFA38
-
- arm_func_start FUN_020B36C0
-FUN_020B36C0: ; 0x020B36C0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- ldr r5, _020B3B54 ; =UNK_021CDD6C
- mov r10, r0
- ldr r0, [r5, #0x0]
- ldr r1, [r0, #0x7c]
- str r0, [sp, #0x0]
- ldr r9, [r0, #0x70]
- ands r0, r1, #0x2
- beq _020B38EC
- ldr r0, [r9, #0x14]
- cmp r0, #0x0
- beq _020B3840
- ldr r0, _020B3B58 ; =UNK_021CDD68
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020B3720
- ldr r2, _020B3B5C ; =UNK_02106570
- ldr r0, _020B3B60 ; =0x0000FFFE
- ldrh r2, [r2, #0x0]
- cmp r2, r0
- movne r0, #0x1
- bne _020B3724
-_020B3720:
- mov r0, #0x0
-_020B3724:
- cmp r0, #0x0
- beq _020B37AC
- ldr r0, _020B3B64 ; =UNK_021CE8F4
- ldr r1, [r0, #0x404]
- cmp r1, #0x0
- beq _020B3788
- ldrh r1, [r0, #0x0]
- ldr r0, _020B3B68 ; =UNK_021CE8F8
- ldr r1, [r0, r1, lsl #0x2]
- cmp r1, #0x0
- bne _020B37AC
- bl FUN_020B4010
- ldr r0, _020B3B6C ; =UNK_021CDD70
- ldr r2, _020B3B70 ; =UNK_021CDDF4
- ldr r0, [r0, #0x0]
- ldr r1, _020B3B64 ; =UNK_021CE8F4
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0xd
- ldrh r3, [r2, r0]
- ldr r4, _020B3B74 ; =UNK_021CE4F4
- ldrh r2, [r1, #0x0]
- ldr r0, _020B3B68 ; =UNK_021CE8F8
- add r1, r4, r3, lsl #0x5
- str r1, [r0, r2, lsl #0x2]
- b _020B37AC
-_020B3788:
- bl FUN_020B4010
- ldr r0, _020B3B6C ; =UNK_021CDD70
- ldr r1, _020B3B70 ; =UNK_021CDDF4
- ldr r0, [r0, #0x0]
- ldr r2, _020B3B74 ; =UNK_021CE4F4
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0xd
- ldrh r0, [r1, r0]
- add r1, r2, r0, lsl #0x5
-_020B37AC:
- ldr r0, _020B3B58 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldreq r0, _020B3B6C ; =UNK_021CDD70
- ldreq r3, _020B3B78 ; =UNK_021CDEF4
- ldreq r2, [r0, #0x0]
- moveq r0, #0x18
- mlaeq r0, r2, r0, r3
- beq _020B37FC
- ldr r2, _020B3B6C ; =UNK_021CDD70
- mov r0, #0x18
- ldr r2, [r2, #0x0]
- ldr r3, _020B3B7C ; =UNK_021CDF04
- mul r4, r2, r0
- ldr r2, _020B3B80 ; =UNK_021CDF08
- ldr r3, [r3, r4]
- ldr r0, _020B3B84 ; =UNK_02106578
- ldr r2, [r2, r4]
- str r3, [r0, #0x10]
- str r2, [r0, #0x14]
-_020B37FC:
- bl FUN_020B4FAC
- ldr r1, _020B3B88 ; =UNK_02106574
- mvn r0, #0x0
- ldr r1, [r1, #0x0]
- cmp r1, r0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020B3830
- mov r0, r10
- bl FUN_020B4BF4
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-_020B3830:
- mov r0, r10
- bl FUN_020B4CDC
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-_020B3840:
- ldr r0, _020B3B6C ; =UNK_021CDD70
- ldr r1, _020B3B8C ; =UNK_021CDD74
- ldr r2, [r0, #0x0]
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r2, lsl #0x2]
- bl FUN_020B4FA4
- ldr r0, _020B3B58 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldreq r0, _020B3B6C ; =UNK_021CDD70
- ldreq r2, _020B3B78 ; =UNK_021CDEF4
- ldreq r1, [r0, #0x0]
- moveq r0, #0x18
- mlaeq r0, r1, r0, r2
- beq _020B38A8
- ldr r1, _020B3B6C ; =UNK_021CDD70
- mov r0, #0x18
- ldr r1, [r1, #0x0]
- ldr r2, _020B3B7C ; =UNK_021CDF04
- mul r3, r1, r0
- ldr r1, _020B3B80 ; =UNK_021CDF08
- ldr r2, [r2, r3]
- ldr r0, _020B3B84 ; =UNK_02106578
- ldr r1, [r1, r3]
- str r2, [r0, #0x10]
- str r1, [r0, #0x14]
-_020B38A8:
- bl FUN_020B4FC4
- ldr r1, _020B3B88 ; =UNK_02106574
- mvn r0, #0x0
- ldr r1, [r1, #0x0]
- cmp r1, r0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020B38DC
- mov r0, r10
- bl FUN_020B4BF4
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-_020B38DC:
- mov r0, r10
- bl FUN_020B4CDC
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-_020B38EC:
- cmp r9, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r11,pc}
- ldr r4, _020B3B6C ; =UNK_021CDD70
- ldr fp, _020B3B78 ; =UNK_021CDEF4
- mov r7, #0x0
- mov r6, #0x1
-_020B3908:
- ldr r0, [r9, #0x10]
- cmp r0, #0x0
- beq _020B3B40
- ldr r0, [r9, #0x14]
- cmp r0, #0x0
- beq _020B3A8C
- ldr r8, [r5, #0x0]
- mov r1, r9
- str r9, [r8, #0x74]
- mov r0, r8
- bl FUN_020B4F9C
- ldr r1, [r9, #0x28]
- ldr r2, [r9, #0x2c]
- mov r0, r8
- bl FUN_020B5034
- mov r0, r8
- bl FUN_020B4E0C
- ldr r0, _020B3B58 ; =UNK_021CDD68
- mov r1, r7
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _020B3978
- ldr r0, _020B3B5C ; =UNK_02106570
- ldrh r2, [r0, #0x0]
- ldr r0, _020B3B60 ; =0x0000FFFE
- cmp r2, r0
- movne r0, r6
- bne _020B397C
-_020B3978:
- mov r0, r7
-_020B397C:
- cmp r0, #0x0
- beq _020B3A04
- ldr r0, _020B3B64 ; =UNK_021CE8F4
- ldr r0, [r0, #0x404]
- cmp r0, #0x0
- beq _020B39E4
- ldr r0, _020B3B64 ; =UNK_021CE8F4
- ldrh r1, [r0, #0x0]
- add r0, r0, r1, lsl #0x2
- ldr r1, [r0, #0x4]
- cmp r1, #0x0
- bne _020B3A04
- bl FUN_020B4010
- ldr r0, _020B3B64 ; =UNK_021CE8F4
- ldr r2, [r4, #0x0]
- ldrh r1, [r0, #0x0]
- mov r0, r2, lsl #0x10
- mov r2, r0, lsr #0xd
- ldr r0, _020B3B70 ; =UNK_021CDDF4
- ldrh r3, [r0, r2]
- ldr r0, _020B3B64 ; =UNK_021CE8F4
- add r2, r0, r1, lsl #0x2
- ldr r0, _020B3B74 ; =UNK_021CE4F4
- add r1, r0, r3, lsl #0x5
- str r1, [r2, #0x4]
- b _020B3A04
-_020B39E4:
- bl FUN_020B4010
- ldr r0, [r4, #0x0]
- mov r0, r0, lsl #0x10
- mov r1, r0, lsr #0xd
- ldr r0, _020B3B70 ; =UNK_021CDDF4
- ldrh r1, [r0, r1]
- ldr r0, _020B3B74 ; =UNK_021CE4F4
- add r1, r0, r1, lsl #0x5
-_020B3A04:
- ldr r0, _020B3B58 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldreq r2, [r4, #0x0]
- moveq r0, #0x18
- mlaeq r0, r2, r0, r11
- beq _020B3A44
- ldr r2, [r4, #0x0]
- mov r0, #0x18
- mla r8, r2, r0, r11
- ldr r0, _020B3B84 ; =UNK_02106578
- ldr r3, [r8, #0x10]
- mov r2, r0
- str r3, [r2, #0x10]
- ldr r3, [r8, #0x14]
- str r3, [r2, #0x14]
-_020B3A44:
- bl FUN_020B4FAC
- ldr r0, _020B3B88 ; =UNK_02106574
- ldr r1, [r0, #0x0]
- mvn r0, #0x0
- cmp r1, r0
- movne r0, r6
- moveq r0, r7
- cmp r0, #0x0
- beq _020B3A74
- mov r0, r10
- bl FUN_020B4BF4
- b _020B3A7C
-_020B3A74:
- mov r0, r10
- bl FUN_020B4CDC
-_020B3A7C:
- ldr r0, [r5, #0x0]
- str r7, [r0, #0x74]
- bl FUN_020B4DA0
- b _020B3B40
-_020B3A8C:
- ldr r8, [r5, #0x0]
- mov r1, r9
- mov r0, r8
- str r9, [r8, #0x74]
- bl FUN_020B4F9C
- mov r0, r8
- bl FUN_020B4E0C
- ldr r2, [r4, #0x0]
- ldr r1, _020B3B8C ; =UNK_021CDD74
- ldr r0, [sp, #0x0]
- ldr r1, [r1, r2, lsl #0x2]
- bl FUN_020B4FA4
- ldr r0, _020B3B58 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldreq r1, [r4, #0x0]
- moveq r0, #0x18
- mlaeq r0, r1, r0, r11
- beq _020B3AFC
- ldr r1, [r4, #0x0]
- mov r0, #0x18
- mla r3, r1, r0, r11
- ldr r0, _020B3B84 ; =UNK_02106578
- ldr r2, [r3, #0x10]
- mov r1, r0
- str r2, [r1, #0x10]
- ldr r2, [r3, #0x14]
- str r2, [r1, #0x14]
-_020B3AFC:
- bl FUN_020B4FC4
- ldr r0, _020B3B88 ; =UNK_02106574
- ldr r1, [r0, #0x0]
- mvn r0, #0x0
- cmp r1, r0
- movne r0, r6
- moveq r0, r7
- cmp r0, #0x0
- beq _020B3B2C
- mov r0, r10
- bl FUN_020B4BF4
- b _020B3B34
-_020B3B2C:
- mov r0, r10
- bl FUN_020B4CDC
-_020B3B34:
- ldr r0, [r5, #0x0]
- str r7, [r0, #0x74]
- bl FUN_020B4DA0
-_020B3B40:
- ldr r9, [r9, #0x30]
- cmp r9, #0x0
- bne _020B3908
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B3B54: .word UNK_021CDD6C
-_020B3B58: .word UNK_021CDD68
-_020B3B5C: .word UNK_02106570
-_020B3B60: .word 0x0000FFFE
-_020B3B64: .word UNK_021CE8F4
-_020B3B68: .word UNK_021CE8F8
-_020B3B6C: .word UNK_021CDD70
-_020B3B70: .word UNK_021CDDF4
-_020B3B74: .word UNK_021CE4F4
-_020B3B78: .word UNK_021CDEF4
-_020B3B7C: .word UNK_021CDF04
-_020B3B80: .word UNK_021CDF08
-_020B3B84: .word UNK_02106578
-_020B3B88: .word UNK_02106574
-_020B3B8C: .word UNK_021CDD74
-
- arm_func_start FUN_020B3B90
-FUN_020B3B90: ; 0x020B3B90
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- ldr r0, _020B3C24 ; =UNK_021CDD6C
- mov r12, r1
- ldr r0, [r0, #0x0]
- mov r3, r2
- ldr r1, [r0, #0x74]
- ldr r2, [r1, #0x44]
- cmp r2, #0x0
- addeq sp, sp, #0x8
- ldmeqia sp!, {r4-r6,pc}
- ldr r2, _020B3C28 ; =UNK_021CDD68
- ldr r2, [r2, #0x0]
- cmp r2, #0x0
- ldreq r2, _020B3C2C ; =UNK_021CDD70
- ldreq r4, _020B3C30 ; =UNK_021CDEF4
- ldreq lr, [r2, #0x0]
- moveq r2, #0x18
- mlaeq r6, lr, r2, r4
- beq _020B3C0C
- ldr lr, _020B3C2C ; =UNK_021CDD70
- mov r2, #0x18
- ldr lr, [lr, #0x0]
- ldr r4, _020B3C34 ; =UNK_021CDF04
- mul r5, lr, r2
- ldr r2, _020B3C38 ; =UNK_021CDF08
- ldr r4, [r4, r5]
- ldr r6, _020B3C3C ; =UNK_02106578
- ldr r2, [r2, r5]
- str r4, [r6, #0x10]
- str r2, [r6, #0x14]
-_020B3C0C:
- str r6, [sp, #0x0]
- ldr lr, [r1, #0x44]
- mov r2, r12
- blx lr
- add sp, sp, #0x8
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B3C24: .word UNK_021CDD6C
-_020B3C28: .word UNK_021CDD68
-_020B3C2C: .word UNK_021CDD70
-_020B3C30: .word UNK_021CDEF4
-_020B3C34: .word UNK_021CDF04
-_020B3C38: .word UNK_021CDF08
-_020B3C3C: .word UNK_02106578
-
- arm_func_start FUN_020B3C40
-FUN_020B3C40: ; 0x020B3C40
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- ldr r3, _020B3E2C ; =UNK_021CDD6C
- add r4, r0, #0x38
- ldr r0, [r3, #0x0]
- mov r6, r1
- mov r5, r2
- bl FUN_020B278C
- cmp r0, #0x0
- beq _020B3C90
- ldrh r1, [r4, #0x4]
- and r1, r1, #0xf000
- mov r1, r1, lsl #0x4
- mov r1, r1, lsr #0x10
- bl FUN_020B10B0
- ldr r1, [r4, #0x4]
- and r0, r0, #0xf
- bic r1, r1, #0xf000
- orr r0, r1, r0, lsl #0xc
- str r0, [r4, #0x4]
-_020B3C90:
- ldr r0, _020B3E2C ; =UNK_021CDD6C
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x84]
- cmp r0, #0x0
- beq _020B3DA4
- ldr r0, [r1, #0x84]
- ands r0, r0, #0x1
- beq _020B3CC8
- ldrh r0, [r1, #0x88]
- ldr r1, [r4, #0x4]
- bic r1, r1, #0xc00
- and r0, r0, #0x3
- orr r0, r1, r0, lsl #0xa
- str r0, [r4, #0x4]
-_020B3CC8:
- ldr r0, _020B3E2C ; =UNK_021CDD6C
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x84]
- ands r0, r0, #0x2
- beq _020B3CF4
- ldrh r0, [r1, #0x8a]
- ldr r1, [r4, #0x4]
- bic r1, r1, #0xf000
- and r0, r0, #0xf
- orr r0, r1, r0, lsl #0xc
- str r0, [r4, #0x4]
-_020B3CF4:
- ldr r0, _020B3E2C ; =UNK_021CDD6C
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x84]
- ands r0, r0, #0x10
- beq _020B3D2C
- ldr r2, [r4, #0x4]
- ldrh r0, [r1, #0x94]
- mov r1, r2, lsl #0x10
- bic r2, r2, #0xf000
- add r0, r0, r1, lsr #0x1c
- and r0, r0, #0xf
- and r0, r0, #0xf
- orr r0, r2, r0, lsl #0xc
- str r0, [r4, #0x4]
-_020B3D2C:
- ldr r0, _020B3E2C ; =UNK_021CDD6C
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x84]
- ands r0, r0, #0x4
- beq _020B3D60
- ldr r0, [r1, #0x90]
- cmp r0, #0x0
- ldrne r0, [r4, #0x0]
- orrne r0, r0, #0x1000
- strne r0, [r4, #0x0]
- ldreq r0, [r4, #0x0]
- biceq r0, r0, #0x1000
- streq r0, [r4, #0x0]
-_020B3D60:
- ldr r0, _020B3E2C ; =UNK_021CDD6C
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x84]
- ands r0, r0, #0x8
- beq _020B3DA4
- ldr r0, [r4, #0x0]
- ldrh r2, [r4, #0x4]
- ldr r1, [r1, #0x8c]
- bic r0, r0, #0xc00
- orr r0, r0, r1, lsl #0xa
- str r0, [r4, #0x0]
- ldrh r0, [r4, #0x4]
- and r1, r2, #0xf000
- mov r1, r1, asr #0xc
- bic r0, r0, #0xf000
- orr r0, r0, r1, lsl #0xc
- strh r0, [r4, #0x4]
-_020B3DA4:
- ldr r0, _020B3E2C ; =UNK_021CDD6C
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x74]
- ldr r2, [r1, #0x40]
- cmp r2, #0x0
- addeq sp, sp, #0x8
- ldmeqia sp!, {r4-r6,pc}
- ldr r2, _020B3E30 ; =UNK_021CDD68
- ldr r2, [r2, #0x0]
- cmp r2, #0x0
- ldreq r2, _020B3E34 ; =UNK_021CDD70
- ldreq r4, _020B3E38 ; =UNK_021CDEF4
- ldreq r3, [r2, #0x0]
- moveq r2, #0x18
- mlaeq r4, r3, r2, r4
- beq _020B3E10
- ldr r3, _020B3E34 ; =UNK_021CDD70
- mov r2, #0x18
- ldr r4, [r3, #0x0]
- ldr r3, _020B3E3C ; =UNK_021CDF04
- mul r12, r4, r2
- ldr r2, _020B3E40 ; =UNK_021CDF08
- ldr r3, [r3, r12]
- ldr r4, _020B3E44 ; =UNK_02106578
- ldr r2, [r2, r12]
- str r3, [r4, #0x10]
- str r2, [r4, #0x14]
-_020B3E10:
- str r4, [sp, #0x0]
- ldr r4, [r1, #0x40]
- mov r2, r6
- mov r3, r5
- blx r4
- add sp, sp, #0x8
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B3E2C: .word UNK_021CDD6C
-_020B3E30: .word UNK_021CDD68
-_020B3E34: .word UNK_021CDD70
-_020B3E38: .word UNK_021CDEF4
-_020B3E3C: .word UNK_021CDF04
-_020B3E40: .word UNK_021CDF08
-_020B3E44: .word UNK_02106578
-
- arm_func_start FUN_020B3E48
-FUN_020B3E48: ; 0x020B3E48
- stmdb sp!, {r4,lr}
- ldr r0, _020B3EC4 ; =UNK_021CDD6C
- mov r2, r1
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x74]
- ldr r3, [r1, #0x3c]
- cmp r3, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r3, _020B3EC8 ; =UNK_021CDD68
- ldr r3, [r3, #0x0]
- cmp r3, #0x0
- ldreq r3, _020B3ECC ; =UNK_021CDD70
- ldreq lr, _020B3ED0 ; =UNK_021CDEF4
- ldreq r12, [r3, #0x0]
- moveq r3, #0x18
- mlaeq r3, r12, r3, lr
- beq _020B3EB8
- ldr ip, _020B3ECC ; =UNK_021CDD70
- mov r3, #0x18
- ldr r12, [r12, #0x0]
- ldr lr, _020B3ED4 ; =UNK_021CDF04
- mul r4, r12, r3
- ldr ip, _020B3ED8 ; =UNK_021CDF08
- ldr lr, [lr, r4]
- ldr r3, _020B3EDC ; =UNK_02106578
- ldr r12, [r12, r4]
- str lr, [r3, #0x10]
- str r12, [r3, #0x14]
-_020B3EB8:
- ldr r12, [r1, #0x3c]
- blx r12
- ldmia sp!, {r4,pc}
- .balign 4
-_020B3EC4: .word UNK_021CDD6C
-_020B3EC8: .word UNK_021CDD68
-_020B3ECC: .word UNK_021CDD70
-_020B3ED0: .word UNK_021CDEF4
-_020B3ED4: .word UNK_021CDF04
-_020B3ED8: .word UNK_021CDF08
-_020B3EDC: .word UNK_02106578
-
- arm_func_start FUN_020B3EE0
-FUN_020B3EE0: ; 0x020B3EE0
- stmdb sp!, {r4-r6,lr}
- ldr r2, _020B3FF4 ; =UNK_021CDD6C
- mov r6, r0
- ldr r0, [r2, #0x0]
- mov r5, r1
- ldr r4, [r0, #0x74]
- ldr r0, [r4, #0x34]
- cmp r0, #0x0
- beq _020B3F7C
- ldr r0, _020B3FF8 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldreq r0, _020B3FFC ; =UNK_021CDD70
- ldreq r1, _020B4000 ; =UNK_021CDEF4
- ldreq r2, [r0, #0x0]
- moveq r0, #0x18
- mlaeq r1, r2, r0, r1
- beq _020B3F54
- ldr r1, _020B3FFC ; =UNK_021CDD70
- mov r0, #0x18
- ldr r2, [r1, #0x0]
- ldr r1, _020B4004 ; =UNK_021CDF04
- mul r3, r2, r0
- ldr r0, _020B4008 ; =UNK_021CDF08
- ldr r2, [r1, r3]
- ldr r1, _020B400C ; =UNK_02106578
- ldr r0, [r0, r3]
- str r2, [r1, #0x10]
- str r0, [r1, #0x14]
-_020B3F54:
- ldr r3, [r4, #0x34]
- mov r0, r5
- mov r2, r4
- blx r3
- cmp r0, #0x0
- moveq r0, #0x0
- streq r0, [r6, #0x30]
- ldmeqia sp!, {r4-r6,pc}
- mov r0, #0x1
- str r0, [r6, #0x30]
-_020B3F7C:
- ldr r0, [r4, #0x38]
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r0, _020B3FF8 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldreq r0, _020B3FFC ; =UNK_021CDD70
- ldreq r2, _020B4000 ; =UNK_021CDEF4
- ldreq r1, [r0, #0x0]
- moveq r0, #0x18
- mlaeq r3, r1, r0, r2
- beq _020B3FD8
- ldr r1, _020B3FFC ; =UNK_021CDD70
- mov r0, #0x18
- ldr r2, [r1, #0x0]
- ldr r1, _020B4004 ; =UNK_021CDF04
- mul r6, r2, r0
- ldr r0, _020B4008 ; =UNK_021CDF08
- ldr r1, [r1, r6]
- ldr r3, _020B400C ; =UNK_02106578
- ldr r0, [r0, r6]
- str r1, [r3, #0x10]
- str r0, [r3, #0x14]
-_020B3FD8:
- ldr r0, _020B3FF4 ; =UNK_021CDD6C
- ldr r6, [r4, #0x38]
- ldr r0, [r0, #0x0]
- mov r1, r4
- mov r2, r5
- blx r6
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B3FF4: .word UNK_021CDD6C
-_020B3FF8: .word UNK_021CDD68
-_020B3FFC: .word UNK_021CDD70
-_020B4000: .word UNK_021CDEF4
-_020B4004: .word UNK_021CDF04
-_020B4008: .word UNK_021CDF08
-_020B400C: .word UNK_02106578
-
- arm_func_start FUN_020B4010
-FUN_020B4010:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020B4154 ; =UNK_021CDD70
- ldr r1, _020B4158 ; =UNK_021CDDF4
- ldr r0, [r0, #0x0]
- mov r2, #0x1
- mov r0, r0, lsl #0x10
- add r3, r1, r0, lsr #0xd
- ldrh r0, [r3, #0x4]
- cmp r0, #0x1
- beq _020B4044
- cmp r0, #0x2
- movne r2, #0x0
-_020B4044:
- cmp r2, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldr r0, _020B415C ; =UNK_021CDD60
- mov r2, #0x10
- ldrh r4, [r0, #0x0]
- cmp r4, #0x1f
- addcc r1, r4, #0x1
- strcch r1, [r0, #0x0]
- ldr r0, _020B4160 ; =UNK_021CE4F4
- ldrh r5, [r3, #0x2]
- add r0, r0, r4, lsl #0x5
- add r1, r0, #0x10
- mvn r0, #0x0
- strh r4, [r3, #0x0]
- bl MIi_CpuClearFast
- ldr r0, _020B4154 ; =UNK_021CDD70
- ldr r1, _020B4164 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- ldr r2, [r1, #0x0]
- mov r1, r0, lsl #0x10
- cmp r2, #0x0
- ldr r3, _020B4158 ; =UNK_021CDDF4
- mov r1, r1, lsr #0xd
- ldrh r1, [r3, r1]
- ldr r3, _020B4160 ; =UNK_021CE4F4
- moveq r2, #0x18
- add r1, r3, r1, lsl #0x5
- ldreq r3, _020B4168 ; =UNK_021CE1F4
- mlaeq r12, r0, r2, r3
- beq _020B40E4
- mov r2, #0x18
- mul r3, r0, r2
- ldr r2, _020B416C ; =UNK_021CDF04
- ldr r0, _020B4170 ; =UNK_021CDF08
- ldr r2, [r2, r3]
- ldr ip, _020B4174 ; =UNK_02106578
- ldr r0, [r0, r3]
- str r2, [r12, #0x10]
- str r0, [r12, #0x14]
-_020B40E4:
- ldr r2, [r12, #0x0]
- ldr r0, _020B4154 ; =UNK_021CDD70
- str r2, [r1, #0x0]
- ldr r2, [r12, #0x4]
- str r2, [r1, #0x4]
- ldr r2, [r12, #0x8]
- str r2, [r1, #0x8]
- ldr r2, [r12, #0xc]
- str r2, [r1, #0xc]
- ldr r0, [r0, #0x0]
- mov r0, r0, lsl #0x10
- movs lr, r0, lsr #0x10
- addmi sp, sp, #0x4
- ldmmiia sp!, {r4-r5,pc}
- ldr r3, _020B4158 ; =UNK_021CDDF4
- mov r0, #0x3
-_020B4124:
- add r2, r3, lr, lsl #0x3
- ldrh r1, [r2, #0x2]
- mov r12, lr, lsl #0x3
- cmp r5, r1
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r5,pc}
- strh r0, [r2, #0x4]
- strh r4, [r3, r12]
- subs lr, lr, #0x1
- bpl _020B4124
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B4154: .word UNK_021CDD70
-_020B4158: .word UNK_021CDDF4
-_020B415C: .word UNK_021CDD60
-_020B4160: .word UNK_021CE4F4
-_020B4164: .word UNK_021CDD68
-_020B4168: .word UNK_021CE1F4
-_020B416C: .word UNK_021CDF04
-_020B4170: .word UNK_021CDF08
-_020B4174: .word UNK_02106578
-
- arm_func_start FUN_020B4178
-FUN_020B4178: ; 0x020B4178
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020B4220 ; =UNK_021CDD68
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020B41B8
- ldr r1, _020B4224 ; =UNK_021CDD70
- mov r0, #0x18
- ldr r12, [r1, #0x0]
- ldr r1, _020B4228 ; =UNK_021CDF04
- mul r3, r12, r0
- mov r2, #0x0
- ldr r0, _020B422C ; =UNK_021CDF08
- str r2, [r1, r3]
- str r2, [r0, r3]
- b _020B420C
-_020B41B8:
- ldr r0, _020B4224 ; =UNK_021CDD70
- mov lr, #0x18
- ldr r1, [r0, #0x0]
- ldr r4, _020B4230 ; =UNK_021CDEF4
- mul r3, r1, lr
- mov r2, #0x1000
- str r2, [r4, r3]
- add r5, r4, r3
- mov r1, #0x0
- str r1, [r5, #0x4]
- str r1, [r5, #0x8]
- str r2, [r5, #0xc]
- str r1, [r5, #0x10]
- str r1, [r5, #0x14]
- ldr r12, [r0, #0x0]
- ldr r4, _020B4234 ; =UNK_021CE1F4
- ldmia r5!, {r0-r3}
- mla lr, r12, lr, r4
- stmia lr!, {r0-r3}
- ldmia r5, {r0-r1}
- stmia lr, {r0-r1}
-_020B420C:
- ldr r0, _020B4238 ; =UNK_021CDD74
- mov r1, #0x0
- str r1, [r0, r12, lsl #0x2]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B4220: .word UNK_021CDD68
-_020B4224: .word UNK_021CDD70
-_020B4228: .word UNK_021CDF04
-_020B422C: .word UNK_021CDF08
-_020B4230: .word UNK_021CDEF4
-_020B4234: .word UNK_021CE1F4
-_020B4238: .word UNK_021CDD74
-
- arm_func_start FUN_020B423C
-FUN_020B423C: ; 0x020B423C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x1c
- ldr r4, [r0, #0x4]
- ldr r3, [r1, #0x8]
- mov r12, r2
- smull r6, r5, r4, r3
- ldr r4, [r0, #0x0]
- ldr r3, [r1, #0x0]
- cmp r12, r1
- smlal r6, r5, r4, r3
- mov r3, r6, lsr #0xc
- addeq r2, sp, #0x0
- orr r3, r3, r5, lsl #0x14
- str r3, [r2, #0x0]
- ldr r4, [r0, #0x4]
- ldr r3, [r1, #0xc]
- ldr r5, [r0, #0x0]
- smull r7, r6, r4, r3
- ldr r3, [r1, #0x4]
- add lr, sp, #0x0
- smlal r7, r6, r5, r3
- mov r3, r7, lsr #0xc
- orr r3, r3, r6, lsl #0x14
- str r3, [r2, #0x4]
- ldr r4, [r0, #0xc]
- ldr r3, [r1, #0x8]
- ldr r5, [r0, #0x8]
- smull r7, r6, r4, r3
- ldr r3, [r1, #0x0]
- cmp r2, lr
- smlal r7, r6, r5, r3
- mov r3, r7, lsr #0xc
- orr r3, r3, r6, lsl #0x14
- str r3, [r2, #0x8]
- ldr r4, [r0, #0xc]
- ldr r3, [r1, #0xc]
- ldr r5, [r0, #0x8]
- smull r7, r6, r4, r3
- ldr r3, [r1, #0x4]
- smlal r7, r6, r5, r3
- mov r3, r7, lsr #0xc
- orr r3, r3, r6, lsl #0x14
- str r3, [r2, #0xc]
- ldr r4, [r0, #0x14]
- ldr r3, [r1, #0x8]
- ldr r5, [r0, #0x10]
- smull r7, r6, r4, r3
- ldr r3, [r1, #0x0]
- ldr r4, [r1, #0x10]
- smlal r7, r6, r5, r3
- mov r3, r7, lsr #0xc
- orr r3, r3, r6, lsl #0x14
- add r3, r4, r3
- str r3, [r2, #0x10]
- ldr r4, [r0, #0x14]
- ldr r3, [r1, #0xc]
- ldr r5, [r0, #0x10]
- ldr r0, [r1, #0x4]
- smull r6, r3, r4, r3
- smlal r6, r3, r5, r0
- mov r0, r6, lsr #0xc
- ldr r1, [r1, #0x14]
- orr r0, r0, r3, lsl #0x14
- add r0, r1, r0
- str r0, [r2, #0x14]
- ldmeqia lr!, {r0-r3}
- stmeqia r12!, {r0-r3}
- ldmeqia lr, {r0-r1}
- stmeqia r12, {r0-r1}
- add sp, sp, #0x1c
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B4358
-FUN_020B4358: ; 0x020B4358
- stmdb sp!, {r4,lr}
- ldr r2, _020B43A0 ; =UNK_021CED04
- mov r1, #0x30
- ldr r2, [r2, #0x0]
- mla r4, r0, r1, r2
- mov r0, r4
- bl FUN_020B10CC
- mov r0, #0x0
- str r0, [r4, #0xc]
- str r0, [r4, #0x10]
- str r0, [r4, #0x14]
- str r0, [r4, #0x18]
- str r0, [r4, #0x1c]
- str r0, [r4, #0x20]
- str r0, [r4, #0x24]
- str r0, [r4, #0x28]
- str r0, [r4, #0x2c]
- ldmia sp!, {r4,pc}
- .balign 4
-_020B43A0: .word UNK_021CED04
-
- arm_func_start FUN_020B43A4
-FUN_020B43A4: ; 0x020B43A4
- ldr r1, _020B43F8 ; =UNK_021CED00
- mov r0, #0x0
- ldr r3, [r1, #0x0]
- cmp r3, #0x0
- bls _020B43F0
- ldr r1, _020B43FC ; =UNK_021CED04
- ldr r2, [r1, #0x0]
- mov r12, r2
-_020B43C4:
- ldr r1, [r12, #0x1c]
- cmp r1, #0x1
- movne r1, #0x30
- mlane r1, r0, r1, r2
- movne r2, #0x1
- strne r2, [r1, #0x1c]
- bxne lr
- add r0, r0, #0x1
- cmp r0, r3
- add r12, r12, #0x30
- blo _020B43C4
-_020B43F0:
- mvn r0, #0x0
- bx lr
- .balign 4
-_020B43F8: .word UNK_021CED00
-_020B43FC: .word UNK_021CED04
-
- arm_func_start FUN_020B4400
-FUN_020B4400: ; 0x020B4400
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r1
- mov r4, r2
- bl FUN_020B469C
- mvn r1, #0x0
- str r1, [r0, #0x24]
- str r5, [r0, #0x28]
- str r4, [r0, #0x2c]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020B442C
-FUN_020B442C: ; 0x020B442C
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x14
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldr r0, _020B4558 ; =UNK_021CED00
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addls sp, sp, #0x14
- ldmlsia sp!, {r4-r11,pc}
- ldr r0, [sp, #0x0]
- mov r5, #0x1
- str r0, [sp, #0x4]
- mov r11, r0
- str r0, [sp, #0x8]
- str r0, [sp, #0xc]
-_020B4468:
- ldr r0, _020B455C ; =UNK_021CED04
- ldr r1, [r0, #0x0]
- ldr r0, [sp, #0x4]
- add r8, r1, r0
- ldr r0, [r8, #0x1c]
- cmp r0, #0x0
- beq _020B4528
- ldr r9, [sp, #0x8]
- mov r0, r9
- cmp r0, #0x3
- bge _020B4520
- add r4, r8, #0x24
-_020B4498:
- mov r6, r5, lsl r9
- mov r1, r11
- ldr r0, [r8, #0x24]
- ands r0, r0, r6
- beq _020B44B8
- ldr r0, [r8, #0x20]
- ands r0, r0, r6
- movne r1, r5
-_020B44B8:
- cmp r1, #0x0
- beq _020B4514
- ldr r0, _020B4560 ; =UNK_020FF8C4
- cmp r9, #0x0
- ldr r7, [r0, r9, lsl #0x2]
- ldreq r10, [r8, #0x14]
- mov r0, r8
- mov r1, r9
- ldrne r10, [r8, #0x10]
- bl FUN_020B10BC
- mov r1, r0
- mov r0, r7
- ldr r7, _020B4564 ; =UNK_021CECFC
- ldr r2, [r8, #0x28]
- ldr r3, [r8, #0x2c]
- ldr r7, [r7, #0x0]
- add r2, r10, r2
- blx r7
- cmp r0, #0x0
- ldrne r1, [r4, #0x0]
- mvnne r0, r6
- andne r0, r1, r0
- strne r0, [r4, #0x0]
-_020B4514:
- add r9, r9, #0x1
- cmp r9, #0x3
- blt _020B4498
-_020B4520:
- ldr r0, [sp, #0xc]
- str r0, [r8, #0x20]
-_020B4528:
- ldr r0, _020B4558 ; =UNK_021CED00
- ldr r1, [r0, #0x0]
- ldr r0, [sp, #0x0]
- add r0, r0, #0x1
- str r0, [sp, #0x0]
- cmp r0, r1
- ldr r0, [sp, #0x4]
- add r0, r0, #0x30
- str r0, [sp, #0x4]
- blo _020B4468
- add sp, sp, #0x14
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B4558: .word UNK_021CED00
-_020B455C: .word UNK_021CED04
-_020B4560: .word UNK_020FF8C4
-_020B4564: .word UNK_021CECFC
-
- arm_func_start FUN_020B4568
-FUN_020B4568: ; 0x020B4568
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr ip, _020B45E4 ; =UNK_021CECFC
- movs r6, r1
- ldr r1, _020B45E8 ; =UNK_021CED00
- ldr r3, _020B45EC ; =UNK_021CED04
- mov r7, r0
- str r2, [r12, #0x0]
- mov r5, #0x0
- addeq sp, sp, #0x4
- str r7, [r3, #0x0]
- str r6, [r1, #0x0]
- ldmeqia sp!, {r4-r7,pc}
- mov r4, r5
-_020B45A0:
- mov r0, r7
- bl FUN_020B10CC
- str r4, [r7, #0xc]
- str r4, [r7, #0x10]
- str r4, [r7, #0x14]
- str r4, [r7, #0x18]
- str r4, [r7, #0x1c]
- str r4, [r7, #0x20]
- str r4, [r7, #0x24]
- str r4, [r7, #0x28]
- add r5, r5, #0x1
- str r4, [r7, #0x2c]
- cmp r5, r6
- add r7, r7, #0x30
- blo _020B45A0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B45E4: .word UNK_021CECFC
-_020B45E8: .word UNK_021CED00
-_020B45EC: .word UNK_021CED04
-
- arm_func_start FUN_020B45F0
-FUN_020B45F0: ; 0x020B45F0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldr ip, _020B4698 ; =UNK_021CED04
- mov r4, #0x30
- ldr r12, [r12, #0x0]
- mov r7, r1
- mla r4, r0, r4, r12
- mov r0, r4
- mov r6, r2
- mov r5, r3
- bl FUN_020B10CC
- mvn r0, #0x0
- cmp r7, r0
- beq _020B4638
- mov r0, r4
- mov r2, r7
- mov r1, #0x0
- bl FUN_020B10C4
-_020B4638:
- mvn r0, #0x0
- cmp r6, r0
- beq _020B4654
- mov r0, r4
- mov r2, r6
- mov r1, #0x1
- bl FUN_020B10C4
-_020B4654:
- mvn r0, #0x0
- cmp r5, r0
- beq _020B4670
- mov r0, r4
- mov r2, r5
- mov r1, #0x2
- bl FUN_020B10C4
-_020B4670:
- ldr r1, [sp, #0x18]
- ldr r0, [sp, #0x1c]
- str r1, [r4, #0xc]
- ldr r1, [sp, #0x20]
- str r0, [r4, #0x10]
- ldr r0, [sp, #0x24]
- str r1, [r4, #0x14]
- str r0, [r4, #0x18]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B4698: .word UNK_021CED04
-
- arm_func_start FUN_020B469C
-FUN_020B469C: ; 0x020B469C
- ldr r2, _020B46B0 ; =UNK_021CED04
- mov r1, #0x30
- ldr r2, [r2, #0x0]
- mla r0, r1, r0, r2
- bx lr
- .balign 4
-_020B46B0: .word UNK_021CED04
-
- arm_func_start FUN_020B46B4
-FUN_020B46B4: ; 0x020B46B4
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x1c
- add r12, sp, #0x4
- mov r5, r1
- mov r4, r2
- mov r7, r3
- mov r6, r0
- ldr r1, [sp, #0x30]
- ldr r2, [sp, #0x34]
- ldr r3, [sp, #0x38]
- mov r0, r7
- str r12, [sp, #0x0]
- bl FUN_020B498C
- ldr r2, [r7, #0x0]
- and r1, r2, #0x300
- cmp r1, #0x100
- beq _020B4708
- cmp r1, #0x300
- beq _020B4708
- and r0, r2, #0x30000000
- orr r1, r1, r0
-_020B4708:
- cmp r1, #0x300
- bne _020B478C
- ldr r0, _020B4914 ; =0xC000C000
- ldr r1, _020B4918 ; =UNK_021CED08
- and r0, r2, r0
- and r2, r0, #0xc0000000
- mov r12, r2, lsr #0x1e
- and r0, r0, #0xc000
- mov lr, r0, asr #0xe
- ldr r3, _020B491C ; =UNK_020FF8AC
- ldr r0, [r1, #0x0]
- ldr r2, _020B4920 ; =UNK_020FF894
- cmp r0, #0x0
- ldrne r0, _020B4924 ; =UNK_021CED10
- mov r12, r12, lsl #0x1
- add r1, r2, lr, lsl #0x3
- add r3, r3, lr, lsl #0x3
- ldrh r2, [r12, r3]
- ldrh r1, [r12, r1]
- ldrne r0, [r0, #0x0]
- mov r2, r2, asr #0x1
- addne r3, r0, r4, lsl #0xc
- mov r1, r1, asr #0x1
- add r0, r5, r1
- add r2, r6, r2
- ldr r1, _020B4928 ; =0x04000470
- mov r2, r2, lsl #0xc
- str r2, [r1, #0x0]
- mov r0, r0, lsl #0xc
- moveq r3, r4, lsl #0xc
- str r0, [r1, #0x0]
- str r3, [r1, #0x0]
- b _020B47C0
-_020B478C:
- ldr r0, _020B4918 ; =UNK_021CED08
- ldr r1, _020B4928 ; =0x04000470
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldrne r0, _020B4924 ; =UNK_021CED10
- ldrne r0, [r0, #0x0]
- addne r2, r0, r4, lsl #0xc
- mov r0, r6, lsl #0xc
- str r0, [r1, #0x0]
- mov r0, r5, lsl #0xc
- moveq r2, r4, lsl #0xc
- str r0, [r1, #0x0]
- str r2, [r1, #0x0]
-_020B47C0:
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #0x18]
- ldr r2, _020B492C ; =0x0400046C
- mov r0, r0, lsl #0xc
- str r0, [r2, #0x0]
- mov r0, r1, lsl #0xc
- str r0, [r2, #0x0]
- mov r1, #0x1000
- str r1, [r2, #0x0]
- ldr r0, _020B4930 ; =0x04000500
- mov r1, #0x1
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x4]
- ldr r1, [sp, #0x10]
- mov r0, r0, lsl #0x8
- mov r1, r1, lsl #0x8
- mov r0, r0, asr #0x10
- mov r1, r1, asr #0x10
- mov r0, r0, lsl #0x10
- mov r1, r1, lsl #0x10
- mov r2, r0, lsr #0x10
- mov r0, r1, lsr #0x10
- orr r2, r2, r0, lsl #0x10
- ldr r1, _020B4934 ; =0x04000488
- ldr r0, _020B4938 ; =0x04000490
- str r2, [r1, #0x0]
- mov r2, #0x10000
- str r2, [r0, #0x0]
- ldr r2, [sp, #0xc]
- ldr r3, [sp, #0x10]
- mov r2, r2, lsl #0x8
- mov r3, r3, lsl #0x8
- mov r2, r2, asr #0x10
- mov r3, r3, asr #0x10
- mov r2, r2, lsl #0x10
- mov r3, r3, lsl #0x10
- mov r4, r2, lsr #0x10
- mov r2, r3, lsr #0x10
- orr r3, r4, r2, lsl #0x10
- ldr r2, _020B493C ; =0x00010040
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- ldr r2, [sp, #0xc]
- ldr r3, [sp, #0x8]
- mov r2, r2, lsl #0x8
- mov r3, r3, lsl #0x8
- mov r2, r2, asr #0x10
- mov r3, r3, asr #0x10
- mov r2, r2, lsl #0x10
- mov r3, r3, lsl #0x10
- mov r4, r2, lsr #0x10
- mov r2, r3, lsr #0x10
- orr r2, r4, r2, lsl #0x10
- str r2, [r1, #0x0]
- mov r2, #0x40
- str r2, [r0, #0x0]
- ldr r2, [sp, #0x4]
- ldr r3, [sp, #0x8]
- mov r2, r2, lsl #0x8
- mov r3, r3, lsl #0x8
- mov r2, r2, asr #0x10
- mov r3, r3, asr #0x10
- mov r2, r2, lsl #0x10
- mov r3, r3, lsl #0x10
- mov r4, r2, lsr #0x10
- mov r2, r3, lsr #0x10
- orr r2, r4, r2, lsl #0x10
- str r2, [r1, #0x0]
- mov r2, #0x0
- str r2, [r0, #0x0]
- ldr r1, _020B4940 ; =0x04000504
- ldr r0, _020B4918 ; =UNK_021CED08
- str r2, [r1, #0x0]
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x1c
- ldmeqia sp!, {r4-r7,pc}
- ldr r1, _020B4924 ; =UNK_021CED10
- ldr r0, _020B4944 ; =UNK_02106590
- ldr r2, [r1, #0x0]
- ldr r0, [r0, #0x0]
- add r0, r2, r0
- str r0, [r1, #0x0]
- add sp, sp, #0x1c
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B4914: .word 0xC000C000
-_020B4918: .word UNK_021CED08
-_020B491C: .word UNK_020FF8AC
-_020B4920: .word UNK_020FF894
-_020B4924: .word UNK_021CED10
-_020B4928: .word 0x04000470
-_020B492C: .word 0x0400046C
-_020B4930: .word 0x04000500
-_020B4934: .word 0x04000488
-_020B4938: .word 0x04000490
-_020B493C: .word 0x00010040
-_020B4940: .word 0x04000504
-_020B4944: .word UNK_02106590
-
- arm_func_start FUN_020B4948
-FUN_020B4948:
- ldr r0, _020B4954 ; =UNK_02106590
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020B4954: .word UNK_02106590
-
- arm_func_start FUN_020B4958
-FUN_020B4958:
- ldr r1, _020B4964 ; =UNK_02106590
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020B4964: .word UNK_02106590
-
- arm_func_start FUN_020B4968
-FUN_020B4968: ; 0x020B4968
- ldr r0, _020B4978 ; =UNK_021CED10
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-_020B4978: .word UNK_021CED10
-
- arm_func_start FUN_020B497C
-FUN_020B497C:
- ldr r1, _020B4988 ; =UNK_021CED08
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020B4988: .word UNK_021CED08
-
- arm_func_start FUN_020B498C
-FUN_020B498C: ; 0x020B498C
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0xc
- mov r6, r0
- ldr r4, [r6, #0x0]
- ldr r0, _020B4BCC ; =0xC000C000
- ldr r5, [r6, #0x4]
- and r4, r4, r0
- and r0, r4, #0xc0000000
- and r4, r4, #0xc000
- mov lr, r0, lsr #0x1e
- ldr r0, _020B4BD0 ; =UNK_020FF8AC
- mov r12, r4, asr #0xe
- ldr r8, _020B4BD4 ; =UNK_020FF894
- mov r4, lr, lsl #0x1
- add r0, r0, r12, lsl #0x3
- ldrh r9, [r4, r0]
- ldr r0, [sp, #0x28]
- mov r5, r5, lsl #0x16
- mov r5, r5, lsr #0x16
- mov r7, r5, lsl #0x10
- str r9, [r0, #0x10]
- add r5, r8, r12, lsl #0x3
- ldrh r8, [r4, r5]
- mov r5, r1
- mov r4, r3
- str r8, [r0, #0x14]
- ldr r1, [r5, #0x14]
- mov r7, r7, lsr #0x10
- cmp r1, #0x0
- bne _020B4A74
- ldr r1, [r5, #0x8]
- mov r2, r2, lsr #0x3
- orr r1, r2, r1, lsl #0x1a
- ldr r2, [r5, #0x0]
- orr r1, r1, #0x40000000
- ldr r3, [r5, #0x4]
- orr r1, r1, r2, lsl #0x14
- orr r2, r1, r3, lsl #0x17
- ldr r8, [r5, #0x10]
- ldr r1, _020B4BD8 ; =0x040004A8
- orr r2, r2, r8, lsl #0x1d
- str r2, [r1, #0x0]
- ldr r1, [r5, #0x8]
- ldr r2, [r5, #0x0]
- cmp r1, #0x4
- moveq r1, r7, lsl #0xf
- moveq r7, r1, lsr #0x10
- ldr r1, _020B4BDC ; =UNK_020FF8D8
- ldr r1, [r1, r2, lsl #0x2]
- sub r1, r1, #0x1
- and r1, r7, r1
- mov r1, r1, lsl #0xf
- str r1, [r0, #0x0]
- ldr r1, [r5, #0x0]
- mov r1, r7, asr r1
- mov r1, r1, lsl #0xf
- str r1, [r0, #0x4]
- b _020B4AE0
-_020B4A74:
- and r1, r1, #0x700000
- mov r1, r1, asr #0x14
- mov r12, r12, lsl #0x10
- add r1, r1, #0x5
- ldr r3, [r5, #0x8]
- mov lr, lr, lsl #0x10
- ldr sb, _020B4BE0 ; =UNK_020FF8F8
- mov r12, r12, lsr #0x10
- ldr r8, _020B4BE4 ; =UNK_020FF928
- add r1, r2, r7, lsl r1
- mov r2, r3, lsl #0x1a
- orr r3, r2, r1, lsr #0x3
- mov r7, lr, lsr #0x10
- add r2, r9, r12, lsl #0x4
- add r1, r8, r12, lsl #0x4
- ldr r2, [r2, r7, lsl #0x2]
- orr r3, r3, #0x40000000
- ldr r1, [r1, r7, lsl #0x2]
- orr r2, r3, r2, lsl #0x14
- ldr r3, [r5, #0x10]
- orr r2, r2, r1, lsl #0x17
- ldr r1, _020B4BD8 ; =0x040004A8
- orr r2, r2, r3, lsl #0x1d
- str r2, [r1, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x0]
- str r1, [r0, #0x4]
-_020B4AE0:
- ldr r2, [r0, #0x0]
- ldr r1, [r0, #0x10]
- add r1, r2, r1, lsl #0xc
- str r1, [r0, #0x8]
- ldr r2, [r0, #0x4]
- ldr r1, [r0, #0x14]
- add r1, r2, r1, lsl #0xc
- str r1, [r0, #0xc]
- ldr r1, [r6, #0x0]
- mov r2, r1, lsl #0x2
- mov r1, r1, lsl #0x3
- movs r3, r1, lsr #0x1f
- mov r12, r2, lsr #0x1f
- ldrne r2, [r0, #0x0]
- ldrne r1, [r0, #0x8]
- strne r1, [r0, #0x0]
- strne r2, [r0, #0x8]
- cmp r12, #0x0
- ldrne r2, [r0, #0x4]
- ldrne r1, [r0, #0xc]
- strne r1, [r0, #0x4]
- ldr r1, _020B4BE8 ; =UNK_021CED0C
- strne r2, [r0, #0xc]
- ldr r7, [r1, #0x0]
- cmp r7, #0x0
- beq _020B4B60
- str r3, [sp, #0x0]
- add r1, r0, #0x4
- add r2, r0, #0x8
- add r3, r0, #0xc
- str r12, [sp, #0x4]
- blx r7
-_020B4B60:
- ldr r0, [r6, #0x4]
- ldr r1, [r6, #0x0]
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x1c
- mov r3, r1, lsl #0x12
- ldr r1, [r5, #0xc]
- mov r0, r0, lsl #0x10
- ldr r2, _020B4BEC ; =UNK_020FF8D0
- mov r3, r3, lsr #0x1f
- cmp r1, #0x0
- mov r0, r0, lsr #0x10
- ldr r1, [r2, r3, lsl #0x2]
- movne r0, r0, lsl #0x9
- bne _020B4BA4
- cmp r1, #0x4
- moveq r0, #0x0
- movne r0, r0, lsl #0x5
-_020B4BA4:
- cmp r1, #0x2
- moveq r2, #0x1
- movne r2, #0x0
- add r1, r4, r0
- rsb r0, r2, #0x4
- mov r1, r1, lsr r0
- ldr r0, _020B4BF0 ; =0x040004AC
- str r1, [r0, #0x0]
- add sp, sp, #0xc
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020B4BCC: .word 0xC000C000
-_020B4BD0: .word UNK_020FF8AC
-_020B4BD4: .word UNK_020FF894
-_020B4BD8: .word 0x040004A8
-_020B4BDC: .word UNK_020FF8D8
-_020B4BE0: .word UNK_020FF8F8
-_020B4BE4: .word UNK_020FF928
-_020B4BE8: .word UNK_021CED0C
-_020B4BEC: .word UNK_020FF8D0
-_020B4BF0: .word 0x040004AC
-
- arm_func_start FUN_020B4BF4
-FUN_020B4BF4: ; 0x020B4BF4
- stmdb sp!, {r4-r6,lr}
- ldr r2, _020B4CD8 ; =UNK_021CED14
- mov r6, r0
- ldr r3, [r2, #0x0]
- mov r4, r1
- ldr r5, [r3, #0x0]
- ldr r0, [r5, #0x10]
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,pc}
- mov r0, #0x1
- str r0, [r3, #0x30]
- ldr r3, [r5, #0x18]
- cmp r3, #0x0
- beq _020B4C38
- ldr r0, [r2, #0x0]
- mov r1, r6
- blx r3
-_020B4C38:
- ldr r0, _020B4CD8 ; =UNK_021CED14
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x30]
- cmp r0, #0x0
- beq _020B4CB8
- mvn r0, #0x0
- cmp r4, r0
- beq _020B4C7C
- mov r0, r4
- ldr r4, [r5, #0x14]
- bl FUN_020B469C
- mov r3, #0x1
- mvn r1, r3, lsl r4
- ldr r2, [r0, #0x20]
- and r1, r2, r1
- orr r1, r1, r3, lsl r4
- str r1, [r0, #0x20]
-_020B4C7C:
- ldr r0, [r5, #0x14]
- cmp r0, #0x3
- addls pc, pc, r0, lsl #0x2
- b _020B4CB8
- ; Jump table
- b _020B4C9C ; case 0
- b _020B4CAC ; case 1
- b _020B4CAC ; case 2
- b _020B4CB8 ; case 3
-_020B4C9C:
- mov r0, r5
- mov r1, r6
- bl FUN_020B5090
- b _020B4CB8
-_020B4CAC:
- mov r0, r5
- mov r1, r6
- bl FUN_020B53B4
-_020B4CB8:
- ldr r2, [r5, #0x1c]
- cmp r2, #0x0
- ldmeqia sp!, {r4-r6,pc}
- ldr r0, _020B4CD8 ; =UNK_021CED14
- mov r1, r6
- ldr r0, [r0, #0x0]
- blx r2
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B4CD8: .word UNK_021CED14
-
- arm_func_start FUN_020B4CDC
-FUN_020B4CDC:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r1, _020B4D9C ; =UNK_021CED14
- mov r5, r0
- ldr r2, [r1, #0x0]
- ldr r4, [r2, #0x0]
- ldr r0, [r4, #0x10]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- mov r0, #0x1
- str r0, [r2, #0x30]
- ldr r2, [r4, #0x18]
- cmp r2, #0x0
- beq _020B4D24
- ldr r0, [r1, #0x0]
- mov r1, r5
- blx r2
-_020B4D24:
- ldr r0, _020B4D9C ; =UNK_021CED14
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x30]
- cmp r0, #0x0
- beq _020B4D74
- ldr r0, [r4, #0x14]
- cmp r0, #0x3
- addls pc, pc, r0, lsl #0x2
- b _020B4D74
- ; Jump table
- b _020B4D58 ; case 0
- b _020B4D68 ; case 1
- b _020B4D68 ; case 2
- b _020B4D74 ; case 3
-_020B4D58:
- mov r0, r4
- mov r1, r5
- bl FUN_020B5090
- b _020B4D74
-_020B4D68:
- mov r0, r4
- mov r1, r5
- bl FUN_020B53B4
-_020B4D74:
- ldr r2, [r4, #0x1c]
- cmp r2, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- ldr r0, _020B4D9C ; =UNK_021CED14
- mov r1, r5
- ldr r0, [r0, #0x0]
- blx r2
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B4D9C: .word UNK_021CED14
-
- arm_func_start FUN_020B4DA0
-FUN_020B4DA0: ; 0x020B4DA0
- ldr r0, _020B4E00 ; =UNK_021CED14
- ldr r3, [r0, #0x0]
- ldr r1, [r3, #0x0]
- ldr r1, [r1, #0x14]
- cmp r1, #0x0
- bne _020B4DD8
- ldr r2, _020B4E04 ; =0x04000440
- mov r1, #0x0
- ldr r0, _020B4E08 ; =0x04000448
- str r1, [r2, #0x0]
- mov r1, #0x1
- str r1, [r0, #0x0]
- str r1, [r2, #0x0]
- b _020B4DF0
-_020B4DD8:
- mov r2, #0x0
- str r2, [r3, #0x10]
- ldr r1, [r0, #0x0]
- str r2, [r1, #0x2c]
- ldr r0, [r0, #0x0]
- str r2, [r0, #0x28]
-_020B4DF0:
- ldr r0, _020B4E00 ; =UNK_021CED14
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-_020B4E00: .word UNK_021CED14
-_020B4E04: .word 0x04000440
-_020B4E08: .word 0x04000448
-
- arm_func_start FUN_020B4E0C
-FUN_020B4E0C: ; 0x020B4E0C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r2, _020B4F28 ; =UNK_021CED14
- mov r4, r0
- str r4, [r2, #0x0]
- ldr r0, [r4, #0x0]
- ldr r5, [r0, #0x14]
- cmp r5, #0x0
- bne _020B4ED8
- ldr lr, _020B4F2C ; =0x04000440
- mov r1, #0x0
- ldr r0, _020B4F30 ; =0x04000444
- str r1, [lr, #0x0]
- str r1, [r0, #0x0]
- ldr r12, [r4, #0x0]
- ldr r0, _020B4F34 ; =0x04000470
- ldr r3, [r12, #0x0]
- ldr r12, [r12, #0x4]
- rsb r3, r3, #0x0
- str r3, [r0, #0x0]
- rsb r3, r12, #0x0
- str r3, [r0, #0x0]
- str r1, [r0, #0x0]
- mov r0, #0x1
- str r0, [lr, #0x0]
- ldr r0, [r2, #0x0]
- ldr r5, [r0, #0x8]
- mov r0, r5
- bl FUN_020B19FC
- cmp r0, #0x0
- moveq r0, #0x0
- beq _020B4E98
- mov r0, r5
- mov r1, #0x0
- bl FUN_020B1A14
-_020B4E98:
- ldr r1, _020B4F28 ; =UNK_021CED14
- str r0, [r4, #0x14]
- ldr r0, [r1, #0x0]
- mov r1, #0x0
- ldr r5, [r0, #0xc]
- mov r0, r5
- bl FUN_020B19A8
- cmp r0, #0x0
- moveq r0, #0x0
- beq _020B4ECC
- mov r0, r5
- mov r1, #0x0
- bl FUN_020B19C4
-_020B4ECC:
- add sp, sp, #0x4
- str r0, [r4, #0x18]
- ldmia sp!, {r4-r5,pc}
-_020B4ED8:
- ldr r4, [r4, #0x8]
- mov r1, r5
- mov r0, r4
- bl FUN_020B19FC
- cmp r0, #0x0
- moveq r1, #0x0
- beq _020B4F14
- mov r0, r4
- mov r1, r5
- bl FUN_020B1A14
- ldr r1, [r4, #0x20]
- and r1, r1, #0x700000
- mov r1, r1, asr #0x14
- add r1, r1, #0x5
- mov r1, r0, lsr r1
-_020B4F14:
- ldr r0, _020B4F28 ; =UNK_021CED14
- ldr r0, [r0, #0x0]
- str r1, [r0, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B4F28: .word UNK_021CED14
-_020B4F2C: .word 0x04000440
-_020B4F30: .word 0x04000444
-_020B4F34: .word 0x04000470
-
- arm_func_start FUN_020B4F38
-FUN_020B4F38: ; 0x020B4F38
- cmp r1, #0x0
- ldrne r1, [r0, #0x24]
- orrne r1, r1, #0x1
- strne r1, [r0, #0x24]
- ldreq r1, [r0, #0x24]
- biceq r1, r1, #0x1
- streq r1, [r0, #0x24]
- cmp r2, #0x0
- ldrne r1, [r0, #0x24]
- orrne r1, r1, #0x2
- strne r1, [r0, #0x24]
- ldreq r1, [r0, #0x24]
- biceq r1, r1, #0x2
- streq r1, [r0, #0x24]
- bx lr
-
- arm_func_start FUN_020B4F74
-FUN_020B4F74:
- ldr r0, [r0, #0x24]
- ands r0, r0, #0x2
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020B4F88
-FUN_020B4F88:
- ldr r0, [r0, #0x24]
- ands r0, r0, #0x1
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020B4F9C
-FUN_020B4F9C: ; 0x020B4F9C
- str r1, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020B4FA4
-FUN_020B4FA4: ; 0x020B4FA4
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start FUN_020B4FAC
-FUN_020B4FAC: ; 0x020B4FAC
- ldr r2, _020B4FC0 ; =UNK_021CED14
- ldr r2, [r2, #0x0]
- str r0, [r2, #0x2c]
- str r1, [r2, #0x28]
- bx lr
- .balign 4
-_020B4FC0: .word UNK_021CED14
-
- arm_func_start FUN_020B4FC4
-FUN_020B4FC4: ; 0x020B4FC4
- ldr r1, _020B5028 ; =UNK_021CED14
- mov r3, #0x0
- ldr r12, [r1, #0x0]
- mov r1, #0x1000
- str r0, [r12, #0x2c]
- ldr r2, [r0, #0x0]
- str r2, [r12, #0x40]
- ldr r2, [r0, #0x4]
- str r2, [r12, #0x44]
- str r3, [r12, #0x48]
- ldr r2, [r0, #0x8]
- str r2, [r12, #0x4c]
- ldr r2, [r0, #0xc]
- str r2, [r12, #0x50]
- str r3, [r12, #0x54]
- str r3, [r12, #0x58]
- str r3, [r12, #0x5c]
- str r1, [r12, #0x60]
- ldr r1, [r0, #0x10]
- str r1, [r12, #0x64]
- ldr r0, [r0, #0x14]
- str r0, [r12, #0x68]
- ldr r0, [r12, #0x34]
- str r0, [r12, #0x6c]
- bx lr
- .balign 4
-_020B5028: .word UNK_021CED14
-
- arm_func_start FUN_020B502C
-FUN_020B502C: ; 0x020B502C
- str r1, [r0, #0x4]
- bx lr
-
- arm_func_start FUN_020B5034
-FUN_020B5034: ; 0x020B5034
- str r1, [r0, #0x1c]
- str r2, [r0, #0x20]
- bx lr
-
- arm_func_start FUN_020B5040
-FUN_020B5040: ; 0x020B5040
- str r1, [r0, #0x8]
- str r2, [r0, #0xc]
- bx lr
-
- arm_func_start FUN_020B504C
-FUN_020B504C: ; 0x020B504C
- stmdb sp!, {r4,lr}
- mov r4, r0
- mov r1, r4
- mov r0, #0x0
- mov r2, #0x70
- bl MIi_CpuClear16
- mov r1, #0x0
- str r1, [r4, #0x0]
- mov r0, #0x2
- str r0, [r4, #0x4]
- str r1, [r4, #0x8]
- str r1, [r4, #0xc]
- str r1, [r4, #0x24]
- mov r0, #0x1
- str r0, [r4, #0x30]
- str r1, [r4, #0x28]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B5090
-FUN_020B5090: ; 0x020B5090
- stmdb sp!, {r4-r10,lr}
- ldr r5, _020B5158 ; =UNK_021CED14
- mov r9, r1
- ldrh r1, [r9, #0x0]
- ldr r2, [r5, #0x0]
- mov r10, r0
- add r7, r2, #0x38
- mov r8, #0x0
- cmp r1, #0x0
- ldmlsia sp!, {r4-r10,pc}
- mov r6, #0x1
- mov r4, #0x6
-_020B50C0:
- mul r1, r8, r4
- ldr r0, [r5, #0x0]
- str r6, [r0, #0x30]
- ldr r2, [r9, #0x4]
- ldrh r0, [r2, r1]
- add r1, r2, r1
- strh r0, [r7, #0x0]
- ldrh r0, [r1, #0x2]
- strh r0, [r7, #0x2]
- ldrh r0, [r1, #0x4]
- strh r0, [r7, #0x4]
- ldr r3, [r10, #0x20]
- cmp r3, #0x0
- beq _020B5108
- ldr r0, [r5, #0x0]
- mov r1, r9
- mov r2, r8
- blx r3
-_020B5108:
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0x30]
- cmp r0, #0x0
- beq _020B5120
- mov r0, r7
- bl FUN_020B515C
-_020B5120:
- ldr r3, [r10, #0x24]
- cmp r3, #0x0
- beq _020B513C
- ldr r0, [r5, #0x0]
- mov r1, r9
- mov r2, r8
- blx r3
-_020B513C:
- add r0, r8, #0x1
- mov r0, r0, lsl #0x10
- ldrh r1, [r9, #0x0]
- mov r8, r0, lsr #0x10
- cmp r8, r1
- blo _020B50C0
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020B5158: .word UNK_021CED14
-
- arm_func_start FUN_020B515C
-FUN_020B515C: ; 0x020B515C
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- ldr r1, _020B53A4 ; =UNK_021CED14
- mov r7, r0
- ldr r0, [r1, #0x0]
- add r0, r0, #0x40
- bl G3_LoadMtx43
- ldr r0, _020B53A4 ; =UNK_021CED14
- ldr r0, [r0, #0x0]
- ldr r1, [r0, #0x24]
- cmp r1, #0x0
- beq _020B533C
- ldr r2, [r7, #0x0]
- ldr r1, _020B53A8 ; =0xC000C000
- and r4, r2, r1
- bl FUN_020B4F88
- cmp r0, #0x0
- beq _020B51F4
- ldr r0, [r7, #0x0]
- and r2, r4, #0xc000
- mov r0, r0, lsl #0x7
- mov r3, r0, lsr #0x17
- and r1, r4, #0xc0000000
- mov r1, r1, lsr #0x1e
- ldr r0, _020B53AC ; =UNK_020FF8AC
- mov r2, r2, asr #0xe
- mov r1, r1, lsl #0x1
- add r0, r0, r2, lsl #0x3
- cmp r3, #0xff
- ldrh r1, [r1, r0]
- orrgt r0, r3, #0xff00
- movgt r0, r0, lsl #0x10
- movgt r3, r0, asr #0x10
- add r0, r3, r1
- rsb r0, r0, #0x0
- mov r0, r0, lsl #0x10
- mov r1, r0, lsr #0x10
- b _020B5218
-_020B51F4:
- ldr r0, [r7, #0x0]
- mov r0, r0, lsl #0x7
- mov r0, r0, lsr #0x17
- cmp r0, #0xff
- orrgt r0, r0, #0xff00
- movgt r0, r0, lsl #0x10
- movgt r0, r0, asr #0x10
- mov r0, r0, lsl #0x10
- mov r1, r0, lsr #0x10
-_020B5218:
- ldr r0, _020B53A4 ; =UNK_021CED14
- mov r1, r1, lsl #0x10
- ldr r0, [r0, #0x0]
- mov r6, r1, asr #0x10
- bl FUN_020B4F74
- cmp r0, #0x0
- beq _020B527C
- and r1, r4, #0xc000
- and r0, r4, #0xc0000000
- ldrb r4, [r7, #0x0]
- ldr r2, _020B53B0 ; =UNK_020FF894
- mov r0, r0, lsr #0x1e
- mov r3, r1, asr #0xe
- mov r1, r0, lsl #0x1
- add r0, r2, r3, lsl #0x3
- cmp r4, #0x7f
- ldrh r1, [r1, r0]
- orrgt r0, r4, #0xff00
- movgt r0, r0, lsl #0x10
- movgt r4, r0, asr #0x10
- add r0, r4, r1
- rsb r0, r0, #0x0
- mov r0, r0, lsl #0x10
- mov r4, r0, lsr #0x10
- b _020B5298
-_020B527C:
- ldrb r0, [r7, #0x0]
- cmp r0, #0x7f
- orrgt r0, r0, #0xff00
- movgt r0, r0, lsl #0x10
- movgt r0, r0, asr #0x10
- mov r0, r0, lsl #0x10
- mov r4, r0, lsr #0x10
-_020B5298:
- ldr r0, _020B53A4 ; =UNK_021CED14
- ldr r1, [r7, #0x0]
- ldr r0, [r0, #0x0]
- mov r5, r1, lsl #0x3
- bl FUN_020B4F88
- ldr r2, [r7, #0x0]
- ldr r1, _020B53A4 ; =UNK_021CED14
- eor r5, r0, r5, lsr #0x1f
- ldr r0, [r1, #0x0]
- mov r8, r2, lsl #0x2
- bl FUN_020B4F74
- ldr r2, [r7, #0x0]
- eor r1, r0, r8, lsr #0x1f
- bic r0, r2, #0x10000000
- str r0, [r7, #0x0]
- ldr r2, [r7, #0x0]
- ldr r3, _020B53A4 ; =UNK_021CED14
- orr r2, r2, r5, lsl #0x1c
- str r2, [r7, #0x0]
- ldr r2, [r7, #0x0]
- mov r0, r6
- bic r2, r2, #0x20000000
- str r2, [r7, #0x0]
- ldr r5, [r7, #0x0]
- mov r2, r4, lsl #0x10
- orr r1, r5, r1, lsl #0x1d
- str r1, [r7, #0x0]
- ldr r5, [r3, #0x0]
- mov r1, r2, asr #0x10
- ldr r4, [r5, #0x8]
- mov r3, r7
- add r2, r4, #0xc
- str r2, [sp, #0x0]
- ldr r4, [r5, #0x14]
- mvn r2, #0x0
- str r4, [sp, #0x4]
- ldr r4, [r5, #0x18]
- str r4, [sp, #0x8]
- bl FUN_020B46B4
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
-_020B533C:
- ldr r2, _020B53A4 ; =UNK_021CED14
- ldr r0, [r7, #0x0]
- ldr r5, [r2, #0x0]
- mov r0, r0, lsl #0x7
- ldr r4, [r5, #0x8]
- mov r0, r0, lsr #0x17
- cmp r0, #0xff
- orrgt r0, r0, #0xff00
- movgt r0, r0, lsl #0x10
- ldrb r1, [r7, #0x0]
- add r4, r4, #0xc
- movgt r0, r0, asr #0x10
- str r4, [sp, #0x0]
- ldr r4, [r5, #0x14]
- cmp r1, #0x7f
- orrgt r1, r1, #0xff00
- movgt r1, r1, lsl #0x10
- str r4, [sp, #0x4]
- ldr r4, [r5, #0x18]
- movgt r1, r1, asr #0x10
- mov r3, r7
- mvn r2, #0x0
- str r4, [sp, #0x8]
- bl FUN_020B46B4
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020B53A4: .word UNK_021CED14
-_020B53A8: .word 0xC000C000
-_020B53AC: .word UNK_020FF8AC
-_020B53B0: .word UNK_020FF894
-
- arm_func_start FUN_020B53B4
-FUN_020B53B4: ; 0x020B53B4
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x44
- ldr r2, _020B57B0 ; =UNK_021CED14
- mov r10, r0
- ldr r0, [r2, #0x0]
- mov r11, r1
- ldr r9, [r0, #0x2c]
- ldr r1, _020B57B0 ; =UNK_021CED14
- cmp r9, #0x0
- ldreq sb, _020B57B4 ; =UNK_020FF958
- ldr r3, [r1, #0x0]
- ldr r4, [r9, #0x10]
- str r4, [sp, #0x18]
- ldr r2, [r9, #0x14]
- str r2, [sp, #0x1c]
- ldr r1, [r10, #0x0]
- sub r1, r4, r1
- str r1, [sp, #0x18]
- ldr r1, [r10, #0x4]
- sub r1, r2, r1
- str r1, [sp, #0x1c]
- ldr r2, [r3, #0x24]
- ldr r1, [r3, #0x10]
- cmp r2, #0x0
- str r1, [sp, #0x4]
- bne _020B5430
- ldr r1, [r3, #0x28]
- cmp r1, #0x0
- movne r1, #0x1
- strne r1, [sp, #0x0]
- bne _020B5438
-_020B5430:
- mov r1, #0x0
- str r1, [sp, #0x0]
-_020B5438:
- ldrh r1, [r11, #0x0]
- add r7, r0, #0x38
- mov r8, #0x0
- cmp r1, #0x0
- addls sp, sp, #0x44
- ldmlsia sp!, {r4-r11,pc}
- mov r0, #0x1
- ldr r4, _020B57B0 ; =UNK_021CED14
- str r8, [sp, #0x14]
- str r0, [sp, #0xc]
-_020B5460:
- ldr r2, [r4, #0x0]
- ldr r0, [sp, #0xc]
- mov r1, #0x6
- str r0, [r2, #0x30]
- mul r0, r8, r1
- ldr r1, [r11, #0x4]
- add r2, r1, r0
- ldrh r0, [r1, r0]
- strh r0, [r7, #0x0]
- ldrh r0, [r2, #0x2]
- strh r0, [r7, #0x2]
- ldrh r0, [r2, #0x4]
- strh r0, [r7, #0x4]
- ldr r3, [r10, #0x20]
- cmp r3, #0x0
- beq _020B54B0
- ldr r0, [r4, #0x0]
- mov r1, r11
- mov r2, r8
- blx r3
-_020B54B0:
- ldr r0, [r4, #0x0]
- ldr r0, [r0, #0x30]
- cmp r0, #0x0
- beq _020B5790
- ldr r0, [sp, #0x0]
- ldr r1, [r7, #0x4]
- cmp r0, #0x0
- mov r0, #0x400
- rsb r0, r0, #0x0
- and r2, r1, r0
- ldr r0, [sp, #0x4]
- mov r1, r1, lsl #0x16
- add r1, r0, r1, lsr #0x16
- ldr r0, _020B57B8 ; =0x000003FF
- and r0, r1, r0
- orr r0, r2, r0
- str r0, [r7, #0x4]
- beq _020B5600
- ldr r0, [r10, #0x14]
- ldr lr, [r4, #0x0]
- sub r1, r0, #0x1
- ldr r0, [r7, #0x0]
- ldr r6, [lr, #0x28]
- mov r2, r0, lsl #0x2
- mov r2, r2, lsr #0x1f
- mov r2, r2, lsl #0x1
- mov r0, r0, lsl #0x3
- orr r5, r2, r0, lsr #0x1f
- add r0, r6, r5, lsl #0x2
- add r0, r0, r1, lsl #0x1
- ldrh r1, [r0, #0x10]
- ldr r0, _020B57BC ; =0x0000FFFF
- str r1, [sp, #0x8]
- cmp r1, r0
- bne _020B55CC
- cmp r5, #0x0
- bne _020B5558
- ldr r1, [lr, #0x20]
- mov r0, r6
- blx r1
- str r0, [sp, #0x8]
- b _020B55B4
-_020B5558:
- ands r0, r5, #0x1
- add r12, sp, #0x30
- ldmia r6, {r0-r3}
- stmia r12, {r0-r3}
- beq _020B5584
- ldr r1, [sp, #0x30]
- ldr r0, [sp, #0x34]
- rsb r1, r1, #0x0
- str r1, [sp, #0x30]
- rsb r0, r0, #0x0
- str r0, [sp, #0x34]
-_020B5584:
- ands r0, r5, #0x2
- beq _020B55A4
- ldr r1, [sp, #0x38]
- ldr r0, [sp, #0x3c]
- rsb r1, r1, #0x0
- str r1, [sp, #0x38]
- rsb r0, r0, #0x0
- str r0, [sp, #0x3c]
-_020B55A4:
- ldr r1, [lr, #0x20]
- add r0, sp, #0x30
- blx r1
- str r0, [sp, #0x8]
-_020B55B4:
- ldr r1, [r10, #0x14]
- add r0, r6, r5, lsl #0x2
- sub r1, r1, #0x1
- add r1, r0, r1, lsl #0x1
- ldr r0, [sp, #0x8]
- strh r0, [r1, #0x10]
-_020B55CC:
- ldr r1, [r9, #0x0]
- add r0, sp, #0x20
- str r1, [sp, #0x20]
- ldr r2, [r9, #0x4]
- mov r1, r7
- str r2, [sp, #0x24]
- ldr r3, [r9, #0x8]
- add r2, sp, #0x18
- str r3, [sp, #0x28]
- ldr r3, [r9, #0xc]
- str r3, [sp, #0x2c]
- bl FUN_020B57D8
- b _020B5750
-_020B5600:
- ldr r0, _020B57C0 ; =0x0000FFFE
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x0]
- ldr r1, [r0, #0x24]
- cmp r1, #0x0
- beq _020B5714
- ldr r2, [r7, #0x0]
- ldr r1, _020B57C4 ; =0xC000C000
- mov r6, r2, lsl #0x3
- and r5, r2, r1
- bl FUN_020B4F88
- ldr r1, [r7, #0x0]
- eor r6, r0, r6, lsr #0x1f
- mov r1, r1, lsl #0x2
- ldr r0, [r4, #0x0]
- str r1, [sp, #0x10]
- bl FUN_020B4F74
- ldr r1, [sp, #0x10]
- eor r0, r0, r1, lsr #0x1f
- ldr r1, [r7, #0x0]
- bic r1, r1, #0x10000000
- str r1, [r7, #0x0]
- ldr r1, [r7, #0x0]
- orr r1, r1, r6, lsl #0x1c
- str r1, [r7, #0x0]
- ldr r1, [r7, #0x0]
- bic r1, r1, #0x20000000
- str r1, [r7, #0x0]
- ldr r1, [r7, #0x0]
- orr r0, r1, r0, lsl #0x1d
- str r0, [r7, #0x0]
- ldr r0, [r4, #0x0]
- bl FUN_020B4F88
- cmp r0, #0x0
- beq _020B56D4
- and r1, r5, #0xc000
- mov r2, r1, asr #0xe
- ldr r1, _020B57C8 ; =UNK_020FF8AC
- and r3, r5, #0xc0000000
- mov r3, r3, lsr #0x1e
- add r2, r1, r2, lsl #0x3
- mov r3, r3, lsl #0x1
- ldr r0, [r7, #0x0]
- ldr r1, _020B57CC ; =0xFE00FFFF
- ldrh r2, [r3, r2]
- and r1, r0, r1
- mov r0, r0, lsl #0x7
- add r0, r2, r0, lsr #0x17
- rsb r2, r0, #0x0
- ldr r0, _020B57D0 ; =0x000001FF
- and r0, r2, r0
- orr r0, r1, r0, lsl #0x10
- str r0, [r7, #0x0]
-_020B56D4:
- ldr r0, [r4, #0x0]
- bl FUN_020B4F74
- cmp r0, #0x0
- beq _020B5714
- and r1, r5, #0xc000
- mov r3, r1, asr #0xe
- and r1, r5, #0xc0000000
- mov r1, r1, lsr #0x1e
- mov r2, r1, lsl #0x1
- ldr r1, _020B57D4 ; =UNK_020FF894
- ldrb r0, [r7, #0x0]
- add r1, r1, r3, lsl #0x3
- ldrh r1, [r2, r1]
- add r0, r0, r1
- rsb r0, r0, #0x0
- strb r0, [r7, #0x0]
-_020B5714:
- ldr r2, [r7, #0x0]
- ldr r0, _020B57CC ; =0xFE00FFFF
- ldr r1, [sp, #0x18]
- and r0, r2, r0
- mov r2, r2, lsl #0x7
- mov r2, r2, lsr #0x17
- add r2, r2, r1, asr #0xc
- ldr r1, _020B57D0 ; =0x000001FF
- and r1, r2, r1
- orr r0, r0, r1, lsl #0x10
- str r0, [r7, #0x0]
- ldrb r1, [r7, #0x0]
- ldr r0, [sp, #0x1c]
- add r0, r1, r0, asr #0xc
- strb r0, [r7, #0x0]
-_020B5750:
- ldr r3, [r4, #0x0]
- ldr r1, [sp, #0x8]
- ldr r2, [sp, #0x14]
- ldr r3, [r3, #0x1c]
- mov r0, r7
- blx r3
- cmp r0, #0x1
- addne sp, sp, #0x44
- ldmneia sp!, {r4-r11,pc}
- ldr r3, [r10, #0x24]
- cmp r3, #0x0
- beq _020B5790
- ldr r0, [r4, #0x0]
- mov r1, r11
- mov r2, r8
- blx r3
-_020B5790:
- add r0, r8, #0x1
- mov r0, r0, lsl #0x10
- mov r8, r0, lsr #0x10
- ldrh r0, [r11, #0x0]
- cmp r8, r0
- blo _020B5460
- add sp, sp, #0x44
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B57B0: .word UNK_021CED14
-_020B57B4: .word UNK_020FF958
-_020B57B8: .word 0x000003FF
-_020B57BC: .word 0x0000FFFF
-_020B57C0: .word 0x0000FFFE
-_020B57C4: .word 0xC000C000
-_020B57C8: .word UNK_020FF8AC
-_020B57CC: .word 0xFE00FFFF
-_020B57D0: .word 0x000001FF
-_020B57D4: .word UNK_020FF894
-
- arm_func_start FUN_020B57D8
-FUN_020B57D8: ; 0x020B57D8
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- ldr r4, [r1, #0x0]
- ldr r3, _020B5A9C ; =0x01FF0000
- and r3, r4, r3
- mov r3, r3, lsr #0x10
- mov r3, r3, lsl #0x10
- mov r3, r3, asr #0x10
- cmp r3, #0xff
- orrgt r3, r3, #0xff00
- movgt r3, r3, lsl #0x10
- movgt r3, r3, asr #0x10
- mov r3, r3, lsl #0xc
- str r3, [sp, #0x0]
- ldr r3, [r1, #0x0]
- and r3, r3, #0xff
- mov r3, r3, lsl #0x10
- mov r3, r3, asr #0x10
- cmp r3, #0x7f
- orrgt r3, r3, #0xff00
- movgt r3, r3, lsl #0x10
- movgt r3, r3, asr #0x10
- mov r3, r3, lsl #0xc
- str r3, [sp, #0x4]
- ldr r5, [r1, #0x0]
- and r4, r5, #0x300
- cmp r4, #0x100
- beq _020B5858
- cmp r4, #0x300
- beq _020B5858
- and r3, r5, #0x30000000
- orr r4, r4, r3
-_020B5858:
- cmp r4, #0x300
- bne _020B58AC
- ldr r3, _020B5AA0 ; =0xC000C000
- ldr r4, _020B5AA4 ; =UNK_020FF8AC
- and r3, r5, r3
- and r5, r3, #0xc0000000
- and r3, r3, #0xc000
- mov r6, r5, lsr #0x1e
- mov r5, r3, asr #0xe
- ldr r3, _020B5AA8 ; =UNK_020FF894
- mov r6, r6, lsl #0x1
- add r4, r4, r5, lsl #0x3
- add r3, r3, r5, lsl #0x3
- ldrh r5, [r6, r4]
- ldr r7, [sp, #0x0]
- ldrh r3, [r6, r3]
- ldr r4, [sp, #0x4]
- add r5, r7, r5, lsl #0xb
- add r3, r4, r3, lsl #0xb
- str r5, [sp, #0x0]
- str r3, [sp, #0x4]
-_020B58AC:
- ldr r5, [r0, #0x8]
- ldr r4, [sp, #0x4]
- add r3, sp, #0x0
- smull r8, r7, r5, r4
- cmp r3, r3
- ldr r6, [r0, #0x0]
- mov r4, #0x1000
- addeq r3, sp, #0x8
- adds r8, r8, r4
- ldr r5, [sp, #0x0]
- adc r7, r7, #0x0
- smlal r8, r7, r6, r5
- mov r5, r8, lsr #0xc
- orr r5, r5, r7, lsl #0x14
- str r5, [r3, #0x0]
- ldr r7, [r0, #0xc]
- ldr r6, [sp, #0x4]
- ldr r5, [r0, #0x4]
- smull r8, r6, r7, r6
- adds r7, r8, r4
- ldr r4, [sp, #0x0]
- adc r6, r6, #0x0
- smlal r7, r6, r5, r4
- mov r5, r7, lsr #0xc
- add r4, sp, #0x8
- orr r5, r5, r6, lsl #0x14
- str r5, [r3, #0x4]
- cmp r3, r4
- ldreq r3, [sp, #0xc]
- ldreq r4, [sp, #0x8]
- streq r3, [sp, #0x4]
- ldr r3, _020B5AAC ; =UNK_021CED14
- streq r4, [sp, #0x0]
- ldr r3, [r3, #0x0]
- ldr r3, [r3, #0x4]
- cmp r3, #0x0
- beq _020B597C
- cmp r3, #0x2
- moveq r5, #0x300
- movne r5, #0x100
- cmp r5, #0x100
- ldreq r4, [r1, #0x0]
- ldreq r3, _020B5AB0 ; =0xC1FFFCFF
- andeq r3, r4, r3
- orreq r3, r3, r5
- streq r3, [r1, #0x0]
- beq _020B597C
- ldr r4, [r1, #0x0]
- ldr r3, _020B5AB0 ; =0xC1FFFCFF
- and r3, r4, r3
- orr r3, r3, r5
- str r3, [r1, #0x0]
-_020B597C:
- ldr r6, [r1, #0x0]
- and r5, r6, #0x300
- cmp r5, #0x100
- beq _020B599C
- cmp r5, #0x300
- beq _020B599C
- and r3, r6, #0x30000000
- orr r5, r5, r3
-_020B599C:
- ldr r3, _020B5AA0 ; =0xC000C000
- ldr r4, _020B5AA4 ; =UNK_020FF8AC
- and r3, r6, r3
- and r6, r3, #0xc0000000
- and r3, r3, #0xc000
- mov lr, r3, asr #0xe
- mov r6, r6, lsr #0x1e
- mov r3, r6, lsl #0x1
- add r4, r4, lr, lsl #0x3
- ldrh r4, [r3, r4]
- ldr r6, [r0, #0x0]
- ldr r8, _020B5AA8 ; =UNK_020FF894
- mov r12, r4, asr #0x1
- mov r4, r12, lsl #0xc
- rsb r7, r4, #0x0
- mla r7, r6, r12, r7
- add lr, r8, lr, lsl #0x3
- ldrh r3, [r3, lr]
- ldr r6, [r0, #0x8]
- ldr lr, [sp, #0x0]
- mov r3, r3, asr #0x1
- mla r7, r6, r3, r7
- add r6, lr, r7
- str r6, [sp, #0x0]
- mov lr, r3, lsl #0xc
- ldr r6, [r0, #0x4]
- rsb r7, lr, #0x0
- mla r7, r6, r12, r7
- ldr r0, [r0, #0xc]
- ldr r6, [sp, #0x4]
- mla r3, r0, r3, r7
- add r0, r6, r3
- str r0, [sp, #0x4]
- cmp r5, #0x300
- moveq r0, #0x1
- movne r0, #0x0
- cmp r0, #0x0
- beq _020B5A4C
- ldr r3, [sp, #0x0]
- ldr r0, [sp, #0x4]
- sub r3, r3, r4
- sub r0, r0, lr
- str r3, [sp, #0x0]
- str r0, [sp, #0x4]
-_020B5A4C:
- ldr r4, [sp, #0x0]
- ldr r0, [r2, #0x0]
- ldr r3, [sp, #0x4]
- add r5, r4, r0
- str r5, [sp, #0x0]
- ldr r2, [r2, #0x4]
- ldr r0, _020B5AB4 ; =0x000001FF
- add r2, r3, r2
- str r2, [sp, #0x4]
- mov r3, r2, asr #0xc
- ldr r4, [r1, #0x0]
- ldr r2, _020B5AB8 ; =0xFE00FF00
- and r3, r3, #0xff
- and r2, r4, r2
- and r4, r0, r5, asr #0xc
- orr r0, r2, r3
- orr r0, r0, r4, lsl #0x10
- str r0, [r1, #0x0]
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020B5A9C: .word 0x01FF0000
-_020B5AA0: .word 0xC000C000
-_020B5AA4: .word UNK_020FF8AC
-_020B5AA8: .word UNK_020FF894
-_020B5AAC: .word UNK_021CED14
-_020B5AB0: .word 0xC1FFFCFF
-_020B5AB4: .word 0x000001FF
-_020B5AB8: .word 0xFE00FF00
-
- arm_func_start FUN_020B5ABC
-FUN_020B5ABC: ; 0x020B5ABC
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0xc
- add r5, sp, #0x0
- mov r4, #0x0
- str r4, [r5, #0x0]
- str r4, [r5, #0x4]
- mov r8, r2
- ldr r2, [sp, #0x28]
- mov r5, r0
- mov r9, r1
- mov r4, r3
- cmp r2, #0x0
- mov r7, #0x1
- beq _020B5B24
- add r6, sp, #0x28
-_020B5AF8:
- mov r0, r9
- mov r1, r8
- mov r3, r6
- bl FUN_020B5BC8
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0x28]
- cmp r0, r1
- strgt r0, [sp, #0x0]
- add r7, r7, #0x1
- cmp r2, #0x0
- bne _020B5AF8
-_020B5B24:
- ldr r0, [r9, #0x0]
- sub r2, r7, #0x1
- ldrsb r1, [r0, #0x1]
- ldr r0, [sp, #0x0]
- add r1, r4, r1
- mul r1, r2, r1
- sub r1, r1, r4
- str r1, [sp, #0x4]
- str r0, [r5, #0x0]
- str r1, [r5, #0x4]
- add sp, sp, #0xc
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start FUN_020B5B54
-FUN_020B5B54: ; 0x020B5B54
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- str r2, [sp, #0x0]
- add r3, sp, #0x4
- mov r2, #0x0
- str r2, [r3, #0x0]
- mov r8, r0
- str r2, [r3, #0x4]
- ldr r7, [r8, #0x4]
- add r0, sp, #0x0
- mov r5, r1
- mov r4, #0x1
- blx r7
- cmp r0, #0x0
- beq _020B5BAC
- add r6, sp, #0x0
-_020B5B94:
- cmp r0, #0xa
- mov r0, r6
- addeq r4, r4, #0x1
- blx r7
- cmp r0, #0x0
- bne _020B5B94
-_020B5BAC:
- ldr r0, [r8, #0x0]
- ldrsb r0, [r0, #0x1]
- add r0, r5, r0
- mul r0, r4, r0
- sub r0, r0, r5
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B5BC8
-FUN_020B5BC8:
- stmdb sp!, {r4-r10,lr}
- sub sp, sp, #0x8
- mov r8, r0
- str r2, [sp, #0x0]
- ldr r4, [r8, #0x4]
- add r0, sp, #0x0
- mov r7, r1
- mov r6, r3
- mov r5, #0x0
- blx r4
- movs r1, r0
- beq _020B5C58
- ldr sb, _020B5C84 ; =0x0000FFFF
- add r10, sp, #0x0
-_020B5C00:
- cmp r1, #0xa
- beq _020B5C58
- mov r0, r8
- bl FUN_020B5CE4
- mov r1, r0
- cmp r1, r9
- ldreq r0, [r8, #0x0]
- ldreqh r1, [r0, #0x2]
- mov r0, r8
- bl FUN_020B5C88
- ldrh r1, [r8, #0x8]
- cmp r1, #0x0
- ldrnesb r1, [r0, #0x0]
- ldrneb r0, [r0, #0x1]
- addne r0, r1, r0
- ldreqsb r0, [r0, #0x2]
- add r1, r7, r0
- mov r0, r10
- add r5, r5, r1
- blx r4
- movs r1, r0
- bne _020B5C00
-_020B5C58:
- cmp r6, #0x0
- beq _020B5C70
- cmp r1, #0xa
- ldreq r0, [sp, #0x0]
- movne r0, #0x0
- str r0, [r6, #0x0]
-_020B5C70:
- cmp r5, #0x0
- subgt r5, r5, r7
- mov r0, r5
- add sp, sp, #0x8
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020B5C84: .word 0x0000FFFF
-
- arm_func_start FUN_020B5C88
-FUN_020B5C88: ; 0x020B5C88
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x0]
- ldr lr, [r3, #0xc]
- cmp lr, #0x0
- beq _020B5CD8
-_020B5CA0:
- ldrh r12, [lr, #0x0]
- cmp r12, r1
- bhi _020B5CCC
- ldrh r2, [lr, #0x2]
- cmp r1, r2
- ldrlsh r2, [r0, #0xa]
- addls r3, lr, #0x8
- subls r0, r1, r12
- mlals r0, r2, r0, r3
- addls sp, sp, #0x4
- ldmlsia sp!, {pc}
-_020B5CCC:
- ldr lr, [lr, #0x4]
- cmp lr, #0x0
- bne _020B5CA0
-_020B5CD8:
- add r0, r3, #0x4
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020B5CE4
-FUN_020B5CE4: ; 0x020B5CE4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0x10]
- cmp r0, #0x0
- beq _020B5D2C
-_020B5CFC:
- ldrh r2, [r0, #0x0]
- cmp r2, r1
- bhi _020B5D20
- ldrh r2, [r0, #0x2]
- cmp r1, r2
- bhi _020B5D20
- bl FUN_020B5D7C
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020B5D20:
- ldr r0, [r0, #0x8]
- cmp r0, #0x0
- bne _020B5CFC
-_020B5D2C:
- ldr r0, _020B5D38 ; =0x0000FFFF
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B5D38: .word 0x0000FFFF
-
- arm_func_start FUN_020B5D3C
-FUN_020B5D3C: ; 0x020B5D3C
- stmdb sp!, {r4,lr}
- mov r4, r0
- mov r0, r1
- mov r1, r4
- bl FUN_020B7558
- sub r0, r0, #0x1
- strh r0, [r4, #0x8]
- ldrh r0, [r4, #0x8]
- cmp r0, #0x0
- movne r1, #0x2
- moveq r1, #0x3
- ldr r0, _020B5D78 ; =FUN_020B7718
- strh r1, [r4, #0xa]
- str r0, [r4, #0x4]
- ldmia sp!, {r4,pc}
- .balign 4
-_020B5D78: .word FUN_020B7718
-
- arm_func_start FUN_020B5D7C
-FUN_020B5D7C: ; 0x020B5D7C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldrh r3, [r0, #0x4]
- ldr r2, _020B5E4C ; =0x0000FFFF
- cmp r3, #0x0
- beq _020B5DA8
- cmp r3, #0x1
- beq _020B5DC4
- cmp r3, #0x2
- beq _020B5DD8
- b _020B5E40
-_020B5DA8:
- ldrh r2, [r0, #0x0]
- ldrh r3, [r0, #0xc]
- sub r0, r1, r2
- add r0, r3, r0
- mov r0, r0, lsl #0x10
- mov r2, r0, lsr #0x10
- b _020B5E40
-_020B5DC4:
- ldrh r2, [r0, #0x0]
- sub r1, r1, r2
- add r0, r0, r1, lsl #0x1
- ldrh r2, [r0, #0xc]
- b _020B5E40
-_020B5DD8:
- ldrh r3, [r0, #0xc]
- add r0, r0, #0xc
- add r0, r0, #0x2
- sub r3, r3, #0x1
- add lr, r0, r3, lsl #0x2
- cmp r0, lr
- bhi _020B5E40
-_020B5DF4:
- sub r12, lr, r0
- mov r3, r12, asr #0x1
- add r3, r12, r3, lsr #0x1e
- mov r3, r3, asr #0x2
- add r3, r3, r3, lsr #0x1f
- mov r12, r3, asr #0x1
- mov r3, r12, lsl #0x2
- ldrh r3, [r0, r3]
- add r12, r0, r12, lsl #0x2
- cmp r3, r1
- addcc r0, r12, #0x4
- blo _020B5E38
- cmp r1, r3
- subcc lr, r12, #0x4
- blo _020B5E38
- ldrh r2, [r12, #0x2]
- b _020B5E40
-_020B5E38:
- cmp r0, lr
- bls _020B5DF4
-_020B5E40:
- mov r0, r2
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B5E4C: .word 0x0000FFFF
-
- arm_func_start FUN_020B5E50
-FUN_020B5E50: ; 0x020B5E50
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x3c
- mov r7, r0
- mov r0, r1
- cmp r0, #0x8
- ldr r0, [sp, #0x60]
- str r1, [sp, #0x10]
- str r0, [sp, #0x60]
- ldr r0, [sp, #0x6c]
- str r2, [sp, #0x14]
- str r0, [sp, #0x6c]
- ldrlt r0, [sp, #0x10]
- mov r11, r3
- ldr r6, [sp, #0x64]
- ldr r5, [sp, #0x68]
- movge r2, #0x3
- clzlt r0, r0
- rsblt r2, r0, #0x1f
- ldr r0, [sp, #0x14]
- cmp r0, #0x8
- ldrlt r0, [sp, #0x14]
- movge r1, #0x3
- clzlt r0, r0
- rsblt r1, r0, #0x1f
- ldr r0, _020B6170 ; =UNK_020FF970
- mvn r3, #0x0
- add r1, r0, r1, lsl #0x3
- add r0, r1, r2, lsl #0x1
- ldrb r4, [r1, r2, lsl #0x1]
- ldrb r1, [r0, #0x1]
- ldr r2, [sp, #0x14]
- cmp r6, #0x0
- str r1, [sp, #0x18]
- ldr r1, [sp, #0x10]
- and r1, r1, r3, lsl r4
- str r1, [sp, #0x1c]
- ldr r1, [sp, #0x18]
- and r1, r2, r3, lsl r1
- str r1, [sp, #0x20]
- moveq r1, #0x1
- streq r1, [sp, #0x24]
- movne r1, #0x2
- strne r1, [sp, #0x24]
- mov r1, #0x0
- str r1, [sp, #0x28]
- bl FUN_020B704C
- ldr r1, [sp, #0x10]
- ldr r2, [sp, #0x14]
- mov r10, r1, asr r4
- ldr r1, [sp, #0x18]
- mov r1, r2, asr r1
- str r1, [sp, #0x2c]
- ldr r1, [sp, #0x24]
- mov r2, r1, lsl r4
- ldr r1, [sp, #0x18]
- mov r2, r2, lsl r1
- ldr r1, [sp, #0x6c]
- mov r9, r2, asr r1
- mov r1, #0x0
- str r1, [sp, #0x30]
- str r1, [sp, #0x34]
- b _020B5FE8
-_020B5F48:
- ldr r2, [sp, #0x30]
- ldr r1, [sp, #0x18]
- ldr r8, [sp, #0x34]
- mov r2, r2, lsl r1
- ldr r1, [sp, #0x60]
- add lr, r1, r2, lsl #0x3
- b _020B5FD4
-_020B5F64:
- mov r1, r8, lsl r4
- add r2, r11, r1, lsl #0x3
- ldr r1, _020B6174 ; =0x000001FF
- ldr r3, [r7, #0x0]
- and r12, r2, r1
- ldr r1, _020B6178 ; =0xFE00FF00
- and r2, lr, #0xff
- and r1, r3, r1
- orr r1, r1, r2
- orr r1, r1, r12, lsl #0x10
- str r1, [r7, #0x0]
- ldr r3, [r7, #0x0]
- ldr r1, _020B617C ; =0x3FFF3FFF
- mov r2, #0x400
- and r1, r3, r1
- orr r1, r1, r0
- str r1, [r7, #0x0]
- rsb r1, r2, #0x0
- ldrh r2, [r7, #0x4]
- add r8, r8, #0x1
- and r1, r2, r1
- orr r1, r1, r5
- strh r1, [r7, #0x4]
- ldr r1, [r7, #0x0]
- add r5, r5, r9
- bic r1, r1, #0x2000
- orr r1, r1, r6, lsl #0xd
- str r1, [r7], #0x8
-_020B5FD4:
- cmp r8, r10
- blt _020B5F64
- ldr r1, [sp, #0x30]
- add r1, r1, #0x1
- str r1, [sp, #0x30]
-_020B5FE8:
- ldr r2, [sp, #0x30]
- ldr r1, [sp, #0x2c]
- cmp r2, r1
- blt _020B5F48
- ldr r0, [sp, #0x28]
- mla r0, r10, r1, r0
- str r0, [sp, #0x28]
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x10]
- cmp r1, r0
- bhs _020B6078
- ldr r0, [sp, #0x60]
- ldr r1, [sp, #0x10]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x1c]
- str r6, [sp, #0x4]
- sub r4, r1, r0
- ldr r1, [sp, #0x6c]
- str r5, [sp, #0x8]
- str r1, [sp, #0xc]
- ldr r1, [sp, #0x1c]
- ldr r2, [sp, #0x20]
- add r3, r11, r1, lsl #0x3
- mov r0, r7
- mov r1, r4
- bl FUN_020B5E50
- ldr r1, [sp, #0x24]
- add r7, r7, r0, lsl #0x3
- mul r2, r1, r4
- ldr r1, [sp, #0x20]
- mul r2, r1, r2
- ldr r1, [sp, #0x6c]
- add r5, r5, r2, lsr r1
- ldr r1, [sp, #0x28]
- add r0, r1, r0
- str r0, [sp, #0x28]
-_020B6078:
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x14]
- cmp r1, r0
- bhs _020B60F0
- ldr r1, [sp, #0x60]
- ldr r0, [sp, #0x20]
- mov r3, r11
- add r0, r1, r0, lsl #0x3
- str r0, [sp, #0x0]
- str r6, [sp, #0x4]
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #0x20]
- str r5, [sp, #0x8]
- sub r4, r1, r0
- ldr r1, [sp, #0x6c]
- mov r0, r7
- str r1, [sp, #0xc]
- ldr r1, [sp, #0x1c]
- mov r2, r4
- bl FUN_020B5E50
- ldr r2, [sp, #0x24]
- ldr r1, [sp, #0x1c]
- add r7, r7, r0, lsl #0x3
- mul r1, r2, r1
- mul r2, r4, r1
- ldr r1, [sp, #0x6c]
- add r5, r5, r2, lsr r1
- ldr r1, [sp, #0x28]
- add r0, r1, r0
- str r0, [sp, #0x28]
-_020B60F0:
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x10]
- cmp r1, r0
- bhs _020B6164
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x14]
- cmp r1, r0
- bhs _020B6164
- ldr r1, [sp, #0x60]
- ldr r0, [sp, #0x20]
- ldr r2, [sp, #0x10]
- add r0, r1, r0, lsl #0x3
- ldr r1, [sp, #0x1c]
- ldr r3, [sp, #0x14]
- str r0, [sp, #0x0]
- sub r1, r2, r1
- ldr r2, [sp, #0x20]
- str r6, [sp, #0x4]
- sub r2, r3, r2
- ldr r3, [sp, #0x1c]
- ldr r4, [sp, #0x6c]
- str r5, [sp, #0x8]
- mov r0, r7
- add r3, r11, r3, lsl #0x3
- str r4, [sp, #0xc]
- bl FUN_020B5E50
- ldr r1, [sp, #0x28]
- add r0, r1, r0
- str r0, [sp, #0x28]
-_020B6164:
- ldr r0, [sp, #0x28]
- add sp, sp, #0x3c
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B6170: .word UNK_020FF970
-_020B6174: .word 0x000001FF
-_020B6178: .word 0xFE00FF00
-_020B617C: .word 0x3FFF3FFF
-
- arm_func_start FUN_020B6180
-FUN_020B6180: ; 0x020B6180
- stmdb sp!, {r4-r6,lr}
- mov r3, r0, lsr #0x3
- mov r6, r1, lsr #0x3
- mul r12, r3, r6
- and r2, r0, #0x4
- and lr, r0, #0x2
- and r0, r0, #0x1
- add r4, r0, lr, lsr #0x1
- mov r5, r2, lsr #0x2
- and r0, r1, #0x4
- add lr, r12, #0x0
- add r12, r5, r4, lsl #0x1
- mla r12, r6, r12, lr
- and lr, r1, #0x2
- and r1, r1, #0x1
- add lr, r1, lr, lsr #0x1
- mov r1, r0, lsr #0x2
- add r1, r1, lr, lsl #0x1
- mla r12, r3, r1, r12
- add r1, r4, r2, lsr #0x2
- add r0, lr, r0, lsr #0x2
- mla r0, r1, r0, r12
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020B61DC
-FUN_020B61DC: ; 0x020B61DC
- stmdb sp!, {r4-r8,lr}
- ldr r12, [sp, #0x1c]
- ldr r8, [sp, #0x18]
- mov r12, r12, lsl #0x1c
- mov r4, r12, lsr #0x10
- mov r6, #0x0
- cmp r2, #0x0
- ldmleia sp!, {r4-r8,pc}
- mov lr, r3, lsl #0x1
- mov r12, r6
-_020B6204:
- mov r5, r0
- mov r7, r12
- cmp r1, #0x0
- ble _020B622C
-_020B6214:
- orr r3, r4, r8
- add r7, r7, #0x1
- cmp r7, r1
- add r8, r8, #0x1
- strh r3, [r5], #0x2
- blt _020B6214
-_020B622C:
- add r6, r6, #0x1
- cmp r6, r2
- add r0, r0, lr
- blt _020B6204
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B6240
-FUN_020B6240: ; 0x020B6240
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x8
- ldr r5, [sp, #0x24]
- ldr lr, [sp, #0x20]
- cmp r5, #0x20
- ldr r12, [sp, #0x28]
- bgt _020B6280
- mla r4, r5, lr, r3
- ldr lr, [sp, #0x2c]
- str r12, [sp, #0x0]
- mov r3, r5
- add r0, r0, r4, lsl #0x1
- str lr, [sp, #0x4]
- bl FUN_020B61DC
- add sp, sp, #0x8
- ldmia sp!, {r4-r8,pc}
-_020B6280:
- ldr r4, [sp, #0x2c]
- add r7, lr, r2
- mov r2, r4, lsl #0x1c
- cmp lr, r7
- add r8, r3, r1
- mov r4, r2, lsr #0x10
- addge sp, sp, #0x8
- ldmgeia sp!, {r4-r8,pc}
-_020B62A0:
- cmp lr, #0x20
- movlt r1, lr
- addge r1, lr, #0x20
- mov r6, r3
- cmp r3, r8
- add r5, r0, r1, lsl #0x6
- bge _020B62E4
-_020B62BC:
- cmp r6, #0x20
- movlt r1, r6
- addge r1, r6, #0x3e0
- orr r2, r4, r12
- mov r1, r1, lsl #0x1
- add r6, r6, #0x1
- strh r2, [r5, r1]
- cmp r6, r8
- add r12, r12, #0x1
- blt _020B62BC
-_020B62E4:
- add lr, lr, #0x1
- cmp lr, r7
- blt _020B62A0
- add sp, sp, #0x8
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B62F8
-FUN_020B62F8: ; 0x020B62F8
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x18
- cmp r2, #0x8
- movlt r4, r2
- movge r12, #0x3
- clzlt r4, r4
- rsblt r12, r4, #0x1f
- cmp r3, #0x8
- movlt r4, r3
- movge r6, #0x3
- clzlt r4, r4
- rsblt r6, r4, #0x1f
- ldr r4, _020B6378 ; =UNK_020FF970
- ldr r5, [sp, #0x28]
- add r4, r4, r6, lsl #0x3
- ldrb r6, [r4, r12, lsl #0x1]
- add r12, r4, r12, lsl #0x1
- ldr r4, _020B637C ; =FUN_020B6908
- strb r6, [sp, #0x14]
- ldrb r6, [r12, #0x1]
- ldr lr, _020B6380 ; =FUN_020B68AC
- ldr ip, _020B6384 ; =FUN_020B64C0
- strb r6, [sp, #0x15]
- str r5, [sp, #0x0]
- str r4, [sp, #0x4]
- str lr, [sp, #0x8]
- str r12, [sp, #0xc]
- ldr r12, [sp, #0x14]
- str r12, [sp, #0x10]
- bl FUN_020B6488
- add sp, sp, #0x18
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B6378: .word UNK_020FF970
-_020B637C: .word FUN_020B6908
-_020B6380: .word FUN_020B68AC
-_020B6384: .word FUN_020B64C0
-
- arm_func_start FUN_020B6388
-FUN_020B6388: ; 0x020B6388
- stmdb sp!, {lr}
- sub sp, sp, #0x14
- ldr lr, [sp, #0x18]
- ldr ip, _020B63C0 ; =FUN_020B6B10
- str lr, [sp, #0x0]
- ldr lr, _020B63C4 ; =FUN_020B68AC
- str r12, [sp, #0x4]
- ldr ip, _020B63C8 ; =FUN_020B66D4
- str lr, [sp, #0x8]
- str r12, [sp, #0xc]
- str r2, [sp, #0x10]
- bl FUN_020B6488
- add sp, sp, #0x14
- ldmia sp!, {pc}
- .balign 4
-_020B63C0: .word FUN_020B6B10
-_020B63C4: .word FUN_020B68AC
-_020B63C8: .word FUN_020B66D4
-
- arm_func_start FUN_020B63CC
-FUN_020B63CC: ; 0x020B63CC
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- mov r7, r1
- ldrh r1, [sp, #0x2c]
- mov r8, r0
- mov r0, r7
- mov r6, r2
- mov r5, r3
- bl FUN_020B5CE4
- ldr r1, _020B6484 ; =0x0000FFFF
- mov r4, r0
- cmp r4, r1
- ldreq r0, [r7, #0x0]
- ldreqh r4, [r0, #0x2]
- mov r0, r7
- mov r1, r4
- bl FUN_020B5C88
- str r0, [sp, #0x8]
- ldr r0, [r7, #0x0]
- ldr r2, [sp, #0x28]
- ldr r0, [r0, #0x8]
- add r1, sp, #0x8
- ldrh r3, [r0, #0x2]
- add r12, r0, #0x8
- mov r0, r8
- mla r3, r4, r3, r12
- str r3, [sp, #0xc]
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- ldr r1, [sp, #0x8]
- ldr r4, [r8, #0x14]
- ldrsb r2, [r1, #0x0]
- mov r1, r7
- mov r3, r5
- add r2, r6, r2
- blx r4
- ldrh r0, [r7, #0x8]
- cmp r0, #0x0
- ldrne r0, [sp, #0x8]
- ldrnesb r1, [r0, #0x0]
- ldrneb r0, [r0, #0x1]
- addne r0, r1, r0
- ldreq r0, [sp, #0x8]
- ldreqsb r0, [r0, #0x2]
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020B6484: .word 0x0000FFFF
-
- arm_func_start FUN_020B6488
-FUN_020B6488: ; 0x020B6488
- str r2, [r0, #0x4]
- ldr r2, [sp, #0x0]
- str r3, [r0, #0x8]
- strb r2, [r0, #0xc]
- ldr r2, [sp, #0x4]
- str r1, [r0, #0x0]
- ldr r1, [sp, #0x8]
- str r2, [r0, #0x14]
- ldr r2, [sp, #0xc]
- str r1, [r0, #0x18]
- ldr r1, [sp, #0x10]
- str r2, [r0, #0x1c]
- str r1, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020B64C0
-FUN_020B64C0: ; 0x020B64C0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x54
- ldrb r4, [r0, #0xc]
- mov r10, r2
- str r1, [sp, #0xc]
- str r4, [sp, #0x44]
- ldr r1, [sp, #0x44]
- ldr r4, [sp, #0x78]
- cmp r1, #0x4
- add r1, r10, r4
- str r1, [sp, #0x1c]
- ldr r2, [sp, #0x7c]
- mov r1, r3
- add r1, r1, r2
- str r1, [sp, #0x20]
- ldrne r1, [sp, #0xc]
- str r3, [sp, #0x10]
- orrne r1, r1, r1, lsl #0x8
- orrne r1, r1, r1, lsl #0x10
- strne r1, [sp, #0xc]
- bne _020B6528
- ldr r1, [sp, #0xc]
- orr r1, r1, r1, lsl #0x4
- orr r1, r1, r1, lsl #0x8
- orr r1, r1, r1, lsl #0x10
- str r1, [sp, #0xc]
-_020B6528:
- bic r1, r10, #0x7
- str r1, [sp, #0x30]
- ldr r1, [sp, #0x10]
- ldr r2, [r0, #0x10]
- bic r1, r1, #0x7
- str r1, [sp, #0x14]
- ldr r1, [sp, #0x44]
- str r2, [sp, #0x4c]
- mov r3, r1, lsl #0x6
- mov r2, r3, asr #0x2
- ldr r1, [sp, #0x20]
- add r3, r3, r2, lsr #0x1d
- ldr r2, [sp, #0x1c]
- add r6, r1, #0x7
- add r2, r2, #0x7
- bic r5, r2, #0x7
- bic r2, r6, #0x7
- ldr r1, [sp, #0x30]
- str r2, [sp, #0x24]
- mov r2, r3, asr #0x3
- str r2, [sp, #0x48]
- mov r4, r1, asr #0x2
- ldr r2, [sp, #0x30]
- ldr r1, [sp, #0x14]
- add r2, r2, r4, lsr #0x1d
- mov r2, r2, asr #0x3
- str r2, [sp, #0x2c]
- ldr r2, [sp, #0x14]
- mov r1, r1, asr #0x2
- add r1, r2, r1, lsr #0x1d
- mov r6, r1, asr #0x3
- ldr r1, [sp, #0x24]
- cmp r2, r1
- ldr r1, [r0, #0x4]
- str r1, [sp, #0x40]
- ldr r1, [r0, #0x8]
- ldr r0, [r0, #0x0]
- str r1, [sp, #0x3c]
- str r0, [sp, #0x28]
- ldrb r0, [sp, #0x4c]
- str r0, [sp, #0x38]
- ldrb r0, [sp, #0x4d]
- str r0, [sp, #0x34]
- addge sp, sp, #0x54
- ldmgeia sp!, {r4-r11,pc}
- mov r4, #0x0
- mov r11, #0x8
-_020B65E4:
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #0x10]
- ldr r7, [sp, #0x2c]
- cmp r1, r0
- movlt r1, r0
- ldrlt r0, [sp, #0x14]
- sublt r9, r1, r0
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x14]
- movge r9, r4
- sub r0, r1, r0
- cmp r0, #0x8
- movgt r0, r11
- sub r0, r0, r9
- str r0, [sp, #0x18]
- ldr r0, [sp, #0x30]
- cmp r0, r5
- mov r8, r0
- bge _020B66B0
-_020B6630:
- ldr r0, [sp, #0x38]
- ldr r2, [sp, #0x40]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x34]
- ldr r3, [sp, #0x3c]
- str r0, [sp, #0x4]
- mov r0, r7
- mov r1, r6
- bl FUN_020B7068
- ldr r2, [sp, #0x1c]
- cmp r8, r10
- sublt r1, r10, r8
- sub r2, r2, r8
- movge r1, r4
- cmp r2, #0x8
- movgt r2, r11
- sub r3, r2, r1
- ldr r2, [sp, #0x18]
- ldr r12, [sp, #0x48]
- str r2, [sp, #0x0]
- ldr r2, [sp, #0xc]
- str r2, [sp, #0x4]
- ldr r2, [sp, #0x44]
- str r2, [sp, #0x8]
- ldr r2, [sp, #0x28]
- mla r0, r12, r0, r2
- mov r2, r9
- bl FUN_020B6F18
- add r8, r8, #0x8
- add r7, r7, #0x1
- cmp r8, r5
- blt _020B6630
-_020B66B0:
- ldr r0, [sp, #0x14]
- add r6, r6, #0x1
- add r1, r0, #0x8
- ldr r0, [sp, #0x24]
- str r1, [sp, #0x14]
- cmp r1, r0
- blt _020B65E4
- add sp, sp, #0x54
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B66D4
-FUN_020B66D4: ; 0x020B66D4
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x3c
- ldrb r4, [r0, #0xc]
- mov r10, r2
- str r1, [sp, #0xc]
- str r4, [sp, #0x2c]
- ldr r1, [sp, #0x2c]
- ldr r4, [sp, #0x60]
- cmp r1, #0x4
- add r1, r10, r4
- str r1, [sp, #0x18]
- ldr r2, [sp, #0x64]
- mov r1, r3
- add r1, r1, r2
- str r1, [sp, #0x1c]
- ldrne r1, [sp, #0xc]
- str r3, [sp, #0x10]
- orrne r1, r1, r1, lsl #0x8
- orrne r1, r1, r1, lsl #0x10
- strne r1, [sp, #0xc]
- bne _020B673C
- ldr r1, [sp, #0xc]
- orr r1, r1, r1, lsl #0x4
- orr r1, r1, r1, lsl #0x8
- orr r1, r1, r1, lsl #0x10
- str r1, [sp, #0xc]
-_020B673C:
- ldr r1, [sp, #0x10]
- bic r1, r1, #0x7
- mov r2, r1, asr #0x2
- str r1, [sp, #0x14]
- add r1, r1, r2, lsr #0x1d
- ldr r2, [r0, #0x10]
- mov r3, r1, asr #0x3
- mul r1, r3, r2
- bic r3, r10, #0x7
- str r3, [sp, #0x28]
- ldr r3, [sp, #0x2c]
- mov r6, r3, lsl #0x6
- ldr r3, [sp, #0x28]
- mov r4, r6, asr #0x2
- mov r5, r3, asr #0x2
- add r5, r3, r5, lsr #0x1d
- add r4, r6, r4, lsr #0x1d
- mov r3, r4, asr #0x3
- str r3, [sp, #0x30]
- ldr r3, [sp, #0x1c]
- add r1, r1, r5, asr #0x3
- add r4, r3, #0x7
- ldr r3, [r0, #0x0]
- ldr r0, [sp, #0x18]
- add r5, r0, #0x7
- ldr r0, [sp, #0x30]
- bic r7, r5, #0x7
- mla r1, r0, r1, r3
- bic r0, r4, #0x7
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x30]
- str r1, [sp, #0x24]
- mul r0, r2, r0
- str r0, [sp, #0x34]
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #0x20]
- cmp r1, r0
- addge sp, sp, #0x3c
- ldmgeia sp!, {r4-r11,pc}
- mov r5, #0x0
- mov r4, #0x8
-_020B67E0:
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #0x10]
- ldr r6, [sp, #0x24]
- cmp r1, r0
- movlt r1, r0
- ldrlt r0, [sp, #0x14]
- sublt r9, r1, r0
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x14]
- movge r9, r5
- sub r0, r1, r0
- cmp r0, #0x8
- movgt r0, r4
- sub r11, r0, r9
- ldr r0, [sp, #0x28]
- cmp r0, r7
- mov r8, r0
- bge _020B687C
-_020B6828:
- ldr r0, [sp, #0x18]
- cmp r8, r10
- sublt r1, r10, r8
- sub r0, r0, r8
- movge r1, r5
- cmp r0, #0x8
- movgt r0, r4
- sub r3, r0, r1
- ldr r0, [sp, #0xc]
- str r11, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x2c]
- mov r2, r9
- str r0, [sp, #0x8]
- mov r0, r6
- bl FUN_020B6F18
- ldr r0, [sp, #0x30]
- add r8, r8, #0x8
- add r6, r6, r0
- cmp r8, r7
- blt _020B6828
-_020B687C:
- ldr r1, [sp, #0x24]
- ldr r0, [sp, #0x34]
- add r0, r1, r0
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x14]
- add r1, r0, #0x8
- ldr r0, [sp, #0x20]
- str r1, [sp, #0x14]
- cmp r1, r0
- blt _020B67E0
- add sp, sp, #0x3c
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B68AC
-FUN_020B68AC: ; 0x020B68AC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r3, r0
- ldrb r2, [r3, #0xc]
- ldr r12, [r3, #0x4]
- cmp r2, #0x4
- orreq r0, r1, r1, lsl #0x4
- orreq r0, r0, r0, lsl #0x8
- orreq r1, r0, r0, lsl #0x10
- orrne r0, r1, r1, lsl #0x8
- orrne r1, r0, r0, lsl #0x10
- ldr r0, [r3, #0x8]
- mov r2, r2, lsl #0x6
- mul lr, r12, r0
- mov r0, r2, asr #0x2
- add r0, r2, r0, lsr #0x1d
- mov r2, r0, asr #0x3
- mov r0, r1
- mul r2, lr, r2
- ldr r1, [r3, #0x0]
- bl MIi_CpuClearFast
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020B6908
-FUN_020B6908: ; 0x020B6908
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4c
- ldr r7, [sp, #0x74]
- ldrb r5, [r0, #0xc]
- ldr r6, [r1, #0x0]
- ldr r4, [r7, #0x0]
- ldr r9, [r6, #0x8]
- mov r8, r5, lsl #0x6
- ldrb r4, [r4, #0x1]
- mov r5, r8, asr #0x2
- add r5, r8, r5, lsr #0x1d
- ldrb r9, [r9, #0x1]
- ldr r8, [r0, #0x4]
- ldr r6, [r0, #0x8]
- str r2, [sp, #0x8]
- str r3, [sp, #0xc]
- cmp r4, #0x0
- mov r5, r5, asr #0x3
- addeq sp, sp, #0x4c
- ldmeqia sp!, {r4-r11,pc}
- adds r3, r2, r4
- addmi sp, sp, #0x4c
- ldmmiia sp!, {r4-r11,pc}
- ldr r2, [sp, #0xc]
- adds r2, r2, r9
- addmi sp, sp, #0x4c
- ldmmiia sp!, {r4-r11,pc}
- ldr r10, [sp, #0x8]
- add r3, r3, #0x7
- cmp r10, #0x0
- movle r10, #0x0
- strle r10, [sp, #0x10]
- movgt r10, r10, lsr #0x3
- strgt r10, [sp, #0x10]
- ldr r10, [sp, #0xc]
- add r2, r2, #0x7
- cmp r10, #0x0
- movle r10, #0x0
- mov r11, r2, lsr #0x3
- mov r3, r3, lsr #0x3
- movgt r10, r10, lsr #0x3
- cmp r3, r8
- movcs r3, r8
- cmp r11, r6
- ldr r2, [sp, #0x10]
- movcs r11, r6
- subs r8, r3, r2
- addmi sp, sp, #0x4c
- sub r3, r11, r10
- ldmmiia sp!, {r4-r11,pc}
- cmp r3, #0x0
- addlt sp, sp, #0x4c
- ldmltia sp!, {r4-r11,pc}
- ldr r2, [sp, #0x8]
- ldr r6, [r0, #0x0]
- cmp r2, #0x0
- andge r2, r2, #0x7
- strge r2, [sp, #0x8]
- ldr r2, [sp, #0xc]
- ldr r11, [sp, #0x8]
- cmp r2, #0x0
- andge r2, r2, #0x7
- strge r2, [sp, #0xc]
- sub r8, r11, r8, lsl #0x3
- ldr r11, [sp, #0xc]
- ldr r2, [sp, #0x70]
- sub r3, r11, r3, lsl #0x3
- str r3, [sp, #0x14]
- ldr r3, [r7, #0x4]
- sub r2, r2, #0x1
- str r3, [sp, #0x28]
- str r2, [sp, #0x48]
- str r9, [sp, #0x38]
- str r4, [sp, #0x34]
- ldr r4, [r1, #0x0]
- ldr r2, [sp, #0x14]
- mov r3, r11
- cmp r3, r2
- ldr r2, [r4, #0x8]
- ldrb r3, [r2, #0x6]
- str r3, [sp, #0x40]
- ldrb r2, [r0, #0xc]
- str r2, [sp, #0x44]
- ldr r1, [r1, #0x0]
- ldr r1, [r1, #0x8]
- ldrb r1, [r1, #0x0]
- mul r1, r3, r1
- str r1, [sp, #0x3c]
- ldr r1, [r0, #0x10]
- str r1, [sp, #0x20]
- ldr r1, [r0, #0x4]
- ldr r0, [r0, #0x8]
- ldrb r11, [sp, #0x20]
- ldrb r4, [sp, #0x21]
- str r1, [sp, #0x1c]
- str r0, [sp, #0x18]
- addle sp, sp, #0x4c
- ldmleia sp!, {r4-r11,pc}
-_020B6A90:
- ldr r0, [sp, #0xc]
- ldr r7, [sp, #0x10]
- str r0, [sp, #0x30]
- ldr r0, [sp, #0x8]
- cmp r0, r8
- mov r9, r0
- ble _020B6AEC
-_020B6AAC:
- ldr r2, [sp, #0x1c]
- str r11, [sp, #0x0]
- ldr r3, [sp, #0x18]
- mov r0, r7
- mov r1, r10
- str r4, [sp, #0x4]
- bl FUN_020B7068
- mla r1, r0, r5, r6
- add r0, sp, #0x24
- str r9, [sp, #0x2c]
- str r1, [sp, #0x24]
- bl FUN_020B6CAC
- sub r9, r9, #0x8
- add r7, r7, #0x1
- cmp r9, r8
- bgt _020B6AAC
-_020B6AEC:
- ldr r0, [sp, #0xc]
- add r10, r10, #0x1
- sub r1, r0, #0x8
- ldr r0, [sp, #0x14]
- str r1, [sp, #0xc]
- cmp r1, r0
- bgt _020B6A90
- add sp, sp, #0x4c
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B6B10
-FUN_020B6B10: ; 0x020B6B10
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x2c
- ldr r4, [sp, #0x54]
- ldrb r5, [r0, #0xc]
- str r4, [sp, #0x54]
- ldr r4, [r4, #0x0]
- ldr r6, [r1, #0x0]
- mov r7, r5, lsl #0x6
- ldrb r4, [r4, #0x1]
- mov r5, r7, asr #0x2
- add r5, r7, r5, lsr #0x1d
- cmp r4, #0x0
- ldr r6, [r6, #0x8]
- mov r9, r3
- ldr r8, [r0, #0x4]
- ldr r7, [r0, #0x8]
- mov r10, r2
- mov r5, r5, asr #0x3
- addeq sp, sp, #0x2c
- ldr lr, [r0, #0x0]
- ldrb r3, [r6, #0x1]
- ldmeqia sp!, {r4-r11,pc}
- adds r6, r10, r4
- addmi sp, sp, #0x2c
- ldmmiia sp!, {r4-r11,pc}
- adds r2, r9, r3
- addmi sp, sp, #0x2c
- ldmmiia sp!, {r4-r11,pc}
- cmp r10, #0x0
- movle r11, #0x0
- add r6, r6, #0x7
- movgt r11, r10, lsr #0x3
- cmp r9, #0x0
- movle r12, #0x0
- add r2, r2, #0x7
- mov r6, r6, lsr #0x3
- movgt r12, r9, lsr #0x3
- cmp r6, r8
- movcs r6, r8
- mov r2, r2, lsr #0x3
- cmp r2, r7
- movcs r2, r7
- subs r7, r6, r11
- addmi sp, sp, #0x2c
- sub r2, r2, r12
- ldmmiia sp!, {r4-r11,pc}
- cmp r2, #0x0
- addlt sp, sp, #0x2c
- ldmltia sp!, {r4-r11,pc}
- ldr r6, [r0, #0x10]
- cmp r10, #0x0
- sub r8, r6, r7
- mul r8, r5, r8
- mla r11, r6, r12, r11
- andge r10, r10, #0x7
- str r8, [sp, #0x0]
- ldr r8, [sp, #0x54]
- mla r6, r5, r11, lr
- ldr r12, [r8, #0x4]
- ldr r11, [sp, #0x50]
- cmp r9, #0x0
- sub r8, r11, #0x1
- andge r9, r9, #0x7
- sub r11, r9, r2, lsl #0x3
- str r12, [sp, #0x8]
- str r4, [sp, #0x14]
- str r8, [sp, #0x28]
- str r3, [sp, #0x18]
- ldr r3, [r1, #0x0]
- cmp r9, r11
- ldr r2, [r3, #0x8]
- sub r7, r10, r7, lsl #0x3
- ldrb r2, [r2, #0x6]
- str r2, [sp, #0x20]
- ldrb r0, [r0, #0xc]
- str r0, [sp, #0x24]
- ldr r0, [r1, #0x0]
- ldr r0, [r0, #0x8]
- ldrb r0, [r0, #0x0]
- mul r0, r2, r0
- str r0, [sp, #0x1c]
- addle sp, sp, #0x2c
- ldmleia sp!, {r4-r11,pc}
- add r4, sp, #0x4
-_020B6C60:
- mov r8, r10
- str r9, [sp, #0x10]
- cmp r10, r7
- ble _020B6C90
-_020B6C70:
- mov r0, r4
- str r6, [sp, #0x4]
- str r8, [sp, #0xc]
- bl FUN_020B6CAC
- sub r8, r8, #0x8
- cmp r8, r7
- add r6, r6, r5
- bgt _020B6C70
-_020B6C90:
- ldr r0, [sp, #0x0]
- sub r9, r9, #0x8
- cmp r9, r11
- add r6, r6, r0
- bgt _020B6C60
- add sp, sp, #0x2c
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B6CAC
-FUN_020B6CAC: ; 0x020B6CAC
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x34
- ldr r5, [r0, #0x8]
- ldr r4, [r0, #0xc]
- cmp r5, #0x0
- strge r5, [sp, #0x0]
- movlt r1, #0x0
- strlt r1, [sp, #0x0]
- ldr r1, [r0, #0x10]
- cmp r4, #0x0
- add r10, r5, r1
- ldr r1, [r0, #0x14]
- movge r2, r4
- movlt r2, #0x0
- cmp r10, #0x8
- add r3, r4, r1
- movge r10, #0x8
- cmp r3, #0x8
- movge r3, #0x8
- cmp r4, #0x0
- movgt r4, #0x0
- cmp r5, #0x0
- ldr r8, [r0, #0x20]
- movgt r5, #0x0
- rsb r1, r4, #0x0
- mul r7, r10, r8
- ldr r6, [r0, #0x1c]
- rsb r4, r5, #0x0
- mul r9, r6, r4
- ldr r4, [r0, #0x18]
- mov r10, r7
- str r4, [sp, #0x8]
- ldr r4, [sp, #0x0]
- cmp r8, #0x4
- mul r5, r4, r8
- ldr r4, [sp, #0x8]
- str r5, [sp, #0x0]
- mla r11, r1, r4, r9
- ldr r1, [r0, #0x4]
- str r1, [sp, #0x4]
- bne _020B6E24
- ldr r1, [r0, #0x0]
- ldr r7, [r0, #0x24]
- add r0, r1, r2, lsl #0x2
- str r0, [sp, #0xc]
- add r0, r1, r3, lsl #0x2
- ldr r1, [sp, #0xc]
- str r0, [sp, #0x10]
- cmp r1, r0
- addcs sp, sp, #0x34
- ldmcsia sp!, {r4-r11,pc}
- mov r0, #0x0
- add r9, sp, #0x24
- mov r4, #0xf
- str r0, [sp, #0x1c]
-_020B6D88:
- ldr r0, [sp, #0xc]
- mov r1, r11, lsr #0x1f
- ldr r5, [r0, #0x0]
- ldr r0, [sp, #0x4]
- rsb r2, r1, r11, lsl #0x1d
- add r0, r0, r11, lsr #0x3
- str r0, [sp, #0x24]
- ldr r0, [sp, #0x1c]
- add r1, r1, r2, ror #0x1d
- strb r0, [sp, #0x28]
- strb r0, [sp, #0x29]
- mov r0, r9
- bl FUN_020B76B0
- ldr r8, [sp, #0x0]
- mov r0, r8
- cmp r0, r10
- bhs _020B6DF8
-_020B6DCC:
- mov r0, r9
- mov r1, r6
- bl FUN_020B76B0
- cmp r0, #0x0
- mvnne r1, r4, lsl r8
- addne r0, r7, r0
- andne r1, r5, r1
- orrne r5, r1, r0, lsl r8
- add r8, r8, #0x4
- cmp r8, r10
- blo _020B6DCC
-_020B6DF8:
- ldr r0, [sp, #0xc]
- add r1, r0, #0x4
- str r5, [r0, #0x0]
- ldr r0, [sp, #0x10]
- str r1, [sp, #0xc]
- cmp r1, r0
- ldr r0, [sp, #0x8]
- add r11, r11, r0
- blo _020B6D88
- add sp, sp, #0x34
- ldmia sp!, {r4-r11,pc}
-_020B6E24:
- ldr r1, [r0, #0x0]
- ldr r9, [r0, #0x24]
- add r0, r1, r2, lsl #0x3
- str r0, [sp, #0x14]
- add r0, r1, r3, lsl #0x3
- ldr r1, [sp, #0x14]
- str r0, [sp, #0x18]
- cmp r1, r0
- addcs sp, sp, #0x34
- ldmcsia sp!, {r4-r11,pc}
- mov r0, #0x0
- mov r4, #0xff
- str r0, [sp, #0x20]
-_020B6E58:
- mov r1, r11, lsr #0x1f
- rsb r0, r1, r11, lsl #0x1d
- add r1, r1, r0, ror #0x1d
- ldr r0, [sp, #0x14]
- ldr r8, [r0, #0x0]
- ldr r7, [r0, #0x4]
- ldr r0, [sp, #0x4]
- add r0, r0, r11, lsr #0x3
- str r0, [sp, #0x2c]
- ldr r0, [sp, #0x20]
- strb r0, [sp, #0x30]
- strb r0, [sp, #0x31]
- add r0, sp, #0x2c
- bl FUN_020B76B0
- ldr r0, [sp, #0x0]
- cmp r0, r10
- mov r5, r0
- bhs _020B6EE8
-_020B6EA0:
- add r0, sp, #0x2c
- mov r1, r6
- bl FUN_020B76B0
- cmp r0, #0x0
- beq _020B6EDC
- cmp r5, #0x20
- mvncc r1, r4, lsl r5
- addcc r0, r9, r0
- andcc r1, r8, r1
- orrcc r8, r1, r0, lsl r5
- subcs r2, r5, #0x20
- mvncs r1, r4, lsl r2
- addcs r0, r9, r0
- andcs r1, r7, r1
- orrcs r7, r1, r0, lsl r2
-_020B6EDC:
- add r5, r5, #0x8
- cmp r5, r10
- blo _020B6EA0
-_020B6EE8:
- ldr r0, [sp, #0x14]
- str r8, [r0, #0x0]
- add r1, r0, #0x8
- str r7, [r0, #0x4]
- ldr r0, [sp, #0x18]
- str r1, [sp, #0x14]
- cmp r1, r0
- ldr r0, [sp, #0x8]
- add r11, r11, r0
- blo _020B6E58
- add sp, sp, #0x34
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B6F18
-FUN_020B6F18: ; 0x020B6F18
- stmdb sp!, {r4-r6,lr}
- mov lr, r0
- cmp r3, #0x8
- ldr r0, [sp, #0x14]
- bne _020B6F4C
- ldr r4, [sp, #0x10]
- cmp r4, #0x8
- bne _020B6F4C
- ldr r2, [sp, #0x18]
- mov r1, lr
- mov r2, r2, lsl #0x3
- bl MIi_CpuClearFast
- ldmia sp!, {r4-r6,pc}
-_020B6F4C:
- ldr r4, [sp, #0x18]
- cmp r4, #0x4
- bne _020B6FAC
- mov r5, r1, lsl #0x2
- add r4, r5, r3, lsl #0x2
- mvn r3, #0x0
- rsb r4, r4, #0x20
- mov r3, r3, lsr r5
- add r1, r4, r1, lsl #0x2
- mov r3, r3, lsl r1
- ldr r1, [sp, #0x10]
- add r5, lr, r2, lsl #0x2
- add r2, r5, r1, lsl #0x2
- and r6, r0, r3, lsr r4
- cmp r5, r2
- mvn r1, r3, lsr r4
- ldmcsia sp!, {r4-r6,pc}
-_020B6F90:
- ldr r0, [r5, #0x0]
- and r0, r0, r1
- orr r0, r6, r0
- str r0, [r5], #0x4
- cmp r5, r2
- blo _020B6F90
- ldmia sp!, {r4-r6,pc}
-_020B6FAC:
- mov r12, r1, lsl #0x3
- add r1, r12, r3, lsl #0x3
- rsb r1, r1, #0x40
- mvn r3, #0x0
- cmp r1, #0x20
- mov r5, r3, lsr r12
- subcs r4, r1, #0x20
- addcs r3, r12, r4
- movcs r3, r5, lsl r3
- movcs r3, r3, lsr r4
- movcc r3, r5, lsl r12
- mvn r4, #0x0
- add r5, lr, r2, lsl #0x3
- cmp r12, #0x20
- mov r4, r4, lsl r1
- subcs r12, r12, #0x20
- addcs r1, r12, r1
- movcs r1, r4, lsr r1
- movcs r6, r1, lsl r12
- movcc r6, r4, lsr r1
- ldr r1, [sp, #0x10]
- and lr, r0, r3
- add r4, r5, r1, lsl #0x3
- cmp r5, r4
- and r12, r0, r6
- mvn r2, r3
- mvn r1, r6
- ldmcsia sp!, {r4-r6,pc}
-_020B701C:
- ldr r0, [r5, #0x0]
- and r0, r0, r2
- orr r0, lr, r0
- str r0, [r5, #0x0]
- ldr r0, [r5, #0x4]
- and r0, r0, r1
- orr r0, r12, r0
- str r0, [r5, #0x4]
- add r5, r5, #0x8
- cmp r5, r4
- blo _020B701C
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020B704C
-FUN_020B704C: ; 0x020B704C
- ldrb r3, [r0, #0x1]
- ldr r2, _020B7064 ; =UNK_020FF990
- ldrb r1, [r0, #0x0]
- add r0, r2, r3, lsl #0x4
- ldr r0, [r0, r1, lsl #0x2]
- bx lr
- .balign 4
-_020B7064: .word UNK_020FF990
-
- arm_func_start FUN_020B7068
-FUN_020B7068: ; 0x020B7068
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- ldr fp, _020B7164 ; =UNK_020FF970
- mov r9, #0x0
- mov r10, #0x3
- mvn r7, #0x0
-_020B7080:
- ldr r4, [sp, #0x2c]
- ldr r6, [sp, #0x28]
- and r12, r3, r7, lsl r4
- cmp r12, r1
- mov r8, r7, lsl r6
- mov r5, r7, lsl r4
- and lr, r2, r7, lsl r6
- bhi _020B70D0
- mla r9, r2, r12, r9
- cmp lr, r0
- movhi r2, lr
- subhi r1, r1, r12
- subhi r3, r3, r12
- bhi _020B7118
- sub r3, r3, r12
- mla r9, lr, r3, r9
- sub r0, r0, lr
- sub r1, r1, r12
- sub r2, r2, lr
- b _020B7118
-_020B70D0:
- cmp lr, r0
- mlals r9, lr, r12, r9
- mvn r3, r5
- movls r3, r12
- subls r0, r0, lr
- subls r2, r2, lr
- bls _020B7118
- and r2, r1, r5
- mla r5, lr, r2, r9
- and r2, r0, r8
- and r1, r1, r3
- add r2, r5, r2, lsl r4
- mvn r3, r8
- add r1, r2, r1, lsl r6
- and r0, r0, r3
- add sp, sp, #0x4
- add r0, r1, r0
- ldmia sp!, {r4-r11,pc}
-_020B7118:
- cmp r2, #0x8
- movlt r4, r2
- movge r5, r10
- clzlt r4, r4
- rsblt r5, r4, #0x1f
- cmp r3, #0x8
- movge r4, r10
- movlt r4, r3
- clzlt r4, r4
- rsblt r4, r4, #0x1f
- add r4, r11, r4, lsl #0x3
- add r6, r4, r5, lsl #0x1
- ldrb r5, [r4, r5, lsl #0x1]
- ldrb r4, [r6, #0x1]
- str r5, [sp, #0x28]
- str r4, [sp, #0x2c]
- b _020B7080
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B7164: .word UNK_020FF970
-
- arm_func_start FUN_020B7168
-FUN_020B7168: ; 0x020B7168
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0xc
- ldr r12, [sp, #0x28]
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- ands r0, r12, #0x100
- beq _020B71AC
- ldr r0, [r7, #0x4]
- ldr r1, [r7, #0xc]
- ldr r2, [sp, #0x2c]
- bl FUN_020B5B54
- ldr r1, [sp, #0x20]
- sub r0, r1, r0
- add r5, r5, r0
- b _020B71E4
-_020B71AC:
- ands r0, r12, #0x80
- beq _020B71E4
- ldr r0, [r7, #0x4]
- ldr r1, [r7, #0xc]
- ldr r2, [sp, #0x2c]
- bl FUN_020B5B54
- ldr r2, [sp, #0x20]
- add r1, r0, #0x1
- add r0, r2, #0x1
- add r0, r0, r0, lsr #0x1f
- mov r2, r0, asr #0x1
- add r0, r1, r1, lsr #0x1f
- sub r0, r2, r0, asr #0x1
- add r5, r5, r0
-_020B71E4:
- ldr r1, [sp, #0x24]
- ldr r0, [sp, #0x28]
- str r1, [sp, #0x0]
- ldr r12, [sp, #0x2c]
- str r0, [sp, #0x4]
- mov r0, r7
- mov r1, r6
- mov r2, r5
- mov r3, r4
- str r12, [sp, #0x8]
- bl FUN_020B72C4
- add sp, sp, #0xc
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B7218
-FUN_020B7218: ; 0x020B7218
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x18
- ldr r4, [sp, #0x34]
- mov r8, r0
- str r4, [sp, #0x0]
- mov r7, r1
- mov r6, r2
- mov r5, r3
- ldr r4, [sp, #0x30]
- ldr r1, [r8, #0x4]
- ldr r2, [r8, #0x8]
- ldr r3, [r8, #0xc]
- add r0, sp, #0xc
- bl FUN_020B5ABC
- ands r0, r4, #0x10
- ldrne r0, [sp, #0xc]
- addne r0, r0, #0x1
- addne r0, r0, r0, lsr #0x1f
- subne r7, r7, r0, asr #0x1
- bne _020B7274
- ands r0, r4, #0x20
- ldrne r0, [sp, #0xc]
- subne r7, r7, r0
-_020B7274:
- ands r0, r4, #0x2
- ldrne r0, [sp, #0x10]
- addne r0, r0, #0x1
- addne r0, r0, r0, lsr #0x1f
- subne r6, r6, r0, asr #0x1
- bne _020B7298
- ands r0, r4, #0x4
- ldrne r0, [sp, #0x10]
- subne r6, r6, r0
-_020B7298:
- str r5, [sp, #0x0]
- ldr r0, [sp, #0x34]
- str r4, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr r3, [sp, #0xc]
- mov r0, r8
- mov r1, r7
- mov r2, r6
- bl FUN_020B72C4
- add sp, sp, #0x18
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B72C4
-FUN_020B72C4: ; 0x020B72C4
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x14
- mov r10, r0
- ldr r4, [r10, #0x4]
- ldr r0, [sp, #0x40]
- ldr r4, [r4, #0x0]
- ldr r5, [r10, #0xc]
- ldrsb r4, [r4, #0x1]
- cmp r0, #0x0
- mov r9, r1
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x38]
- mov r8, r2
- str r0, [sp, #0x38]
- mov r7, r3
- add r6, r5, r4
- addeq sp, sp, #0x14
- ldmeqia sp!, {r4-r11,pc}
- add r0, r7, #0x1
- ldr r1, [sp, #0x3c]
- add r0, r0, r0, lsr #0x1f
- mov r0, r0, asr #0x1
- and r5, r1, #0x800
- and r11, r1, #0x400
- str r0, [sp, #0x8]
- mov r4, #0x0
-_020B732C:
- mov r1, r9
- cmp r5, #0x0
- beq _020B7358
- ldr r0, [r10, #0x4]
- ldr r1, [r10, #0x8]
- ldr r2, [sp, #0xc]
- mov r3, r4
- bl FUN_020B5BC8
- sub r0, r7, r0
- add r1, r9, r0
- b _020B7388
-_020B7358:
- cmp r11, #0x0
- beq _020B7388
- ldr r0, [r10, #0x4]
- ldr r1, [r10, #0x8]
- ldr r2, [sp, #0xc]
- mov r3, r4
- bl FUN_020B5BC8
- add r0, r0, #0x1
- add r1, r0, r0, lsr #0x1f
- ldr r0, [sp, #0x8]
- sub r0, r0, r1, asr #0x1
- add r1, r9, r0
-_020B7388:
- ldr r2, [sp, #0xc]
- add r3, sp, #0xc
- str r2, [sp, #0x0]
- str r3, [sp, #0x4]
- ldr r3, [sp, #0x38]
- mov r0, r10
- mov r2, r8
- bl FUN_020B73C0
- ldr r0, [sp, #0xc]
- add r8, r8, r6
- cmp r0, #0x0
- bne _020B732C
- add sp, sp, #0x14
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B73C0
-FUN_020B73C0: ; 0x020B73C0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- mov r10, r0
- ldr r6, [r10, #0x8]
- ldr r5, [r10, #0x4]
- ldr r4, [sp, #0x30]
- add r0, sp, #0x8
- str r4, [sp, #0x8]
- ldr r4, [r5, #0x4]
- mov r9, r1
- mov r8, r2
- mov r7, r3
- blx r4
- cmp r0, #0x0
- beq _020B743C
- add r11, sp, #0x8
-_020B7400:
- cmp r0, #0xa
- beq _020B743C
- str r7, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [r10, #0x0]
- mov r1, r5
- mov r2, r9
- mov r3, r8
- bl FUN_020B63CC
- add r1, r9, r0
- mov r0, r11
- add r9, r1, r6
- blx r4
- cmp r0, #0x0
- bne _020B7400
-_020B743C:
- ldr r1, [sp, #0x34]
- cmp r1, #0x0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4-r11,pc}
- cmp r0, #0xa
- ldreq r1, [sp, #0x8]
- ldr r0, [sp, #0x34]
- movne r1, #0x0
- str r1, [r0, #0x0]
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B7468
-FUN_020B7468: ; 0x020B7468
- stmdb sp!, {r4-r6,lr}
- ldrh r2, [r0, #0xc]
- ldrh r3, [r0, #0xe]
- mov r1, #0x0
- add r2, r0, r2
- cmp r3, #0x0
- ldmleia sp!, {r4-r6,pc}
- ldr r3, _020B7548 ; =0x46494E46
- ldr ip, _020B754C ; =0x43574448
- ldr r4, _020B7550 ; =0x434D4150
- ldr lr, _020B7554 ; =0x43474C50
-_020B7494:
- ldr r5, [r2, #0x0]
- cmp r5, r4
- bhi _020B74B0
- cmp r5, r4
- bhs _020B7518
- cmp r5, lr
- b _020B752C
-_020B74B0:
- cmp r5, r12
- bhi _020B74C4
- cmp r5, r12
- beq _020B7500
- b _020B752C
-_020B74C4:
- cmp r5, r3
- bne _020B752C
- add r6, r2, #0x8
- ldr r5, [r6, #0x8]
- add r5, r5, r0
- str r5, [r6, #0x8]
- ldr r5, [r6, #0xc]
- cmp r5, #0x0
- addne r5, r5, r0
- strne r5, [r6, #0xc]
- ldr r5, [r6, #0x10]
- cmp r5, #0x0
- addne r5, r5, r0
- strne r5, [r6, #0x10]
- b _020B752C
-_020B7500:
- add r6, r2, #0x8
- ldr r5, [r6, #0x4]
- cmp r5, #0x0
- addne r5, r5, r0
- strne r5, [r6, #0x4]
- b _020B752C
-_020B7518:
- add r6, r2, #0x8
- ldr r5, [r6, #0x8]
- cmp r5, #0x0
- addne r5, r5, r0
- strne r5, [r6, #0x8]
-_020B752C:
- ldrh r5, [r0, #0xe]
- ldr r6, [r2, #0x4]
- add r1, r1, #0x1
- cmp r1, r5
- add r2, r2, r6
- blt _020B7494
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B7548: .word 0x46494E46
-_020B754C: .word 0x43574448
-_020B7550: .word 0x434D4150
-_020B7554: .word 0x43474C50
-
- arm_func_start FUN_020B7558
-FUN_020B7558: ; 0x020B7558
- stmdb sp!, {r4-r6,lr}
- movs r6, r0
- mov r5, r1
- beq _020B75C8
- cmp r6, #0x0
- beq _020B7584
- ldr r1, [r6, #0x0]
- ldr r0, _020B76A8 ; =0x4E465452
- cmp r1, r0
- moveq r0, #0x1
- beq _020B7588
-_020B7584:
- mov r0, #0x0
-_020B7588:
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020B75CC
- cmp r6, #0x0
- beq _020B75B4
- ldrh r0, [r6, #0x6]
- cmp r0, #0x100
- movcs r0, #0x1
- bhs _020B75B8
-_020B75B4:
- mov r0, #0x0
-_020B75B8:
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- b _020B75CC
-_020B75C8:
- mov r0, #0x0
-_020B75CC:
- cmp r0, #0x0
- movne r4, #0x0
- bne _020B7654
- cmp r6, #0x0
- beq _020B7640
- cmp r6, #0x0
- beq _020B75FC
- ldr r1, [r6, #0x0]
- ldr r0, _020B76A8 ; =0x4E465452
- cmp r1, r0
- moveq r0, #0x1
- beq _020B7600
-_020B75FC:
- mov r0, #0x0
-_020B7600:
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020B7644
- cmp r6, #0x0
- beq _020B762C
- ldrh r0, [r6, #0x6]
- cmp r0, #0x1
- movcs r0, #0x1
- bhs _020B7630
-_020B762C:
- mov r0, #0x0
-_020B7630:
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- b _020B7644
-_020B7640:
- mov r0, #0x0
-_020B7644:
- cmp r0, #0x0
- movne r4, #0x1
- bne _020B7654
- bl OS_Terminate
-_020B7654:
- mov r0, r6
- bl FUN_020B7468
- ldr r1, _020B76AC ; =0x46494E46
- mov r0, r6
- bl FUN_020B01F8
- cmp r0, #0x0
- moveq r0, #0x0
- streq r0, [r5, #0x0]
- ldmeqia sp!, {r4-r6,pc}
- add r0, r0, #0x8
- str r0, [r5, #0x0]
- cmp r4, #0x0
- beq _020B76A0
- ldr r2, [r5, #0x0]
- mov r1, #0x0
- ldrsb r0, [r2, #0x6]
- strb r0, [r2, #0x7]
- ldr r0, [r5, #0x0]
- strb r1, [r0, #0x6]
-_020B76A0:
- add r0, r4, #0x1
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B76A8: .word 0x4E465452
-_020B76AC: .word 0x46494E46
-
- arm_func_start FUN_020B76B0
-FUN_020B76B0:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldrsb r2, [r0, #0x4]
- ldrb r12, [r0, #0x5]
- mov r4, r1
- cmp r2, r4
- subge r1, r2, r4
- movge r5, r12, lsr r1
- strgeb r1, [r0, #0x4]
- bge _020B7704
- ldr r3, [r0, #0x0]
- sub r1, r4, r2
- add r2, r3, #0x1
- str r2, [r0, #0x0]
- ldrb r2, [r3, #0x0]
- mov r5, r12, lsl r1
- strb r2, [r0, #0x5]
- mov r2, #0x8
- strb r2, [r0, #0x4]
- bl FUN_020B76B0
- orr r5, r0, r5
-_020B7704:
- rsb r0, r4, #0x8
- mov r1, #0xff
- and r0, r5, r1, asr r0
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020B7718
-FUN_020B7718: ; 0x020B7718
- ldr r1, [r0, #0x0]
- ldrh r2, [r1], #0x2
- str r1, [r0, #0x0]
- mov r0, r2
- bx lr
-
- arm_func_start FUN_020B772C
-FUN_020B772C: ; 0x020B772C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r0
- ldrb r0, [r6, #0x9]
- mov r5, #0x0
- cmp r0, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r7,pc}
- add r4, r6, #0x8
-_020B7750:
- ldrh r0, [r6, #0xe]
- ldrh r1, [r4, r0]
- add r0, r4, r0
- mla r0, r1, r5, r0
- ldr r0, [r0, #0x4]
- add r7, r6, r0
- mov r0, r7
- bl FUN_020B79A4
- mov r0, r7
- bl FUN_020B780C
- ldrb r0, [r6, #0x9]
- add r5, r5, #0x1
- cmp r5, r0
- blo _020B7750
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B7790
-FUN_020B7790: ; 0x020B7790
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r8, r0
- ldrb r0, [r8, #0x9]
- mov r7, r1
- mov r5, #0x1
- cmp r0, #0x0
- mov r6, #0x0
- bls _020B7800
- add r4, r8, #0x8
-_020B77B8:
- ldrh r0, [r8, #0xe]
- mov r1, r7
- ldrh r2, [r4, r0]
- add r0, r4, r0
- mla r0, r2, r6, r0
- ldr r0, [r0, #0x4]
- add r9, r8, r0
- mov r0, r9
- bl FUN_020B7A04
- and r5, r5, r0
- mov r0, r9
- mov r1, r7
- bl FUN_020B7864
- ldrb r1, [r8, #0x9]
- add r6, r6, #0x1
- and r5, r5, r0
- cmp r6, r1
- blo _020B77B8
-_020B7800:
- mov r0, r5
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start FUN_020B780C
-FUN_020B780C: ; 0x020B780C
- ldr r2, [r0, #0x8]
- mov r1, #0x0
- add r2, r0, r2
- ldrh r0, [r2, #0x2]
- add r12, r2, r0
- ldrb r0, [r12, #0x1]
- cmp r0, #0x0
- bxls lr
-_020B782C:
- ldrh r2, [r12, #0x6]
- ldrh r0, [r12, r2]
- add r2, r12, r2
- add r2, r2, #0x4
- mla r3, r0, r1, r2
- ldrb r0, [r3, #0x3]
- add r1, r1, #0x1
- ands r2, r0, #0x1
- bicne r0, r0, #0x1
- strneb r0, [r3, #0x3]
- ldrb r0, [r12, #0x1]
- cmp r1, r0
- blo _020B782C
- bx lr
-
- arm_func_start FUN_020B7864
-FUN_020B7864: ; 0x020B7864
- stmdb sp!, {r4-r10,lr}
- ldr r2, [r0, #0x8]
- mov r10, r1
- add r9, r0, r2
- ldrh r0, [r9, #0x2]
- mov r6, #0x1
- mov r7, #0x0
- add r8, r9, r0
- ldrb r0, [r8, #0x1]
- cmp r0, #0x0
- bls _020B7908
- mov r5, r7
- mov r4, r7
-_020B7898:
- ldrh r1, [r8, #0x6]
- ldrh r0, [r10, #0x34]
- add r2, r8, r1
- ldrh r1, [r2, #0x2]
- add r0, r10, r0
- add r1, r2, r1
- add r1, r1, r5
- bl FUN_020BC2A0
- movs r3, r0
- beq _020B78F0
- ldrh r1, [r8, #0x6]
- ldrh r0, [r8, r1]
- add r1, r8, r1
- add r1, r1, #0x4
- mla r1, r0, r7, r1
- ldrb r0, [r1, #0x3]
- ands r0, r0, #0x1
- bne _020B78F4
- mov r0, r9
- mov r2, r10
- bl FUN_020B7910
- b _020B78F4
-_020B78F0:
- mov r6, r4
-_020B78F4:
- ldrb r0, [r8, #0x1]
- add r7, r7, #0x1
- add r5, r5, #0x10
- cmp r7, r0
- blo _020B7898
-_020B7908:
- mov r0, r6
- ldmia sp!, {r4-r10,pc}
-
- arm_func_start FUN_020B7910
-FUN_020B7910:
- stmdb sp!, {r4-r6,lr}
- ldrh r5, [r1, #0x0]
- ldr r2, [r2, #0x2c]
- ldrh r4, [r3, #0x2]
- mov r2, r2, lsl #0x10
- add r12, r0, r5
- mov r5, r2, lsr #0x10
- ands r2, r4, #0x1
- ldrh r4, [r3, #0x0]
- moveq r3, r5, lsl #0xf
- moveq r5, r3, lsr #0x10
- moveq r2, r4, lsl #0xf
- moveq r4, r2, lsr #0x10
- ldrb r3, [r1, #0x2]
- mov r2, #0x0
- cmp r3, #0x0
- bls _020B7994
- add r3, r4, r5
- mov r3, r3, lsl #0x10
- add r6, r0, #0x4
- mov r4, r3, lsr #0x10
-_020B7964:
- ldrh r5, [r0, #0xa]
- ldrb r3, [r12, r2]
- add r2, r2, #0x1
- ldrh lr, [r6, r5]
- add r5, r6, r5
- mla r3, lr, r3, r5
- ldr r3, [r3, #0x4]
- add r3, r0, r3
- strh r4, [r3, #0x1c]
- ldrb r3, [r1, #0x2]
- cmp r2, r3
- blo _020B7964
-_020B7994:
- ldrb r0, [r1, #0x3]
- orr r0, r0, #0x1
- strb r0, [r1, #0x3]
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020B79A4
-FUN_020B79A4: ; 0x020B79A4
- stmdb sp!, {r4-r6,lr}
- ldr r2, [r0, #0x8]
- mov r4, #0x0
- ldrh r1, [r0, r2]
- add r6, r0, r2
- add r5, r6, r1
- ldrb r0, [r5, #0x1]
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020B79C8:
- ldrh r1, [r5, #0x6]
- ldrh r0, [r5, r1]
- add r1, r5, r1
- add r1, r1, #0x4
- mla r1, r0, r4, r1
- ldrb r0, [r1, #0x3]
- ands r0, r0, #0x1
- beq _020B79F0
- mov r0, r6
- bl FUN_020B7AB8
-_020B79F0:
- ldrb r0, [r5, #0x1]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020B79C8
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020B7A04
-FUN_020B7A04: ; 0x020B7A04
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x8]
- mov r10, r1
- ldrh r1, [r0, r2]
- add r9, r0, r2
- mov r11, #0x1
- add r8, r9, r1
- ldrb r0, [r8, #0x1]
- mov r7, #0x0
- cmp r0, #0x0
- bls _020B7AAC
- mov r6, r7
- mov r4, r7
- add r5, r10, #0x3c
-_020B7A40:
- ldrh r1, [r8, #0x6]
- mov r0, r5
- add r2, r8, r1
- ldrh r1, [r2, #0x2]
- add r1, r2, r1
- add r1, r1, r6
- bl FUN_020BC2A0
- movs r3, r0
- beq _020B7A94
- ldrh r1, [r8, #0x6]
- ldrh r0, [r8, r1]
- add r1, r8, r1
- add r1, r1, #0x4
- mla r1, r0, r7, r1
- ldrb r0, [r1, #0x3]
- ands r0, r0, #0x1
- bne _020B7A98
- mov r0, r9
- mov r2, r10
- bl FUN_020B7B40
- b _020B7A98
-_020B7A94:
- mov r11, r4
-_020B7A98:
- ldrb r0, [r8, #0x1]
- add r7, r7, #0x1
- add r6, r6, #0x10
- cmp r7, r0
- blo _020B7A40
-_020B7AAC:
- mov r0, r11
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B7AB8
-FUN_020B7AB8: ; 0x020B7AB8
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldrh r4, [r1, #0x0]
- ldrb r2, [r1, #0x2]
- mov r3, #0x0
- add r12, r0, r4
- cmp r2, #0x0
- bls _020B7B28
- add r2, r0, #0x4
- mov r5, #0x1000
- ldr lr, _020B7B3C ; =0xC00F0000
-_020B7AE4:
- ldrh r7, [r0, #0xa]
- ldrb r4, [r12, r3]
- add r3, r3, #0x1
- ldrh r6, [r2, r7]
- add r7, r2, r7
- mla r4, r6, r4, r7
- ldr r4, [r4, #0x4]
- add r6, r0, r4
- ldr r4, [r6, #0x14]
- and r4, r4, lr
- str r4, [r6, #0x14]
- str r5, [r6, #0x24]
- ldr r4, [r6, #0x24]
- str r4, [r6, #0x28]
- ldrb r4, [r1, #0x2]
- cmp r3, r4
- blo _020B7AE4
-_020B7B28:
- ldrb r0, [r1, #0x3]
- bic r0, r0, #0x1
- strb r0, [r1, #0x3]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B7B3C: .word 0xC00F0000
-
- arm_func_start FUN_020B7B40
-FUN_020B7B40:
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- mov r11, r1
- mov r9, r3
- ldr r1, [r9, #0x0]
- mov r10, r0
- and r0, r1, #0x1c000000
- cmp r0, #0x14000000
- ldrh r3, [r11, #0x0]
- ldrne r1, [r2, #0x8]
- mov r8, #0x0
- add r0, r10, r3
- str r0, [sp, #0x4]
- ldrne r0, _020B7C50 ; =0x0000FFFF
- andne r0, r1, r0
- strne r0, [sp, #0x0]
- ldreq r1, [r2, #0x18]
- ldreq r0, _020B7C50 ; =0x0000FFFF
- andeq r0, r1, r0
- streq r0, [sp, #0x0]
- ldrb r0, [r11, #0x2]
- cmp r0, #0x0
- bls _020B7C3C
- mov r4, #0x1000
- add r5, r10, #0x4
-_020B7BA4:
- ldrh r6, [r10, #0xa]
- ldr r0, [sp, #0x4]
- ldr r1, [r9, #0x0]
- ldrb r2, [r0, r8]
- ldrh r3, [r5, r6]
- ldr r0, [sp, #0x0]
- add r6, r5, r6
- add r0, r1, r0
- mla r1, r3, r2, r6
- ldr r1, [r1, #0x4]
- add r6, r10, r1
- ldr r1, [r6, #0x14]
- orr r0, r1, r0
- str r0, [r6, #0x14]
- ldr r3, [r9, #0x4]
- ldr r0, _020B7C54 ; =0x000007FF
- ldrh r1, [r6, #0x20]
- and r2, r3, r0
- and r7, r0, r3, lsr #0xb
- cmp r2, r1
- moveq r0, r4
- beq _020B7C08
- mov r0, r2, lsl #0xc
- mov r1, r1, lsl #0xc
- bl FX_Div
-_020B7C08:
- str r0, [r6, #0x24]
- ldrh r1, [r6, #0x22]
- cmp r7, r1
- moveq r0, r4
- beq _020B7C28
- mov r0, r7, lsl #0xc
- mov r1, r1, lsl #0xc
- bl FX_Div
-_020B7C28:
- str r0, [r6, #0x28]
- ldrb r0, [r11, #0x2]
- add r8, r8, #0x1
- cmp r8, r0
- blo _020B7BA4
-_020B7C3C:
- ldrb r0, [r11, #0x3]
- orr r0, r0, #0x1
- strb r0, [r11, #0x3]
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B7C50: .word 0x0000FFFF
-_020B7C54: .word 0x000007FF
-
- arm_func_start FUN_020B7C58
-FUN_020B7C58: ; 0x020B7C58
- ldrh r2, [r0, #0x32]
- mov r1, #0x0
- bic r2, r2, #0x1
- strh r2, [r0, #0x32]
- ldr r2, [r0, #0x2c]
- str r1, [r0, #0x2c]
- mov r0, r2
- bx lr
-
- arm_func_start FUN_020B7C78
-FUN_020B7C78: ; 0x020B7C78
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- movs r4, r1
- mov r5, r0
- beq _020B7C90
- bl GX_BeginLoadTexPltt
-_020B7C90:
- ldrh r2, [r5, #0x30]
- ldr r0, [r5, #0x38]
- ldr r3, [r5, #0x2c]
- ldr r1, _020B7CD8 ; =0x0000FFFF
- add r0, r5, r0
- and r1, r3, r1
- mov r1, r1, lsl #0x3
- mov r2, r2, lsl #0x3
- bl GX_LoadTexPltt
- ldrh r0, [r5, #0x32]
- cmp r4, #0x0
- addeq sp, sp, #0x4
- orr r0, r0, #0x1
- strh r0, [r5, #0x32]
- ldmeqia sp!, {r4-r5,pc}
- bl GX_EndLoadTexPltt
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B7CD8: .word 0x0000FFFF
-
- arm_func_start FUN_020B7CDC
-FUN_020B7CDC: ; 0x020B7CDC
- str r1, [r0, #0x2c]
- bx lr
-
- arm_func_start FUN_020B7CE4
-FUN_020B7CE4: ; 0x020B7CE4
- ldrh r0, [r0, #0x30]
- mov r0, r0, lsl #0x3
- bx lr
-
- arm_func_start FUN_020B7CF0
-FUN_020B7CF0: ; 0x020B7CF0
- ldrh r12, [r0, #0x10]
- mov r3, #0x0
- bic r12, r12, #0x1
- strh r12, [r0, #0x10]
- ldrh r12, [r0, #0x20]
- bic r12, r12, #0x1
- strh r12, [r0, #0x20]
- ldr r12, [r0, #0x8]
- str r12, [r1, #0x0]
- str r3, [r0, #0x8]
- ldr r1, [r0, #0x18]
- str r1, [r2, #0x0]
- str r3, [r0, #0x18]
- bx lr
-
- arm_func_start FUN_020B7D28
-FUN_020B7D28: ; 0x020B7D28
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- movs r8, r1
- mov r9, r0
- beq _020B7D40
- bl GX_BeginLoadTex
-_020B7D40:
- ldrh r0, [r9, #0xc]
- movs r2, r0, lsl #0x3
- beq _020B7D74
- ldr r1, [r9, #0x8]
- ldr r0, _020B7DF4 ; =0x0000FFFF
- ldr r3, [r9, #0x14]
- and r1, r1, r0
- add r0, r9, r3
- mov r1, r1, lsl #0x3
- bl GX_LoadTex
- ldrh r0, [r9, #0x10]
- orr r0, r0, #0x1
- strh r0, [r9, #0x10]
-_020B7D74:
- ldrh r0, [r9, #0x1c]
- movs r7, r0, lsl #0x3
- beq _020B7DDC
- ldr r1, [r9, #0x18]
- ldr r0, _020B7DF4 ; =0x0000FFFF
- ldr r3, [r9, #0x24]
- and r4, r1, r0
- mov r5, r4, lsl #0x3
- ldr r6, [r9, #0x28]
- mov r1, r5
- mov r2, r7
- add r0, r9, r3
- add r6, r9, r6
- bl GX_LoadTex
- ldr r0, _020B7DF8 ; =0x0001FFFF
- and r1, r5, #0x40000
- and r0, r0, r4, lsl #0x3
- mov r0, r0, lsr #0x1
- add r2, r0, #0x20000
- mov r0, r6
- add r1, r2, r1, lsr #0x2
- mov r2, r7, lsr #0x1
- bl GX_LoadTex
- ldrh r0, [r9, #0x20]
- orr r0, r0, #0x1
- strh r0, [r9, #0x20]
-_020B7DDC:
- cmp r8, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r9,pc}
- bl GX_EndLoadTex
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020B7DF4: .word 0x0000FFFF
-_020B7DF8: .word 0x0001FFFF
-
- arm_func_start FUN_020B7DFC
-FUN_020B7DFC: ; 0x020B7DFC
- cmp r1, #0x0
- strne r1, [r0, #0x8]
- cmp r2, #0x0
- strne r2, [r0, #0x18]
- bx lr
-
- arm_func_start FUN_020B7E10
-FUN_020B7E10: ; 0x020B7E10
- ldrh r0, [r0, #0x1c]
- mov r0, r0, lsl #0x3
- bx lr
-
- arm_func_start FUN_020B7E1C
-FUN_020B7E1C: ; 0x020B7E1C
- ldrh r0, [r0, #0xc]
- mov r0, r0, lsl #0x3
- bx lr
-
- arm_func_start FUN_020B7E28
-FUN_020B7E28: ; 0x020B7E28
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- add r0, r5, #0x8
- mov r4, r1
- bl FUN_020B7E88
- cmp r0, #0x0
- bne _020B7E74
- mov r1, r4
- add r0, r5, #0x10
- bl FUN_020B7E88
- cmp r0, #0x0
- bne _020B7E74
- mov r1, r4
- add r0, r5, #0x18
- bl FUN_020B7E88
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
-_020B7E74:
- ldr r0, [r5, #0x0]
- orr r0, r0, #0x10
- str r0, [r5, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020B7E88
-FUN_020B7E88:
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r2, r1
- bne _020B7EB8
- ldr r3, [r2, #0x10]
- mov r2, #0x0
- str r3, [r0, #0x0]
- str r2, [r1, #0x10]
- mov r0, #0x1
- bx lr
-_020B7EB8:
- ldr r3, [r2, #0x10]
- cmp r3, #0x0
- beq _020B7EF4
-_020B7EC4:
- cmp r3, r1
- bne _020B7EE4
- ldr r1, [r3, #0x10]
- mov r0, #0x0
- str r1, [r2, #0x10]
- str r0, [r3, #0x10]
- mov r0, #0x1
- bx lr
-_020B7EE4:
- mov r2, r3
- ldr r3, [r3, #0x10]
- cmp r3, #0x0
- bne _020B7EC4
-_020B7EF4:
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020B7EFC
-FUN_020B7EFC: ; 0x020B7EFC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- ldr r2, [r4, #0x8]
- mov r5, r0
- ldrb r0, [r2, #0x0]
- cmp r0, #0x4a
- beq _020B7F50
- cmp r0, #0x4d
- beq _020B7F34
- cmp r0, #0x56
- beq _020B7F6C
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020B7F34:
- add r0, r5, #0x3c
- bl FUN_020B7F88
- mov r1, r4
- add r0, r5, #0x8
- bl FUN_020B7FF8
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020B7F50:
- add r0, r5, #0x44
- bl FUN_020B7F88
- mov r1, r4
- add r0, r5, #0x10
- bl FUN_020B7FF8
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020B7F6C:
- add r0, r5, #0x4c
- bl FUN_020B7F88
- mov r1, r4
- add r0, r5, #0x18
- bl FUN_020B7FF8
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020B7F88
-FUN_020B7F88: ; 0x020B7F88
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- cmp r1, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- mov r3, #0x1
- mov r4, #0x0
-_020B7FA4:
- ldrb r2, [r1, #0x19]
- mov r5, r4
- cmp r2, #0x0
- ble _020B7FE4
-_020B7FB4:
- add r2, r1, r5, lsl #0x1
- ldrh r2, [r2, #0x1a]
- ands r2, r2, #0x100
- movne lr, r5, asr #0x5
- andne r2, r5, #0x1f
- ldrne r12, [r0, lr, lsl #0x2]
- add r5, r5, #0x1
- orrne r2, r12, r3, lsl r2
- strne r2, [r0, lr, lsl #0x2]
- ldrb r2, [r1, #0x19]
- cmp r5, r2
- blt _020B7FB4
-_020B7FE4:
- ldr r1, [r1, #0x10]
- cmp r1, #0x0
- bne _020B7FA4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020B7FF8
-FUN_020B7FF8: ; 0x020B7FF8
- ldr r12, [r0, #0x0]
- cmp r12, #0x0
- streq r1, [r0, #0x0]
- bxeq lr
- ldr r3, [r12, #0x10]
- cmp r3, #0x0
- bne _020B8058
- ldrb r3, [r12, #0x18]
- ldrb r2, [r1, #0x18]
- cmp r3, r2
- bls _020B8050
- ldr r2, [r1, #0x10]
- mov r3, r1
- cmp r2, #0x0
- beq _020B8044
-_020B8034:
- ldr r3, [r3, #0x10]
- ldr r2, [r3, #0x10]
- cmp r2, #0x0
- bne _020B8034
-_020B8044:
- str r12, [r3, #0x10]
- str r1, [r0, #0x0]
- bx lr
-_020B8050:
- str r1, [r12, #0x10]
- bx lr
-_020B8058:
- cmp r3, #0x0
- beq _020B80AC
- ldrb r2, [r1, #0x18]
-_020B8064:
- ldrb r0, [r3, #0x18]
- cmp r0, r2
- blo _020B809C
- ldr r0, [r1, #0x10]
- mov r2, r1
- cmp r0, #0x0
- beq _020B8090
-_020B8080:
- ldr r2, [r2, #0x10]
- ldr r0, [r2, #0x10]
- cmp r0, #0x0
- bne _020B8080
-_020B8090:
- str r1, [r12, #0x10]
- str r3, [r2, #0x10]
- bx lr
-_020B809C:
- mov r12, r3
- ldr r3, [r3, #0x10]
- cmp r3, #0x0
- bne _020B8064
-_020B80AC:
- str r1, [r12, #0x10]
- bx lr
-
- arm_func_start FUN_020B80B4
-FUN_020B80B4: ; 0x020B80B4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- mov r1, r5
- mov r0, #0x0
- mov r2, #0x54
- bl MIi_CpuClear32
- ldr r0, _020B8104 ; =UNK_021065B4
- ldr r1, _020B8108 ; =UNK_021065B0
- ldr r2, [r0, #0x0]
- ldr r0, _020B810C ; =UNK_021065AC
- str r2, [r5, #0xc]
- ldr r1, [r1, #0x0]
- str r1, [r5, #0x14]
- ldr r0, [r0, #0x0]
- str r0, [r5, #0x1c]
- str r4, [r5, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020B8104: .word UNK_021065B4
-_020B8108: .word UNK_021065B0
-_020B810C: .word UNK_021065AC
-
- arm_func_start FUN_020B8110
-FUN_020B8110: ; 0x020B8110
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r12, #0x0
- str r12, [r0, #0x0]
- str r1, [r0, #0x8]
- str r12, [r0, #0x10]
- mov r4, #0x7f
- strb r4, [r0, #0x18]
- mov r4, #0x1000
- str r4, [r0, #0x4]
- ldr lr, _020B81A4 ; =UNK_02106594
- str r3, [r0, #0x14]
- ldr r6, [lr, #0x0]
- cmp r6, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r7,pc}
- ldrb r7, [r1, #0x0]
- ldr r4, _020B81A8 ; =UNK_021065B8
-_020B8158:
- ldrb r3, [r4, r12, lsl #0x3]
- mov r5, r12, lsl #0x3
- cmp r7, r3
- bne _020B8190
- add r3, r4, r5
- ldrh lr, [r1, #0x2]
- ldrh r3, [r3, #0x2]
- cmp lr, r3
- bne _020B8190
- ldr r3, _020B81AC ; =UNK_021065BC
- ldr r3, [r3, r5]
- blx r3
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-_020B8190:
- add r12, r12, #0x1
- cmp r12, r6
- blo _020B8158
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B81A4: .word UNK_02106594
-_020B81A8: .word UNK_021065B8
-_020B81AC: .word UNK_021065BC
-
- arm_func_start FUN_020B81B0
-FUN_020B81B0: ; 0x020B81B0
- ldrb r0, [r0, #0x0]
- cmp r0, #0x4a
- beq _020B81E4
- cmp r0, #0x4d
- beq _020B81D0
- cmp r0, #0x56
- beq _020B81E4
- b _020B81F8
-_020B81D0:
- ldrb r0, [r1, #0x18]
- mov r0, r0, lsl #0x1
- add r0, r0, #0x1c
- bic r0, r0, #0x3
- bx lr
-_020B81E4:
- ldrb r0, [r1, #0x17]
- mov r0, r0, lsl #0x1
- add r0, r0, #0x1c
- bic r0, r0, #0x3
- bx lr
-_020B81F8:
- mov r0, #0x0
- bx lr
-
- arm_func_start FUN_020B8200
-FUN_020B8200: ; 0x020B8200
- cmp r0, #0x0
- ldrne ip, _020B8260 ; =UNK_021CED18
- ldrne r12, [r12, #0xa0]
- andne r12, r12, #0xff
- strne r12, [r0, #0x0]
- cmp r1, #0x0
- ldrne r0, _020B8260 ; =UNK_021CED18
- ldrne r0, [r0, #0xa0]
- movne r0, r0, lsr #0x8
- andne r0, r0, #0xff
- strne r0, [r1, #0x0]
- cmp r2, #0x0
- ldrne r0, _020B8260 ; =UNK_021CED18
- ldrne r0, [r0, #0xa0]
- movne r0, r0, lsr #0x10
- andne r0, r0, #0xff
- strne r0, [r2, #0x0]
- cmp r3, #0x0
- ldrne r0, _020B8260 ; =UNK_021CED18
- ldrne r0, [r0, #0xa0]
- movne r0, r0, lsr #0x18
- andne r0, r0, #0xff
- strne r0, [r3, #0x0]
- bx lr
- .balign 4
-_020B8260: .word UNK_021CED18
-
- arm_func_start FUN_020B8264
-FUN_020B8264: ; 0x020B8264
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020B829C ; =UNK_021CED18
- ldr r0, [r0, #0xfc]
- ands r0, r0, #0x80
- bne _020B8290
- bl FUN_020B82E4
- ldr r0, _020B829C ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- orr r1, r1, #0x80
- str r1, [r0, #0xfc]
-_020B8290:
- ldr r0, _020B82A0 ; =UNK_021CEE78
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B829C: .word UNK_021CED18
-_020B82A0: .word UNK_021CEE78
-
- arm_func_start FUN_020B82A4
-FUN_020B82A4: ; 0x020B82A4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020B82DC ; =UNK_021CED18
- ldr r0, [r0, #0xfc]
- ands r0, r0, #0x80
- bne _020B82D0
- bl FUN_020B82E4
- ldr r0, _020B82DC ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- orr r1, r1, #0x80
- str r1, [r0, #0xfc]
-_020B82D0:
- ldr r0, _020B82E0 ; =UNK_021CEE48
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B82DC: .word UNK_021CED18
-_020B82E0: .word UNK_021CEE48
-
- arm_func_start FUN_020B82E4
-FUN_020B82E4: ; 0x020B82E4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020B8330 ; =UNK_021CEDD4
- ldr r1, _020B8334 ; =UNK_021CED64
- ldr r2, _020B8338 ; =UNK_021CEE48
- bl MTX_Concat43
- ldr r3, _020B833C ; =UNK_021CED18
- ldr r0, _020B8338 ; =UNK_021CEE48
- ldr r2, [r3, #0xf4]
- mov r1, r0
- str r2, [sp, #0x0]
- ldr r2, [r3, #0xec]
- ldr r3, [r3, #0xf0]
- bl MTX_ScaleApply43
- ldr r0, _020B8338 ; =UNK_021CEE48
- ldr r1, _020B8340 ; =UNK_021CEE78
- bl MTX_Inverse43
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B8330: .word UNK_021CEDD4
-_020B8334: .word UNK_021CED64
-_020B8338: .word UNK_021CEE48
-_020B833C: .word UNK_021CED18
-_020B8340: .word UNK_021CEE78
-
- arm_func_start FUN_020B8344
-FUN_020B8344: ; 0x020B8344
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020B8384 ; =UNK_021CED18
- ldr r0, [r0, #0xfc]
- ands r0, r0, #0x8
- bne _020B8378
- ldr r0, _020B8388 ; =UNK_021CED64
- ldr r1, _020B838C ; =UNK_021CEE18
- bl MTX_Inverse43
- ldr r0, _020B8384 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- orr r1, r1, #0x8
- str r1, [r0, #0xfc]
-_020B8378:
- ldr r0, _020B838C ; =UNK_021CEE18
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B8384: .word UNK_021CED18
-_020B8388: .word UNK_021CED64
-_020B838C: .word UNK_021CEE18
-
- arm_func_start FUN_020B8390
-FUN_020B8390: ; 0x020B8390
- orr r0, r0, r1, lsl #0x4
-
- arm_func_start FUN_020B8394
-FUN_020B8394: ; 0x020B8394
- ldr r1, [sp, #0x4]
- orr r0, r0, r2, lsl #0x6
- orr r0, r1, r0
- ldr r2, [sp, #0x0]
- orr r1, r0, r3, lsl #0x18
- ldr r0, _020B83B8 ; =UNK_021CED18
- orr r1, r1, r2, lsl #0x10
- str r1, [r0, #0x9c]
- bx lr
- .balign 4
-_020B83B8: .word UNK_021CED18
-
- arm_func_start FUN_020B83BC
-FUN_020B83BC: ; 0x020B83BC
- cmp r2, #0x0
- movne r2, #0x1
- orr r1, r0, r1, lsl #0x10
- moveq r2, #0x0
- ldr r0, _020B83DC ; =UNK_021CED18
- orr r1, r1, r2, lsl #0xf
- str r1, [r0, #0x98]
- bx lr
- .balign 4
-_020B83DC: .word UNK_021CED18
-
- arm_func_start FUN_020B83E0
-FUN_020B83E0: ; 0x020B83E0
- cmp r2, #0x0
- movne r2, #0x1
- orr r1, r0, r1, lsl #0x10
- moveq r2, #0x0
- ldr r0, _020B8400 ; =UNK_021CED18
- orr r1, r1, r2, lsl #0xf
- str r1, [r0, #0x94]
- bx lr
- .balign 4
-_020B8400: .word UNK_021CED18
-
- arm_func_start FUN_020B8404
-FUN_020B8404: ; 0x020B8404
- ldr r2, _020B8414 ; =UNK_021CEDC0
- orr r1, r1, r0, lsl #0x1e
- str r1, [r2, r0, lsl #0x2]
- bx lr
- .balign 4
-_020B8414: .word UNK_021CEDC0
-
- arm_func_start FUN_020B8418
-FUN_020B8418: ; 0x020B8418
- stmdb sp!, {r4,lr}
- ldr ip, _020B8444 ; =0x000003FF
- ldr lr, _020B8448 ; =UNK_021CED98
- and r4, r12, r1, asr #0x3
- and r1, r12, r2, asr #0x3
- and r2, r12, r3, asr #0x3
- orr r1, r4, r1, lsl #0xa
- orr r1, r1, r2, lsl #0x14
- orr r1, r1, r0, lsl #0x1e
- str r1, [lr, r0, lsl #0x2]
- ldmia sp!, {r4,pc}
- .balign 4
-_020B8444: .word 0x000003FF
-_020B8448: .word UNK_021CED98
-
- arm_func_start FUN_020B844C
-FUN_020B844C: ; 0x020B844C
- ldr r3, _020B846C ; =UNK_021CEE04
- ldmia r0, {r0-r2}
- stmia r3, {r0-r2}
- ldr r0, _020B8470 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- bic r1, r1, #0xa4
- str r1, [r0, #0xfc]
- bx lr
- .balign 4
-_020B846C: .word UNK_021CEE04
-_020B8470: .word UNK_021CED18
-
- arm_func_start FUN_020B8474
-FUN_020B8474: ; 0x020B8474
- ldr r3, _020B8494 ; =UNK_021CEDF8
- ldmia r0, {r0-r2}
- stmia r3, {r0-r2}
- ldr r0, _020B8498 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- bic r1, r1, #0xa4
- str r1, [r0, #0xfc]
- bx lr
- .balign 4
-_020B8494: .word UNK_021CEDF8
-_020B8498: .word UNK_021CED18
-
- arm_func_start FUN_020B849C
-FUN_020B849C: ; 0x020B849C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020B84D4 ; =UNK_021CED18
- mov r2, #0x3e
- ldr r0, [r1], #0x4
- bl FUN_020BB1C0
- ldr r0, _020B84D4 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- bic r1, r1, #0x1
- str r1, [r0, #0xfc]
- bic r1, r1, #0x2
- str r1, [r0, #0xfc]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020B84D4: .word UNK_021CED18
-
- arm_func_start FUN_020B84D8
-FUN_020B84D8: ; 0x020B84D8
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- ldr r8, _020B85F4 ; =0x17101610
- ldr r1, _020B85F8 ; =UNK_021CED18
- ldr r5, _020B85FC ; =0x32323232
- ldr r4, _020B8600 ; =0x60293130
- ldr r3, _020B8604 ; =0x33333333
- ldr r2, _020B8608 ; =0x002A1B19
- mov r7, #0x0
- mov r6, #0x2
- ldr r0, _020B860C ; =UNK_021CED64
- str r8, [r1, #0x0]
- str r7, [r1, #0x4]
- str r6, [r1, #0x48]
- str r5, [r1, #0x7c]
- str r4, [r1, #0x90]
- str r3, [r1, #0xa4]
- str r2, [r1, #0xb8]
- bl MTX_Identity43_
- ldr r0, _020B8610 ; =UNK_021CED20
- bl MTX_Identity44_
- mov r2, r7
- ldr r1, _020B85F8 ; =UNK_021CED18
- ldr r7, _020B8614 ; =0x4210C210
- ldr r0, _020B8618 ; =0x40000200
- ldr lr, _020B861C ; =0x2D8B62D8
- ldr sb, _020B8620 ; =0x800001FF
- ldr r8, _020B8624 ; =0xC0080000
- ldr r6, _020B8628 ; =0x001F008F
- ldr r5, _020B862C ; =0xBFFF0000
- ldr r4, _020B8630 ; =0x00007FFF
- ldr ip, _020B8634 ; =0x800003E0
- ldr r3, _020B8638 ; =0xC0007C00
- str r0, [r1, #0x84]
- str lr, [r1, #0x80]
- mov lr, #0x4000001f
- ldr r0, _020B863C ; =UNK_021CEDD4
- str r9, [r1, #0x88]
- str r8, [r1, #0x8c]
- str r7, [r1, #0x94]
- str r7, [r1, #0x98]
- str r6, [r1, #0x9c]
- str r5, [r1, #0xa0]
- str r4, [r1, #0xa8]
- str lr, [r1, #0xac]
- str r12, [r1, #0xb0]
- str r3, [r1, #0xb4]
- str r2, [r1, #0xe0]
- str r2, [r1, #0xe4]
- str r2, [r1, #0xe8]
- bl MTX_Identity33_
- mov r3, #0x1000
- ldr r0, _020B85F8 ; =UNK_021CED18
- mov r2, #0x0
- rsb r1, r3, #0x0
- str r3, [r0, #0xec]
- str r3, [r0, #0xf0]
- str r3, [r0, #0xf4]
- str r2, [r0, #0xf8]
- str r2, [r0, #0xfc]
- str r2, [r0, #0x248]
- str r2, [r0, #0x244]
- str r2, [r0, #0x240]
- str r2, [r0, #0x254]
- str r2, [r0, #0x24c]
- str r3, [r0, #0x250]
- str r2, [r0, #0x25c]
- str r2, [r0, #0x258]
- str r1, [r0, #0x260]
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020B85F4: .word 0x17101610
-_020B85F8: .word UNK_021CED18
-_020B85FC: .word 0x32323232
-_020B8600: .word 0x60293130
-_020B8604: .word 0x33333333
-_020B8608: .word 0x002A1B19
-_020B860C: .word UNK_021CED64
-_020B8610: .word UNK_021CED20
-_020B8614: .word 0x4210C210
-_020B8618: .word 0x40000200
-_020B861C: .word 0x2D8B62D8
-_020B8620: .word 0x800001FF
-_020B8624: .word 0xC0080000
-_020B8628: .word 0x001F008F
-_020B862C: .word 0xBFFF0000
-_020B8630: .word 0x00007FFF
-_020B8634: .word 0x800003E0
-_020B8638: .word 0xC0007C00
-_020B863C: .word UNK_021CEDD4
-
- arm_func_start FUN_020B8640
-FUN_020B8640: ; 0x020B8640
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x8
- mov r7, r0
- mov r0, #0x0
- mov r6, r1
- str r0, [r7, #0x0]
- add r4, sp, #0x0
- mov r5, r2, lsl #0x1
- mov r8, #0x1
-_020B8664:
- add r1, r5, r6
- ldrh r2, [r1, #0x1a]
- ands r1, r2, #0x100
- beq _020B869C
- ldr r3, [r6, #0xc]
- mov r0, r4
- mov r1, r6
- and r2, r2, #0xff
- blx r3
- ldr r2, [r7, #0x0]
- ldr r1, [sp, #0x0]
- mov r0, r8
- orr r1, r2, r1
- str r1, [r7, #0x0]
-_020B869C:
- ldr r6, [r6, #0x10]
- cmp r6, #0x0
- bne _020B8664
- add sp, sp, #0x8
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020B86B0
-FUN_020B86B0: ; 0x020B86B0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x5c
- mov r9, r1
- ldr r3, [r9, #0x10]
- mov r10, r0
- mov r8, r2
- cmp r3, #0x0
- bne _020B8704
- add r2, r9, r8, lsl #0x1
- ldrh r4, [r2, #0x1a]
- and r2, r4, #0x300
- cmp r2, #0x100
- addne sp, sp, #0x5c
- movne r0, #0x0
- ldmneia sp!, {r4-r11,pc}
- ldr r3, [r9, #0xc]
- and r2, r4, #0xff
- blx r3
- add sp, sp, #0x5c
- mov r0, #0x1
- ldmia sp!, {r4-r11,pc}
-_020B8704:
- mov r7, #0x0
- mov r3, r7
- mov r4, r9
- mov r2, r8, lsl #0x1
-_020B8714:
- add r0, r2, r4
- ldrh r0, [r0, #0x1a]
- and r0, r0, #0x300
- cmp r0, #0x100
- ldreq r0, [r4, #0x4]
- moveq r1, r4
- ldr r4, [r4, #0x10]
- addeq r7, r7, r0
- addeq r3, r3, #0x1
- cmp r4, #0x0
- bne _020B8714
- cmp r7, #0x0
- addeq sp, sp, #0x5c
- moveq r0, #0x0
- ldmeqia sp!, {r4-r11,pc}
- cmp r3, #0x1
- bne _020B877C
- add r0, r1, r8, lsl #0x1
- ldrh r2, [r0, #0x1a]
- ldr r3, [r1, #0xc]
- mov r0, r10
- and r2, r2, #0xff
- blx r3
- add sp, sp, #0x5c
- mov r0, #0x1
- ldmia sp!, {r4-r11,pc}
-_020B877C:
- mov r1, r10
- mov r0, #0x0
- mov r2, #0x58
- bl MIi_CpuClearFast
- mvn r0, #0x0
- str r0, [r10, #0x0]
- add r5, sp, #0x0
- add r4, sp, #0x4
- add r11, sp, #0x10
-_020B87A0:
- add r0, r9, r8, lsl #0x1
- ldrh r2, [r0, #0x1a]
- and r0, r2, #0x300
- cmp r0, #0x100
- bne _020B8948
- ldr r0, [r9, #0x4]
- cmp r0, #0x0
- ble _020B8948
- ldr r3, [r9, #0xc]
- mov r0, r5
- mov r1, r9
- and r2, r2, #0xff
- blx r3
- cmp r7, #0x1000
- ldreq r6, [r9, #0x4]
- beq _020B87F0
- ldr r0, [r9, #0x4]
- mov r1, r7
- bl FX_Div
- mov r6, r0
-_020B87F0:
- ldr r3, [sp, #0x0]
- mov r1, r4
- mov r2, r6
- add r0, r10, #0x4
- and r3, r3, #0x1
- bl FUN_020B8998
- ldr r1, [sp, #0x0]
- add r0, r10, #0x10
- and r3, r1, #0x8
- mov r1, r11
- mov r2, r6
- bl FUN_020B8998
- ldr r3, [sp, #0x0]
- add r0, r10, #0x1c
- add r1, sp, #0x1c
- mov r2, r6
- and r3, r3, #0x10
- bl FUN_020B8998
- ldr r0, [sp, #0x0]
- ands r0, r0, #0x4
- bne _020B8898
- ldr r0, [sp, #0x4c]
- ldr r2, [r10, #0x4c]
- smull r1, r0, r6, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- add r0, r2, r1
- str r0, [r10, #0x4c]
- ldr r0, [sp, #0x50]
- ldr r2, [r10, #0x50]
- smull r1, r0, r6, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- add r0, r2, r1
- str r0, [r10, #0x50]
- ldr r0, [sp, #0x54]
- ldr r2, [r10, #0x54]
- smull r1, r0, r6, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- add r0, r2, r1
- str r0, [r10, #0x54]
-_020B8898:
- ldr r0, [sp, #0x0]
- ands r0, r0, #0x2
- bne _020B8920
- ldr r0, [sp, #0x28]
- ldr r1, [r10, #0x28]
- mul r0, r6, r0
- add r0, r1, r0, asr #0xc
- str r0, [r10, #0x28]
- ldr r0, [sp, #0x2c]
- ldr r1, [r10, #0x2c]
- mul r0, r6, r0
- add r0, r1, r0, asr #0xc
- str r0, [r10, #0x2c]
- ldr r0, [sp, #0x30]
- ldr r1, [r10, #0x30]
- mul r0, r6, r0
- add r0, r1, r0, asr #0xc
- str r0, [r10, #0x30]
- ldr r0, [sp, #0x34]
- ldr r1, [r10, #0x34]
- mul r0, r6, r0
- add r0, r1, r0, asr #0xc
- str r0, [r10, #0x34]
- ldr r0, [sp, #0x38]
- ldr r1, [r10, #0x38]
- mul r0, r6, r0
- add r0, r1, r0, asr #0xc
- str r0, [r10, #0x38]
- ldr r0, [sp, #0x3c]
- ldr r1, [r10, #0x3c]
- mul r0, r6, r0
- add r0, r1, r0, asr #0xc
- str r0, [r10, #0x3c]
- b _020B8938
-_020B8920:
- ldr r0, [r10, #0x28]
- add r0, r0, r6
- str r0, [r10, #0x28]
- ldr r0, [r10, #0x38]
- add r0, r0, r6
- str r0, [r10, #0x38]
-_020B8938:
- ldr r1, [r10, #0x0]
- ldr r0, [sp, #0x0]
- and r0, r1, r0
- str r0, [r10, #0x0]
-_020B8948:
- ldr r9, [r9, #0x10]
- cmp r9, #0x0
- bne _020B87A0
- add r0, r10, #0x28
- add r1, r10, #0x34
- add r2, r10, #0x40
- bl VEC_CrossProduct
- add r0, r10, #0x28
- mov r1, r0
- bl VEC_Normalize
- add r0, r10, #0x40
- mov r1, r0
- bl VEC_Normalize
- add r0, r10, #0x40
- add r1, r10, #0x28
- add r2, r10, #0x34
- bl VEC_CrossProduct
- mov r0, #0x1
- add sp, sp, #0x5c
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020B8998
-FUN_020B8998:
- cmp r3, #0x0
- beq _020B89C8
- ldr r1, [r0, #0x0]
- add r1, r1, r2
- str r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- add r1, r1, r2
- str r1, [r0, #0x4]
- ldr r1, [r0, #0x8]
- add r1, r1, r2
- str r1, [r0, #0x8]
- bx lr
-_020B89C8:
- ldr r3, [r1, #0x0]
- ldr r12, [r0, #0x0]
- mul r3, r2, r3
- add r3, r12, r3, asr #0xc
- str r3, [r0, #0x0]
- ldr r3, [r1, #0x4]
- ldr r12, [r0, #0x4]
- mul r3, r2, r3
- add r3, r12, r3, asr #0xc
- str r3, [r0, #0x4]
- ldr r1, [r1, #0x8]
- ldr r3, [r0, #0x8]
- mul r1, r2, r1
- add r1, r3, r1, asr #0xc
- str r1, [r0, #0x8]
- bx lr
-
- arm_func_start FUN_020B8A08
-FUN_020B8A08: ; 0x020B8A08
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r0
- mov r5, r1
- mov r0, #0x0
- mov r4, r2, lsl #0x1
- mov r7, #0x1
-_020B8A24:
- add r1, r4, r5
- ldrh r2, [r1, #0x1a]
- ands r1, r2, #0x100
- beq _020B8A4C
- ldr r3, [r5, #0xc]
- mov r0, r6
- mov r1, r5
- and r2, r2, #0xff
- blx r3
- mov r0, r7
-_020B8A4C:
- ldr r5, [r5, #0x10]
- cmp r5, #0x0
- bne _020B8A24
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020B8A60
-FUN_020B8A60: ; 0x020B8A60
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x80
- mov r5, r0
- ldr r1, [r5, #0x8]
- ands r0, r1, #0x200
- bne _020B8DB4
- ands r0, r1, #0x1
- beq _020B8DB4
- add r0, sp, #0x10
- mov r1, #0x0
- bl FUN_020BB824
- mov r0, #0x1e
- str r0, [sp, #0x0]
- add r1, sp, #0x0
- mov r0, #0x13
- mov r2, #0x1
- bl FUN_020BB1C0
- ldr r2, [r5, #0xb0]
- ldr r0, [r2, #0x10]
- and r1, r0, #0xc0000000
- cmp r1, #0xc0000000
- beq _020B8AF0
- bic r0, r0, #0xc0000000
- str r0, [r2, #0x10]
- ldr r2, [r5, #0xb0]
- ldr r3, _020B8DC8 ; =UNK_02106630
- ldr r0, [r2, #0x10]
- ldr r1, _020B8DCC ; =UNK_02106634
- orr r0, r0, #0xc0000000
- str r0, [r2, #0x10]
- ldr r2, [r5, #0xb0]
- ldr r0, [r3, #0x0]
- ldr r4, [r2, #0x10]
- mov r2, #0x1
- str r4, [r3, #0x4]
- bl FUN_020BB1C0
-_020B8AF0:
- ldr r0, [r5, #0x40]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x99]
- moveq r4, #0x0
- cmp r4, #0x1
- bne _020B8B3C
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x40]
- blx r1
- ldr r0, [r5, #0x40]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x99]
- ldr r0, [r5, #0x8]
- moveq r4, #0x0
- and r0, r0, #0x40
- b _020B8B40
-_020B8B3C:
- mov r0, #0x0
-_020B8B40:
- cmp r0, #0x0
- bne _020B8B84
- ldr r0, [r5, #0xb0]
- ldr r1, _020B8DD0 ; =UNK_02106660
- ldrh r6, [r0, #0x2e]
- ldrh r3, [r0, #0x2c]
- mov r0, #0x16
- rsb r2, r6, #0x0
- mov lr, r3, lsl #0xf
- mov r12, r2, lsl #0xf
- mov r3, r6, lsl #0xf
- mov r2, #0x10
- str lr, [r1, #0x0]
- str r12, [r1, #0x14]
- str lr, [r1, #0x30]
- str r3, [r1, #0x34]
- bl FUN_020BB1C0
-_020B8B84:
- cmp r4, #0x2
- bne _020B8BC0
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x40]
- blx r1
- ldr r0, [r5, #0x40]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x99]
- ldr r0, [r5, #0x8]
- moveq r4, #0x0
- and r0, r0, #0x40
- b _020B8BC4
-_020B8BC0:
- mov r0, #0x0
-_020B8BC4:
- cmp r0, #0x0
- bne _020B8C28
- ldr r12, [r5, #0xd8]
- ldr r0, [r5, #0x0]
- ldrh r2, [r12, #0xa]
- add r3, r12, #0x4
- ldrb r0, [r0, #0x1]
- ldrh r1, [r3, r2]
- add r2, r3, r2
- mla r0, r1, r0, r2
- ldr r0, [r0, #0x4]
- add r1, r12, r0
- ldrh r2, [r1, #0x1e]
- ands r0, r2, #0x2000
- beq _020B8C28
- add r1, r1, #0x2c
- ands r0, r2, #0x2
- addeq r1, r1, #0x8
- ands r0, r2, #0x4
- addeq r1, r1, #0x4
- ands r0, r2, #0x8
- addeq r1, r1, #0x8
- mov r0, #0x18
- mov r2, #0x10
- bl FUN_020BB1C0
-_020B8C28:
- cmp r4, #0x3
- movne r0, #0x0
- bne _020B8C54
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x40]
- blx r1
- ldr r0, [r5, #0x8]
- and r0, r0, #0x40
-_020B8C54:
- cmp r0, #0x0
- bne _020B8D84
- ldr r0, _020B8DD4 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- ands r0, r1, #0x1
- beq _020B8CA0
- ldr r1, _020B8DD8 ; =UNK_021CEDF8
- mov r0, #0x1c
- mov r2, #0x3
- bl FUN_020BB1C0
- ldr r1, _020B8DDC ; =UNK_021CEDD4
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- add r1, sp, #0x10
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
- b _020B8CE0
-_020B8CA0:
- ands r0, r1, #0x2
- beq _020B8CBC
- add r1, sp, #0x10
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
- b _020B8CE0
-_020B8CBC:
- bl FUN_020B8344
- mov r1, r0
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
- add r1, sp, #0x10
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
-_020B8CE0:
- bl FUN_020BB394
- ldr r0, _020B8DE0 ; =0x04000440
- mov r2, #0x0
- ldr r1, _020B8DE4 ; =0x04000444
- str r2, [r0, #0x0]
- ldr r0, _020B8DE8 ; =0x04000454
- str r2, [r1, #0x0]
- str r2, [r0, #0x0]
- add r4, sp, #0x40
-_020B8D04:
- mov r0, r4
- bl G3X_GetClipMtx
- cmp r0, #0x0
- bne _020B8D04
- ldr r1, _020B8DEC ; =0x04000448
- mov r2, #0x1
- str r2, [r1, #0x0]
- ldr r0, _020B8DE0 ; =0x04000440
- mov r2, #0x3
- str r2, [r0, #0x0]
- add r1, sp, #0x40
- mov r0, #0x16
- mov r2, #0x10
- bl FUN_020BB1C0
- ldr r1, [sp, #0x70]
- ldr r0, [sp, #0x74]
- mov r2, r1, asr #0x4
- mov r1, r0, asr #0x4
- mov r0, r2, lsl #0x8
- mov r1, r1, lsl #0x8
- mov r0, r0, asr #0x10
- mov r1, r1, asr #0x10
- mov r0, r0, lsl #0x10
- mov r1, r1, lsl #0x10
- mov r2, r0, lsr #0x10
- mov r0, r1, lsr #0x10
- orr r3, r2, r0, lsl #0x10
- add r1, sp, #0x4
- mov r0, #0x22
- mov r2, #0x1
- str r3, [sp, #0x4]
- bl FUN_020BB1C0
-_020B8D84:
- mov r3, #0x2
- add r1, sp, #0x8
- mov r0, #0x10
- mov r2, #0x1
- str r3, [sp, #0x8]
- bl FUN_020BB1C0
- mov r3, #0x1e
- add r1, sp, #0xc
- mov r0, #0x14
- mov r2, #0x1
- str r3, [sp, #0xc]
- bl FUN_020BB1C0
-_020B8DB4:
- ldr r0, [r5, #0x0]
- add r0, r0, #0x3
- str r0, [r5, #0x0]
- add sp, sp, #0x80
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020B8DC8: .word UNK_02106630
-_020B8DCC: .word UNK_02106634
-_020B8DD0: .word UNK_02106660
-_020B8DD4: .word UNK_021CED18
-_020B8DD8: .word UNK_021CEDF8
-_020B8DDC: .word UNK_021CEDD4
-_020B8DE0: .word 0x04000440
-_020B8DE4: .word 0x04000444
-_020B8DE8: .word 0x04000454
-_020B8DEC: .word 0x04000448
-
- arm_func_start FUN_020B8DF0
-FUN_020B8DF0: ; 0x020B8DF0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x44
- mov r7, r0
- ldr r1, [r7, #0x8]
- ands r0, r1, #0x200
- bne _020B90E8
- ands r0, r1, #0x1
- beq _020B90E8
- ldr r2, [r7, #0xb0]
- ldr r0, [r2, #0x10]
- and r1, r0, #0xc0000000
- cmp r1, #0x80000000
- beq _020B8E5C
- bic r0, r0, #0xc0000000
- str r0, [r2, #0x10]
- ldr r2, [r7, #0xb0]
- ldr r3, _020B90FC ; =UNK_02106638
- ldr r0, [r2, #0x10]
- ldr r1, _020B9100 ; =UNK_0210663C
- orr r0, r0, #0x80000000
- str r0, [r2, #0x10]
- ldr r2, [r7, #0xb0]
- ldr r0, [r3, #0x0]
- ldr r4, [r2, #0x10]
- mov r2, #0x1
- str r4, [r3, #0x4]
- bl FUN_020BB1C0
-_020B8E5C:
- mov r0, #0x3
- str r0, [sp, #0x0]
- add r1, sp, #0x0
- mov r0, #0x10
- mov r2, #0x1
- bl FUN_020BB1C0
- ldr r0, [r7, #0x3c]
- cmp r0, #0x0
- ldrneb r6, [r7, #0x98]
- moveq r6, #0x0
- cmp r6, #0x1
- bne _020B8EC0
- ldr r1, [r7, #0x8]
- mov r0, r7
- bic r1, r1, #0x40
- str r1, [r7, #0x8]
- ldr r1, [r7, #0x3c]
- blx r1
- ldr r0, [r7, #0x3c]
- cmp r0, #0x0
- ldrneb r6, [r7, #0x98]
- ldr r0, [r7, #0x8]
- moveq r6, #0x0
- and r0, r0, #0x40
- b _020B8EC4
-_020B8EC0:
- mov r0, #0x0
-_020B8EC4:
- cmp r0, #0x0
- bne _020B8F3C
- ldr r0, [r7, #0xb0]
- add r1, sp, #0x38
- ldrh r4, [r0, #0x2e]
- ldrh r5, [r0, #0x2c]
- mov r3, #0x10000
- rsb r0, r4, #0x0
- mov r12, r0, lsl #0xf
- mov lr, r5, lsl #0xf
- mov r0, #0x1b
- mov r2, #0x3
- str lr, [sp, #0x38]
- str r12, [sp, #0x3c]
- str r3, [sp, #0x40]
- bl FUN_020BB1C0
- mov r0, r5, lsl #0x13
- mov r1, r4, lsl #0x13
- mov r0, r0, asr #0x10
- mov r1, r1, asr #0x10
- mov r0, r0, lsl #0x10
- mov r1, r1, lsl #0x10
- mov r2, r0, lsr #0x10
- mov r0, r1, lsr #0x10
- orr r3, r2, r0, lsl #0x10
- add r1, sp, #0x4
- mov r0, #0x22
- mov r2, #0x1
- str r3, [sp, #0x4]
- bl FUN_020BB1C0
-_020B8F3C:
- cmp r6, #0x2
- bne _020B8F78
- ldr r1, [r7, #0x8]
- mov r0, r7
- bic r1, r1, #0x40
- str r1, [r7, #0x8]
- ldr r1, [r7, #0x3c]
- blx r1
- ldr r0, [r7, #0x3c]
- cmp r0, #0x0
- ldrneb r6, [r7, #0x98]
- ldr r0, [r7, #0x8]
- moveq r6, #0x0
- and r0, r0, #0x40
- b _020B8F7C
-_020B8F78:
- mov r0, #0x0
-_020B8F7C:
- cmp r0, #0x0
- bne _020B8FE0
- ldr r4, [r7, #0xd8]
- ldr r0, [r7, #0x0]
- ldrh r2, [r4, #0xa]
- add r3, r4, #0x4
- ldrb r0, [r0, #0x1]
- ldrh r1, [r3, r2]
- add r2, r3, r2
- mla r0, r1, r0, r2
- ldr r0, [r0, #0x4]
- add r1, r4, r0
- ldrh r2, [r1, #0x1e]
- ands r0, r2, #0x2000
- beq _020B8FE0
- add r1, r1, #0x2c
- ands r0, r2, #0x2
- addeq r1, r1, #0x8
- ands r0, r2, #0x4
- addeq r1, r1, #0x4
- ands r0, r2, #0x8
- addeq r1, r1, #0x8
- mov r0, #0x18
- mov r2, #0x10
- bl FUN_020BB1C0
-_020B8FE0:
- cmp r6, #0x3
- movne r0, #0x0
- bne _020B900C
- ldr r1, [r7, #0x8]
- mov r0, r7
- bic r1, r1, #0x40
- str r1, [r7, #0x8]
- ldr r1, [r7, #0x3c]
- blx r1
- ldr r0, [r7, #0x8]
- and r0, r0, #0x40
-_020B900C:
- cmp r0, #0x0
- bne _020B90D0
- mov r3, #0x2
- add r1, sp, #0x8
- mov r0, #0x10
- mov r2, #0x1
- str r3, [sp, #0x8]
- bl FUN_020BB1C0
- add r1, sp, #0x14
- mov r0, #0x0
- bl FUN_020BB824
- mov r3, #0x3
- add r1, sp, #0xc
- mov r0, #0x10
- mov r2, #0x1
- str r3, [sp, #0xc]
- bl FUN_020BB1C0
- ldr r0, _020B9104 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- ands r0, r1, #0x1
- beq _020B9094
- ldr r1, _020B9108 ; =UNK_021CED64
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- ldr r1, _020B910C ; =UNK_021CEDD4
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- add r1, sp, #0x14
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- b _020B90D0
-_020B9094:
- ands r0, r1, #0x2
- beq _020B90C0
- ldr r1, _020B9108 ; =UNK_021CED64
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- add r1, sp, #0x14
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- b _020B90D0
-_020B90C0:
- add r1, sp, #0x14
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
-_020B90D0:
- mov r3, #0x2
- add r1, sp, #0x10
- mov r0, #0x10
- mov r2, #0x1
- str r3, [sp, #0x10]
- bl FUN_020BB1C0
-_020B90E8:
- ldr r0, [r7, #0x0]
- add r0, r0, #0x3
- str r0, [r7, #0x0]
- add sp, sp, #0x44
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020B90FC: .word UNK_02106638
-_020B9100: .word UNK_0210663C
-_020B9104: .word UNK_021CED18
-_020B9108: .word UNK_021CED64
-_020B910C: .word UNK_021CEDD4
-
- arm_func_start FUN_020B9110
-FUN_020B9110: ; 0x020B9110
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x10
- mov r4, r0
- ldr r2, [r4, #0x8]
- ands r0, r2, #0x100
- bne _020B9164
- ands r0, r2, #0x200
- bne _020B9164
- cmp r1, #0x0
- ldreq r0, [r4, #0xe0]
- add r1, sp, #0x0
- streq r0, [sp, #0x8]
- streq r0, [sp, #0x4]
- streq r0, [sp, #0x0]
- ldrne r0, [r4, #0xe4]
- mov r2, #0x3
- strne r0, [sp, #0x8]
- strne r0, [sp, #0x4]
- strne r0, [sp, #0x0]
- mov r0, #0x1b
- bl FUN_020BB1C0
-_020B9164:
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- add sp, sp, #0x10
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020B9178
-FUN_020B9178: ; 0x020B9178
- stmdb sp!, {r4-r6,lr}
- mov r5, r0
- ldr r0, [r5, #0x34]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x96]
- moveq r4, #0x0
- cmp r4, #0x1
- bne _020B91CC
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x34]
- blx r1
- ldr r0, [r5, #0x34]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x96]
- ldr r0, [r5, #0x8]
- moveq r4, #0x0
- and r1, r0, #0x40
- b _020B91D0
-_020B91CC:
- mov r1, #0x0
-_020B91D0:
- ldr r0, [r5, #0x8]
- ands r0, r0, #0x100
- bne _020B9228
- cmp r1, #0x0
- bne _020B9228
- ldr r0, [r5, #0x0]
- ldrb r12, [r0, #0x1]
- ldrb r3, [r0, #0x2]
- ldrb lr, [r0, #0x3]
- ldrb r2, [r0, #0x5]
- ldrb r1, [r0, #0x6]
- orr r3, r12, r3, lsl #0x8
- ldrb r6, [r0, #0x4]
- orr r12, r3, lr, lsl #0x10
- ldrb r3, [r0, #0x7]
- orr r1, r2, r1, lsl #0x8
- orr r6, r12, r6, lsl #0x18
- ldrb r2, [r0, #0x8]
- orr r1, r1, r3, lsl #0x10
- add r0, r0, r6
- orr r1, r1, r2, lsl #0x18
- bl FUN_020BB2B0
-_020B9228:
- cmp r4, #0x3
- bne _020B9248
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x34]
- blx r1
-_020B9248:
- ldr r0, [r5, #0x0]
- add r0, r0, #0x9
- str r0, [r5, #0x0]
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020B9258
-FUN_020B9258: ; 0x020B9258
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x8c
- ldr r1, [r0, #0x4]
- ldr r4, [r0, #0x0]
- ldr r6, [r1, #0x4]
- ldrb r2, [r4, #0x2]
- ldr r3, [r6, #0x10]
- mov r10, #0x0
- str r0, [sp, #0x0]
- str r2, [sp, #0x8]
- add r3, r6, r3
- add r1, sp, #0x34
- mov r0, r10
- mov r2, #0x54
- mov r9, r10
- str r3, [sp, #0x4]
- add r8, r4, #0x3
- bl MIi_CpuClearFast
- bl FUN_020BB394
- ldr r0, _020B98AC ; =0x04000440
- mov r7, r10
- str r7, [r0, #0x0]
- mov r0, #0x1
- ldr r2, _020B98B0 ; =0x0400044C
- ldr r1, _020B98B4 ; =0x04000454
- str r0, [r2, #0x0]
- str r0, [sp, #0x10]
- str r7, [r1, #0x0]
- mov r1, #0x2
- ldr r0, _020B98AC ; =0x04000440
- str r1, [sp, #0x14]
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- bls _020B96CC
-_020B92E4:
- ldrb r4, [r8, #0x1]
- mov r0, #0x64
- ldr r3, _020B98B8 ; =UNK_021D0380
- mul r0, r4, r0
- str r0, [sp, #0xc]
- ldr r0, [sp, #0x0]
- mov r1, r4, lsr #0x5
- add r0, r0, r1, lsl #0x2
- ldr r1, [sp, #0x10]
- and r2, r4, #0x1f
- mov r1, r1, lsl r2
- ldr r11, [r0, #0xcc]
- ldr r2, [sp, #0xc]
- ands r11, r1, r11
- add r6, r3, r2
- bne _020B9358
- ldr r3, [r0, #0xcc]
- mov r2, #0x54
- orr r1, r3, r1
- str r1, [r0, #0xcc]
- ldr r0, [sp, #0x4]
- ldr r1, _020B98BC ; =0x04000450
- mla r0, r4, r2, r0
- ldrb r2, [r8, #0x0]
- str r2, [r1, #0x0]
- ldr r2, [sp, #0x10]
- ldr r1, _020B98AC ; =0x04000440
- str r2, [r1, #0x0]
- bl G3_MultMtx43
-_020B9358:
- cmp r7, #0x0
- beq _020B9500
- ldr r2, [sp, #0x6c]
- ldr r1, [r5, #0x0]
- str r2, [sp, #0x18]
- ldr r2, [sp, #0x70]
- mov r0, r1, asr #0x1f
- str r2, [sp, #0x1c]
- ldr r2, [sp, #0x74]
- ldr r12, [sp, #0x64]
- str r2, [sp, #0x20]
- ldr r2, [sp, #0x78]
- ldr lr, [sp, #0x68]
- str r2, [sp, #0x24]
- ldr r2, [sp, #0x7c]
- str r2, [sp, #0x28]
- ldr r2, [sp, #0x80]
- str r2, [sp, #0x2c]
- ldr r2, [sp, #0x84]
- str r2, [sp, #0x30]
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r0, r3, lsr #0xc
- orr r0, r0, r2, lsl #0x14
- adds r0, r12, r0
- str r0, [sp, #0x64]
- ldr r1, [r5, #0x4]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r0, r3, lsr #0xc
- orr r0, r0, r2, lsl #0x14
- adds r0, lr, r0
- str r0, [sp, #0x68]
- ldr r1, [r5, #0x8]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x18]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x6c]
- ldr r1, [r5, #0xc]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x1c]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x70]
- ldr r1, [r5, #0x10]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x20]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x74]
- ldr r1, [r5, #0x14]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x24]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x78]
- ldr r1, [r5, #0x18]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x28]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x7c]
- ldr r1, [r5, #0x1c]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x2c]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x80]
- ldr r1, [r5, #0x20]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r1, r3, lsr #0xc
- ldr r0, [sp, #0x30]
- orr r1, r1, r2, lsl #0x14
- adds r0, r0, r1
- str r0, [sp, #0x84]
-_020B9500:
- cmp r11, #0x0
- bne _020B9538
-_020B9508:
- mov r0, r6
- bl G3X_GetClipMtx
- cmp r0, #0x0
- bne _020B9508
- ldr r1, [sp, #0x14]
- ldr r0, _020B98AC ; =0x04000440
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x4]
- mov r1, #0x54
- mla r0, r4, r1, r0
- add r0, r0, #0x30
- bl G3_MultMtx33
-_020B9538:
- ldrb r1, [r8, #0x2]
- ldr r2, [sp, #0x34]
- ldr r0, [r6, #0x0]
- mov r10, r1, lsl #0x4
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x34]
- mov r9, r10, asr #0x1f
- ldr r2, [sp, #0x38]
- ldr r0, [r6, #0x4]
- ldr r3, [sp, #0x3c]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x38]
- ldr r0, [r6, #0x8]
- ldr r2, [sp, #0x40]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r3, r1
- str r0, [sp, #0x3c]
- ldr r0, [r6, #0x10]
- ldr r3, [sp, #0x44]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x40]
- ldr r0, [r6, #0x14]
- ldr r2, [sp, #0x48]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r3, r1
- str r0, [sp, #0x44]
- ldr r0, [r6, #0x18]
- ldr r3, [sp, #0x4c]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x48]
- ldr r0, [r6, #0x20]
- ldr r2, [sp, #0x50]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r3, r1
- str r0, [sp, #0x4c]
- ldr r0, [r6, #0x24]
- ldr r3, [sp, #0x54]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x50]
- ldr r0, [r6, #0x28]
- ldr r2, [sp, #0x58]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r3, r1
- str r0, [sp, #0x54]
- ldr r0, [r6, #0x30]
- ldr r3, [sp, #0x5c]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x58]
- ldr r0, [r6, #0x34]
- ldr r2, [sp, #0x60]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r3, r1
- str r0, [sp, #0x5c]
- ldr r0, [r6, #0x38]
- smull r1, r0, r10, r0
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- adds r0, r2, r1
- str r0, [sp, #0x60]
- cmp r11, #0x0
- ldr r1, _020B98C0 ; =UNK_021D03C0
- ldr r0, [sp, #0xc]
- add r5, r1, r0
- add r8, r8, #0x3
- bne _020B96BC
-_020B96AC:
- mov r0, r5
- bl G3X_GetVectorMtx
- cmp r0, #0x0
- bne _020B96AC
-_020B96BC:
- ldr r0, [sp, #0x8]
- add r7, r7, #0x1
- cmp r7, r0
- blo _020B92E4
-_020B96CC:
- ldr r1, [r5, #0x0]
- ldr r4, [sp, #0x64]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r0, r3, lsr #0xc
- orr r0, r0, r2, lsl #0x14
- adds r0, r4, r0
- str r0, [sp, #0x64]
- ldr r1, [r5, #0x4]
- ldr r4, [sp, #0x68]
- mov r0, r1, asr #0x1f
- umull r3, r2, r10, r1
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- mov r0, r3, lsr #0xc
- orr r0, r0, r2, lsl #0x14
- adds r0, r4, r0
- str r0, [sp, #0x68]
- ldr r1, [r5, #0x8]
- ldr r4, [sp, #0x6c]
- umull r0, r2, r10, r1
- mov r3, r0, lsr #0xc
- mov r0, r1, asr #0x1f
- mla r2, r10, r0, r2
- mla r2, r9, r1, r2
- orr r3, r3, r2, lsl #0x14
- adds r0, r4, r3
- str r0, [sp, #0x6c]
- ldr r7, [r5, #0xc]
- ldr r12, [sp, #0x70]
- mov r6, r7, asr #0x1f
- umull r11, r8, r10, r7
- mla r8, r10, r6, r8
- mla r8, r9, r7, r8
- mov r6, r11, lsr #0xc
- orr r6, r6, r8, lsl #0x14
- adds r6, r12, r6
- str r6, [sp, #0x70]
- ldr r7, [r5, #0x10]
- ldr r4, [sp, #0x74]
- mov r6, r7, asr #0x1f
- umull r11, r8, r10, r7
- mla r8, r10, r6, r8
- mla r8, r9, r7, r8
- mov r6, r11, lsr #0xc
- orr r6, r6, r8, lsl #0x14
- adds r4, r4, r6
- str r4, [sp, #0x74]
- ldr r6, [r5, #0x14]
- ldr r3, [sp, #0x78]
- mov r4, r6, asr #0x1f
- umull r8, r7, r10, r6
- mla r7, r10, r4, r7
- mla r7, r9, r6, r7
- mov r4, r8, lsr #0xc
- orr r4, r4, r7, lsl #0x14
- adds r3, r3, r4
- str r3, [sp, #0x78]
- ldr r4, [r5, #0x18]
- ldr r2, [sp, #0x7c]
- mov r3, r4, asr #0x1f
- umull r7, r6, r10, r4
- mla r6, r10, r3, r6
- mla r6, r9, r4, r6
- mov r3, r7, lsr #0xc
- orr r3, r3, r6, lsl #0x14
- adds r2, r2, r3
- str r2, [sp, #0x7c]
- ldr r3, [r5, #0x1c]
- ldr r1, [sp, #0x80]
- mov r2, r3, asr #0x1f
- umull r6, r4, r10, r3
- mla r4, r10, r2, r4
- mla r4, r9, r3, r4
- mov r2, r6, lsr #0xc
- orr r2, r2, r4, lsl #0x14
- adds r1, r1, r2
- str r1, [sp, #0x80]
- ldr r2, [r5, #0x20]
- ldr lr, [sp, #0x84]
- mov r1, r2, asr #0x1f
- umull r4, r3, r10, r2
- mla r3, r10, r1, r3
- mla r3, r9, r2, r3
- mov r1, r4, lsr #0xc
- orr r1, r1, r3, lsl #0x14
- adds r1, lr, r1
- add r0, sp, #0x64
- str r1, [sp, #0x84]
- bl G3_LoadMtx43
- ldr r1, _020B98AC ; =0x04000440
- mov r2, #0x1
- add r0, sp, #0x34
- str r2, [r1, #0x0]
- bl G3_LoadMtx43
- ldr r3, _020B98AC ; =0x04000440
- mov r0, #0x0
- str r0, [r3, #0x0]
- ldr r1, _020B98BC ; =0x04000450
- mov r2, #0x1
- mov r0, #0x2
- str r2, [r1, #0x0]
- str r0, [r3, #0x0]
- ldr r0, [sp, #0x0]
- ldr r1, [r0, #0x0]
- ldr r0, _020B98B0 ; =0x0400044C
- ldrb r2, [r1, #0x1]
- mov r1, #0x3
- str r2, [r0, #0x0]
- ldr r0, [sp, #0x0]
- ldr r2, [r0, #0x0]
- ldrb r0, [r2, #0x2]
- add r0, r0, #0x1
- mla r1, r0, r1, r2
- ldr r0, [sp, #0x0]
- str r1, [r0, #0x0]
- add sp, sp, #0x8c
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B98AC: .word 0x04000440
-_020B98B0: .word 0x0400044C
-_020B98B4: .word 0x04000454
-_020B98B8: .word UNK_021D0380
-_020B98BC: .word 0x04000450
-_020B98C0: .word UNK_021D03C0
-
- arm_func_start FUN_020B98C4
-FUN_020B98C4: ; 0x020B98C4
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xcc
- mov r10, r0
- ldr r2, [r10, #0x8]
- mov r9, r1
- ands r0, r2, #0x200
- mov r7, #0x2
- ldr r6, _020B9C28 ; =UNK_02106718
- ldr fp, _020B9C2C ; =UNK_02106724
- ldr r5, _020B9C30 ; =UNK_021066F4
- beq _020B992C
- cmp r9, #0x40
- beq _020B9900
- cmp r9, #0x60
- bne _020B9904
-_020B9900:
- add r7, r7, #0x1
-_020B9904:
- cmp r9, #0x20
- beq _020B9914
- cmp r9, #0x60
- bne _020B9918
-_020B9914:
- add r7, r7, #0x1
-_020B9918:
- ldr r0, [r10, #0x0]
- add sp, sp, #0xcc
- add r0, r0, r7
- str r0, [r10, #0x0]
- ldmia sp!, {r4-r11,pc}
-_020B992C:
- cmp r9, #0x40
- beq _020B993C
- cmp r9, #0x60
- bne _020B9974
-_020B993C:
- add r7, r7, #0x1
- ands r0, r2, #0x100
- bne _020B9974
- cmp r9, #0x40
- ldreq r0, [r10, #0x0]
- add r1, sp, #0x0
- ldreqb r0, [r0, #0x2]
- mov r2, #0x1
- streq r0, [sp, #0x0]
- ldrne r0, [r10, #0x0]
- ldrneb r0, [r0, #0x3]
- strne r0, [sp, #0x0]
- mov r0, #0x14
- bl FUN_020BB1C0
-_020B9974:
- ldr r0, [r10, #0x2c]
- cmp r0, #0x0
- ldrneb r8, [r10, #0x94]
- moveq r8, #0x0
- cmp r8, #0x1
- bne _020B99C0
- ldr r1, [r10, #0x8]
- mov r0, r10
- bic r1, r1, #0x40
- str r1, [r10, #0x8]
- ldr r1, [r10, #0x2c]
- blx r1
- ldr r0, [r10, #0x2c]
- cmp r0, #0x0
- ldrneb r8, [r10, #0x94]
- ldr r0, [r10, #0x8]
- moveq r8, #0x0
- and r1, r0, #0x40
- b _020B99C4
-_020B99C0:
- mov r1, #0x0
-_020B99C4:
- ldr r0, [r10, #0x8]
- ands r0, r0, #0x100
- bne _020B9BA4
- cmp r1, #0x0
- bne _020B9BA4
- bl FUN_020BB394
- ldr r2, _020B9C34 ; =0x00151110
- ldr r1, _020B9C38 ; =0x04000400
- mov r0, #0x0
- str r2, [r1, #0x0]
- str r0, [r1, #0x0]
- str r0, [r1, #0x0]
- add r4, sp, #0x8
-_020B99F8:
- mov r0, r4
- bl G3X_GetClipMtx
- cmp r0, #0x0
- bne _020B99F8
- ldr r0, _020B9C3C ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- ands r0, r1, #0x1
- beq _020B9A38
- bl FUN_020B82A4
- add r1, sp, #0x48
- bl MTX_Copy43To44_
- add r0, sp, #0x8
- add r1, sp, #0x48
- mov r2, r0
- bl MTX_Concat44
- b _020B9A5C
-_020B9A38:
- ands r0, r1, #0x2
- beq _020B9A5C
- ldr r0, _020B9C40 ; =UNK_021CED64
- add r1, sp, #0x88
- bl MTX_Copy43To44_
- add r0, sp, #0x8
- add r1, sp, #0x88
- mov r2, r0
- bl MTX_Concat44
-_020B9A5C:
- ldr r1, [sp, #0x38]
- add r0, sp, #0x8
- str r1, [r6, #0x0]
- ldr r1, [sp, #0x3c]
- str r1, [r6, #0x4]
- ldr r1, [sp, #0x40]
- str r1, [r6, #0x8]
- bl VEC_Mag
- str r0, [r11, #0x0]
- add r0, sp, #0x18
- bl VEC_Mag
- str r0, [r11, #0x4]
- add r0, sp, #0x28
- bl VEC_Mag
- str r0, [r11, #0x8]
- ldr r0, [sp, #0x1c]
- cmp r0, #0x0
- bne _020B9AB0
- ldr r0, [sp, #0x20]
- cmp r0, #0x0
- beq _020B9AD4
-_020B9AB0:
- add r0, sp, #0x18
- add r1, r5, #0xc
- bl VEC_Normalize
- ldr r0, [r5, #0x14]
- rsb r0, r0, #0x0
- str r0, [r5, #0x1c]
- ldr r0, [r5, #0x10]
- str r0, [r5, #0x20]
- b _020B9AF4
-_020B9AD4:
- add r0, sp, #0x28
- add r1, r5, #0x18
- bl VEC_Normalize
- ldr r0, [r5, #0x1c]
- rsb r0, r0, #0x0
- str r0, [r5, #0x14]
- ldr r0, [r5, #0x20]
- str r0, [r5, #0x10]
-_020B9AF4:
- ldr r0, _020B9C3C ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- ands r0, r1, #0x1
- beq _020B9B48
- ldr r3, _020B9C44 ; =0x00171012
- ldr r1, _020B9C38 ; =0x04000400
- ldr r0, _020B9C48 ; =UNK_021066EC
- mov r2, #0x8
- str r3, [r1, #0x0]
- bl MIi_CpuSend32
- bl FUN_020B8264
- ldr r1, _020B9C38 ; =0x04000400
- mov r2, #0x30
- bl MIi_CpuSend32
- ldr r2, _020B9C4C ; =0x00001B19
- ldr r1, _020B9C38 ; =0x04000400
- ldr r0, _020B9C30 ; =UNK_021066F4
- str r2, [r1, #0x0]
- mov r2, #0x3c
- bl MIi_CpuSend32
- b _020B9BA4
-_020B9B48:
- ands r0, r1, #0x2
- beq _020B9B94
- ldr r3, _020B9C44 ; =0x00171012
- ldr r1, _020B9C38 ; =0x04000400
- ldr r0, _020B9C48 ; =UNK_021066EC
- mov r2, #0x8
- str r3, [r1, #0x0]
- bl MIi_CpuSend32
- bl FUN_020B8344
- ldr r1, _020B9C38 ; =0x04000400
- mov r2, #0x30
- bl MIi_CpuSend32
- ldr r2, _020B9C4C ; =0x00001B19
- ldr r1, _020B9C38 ; =0x04000400
- ldr r0, _020B9C30 ; =UNK_021066F4
- str r2, [r1, #0x0]
- mov r2, #0x3c
- bl MIi_CpuSend32
- b _020B9BA4
-_020B9B94:
- ldr r0, _020B9C50 ; =UNK_021066E8
- ldr r1, _020B9C38 ; =0x04000400
- mov r2, #0x48
- bl MIi_CpuSend32
-_020B9BA4:
- cmp r8, #0x3
- movne r0, #0x0
- bne _020B9BD0
- ldr r1, [r10, #0x8]
- mov r0, r10
- bic r1, r1, #0x40
- str r1, [r10, #0x8]
- ldr r1, [r10, #0x2c]
- blx r1
- ldr r0, [r10, #0x8]
- and r0, r0, #0x40
-_020B9BD0:
- cmp r9, #0x20
- beq _020B9BE0
- cmp r9, #0x60
- bne _020B9C14
-_020B9BE0:
- cmp r0, #0x0
- add r7, r7, #0x1
- bne _020B9C14
- ldr r0, [r10, #0x8]
- ands r0, r0, #0x100
- bne _020B9C14
- ldr r0, [r10, #0x0]
- add r1, sp, #0x4
- ldrb r3, [r0, #0x2]
- mov r0, #0x13
- mov r2, #0x1
- str r3, [sp, #0x4]
- bl FUN_020BB1C0
-_020B9C14:
- ldr r0, [r10, #0x0]
- add r0, r0, r7
- str r0, [r10, #0x0]
- add sp, sp, #0xcc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020B9C28: .word UNK_02106718
-_020B9C2C: .word UNK_02106724
-_020B9C30: .word UNK_021066F4
-_020B9C34: .word 0x00151110
-_020B9C38: .word 0x04000400
-_020B9C3C: .word UNK_021CED18
-_020B9C40: .word UNK_021CED64
-_020B9C44: .word 0x00171012
-_020B9C48: .word UNK_021066EC
-_020B9C4C: .word 0x00001B19
-_020B9C50: .word UNK_021066E8
-
- arm_func_start FUN_020B9C54
-FUN_020B9C54: ; 0x020B9C54
- stmdb sp!, {r4-r10,lr}
- sub sp, sp, #0xc8
- mov r9, r0
- ldr r2, [r9, #0x8]
- mov r8, r1
- ands r0, r2, #0x200
- mov r6, #0x2
- ldr r5, _020B9F58 ; =UNK_021066D0
- ldr r4, _020B9F5C ; =UNK_021066DC
- beq _020B9CB8
- cmp r8, #0x40
- beq _020B9C8C
- cmp r8, #0x60
- bne _020B9C90
-_020B9C8C:
- add r6, r6, #0x1
-_020B9C90:
- cmp r8, #0x20
- beq _020B9CA0
- cmp r8, #0x60
- bne _020B9CA4
-_020B9CA0:
- add r6, r6, #0x1
-_020B9CA4:
- ldr r0, [r9, #0x0]
- add sp, sp, #0xc8
- add r0, r0, r6
- str r0, [r9, #0x0]
- ldmia sp!, {r4-r10,pc}
-_020B9CB8:
- cmp r8, #0x40
- beq _020B9CC8
- cmp r8, #0x60
- bne _020B9D00
-_020B9CC8:
- add r6, r6, #0x1
- ands r0, r2, #0x100
- bne _020B9D00
- cmp r8, #0x40
- ldreq r0, [r9, #0x0]
- add r1, sp, #0x0
- ldreqb r0, [r0, #0x2]
- mov r2, #0x1
- streq r0, [sp, #0x0]
- ldrne r0, [r9, #0x0]
- ldrneb r0, [r0, #0x3]
- strne r0, [sp, #0x0]
- mov r0, #0x14
- bl FUN_020BB1C0
-_020B9D00:
- ldr r0, [r9, #0x28]
- cmp r0, #0x0
- ldrneb r7, [r9, #0x93]
- moveq r7, #0x0
- cmp r7, #0x1
- bne _020B9D4C
- ldr r1, [r9, #0x8]
- mov r0, r9
- bic r1, r1, #0x40
- str r1, [r9, #0x8]
- ldr r1, [r9, #0x28]
- blx r1
- ldr r0, [r9, #0x28]
- cmp r0, #0x0
- ldrneb r7, [r9, #0x93]
- ldr r0, [r9, #0x8]
- moveq r7, #0x0
- and r1, r0, #0x40
- b _020B9D50
-_020B9D4C:
- mov r1, #0x0
-_020B9D50:
- ldr r0, [r9, #0x8]
- ands r0, r0, #0x100
- bne _020B9ED4
- cmp r1, #0x0
- bne _020B9ED4
- bl FUN_020BB394
- ldr r2, _020B9F60 ; =0x00151110
- ldr r1, _020B9F64 ; =0x04000400
- mov r0, #0x0
- str r2, [r1, #0x0]
- str r0, [r1, #0x0]
- str r0, [r1, #0x0]
- add r10, sp, #0x8
-_020B9D84:
- mov r0, r10
- bl G3X_GetClipMtx
- cmp r0, #0x0
- bne _020B9D84
- ldr r0, _020B9F68 ; =UNK_021CED18
- ldr r1, [r0, #0xfc]
- ands r0, r1, #0x1
- beq _020B9DC4
- bl FUN_020B82A4
- add r1, sp, #0x48
- bl MTX_Copy43To44_
- add r0, sp, #0x8
- add r1, sp, #0x48
- mov r2, r0
- bl MTX_Concat44
- b _020B9DE8
-_020B9DC4:
- ands r0, r1, #0x2
- beq _020B9DE8
- ldr r0, _020B9F6C ; =UNK_021CED64
- add r1, sp, #0x88
- bl MTX_Copy43To44_
- add r0, sp, #0x8
- add r1, sp, #0x88
- mov r2, r0
- bl MTX_Concat44
-_020B9DE8:
- ldr r1, [sp, #0x38]
- add r0, sp, #0x8
- str r1, [r5, #0x0]
- ldr r1, [sp, #0x3c]
- str r1, [r5, #0x4]
- ldr r1, [sp, #0x40]
- str r1, [r5, #0x8]
- bl VEC_Mag
- str r0, [r4, #0x0]
- add r0, sp, #0x18
- bl VEC_Mag
- str r0, [r4, #0x4]
- add r0, sp, #0x28
- bl VEC_Mag
- ldr r1, _020B9F68 ; =UNK_021CED18
- str r0, [r4, #0x8]
- ldr r1, [r1, #0xfc]
- ands r0, r1, #0x1
- beq _020B9E78
- ldr r3, _020B9F70 ; =0x00171012
- ldr r1, _020B9F64 ; =0x04000400
- ldr r0, _020B9F74 ; =UNK_021066A4
- mov r2, #0x8
- str r3, [r1, #0x0]
- bl MIi_CpuSend32
- bl FUN_020B8264
- ldr r1, _020B9F64 ; =0x04000400
- mov r2, #0x30
- bl MIi_CpuSend32
- ldr r2, _020B9F78 ; =0x00001B19
- ldr r1, _020B9F64 ; =0x04000400
- ldr r0, _020B9F7C ; =UNK_021066AC
- str r2, [r1, #0x0]
- mov r2, #0x3c
- bl MIi_CpuSend32
- b _020B9ED4
-_020B9E78:
- ands r0, r1, #0x2
- beq _020B9EC4
- ldr r3, _020B9F70 ; =0x00171012
- ldr r1, _020B9F64 ; =0x04000400
- ldr r0, _020B9F74 ; =UNK_021066A4
- mov r2, #0x8
- str r3, [r1, #0x0]
- bl MIi_CpuSend32
- bl FUN_020B8344
- ldr r1, _020B9F64 ; =0x04000400
- mov r2, #0x30
- bl MIi_CpuSend32
- ldr r2, _020B9F78 ; =0x00001B19
- ldr r1, _020B9F64 ; =0x04000400
- ldr r0, _020B9F7C ; =UNK_021066AC
- str r2, [r1, #0x0]
- mov r2, #0x3c
- bl MIi_CpuSend32
- b _020B9ED4
-_020B9EC4:
- ldr r0, _020B9F80 ; =UNK_021066A0
- ldr r1, _020B9F64 ; =0x04000400
- mov r2, #0x48
- bl MIi_CpuSend32
-_020B9ED4:
- cmp r7, #0x3
- movne r0, #0x0
- bne _020B9F00
- ldr r1, [r9, #0x8]
- mov r0, r9
- bic r1, r1, #0x40
- str r1, [r9, #0x8]
- ldr r1, [r9, #0x28]
- blx r1
- ldr r0, [r9, #0x8]
- and r0, r0, #0x40
-_020B9F00:
- cmp r8, #0x20
- beq _020B9F10
- cmp r8, #0x60
- bne _020B9F44
-_020B9F10:
- cmp r0, #0x0
- add r6, r6, #0x1
- bne _020B9F44
- ldr r0, [r9, #0x8]
- ands r0, r0, #0x100
- bne _020B9F44
- ldr r0, [r9, #0x0]
- add r1, sp, #0x4
- ldrb r3, [r0, #0x2]
- mov r0, #0x13
- mov r2, #0x1
- str r3, [sp, #0x4]
- bl FUN_020BB1C0
-_020B9F44:
- ldr r0, [r9, #0x0]
- add r0, r0, r6
- str r0, [r9, #0x0]
- add sp, sp, #0xc8
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020B9F58: .word UNK_021066D0
-_020B9F5C: .word UNK_021066DC
-_020B9F60: .word 0x00151110
-_020B9F64: .word 0x04000400
-_020B9F68: .word UNK_021CED18
-_020B9F6C: .word UNK_021CED64
-_020B9F70: .word 0x00171012
-_020B9F74: .word UNK_021066A4
-_020B9F78: .word 0x00001B19
-_020B9F7C: .word UNK_021066AC
-_020B9F80: .word UNK_021066A0
-
- arm_func_start FUN_020B9F84
-FUN_020B9F84: ; 0x020B9F84
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x14
- mov r10, r0
- ldr r0, [r10, #0x0]
- mov r9, r1
- ldrb r4, [r0, #0x1]
- mov r7, #0x4
- strb r4, [r10, #0xae]
- ldr r0, [r10, #0x8]
- orr r0, r0, #0x10
- str r0, [r10, #0x8]
- ldr r1, [r10, #0x8]
- ands r0, r1, #0x400
- beq _020BA01C
- cmp r9, #0x40
- beq _020B9FCC
- cmp r9, #0x60
- bne _020B9FD0
-_020B9FCC:
- add r7, r7, #0x1
-_020B9FD0:
- cmp r9, #0x20
- beq _020B9FE0
- cmp r9, #0x60
- bne _020BA008
-_020B9FE0:
- add r7, r7, #0x1
- ands r0, r1, #0x100
- bne _020BA008
- ldr r0, [r10, #0x0]
- add r1, sp, #0x8
- ldrb r3, [r0, #0x4]
- mov r0, #0x14
- mov r2, #0x1
- str r3, [sp, #0x8]
- bl FUN_020BB1C0
-_020BA008:
- ldr r0, [r10, #0x0]
- add sp, sp, #0x14
- add r0, r0, r7
- str r0, [r10, #0x0]
- ldmia sp!, {r4-r11,pc}
-_020BA01C:
- cmp r9, #0x40
- beq _020BA02C
- cmp r9, #0x60
- bne _020BA068
-_020BA02C:
- cmp r9, #0x40
- ldreq r0, [r10, #0x0]
- add r7, r7, #0x1
- ldreqb r0, [r0, #0x4]
- streq r0, [sp, #0xc]
- ldrne r0, [r10, #0x0]
- ldrneb r0, [r0, #0x5]
- strne r0, [sp, #0xc]
- ldr r0, [r10, #0x8]
- ands r0, r0, #0x100
- bne _020BA068
- add r1, sp, #0xc
- mov r0, #0x14
- mov r2, #0x1
- bl FUN_020BB1C0
-_020BA068:
- add r0, r10, #0x12c
- str r0, [r10, #0xb4]
- ldr r0, [r10, #0x24]
- cmp r0, #0x0
- ldrneb r8, [r10, #0x92]
- moveq r8, #0x0
- cmp r8, #0x1
- bne _020BA0BC
- ldr r1, [r10, #0x8]
- mov r0, r10
- bic r1, r1, #0x40
- str r1, [r10, #0x8]
- ldr r1, [r10, #0x24]
- blx r1
- ldr r0, [r10, #0x24]
- cmp r0, #0x0
- ldrneb r8, [r10, #0x92]
- ldr r0, [r10, #0x8]
- moveq r8, #0x0
- and r0, r0, #0x40
- b _020BA0C0
-_020BA0BC:
- mov r0, #0x0
-_020BA0C0:
- cmp r0, #0x0
- bne _020BA2CC
- ldr r0, [r10, #0x4]
- ldr r1, [r0, #0x34]
- cmp r1, #0x0
- beq _020BA0F4
- mov r0, #0x58
- mla r6, r4, r0, r1
- ldr r0, [r10, #0x8]
- ands r0, r0, #0x80
- moveq r0, #0x1
- movne r0, #0x0
- b _020BA0FC
-_020BA0F4:
- add r6, r10, #0x12c
- mov r0, #0x0
-_020BA0FC:
- cmp r0, #0x0
- bne _020BA2C8
- mov r0, #0x0
- str r0, [r6, #0x0]
- ldr r0, [r10, #0x4]
- ldr r1, [r0, #0x10]
- cmp r1, #0x0
- beq _020BA134
- ldr r3, [r0, #0x14]
- mov r0, r6
- mov r2, r4
- blx r3
- cmp r0, #0x0
- bne _020BA2C8
-_020BA134:
- ldr r2, [r10, #0xd4]
- ldrh r0, [r2, #0x6]
- ldrh r1, [r2, r0]
- add r0, r2, r0
- mla r0, r1, r4, r0
- ldr r1, [r0, #0x4]
- ldrh r0, [r2, r1]
- add r4, r2, r1
- add r5, r4, #0x4
- ands r0, r0, #0x1
- ldrne r0, [r6, #0x0]
- orrne r0, r0, #0x4
- strne r0, [r6, #0x0]
- bne _020BA188
- ldr r0, [r5, #0x0]
- str r0, [r6, #0x4c]
- ldr r0, [r5, #0x4]
- str r0, [r6, #0x50]
- ldr r0, [r5, #0x8]
- add r5, r5, #0xc
- str r0, [r6, #0x54]
-_020BA188:
- ldrh r1, [r4, #0x0]
- ands r0, r1, #0x2
- ldrne r0, [r6, #0x0]
- orrne r0, r0, #0x2
- strne r0, [r6, #0x0]
- bne _020BA2B0
- ands r0, r1, #0x8
- beq _020BA264
- and r1, r1, #0xf0
- mov r11, r1, asr #0x4
- ldrsh r1, [r5, #0x0]
- add r0, r6, #0x28
- str r1, [sp, #0x0]
- ldrsh r1, [r5, #0x2]
- str r1, [sp, #0x4]
- bl MI_Zero36B
- ldrh r0, [r4, #0x0]
- add r1, r6, r11, lsl #0x2
- add r5, r5, #0x4
- ands r0, r0, #0x100
- movne r0, #0x1000
- rsbne r2, r0, #0x0
- moveq r2, #0x1000
- str r2, [r1, #0x28]
- ldr r0, _020BA3B4 ; =UNK_020FF9F0
- ldr r1, _020BA3B8 ; =UNK_020FF9F1
- ldrb r0, [r0, r11, lsl #0x2]
- add r2, r6, r0, lsl #0x2
- ldr r0, [sp, #0x0]
- str r0, [r2, #0x28]
- ldrb r0, [r1, r11, lsl #0x2]
- add r1, r6, r0, lsl #0x2
- ldr r0, [sp, #0x4]
- str r0, [r1, #0x28]
- ldrh r0, [r4, #0x0]
- ands r0, r0, #0x200
- ldrne r0, [sp, #0x4]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x4]
- ldr r0, _020BA3BC ; =UNK_020FF9F2
- ldrb r0, [r0, r11, lsl #0x2]
- add r1, r6, r0, lsl #0x2
- ldr r0, [sp, #0x4]
- str r0, [r1, #0x28]
- ldrh r0, [r4, #0x0]
- ands r0, r0, #0x400
- ldrne r0, [sp, #0x0]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x0]
- ldr r0, _020BA3C0 ; =UNK_020FF9F3
- ldrb r0, [r0, r11, lsl #0x2]
- add r1, r6, r0, lsl #0x2
- ldr r0, [sp, #0x0]
- str r0, [r1, #0x28]
- b _020BA2B0
-_020BA264:
- ldrsh r0, [r4, #0x2]
- str r0, [r6, #0x28]
- ldrsh r0, [r5, #0x0]
- str r0, [r6, #0x2c]
- ldrsh r0, [r5, #0x2]
- str r0, [r6, #0x30]
- ldrsh r0, [r5, #0x4]
- str r0, [r6, #0x34]
- ldrsh r0, [r5, #0x6]
- str r0, [r6, #0x38]
- ldrsh r0, [r5, #0x8]
- str r0, [r6, #0x3c]
- ldrsh r0, [r5, #0xa]
- str r0, [r6, #0x40]
- ldrsh r0, [r5, #0xc]
- str r0, [r6, #0x44]
- ldrsh r0, [r5, #0xe]
- add r5, r5, #0x10
- str r0, [r6, #0x48]
-_020BA2B0:
- ldrh r3, [r4, #0x0]
- ldr r2, [r10, #0x0]
- ldr r4, [r10, #0xe8]
- mov r0, r6
- mov r1, r5
- blx r4
-_020BA2C8:
- str r6, [r10, #0xb4]
-_020BA2CC:
- cmp r8, #0x2
- bne _020BA308
- ldr r1, [r10, #0x8]
- mov r0, r10
- bic r1, r1, #0x40
- str r1, [r10, #0x8]
- ldr r1, [r10, #0x24]
- blx r1
- ldr r0, [r10, #0x24]
- cmp r0, #0x0
- ldrneb r8, [r10, #0x92]
- ldr r0, [r10, #0x8]
- moveq r8, #0x0
- and r0, r0, #0x40
- b _020BA30C
-_020BA308:
- mov r0, #0x0
-_020BA30C:
- cmp r0, #0x0
- bne _020BA32C
- ldr r0, [r10, #0x8]
- ands r0, r0, #0x100
- bne _020BA32C
- ldr r0, [r10, #0xb4]
- ldr r1, [r10, #0xec]
- blx r1
-_020BA32C:
- mov r0, #0x0
- str r0, [r10, #0xb4]
- cmp r8, #0x3
- bne _020BA35C
- ldr r1, [r10, #0x8]
- mov r0, r10
- bic r1, r1, #0x40
- str r1, [r10, #0x8]
- ldr r1, [r10, #0x24]
- blx r1
- ldr r0, [r10, #0x8]
- and r0, r0, #0x40
-_020BA35C:
- cmp r9, #0x20
- beq _020BA36C
- cmp r9, #0x60
- bne _020BA3A0
-_020BA36C:
- cmp r0, #0x0
- add r7, r7, #0x1
- bne _020BA3A0
- ldr r0, [r10, #0x8]
- ands r0, r0, #0x100
- bne _020BA3A0
- ldr r0, [r10, #0x0]
- add r1, sp, #0x10
- ldrb r3, [r0, #0x4]
- mov r0, #0x13
- mov r2, #0x1
- str r3, [sp, #0x10]
- bl FUN_020BB1C0
-_020BA3A0:
- ldr r0, [r10, #0x0]
- add r0, r0, r7
- str r0, [r10, #0x0]
- add sp, sp, #0x14
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020BA3B4: .word UNK_020FF9F0
-_020BA3B8: .word UNK_020FF9F1
-_020BA3BC: .word UNK_020FF9F2
-_020BA3C0: .word UNK_020FF9F3
-
- arm_func_start FUN_020BA3C4
-FUN_020BA3C4: ; 0x020BA3C4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r0
- ldr r3, [r4, #0x8]
- ands r2, r3, #0x200
- bne _020BA420
- ands r2, r3, #0x1
- beq _020BA420
- ands r2, r3, #0x2
- bne _020BA420
- ldr r5, [r4, #0xdc]
- ldr r3, [r4, #0x0]
- ldrh r2, [r5, #0x6]
- ldrb r3, [r3, #0x1]
- ldr ip, _020BA434 ; =UNK_02106650
- ldrh lr, [r5, r2]
- add r2, r5, r2
- mla r2, lr, r3, r2
- ldr r2, [r2, #0x4]
- ldrh lr, [r5, r2]
- add r2, r5, r2
- ldr r12, [r12, lr, lsl #0x2]
- blx r12
-_020BA420:
- ldr r0, [r4, #0x0]
- add r0, r0, #0x2
- str r0, [r4, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BA434: .word UNK_02106650
-
- arm_func_start FUN_020BA438
-FUN_020BA438: ; 0x020BA438
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldr r0, [r6, #0x20]
- mov r5, r2
- cmp r0, #0x0
- ldrneb r4, [r6, #0x91]
- moveq r4, #0x0
- cmp r4, #0x1
- bne _020BA490
- ldr r1, [r6, #0x8]
- mov r0, r6
- bic r1, r1, #0x40
- str r1, [r6, #0x8]
- ldr r1, [r6, #0x20]
- blx r1
- ldr r0, [r6, #0x20]
- cmp r0, #0x0
- ldrneb r4, [r6, #0x91]
- ldr r0, [r6, #0x8]
- moveq r4, #0x0
- and r0, r0, #0x40
- b _020BA494
-_020BA490:
- mov r0, #0x0
-_020BA494:
- cmp r0, #0x0
- bne _020BA4B8
- ldr r0, [r6, #0x8]
- ands r0, r0, #0x100
- bne _020BA4B8
- ldr r0, [r5, #0x8]
- ldr r1, [r5, #0xc]
- add r0, r5, r0
- bl FUN_020BB2B0
-_020BA4B8:
- cmp r4, #0x2
- bne _020BA4E8
- ldr r1, [r6, #0x8]
- mov r0, r6
- bic r1, r1, #0x40
- str r1, [r6, #0x8]
- ldr r1, [r6, #0x20]
- blx r1
- ldr r0, [r6, #0x20]
- cmp r0, #0x0
- ldrneb r4, [r6, #0x91]
- moveq r4, #0x0
-_020BA4E8:
- cmp r4, #0x3
- ldmneia sp!, {r4-r6,pc}
- ldr r1, [r6, #0x8]
- mov r0, r6
- bic r1, r1, #0x40
- str r1, [r6, #0x8]
- ldr r1, [r6, #0x20]
- blx r1
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BA50C
-FUN_020BA50C: ; 0x020BA50C
- stmdb sp!, {r4-r6,lr}
- mov r4, r0
- ldr r5, [r4, #0x8]
- ands r0, r5, #0x200
- bne _020BA578
- ldr r2, [r4, #0x0]
- ands r0, r5, #0x1
- ldrb r3, [r2, #0x1]
- bne _020BA544
- ands r0, r5, #0x8
- beq _020BA544
- ldrb r0, [r4, #0xad]
- cmp r3, r0
- beq _020BA578
-_020BA544:
- ldr r6, [r4, #0xd8]
- ldr ip, _020BA588 ; =UNK_02106640
- ldrh r2, [r6, #0xa]
- add r5, r6, #0x4
- mov r0, r4
- ldrh lr, [r5, r2]
- add r2, r5, r2
- mla r2, lr, r3, r2
- ldr r2, [r2, #0x4]
- ldrh lr, [r6, r2]
- add r2, r6, r2
- ldr r12, [r12, lr, lsl #0x2]
- blx r12
-_020BA578:
- ldr r0, [r4, #0x0]
- add r0, r0, #0x2
- str r0, [r4, #0x0]
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020BA588: .word UNK_02106640
-
- arm_func_start FUN_020BA58C
-FUN_020BA58C: ; 0x020BA58C
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x20
- mov r8, r0
- mov r6, r3
- strb r6, [r8, #0xad]
- ldr r3, [r8, #0x8]
- add r0, r8, #0xf4
- orr r3, r3, #0x8
- str r3, [r8, #0x8]
- str r0, [r8, #0xb0]
- ldr r0, [r8, #0x1c]
- mov r4, r1
- cmp r0, #0x0
- ldrneb r5, [r8, #0x90]
- mov r7, r2
- moveq r5, #0x0
- cmp r5, #0x1
- bne _020BA608
- ldr r1, [r8, #0x8]
- mov r0, r8
- bic r1, r1, #0x40
- str r1, [r8, #0x8]
- ldr r1, [r8, #0x1c]
- blx r1
- ldr r0, [r8, #0x1c]
- cmp r0, #0x0
- ldrneb r5, [r8, #0x90]
- ldr r0, [r8, #0x8]
- moveq r5, #0x0
- and r0, r0, #0x40
- b _020BA60C
-_020BA608:
- mov r0, #0x0
-_020BA60C:
- cmp r0, #0x0
- bne _020BA8C0
- ldr r0, [r8, #0x4]
- ldr r0, [r0, #0x38]
- cmp r0, #0x0
- beq _020BA638
- ldr r1, [r8, #0x8]
- ands r1, r1, #0x80
- moveq r1, #0x38
- mlaeq r4, r6, r1, r0
- beq _020BA8BC
-_020BA638:
- cmp r4, #0x20
- beq _020BA648
- cmp r4, #0x40
- bne _020BA684
-_020BA648:
- mov r1, r6, lsr #0x5
- add r1, r8, r1, lsl #0x2
- and r2, r6, #0x1f
- mov r3, #0x1
- mov r2, r3, lsl r2
- ldr r1, [r1, #0xbc]
- ands r1, r2, r1
- beq _020BA684
- cmp r0, #0x0
- movne r1, #0x38
- mlane r4, r6, r1, r0
- ldreq r1, _020BA9D8 ; =UNK_021CEF80
- moveq r0, #0x38
- mlaeq r4, r6, r0, r1
- b _020BA8BC
-_020BA684:
- cmp r0, #0x0
- beq _020BA6BC
- add r4, r8, #0xbc
- mov r3, r6, lsr #0x5
- ldr r2, [r4, r3, lsl #0x2]
- and r0, r6, #0x1f
- mov r1, #0x1
- orr r0, r2, r1, lsl r0
- str r0, [r4, r3, lsl #0x2]
- ldr r1, [r8, #0x4]
- mov r0, #0x38
- ldr r1, [r1, #0x38]
- mla r4, r6, r0, r1
- b _020BA6F0
-_020BA6BC:
- cmp r4, #0x40
- addne r4, r8, #0xf4
- bne _020BA6F0
- add lr, r8, #0xbc
- mov r12, r6, lsr #0x5
- ldr r1, _020BA9D8 ; =UNK_021CEF80
- ldr r4, [lr, r12, lsl #0x2]
- mov r0, #0x38
- and r2, r6, #0x1f
- mov r3, #0x1
- orr r2, r4, r3, lsl r2
- mla r4, r6, r0, r1
- str r2, [lr, r12, lsl #0x2]
-_020BA6F0:
- mov r0, #0x0
- str r0, [r4, #0x0]
- ldr r3, [r8, #0xd8]
- ldrh r0, [r3, #0xa]
- add r2, r3, #0x4
- ldrh r1, [r2, r0]
- add r0, r2, r0
- mla r0, r1, r6, r0
- ldr r0, [r0, #0x4]
- ldr r1, _020BA9DC ; =UNK_021CED18
- add r0, r3, r0
- ldrh r0, [r0, #0x1e]
- ands r0, r0, #0x20
- ldrne r0, [r4, #0x0]
- orrne r0, r0, #0x20
- strne r0, [r4, #0x0]
- ldrh r2, [r7, #0x1e]
- ldr r0, _020BA9E0 ; =UNK_020FF9D0
- ldr r12, [r1, #0x94]
- mov r2, r2, asr #0x6
- and r2, r2, #0x7
- ldr lr, [r0, r2, lsl #0x2]
- ldr r2, [r7, #0x4]
- mvn r3, lr
- and r3, r12, r3
- and r2, r2, lr
- orr r2, r3, r2
- str r2, [r4, #0x4]
- ldrh r12, [r7, #0x1e]
- ldr r3, [r1, #0x98]
- ldr r2, [r7, #0x8]
- mov r12, r12, asr #0x9
- and r12, r12, #0x7
- ldr r12, [r0, r12, lsl #0x2]
- mvn r0, r12
- and r3, r3, r0
- and r0, r2, r12
- orr r0, r3, r0
- str r0, [r4, #0x8]
- ldr r3, [r7, #0x10]
- ldr r0, [r7, #0xc]
- ldr r2, [r1, #0x9c]
- mvn r1, r3
- and r1, r2, r1
- and r0, r0, r3
- orr r0, r1, r0
- str r0, [r4, #0xc]
- ldr r0, [r7, #0x14]
- str r0, [r4, #0x10]
- ldrh r0, [r7, #0x1c]
- str r0, [r4, #0x14]
- ldrh r1, [r7, #0x1e]
- ands r0, r1, #0x1
- beq _020BA850
- ands r1, r1, #0x2
- ldrne r1, [r4, #0x0]
- add r0, r7, #0x2c
- orrne r1, r1, #0x1
- strne r1, [r4, #0x0]
- bne _020BA7F4
- ldr r1, [r0, #0x0]
- str r1, [r4, #0x18]
- ldr r1, [r0, #0x4]
- add r0, r0, #0x8
- str r1, [r4, #0x1c]
-_020BA7F4:
- ldrh r1, [r7, #0x1e]
- ands r1, r1, #0x4
- ldrne r1, [r4, #0x0]
- orrne r1, r1, #0x2
- strne r1, [r4, #0x0]
- bne _020BA820
- ldrsh r1, [r0, #0x0]
- strh r1, [r4, #0x20]
- ldrsh r1, [r0, #0x2]
- add r0, r0, #0x4
- strh r1, [r4, #0x22]
-_020BA820:
- ldrh r1, [r7, #0x1e]
- ands r1, r1, #0x8
- ldreq r1, [r0, #0x0]
- streq r1, [r4, #0x24]
- ldreq r0, [r0, #0x4]
- streq r0, [r4, #0x28]
- ldrne r0, [r4, #0x0]
- orrne r0, r0, #0x4
- strne r0, [r4, #0x0]
- ldr r0, [r4, #0x0]
- orr r0, r0, #0x8
- str r0, [r4, #0x0]
-_020BA850:
- ldr r0, [r8, #0x4]
- ldr r1, [r0, #0x8]
- cmp r1, #0x0
- beq _020BA890
- mov r2, r6, lsr #0x5
- add r2, r0, r2, lsl #0x2
- and r3, r6, #0x1f
- mov r12, #0x1
- mov r3, r12, lsl r3
- ldr r2, [r2, #0x3c]
- ands r2, r3, r2
- beq _020BA890
- ldr r3, [r0, #0xc]
- mov r0, r4
- mov r2, r6
- blx r3
-_020BA890:
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x18
- beq _020BA8BC
- ldrh r0, [r7, #0x20]
- strh r0, [r4, #0x2c]
- ldrh r0, [r7, #0x22]
- strh r0, [r4, #0x2e]
- ldr r0, [r7, #0x24]
- str r0, [r4, #0x30]
- ldr r0, [r7, #0x28]
- str r0, [r4, #0x34]
-_020BA8BC:
- str r4, [r8, #0xb0]
-_020BA8C0:
- cmp r5, #0x2
- bne _020BA8FC
- ldr r1, [r8, #0x8]
- mov r0, r8
- bic r1, r1, #0x40
- str r1, [r8, #0x8]
- ldr r1, [r8, #0x1c]
- blx r1
- ldr r0, [r8, #0x1c]
- cmp r0, #0x0
- ldrneb r5, [r8, #0x90]
- ldr r0, [r8, #0x8]
- moveq r5, #0x0
- and r0, r0, #0x40
- b _020BA900
-_020BA8FC:
- mov r0, #0x0
-_020BA900:
- cmp r0, #0x0
- bne _020BA9AC
- ldr r4, [r8, #0xb0]
- ldr r1, [r4, #0xc]
- ands r0, r1, #0x1f0000
- beq _020BA9A0
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x20
- bicne r0, r1, #0x1f0000
- strne r0, [r4, #0xc]
- ldr r0, [r8, #0x8]
- bic r0, r0, #0x2
- str r0, [r8, #0x8]
- ldr r0, [r8, #0x8]
- ands r0, r0, #0x100
- bne _020BA9AC
- ldr r0, _020BA9E4 ; =0x00293130
- ldr r3, _020BA9E8 ; =0x00002B2A
- str r0, [sp, #0x0]
- ldr r2, [r4, #0x4]
- add r1, sp, #0x4
- str r2, [sp, #0x4]
- ldr r6, [r4, #0x8]
- mov r2, #0x6
- str r6, [sp, #0x8]
- ldr r6, [r4, #0xc]
- str r6, [sp, #0xc]
- str r3, [sp, #0x10]
- ldr r3, [r4, #0x10]
- str r3, [sp, #0x14]
- ldr r3, [r4, #0x14]
- str r3, [sp, #0x18]
- bl FUN_020BB1C0
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x18
- beq _020BA9AC
- ldr r1, [r8, #0xf0]
- mov r0, r4
- blx r1
- b _020BA9AC
-_020BA9A0:
- ldr r0, [r8, #0x8]
- orr r0, r0, #0x2
- str r0, [r8, #0x8]
-_020BA9AC:
- cmp r5, #0x3
- addne sp, sp, #0x20
- ldmneia sp!, {r4-r8,pc}
- ldr r1, [r8, #0x8]
- mov r0, r8
- bic r1, r1, #0x40
- str r1, [r8, #0x8]
- ldr r1, [r8, #0x1c]
- blx r1
- add sp, sp, #0x20
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020BA9D8: .word UNK_021CEF80
-_020BA9DC: .word UNK_021CED18
-_020BA9E0: .word UNK_020FF9D0
-_020BA9E4: .word 0x00293130
-_020BA9E8: .word 0x00002B2A
-
- arm_func_start FUN_020BA9EC
-FUN_020BA9EC: ; 0x020BA9EC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r1, [r5, #0x8]
- ands r0, r1, #0x200
- bne _020BAAAC
- ands r0, r1, #0x1
- beq _020BAAAC
- ldr r0, [r5, #0x18]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x8f]
- moveq r4, #0x0
- cmp r4, #0x1
- bne _020BAA58
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x18]
- blx r1
- ldr r0, [r5, #0x18]
- cmp r0, #0x0
- ldrneb r4, [r5, #0x8f]
- ldr r0, [r5, #0x8]
- moveq r4, #0x0
- and r0, r0, #0x40
- b _020BAA5C
-_020BAA58:
- mov r0, #0x0
-_020BAA5C:
- cmp r0, #0x0
- bne _020BAA8C
- ldr r0, [r5, #0x0]
- ldrb r0, [r0, #0x1]
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x8]
- ands r0, r0, #0x100
- bne _020BAA8C
- add r1, sp, #0x0
- mov r0, #0x14
- mov r2, #0x1
- bl FUN_020BB1C0
-_020BAA8C:
- cmp r4, #0x3
- bne _020BAAAC
- ldr r1, [r5, #0x8]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r5, #0x8]
- ldr r1, [r5, #0x18]
- blx r1
-_020BAAAC:
- ldr r0, [r5, #0x0]
- add r0, r0, #0x2
- str r0, [r5, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020BAAC0
-FUN_020BAAC0: ; 0x020BAAC0
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldr r0, [r6, #0x8]
- ands r0, r0, #0x200
- bne _020BAC38
- ldr r1, [r6, #0x0]
- add r0, r6, #0x184
- ldrb r1, [r1, #0x1]
- strb r1, [r6, #0xac]
- ldr r1, [r6, #0x8]
- ldrb r4, [r6, #0xac]
- orr r1, r1, #0x4
- str r1, [r6, #0x8]
- str r0, [r6, #0xb8]
- ldr r0, [r6, #0x14]
- cmp r0, #0x0
- ldrneb r5, [r6, #0x8e]
- moveq r5, #0x0
- cmp r5, #0x1
- bne _020BAB44
- ldr r1, [r6, #0x8]
- mov r0, r6
- bic r1, r1, #0x40
- str r1, [r6, #0x8]
- ldr r1, [r6, #0x14]
- blx r1
- ldr r0, [r6, #0x14]
- cmp r0, #0x0
- ldrneb r5, [r6, #0x8e]
- ldr r0, [r6, #0x8]
- moveq r5, #0x0
- and r0, r0, #0x40
- b _020BAB48
-_020BAB44:
- mov r0, #0x0
-_020BAB48:
- cmp r0, #0x0
- bne _020BABAC
- ldr r12, [r6, #0x4]
- ldr r1, [r12, #0x18]
- cmp r1, #0x0
- beq _020BAB98
- mov r0, r4, lsr #0x5
- add r0, r12, r0, lsl #0x2
- and r2, r4, #0x1f
- mov r3, #0x1
- mov r2, r3, lsl r2
- ldr r0, [r0, #0x4c]
- ands r0, r2, r0
- beq _020BAB98
- ldr r0, [r6, #0xb8]
- ldr r3, [r12, #0x1c]
- mov r2, r4
- blx r3
- cmp r0, #0x0
- bne _020BABAC
-_020BAB98:
- ldr r1, [r6, #0x0]
- ldr r0, [r6, #0xb8]
- ldrb r1, [r1, #0x2]
- and r1, r1, #0x1
- str r1, [r0, #0x0]
-_020BABAC:
- cmp r5, #0x2
- bne _020BABE8
- ldr r1, [r6, #0x8]
- mov r0, r6
- bic r1, r1, #0x40
- str r1, [r6, #0x8]
- ldr r1, [r6, #0x14]
- blx r1
- ldr r0, [r6, #0x14]
- cmp r0, #0x0
- ldrneb r5, [r6, #0x8e]
- ldr r0, [r6, #0x8]
- moveq r5, #0x0
- and r0, r0, #0x40
- b _020BABEC
-_020BABE8:
- mov r0, #0x0
-_020BABEC:
- cmp r0, #0x0
- bne _020BAC18
- ldr r0, [r6, #0xb8]
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- ldrne r0, [r6, #0x8]
- orrne r0, r0, #0x1
- strne r0, [r6, #0x8]
- ldreq r0, [r6, #0x8]
- biceq r0, r0, #0x1
- streq r0, [r6, #0x8]
-_020BAC18:
- cmp r5, #0x3
- bne _020BAC38
- ldr r1, [r6, #0x8]
- mov r0, r6
- bic r1, r1, #0x40
- str r1, [r6, #0x8]
- ldr r1, [r6, #0x14]
- blx r1
-_020BAC38:
- ldr r0, [r6, #0x0]
- add r0, r0, #0x3
- str r0, [r6, #0x0]
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BAC48
-FUN_020BAC48: ; 0x020BAC48
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r1, [r4, #0x10]
- cmp r1, #0x0
- beq _020BAC60
- blx r1
-_020BAC60:
- ldr r0, [r4, #0x8]
- orr r0, r0, #0x20
- str r0, [r4, #0x8]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BAC70
-FUN_020BAC70: ; 0x020BAC70
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r1, [r4, #0xc]
- cmp r1, #0x0
- beq _020BAC88
- blx r1
-_020BAC88:
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BAC98
-FUN_020BAC98: ; 0x020BAC98
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x188
- mov r4, r0
- ldr r0, [r4, #0x0]
- and r0, r0, #0x10
- cmp r0, #0x10
- bne _020BAD2C
- add r1, r4, #0x3c
- mov r0, #0x0
- mov r2, #0x8
- bl MIi_CpuClear32
- add r1, r4, #0x44
- mov r0, #0x0
- mov r2, #0x8
- bl MIi_CpuClear32
- add r1, r4, #0x4c
- mov r0, #0x0
- mov r2, #0x8
- bl MIi_CpuClear32
- ldr r1, [r4, #0x8]
- cmp r1, #0x0
- beq _020BACF8
- add r0, r4, #0x3c
- bl FUN_020BAD74
-_020BACF8:
- ldr r1, [r4, #0x10]
- cmp r1, #0x0
- beq _020BAD0C
- add r0, r4, #0x44
- bl FUN_020BAD74
-_020BAD0C:
- ldr r1, [r4, #0x18]
- cmp r1, #0x0
- beq _020BAD20
- add r0, r4, #0x4c
- bl FUN_020BAD74
-_020BAD20:
- ldr r0, [r4, #0x0]
- bic r0, r0, #0x10
- str r0, [r4, #0x0]
-_020BAD2C:
- ldr r2, _020BAD70 ; =UNK_021CEF7C
- ldr r0, [r2, #0x0]
- cmp r0, #0x0
- beq _020BAD4C
- mov r1, r4
- bl FUN_020BADE4
- add sp, sp, #0x188
- ldmia sp!, {r4,pc}
-_020BAD4C:
- add r0, sp, #0x0
- mov r1, r4
- str r0, [r2, #0x0]
- bl FUN_020BADE4
- ldr r0, _020BAD70 ; =UNK_021CEF7C
- mov r1, #0x0
- str r1, [r0, #0x0]
- add sp, sp, #0x188
- ldmia sp!, {r4,pc}
- .balign 4
-_020BAD70: .word UNK_021CEF7C
-
- arm_func_start FUN_020BAD74
-FUN_020BAD74:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- cmp r1, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r5,pc}
- mov r3, #0x1
- mov r4, #0x0
-_020BAD90:
- ldrb r2, [r1, #0x19]
- mov r5, r4
- cmp r2, #0x0
- ble _020BADD0
-_020BADA0:
- add r2, r1, r5, lsl #0x1
- ldrh r2, [r2, #0x1a]
- ands r2, r2, #0x100
- movne lr, r5, asr #0x5
- andne r2, r5, #0x1f
- ldrne r12, [r0, lr, lsl #0x2]
- add r5, r5, #0x1
- orrne r2, r12, r3, lsl r2
- strne r2, [r0, lr, lsl #0x2]
- ldrb r2, [r1, #0x19]
- cmp r5, r2
- blt _020BADA0
-_020BADD0:
- ldr r1, [r1, #0x10]
- cmp r1, #0x0
- bne _020BAD90
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020BADE4
-FUN_020BADE4: ; 0x020BADE4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- mov r1, r5
- mov r0, #0x0
- mov r2, #0x188
- bl MIi_CpuClearFast
- mov r0, #0x1
- str r0, [r5, #0xc4]
- str r0, [r5, #0x8]
- ldr r0, [r4, #0x30]
- ldr r2, _020BAF60 ; =UNK_02106614
- cmp r0, #0x0
- strne r0, [r5, #0x0]
- ldreq r1, [r4, #0x4]
- ldreq r0, [r1, #0x4]
- addeq r0, r1, r0
- streq r0, [r5, #0x0]
- str r4, [r5, #0x4]
- ldr r0, [r4, #0x4]
- ldr r1, _020BAF64 ; =UNK_02106608
- add r0, r0, #0x40
- str r0, [r5, #0xd4]
- ldr r12, [r4, #0x4]
- ldr r0, _020BAF68 ; =UNK_02106620
- ldr r3, [r12, #0x8]
- add r3, r12, r3
- str r3, [r5, #0xd8]
- ldr r12, [r4, #0x4]
- ldr r3, [r12, #0xc]
- add r3, r12, r3
- str r3, [r5, #0xdc]
- ldr r3, [r4, #0x4]
- ldrb r3, [r3, #0x15]
- ldr r2, [r2, r3, lsl #0x2]
- str r2, [r5, #0xe8]
- ldr r2, [r4, #0x4]
- ldrb r2, [r2, #0x15]
- ldr r1, [r1, r2, lsl #0x2]
- str r1, [r5, #0xec]
- ldr r1, [r4, #0x4]
- ldrb r1, [r1, #0x16]
- ldr r0, [r0, r1, lsl #0x2]
- str r0, [r5, #0xf0]
- ldr r0, [r4, #0x4]
- ldr r0, [r0, #0x1c]
- str r0, [r5, #0xe0]
- ldr r0, [r4, #0x4]
- ldr r0, [r0, #0x20]
- str r0, [r5, #0xe4]
- ldr r1, [r4, #0x20]
- cmp r1, #0x0
- beq _020BAEE0
- ldrb r0, [r4, #0x24]
- cmp r0, #0x20
- bhs _020BAEE0
- add r0, r5, r0, lsl #0x2
- str r1, [r0, #0xc]
- ldrb r0, [r4, #0x24]
- ldrb r1, [r4, #0x25]
- add r0, r5, r0
- strb r1, [r0, #0x8c]
-_020BAEE0:
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x1
- ldrne r0, [r5, #0x8]
- orrne r0, r0, #0x80
- strne r0, [r5, #0x8]
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x2
- ldrne r0, [r5, #0x8]
- orrne r0, r0, #0x100
- strne r0, [r5, #0x8]
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x4
- ldrne r0, [r5, #0x8]
- orrne r0, r0, #0x200
- strne r0, [r5, #0x8]
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x8
- ldrne r0, [r5, #0x8]
- orrne r0, r0, #0x400
- strne r0, [r5, #0x8]
- ldr r1, [r4, #0x28]
- cmp r1, #0x0
- beq _020BAF44
- mov r0, r5
- blx r1
-_020BAF44:
- mov r0, r5
- bl FUN_020BAF6C
- ldr r0, [r4, #0x0]
- bic r0, r0, #0x1
- str r0, [r4, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BAF60: .word UNK_02106614
-_020BAF64: .word UNK_02106608
-_020BAF68: .word UNK_02106620
-
- arm_func_start FUN_020BAF6C
-FUN_020BAF6C:
- stmdb sp!, {r4-r6,lr}
- mov r5, r0
- ldr r6, _020BAFB4 ; =UNK_02106730
- add r4, r5, #0x8
-_020BAF7C:
- ldr r1, [r4, #0x0]
- mov r0, r5
- bic r1, r1, #0x40
- str r1, [r4, #0x0]
- ldr r1, [r5, #0x0]
- ldrb r3, [r1, #0x0]
- and r1, r3, #0x1f
- ldr r2, [r6, r1, lsl #0x2]
- and r1, r3, #0xe0
- blx r2
- ldr r0, [r5, #0x8]
- ands r0, r0, #0x20
- beq _020BAF7C
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020BAFB4: .word UNK_02106730
-
- arm_func_start FUN_020BAFB8
-FUN_020BAFB8: ; 0x020BAFB8
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x6c
- mov r6, r0
- ldr r12, [r6, #0x1c]
- mov r4, r1
- mov r5, r2
- mov r7, r3
- cmp r12, #0x1000
- beq _020BAFF8
- add r1, sp, #0x54
- mov r0, #0x1b
- mov r2, #0x3
- str r12, [sp, #0x54]
- str r12, [sp, #0x58]
- str r12, [sp, #0x5c]
- bl FUN_020BB1C0
-_020BAFF8:
- cmp r7, #0x0
- beq _020BB150
- ldr r0, [r6, #0x8]
- add r3, r6, r0
- ldrh r0, [r3, #0xa]
- add r2, r3, #0x4
- ldrh r1, [r2, r0]
- add r0, r2, r0
- mla r0, r1, r4, r0
- ldr r0, [r0, #0x4]
- add r4, r3, r0
- ldr r0, [r4, #0xc]
- ands r0, r0, #0x1f0000
- addeq sp, sp, #0x6c
- ldmeqia sp!, {r4-r7,pc}
- ldr r0, _020BB1B4 ; =0x00293130
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x4]
- str r0, [sp, #0x4]
- ldr r0, [r4, #0x8]
- str r0, [sp, #0x8]
- ldr r1, [r4, #0xc]
- str r1, [sp, #0xc]
- ldrh r0, [r4, #0x1e]
- ands r0, r0, #0x20
- bicne r0, r1, #0x1f0000
- ldr r1, _020BB1B8 ; =0x00002B2A
- strne r0, [sp, #0xc]
- str r1, [sp, #0x10]
- ldr r2, [r4, #0x14]
- ldr r0, [sp, #0x0]
- str r2, [sp, #0x14]
- ldrh r3, [r4, #0x1c]
- add r1, sp, #0x4
- mov r2, #0x6
- str r3, [sp, #0x18]
- bl FUN_020BB1C0
- ldrh r0, [r4, #0x1e]
- ands r0, r0, #0x1
- beq _020BB150
- ldrb r12, [r6, #0x16]
- mov r3, #0x8
- ldr r1, _020BB1BC ; =UNK_02106620
- str r3, [sp, #0x1c]
- ldrh r2, [r4, #0x20]
- add r0, r4, #0x2c
- ldr r1, [r1, r12, lsl #0x2]
- strh r2, [sp, #0x48]
- ldrh r2, [r4, #0x22]
- strh r2, [sp, #0x4a]
- ldr r2, [r4, #0x24]
- str r2, [sp, #0x4c]
- ldr r2, [r4, #0x28]
- str r2, [sp, #0x50]
- ldrh r2, [r4, #0x1e]
- ands r2, r2, #0x2
- orrne r2, r3, #0x1
- strne r2, [sp, #0x1c]
- bne _020BB0F8
- ldr r2, [r0, #0x0]
- str r2, [sp, #0x34]
- ldr r2, [r0, #0x4]
- add r0, r0, #0x8
- str r2, [sp, #0x38]
-_020BB0F8:
- ldrh r2, [r4, #0x1e]
- ands r2, r2, #0x4
- ldrne r2, [sp, #0x1c]
- orrne r2, r2, #0x2
- strne r2, [sp, #0x1c]
- bne _020BB124
- ldrsh r2, [r0, #0x0]
- strh r2, [sp, #0x3c]
- ldrsh r2, [r0, #0x2]
- add r0, r0, #0x4
- strh r2, [sp, #0x3e]
-_020BB124:
- ldrh r2, [r4, #0x1e]
- ands r2, r2, #0x8
- ldreq r2, [r0, #0x0]
- streq r2, [sp, #0x40]
- ldreq r0, [r0, #0x4]
- streq r0, [sp, #0x44]
- ldrne r0, [sp, #0x1c]
- orrne r0, r0, #0x4
- strne r0, [sp, #0x1c]
- add r0, sp, #0x1c
- blx r1
-_020BB150:
- ldr r0, [r6, #0xc]
- add r2, r6, r0
- ldrh r0, [r2, #0x6]
- ldrh r1, [r2, r0]
- add r0, r2, r0
- mla r0, r1, r5, r0
- ldr r0, [r0, #0x4]
- add r2, r2, r0
- ldr r0, [r2, #0x8]
- ldr r1, [r2, #0xc]
- add r0, r2, r0
- bl FUN_020BB2B0
- ldr r3, [r6, #0x20]
- cmp r3, #0x1000
- addeq sp, sp, #0x6c
- ldmeqia sp!, {r4-r7,pc}
- add r1, sp, #0x60
- mov r0, #0x1b
- mov r2, #0x3
- str r3, [sp, #0x60]
- str r3, [sp, #0x64]
- str r3, [sp, #0x68]
- bl FUN_020BB1C0
- add sp, sp, #0x6c
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020BB1B4: .word 0x00293130
-_020BB1B8: .word 0x00002B2A
-_020BB1BC: .word UNK_02106620
-
- arm_func_start FUN_020BB1C0
-FUN_020BB1C0:
- stmdb sp!, {r4-r6,lr}
- ldr r3, _020BB2A4 ; =UNK_021D1C80
- mov r6, r0
- ldr r12, [r3, #0x0]
- mov r5, r1
- mov r4, r2
- cmp r12, #0x0
- beq _020BB278
- ldr r0, _020BB2A8 ; =UNK_021D1C84
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020BB24C
- ldr r2, [r12, #0x0]
- add r0, r2, #0x1
- add r1, r0, r4
- cmp r1, #0xc0
- bhi _020BB24C
- str r0, [r12, #0x0]
- ldr r0, [r3, #0x0]
- cmp r4, #0x0
- add r0, r0, r2, lsl #0x2
- str r6, [r0, #0x4]
- ldmeqia sp!, {r4-r6,pc}
- ldr r2, [r3, #0x0]
- mov r0, r5
- ldr r1, [r2], #0x4
- add r1, r2, r1, lsl #0x2
- mov r2, r4, lsl #0x2
- bl MIi_CpuCopyFast
- ldr r0, _020BB2A4 ; =UNK_021D1C80
- ldr r1, [r0, #0x0]
- ldr r0, [r1, #0x0]
- add r0, r0, r4
- str r0, [r1, #0x0]
- ldmia sp!, {r4-r6,pc}
-_020BB24C:
- ldr r0, [r12, #0x0]
- cmp r0, #0x0
- beq _020BB260
- bl FUN_020BB394
- b _020BB28C
-_020BB260:
- ldr r0, _020BB2A8 ; =UNK_021D1C84
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020BB28C
- bl FUN_020BB37C
- b _020BB28C
-_020BB278:
- ldr r0, _020BB2A8 ; =UNK_021D1C84
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020BB28C
- bl FUN_020BB37C
-_020BB28C:
- ldr r1, _020BB2AC ; =0x04000400
- mov r0, r5
- mov r2, r4, lsl #0x2
- str r6, [r1, #0x0]
- bl MIi_CpuSend32
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020BB2A4: .word UNK_021D1C80
-_020BB2A8: .word UNK_021D1C84
-_020BB2AC: .word 0x04000400
-
- arm_func_start FUN_020BB2B0
-FUN_020BB2B0: ; 0x020BB2B0
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r4, r1
- mov r5, r0
- cmp r4, #0x100
- blo _020BB2DC
- ldr r1, _020BB360 ; =GXi_DmaId
- mvn r0, #0x0
- ldr r1, [r1, #0x0]
- cmp r1, r0
- bne _020BB2F8
-_020BB2DC:
- mov r2, r4, lsr #0x2
- ldr r0, [r5, #0x0]
- add r1, r5, #0x4
- sub r2, r2, #0x1
- bl FUN_020BB1C0
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020BB2F8:
- bl FUN_020BB394
- ldr r0, _020BB364 ; =UNK_021D1C88
- ldr r1, _020BB368 ; =UNK_021D1C84
- ldr r0, [r0, #0x0]
- mov r2, #0x1
- str r2, [r1, #0x0]
- cmp r0, #0x0
- beq _020BB33C
- ldr r0, _020BB360 ; =GXi_DmaId
- str r1, [sp, #0x0]
- ldr r0, [r0, #0x0]
- ldr r3, _020BB36C ; =FUN_020BB370
- mov r1, r5
- mov r2, r4
- bl MI_SendGXCommandAsyncFast
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020BB33C:
- ldr r0, _020BB360 ; =GXi_DmaId
- str r1, [sp, #0x0]
- ldr r0, [r0, #0x0]
- ldr r3, _020BB36C ; =FUN_020BB370
- mov r1, r5
- mov r2, r4
- bl MI_SendGXCommandAsync
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BB360: .word GXi_DmaId
-_020BB364: .word UNK_021D1C88
-_020BB368: .word UNK_021D1C84
-_020BB36C: .word FUN_020BB370
-
- arm_func_start FUN_020BB370
-FUN_020BB370: ; 0x020BB370
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020BB37C
-FUN_020BB37C: ; 0x020BB37C
- ldr r0, _020BB390 ; =UNK_021D1C84
-_020BB380:
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- bne _020BB380
- bx lr
- .balign 4
-_020BB390: .word UNK_021D1C84
-
- arm_func_start FUN_020BB394
-FUN_020BB394: ; 0x020BB394
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, _020BB3FC ; =UNK_021D1C84
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020BB3B0
- bl FUN_020BB37C
-_020BB3B0:
- ldr r0, _020BB400 ; =UNK_021D1C80
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {pc}
- ldr r1, _020BB404 ; =0x04000400
- add r0, r0, #0x4
- mov r2, r2, lsl #0x2
- bl MIi_CpuSend32
- ldr r0, _020BB400 ; =UNK_021D1C80
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020BB3FC: .word UNK_021D1C84
-_020BB400: .word UNK_021D1C80
-_020BB404: .word 0x04000400
-
- arm_func_start FUN_020BB408
-FUN_020BB408: ; 0x020BB408
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x1c
- mov r5, r1
- mov r4, r2
- ldr r6, _020BB594 ; =UNK_021CED20
- ldr r1, _020BB598 ; =UNK_021CED64
- add r2, sp, #0x10
- bl MTX_MultVec43
- ldr r1, [sp, #0x14]
- ldr r0, [r6, #0x1c]
- ldr r2, [sp, #0x10]
- smull r8, r7, r1, r0
- ldr r0, [r6, #0xc]
- ldr r3, [sp, #0x18]
- smlal r8, r7, r2, r0
- ldr r1, [r6, #0x2c]
- ldr r0, [r6, #0x3c]
- smlal r8, r7, r3, r1
- mov r1, r8, lsr #0xc
- orr r1, r1, r7, lsl #0x14
- add r0, r1, r0
- bl FX_InvAsync
- ldr r2, [sp, #0x14]
- ldr r1, [r6, #0x10]
- ldr r0, [r6, #0x14]
- smull lr, r8, r2, r1
- smull r12, r9, r2, r0
- ldr r1, [sp, #0x10]
- ldr r3, [r6, #0x0]
- ldr r0, [sp, #0x18]
- smlal lr, r8, r1, r3
- ldr r7, [r6, #0x20]
- ldr r2, [r6, #0x30]
- smlal lr, r8, r0, r7
- mov r3, lr, lsr #0xc
- orr r3, r3, r8, lsl #0x14
- add r7, r3, r2
- ldr r3, [r6, #0x4]
- ldr r8, [r6, #0x24]
- smlal r12, r9, r1, r3
- smlal r12, r9, r0, r8
- mov r0, r12, lsr #0xc
- ldr r2, [r6, #0x34]
- orr r0, r0, r9, lsl #0x14
- add r6, r0, r2
- bl FX_GetDivResultFx64c
- mov r2, r7, asr #0x1f
- umull r9, lr, r0, r7
- mla lr, r0, r2, lr
- mov r3, #0x80000000
- mla lr, r1, r7, lr
- adds r9, r9, r3
- adc r2, lr, #0x0
- add r2, r2, #0x1000
- add r2, r2, r2, lsr #0x1f
- mov r7, r2, asr #0x1
- umull lr, r2, r0, r6
- mov r12, r6, asr #0x1f
- mla r2, r0, r12, r2
- mla r2, r1, r6, r2
- adds r3, lr, r3
- adc r0, r2, #0x0
- add r0, r0, #0x1000
- add r0, r0, r0, lsr #0x1f
- mov r8, #0x0
- mov r6, r0, asr #0x1
- cmp r7, #0x0
- blt _020BB530
- cmp r6, #0x0
- blt _020BB530
- cmp r7, #0x1000
- bgt _020BB530
- cmp r6, #0x1000
- ble _020BB534
-_020BB530:
- mvn r8, #0x0
-_020BB534:
- add r0, sp, #0x0
- add r1, sp, #0x4
- add r2, sp, #0x8
- add r3, sp, #0xc
- bl FUN_020B8200
- ldr r2, [sp, #0x0]
- ldr r0, [sp, #0x8]
- ldr r12, [sp, #0xc]
- sub r0, r0, r2
- mul r0, r7, r0
- add r1, r0, #0x800
- ldr r3, [sp, #0x4]
- add r1, r2, r1, asr #0xc
- sub r0, r12, r3
- mul r0, r6, r0
- str r1, [r5, #0x0]
- ldr r1, [sp, #0x4]
- add r0, r0, #0x800
- rsb r1, r1, #0xbf
- sub r1, r1, r0, asr #0xc
- mov r0, r8
- str r1, [r4, #0x0]
- add sp, sp, #0x1c
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020BB594: .word UNK_021CED20
-_020BB598: .word UNK_021CED64
-
- arm_func_start FUN_020BB59C
-FUN_020BB59C: ; 0x020BB59C
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r1, [r5, #0x0]
- ldr r0, _020BB7C8 ; =0x30415642
- cmp r1, r0
- bhi _020BB5F4
- cmp r1, r0
- bhs _020BB7B0
- ldr r0, _020BB7CC ; =0x30414D42
- cmp r1, r0
- bhi _020BB5E4
- cmp r1, r0
- bhs _020BB7B0
- ldr r0, _020BB7D0 ; =0x30414342
- cmp r1, r0
- beq _020BB7B0
- b _020BB7BC
-_020BB5E4:
- ldr r0, _020BB7D4 ; =0x30415442
- cmp r1, r0
- beq _020BB7B0
- b _020BB7BC
-_020BB5F4:
- ldr r0, _020BB7D8 ; =0x30505442
- cmp r1, r0
- bhi _020BB618
- cmp r1, r0
- bhs _020BB7B0
- ldr r0, _020BB7DC ; =0x30444D42
- cmp r1, r0
- beq _020BB624
- b _020BB7BC
-_020BB618:
- ldr r0, _020BB7E0 ; =0x30585442
- cmp r1, r0
- bne _020BB7BC
-_020BB624:
- mov r11, #0x1
- mov r0, r5
- mov r9, r11
- mov r8, r11
- bl FUN_020BC0FC
- movs r4, r0
- beq _020BB77C
- bl FUN_020B7E1C
- mov r7, r0
- mov r0, r4
- bl FUN_020B7E10
- mov r6, r0
- mov r0, r4
- bl FUN_020B7CE4
- mov r10, r0
- cmp r7, #0x0
- beq _020BB68C
- ldr r0, _020BB7E4 ; =UNK_021064B8
- mov r1, #0x0
- ldr r3, [r0, #0x0]
- mov r0, r7
- mov r2, r1
- blx r3
- movs r7, r0
- moveq r11, #0x0
- b _020BB690
-_020BB68C:
- mov r7, #0x0
-_020BB690:
- cmp r6, #0x0
- beq _020BB6BC
- ldr r1, _020BB7E4 ; =UNK_021064B8
- mov r0, r6
- ldr r3, [r1, #0x0]
- mov r1, #0x1
- mov r2, #0x0
- blx r3
- movs r6, r0
- moveq r9, #0x0
- b _020BB6C0
-_020BB6BC:
- mov r6, #0x0
-_020BB6C0:
- cmp r10, #0x0
- beq _020BB6F0
- ldr r1, _020BB7E8 ; =UNK_021064C0
- ldrh r2, [r4, #0x20]
- ldr r3, [r1, #0x0]
- mov r0, r10
- and r1, r2, #0x8000
- mov r2, #0x0
- blx r3
- movs r10, r0
- moveq r8, #0x0
- b _020BB6F4
-_020BB6F0:
- mov r10, #0x0
-_020BB6F4:
- cmp r11, #0x0
- beq _020BB70C
- cmp r9, #0x0
- beq _020BB70C
- cmp r8, #0x0
- bne _020BB748
-_020BB70C:
- ldr r1, _020BB7EC ; =UNK_021064C4
- mov r0, r10
- ldr r1, [r1, #0x0]
- blx r1
- ldr r1, _020BB7F0 ; =UNK_021064BC
- mov r0, r6
- ldr r1, [r1, #0x0]
- blx r1
- ldr r1, _020BB7F0 ; =UNK_021064BC
- mov r0, r7
- ldr r1, [r1, #0x0]
- blx r1
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r4-r11,pc}
-_020BB748:
- mov r0, r4
- mov r1, r7
- mov r2, r6
- bl FUN_020B7DFC
- mov r0, r4
- mov r1, r10
- bl FUN_020B7CDC
- mov r0, r4
- mov r1, #0x1
- bl FUN_020B7D28
- mov r0, r4
- mov r1, #0x1
- bl FUN_020B7C78
-_020BB77C:
- ldr r1, [r5, #0x0]
- ldr r0, _020BB7DC ; =0x30444D42
- cmp r1, r0
- bne _020BB7A4
- mov r0, r5
- bl FUN_020BC13C
- cmp r4, #0x0
- beq _020BB7A4
- mov r1, r4
- bl FUN_020B7790
-_020BB7A4:
- add sp, sp, #0x4
- mov r0, #0x1
- ldmia sp!, {r4-r11,pc}
-_020BB7B0:
- add sp, sp, #0x4
- mov r0, #0x1
- ldmia sp!, {r4-r11,pc}
-_020BB7BC:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020BB7C8: .word 0x30415642
-_020BB7CC: .word 0x30414D42
-_020BB7D0: .word 0x30414342
-_020BB7D4: .word 0x30415442
-_020BB7D8: .word 0x30505442
-_020BB7DC: .word 0x30444D42
-_020BB7E0: .word 0x30585442
-_020BB7E4: .word UNK_021064B8
-_020BB7E8: .word UNK_021064C0
-_020BB7EC: .word UNK_021064C4
-_020BB7F0: .word UNK_021064BC
-
- arm_func_start FUN_020BB7F4
-FUN_020BB7F4: ; 0x020BB7F4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl G3X_Init
- bl FUN_020B84D8
- ldr r1, _020BB820 ; =0x04000600
- ldr r0, [r1, #0x0]
- bic r0, r0, #0xc0000000
- orr r0, r0, #0x80000000
- str r0, [r1, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020BB820: .word 0x04000600
-
- arm_func_start FUN_020BB824
-FUN_020BB824: ; 0x020BB824
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x40
- mov r6, r0
- mov r5, r1
- bl FUN_020BB394
- ldr r0, _020BB8B4 ; =0x04000440
- mov r2, #0x0
- ldr r1, _020BB8B8 ; =0x04000444
- str r2, [r0, #0x0]
- ldr r0, _020BB8BC ; =0x04000454
- str r2, [r1, #0x0]
- str r2, [r0, #0x0]
- cmp r6, #0x0
- beq _020BB87C
- add r4, sp, #0x0
-_020BB860:
- mov r0, r4
- bl G3X_GetClipMtx
- cmp r0, #0x0
- bne _020BB860
- add r0, sp, #0x0
- mov r1, r6
- bl MTX_Copy44To43_
-_020BB87C:
- cmp r5, #0x0
- beq _020BB894
-_020BB884:
- mov r0, r5
- bl G3X_GetVectorMtx
- cmp r0, #0x0
- bne _020BB884
-_020BB894:
- ldr r1, _020BB8C0 ; =0x04000448
- mov r2, #0x1
- ldr r0, _020BB8B4 ; =0x04000440
- str r2, [r1, #0x0]
- mov r1, #0x2
- str r1, [r0, #0x0]
- add sp, sp, #0x40
- ldmia sp!, {r4-r6,pc}
- .balign 4
-_020BB8B4: .word 0x04000440
-_020BB8B8: .word 0x04000444
-_020BB8BC: .word 0x04000454
-_020BB8C0: .word 0x04000448
-
- arm_func_start thunk_FUN_020ae84c
-thunk_FUN_020ae84c: ; 0x020BB8C4
- ldr ip, _020BB8CC ; =FUN_020AE84C
- bx r12
- .balign 4
-_020BB8CC: .word FUN_020AE84C
-
- arm_func_start FUN_020BB8D0
-FUN_020BB8D0: ; 0x020BB8D0
- stmdb sp!, {r4,lr}
- mov r4, r0
- mov r0, r1
- mov r1, r2
- bl FUN_020B81B0
- mov r1, r0
- mov r0, r4
- bl FUN_020AE868
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BB8F4
-FUN_020BB8F4: ; 0x020BB8F4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BB910:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBC74
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BB910
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BB934
-FUN_020BB934: ; 0x020BB934
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BB950:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBCB8
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BB950
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BB974
-FUN_020BB974: ; 0x020BB974
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BB990:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBCFC
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BB990
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BB9B4
-FUN_020BB9B4: ; 0x020BB9B4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BB9D0:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBD40
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BB9D0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BB9F4
-FUN_020BB9F4: ; 0x020BB9F4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBA10:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBD84
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBA10
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBA34
-FUN_020BBA34: ; 0x020BBA34
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBA50:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBDC8
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBA50
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBA74
-FUN_020BBA74: ; 0x020BBA74
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBA90:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBE0C
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBA90
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBAB4
-FUN_020BBAB4: ; 0x020BBAB4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBAD0:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBE50
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBAD0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBAF4
-FUN_020BBAF4: ; 0x020BBAF4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBB10:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBE94
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBB10
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBB34
-FUN_020BBB34: ; 0x020BBB34
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBB50:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBED8
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBB50
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBB74
-FUN_020BBB74: ; 0x020BBB74
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBB90:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBF1C
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBB90
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBBB4
-FUN_020BBBB4: ; 0x020BBBB4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBBD0:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBF60
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBBD0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBBF4
-FUN_020BBBF4: ; 0x020BBBF4
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBC10:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBFA4
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBC10
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBC34
-FUN_020BBC34: ; 0x020BBC34
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- ldrb r0, [r6, #0x18]
- mov r5, r1
- mov r4, #0x0
- cmp r0, #0x0
- ldmlsia sp!, {r4-r6,pc}
-_020BBC50:
- mov r0, r6
- mov r1, r4
- mov r2, r5
- bl FUN_020BBFE8
- ldrb r0, [r6, #0x18]
- add r4, r4, #0x1
- cmp r4, r0
- blo _020BBC50
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BBC74
-FUN_020BBC74: ; 0x020BBC74
- ldr r3, [r0, #0x8]
- cmp r2, #0x0
- add r12, r0, r3
- ldrh r0, [r12, #0xa]
- add r3, r12, #0x4
- ldrh r2, [r3, r0]
- add r0, r3, r0
- mla r0, r2, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r12, r0
- ldrne r0, [r1, #0xc]
- orrne r0, r0, #0x800
- strne r0, [r1, #0xc]
- ldreq r0, [r1, #0xc]
- biceq r0, r0, #0x800
- streq r0, [r1, #0xc]
- bx lr
-
- arm_func_start FUN_020BBCB8
-FUN_020BBCB8: ; 0x020BBCB8
- ldr r3, [r0, #0x8]
- cmp r2, #0x0
- add r12, r0, r3
- ldrh r0, [r12, #0xa]
- add r3, r12, #0x4
- ldrh r2, [r3, r0]
- add r0, r3, r0
- mla r0, r2, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r12, r0
- ldrne r0, [r1, #0xc]
- orrne r0, r0, #0x1000
- strne r0, [r1, #0xc]
- ldreq r0, [r1, #0xc]
- biceq r0, r0, #0x1000
- streq r0, [r1, #0xc]
- bx lr
-
- arm_func_start FUN_020BBCFC
-FUN_020BBCFC: ; 0x020BBCFC
- ldr r3, [r0, #0x8]
- cmp r2, #0x0
- add r12, r0, r3
- ldrh r0, [r12, #0xa]
- add r3, r12, #0x4
- ldrh r2, [r3, r0]
- add r0, r3, r0
- mla r0, r2, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r12, r0
- ldrne r0, [r1, #0xc]
- orrne r0, r0, #0x2000
- strne r0, [r1, #0xc]
- ldreq r0, [r1, #0xc]
- biceq r0, r0, #0x2000
- streq r0, [r1, #0xc]
- bx lr
-
- arm_func_start FUN_020BBD40
-FUN_020BBD40: ; 0x020BBD40
- ldr r3, [r0, #0x8]
- cmp r2, #0x0
- add r12, r0, r3
- ldrh r0, [r12, #0xa]
- add r3, r12, #0x4
- ldrh r2, [r3, r0]
- add r0, r3, r0
- mla r0, r2, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r12, r0
- ldrne r0, [r1, #0xc]
- orrne r0, r0, #0x4000
- strne r0, [r1, #0xc]
- ldreq r0, [r1, #0xc]
- biceq r0, r0, #0x4000
- streq r0, [r1, #0xc]
- bx lr
-
- arm_func_start FUN_020BBD84
-FUN_020BBD84: ; 0x020BBD84
- ldr r3, [r0, #0x8]
- cmp r2, #0x0
- add r12, r0, r3
- ldrh r0, [r12, #0xa]
- add r3, r12, #0x4
- ldrh r2, [r3, r0]
- add r0, r3, r0
- mla r0, r2, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r12, r0
- ldrne r0, [r1, #0xc]
- orrne r0, r0, #0x8000
- strne r0, [r1, #0xc]
- ldreq r0, [r1, #0xc]
- biceq r0, r0, #0x8000
- streq r0, [r1, #0xc]
- bx lr
-
- arm_func_start FUN_020BBDC8
-FUN_020BBDC8: ; 0x020BBDC8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x8]
- add lr, r0, r3
- ldrh r0, [lr, #0xa]
- add r12, lr, #0x4
- ldrh r3, [r12, r0]
- add r0, r12, r0
- mla r0, r3, r1, r0
- ldr r0, [r0, #0x4]
- add r1, lr, r0
- ldr r0, [r1, #0xc]
- bic r0, r0, #0x1f0000
- orr r0, r0, r2, lsl #0x10
- str r0, [r1, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BBE0C
-FUN_020BBE0C: ; 0x020BBE0C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x8]
- add lr, r0, r3
- ldrh r0, [lr, #0xa]
- add r12, lr, #0x4
- ldrh r3, [r12, r0]
- add r0, r12, r0
- mla r0, r3, r1, r0
- ldr r0, [r0, #0x4]
- add r1, lr, r0
- ldr r0, [r1, #0xc]
- bic r0, r0, #0x3f000000
- orr r0, r0, r2, lsl #0x18
- str r0, [r1, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BBE50
-FUN_020BBE50: ; 0x020BBE50
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x8]
- add lr, r0, r3
- ldrh r0, [lr, #0xa]
- add r12, lr, #0x4
- ldrh r3, [r12, r0]
- add r0, r12, r0
- mla r0, r3, r1, r0
- ldr r0, [r0, #0x4]
- add r1, lr, r0
- ldr r0, [r1, #0xc]
- bic r0, r0, #0xc0
- orr r0, r0, r2, lsl #0x6
- str r0, [r1, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BBE94
-FUN_020BBE94: ; 0x020BBE94
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x8]
- add lr, r0, r3
- ldrh r0, [lr, #0xa]
- add r12, lr, #0x4
- ldrh r3, [r12, r0]
- add r0, r12, r0
- mla r0, r3, r1, r0
- ldr r0, [r0, #0x4]
- add r1, lr, r0
- ldr r0, [r1, #0xc]
- bic r0, r0, #0x30
- orr r0, r0, r2, lsl #0x4
- str r0, [r1, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BBED8
-FUN_020BBED8: ; 0x020BBED8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r3, [r0, #0x8]
- add lr, r0, r3
- ldrh r0, [lr, #0xa]
- add r12, lr, #0x4
- ldrh r3, [r12, r0]
- add r0, r12, r0
- mla r0, r3, r1, r0
- ldr r0, [r0, #0x4]
- add r1, lr, r0
- ldr r0, [r1, #0xc]
- bic r0, r0, #0xf
- orr r0, r0, r2
- str r0, [r1, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BBF1C
-FUN_020BBF1C: ; 0x020BBF1C
- stmdb sp!, {r4,lr}
- ldr r12, [r0, #0x8]
- ldr r3, _020BBF5C ; =0x8000FFFF
- add r4, r0, r12
- ldrh r0, [r4, #0xa]
- add lr, r4, #0x4
- ldrh r12, [lr, r0]
- add r0, lr, r0
- mla r0, r12, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r4, r0
- ldr r0, [r1, #0x8]
- and r0, r0, r3
- orr r0, r0, r2, lsl #0x10
- str r0, [r1, #0x8]
- ldmia sp!, {r4,pc}
- .balign 4
-_020BBF5C: .word 0x8000FFFF
-
- arm_func_start FUN_020BBF60
-FUN_020BBF60: ; 0x020BBF60
- stmdb sp!, {r4,lr}
- ldr r12, [r0, #0x8]
- mov r3, #0x8000
- add r4, r0, r12
- ldrh r12, [r4, #0xa]
- add lr, r4, #0x4
- rsb r0, r3, #0x0
- ldrh r3, [lr, r12]
- add r12, lr, r12
- mla r1, r3, r1, r12
- ldr r1, [r1, #0x4]
- add r3, r4, r1
- ldr r1, [r3, #0x8]
- and r0, r1, r0
- orr r0, r0, r2
- str r0, [r3, #0x8]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BBFA4
-FUN_020BBFA4: ; 0x020BBFA4
- stmdb sp!, {r4,lr}
- ldr r12, [r0, #0x8]
- ldr r3, _020BBFE4 ; =0x8000FFFF
- add r4, r0, r12
- ldrh r0, [r4, #0xa]
- add lr, r4, #0x4
- ldrh r12, [lr, r0]
- add r0, lr, r0
- mla r0, r12, r1, r0
- ldr r0, [r0, #0x4]
- add r1, r4, r0
- ldr r0, [r1, #0x4]
- and r0, r0, r3
- orr r0, r0, r2, lsl #0x10
- str r0, [r1, #0x4]
- ldmia sp!, {r4,pc}
- .balign 4
-_020BBFE4: .word 0x8000FFFF
-
- arm_func_start FUN_020BBFE8
-FUN_020BBFE8: ; 0x020BBFE8
- stmdb sp!, {r4,lr}
- ldr r12, [r0, #0x8]
- mov r3, #0x8000
- add r4, r0, r12
- ldrh r12, [r4, #0xa]
- add lr, r4, #0x4
- rsb r0, r3, #0x0
- ldrh r3, [lr, r12]
- add r12, lr, r12
- mla r1, r3, r1, r12
- ldr r1, [r1, #0x4]
- add r3, r4, r1
- ldr r1, [r3, #0x4]
- and r0, r1, r0
- orr r0, r0, r2
- str r0, [r3, #0x4]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BC02C
-FUN_020BC02C: ; 0x020BC02C
- stmdb sp!, {r4-r6,lr}
- ldrb r4, [r0, #0x18]
- ldr r3, [r0, #0x8]
- mov lr, #0x0
- cmp r4, #0x0
- add r12, r0, r3
- ldmlsia sp!, {r4-r6,pc}
- mvn r3, r2
- add r0, r12, #0x4
-_020BC050:
- ldrh r5, [r12, #0xa]
- cmp r1, #0x0
- ldrh r6, [r0, r5]
- add r5, r0, r5
- mla r5, r6, lr, r5
- ldr r5, [r5, #0x4]
- add lr, lr, #0x1
- add r6, r12, r5
- ldrne r5, [r6, #0x10]
- orrne r5, r5, r2
- strne r5, [r6, #0x10]
- ldreq r5, [r6, #0x10]
- andeq r5, r5, r3
- streq r5, [r6, #0x10]
- cmp lr, r4
- blo _020BC050
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BC094
-FUN_020BC094: ; 0x020BC094
- stmdb sp!, {r4-r6,lr}
- ldrb r4, [r0, #0x18]
- ldr r3, [r0, #0x8]
- mov lr, #0x0
- cmp r4, #0x0
- add r12, r0, r3
- ldmlsia sp!, {r4-r6,pc}
- mvn r3, r2
- add r0, r12, #0x4
-_020BC0B8:
- ldrh r5, [r12, #0xa]
- cmp r1, #0x0
- ldrh r6, [r0, r5]
- add r5, r0, r5
- mla r5, r6, lr, r5
- ldr r5, [r5, #0x4]
- add lr, lr, #0x1
- add r6, r12, r5
- ldrneh r5, [r6, #0x1e]
- orrne r5, r5, r2
- strneh r5, [r6, #0x1e]
- ldreqh r5, [r6, #0x1e]
- andeq r5, r5, r3
- streqh r5, [r6, #0x1e]
- cmp lr, r4
- blo _020BC0B8
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BC0FC
-FUN_020BC0FC: ; 0x020BC0FC
- ldrh r2, [r0, #0xc]
- ldrh r1, [r0, #0xe]
- add r3, r0, r2
- cmp r1, #0x1
- bne _020BC12C
- ldr r2, [r0, #0x0]
- ldr r1, _020BC138 ; =0x30585442
- cmp r2, r1
- ldreq r1, [r3, #0x0]
- addeq r0, r0, r1
- movne r0, #0x0
- bx lr
-_020BC12C:
- ldr r1, [r3, #0x4]
- add r0, r0, r1
- bx lr
- .balign 4
-_020BC138: .word 0x30585442
-
- arm_func_start FUN_020BC13C
-FUN_020BC13C:
- ldrh r1, [r0, #0xc]
- ldr r1, [r0, r1]
- add r0, r0, r1
- bx lr
-
- arm_func_start FUN_020BC14C
-FUN_020BC14C:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldrb r2, [r0, #0x1]
- cmp r2, #0x10
- bhs _020BC1E4
- cmp r2, #0x0
- ldr lr, [r1, #0x0]
- ldr r12, [r1, #0x4]
- ldr r3, [r1, #0x8]
- ldr r2, [r1, #0xc]
- mov r4, #0x0
- bls _020BC294
- ldrh r5, [r0, #0x6]
- mov r1, r4
- add r6, r0, r5
- ldrh r5, [r6, #0x2]
- add r6, r6, r5
-_020BC190:
- ldr r5, [r6, r1]
- add r7, r6, r1
- cmp r5, lr
- bne _020BC1CC
- ldr r5, [r7, #0x4]
- cmp r5, r12
- bne _020BC1CC
- ldr r5, [r7, #0x8]
- cmp r5, r3
- bne _020BC1CC
- ldr r5, [r7, #0xc]
- cmp r5, r2
- addeq sp, sp, #0x4
- moveq r0, r4
- ldmeqia sp!, {r4-r7,pc}
-_020BC1CC:
- ldrb r5, [r0, #0x1]
- add r4, r4, #0x1
- add r1, r1, #0x10
- cmp r4, r5
- blo _020BC190
- b _020BC294
-_020BC1E4:
- add r3, r0, #0x8
- ldrb r2, [r3, #0x1]
- cmp r2, #0x0
- beq _020BC294
- ldrb r5, [r3, r2, lsl #0x2]
- ldrb r4, [r3, #0x0]
- add r2, r3, r2, lsl #0x2
- cmp r4, r5
- bls _020BC238
-_020BC208:
- mov r4, r5, asr #0x5
- ldr r12, [r1, r4, lsl #0x2]
- and r4, r5, #0x1f
- mov r4, r12, lsr r4
- and r4, r4, #0x1
- add r4, r2, r4
- ldrb r12, [r4, #0x1]
- ldrb r4, [r2, #0x0]
- ldrb r5, [r3, r12, lsl #0x2]
- add r2, r3, r12, lsl #0x2
- cmp r4, r5
- bhi _020BC208
-_020BC238:
- ldrh r4, [r0, #0x6]
- ldr r3, [r1, #0x0]
- add r12, r0, r4
- ldrh r4, [r12, #0x2]
- ldrb r0, [r2, #0x3]
- add r4, r12, r4
- ldr r2, [r4, r0, lsl #0x4]
- add r4, r4, r0, lsl #0x4
- cmp r2, r3
- bne _020BC294
- ldr r3, [r4, #0x4]
- ldr r2, [r1, #0x4]
- cmp r3, r2
- bne _020BC294
- ldr r3, [r4, #0x8]
- ldr r2, [r1, #0x8]
- cmp r3, r2
- bne _020BC294
- ldr r2, [r4, #0xc]
- ldr r1, [r1, #0xc]
- cmp r2, r1
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
-_020BC294:
- mvn r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BC2A0
-FUN_020BC2A0: ; 0x020BC2A0
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldrb r2, [r0, #0x1]
- cmp r2, #0x10
- bhs _020BC34C
- cmp r2, #0x0
- ldr lr, [r1, #0x0]
- ldr r12, [r1, #0x4]
- ldr r3, [r1, #0x8]
- ldr r2, [r1, #0xc]
- mov r4, #0x0
- bls _020BC404
- ldrh r5, [r0, #0x6]
- mov r1, r4
- add r6, r0, r5
- ldrh r5, [r6, #0x2]
- add r6, r6, r5
-_020BC2E4:
- ldr r5, [r6, r1]
- add r7, r6, r1
- cmp r5, lr
- bne _020BC334
- ldr r5, [r7, #0x4]
- cmp r5, r12
- bne _020BC334
- ldr r5, [r7, #0x8]
- cmp r5, r3
- bne _020BC334
- ldr r5, [r7, #0xc]
- cmp r5, r2
- bne _020BC334
- ldrh r2, [r0, #0x6]
- add sp, sp, #0x4
- ldrh r1, [r0, r2]
- add r0, r0, r2
- add r0, r0, #0x4
- mla r0, r1, r4, r0
- ldmia sp!, {r4-r7,pc}
-_020BC334:
- ldrb r5, [r0, #0x1]
- add r4, r4, #0x1
- add r1, r1, #0x10
- cmp r4, r5
- blo _020BC2E4
- b _020BC404
-_020BC34C:
- add r3, r0, #0x8
- ldrb r2, [r3, #0x1]
- cmp r2, #0x0
- beq _020BC404
- ldrb r5, [r3, r2, lsl #0x2]
- ldrb r4, [r3, #0x0]
- add r2, r3, r2, lsl #0x2
- cmp r4, r5
- bls _020BC3A0
-_020BC370:
- mov r4, r5, asr #0x5
- ldr r12, [r1, r4, lsl #0x2]
- and r4, r5, #0x1f
- mov r4, r12, lsr r4
- and r4, r4, #0x1
- add r4, r2, r4
- ldrb r12, [r4, #0x1]
- ldrb r4, [r2, #0x0]
- ldrb r5, [r3, r12, lsl #0x2]
- add r2, r3, r12, lsl #0x2
- cmp r4, r5
- bhi _020BC370
-_020BC3A0:
- ldrh r4, [r0, #0x6]
- ldrb r2, [r2, #0x3]
- ldr r3, [r1, #0x0]
- add r0, r0, r4
- ldrh r4, [r0, #0x2]
- add r12, r0, r4
- ldr r4, [r12, r2, lsl #0x4]
- add r12, r12, r2, lsl #0x4
- cmp r4, r3
- bne _020BC404
- ldr r4, [r12, #0x4]
- ldr r3, [r1, #0x4]
- cmp r4, r3
- bne _020BC404
- ldr r4, [r12, #0x8]
- ldr r3, [r1, #0x8]
- cmp r4, r3
- bne _020BC404
- ldr r3, [r12, #0xc]
- ldr r1, [r1, #0xc]
- cmp r3, r1
- ldreqh r1, [r0], #0x4
- addeq sp, sp, #0x4
- mlaeq r0, r1, r2, r0
- ldmeqia sp!, {r4-r7,pc}
-_020BC404:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BC410
-FUN_020BC410: ; 0x020BC410
- ldrh r3, [r0, #0x12]
- add r0, r0, #0xc
- ldrh r2, [r0, r3]
- add r0, r0, r3
- add r0, r0, #0x4
- mla r0, r2, r1, r0
- bx lr
-
- arm_func_start FUN_020BC42C
-FUN_020BC42C: ; 0x020BC42C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r2
- bl FUN_020BC410
- ldrsh r1, [r0, #0x4]
- ldrh r3, [r0, #0x6]
- mul r2, r1, r4
- add r3, r5, r3
- mov r2, r2, lsr #0xc
- b _020BC45C
-_020BC458:
- sub r2, r2, #0x1
-_020BC45C:
- cmp r2, #0x0
- beq _020BC474
- mov r1, r2, lsl #0x2
- ldrh r1, [r3, r1]
- cmp r1, r4
- bhs _020BC458
-_020BC474:
- ldrh r1, [r0, #0x0]
- b _020BC480
-_020BC47C:
- add r2, r2, #0x1
-_020BC480:
- add r0, r2, #0x1
- cmp r0, r1
- bhs _020BC49C
- add r0, r3, r2, lsl #0x2
- ldrh r0, [r0, #0x4]
- cmp r0, r4
- bls _020BC47C
-_020BC49C:
- add r0, r3, r2, lsl #0x2
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020BC4A8
-FUN_020BC4A8: ; 0x020BC4A8
- ldrh r2, [r0, #0xa]
- add r0, r0, r2
- add r0, r0, r1, lsl #0x4
- bx lr
-
- arm_func_start FUN_020BC4B8
-FUN_020BC4B8: ; 0x020BC4B8
- ldrh r2, [r0, #0x8]
- add r0, r0, r2
- add r0, r0, r1, lsl #0x4
- bx lr
-
- arm_func_start FUN_020BC4C8
-FUN_020BC4C8: ; 0x020BC4C8
- ldrh r2, [r0, #0xc]
- ldr r2, [r0, r2]
- add r12, r0, r2
- ldrh r2, [r12, #0xe]
- add r3, r12, #0x8
- ldrh r0, [r3, r2]
- add r2, r3, r2
- add r2, r2, #0x4
- mul r1, r0, r1
- adds r0, r2, r1
- ldrne r0, [r0, #0x0]
- addne r0, r12, r0
- moveq r0, #0x0
- bx lr
-
- arm_func_start FUN_020BC500
-FUN_020BC500:
- stmdb sp!, {r4,lr}
- ands r4, r3, #0x8000
- beq _020BC5E0
- mov r2, #0x0
- str r2, [r0, #0x20]
- ldr r4, [r0, #0x20]
- ldr r2, _020BC684 ; =0x00007FFF
- str r4, [r0, #0x1c]
- ldr r4, [r0, #0x1c]
- and r3, r3, r2
- str r4, [r0, #0x18]
- ldr r4, [r0, #0x18]
- mov r2, #0x3
- str r4, [r0, #0x14]
- ldr r4, [r0, #0x14]
- mul r2, r3, r2
- str r4, [r0, #0x10]
- ldr r4, [r0, #0x10]
- mov r3, r2, lsl #0x1
- str r4, [r0, #0xc]
- ldr r4, [r0, #0xc]
- add r2, r1, r2, lsl #0x1
- str r4, [r0, #0x8]
- ldr r4, [r0, #0x8]
- str r4, [r0, #0x4]
- ldr r4, [r0, #0x4]
- str r4, [r0, #0x0]
- ldrsh r4, [r1, r3]
- ldrsh r12, [r2, #0x2]
- ldrsh r3, [r2, #0x4]
- and r1, r4, #0xf
- ands r4, r4, #0x10
- movne lr, #0x1000
- rsbne lr, lr, #0x0
- moveq lr, #0x1000
- str lr, [r0, r1, lsl #0x2]
- ldr r4, _020BC688 ; =UNK_020FFA14
- ldr lr, _020BC68C ; =UNK_020FFA15
- ldrb r4, [r4, r1, lsl #0x2]
- str r12, [r0, r4, lsl #0x2]
- ldrb lr, [lr, r1, lsl #0x2]
- str r3, [r0, lr, lsl #0x2]
- ldrsh lr, [r2, #0x0]
- ands lr, lr, #0x20
- ldr lr, _020BC690 ; =UNK_020FFA16
- rsbne r3, r3, #0x0
- ldrb lr, [lr, r1, lsl #0x2]
- str r3, [r0, lr, lsl #0x2]
- ldrsh r2, [r2, #0x0]
- ands r2, r2, #0x40
- ldr r2, _020BC694 ; =UNK_020FFA17
- rsbne r12, r12, #0x0
- ldrb r1, [r2, r1, lsl #0x2]
- str r12, [r0, r1, lsl #0x2]
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-_020BC5E0:
- ldr r1, _020BC684 ; =0x00007FFF
- mov r12, #0x5
- and r1, r3, r1
- mul r3, r1, r12
- add r1, r2, r3, lsl #0x1
- ldrsh lr, [r1, #0x8]
- mov r12, r3, lsl #0x1
- mov r3, lr, asr #0x3
- str r3, [r0, #0x10]
- ldrsh r12, [r2, r12]
- and r2, lr, #0x7
- mov r2, r2, lsl #0x10
- mov r3, r12, asr #0x3
- str r3, [r0, #0x0]
- ldrsh r3, [r1, #0x2]
- and r12, r12, #0x7
- orr lr, r12, r2, asr #0xd
- mov r2, r3, asr #0x3
- str r2, [r0, #0x4]
- ldrsh r12, [r1, #0x4]
- mov r2, lr, lsl #0x10
- and lr, r3, #0x7
- mov r3, r12, asr #0x3
- str r3, [r0, #0x8]
- ldrsh r3, [r1, #0x6]
- orr r1, lr, r2, asr #0xd
- mov r1, r1, lsl #0x10
- and r2, r12, #0x7
- orr r1, r2, r1, asr #0xd
- mov r1, r1, lsl #0x10
- and r2, r3, #0x7
- orr r1, r2, r1, asr #0xd
- mov r1, r1, lsl #0x10
- mov r1, r1, asr #0x10
- mov r2, r3, asr #0x3
- mov r1, r1, lsl #0x13
- str r2, [r0, #0xc]
- mov r1, r1, asr #0x13
- str r1, [r0, #0x14]
- mov r0, #0x1
- ldmia sp!, {r4,pc}
- .balign 4
-_020BC684: .word 0x00007FFF
-_020BC688: .word UNK_020FFA14
-_020BC68C: .word UNK_020FFA15
-_020BC690: .word UNK_020FFA16
-_020BC694: .word UNK_020FFA17
-
- arm_func_start FUN_020BC698
-FUN_020BC698: ; 0x020BC698
- stmdb sp!, {r4-r10,lr}
- sub sp, sp, #0x48
- ldrh r4, [r3, #0x4]
- ldr r5, [r3, #0xc]
- ldr r8, [r3, #0x10]
- ldr r7, [r2, #0x4]
- mov r12, r1, asr #0xc
- sub r4, r4, #0x1
- mov r6, r0
- cmp r12, r4
- add r5, r3, r5
- add r4, r3, r8
- add r8, r3, r7
- ldr r7, [r2, #0x0]
- bne _020BC780
- ands r0, r7, #0xc0000000
- beq _020BC6F0
- ands r0, r7, #0x40000000
- andne r0, r12, #0x1
- addne r12, r0, r12, lsr #0x1
- andeq r0, r12, #0x3
- addeq r12, r0, r12, lsr #0x2
-_020BC6F0:
- ldr r0, [r3, #0x8]
- ands r0, r0, #0x2
- movne r7, #0x0
- bne _020BC7F4
- mov r0, r12, lsl #0x1
- ldrh r3, [r8, r0]
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- cmp r0, #0x0
- addeq sp, sp, #0x48
- ldmeqia sp!, {r4-r10,pc}
- ldr r9, [r6, #0x14]
- ldr r5, [r6, #0x4]
- ldr r4, [r6, #0x10]
- ldr r2, [r6, #0x8]
- mul r1, r5, r9
- mul r0, r2, r4
- sub r0, r1, r0
- ldr r7, [r6, #0xc]
- ldr r8, [r6, #0x0]
- mov r3, r0, asr #0xc
- mul r1, r2, r7
- mul r0, r8, r9
- sub r2, r1, r0
- mul r1, r8, r4
- mul r0, r5, r7
- sub r0, r1, r0
- str r3, [r6, #0x18]
- mov r1, r2, asr #0xc
- str r1, [r6, #0x1c]
- mov r0, r0, asr #0xc
- add sp, sp, #0x48
- str r0, [r6, #0x20]
- ldmia sp!, {r4-r10,pc}
-_020BC780:
- ands r0, r7, #0xc0000000
- beq _020BC7F0
- ldr r0, _020BC9C4 ; =0x1FFF0000
- ands r2, r7, #0x40000000
- and r0, r7, r0
- mov r0, r0, lsr #0x10
- beq _020BC7C4
- cmp r12, r0
- movcs r12, r0, lsr #0x1
- addcs r7, r12, #0x1
- bhs _020BC7F4
- ldr r0, _020BC9C8 ; =0x00001FFF
- mov r12, r12, lsr #0x1
- add r7, r12, #0x1
- and r10, r1, r0
- mov r9, #0x2
- b _020BC800
-_020BC7C4:
- cmp r12, r0
- andcs r0, r12, #0x3
- addcs r12, r0, r12, lsr #0x2
- addcs r7, r12, #0x1
- bhs _020BC7F4
- ldr r0, _020BC9CC ; =0x00003FFF
- mov r12, r12, lsr #0x2
- add r7, r12, #0x1
- and r10, r1, r0
- mov r9, #0x4
- b _020BC800
-_020BC7F0:
- add r7, r12, #0x1
-_020BC7F4:
- ldr r0, _020BC9D0 ; =0x00000FFF
- mov r9, #0x1
- and r10, r1, r0
-_020BC800:
- mov r0, r12, lsl #0x1
- ldrh r3, [r8, r0]
- add r0, sp, #0x0
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- mov r1, r7, lsl #0x1
- ldrh r3, [r8, r1]
- orr r7, r0, #0x0
- add r0, sp, #0x24
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- ldr r3, [sp, #0x0]
- ldr r1, [sp, #0x24]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r1, r2, r1, asr #0xc
- str r1, [r6, #0x0]
- ldr r3, [sp, #0x4]
- ldr r1, [sp, #0x28]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r1, r2, r1, asr #0xc
- str r1, [r6, #0x4]
- ldr r3, [sp, #0x8]
- ldr r1, [sp, #0x2c]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r1, r2, r1, asr #0xc
- str r1, [r6, #0x8]
- ldr r3, [sp, #0xc]
- ldr r1, [sp, #0x30]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r1, r2, r1, asr #0xc
- str r1, [r6, #0xc]
- ldr r2, [sp, #0x10]
- ldr r1, [sp, #0x34]
- orr r7, r7, r0
- sub r0, r1, r2
- mul r1, r2, r9
- mul r0, r10, r0
- add r0, r1, r0, asr #0xc
- str r0, [r6, #0x10]
- ldr r2, [sp, #0x14]
- ldr r0, [sp, #0x38]
- mul r1, r2, r9
- sub r0, r0, r2
- mul r0, r10, r0
- add r2, r1, r0, asr #0xc
- mov r0, r6
- mov r1, r6
- str r2, [r6, #0x14]
- bl VEC_Normalize
- add r0, r6, #0xc
- mov r1, r0
- bl VEC_Normalize
- cmp r7, #0x0
- bne _020BC968
- ldr r3, [sp, #0x18]
- ldr r1, [sp, #0x3c]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r1, r2, r1, asr #0xc
- str r1, [r6, #0x18]
- ldr r3, [sp, #0x1c]
- ldr r1, [sp, #0x40]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r1, r2, r1, asr #0xc
- str r1, [r6, #0x1c]
- ldr r3, [sp, #0x20]
- ldr r1, [sp, #0x44]
- mul r2, r3, r9
- sub r1, r1, r3
- mul r1, r10, r1
- add r2, r2, r1, asr #0xc
- add r0, r6, #0x18
- mov r1, r0
- str r2, [r6, #0x20]
- bl VEC_Normalize
- add sp, sp, #0x48
- ldmia sp!, {r4-r10,pc}
-_020BC968:
- ldr r9, [r6, #0x14]
- ldr r5, [r6, #0x4]
- ldr r8, [r6, #0x0]
- ldr r4, [r6, #0x10]
- ldr r2, [r6, #0x8]
- ldr r7, [r6, #0xc]
- mul r1, r5, r9
- mul r0, r2, r4
- sub r0, r1, r0
- mov r3, r0, asr #0xc
- mul r1, r2, r7
- mul r0, r8, r9
- sub r2, r1, r0
- mul r1, r8, r4
- mul r0, r5, r7
- sub r0, r1, r0
- str r3, [r6, #0x18]
- mov r1, r2, asr #0xc
- str r1, [r6, #0x1c]
- mov r0, r0, asr #0xc
- str r0, [r6, #0x20]
- add sp, sp, #0x48
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020BC9C4: .word 0x1FFF0000
-_020BC9C8: .word 0x00001FFF
-_020BC9CC: .word 0x00003FFF
-_020BC9D0: .word 0x00000FFF
-
- arm_func_start FUN_020BC9D4
-FUN_020BC9D4: ; 0x020BC9D4
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4c
- ldr r5, [r3, #0xc]
- ldr r4, [r3, #0x10]
- ldr r12, [r2, #0x0]
- ldr r2, [r2, #0x4]
- mov r6, r0
- mov r0, r1, asr #0xc
- add r5, r3, r5
- add r4, r3, r4
- add r8, r3, r2
- ands r1, r12, #0xc0000000
- beq _020BCD40
- ldr r1, _020BCDC0 ; =0x1FFF0000
- ands r2, r12, #0x40000000
- and r1, r12, r1
- mov r2, r1, lsr #0x10
- beq _020BCA44
- ands r1, r0, #0x1
- beq _020BCA3C
- cmp r0, r2
- movhi r0, r2, lsr #0x1
- addhi r0, r0, #0x1
- bhi _020BCD40
- mov r7, r0, lsr #0x1
- b _020BCBE8
-_020BCA3C:
- mov r0, r0, lsr #0x1
- b _020BCD40
-_020BCA44:
- ands r1, r0, #0x3
- beq _020BCBE0
- cmp r0, r2
- addhi r0, r1, r2, lsr #0x2
- bhi _020BCD40
- ands r1, r0, #0x1
- beq _020BCBD8
- ands r1, r0, #0x2
- movne r9, r0, lsr #0x2
- addne r0, r9, #0x1
- moveq r0, r0, lsr #0x2
- addeq r9, r0, #0x1
- mov r0, r0, lsl #0x1
- ldrh r3, [r8, r0]
- mov r0, r6
- mov r1, r5
- mov r2, r4
- mov r7, #0x0
- bl FUN_020BC500
- mov r1, r9, lsl #0x1
- ldrh r3, [r8, r1]
- orr r7, r7, r0
- add r0, sp, #0x0
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- ldr r3, [sp, #0x0]
- ldr r1, [r6, #0x0]
- mov r2, #0x3
- mla r3, r1, r2, r3
- str r3, [r6, #0x0]
- ldr r3, [sp, #0x4]
- ldr r1, [r6, #0x4]
- orr r7, r7, r0
- mla r0, r1, r2, r3
- str r0, [r6, #0x4]
- ldr r3, [sp, #0x8]
- ldr r1, [r6, #0x8]
- mov r0, r6
- mla r3, r1, r2, r3
- str r3, [r6, #0x8]
- ldr r4, [sp, #0xc]
- ldr r3, [r6, #0xc]
- mov r1, r6
- mla r4, r3, r2, r4
- str r4, [r6, #0xc]
- ldr r4, [sp, #0x10]
- ldr r3, [r6, #0x10]
- mla r4, r3, r2, r4
- str r4, [r6, #0x10]
- ldr r4, [sp, #0x14]
- ldr r3, [r6, #0x14]
- mla r2, r3, r2, r4
- str r2, [r6, #0x14]
- bl VEC_Normalize
- add r0, r6, #0xc
- mov r1, r0
- bl VEC_Normalize
- cmp r7, #0x0
- bne _020BCB7C
- ldr r1, [sp, #0x18]
- ldr r0, [r6, #0x18]
- mov r2, #0x3
- mla r1, r0, r2, r1
- str r1, [r6, #0x18]
- ldr r3, [sp, #0x1c]
- ldr r1, [r6, #0x1c]
- add r0, r6, #0x18
- mla r3, r1, r2, r3
- str r3, [r6, #0x1c]
- ldr r4, [sp, #0x20]
- ldr r3, [r6, #0x20]
- mov r1, r0
- mla r2, r3, r2, r4
- str r2, [r6, #0x20]
- bl VEC_Normalize
- add sp, sp, #0x4c
- ldmia sp!, {r4-r9,pc}
-_020BCB7C:
- ldr r12, [r6, #0x14]
- ldr r5, [r6, #0x4]
- ldr r4, [r6, #0x10]
- ldr r2, [r6, #0x8]
- mul r1, r5, r12
- mul r0, r2, r4
- sub r0, r1, r0
- ldr r7, [r6, #0xc]
- ldr r8, [r6, #0x0]
- mov r3, r0, asr #0xc
- mul r1, r2, r7
- mul r0, r8, r12
- sub r2, r1, r0
- mul r1, r8, r4
- mul r0, r5, r7
- sub r0, r1, r0
- str r3, [r6, #0x18]
- mov r1, r2, asr #0xc
- str r1, [r6, #0x1c]
- mov r0, r0, asr #0xc
- add sp, sp, #0x4c
- str r0, [r6, #0x20]
- ldmia sp!, {r4-r9,pc}
-_020BCBD8:
- mov r7, r0, lsr #0x2
- b _020BCBE8
-_020BCBE0:
- mov r0, r0, lsr #0x2
- b _020BCD40
-_020BCBE8:
- mov r0, r7, lsl #0x1
- ldrh r3, [r8, r0]
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- add r1, r8, r7, lsl #0x1
- ldrh r3, [r1, #0x2]
- orr r7, r0, #0x0
- add r0, sp, #0x24
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- ldr r2, [r6, #0x0]
- ldr r1, [sp, #0x24]
- orr r7, r7, r0
- add r0, r2, r1
- str r0, [r6, #0x0]
- ldr r2, [r6, #0x4]
- ldr r1, [sp, #0x28]
- mov r0, r6
- add r1, r2, r1
- str r1, [r6, #0x4]
- ldr r3, [r6, #0x8]
- ldr r2, [sp, #0x2c]
- mov r1, r6
- add r2, r3, r2
- str r2, [r6, #0x8]
- ldr r3, [r6, #0xc]
- ldr r2, [sp, #0x30]
- add r2, r3, r2
- str r2, [r6, #0xc]
- ldr r3, [r6, #0x10]
- ldr r2, [sp, #0x34]
- add r2, r3, r2
- str r2, [r6, #0x10]
- ldr r3, [r6, #0x14]
- ldr r2, [sp, #0x38]
- add r2, r3, r2
- str r2, [r6, #0x14]
- bl VEC_Normalize
- add r0, r6, #0xc
- mov r1, r0
- bl VEC_Normalize
- cmp r7, #0x0
- bne _020BCCE4
- ldr r2, [r6, #0x18]
- ldr r1, [sp, #0x3c]
- add r0, r6, #0x18
- add r1, r2, r1
- str r1, [r6, #0x18]
- ldr r3, [r6, #0x1c]
- ldr r2, [sp, #0x40]
- mov r1, r0
- add r2, r3, r2
- str r2, [r6, #0x1c]
- ldr r3, [r6, #0x20]
- ldr r2, [sp, #0x44]
- add r2, r3, r2
- str r2, [r6, #0x20]
- bl VEC_Normalize
- add sp, sp, #0x4c
- ldmia sp!, {r4-r9,pc}
-_020BCCE4:
- ldr r12, [r6, #0x14]
- ldr r5, [r6, #0x4]
- ldr r4, [r6, #0x10]
- ldr r2, [r6, #0x8]
- mul r1, r5, r12
- mul r0, r2, r4
- sub r0, r1, r0
- ldr r7, [r6, #0xc]
- ldr r8, [r6, #0x0]
- mov r3, r0, asr #0xc
- mul r1, r2, r7
- mul r0, r8, r12
- sub r2, r1, r0
- mul r1, r8, r4
- mul r0, r5, r7
- sub r0, r1, r0
- str r3, [r6, #0x18]
- mov r1, r2, asr #0xc
- str r1, [r6, #0x1c]
- mov r0, r0, asr #0xc
- add sp, sp, #0x4c
- str r0, [r6, #0x20]
- ldmia sp!, {r4-r9,pc}
-_020BCD40:
- mov r0, r0, lsl #0x1
- ldrh r3, [r8, r0]
- mov r0, r6
- mov r1, r5
- mov r2, r4
- bl FUN_020BC500
- cmp r0, #0x0
- addeq sp, sp, #0x4c
- ldmeqia sp!, {r4-r9,pc}
- ldr r12, [r6, #0x14]
- ldr r5, [r6, #0x4]
- ldr r8, [r6, #0x0]
- ldr r4, [r6, #0x10]
- ldr r2, [r6, #0x8]
- ldr r7, [r6, #0xc]
- mul r1, r5, r12
- mul r0, r2, r4
- sub r0, r1, r0
- mov r3, r0, asr #0xc
- mul r1, r2, r7
- mul r0, r8, r12
- sub r2, r1, r0
- mul r1, r8, r4
- mul r0, r5, r7
- sub r0, r1, r0
- str r3, [r6, #0x18]
- mov r1, r2, asr #0xc
- str r1, [r6, #0x1c]
- mov r0, r0, asr #0xc
- str r0, [r6, #0x20]
- add sp, sp, #0x4c
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020BCDC0: .word 0x1FFF0000
-
- arm_func_start FUN_020BCDC4
-FUN_020BCDC4: ; 0x020BCDC4
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- ldrh r4, [r3, #0x4]
- ldr r6, [r2, #0x4]
- mov r5, r1, asr #0xc
- sub r4, r4, #0x1
- cmp r5, r4
- add r6, r3, r6
- ldr r2, [r2, #0x0]
- bne _020BCE58
- ands r4, r2, #0xc0000000
- beq _020BCE08
- ands r4, r2, #0x40000000
- andne r4, r5, #0x1
- addne r5, r4, r5, lsr #0x1
- andeq r4, r5, #0x3
- addeq r5, r4, r5, lsr #0x2
-_020BCE08:
- ldr r3, [r3, #0x8]
- ands r3, r3, #0x2
- movne r4, #0x0
- bne _020BCED4
- ands r1, r2, #0x20000000
- ldreq r2, [r6, r5, lsl #0x3]
- addeq r1, r6, r5, lsl #0x3
- streq r2, [r0, #0x0]
- ldreq r1, [r1, #0x4]
- addeq sp, sp, #0x4
- streq r1, [r0, #0x4]
- ldmeqia sp!, {r4-r7,pc}
- mov r1, r5, lsl #0x2
- ldrsh r2, [r6, r1]
- add r1, r6, r5, lsl #0x2
- add sp, sp, #0x4
- str r2, [r0, #0x0]
- ldrsh r1, [r1, #0x2]
- str r1, [r0, #0x4]
- ldmia sp!, {r4-r7,pc}
-_020BCE58:
- ands r3, r2, #0xc0000000
- beq _020BCED0
- ldr r3, _020BCF60 ; =0x1FFF0000
- ands r4, r2, #0x40000000
- and r3, r2, r3
- mov r3, r3, lsr #0x10
- beq _020BCEA0
- cmp r5, r3
- movcs r5, r3, lsr #0x1
- addcs r4, r5, #0x1
- bhs _020BCED4
- ldr r3, _020BCF64 ; =0x00001FFF
- mov r5, r5, lsr #0x1
- add r4, r5, #0x1
- and lr, r1, r3
- mov r12, #0x2
- mov r3, #0x1
- b _020BCEE4
-_020BCEA0:
- cmp r5, r3
- andcs r3, r5, #0x3
- addcs r5, r3, r5, lsr #0x2
- addcs r4, r5, #0x1
- bhs _020BCED4
- ldr r3, _020BCF68 ; =0x00003FFF
- mov r5, r5, lsr #0x2
- add r4, r5, #0x1
- and lr, r1, r3
- mov r12, #0x4
- mov r3, #0x2
- b _020BCEE4
-_020BCED0:
- add r4, r5, #0x1
-_020BCED4:
- ldr r3, _020BCF6C ; =0x00000FFF
- mov r12, #0x1
- and lr, r1, r3
- mov r3, #0x0
-_020BCEE4:
- ands r1, r2, #0x20000000
- beq _020BCF10
- mov r2, r5, lsl #0x2
- add r1, r6, r5, lsl #0x2
- mov r5, r4, lsl #0x2
- add r4, r6, r4, lsl #0x2
- ldrsh r2, [r6, r2]
- ldrsh r1, [r1, #0x2]
- ldrsh r5, [r6, r5]
- ldrsh r4, [r4, #0x2]
- b _020BCF28
-_020BCF10:
- add r1, r6, r5, lsl #0x3
- add r7, r6, r4, lsl #0x3
- ldr r2, [r6, r5, lsl #0x3]
- ldr r1, [r1, #0x4]
- ldr r5, [r6, r4, lsl #0x3]
- ldr r4, [r7, #0x4]
-_020BCF28:
- sub r5, r5, r2
- sub r4, r4, r1
- mul r6, r2, r12
- mul r2, lr, r5
- add r2, r6, r2, asr #0xc
- mov r5, r2, asr r3
- mul r2, r1, r12
- mul r1, lr, r4
- add r1, r2, r1, asr #0xc
- mov r1, r1, asr r3
- str r5, [r0, #0x0]
- str r1, [r0, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020BCF60: .word 0x1FFF0000
-_020BCF64: .word 0x00001FFF
-_020BCF68: .word 0x00003FFF
-_020BCF6C: .word 0x00000FFF
-
- arm_func_start FUN_020BCF70
-FUN_020BCF70: ; 0x020BCF70
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r4, [r2, #0x4]
- ldr r12, [r2, #0x0]
- mov r1, r1, asr #0xc
- add r3, r3, r4
- ands r2, r12, #0xc0000000
- beq _020BD0D0
- ldr r2, _020BD184 ; =0x1FFF0000
- ands r4, r12, #0x40000000
- and r2, r12, r2
- mov r4, r2, lsr #0x10
- beq _020BCFCC
- ands r2, r1, #0x1
- beq _020BCFC4
- cmp r1, r4
- movhi r1, r4, lsr #0x1
- addhi r1, r1, #0x1
- bhi _020BD0D0
- mov r2, r1, lsr #0x1
- b _020BD110
-_020BCFC4:
- mov r1, r1, lsr #0x1
- b _020BD0D0
-_020BCFCC:
- ands r2, r1, #0x3
- beq _020BD0CC
- cmp r1, r4
- addhi r1, r2, r4, lsr #0x2
- bhi _020BD0D0
- ands r2, r1, #0x1
- beq _020BD0C4
- ands r2, r1, #0x2
- movne r1, r1, lsr #0x2
- addne r2, r1, #0x1
- moveq r2, r1, lsr #0x2
- addeq r1, r2, #0x1
- ands r4, r12, #0x20000000
- beq _020BD04C
- mov r5, r2, lsl #0x2
- mov r4, r1, lsl #0x2
- ldrsh r12, [r3, r5]
- ldrsh r5, [r3, r4]
- add r2, r3, r2, lsl #0x2
- add r4, r12, r12, lsl #0x1
- add r4, r5, r4
- mov r4, r4, asr #0x2
- str r4, [r0, #0x0]
- add r1, r3, r1, lsl #0x2
- ldrsh r3, [r2, #0x2]
- ldrsh r2, [r1, #0x2]
- add sp, sp, #0x4
- add r1, r3, r3, lsl #0x1
- add r1, r2, r1
- mov r1, r1, asr #0x2
- str r1, [r0, #0x4]
- ldmia sp!, {r4-r5,pc}
-_020BD04C:
- ldr r5, [r3, r2, lsl #0x3]
- ldr r4, [r3, r1, lsl #0x3]
- mov r12, r5, asr #0x1f
- mov r12, r12, lsl #0x1
- mov lr, r5, lsl #0x1
- orr r12, r12, r5, lsr #0x1f
- adds lr, lr, r5
- adc r12, r12, r5, asr #0x1f
- adds lr, lr, r4
- adc r12, r12, r4, asr #0x1f
- mov lr, lr, lsr #0x2
- orr lr, lr, r12, lsl #0x1e
- str lr, [r0, #0x0]
- add r2, r3, r2, lsl #0x3
- ldr r12, [r2, #0x4]
- add r1, r3, r1, lsl #0x3
- mov r2, r12, asr #0x1f
- mov r2, r2, lsl #0x1
- mov r3, r12, lsl #0x1
- ldr r1, [r1, #0x4]
- orr r2, r2, r12, lsr #0x1f
- adds r3, r3, r12
- adc r2, r2, r12, asr #0x1f
- adds r3, r3, r1
- adc r1, r2, r1, asr #0x1f
- mov r2, r3, lsr #0x2
- orr r2, r2, r1, lsl #0x1e
- str r2, [r0, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-_020BD0C4:
- mov r2, r1, lsr #0x2
- b _020BD110
-_020BD0CC:
- mov r1, r1, lsr #0x2
-_020BD0D0:
- ands r2, r12, #0x20000000
- ldreq r2, [r3, r1, lsl #0x3]
- addeq r1, r3, r1, lsl #0x3
- streq r2, [r0, #0x0]
- ldreq r1, [r1, #0x4]
- addeq sp, sp, #0x4
- streq r1, [r0, #0x4]
- ldmeqia sp!, {r4-r5,pc}
- mov r2, r1, lsl #0x2
- ldrsh r2, [r3, r2]
- add r1, r3, r1, lsl #0x2
- add sp, sp, #0x4
- str r2, [r0, #0x0]
- ldrsh r1, [r1, #0x2]
- str r1, [r0, #0x4]
- ldmia sp!, {r4-r5,pc}
-_020BD110:
- ands r1, r12, #0x20000000
- beq _020BD150
- mov r1, r2, lsl #0x2
- add r12, r3, r2, lsl #0x2
- ldrsh r2, [r3, r1]
- ldrsh r1, [r12, #0x4]
- add sp, sp, #0x4
- add r1, r2, r1
- mov r1, r1, asr #0x1
- str r1, [r0, #0x0]
- ldrsh r2, [r12, #0x2]
- ldrsh r1, [r12, #0x6]
- add r1, r2, r1
- mov r1, r1, asr #0x1
- str r1, [r0, #0x4]
- ldmia sp!, {r4-r5,pc}
-_020BD150:
- add r12, r3, r2, lsl #0x3
- ldr r2, [r3, r2, lsl #0x3]
- ldr r1, [r12, #0x8]
- add r1, r2, r1
- mov r1, r1, asr #0x1
- str r1, [r0, #0x0]
- ldr r2, [r12, #0x4]
- ldr r1, [r12, #0xc]
- add r1, r2, r1
- mov r1, r1, asr #0x1
- str r1, [r0, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BD184: .word 0x1FFF0000
-
- arm_func_start FUN_020BD188
-FUN_020BD188: ; 0x020BD188
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldrh r4, [r3, #0x4]
- ldr lr, [r2, #0x4]
- mov r12, r1, asr #0xc
- sub r4, r4, #0x1
- cmp r12, r4
- add r4, r3, lr
- ldr lr, [r2, #0x0]
- bne _020BD230
- ands r2, lr, #0xc0000000
- beq _020BD1CC
- ands r2, lr, #0x40000000
- andne r2, r12, #0x1
- addne r12, r2, r12, lsr #0x1
- andeq r2, r12, #0x3
- addeq r12, r2, r12, lsr #0x2
-_020BD1CC:
- ldr r2, [r3, #0x8]
- ands r2, r2, #0x2
- beq _020BD210
- ldr r2, _020BD2E8 ; =0x00000FFF
- ands r3, lr, #0x20000000
- and r3, r1, r2
- movne r1, r12, lsl #0x1
- ldrnesh r2, [r4, r1]
- ldrnesh r1, [r4, #0x0]
- add sp, sp, #0x4
- ldreq r2, [r4, r12, lsl #0x2]
- ldreq r1, [r4, #0x0]
- sub r1, r1, r2
- mul r1, r3, r1
- add r1, r2, r1, asr #0xc
- str r1, [r0, #0x0]
- ldmia sp!, {r4-r5,pc}
-_020BD210:
- ands r1, lr, #0x20000000
- movne r1, r12, lsl #0x1
- ldrnesh r1, [r4, r1]
- add sp, sp, #0x4
- strne r1, [r0, #0x0]
- ldreq r1, [r4, r12, lsl #0x2]
- streq r1, [r0, #0x0]
- ldmia sp!, {r4-r5,pc}
-_020BD230:
- ands r2, lr, #0xc0000000
- beq _020BD298
- ldr r2, _020BD2EC ; =0x1FFF0000
- ands r3, lr, #0x40000000
- and r2, lr, r2
- mov r2, r2, lsr #0x10
- beq _020BD270
- cmp r12, r2
- movcs r12, r2, lsr #0x1
- bhs _020BD298
- ldr r2, _020BD2F0 ; =0x00001FFF
- mov r12, r12, lsr #0x1
- and r5, r1, r2
- mov r2, #0x2
- mov r1, #0x1
- b _020BD2A8
-_020BD270:
- cmp r12, r2
- andcs r2, r12, #0x3
- addcs r12, r2, r12, lsr #0x2
- bhs _020BD298
- ldr r2, _020BD2F4 ; =0x00003FFF
- mov r12, r12, lsr #0x2
- and r5, r1, r2
- mov r2, #0x4
- mov r1, #0x2
- b _020BD2A8
-_020BD298:
- ldr r3, _020BD2E8 ; =0x00000FFF
- mov r2, #0x1
- and r5, r1, r3
- mov r1, #0x0
-_020BD2A8:
- ands r3, lr, #0x20000000
- addne r3, r4, r12, lsl #0x1
- movne lr, r12, lsl #0x1
- ldrnesh r12, [r4, lr]
- ldrnesh r3, [r3, #0x2]
- addeq r3, r4, r12, lsl #0x2
- ldreq r12, [r4, r12, lsl #0x2]
- ldreq r3, [r3, #0x4]
- mul r4, r12, r2
- sub r3, r3, r12
- mul r2, r5, r3
- add r2, r4, r2, asr #0xc
- mov r1, r2, asr r1
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BD2E8: .word 0x00000FFF
-_020BD2EC: .word 0x1FFF0000
-_020BD2F0: .word 0x00001FFF
-_020BD2F4: .word 0x00003FFF
-
- arm_func_start FUN_020BD2F8
-FUN_020BD2F8: ; 0x020BD2F8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r12, [r2, #0x4]
- ldr r2, [r2, #0x0]
- mov r1, r1, asr #0xc
- add r3, r3, r12
- ands r12, r2, #0xc0000000
- beq _020BD44C
- ldr ip, _020BD46C ; =0x1FFF0000
- ands lr, r2, #0x40000000
- and r12, r2, r12
- mov lr, r12, lsr #0x10
- beq _020BD354
- ands r12, r1, #0x1
- beq _020BD34C
- cmp r1, lr
- movhi r1, lr, lsr #0x1
- addhi r1, r1, #0x1
- bhi _020BD44C
- mov r12, r1, lsr #0x1
- b _020BD400
-_020BD34C:
- mov r1, r1, lsr #0x1
- b _020BD44C
-_020BD354:
- ands r12, r1, #0x3
- beq _020BD3F8
- cmp r1, lr
- addhi r1, r12, lr, lsr #0x2
- bhi _020BD44C
- ands r12, r1, #0x1
- beq _020BD3F0
- ands r12, r1, #0x2
- movne lr, r1, lsr #0x2
- addne r12, lr, #0x1
- moveq r12, r1, lsr #0x2
- addeq lr, r12, #0x1
- ands r1, r2, #0x20000000
- beq _020BD3B4
- mov r2, r12, lsl #0x1
- mov r1, lr, lsl #0x1
- ldrsh r12, [r3, r2]
- ldrsh r2, [r3, r1]
- mov r1, #0x3
- add sp, sp, #0x4
- smlabb r1, r12, r1, r2
- mov r1, r1, asr #0x2
- str r1, [r0, #0x0]
- ldmia sp!, {pc}
-_020BD3B4:
- ldr r12, [r3, r12, lsl #0x2]
- ldr r1, [r3, lr, lsl #0x2]
- mov r2, r12, asr #0x1f
- mov r2, r2, lsl #0x1
- mov r3, r12, lsl #0x1
- orr r2, r2, r12, lsr #0x1f
- adds r3, r3, r12
- adc r2, r2, r12, asr #0x1f
- adds r3, r3, r1
- adc r1, r2, r1, asr #0x1f
- mov r2, r3, lsr #0x2
- orr r2, r2, r1, lsl #0x1e
- str r2, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020BD3F0:
- mov r12, r1, lsr #0x2
- b _020BD400
-_020BD3F8:
- mov r1, r1, lsr #0x2
- b _020BD44C
-_020BD400:
- ands r1, r2, #0x20000000
- beq _020BD42C
- mov r2, r12, lsl #0x1
- add r1, r3, r12, lsl #0x1
- ldrsh r2, [r3, r2]
- ldrsh r1, [r1, #0x2]
- add sp, sp, #0x4
- add r1, r2, r1
- mov r1, r1, asr #0x1
- str r1, [r0, #0x0]
- ldmia sp!, {pc}
-_020BD42C:
- add r1, r3, r12, lsl #0x2
- ldr r2, [r3, r12, lsl #0x2]
- ldr r1, [r1, #0x4]
- mov r2, r2, asr #0x1
- add r1, r2, r1, asr #0x1
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-_020BD44C:
- ands r2, r2, #0x20000000
- movne r1, r1, lsl #0x1
- ldrnesh r1, [r3, r1]
- strne r1, [r0, #0x0]
- ldreq r1, [r3, r1, lsl #0x2]
- streq r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020BD46C: .word 0x1FFF0000
-
- arm_func_start FUN_020BD470
-FUN_020BD470: ; 0x020BD470
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x34
- mov r9, r0
- add r0, r9, r1, lsl #0x1
- ldrh r0, [r0, #0x14]
- mov r7, r3
- mov r8, r2
- ldr r5, [r9, r0]
- add r1, r9, r0
- ands r0, r5, #0x1
- movne r0, #0x7
- strne r0, [r7, #0x0]
- bne _020BD814
- ldr r0, _020BD848 ; =0x00000FFF
- add r4, r1, #0x4
- ands r0, r8, r0
- beq _020BD4C4
- ldr r0, [r9, #0x8]
- ands r0, r0, #0x1
- movne r6, #0x1
- bne _020BD4C8
-_020BD4C4:
- mov r6, #0x0
-_020BD4C8:
- mov r0, #0x0
- str r0, [r7, #0x0]
- ands r0, r5, #0x6
- bne _020BD5C0
- ands r0, r5, #0x8
- bne _020BD51C
- cmp r6, #0x0
- beq _020BD500
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x4c
- bl FUN_020BD188
- b _020BD514
-_020BD500:
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x4c
- bl FUN_020BD2F8
-_020BD514:
- add r4, r4, #0x8
- b _020BD524
-_020BD51C:
- ldr r0, [r4], #0x4
- str r0, [r7, #0x4c]
-_020BD524:
- ands r0, r5, #0x10
- bne _020BD568
- cmp r6, #0x0
- beq _020BD54C
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x50
- bl FUN_020BD188
- b _020BD560
-_020BD54C:
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x50
- bl FUN_020BD2F8
-_020BD560:
- add r4, r4, #0x8
- b _020BD570
-_020BD568:
- ldr r0, [r4], #0x4
- str r0, [r7, #0x50]
-_020BD570:
- ands r0, r5, #0x20
- bne _020BD5B4
- cmp r6, #0x0
- beq _020BD598
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x54
- bl FUN_020BD188
- b _020BD5AC
-_020BD598:
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x54
- bl FUN_020BD2F8
-_020BD5AC:
- add r4, r4, #0x8
- b _020BD5DC
-_020BD5B4:
- ldr r0, [r4], #0x4
- str r0, [r7, #0x54]
- b _020BD5DC
-_020BD5C0:
- ands r0, r5, #0x2
- ldrne r0, [r7, #0x0]
- orrne r0, r0, #0x4
- strne r0, [r7, #0x0]
- bne _020BD5DC
- mov r0, r7
- bl FUN_020BDA08
-_020BD5DC:
- ands r0, r5, #0xc0
- bne _020BD6A8
- ands r0, r5, #0x100
- bne _020BD628
- cmp r6, #0x0
- beq _020BD60C
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x28
- bl FUN_020BC698
- b _020BD620
-_020BD60C:
- mov r1, r8
- mov r2, r4
- mov r3, r9
- add r0, r7, #0x28
- bl FUN_020BC9D4
-_020BD620:
- add r4, r4, #0x8
- b _020BD6C4
-_020BD628:
- ldr r1, [r9, #0xc]
- ldr r2, [r9, #0x10]
- ldr r3, [r4, #0x0]
- add r0, r7, #0x28
- add r1, r9, r1
- add r2, r9, r2
- bl FUN_020BC500
- cmp r0, #0x0
- beq _020BD6A0
- ldr r12, [r7, #0x3c]
- ldr r0, [r7, #0x2c]
- ldr r3, [r7, #0x28]
- ldr r11, [r7, #0x38]
- ldr r1, [r7, #0x30]
- ldr r2, [r7, #0x34]
- mul r10, r0, r12
- mul lr, r1, r11
- sub r10, r10, lr
- mov r10, r10, asr #0xc
- mul lr, r1, r2
- mul r1, r3, r12
- sub r1, lr, r1
- mul r11, r3, r11
- mul r2, r0, r2
- sub r0, r11, r2
- str r10, [r7, #0x40]
- mov r1, r1, asr #0xc
- str r1, [r7, #0x44]
- mov r0, r0, asr #0xc
- str r0, [r7, #0x48]
-_020BD6A0:
- add r4, r4, #0x4
- b _020BD6C4
-_020BD6A8:
- ands r0, r5, #0x40
- ldrne r0, [r7, #0x0]
- orrne r0, r0, #0x2
- strne r0, [r7, #0x0]
- bne _020BD6C4
- mov r0, r7
- bl FUN_020BD850
-_020BD6C4:
- ands r0, r5, #0x600
- bne _020BD7F0
- ands r0, r5, #0x800
- bne _020BD71C
- cmp r6, #0x0
- beq _020BD6F4
- add r0, sp, #0x0
- mov r1, r8
- mov r2, r4
- mov r3, r9
- bl FUN_020BCDC4
- b _020BD708
-_020BD6F4:
- add r0, sp, #0x0
- mov r1, r8
- mov r2, r4
- mov r3, r9
- bl FUN_020BCF70
-_020BD708:
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x18]
- str r0, [sp, #0x24]
- b _020BD72C
-_020BD71C:
- ldr r0, [r4, #0x0]
- str r0, [sp, #0x18]
- ldr r0, [r4, #0x4]
- str r0, [sp, #0x24]
-_020BD72C:
- ands r0, r5, #0x1000
- bne _020BD77C
- cmp r6, #0x0
- beq _020BD754
- add r0, sp, #0x8
- mov r1, r8
- mov r3, r9
- add r2, r4, #0x8
- bl FUN_020BCDC4
- b _020BD768
-_020BD754:
- add r0, sp, #0x8
- mov r1, r8
- mov r3, r9
- add r2, r4, #0x8
- bl FUN_020BCF70
-_020BD768:
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- str r1, [sp, #0x1c]
- str r0, [sp, #0x28]
- b _020BD78C
-_020BD77C:
- ldr r0, [r4, #0x8]
- str r0, [sp, #0x1c]
- ldr r0, [r4, #0xc]
- str r0, [sp, #0x28]
-_020BD78C:
- ands r0, r5, #0x2000
- bne _020BD7DC
- cmp r6, #0x0
- beq _020BD7B4
- add r0, sp, #0x10
- mov r1, r8
- mov r3, r9
- add r2, r4, #0x10
- bl FUN_020BCDC4
- b _020BD7C8
-_020BD7B4:
- add r0, sp, #0x10
- mov r1, r8
- mov r3, r9
- add r2, r4, #0x10
- bl FUN_020BCF70
-_020BD7C8:
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x14]
- str r1, [sp, #0x20]
- str r0, [sp, #0x2c]
- b _020BD814
-_020BD7DC:
- ldr r0, [r4, #0x10]
- str r0, [sp, #0x20]
- ldr r0, [r4, #0x14]
- str r0, [sp, #0x2c]
- b _020BD814
-_020BD7F0:
- ands r0, r5, #0x200
- ldrne r0, [r7, #0x0]
- orrne r0, r0, #0x1
- strne r0, [r7, #0x0]
- bne _020BD814
- mov r0, r7
- bl FUN_020BD9A4
- add sp, sp, #0x34
- ldmia sp!, {r4-r11,pc}
-_020BD814:
- ldr r0, [r7, #0x0]
- add r1, sp, #0x18
- ands r0, r0, #0x1
- ldr r0, _020BD84C ; =UNK_021CEF7C
- movne r3, #0x4
- ldr r4, [r0, #0x0]
- moveq r3, #0x0
- ldr r2, [r4, #0x0]
- ldr r4, [r4, #0xe8]
- mov r0, r7
- blx r4
- add sp, sp, #0x34
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020BD848: .word 0x00000FFF
-_020BD84C: .word UNK_021CEF7C
-
- arm_func_start FUN_020BD850
-FUN_020BD850: ; 0x020BD850
- stmdb sp!, {r4-r8,lr}
- ldr r1, _020BD990 ; =UNK_021CEF7C
- mov r8, r0
- ldr r0, [r1, #0x0]
- ldr r3, [r0, #0xd4]
- ldr r0, [r0, #0x0]
- ldrh r2, [r3, #0x6]
- ldrb r0, [r0, #0x1]
- ldrh r1, [r3, r2]
- add r2, r3, r2
- mla r0, r1, r0, r2
- ldr r0, [r0, #0x4]
- ldrh r2, [r3, r0]
- add r4, r3, r0
- add r1, r4, #0x4
- ands r0, r2, #0x1
- addeq r1, r1, #0xc
- ands r0, r2, #0x2
- bne _020BD980
- ands r0, r2, #0x8
- beq _020BD934
- and r2, r2, #0xf0
- add r0, r8, #0x28
- mov r5, r2, asr #0x4
- ldrsh r7, [r1, #0x0]
- ldrsh r6, [r1, #0x2]
- bl MI_Zero36B
- ldrh r0, [r4, #0x0]
- add r1, r8, r5, lsl #0x2
- ands r0, r0, #0x100
- movne r0, #0x1000
- rsbne r2, r0, #0x0
- moveq r2, #0x1000
- ldr r0, _020BD994 ; =UNK_020FFA14
- str r2, [r1, #0x28]
- ldrb r1, [r0, r5, lsl #0x2]
- ldr r0, _020BD998 ; =UNK_020FFA15
- add r1, r8, r1, lsl #0x2
- str r7, [r1, #0x28]
- ldrb r0, [r0, r5, lsl #0x2]
- add r0, r8, r0, lsl #0x2
- str r6, [r0, #0x28]
- ldrh r0, [r4, #0x0]
- ands r0, r0, #0x200
- ldr r0, _020BD99C ; =UNK_020FFA16
- rsbne r6, r6, #0x0
- ldrb r0, [r0, r5, lsl #0x2]
- add r0, r8, r0, lsl #0x2
- str r6, [r0, #0x28]
- ldrh r0, [r4, #0x0]
- ands r0, r0, #0x400
- ldr r0, _020BD9A0 ; =UNK_020FFA17
- rsbne r7, r7, #0x0
- ldrb r0, [r0, r5, lsl #0x2]
- add r0, r8, r0, lsl #0x2
- str r7, [r0, #0x28]
- ldmia sp!, {r4-r8,pc}
-_020BD934:
- ldrsh r0, [r4, #0x2]
- str r0, [r8, #0x28]
- ldrsh r0, [r1, #0x0]
- str r0, [r8, #0x2c]
- ldrsh r0, [r1, #0x2]
- str r0, [r8, #0x30]
- ldrsh r0, [r1, #0x4]
- str r0, [r8, #0x34]
- ldrsh r0, [r1, #0x6]
- str r0, [r8, #0x38]
- ldrsh r0, [r1, #0x8]
- str r0, [r8, #0x3c]
- ldrsh r0, [r1, #0xa]
- str r0, [r8, #0x40]
- ldrsh r0, [r1, #0xc]
- str r0, [r8, #0x44]
- ldrsh r0, [r1, #0xe]
- str r0, [r8, #0x48]
- ldmia sp!, {r4-r8,pc}
-_020BD980:
- ldr r0, [r8, #0x0]
- orr r0, r0, #0x2
- str r0, [r8, #0x0]
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020BD990: .word UNK_021CEF7C
-_020BD994: .word UNK_020FFA14
-_020BD998: .word UNK_020FFA15
-_020BD99C: .word UNK_020FFA16
-_020BD9A0: .word UNK_020FFA17
-
- arm_func_start FUN_020BD9A4
-FUN_020BD9A4: ; 0x020BD9A4
- stmdb sp!, {r4,lr}
- ldr r1, _020BDA04 ; =UNK_021CEF7C
- ldr r12, [r1, #0x0]
- ldr r4, [r12, #0xd4]
- ldr r2, [r12, #0x0]
- ldrh lr, [r4, #0x6]
- ldrb r1, [r2, #0x1]
- ldrh r3, [r4, lr]
- add lr, r4, lr
- mla r1, r3, r1, lr
- ldr r1, [r1, #0x4]
- ldrh r3, [r4, r1]
- add r1, r4, r1
- add r1, r1, #0x4
- ands lr, r3, #0x1
- addeq r1, r1, #0xc
- ands lr, r3, #0x2
- bne _020BD9F8
- ands lr, r3, #0x8
- addne r1, r1, #0x4
- addeq r1, r1, #0x10
-_020BD9F8:
- ldr r12, [r12, #0xe8]
- blx r12
- ldmia sp!, {r4,pc}
- .balign 4
-_020BDA04: .word UNK_021CEF7C
-
- arm_func_start FUN_020BDA08
-FUN_020BDA08: ; 0x020BDA08
- ldr r1, _020BDA6C ; =UNK_021CEF7C
- ldr r1, [r1, #0x0]
- ldr r12, [r1, #0xd4]
- ldr r1, [r1, #0x0]
- ldrh r3, [r12, #0x6]
- ldrb r1, [r1, #0x1]
- ldrh r2, [r12, r3]
- add r3, r12, r3
- mla r1, r2, r1, r3
- ldr r2, [r1, #0x4]
- ldrh r1, [r12, r2]
- add r2, r12, r2
- ands r1, r1, #0x1
- ldrne r1, [r0, #0x0]
- orrne r1, r1, #0x4
- strne r1, [r0, #0x0]
- bxne lr
- ldr r1, [r2, #0x4]
- add r2, r2, #0x4
- str r1, [r0, #0x4c]
- ldr r1, [r2, #0x4]
- str r1, [r0, #0x50]
- ldr r1, [r2, #0x8]
- str r1, [r0, #0x54]
- bx lr
- .balign 4
-_020BDA6C: .word UNK_021CEF7C
-
- arm_func_start FUN_020BDA70
-FUN_020BDA70: ; 0x020BDA70
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r3, r0
- ldr r0, [r1, #0x8]
- ldr r12, [r1, #0x0]
- ldrh r1, [r0, #0x4]
- mov r1, r1, lsl #0xc
- cmp r12, r1
- subge r12, r1, #0x1
- bge _020BDAA0
- cmp r12, #0x0
- movlt r12, #0x0
-_020BDAA0:
- mov r1, r2
- mov r2, r12
- bl FUN_020BD470
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BDAB4
-FUN_020BDAB4: ; 0x020BDAB4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- mov r4, r1
- ldr r0, _020BDB3C ; =UNK_0210659C
- str r4, [r5, #0x8]
- ldr r0, [r0, #0x0]
- add r1, r5, #0x1a
- str r0, [r5, #0xc]
- ldrb r2, [r2, #0x17]
- mov r0, #0x0
- strb r2, [r5, #0x19]
- ldrb r2, [r5, #0x19]
- mov r2, r2, lsl #0x1
- bl MIi_CpuClear16
- ldrh r0, [r4, #0x6]
- add r2, r4, #0x14
- mov r3, #0x0
- cmp r0, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r5,pc}
-_020BDB08:
- mov r0, r3, lsl #0x1
- ldrh r1, [r2, r0]
- add r0, r5, r3, lsl #0x1
- add r3, r3, #0x1
- ldr r1, [r4, r1]
- mov r1, r1, lsr #0x18
- orr r1, r1, #0x100
- strh r1, [r0, #0x1a]
- ldrh r0, [r4, #0x6]
- cmp r3, r0
- blo _020BDB08
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BDB3C: .word UNK_0210659C
-
- arm_func_start FUN_020BDB40
-FUN_020BDB40: ; 0x020BDB40
- stmdb sp!, {r4-r8,lr}
- ldr r7, [r1, #0x8]
- mov r2, r2, lsl #0x10
- ldrh r4, [r7, #0xe]
- add r5, r7, #0x8
- ldr r6, [r1, #0x0]
- ldrh r3, [r5, r4]
- mov r1, r2, lsr #0x10
- add r2, r5, r4
- mul r4, r3, r1
- add r3, r2, #0x4
- mov r6, r6, asr #0xc
- mov r8, r0
- ldr r1, [r3, r4]
- mov r0, r7
- mov r2, r6
- add r5, r3, r4
- bl FUN_020BDDAC
- mov r4, r0
- ldr r1, [r5, #0x4]
- mov r0, r7
- mov r2, r6
- bl FUN_020BDDAC
- ldr r1, [r8, #0x4]
- mov r2, r6
- and r1, r1, #0x8000
- orr r1, r1, r4
- orr r0, r1, r0, lsl #0x10
- str r0, [r8, #0x4]
- mov r0, r7
- ldr r1, [r5, #0xc]
- bl FUN_020BDDAC
- mov r4, r0
- mov r0, r7
- ldr r1, [r5, #0x8]
- mov r2, r6
- bl FUN_020BDDAC
- mov r2, r6
- ldr r1, [r8, #0x8]
- and r1, r1, #0x8000
- orr r0, r1, r0
- orr r0, r0, r4, lsl #0x10
- str r0, [r8, #0x8]
- mov r0, r7
- ldr r1, [r5, #0x10]
- bl FUN_020BDCB8
- ldr r1, [r8, #0xc]
- bic r1, r1, #0x1f0000
- orr r0, r1, r0, lsl #0x10
- str r0, [r8, #0xc]
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start FUN_020BDC0C
-FUN_020BDC0C: ; 0x020BDC0C
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- ldr r3, _020BDCB4 ; =UNK_021065A8
- ldr r4, [r2, #0x8]
- ldr r3, [r3, #0x0]
- mov r9, r0
- str r3, [r9, #0xc]
- ldrb r0, [r2, #0x18]
- mov r8, r1
- add r4, r2, r4
- strb r0, [r9, #0x19]
- ldrb r2, [r9, #0x19]
- add r1, r9, #0x1a
- mov r0, #0x0
- mov r2, r2, lsl #0x1
- bl MIi_CpuClear16
- ldrb r0, [r8, #0x9]
- mov r7, #0x0
- cmp r0, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r9,pc}
- mov r6, r7
- add r5, r8, #0x8
- add r4, r4, #0x4
-_020BDC6C:
- ldrh r1, [r8, #0xe]
- mov r0, r4
- add r2, r5, r1
- ldrh r1, [r2, #0x2]
- add r1, r2, r1
- add r1, r1, r6
- bl FUN_020BC14C
- cmp r0, #0x0
- orrge r1, r7, #0x100
- addge r0, r9, r0, lsl #0x1
- strgeh r1, [r0, #0x1a]
- ldrb r0, [r8, #0x9]
- add r7, r7, #0x1
- add r6, r6, #0x10
- cmp r7, r0
- blo _020BDC6C
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020BDCB4: .word UNK_021065A8
-
- arm_func_start FUN_020BDCB8
-FUN_020BDCB8: ; 0x020BDCB8
- ands r3, r1, #0x20000000
- movne r0, r1, lsl #0x10
- movne r0, r0, lsr #0x10
- bxne lr
- ldr r3, _020BDDA4 ; =0x0000FFFF
- ands r12, r1, #0xc0000000
- and r3, r1, r3
- add r0, r0, r3
- ldreqb r0, [r0, r2]
- bxeq lr
- ldr r3, _020BDDA8 ; =0x1FFF0000
- ands r12, r1, #0x40000000
- and r1, r1, r3
- mov r3, r1, lsr #0x10
- beq _020BDD30
- ands r1, r2, #0x1
- beq _020BDD28
- cmp r2, r3
- addhi r0, r0, r3, lsr #0x1
- ldrhib r0, [r0, #0x1]
- bxhi lr
- add r1, r0, r2, lsr #0x1
- ldrb r2, [r0, r2, lsr #0x1]
- ldrb r0, [r1, #0x1]
- add r0, r2, r0
- mov r0, r0, lsl #0xf
- mov r0, r0, lsr #0x10
- bx lr
-_020BDD28:
- ldrb r0, [r0, r2, lsr #0x1]
- bx lr
-_020BDD30:
- ands r1, r2, #0x3
- beq _020BDD9C
- cmp r2, r3
- addhi r0, r0, r3, lsr #0x2
- ldrhib r0, [r1, r0]
- bxhi lr
- ands r1, r2, #0x1
- beq _020BDD80
- ands r1, r2, #0x2
- movne r1, r2, lsr #0x2
- addne r2, r1, #0x1
- moveq r2, r2, lsr #0x2
- addeq r1, r2, #0x1
- ldrb r2, [r0, r2]
- ldrb r1, [r0, r1]
- mov r0, #0x3
- mla r0, r2, r0, r1
- mov r0, r0, lsl #0xe
- mov r0, r0, lsr #0x10
- bx lr
-_020BDD80:
- add r1, r0, r2, lsr #0x2
- ldrb r2, [r0, r2, lsr #0x2]
- ldrb r0, [r1, #0x1]
- add r0, r2, r0
- mov r0, r0, lsl #0xf
- mov r0, r0, lsr #0x10
- bx lr
-_020BDD9C:
- ldrb r0, [r0, r2, lsr #0x2]
- bx lr
- .balign 4
-_020BDDA4: .word 0x0000FFFF
-_020BDDA8: .word 0x1FFF0000
-
- arm_func_start FUN_020BDDAC
-FUN_020BDDAC: ; 0x020BDDAC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ands r3, r1, #0x20000000
- movne r0, r1, lsl #0x10
- addne sp, sp, #0x4
- movne r0, r0, lsr #0x10
- ldmneia sp!, {pc}
- ldr r3, _020BDF2C ; =0x0000FFFF
- ands r12, r1, #0xc0000000
- and r3, r1, r3
- add r0, r0, r3
- moveq r1, r2, lsl #0x1
- addeq sp, sp, #0x4
- ldreqh r0, [r0, r1]
- ldmeqia sp!, {pc}
- ldr r3, _020BDF30 ; =0x1FFF0000
- ands r12, r1, #0x40000000
- and r1, r1, r3
- mov r3, r1, lsr #0x10
- beq _020BDE34
- ands r1, r2, #0x1
- beq _020BDE24
- cmp r2, r3
- bichi r1, r3, #0x1
- addhi r0, r0, r1
- addhi sp, sp, #0x4
- ldrhih r0, [r0, #0x2]
- ldmhiia sp!, {pc}
- mov r1, r2, lsr #0x1
- b _020BDEE0
-_020BDE24:
- bic r1, r2, #0x1
- add sp, sp, #0x4
- ldrh r0, [r0, r1]
- ldmia sp!, {pc}
-_020BDE34:
- ands r1, r2, #0x3
- beq _020BDECC
- cmp r2, r3
- movhi r2, r3, lsr #0x2
- movhi r1, r1, lsl #0x1
- addhi r0, r0, r2, lsl #0x1
- addhi sp, sp, #0x4
- ldrhih r0, [r1, r0]
- ldmhiia sp!, {pc}
- ands r1, r2, #0x1
- beq _020BDEC4
- ands r1, r2, #0x2
- movne r1, r2, lsr #0x2
- addne r2, r1, #0x1
- moveq r2, r2, lsr #0x2
- addeq r1, r2, #0x1
- mov r2, r2, lsl #0x1
- mov r1, r1, lsl #0x1
- ldrh r12, [r0, r2]
- ldrh lr, [r0, r1]
- ldr r0, _020BDF34 ; =0x00007C1F
- and r3, r12, #0x3e0
- and r2, lr, #0x3e0
- mov r1, #0x3
- mla r2, r3, r1, r2
- and r12, r12, r0
- and r3, lr, r0
- mla r1, r12, r1, r3
- mov r2, r2, lsr #0x2
- and r1, r0, r1, lsr #0x2
- and r0, r2, #0x3e0
- orr r0, r1, r0
- mov r0, r0, lsl #0x10
- add sp, sp, #0x4
- mov r0, r0, lsr #0x10
- ldmia sp!, {pc}
-_020BDEC4:
- mov r1, r2, lsr #0x2
- b _020BDEE0
-_020BDECC:
- mov r1, r2, lsr #0x2
- mov r1, r1, lsl #0x1
- add sp, sp, #0x4
- ldrh r0, [r0, r1]
- ldmia sp!, {pc}
-_020BDEE0:
- mov r2, r1, lsl #0x1
- add r1, r0, r1, lsl #0x1
- ldrh r3, [r0, r2]
- ldrh r12, [r1, #0x2]
- ldr r0, _020BDF34 ; =0x00007C1F
- and r2, r3, #0x3e0
- and r1, r12, #0x3e0
- add r1, r2, r1
- mov r1, r1, lsr #0x1
- and r3, r3, r0
- and r2, r12, r0
- add r2, r3, r2
- and r2, r0, r2, lsr #0x1
- and r0, r1, #0x3e0
- orr r0, r2, r0
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- add sp, sp, #0x4
- ldmia sp!, {pc}
- .balign 4
-_020BDF2C: .word 0x0000FFFF
-_020BDF30: .word 0x1FFF0000
-_020BDF34: .word 0x00007C1F
-
- arm_func_start FUN_020BDF38
-FUN_020BDF38: ; 0x020BDF38
- stmdb sp!, {r4,lr}
- ldr r12, [r1, #0x0]
- mov r4, r0
- mov r2, r2, lsl #0x10
- ldr r0, [r1, #0x8]
- mov r1, r2, lsr #0x10
- mov r3, r4
- mov r2, r12, asr #0xc
- bl FUN_020BE030
- ldr r0, [r4, #0x10]
- bic r0, r0, #0xc0000000
- str r0, [r4, #0x10]
- ldr r0, [r4, #0x10]
- orr r0, r0, #0x40000000
- str r0, [r4, #0x10]
- ldr r0, [r4, #0x0]
- orr r0, r0, #0x8
- str r0, [r4, #0x0]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BDF84
-FUN_020BDF84: ; 0x020BDF84
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- ldr r3, _020BE02C ; =UNK_021065A0
- ldr r4, [r2, #0x8]
- ldr r3, [r3, #0x0]
- mov r9, r0
- str r3, [r9, #0xc]
- ldrb r0, [r2, #0x18]
- mov r8, r1
- add r4, r2, r4
- strb r0, [r9, #0x19]
- ldrb r2, [r9, #0x19]
- add r1, r9, #0x1a
- mov r0, #0x0
- mov r2, r2, lsl #0x1
- bl MIi_CpuClear16
- ldrb r0, [r8, #0x9]
- mov r7, #0x0
- cmp r0, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r9,pc}
- mov r6, r7
- add r5, r8, #0x8
- add r4, r4, #0x4
-_020BDFE4:
- ldrh r1, [r8, #0xe]
- mov r0, r4
- add r2, r5, r1
- ldrh r1, [r2, #0x2]
- add r1, r2, r1
- add r1, r1, r6
- bl FUN_020BC14C
- cmp r0, #0x0
- orrge r1, r7, #0x100
- addge r0, r9, r0, lsl #0x1
- strgeh r1, [r0, #0x1a]
- ldrb r0, [r8, #0x9]
- add r7, r7, #0x1
- add r6, r6, #0x10
- cmp r7, r0
- blo _020BDFE4
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020BE02C: .word UNK_021065A0
-
- arm_func_start FUN_020BE030
-FUN_020BE030: ; 0x020BE030
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r8, r0
- ldrh r4, [r8, #0xe]
- add r5, r8, #0x8
- mov r6, r3
- ldrh r3, [r5, r4]
- add r4, r5, r4
- add r4, r4, #0x4
- mla r5, r3, r1, r4
- mov r7, r2
- ldr r1, [r5, #0x18]
- ldr r2, [r5, #0x1c]
- mov r3, r7
- ldr r4, [r6, #0x0]
- bl FUN_020BE238
- mov r9, r0
- ldr r1, [r5, #0x20]
- mov r0, r8
- ldr r2, [r5, #0x24]
- mov r3, r7
- bl FUN_020BE238
- cmp r9, #0x0
- bne _020BE09C
- cmp r0, #0x0
- orreq r4, r4, #0x4
- beq _020BE0A8
-_020BE09C:
- str r9, [r6, #0x24]
- str r0, [r6, #0x28]
- bic r4, r4, #0x4
-_020BE0A8:
- ldr r1, [r5, #0x10]
- ldr r2, [r5, #0x14]
- mov r0, r8
- mov r3, r7
- bl FUN_020BE12C
- cmp r0, #0x10000000
- strneh r0, [r6, #0x20]
- movne r0, r0, lsr #0x10
- strneh r0, [r6, #0x22]
- orreq r4, r4, #0x2
- ldr r1, [r5, #0x0]
- ldr r2, [r5, #0x4]
- mov r0, r8
- mov r3, r7
- bicne r4, r4, #0x2
- bl FUN_020BE238
- mov r9, r0
- ldr r1, [r5, #0x8]
- ldr r2, [r5, #0xc]
- mov r0, r8
- mov r3, r7
- bl FUN_020BE238
- cmp r9, #0x1000
- bne _020BE114
- cmp r0, #0x1000
- orreq r4, r4, #0x1
- beq _020BE120
-_020BE114:
- str r9, [r6, #0x18]
- str r0, [r6, #0x1c]
- bic r4, r4, #0x1
-_020BE120:
- str r4, [r6, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
-
- arm_func_start FUN_020BE12C
-FUN_020BE12C: ; 0x020BE12C
- ands r12, r1, #0x20000000
- movne r0, r2
- bxne lr
- add r0, r0, r2
- ands r2, r1, #0xc0000000
- beq _020BE1F8
- ldr r2, _020BE234 ; =0x0000FFFF
- ands r12, r1, #0x40000000
- and r2, r1, r2
- beq _020BE17C
- ands r1, r3, #0x1
- beq _020BE174
- cmp r3, r2
- movhi r1, r2, lsr #0x1
- addhi r3, r1, #0x1
- bhi _020BE1F8
- mov r2, r3, lsr #0x1
- b _020BE200
-_020BE174:
- mov r3, r3, lsr #0x1
- b _020BE1F8
-_020BE17C:
- ands r1, r3, #0x3
- beq _020BE1F4
- cmp r3, r2
- addhi r3, r1, r2, lsr #0x2
- bhi _020BE1F8
- ands r1, r3, #0x1
- beq _020BE1EC
- ands r1, r3, #0x2
- movne r1, r3, lsr #0x2
- addne r2, r1, #0x1
- moveq r2, r3, lsr #0x2
- addeq r1, r2, #0x1
- mov r12, r2, lsl #0x2
- add r3, r0, r2, lsl #0x2
- mov r2, r1, lsl #0x2
- add r1, r0, r1, lsl #0x2
- ldrsh r12, [r0, r12]
- ldrsh r2, [r0, r2]
- mov r0, #0x3
- ldrsh r3, [r3, #0x2]
- ldrsh r1, [r1, #0x2]
- mla r2, r12, r0, r2
- mla r1, r3, r0, r1
- ldr r0, _020BE234 ; =0x0000FFFF
- mov r1, r1, asr #0x2
- and r0, r0, r2, asr #0x2
- orr r0, r0, r1, lsl #0x10
- bx lr
-_020BE1EC:
- mov r2, r3, lsr #0x2
- b _020BE200
-_020BE1F4:
- mov r3, r3, lsr #0x2
-_020BE1F8:
- ldr r0, [r0, r3, lsl #0x2]
- bx lr
-_020BE200:
- add r1, r0, r2, lsl #0x2
- mov r2, r2, lsl #0x2
- ldrsh r12, [r0, r2]
- ldrsh r3, [r1, #0x4]
- ldrsh r2, [r1, #0x2]
- ldrsh r1, [r1, #0x6]
- ldr r0, _020BE234 ; =0x0000FFFF
- add r3, r12, r3
- add r1, r2, r1
- and r2, r0, r3, asr #0x1
- mov r0, r1, asr #0x1
- orr r0, r2, r0, lsl #0x10
- bx lr
- .balign 4
-_020BE234: .word 0x0000FFFF
-
- arm_func_start FUN_020BE238
-FUN_020BE238:
- ands r12, r1, #0x20000000
- movne r0, r2
- bxne lr
- add r0, r0, r2
- ands r2, r1, #0xc0000000
- beq _020BE2F0
- ldr r2, _020BE330 ; =0x0000FFFF
- ands r12, r1, #0x40000000
- and r12, r1, r2
- beq _020BE288
- ands r2, r3, #0x1
- beq _020BE280
- cmp r3, r12
- movhi r2, r12, lsr #0x1
- addhi r3, r2, #0x1
- bhi _020BE2F0
- mov r3, r3, lsr #0x1
- b _020BE304
-_020BE280:
- mov r3, r3, lsr #0x1
- b _020BE2F0
-_020BE288:
- ands r2, r3, #0x3
- beq _020BE2EC
- cmp r3, r12
- addhi r3, r2, r12, lsr #0x2
- bhi _020BE2F0
- ands r2, r3, #0x1
- beq _020BE2E4
- ands r2, r3, #0x2
- movne r3, r3, lsr #0x2
- addne r2, r3, #0x1
- moveq r2, r3, lsr #0x2
- addeq r3, r2, #0x1
- ands r1, r1, #0x10000000
- movne r2, r2, lsl #0x1
- movne r1, r3, lsl #0x1
- ldrnesh r2, [r0, r2]
- ldrnesh r1, [r0, r1]
- ldreq r2, [r0, r2, lsl #0x2]
- ldreq r1, [r0, r3, lsl #0x2]
- mov r0, #0x3
- mla r0, r2, r0, r1
- mov r0, r0, asr #0x2
- bx lr
-_020BE2E4:
- mov r3, r3, lsr #0x2
- b _020BE304
-_020BE2EC:
- mov r3, r3, lsr #0x2
-_020BE2F0:
- ands r1, r1, #0x10000000
- movne r1, r3, lsl #0x1
- ldrnesh r0, [r0, r1]
- ldreq r0, [r0, r3, lsl #0x2]
- bx lr
-_020BE304:
- ands r1, r1, #0x10000000
- movne r2, r3, lsl #0x1
- addne r1, r0, r3, lsl #0x1
- ldrnesh r2, [r0, r2]
- ldrnesh r0, [r1, #0x2]
- addeq r1, r0, r3, lsl #0x2
- ldreq r2, [r0, r3, lsl #0x2]
- ldreq r0, [r1, #0x4]
- add r0, r2, r0
- mov r0, r0, asr #0x1
- bx lr
- .balign 4
-_020BE330: .word 0x0000FFFF
-
- arm_func_start FUN_020BE334
-FUN_020BE334: ; 0x020BE334
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r1
- ldr r3, [r6, #0x0]
- ldr r5, [r6, #0x8]
- mov r1, r2, lsl #0x10
- mov r2, r3, lsl #0x4
- mov r7, r0
- mov r0, r5
- mov r1, r1, lsr #0x10
- mov r2, r2, lsr #0x10
- bl FUN_020BC42C
- mov r4, r0
- ldrb r1, [r4, #0x2]
- mov r0, r5
- bl FUN_020BC4B8
- mov r1, r0
- ldr r0, [r6, #0x14]
- mov r2, r7
- bl FUN_020BE408
- ldrb r1, [r4, #0x3]
- cmp r1, #0xff
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r7,pc}
- mov r0, r5
- bl FUN_020BC4A8
- mov r1, r0
- ldr r0, [r6, #0x14]
- mov r2, r7
- bl FUN_020BE3B4
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BE3B4
-FUN_020BE3B4: ; 0x020BE3B4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldrh r0, [r5, #0x34]
- mov r4, r2
- add r0, r5, r0
- bl FUN_020BC2A0
- ldr r1, [r5, #0x2c]
- ldrh r2, [r0, #0x2]
- mov r1, r1, lsl #0x10
- mov r3, r1, lsr #0x10
- ands r1, r2, #0x1
- ldrh r0, [r0, #0x0]
- moveq r1, r3, lsl #0xf
- moveq r3, r1, lsr #0x10
- moveq r0, r0, lsl #0xf
- moveq r0, r0, lsr #0x10
- add r0, r0, r3
- str r0, [r4, #0x14]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020BE408
-FUN_020BE408: ; 0x020BE408
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- add r0, r5, #0x3c
- mov r4, r2
- bl FUN_020BC2A0
- ldr r1, [r0, #0x0]
- ldr r3, [r4, #0x10]
- and r1, r1, #0x1c000000
- cmp r1, #0x14000000
- ldrne r2, [r5, #0x8]
- ldrne r1, _020BE4E0 ; =0x0000FFFF
- andne r5, r2, r1
- ldreq r2, [r5, #0x18]
- ldreq r1, _020BE4E0 ; =0x0000FFFF
- andeq r5, r2, r1
- ldr r1, _020BE4E4 ; =0xC00F0000
- ldr r2, _020BE4E8 ; =0x000007FF
- and r1, r3, r1
- str r1, [r4, #0x10]
- ldr r1, [r0, #0x0]
- ldr r3, [r4, #0x10]
- add r1, r1, r5
- orr r1, r3, r1
- str r1, [r4, #0x10]
- ldr r3, [r0, #0x4]
- ldr r1, _020BE4EC ; =0x003FF800
- and r3, r3, r2
- strh r3, [r4, #0x2c]
- ldr r3, [r0, #0x4]
- and r1, r3, r1
- mov r1, r1, lsr #0xb
- strh r1, [r4, #0x2e]
- ldr r3, [r0, #0x4]
- ldrh r1, [r4, #0x2c]
- and r0, r3, r2
- and r5, r2, r3, lsr #0xb
- cmp r0, r1
- moveq r0, #0x1000
- beq _020BE4B4
- mov r0, r0, lsl #0xc
- mov r1, r1, lsl #0xc
- bl FX_Div
-_020BE4B4:
- str r0, [r4, #0x30]
- ldrh r1, [r4, #0x2e]
- cmp r5, r1
- moveq r0, #0x1000
- beq _020BE4D4
- mov r0, r5, lsl #0xc
- mov r1, r1, lsl #0xc
- bl FX_Div
-_020BE4D4:
- str r0, [r4, #0x34]
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020BE4E0: .word 0x0000FFFF
-_020BE4E4: .word 0xC00F0000
-_020BE4E8: .word 0x000007FF
-_020BE4EC: .word 0x003FF800
-
- arm_func_start FUN_020BE4F0
-FUN_020BE4F0: ; 0x020BE4F0
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- ldr r3, _020BE59C ; =UNK_021065A4
- ldr r4, [r2, #0x8]
- ldr r3, [r3, #0x0]
- mov r9, r0
- str r3, [r9, #0xc]
- ldrb r0, [r2, #0x18]
- mov r8, r1
- add r4, r2, r4
- strb r0, [r9, #0x19]
- str r8, [r9, #0x8]
- ldrb r2, [r9, #0x19]
- add r1, r9, #0x1a
- mov r0, #0x0
- mov r2, r2, lsl #0x1
- bl MIi_CpuClear16
- ldrb r0, [r8, #0xd]
- mov r7, #0x0
- cmp r0, #0x0
- addls sp, sp, #0x4
- ldmlsia sp!, {r4-r9,pc}
- mov r6, r7
- add r5, r8, #0xc
- add r4, r4, #0x4
-_020BE554:
- ldrh r1, [r8, #0x12]
- mov r0, r4
- add r2, r5, r1
- ldrh r1, [r2, #0x2]
- add r1, r2, r1
- add r1, r1, r6
- bl FUN_020BC14C
- cmp r0, #0x0
- orrge r1, r7, #0x100
- addge r0, r9, r0, lsl #0x1
- strgeh r1, [r0, #0x1a]
- ldrb r0, [r8, #0xd]
- add r7, r7, #0x1
- add r6, r6, #0x10
- cmp r7, r0
- blo _020BE554
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,pc}
- .balign 4
-_020BE59C: .word UNK_021065A4
-
- arm_func_start FUN_020BE5A0
-FUN_020BE5A0: ; 0x020BE5A0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr lr, [r1, #0x8]
- ldr r3, [r1, #0x0]
- ldrh r1, [lr, #0x6]
- mov r12, r3, asr #0xc
- mov r3, #0x1
- mla r2, r12, r1, r2
- mov r1, r2, lsr #0x5
- add r1, lr, r1, lsl #0x2
- ldr r1, [r1, #0xc]
- and r2, r2, #0x1f
- and r1, r1, r3, lsl r2
- str r1, [r0, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BE5E0
-FUN_020BE5E0: ; 0x020BE5E0
- ldr r3, _020BE628 ; =UNK_02106598
- mov r12, #0x0
- ldr r3, [r3, #0x0]
- str r3, [r0, #0xc]
- ldrb r2, [r2, #0x17]
- strb r2, [r0, #0x19]
- str r1, [r0, #0x8]
- ldrb r1, [r0, #0x19]
- cmp r1, #0x0
- bxls lr
-_020BE608:
- orr r2, r12, #0x100
- add r1, r0, r12, lsl #0x1
- strh r2, [r1, #0x1a]
- ldrb r1, [r0, #0x19]
- add r12, r12, #0x1
- cmp r12, r1
- blo _020BE608
- bx lr
- .balign 4
-_020BE628: .word UNK_02106598
-
- arm_func_start FUN_020BE62C
-FUN_020BE62C: ; 0x020BE62C
- ands r2, r3, #0x4
- ldrne r1, [r0, #0x0]
- orrne r1, r1, #0x1
- strne r1, [r0, #0x0]
- bne _020BE658
-
- arm_func_start FUN_020BE640
-FUN_020BE640: ; 0x020BE640
- ldr r2, [r1, #0x0]
- str r2, [r0, #0x4]
- ldr r2, [r1, #0x4]
- str r2, [r0, #0x8]
- ldr r1, [r1, #0x8]
- str r1, [r0, #0xc]
-_020BE658:
- ldr r1, [r0, #0x0]
- orr r1, r1, #0x18
- str r1, [r0, #0x0]
- bx lr
-
- arm_func_start FUN_020BE668
-FUN_020BE668: ; 0x020BE668
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r1, [r4, #0x0]
- ands r0, r1, #0x4
- bne _020BE6AC
- ands r0, r1, #0x2
- bne _020BE698
- add r1, r4, #0x28
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
- b _020BE6C4
-_020BE698:
- add r1, r4, #0x4c
- mov r0, #0x1c
- mov r2, #0x3
- bl FUN_020BB1C0
- b _020BE6C4
-_020BE6AC:
- ands r0, r1, #0x2
- bne _020BE6C4
- add r1, r4, #0x28
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
-_020BE6C4:
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x1
- ldmneia sp!, {r4,pc}
- add r1, r4, #0x4
- mov r0, #0x1b
- mov r2, #0x3
- bl FUN_020BB1C0
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BE6E4
-FUN_020BE6E4: ; 0x020BE6E4
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x50
- mov r4, r0
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- ands r0, r0, #0x8
- ldrne r0, _020BE820 ; =0x00101610
- mov r3, #0x3
- strne r0, [sp, #0x0]
- ldreq r0, _020BE824 ; =0x00101810
- mov r2, #0x2
- streq r0, [sp, #0x0]
- mov r0, #0x1000
- str r0, [sp, #0x44]
- str r3, [sp, #0x4]
- str r2, [sp, #0x48]
- str r1, [sp, #0x40]
- str r1, [sp, #0x34]
- str r1, [sp, #0x30]
- str r1, [sp, #0x2c]
- str r1, [sp, #0x28]
- str r1, [sp, #0x24]
- str r1, [sp, #0x20]
- str r1, [sp, #0x14]
- str r1, [sp, #0x10]
- ldr r1, [r4, #0x0]
- ldr r0, _020BE828 ; =UNK_021067B0
- and r1, r1, #0x7
- ldr r2, [r0, r1, lsl #0x2]
- add r0, sp, #0x8
- mov r1, r4
- blx r2
- ldr r3, [r4, #0x30]
- cmp r3, #0x1000
- beq _020BE7B4
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- smull r2, r0, r3, r0
- mov r2, r2, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x8]
- ldr r2, [r4, #0x30]
- ldr r0, [sp, #0x38]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0xc]
- ldr r1, [r4, #0x30]
- smull r2, r0, r1, r0
- mov r1, r2, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- str r1, [sp, #0x38]
-_020BE7B4:
- ldr r3, [r4, #0x34]
- cmp r3, #0x1000
- beq _020BE804
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0x1c]
- smull r2, r0, r3, r0
- mov r2, r2, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x18]
- ldr r2, [r4, #0x34]
- ldr r0, [sp, #0x3c]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0x1c]
- ldr r1, [r4, #0x34]
- smull r2, r0, r1, r0
- mov r1, r2, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- str r1, [sp, #0x3c]
-_020BE804:
- add r1, sp, #0x0
- ldr r0, [sp, #0x0]
- add r1, r1, #0x4
- mov r2, #0x12
- bl FUN_020BB1C0
- add sp, sp, #0x50
- ldmia sp!, {r4,pc}
- .balign 4
-_020BE820: .word 0x00101610
-_020BE824: .word 0x00101810
-_020BE828: .word UNK_021067B0
-
- arm_func_start FUN_020BE82C
-FUN_020BE82C: ; 0x020BE82C
- mov r2, #0x1000
- str r2, [r0, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x4]
- str r1, [r0, #0x10]
- str r2, [r0, #0x14]
- str r1, [r0, #0x30]
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start FUN_020BE850
-FUN_020BE850: ; 0x020BE850
- ldr r2, [r1, #0x18]
- mov r12, #0x0
- str r2, [r0, #0x0]
- ldr r2, [r1, #0x1c]
- str r2, [r0, #0x14]
- str r12, [r0, #0x4]
- str r12, [r0, #0x30]
- ldr r2, [r1, #0x1c]
- ldrh r3, [r1, #0x2e]
- mov r1, r2, lsl #0x1
- rsb r1, r1, #0x0
- add r1, r1, #0x2000
- mul r1, r3, r1
- mov r1, r1, lsl #0x3
- str r1, [r0, #0x34]
- str r12, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020BE894
-FUN_020BE894: ; 0x020BE894
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- mov r6, r0
- mov r4, r2, lsl #0xc
- mov r7, r1, lsl #0xc
- mov r0, r7
- mov r1, r4
- bl FX_DivAsync
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x0]
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x14]
- bl FX_GetDivResult
- ldrsh r2, [r5, #0x20]
- mov r1, r7
- rsb r2, r2, #0x0
- mul r0, r2, r0
- mov r2, r0, asr #0xc
- mov r0, r4
- str r2, [r6, #0x4]
- bl FX_DivAsync
- ldrsh r1, [r5, #0x20]
- ldrsh r0, [r5, #0x22]
- ldrh r2, [r5, #0x2c]
- add r0, r1, r0
- rsb r0, r0, #0x0
- add r0, r0, #0x1000
- mul r0, r2, r0
- mov r0, r0, lsl #0x3
- str r0, [r6, #0x30]
- ldrsh r1, [r5, #0x20]
- ldrsh r0, [r5, #0x22]
- ldrh r2, [r5, #0x2e]
- sub r0, r1, r0
- add r0, r0, #0x1000
- mul r0, r2, r0
- mov r0, r0, lsl #0x3
- str r0, [r6, #0x34]
- bl FX_GetDivResult
- ldrsh r1, [r5, #0x20]
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r6, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BE954
-FUN_020BE954: ; 0x020BE954
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r9, r1
- ldrh r2, [r9, #0x2c]
- ldrh r1, [r9, #0x2e]
- mov r10, r0
- mov r8, r2, lsl #0xc
- mov r11, r1, lsl #0xc
- mov r0, r11
- mov r1, r8
- bl FX_DivAsync
- ldrsh r5, [r9, #0x22]
- ldr r3, [r9, #0x18]
- ldrsh r0, [r9, #0x20]
- ldr r4, [r9, #0x1c]
- smull r2, r1, r3, r5
- mov r6, r2, lsr #0xc
- orr r6, r6, r1, lsl #0x14
- smull r2, r1, r3, r0
- mov r7, r2, lsr #0xc
- orr r7, r7, r1, lsl #0x14
- smull r3, r2, r4, r0
- smull r1, r0, r4, r5
- mov r5, r3, lsr #0xc
- orr r5, r5, r2, lsl #0x14
- mov r4, r1, lsr #0xc
- orr r4, r4, r0, lsl #0x14
- str r6, [r10, #0x0]
- str r4, [r10, #0x14]
- bl FX_GetDivResult
- mov r1, r11
- rsb r2, r5, #0x0
- mul r0, r2, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x4]
- mov r0, r8
- bl FX_DivAsync
- sub r1, r5, r4
- add r0, r7, r6
- ldrh r3, [r9, #0x2c]
- ldr r2, [r9, #0x18]
- sub r0, r2, r0
- mul r0, r3, r0
- mov r0, r0, lsl #0x3
- str r0, [r10, #0x30]
- ldrh r2, [r9, #0x2e]
- ldr r0, [r9, #0x1c]
- sub r0, r1, r0
- add r0, r0, #0x2000
- mul r0, r2, r0
- mov r0, r0, lsl #0x3
- str r0, [r10, #0x34]
- bl FX_GetDivResult
- mul r0, r7, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020BEA3C
-FUN_020BEA3C: ; 0x020BEA3C
- mov r2, #0x1000
- str r2, [r0, #0x0]
- str r2, [r0, #0x14]
- mov r12, #0x0
- str r12, [r0, #0x4]
- ldrh r2, [r1, #0x2c]
- ldr r3, [r1, #0x24]
- mul r2, r3, r2
- rsb r2, r2, #0x0
- mov r2, r2, lsl #0x4
- str r2, [r0, #0x30]
- ldrh r2, [r1, #0x2e]
- ldr r1, [r1, #0x28]
- mul r2, r1, r2
- mov r1, r2, lsl #0x4
- str r1, [r0, #0x34]
- str r12, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020BEA84
-FUN_020BEA84: ; 0x020BEA84
- stmdb sp!, {r4,lr}
- ldr r3, [r1, #0x18]
- mov r2, #0x0
- str r3, [r0, #0x0]
- ldr r3, [r1, #0x1c]
- str r3, [r0, #0x14]
- str r2, [r0, #0x4]
- ldr r4, [r1, #0x18]
- ldr r3, [r1, #0x24]
- ldrh lr, [r1, #0x2c]
- smull r12, r3, r4, r3
- mov r4, r12, lsr #0x8
- orr r4, r4, r3, lsl #0x18
- rsb r3, r4, #0x0
- mul r3, lr, r3
- str r3, [r0, #0x30]
- ldr r4, [r1, #0x1c]
- ldr r12, [r1, #0x28]
- mov r3, r4, lsl #0x1
- smull lr, r12, r4, r12
- rsb r4, r3, #0x0
- mov r3, lr, lsr #0x8
- ldrh lr, [r1, #0x2e]
- add r1, r4, #0x2000
- orr r3, r3, r12, lsl #0x18
- mul r4, lr, r1
- mul r1, lr, r3
- add r1, r1, r4, lsl #0x3
- str r1, [r0, #0x34]
- str r2, [r0, #0x10]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BEB00
-FUN_020BEB00: ; 0x020BEB00
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- mov r6, r0
- mov r4, r2, lsl #0xc
- mov r7, r1, lsl #0xc
- mov r0, r7
- mov r1, r4
- bl FX_DivAsync
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x0]
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x14]
- bl FX_GetDivResult
- ldrsh r2, [r5, #0x20]
- mov r1, r7
- rsb r2, r2, #0x0
- mul r0, r2, r0
- mov r2, r0, asr #0xc
- mov r0, r4
- str r2, [r6, #0x4]
- bl FX_DivAsync
- ldrsh r2, [r5, #0x20]
- ldrsh r1, [r5, #0x22]
- ldrh r3, [r5, #0x2c]
- ldr r0, [r5, #0x24]
- add r1, r2, r1
- rsb r1, r1, #0x0
- add r1, r1, #0x1000
- mul r2, r3, r1
- mul r1, r0, r3
- mov r0, r2, lsl #0x3
- sub r0, r0, r1, lsl #0x4
- str r0, [r6, #0x30]
- ldrsh r2, [r5, #0x20]
- ldrsh r1, [r5, #0x22]
- ldrh r3, [r5, #0x2e]
- ldr r0, [r5, #0x28]
- sub r1, r2, r1
- add r1, r1, #0x1000
- mul r2, r3, r1
- mul r1, r0, r3
- mov r0, r2, lsl #0x3
- add r0, r0, r1, lsl #0x4
- str r0, [r6, #0x34]
- bl FX_GetDivResult
- ldrsh r1, [r5, #0x20]
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r6, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BEBD8
-FUN_020BEBD8: ; 0x020BEBD8
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r9, r1
- ldrh r2, [r9, #0x2c]
- ldrh r1, [r9, #0x2e]
- mov r10, r0
- mov r8, r2, lsl #0xc
- mov r11, r1, lsl #0xc
- mov r0, r11
- mov r1, r8
- bl FX_DivAsync
- ldrsh r5, [r9, #0x22]
- ldr r3, [r9, #0x18]
- ldrsh r0, [r9, #0x20]
- ldr r4, [r9, #0x1c]
- smull r2, r1, r3, r5
- mov r6, r2, lsr #0xc
- orr r6, r6, r1, lsl #0x14
- smull r2, r1, r3, r0
- mov r7, r2, lsr #0xc
- orr r7, r7, r1, lsl #0x14
- smull r3, r2, r4, r0
- smull r1, r0, r4, r5
- mov r5, r3, lsr #0xc
- orr r5, r5, r2, lsl #0x14
- mov r4, r1, lsr #0xc
- orr r4, r4, r0, lsl #0x14
- str r6, [r10, #0x0]
- str r4, [r10, #0x14]
- bl FX_GetDivResult
- mov r1, r11
- rsb r2, r5, #0x0
- mul r0, r2, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x4]
- mov r0, r8
- bl FX_DivAsync
- sub r1, r5, r4
- add r2, r7, r6
- ldr r5, [r9, #0x18]
- ldrh r0, [r9, #0x2c]
- sub r3, r5, r2
- ldr r2, [r9, #0x24]
- mul r4, r0, r3
- smull r3, r2, r5, r2
- mov r4, r4, lsl #0x3
- mov r3, r3, lsr #0x8
- orr r3, r3, r2, lsl #0x18
- mul r2, r0, r3
- sub r0, r4, r2
- str r0, [r10, #0x30]
- ldr r4, [r9, #0x1c]
- ldrh r3, [r9, #0x2e]
- sub r0, r1, r4
- add r0, r0, #0x2000
- mul r2, r3, r0
- ldr r0, [r9, #0x28]
- smull r1, r0, r4, r0
- mov r1, r1, lsr #0x8
- orr r1, r1, r0, lsl #0x18
- mul r0, r3, r1
- add r0, r0, r2, lsl #0x3
- str r0, [r10, #0x34]
- bl FX_GetDivResult
- mul r0, r7, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020BECEC
-FUN_020BECEC: ; 0x020BECEC
- stmdb sp!, {r4-r8,lr}
- mov r12, r0
- ands r0, r3, #0x4
- ldrb r3, [r2, #0x3]
- beq _020BED40
- ldr r1, [r12, #0x0]
- ands r0, r3, #0x2
- orr r0, r1, #0x1
- str r0, [r12, #0x0]
- beq _020BEDB8
- ldr r0, _020BEE2C ; =UNK_021CEF7C
- ldrb r7, [r2, #0x1]
- ldr r0, [r0, #0x0]
- mov r1, #0x1
- add r6, r0, #0xc4
- mov r5, r7, lsr #0x5
- ldr r4, [r6, r5, lsl #0x2]
- and r0, r7, #0x1f
- orr r0, r4, r1, lsl r0
- str r0, [r6, r5, lsl #0x2]
- b _020BEDB8
-_020BED40:
- ldr r4, [r1, #0x0]
- ands r0, r3, #0x2
- str r4, [r12, #0x4]
- ldr r0, [r1, #0x4]
- str r0, [r12, #0x8]
- ldr r0, [r1, #0x8]
- str r0, [r12, #0xc]
- beq _020BEDB8
- ldr lr, _020BEE2C ; =UNK_021CEF7C
- ldrb r0, [r2, #0x1]
- ldr r4, [lr, #0x0]
- mov lr, #0x18
- add r8, r4, #0xc4
- mov r7, r0, lsr #0x5
- and r4, r0, #0x1f
- mov r5, #0x1
- mvn r4, r5, lsl r4
- ldr r6, [r8, r7, lsl #0x2]
- mul r5, r0, lr
- and r0, r6, r4
- str r0, [r8, r7, lsl #0x2]
- ldr r4, [r1, #0xc]
- ldr r0, _020BEE30 ; =UNK_021CFD8C
- ldr lr, _020BEE34 ; =UNK_021CFD90
- str r4, [r0, r5]
- ldr r4, [r1, #0x10]
- ldr r0, _020BEE38 ; =UNK_021CFD94
- str r4, [lr, r5]
- ldr r1, [r1, #0x14]
- str r1, [r0, r5]
-_020BEDB8:
- ands r0, r3, #0x1
- beq _020BEE1C
- ldrb r0, [r2, #0x2]
- ldr r2, [r12, #0x0]
- ldr r1, _020BEE2C ; =UNK_021CEF7C
- orr r2, r2, #0x20
- str r2, [r12, #0x0]
- ldr r2, [r1, #0x0]
- mov r1, r0, lsr #0x5
- add r1, r2, r1, lsl #0x2
- and r2, r0, #0x1f
- mov r3, #0x1
- mov r2, r3, lsl r2
- ldr r1, [r1, #0xc4]
- ands r1, r2, r1
- ldrne r0, [r12, #0x0]
- orrne r0, r0, #0x8
- strne r0, [r12, #0x0]
- bne _020BEE1C
- ldr r2, _020BEE30 ; =UNK_021CFD8C
- mov r1, #0x18
- mla r1, r0, r1, r2
- add r3, r12, #0x10
- ldmia r1, {r0-r2}
- stmia r3, {r0-r2}
-_020BEE1C:
- ldr r0, [r12, #0x0]
- orr r0, r0, #0x10
- str r0, [r12, #0x0]
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020BEE2C: .word UNK_021CEF7C
-_020BEE30: .word UNK_021CFD8C
-_020BEE34: .word UNK_021CFD90
-_020BEE38: .word UNK_021CFD94
-
- arm_func_start FUN_020BEE3C
-FUN_020BEE3C: ; 0x020BEE3C
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r1, [r5, #0x0]
- mov r4, #0x0
- ands r0, r1, #0x4
- moveq r4, #0x1
- ands r0, r1, #0x20
- beq _020BEE94
- ands r0, r1, #0x8
- bne _020BEE94
- cmp r4, #0x0
- beq _020BEE84
- add r1, r5, #0x4c
- mov r0, #0x1c
- mov r2, #0x3
- bl FUN_020BB1C0
- mov r4, #0x0
-_020BEE84:
- add r1, r5, #0x10
- mov r0, #0x1b
- mov r2, #0x3
- bl FUN_020BB1C0
-_020BEE94:
- ldr r0, [r5, #0x0]
- ands r0, r0, #0x2
- bne _020BEED0
- cmp r4, #0x0
- beq _020BEEBC
- add r1, r5, #0x28
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
- b _020BEEE8
-_020BEEBC:
- add r1, r5, #0x28
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- b _020BEEE8
-_020BEED0:
- cmp r4, #0x0
- beq _020BEEE8
- add r1, r5, #0x4c
- mov r0, #0x1c
- mov r2, #0x3
- bl FUN_020BB1C0
-_020BEEE8:
- ldr r0, [r5, #0x0]
- ands r0, r0, #0x1
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r5,pc}
- add r1, r5, #0x4
- mov r0, #0x1b
- mov r2, #0x3
- bl FUN_020BB1C0
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,pc}
-
- arm_func_start FUN_020BEF10
-FUN_020BEF10: ; 0x020BEF10
- stmdb sp!, {lr}
- sub sp, sp, #0x3c
- ldr r1, [r0, #0x0]
- mov r3, #0x0
- ands r1, r1, #0x8
- ldrne r1, _020BF0CC ; =0x00101710
- mov r2, #0x3
- strne r1, [sp, #0x0]
- ldreq r1, _020BF0D0 ; =0x00101910
- str r3, [sp, #0x34]
- streq r1, [sp, #0x0]
- mov r1, #0x2
- str r1, [sp, #0x38]
- str r3, [sp, #0x28]
- str r3, [sp, #0x24]
- str r3, [sp, #0x20]
- str r3, [sp, #0x1c]
- str r3, [sp, #0x14]
- str r3, [sp, #0x10]
- str r3, [sp, #0xc]
- str r2, [sp, #0x4]
- ldr r2, [r0, #0x0]
- ands r1, r2, #0x4
- beq _020BEFA0
- str r3, [sp, #0x2c]
- str r3, [sp, #0x30]
- ldr r1, [r0, #0x0]
- ands r1, r1, #0x1
- movne r1, #0x1000
- strne r1, [sp, #0x8]
- strne r1, [sp, #0x18]
- ldreq r1, [r0, #0x18]
- streq r1, [sp, #0x8]
- ldreq r1, [r0, #0x1c]
- streq r1, [sp, #0x18]
- b _020BF040
-_020BEFA0:
- ands r1, r2, #0x1
- beq _020BEFE8
- ldr r2, [r0, #0x24]
- ldrh r1, [r0, #0x2c]
- mov r2, r2, lsl #0x4
- rsb r2, r2, #0x0
- mul r1, r2, r1
- str r1, [sp, #0x2c]
- ldr r2, [r0, #0x28]
- ldrh r1, [r0, #0x2e]
- mov r2, r2, lsl #0x4
- rsb r2, r2, #0x0
- mul r3, r2, r1
- mov r1, #0x1000
- str r3, [sp, #0x30]
- str r1, [sp, #0x8]
- str r1, [sp, #0x18]
- b _020BF040
-_020BEFE8:
- ldr r2, [r0, #0x18]
- ldr r1, [r0, #0x24]
- ldrh r12, [r0, #0x2c]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0x8
- orr r2, r2, r1, lsl #0x18
- rsb r1, r2, #0x0
- mul r1, r12, r1
- str r1, [sp, #0x2c]
- ldr r2, [r0, #0x1c]
- ldr r1, [r0, #0x28]
- ldrh r12, [r0, #0x2e]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0x8
- orr r2, r2, r1, lsl #0x18
- rsb r1, r2, #0x0
- mul r1, r12, r1
- str r1, [sp, #0x30]
- ldr r1, [r0, #0x18]
- str r1, [sp, #0x8]
- ldr r1, [r0, #0x1c]
- str r1, [sp, #0x18]
-_020BF040:
- ldr r12, [r0, #0x30]
- cmp r12, #0x1000
- beq _020BF078
- ldr r2, [sp, #0x8]
- ldr r1, [sp, #0x2c]
- smull r3, r2, r12, r2
- mov r3, r3, lsr #0xc
- orr r3, r3, r2, lsl #0x14
- str r3, [sp, #0x8]
- ldr r2, [r0, #0x30]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0x2c]
-_020BF078:
- ldr r12, [r0, #0x34]
- cmp r12, #0x1000
- beq _020BF0B0
- ldr r2, [sp, #0x18]
- ldr r1, [sp, #0x30]
- smull r3, r2, r12, r2
- mov r3, r3, lsr #0xc
- orr r3, r3, r2, lsl #0x14
- str r3, [sp, #0x18]
- ldr r0, [r0, #0x34]
- smull r2, r1, r0, r1
- mov r0, r2, lsr #0xc
- orr r0, r0, r1, lsl #0x14
- str r0, [sp, #0x30]
-_020BF0B0:
- add r1, sp, #0x0
- ldr r0, [sp, #0x0]
- add r1, r1, #0x4
- mov r2, #0xe
- bl FUN_020BB1C0
- add sp, sp, #0x3c
- ldmia sp!, {pc}
- .balign 4
-_020BF0CC: .word 0x00101710
-_020BF0D0: .word 0x00101910
-
- arm_func_start FUN_020BF0D4
-FUN_020BF0D4: ; 0x020BF0D4
- stmdb sp!, {r4-r8,lr}
- mov r5, r0
- ands r0, r3, #0x4
- ldrb r4, [r2, #0x1]
- ldrb r0, [r2, #0x2]
- beq _020BF174
- ldr r2, [r5, #0x0]
- ldr r1, _020BF2E0 ; =UNK_021CEF7C
- orr r2, r2, #0x1
- str r2, [r5, #0x0]
- ldr r3, [r1, #0x0]
- mov r1, r0, lsr #0x5
- add r1, r3, r1, lsl #0x2
- and r2, r0, #0x1f
- mov r6, #0x1
- mov r2, r6, lsl r2
- ldr r1, [r1, #0xc4]
- ands r1, r2, r1
- beq _020BF148
- add r3, r3, #0xc4
- mov r2, r4, lsr #0x5
- ldr r1, [r3, r2, lsl #0x2]
- and r0, r4, #0x1f
- orr r0, r1, r6, lsl r0
- str r0, [r3, r2, lsl #0x2]
- ldr r0, [r5, #0x0]
- orr r0, r0, #0x18
- str r0, [r5, #0x0]
- ldmia sp!, {r4-r8,pc}
-_020BF148:
- ldr r1, _020BF2E4 ; =UNK_021CFD80
- mov r2, #0x18
- mla r6, r0, r2, r1
- mla r1, r4, r2, r1
- mov r0, r6
- bl MIi_CpuCopy32
- mov r0, r6
- add r1, r5, #0x10
- mov r2, #0x18
- bl MIi_CpuCopy32
- ldmia sp!, {r4-r8,pc}
-_020BF174:
- ldr r3, [r1, #0x0]
- ldr r2, _020BF2E0 ; =UNK_021CEF7C
- str r3, [r5, #0x4]
- ldr r3, [r1, #0x4]
- mov r7, r0, lsr #0x5
- str r3, [r5, #0x8]
- ldr r3, [r1, #0x8]
- and r8, r0, #0x1f
- str r3, [r5, #0xc]
- ldr r6, [r2, #0x0]
- mov r3, #0x1
- add r2, r6, r7, lsl #0x2
- mov r7, r3, lsl r8
- ldr r2, [r2, #0xc4]
- ands r2, r7, r2
- beq _020BF200
- ldr r3, _020BF2E4 ; =UNK_021CFD80
- mov r2, #0x18
- mov r0, r1
- mla r1, r4, r2, r3
- bl MIi_CpuCopy32
- ldr r0, _020BF2E0 ; =UNK_021CEF7C
- mov r2, r4, lsr #0x5
- ldr r1, [r0, #0x0]
- and r0, r4, #0x1f
- add r3, r1, #0xc4
- mov r1, #0x1
- mvn r0, r1, lsl r0
- ldr r1, [r3, r2, lsl #0x2]
- and r0, r1, r0
- str r0, [r3, r2, lsl #0x2]
- ldr r0, [r5, #0x0]
- orr r0, r0, #0x18
- str r0, [r5, #0x0]
- ldmia sp!, {r4-r8,pc}
-_020BF200:
- mov r2, #0x18
- mul r12, r0, r2
- and r7, r4, #0x1f
- ldr r0, _020BF2E4 ; =UNK_021CFD80
- add r6, r6, #0xc4
- mov lr, r4, lsr #0x5
- mvn r7, r3, lsl r7
- ldr r8, [r6, lr, lsl #0x2]
- mul r3, r4, r2
- and r4, r8, r7
- str r4, [r6, lr, lsl #0x2]
- ldr r7, [r1, #0x0]
- ldr r4, [r0, r12]
- ldr r6, _020BF2E8 ; =UNK_021CFD84
- smull r8, r4, r7, r4
- mov r7, r8, lsr #0xc
- orr r7, r7, r4, lsl #0x14
- str r7, [r0, r3]
- ldr r8, [r1, #0x4]
- ldr r4, [r6, r12]
- ldr r7, _020BF2EC ; =UNK_021CFD88
- smull lr, r4, r8, r4
- mov r8, lr, lsr #0xc
- orr r8, r8, r4, lsl #0x14
- str r8, [r6, r3]
- ldr r8, [r1, #0x8]
- ldr r4, [r7, r12]
- ldr r6, _020BF2F0 ; =UNK_021CFD8C
- smull lr, r4, r8, r4
- mov r8, lr, lsr #0xc
- orr r8, r8, r4, lsl #0x14
- str r8, [r7, r3]
- ldr r7, [r1, #0xc]
- ldr r4, [r6, r12]
- ldr lr, _020BF2F4 ; =UNK_021CFD90
- smull r8, r4, r7, r4
- mov r7, r8, lsr #0xc
- orr r7, r7, r4, lsl #0x14
- str r7, [r6, r3]
- ldr r7, [r1, #0x10]
- ldr r4, [lr, r12]
- ldr r6, _020BF2F8 ; =UNK_021CFD94
- smull r8, r4, r7, r4
- add r0, r0, r12
- mov r7, r8, lsr #0xc
- orr r7, r7, r4, lsl #0x14
- str r7, [lr, r3]
- ldr lr, [r1, #0x14]
- ldr r4, [r6, r12]
- add r1, r5, #0x10
- smull r5, r4, lr, r4
- mov r5, r5, lsr #0xc
- orr r5, r5, r4, lsl #0x14
- str r5, [r6, r3]
- bl MIi_CpuCopy32
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020BF2E0: .word UNK_021CEF7C
-_020BF2E4: .word UNK_021CFD80
-_020BF2E8: .word UNK_021CFD84
-_020BF2EC: .word UNK_021CFD88
-_020BF2F0: .word UNK_021CFD8C
-_020BF2F4: .word UNK_021CFD90
-_020BF2F8: .word UNK_021CFD94
-
- arm_func_start FUN_020BF2FC
-FUN_020BF2FC: ; 0x020BF2FC
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x10
- mov r6, r0
- ldr r0, [r6, #0x0]
- mov r5, #0x0
- ands r4, r0, #0x18
- bne _020BF328
- add r1, r6, #0x1c
- mov r0, #0x1b
- mov r2, #0x3
- bl FUN_020BB1C0
-_020BF328:
- ldr r0, [r6, #0x0]
- ands r0, r0, #0x4
- bne _020BF398
- cmp r4, #0x0
- movne r5, #0x1
- bne _020BF398
- ldr r2, [r6, #0x4c]
- ldr r0, [r6, #0x10]
- add r1, sp, #0x0
- smull r3, r0, r2, r0
- mov r2, r3, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x0]
- ldr r3, [r6, #0x50]
- ldr r2, [r6, #0x14]
- mov r0, #0x1c
- smull r12, r2, r3, r2
- mov r3, r12, lsr #0xc
- orr r3, r3, r2, lsl #0x14
- str r3, [sp, #0x4]
- ldr r12, [r6, #0x54]
- ldr r3, [r6, #0x18]
- mov r2, #0x3
- smull lr, r3, r12, r3
- mov r12, lr, lsr #0xc
- orr r12, r12, r3, lsl #0x14
- str r12, [sp, #0x8]
- bl FUN_020BB1C0
-_020BF398:
- ldr r0, [r6, #0x0]
- ands r0, r0, #0x2
- bne _020BF3D4
- cmp r5, #0x0
- beq _020BF3C0
- add r1, r6, #0x28
- mov r0, #0x19
- mov r2, #0xc
- bl FUN_020BB1C0
- b _020BF3EC
-_020BF3C0:
- add r1, r6, #0x28
- mov r0, #0x1a
- mov r2, #0x9
- bl FUN_020BB1C0
- b _020BF3EC
-_020BF3D4:
- cmp r5, #0x0
- beq _020BF3EC
- add r1, r6, #0x4c
- mov r0, #0x1c
- mov r2, #0x3
- bl FUN_020BB1C0
-_020BF3EC:
- cmp r4, #0x0
- bne _020BF404
- add r1, r6, #0x10
- mov r0, #0x1b
- mov r2, #0x3
- bl FUN_020BB1C0
-_020BF404:
- ldr r0, [r6, #0x0]
- ands r0, r0, #0x1
- addne sp, sp, #0x10
- ldmneia sp!, {r4-r6,pc}
- add r1, r6, #0x4
- mov r0, #0x1b
- mov r2, #0x3
- bl FUN_020BB1C0
- add sp, sp, #0x10
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BF42C
-FUN_020BF42C: ; 0x020BF42C
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x50
- mov r4, r0
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- ands r0, r0, #0x8
- ldrne r0, _020BF568 ; =0x00101610
- mov r3, #0x3
- strne r0, [sp, #0x0]
- ldreq r0, _020BF56C ; =0x00101810
- mov r2, #0x2
- streq r0, [sp, #0x0]
- mov r0, #0x1000
- str r0, [sp, #0x44]
- str r3, [sp, #0x4]
- str r2, [sp, #0x48]
- str r1, [sp, #0x40]
- str r1, [sp, #0x34]
- str r1, [sp, #0x30]
- str r1, [sp, #0x2c]
- str r1, [sp, #0x28]
- str r1, [sp, #0x24]
- str r1, [sp, #0x20]
- str r1, [sp, #0x14]
- str r1, [sp, #0x10]
- ldr r1, [r4, #0x0]
- ldr r0, _020BF570 ; =UNK_021067D0
- and r1, r1, #0x7
- ldr r2, [r0, r1, lsl #0x2]
- add r0, sp, #0x8
- mov r1, r4
- blx r2
- ldr r3, [r4, #0x30]
- cmp r3, #0x1000
- beq _020BF4FC
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- smull r2, r0, r3, r0
- mov r2, r2, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x8]
- ldr r2, [r4, #0x30]
- ldr r0, [sp, #0x38]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0xc]
- ldr r1, [r4, #0x30]
- smull r2, r0, r1, r0
- mov r1, r2, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- str r1, [sp, #0x38]
-_020BF4FC:
- ldr r3, [r4, #0x34]
- cmp r3, #0x1000
- beq _020BF54C
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0x1c]
- smull r2, r0, r3, r0
- mov r2, r2, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x18]
- ldr r2, [r4, #0x34]
- ldr r0, [sp, #0x3c]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0x1c]
- ldr r1, [r4, #0x34]
- smull r2, r0, r1, r0
- mov r1, r2, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- str r1, [sp, #0x3c]
-_020BF54C:
- add r1, sp, #0x0
- ldr r0, [sp, #0x0]
- add r1, r1, #0x4
- mov r2, #0x12
- bl FUN_020BB1C0
- add sp, sp, #0x50
- ldmia sp!, {r4,pc}
- .balign 4
-_020BF568: .word 0x00101610
-_020BF56C: .word 0x00101810
-_020BF570: .word UNK_021067D0
-
- arm_func_start FUN_020BF574
-FUN_020BF574: ; 0x020BF574
- mov r2, #0x1000
- str r2, [r0, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x4]
- str r1, [r0, #0x10]
- str r2, [r0, #0x14]
- str r1, [r0, #0x30]
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start FUN_020BF598
-FUN_020BF598: ; 0x020BF598
- ldr r2, [r1, #0x18]
- mov r12, #0x0
- str r2, [r0, #0x0]
- ldr r2, [r1, #0x1c]
- str r2, [r0, #0x14]
- str r12, [r0, #0x4]
- ldr r3, [r1, #0x18]
- ldrh r2, [r1, #0x2c]
- rsb r3, r3, #0x1000
- mul r2, r3, r2
- mov r2, r2, lsl #0x3
- str r2, [r0, #0x30]
- ldr r2, [r1, #0x1c]
- ldrh r1, [r1, #0x2e]
- rsb r2, r2, #0x1000
- mul r1, r2, r1
- mov r1, r1, lsl #0x3
- str r1, [r0, #0x34]
- str r12, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020BF5E8
-FUN_020BF5E8: ; 0x020BF5E8
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- mov r6, r0
- mov r4, r2, lsl #0xc
- mov r7, r1, lsl #0xc
- mov r0, r7
- mov r1, r4
- bl FX_DivAsync
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x0]
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x14]
- bl FX_GetDivResult
- ldrsh r2, [r5, #0x20]
- mov r1, r7
- mul r0, r2, r0
- mov r2, r0, asr #0xc
- mov r0, r4
- str r2, [r6, #0x4]
- bl FX_DivAsync
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- ldrsh r4, [r5, #0x22]
- rsb r0, r2, #0x0
- rsb r1, r1, #0x0
- mov r0, r0, lsl #0xb
- ldrsh r3, [r5, #0x20]
- mov r1, r1, lsl #0xb
- smull r7, lr, r4, r0
- smull r12, r4, r3, r1
- subs r7, r7, r12
- sbc r3, lr, r4
- mov r4, r7, lsr #0x8
- orr r4, r4, r3, lsl #0x18
- add r2, r4, r2, lsl #0xf
- str r2, [r6, #0x30]
- ldrsh r2, [r5, #0x22]
- ldrsh r3, [r5, #0x20]
- ldrh r12, [r5, #0x2e]
- smull r4, r1, r2, r1
- smlal r4, r1, r3, r0
- mov r0, r4, lsr #0x8
- orr r0, r0, r1, lsl #0x18
- add r0, r0, r12, lsl #0xf
- str r0, [r6, #0x34]
- bl FX_GetDivResult
- ldrsh r1, [r5, #0x20]
- rsb r1, r1, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r6, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BF6C8
-FUN_020BF6C8: ; 0x020BF6C8
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r9, r1
- ldrh r2, [r9, #0x2c]
- ldrh r1, [r9, #0x2e]
- mov r10, r0
- mov r8, r2, lsl #0xc
- mov r11, r1, lsl #0xc
- mov r0, r11
- mov r1, r8
- bl FX_DivAsync
- ldrsh r0, [r9, #0x22]
- ldr r3, [r9, #0x18]
- ldrsh r5, [r9, #0x20]
- ldr r4, [r9, #0x1c]
- smull r2, r1, r3, r0
- mov r7, r2, lsr #0xc
- orr r7, r7, r1, lsl #0x14
- smull r2, r1, r3, r5
- mov r6, r2, lsr #0xc
- orr r6, r6, r1, lsl #0x14
- smull r3, r2, r4, r0
- smull r1, r0, r4, r5
- mov r5, r3, lsr #0xc
- orr r5, r5, r2, lsl #0x14
- mov r4, r1, lsr #0xc
- orr r4, r4, r0, lsl #0x14
- str r7, [r10, #0x0]
- str r5, [r10, #0x14]
- bl FX_GetDivResult
- mov r1, r11
- mul r0, r4, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x4]
- mov r0, r8
- bl FX_DivAsync
- ldrh r3, [r9, #0x2c]
- ldrh r1, [r9, #0x2e]
- rsb r0, r3, #0x0
- rsb r1, r1, #0x0
- mov r2, r1, lsl #0xb
- mov r11, r0, lsl #0xb
- smull r1, r0, r7, r11
- smull r8, r7, r5, r2
- smlal r8, r7, r4, r11
- mov r4, r8, lsr #0x8
- orr r4, r4, r7, lsl #0x18
- smull r5, r2, r6, r2
- subs r1, r1, r5
- sbc r0, r0, r2
- mov r1, r1, lsr #0x8
- orr r1, r1, r0, lsl #0x18
- add r0, r1, r3, lsl #0xf
- str r0, [r10, #0x30]
- ldrh r0, [r9, #0x2e]
- add r0, r4, r0, lsl #0xf
- str r0, [r10, #0x34]
- bl FX_GetDivResult
- rsb r1, r6, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020BF7C8
-FUN_020BF7C8: ; 0x020BF7C8
- mov r2, #0x1000
- str r2, [r0, #0x0]
- str r2, [r0, #0x14]
- mov r12, #0x0
- str r12, [r0, #0x4]
- ldr r3, [r1, #0x24]
- ldrh r2, [r1, #0x2c]
- rsb r3, r3, #0x0
- mul r2, r3, r2
- mov r2, r2, lsl #0x4
- str r2, [r0, #0x30]
- ldrh r2, [r1, #0x2e]
- ldr r1, [r1, #0x28]
- mul r2, r1, r2
- mov r1, r2, lsl #0x4
- str r1, [r0, #0x34]
- str r12, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020BF810
-FUN_020BF810: ; 0x020BF810
- stmdb sp!, {r4-r6,lr}
- ldr r2, [r1, #0x18]
- mov r3, #0x0
- str r2, [r0, #0x0]
- ldr r2, [r1, #0x1c]
- str r2, [r0, #0x14]
- str r3, [r0, #0x4]
- ldrh r5, [r1, #0x2c]
- ldr r12, [r1, #0x24]
- ldrh r2, [r1, #0x2e]
- mul lr, r12, r5
- rsb r12, r5, #0x0
- mov r12, r12, lsl #0xb
- ldr r4, [r1, #0x18]
- sub r12, r12, lr
- smull lr, r12, r4, r12
- ldr r6, [r1, #0x28]
- mov r4, lr, lsr #0x8
- orr r4, r4, r12, lsl #0x18
- add r4, r4, r5, lsl #0xf
- str r4, [r0, #0x30]
- mul r4, r6, r2
- rsb r5, r2, #0x0
- ldr r2, [r1, #0x1c]
- add r4, r4, r5, lsl #0xb
- smull lr, r12, r2, r4
- mov r2, lr, lsr #0x8
- ldrh r1, [r1, #0x2e]
- orr r2, r2, r12, lsl #0x18
- add r1, r2, r1, lsl #0xf
- str r1, [r0, #0x34]
- str r3, [r0, #0x10]
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start FUN_020BF894
-FUN_020BF894: ; 0x020BF894
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- mov r6, r0
- mov r4, r2, lsl #0xc
- mov r7, r1, lsl #0xc
- mov r0, r7
- mov r1, r4
- bl FX_DivAsync
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x0]
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x14]
- bl FX_GetDivResult
- ldrsh r2, [r5, #0x20]
- mov r1, r7
- mul r0, r2, r0
- mov r2, r0, asr #0xc
- mov r0, r4
- str r2, [r6, #0x4]
- bl FX_DivAsync
- ldrh r2, [r5, #0x2c]
- ldrh r7, [r5, #0x2e]
- ldr r1, [r5, #0x28]
- ldr r0, [r5, #0x24]
- rsb r4, r2, #0x0
- mul r3, r1, r7
- rsb r1, r7, #0x0
- add r1, r3, r1, lsl #0xb
- ldrsh r3, [r5, #0x20]
- mov r7, r4, lsl #0xb
- mul r4, r0, r2
- sub r0, r7, r4
- ldrsh lr, [r5, #0x22]
- smull r12, r4, r3, r1
- smull r7, r3, lr, r0
- subs r7, r7, r12
- sbc r3, r3, r4
- mov r4, r7, lsr #0x8
- orr r4, r4, r3, lsl #0x18
- add r2, r4, r2, lsl #0xf
- str r2, [r6, #0x30]
- ldrsh r2, [r5, #0x22]
- ldrsh r3, [r5, #0x20]
- ldrh r12, [r5, #0x2e]
- smull r4, r1, r2, r1
- smlal r4, r1, r3, r0
- mov r0, r4, lsr #0x8
- orr r0, r0, r1, lsl #0x18
- add r0, r0, r12, lsl #0xf
- str r0, [r6, #0x34]
- bl FX_GetDivResult
- ldrsh r1, [r5, #0x20]
- rsb r1, r1, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r6, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BF988
-FUN_020BF988: ; 0x020BF988
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r9, r1
- ldrh r2, [r9, #0x2c]
- ldrh r1, [r9, #0x2e]
- mov r10, r0
- mov r8, r2, lsl #0xc
- mov r11, r1, lsl #0xc
- mov r0, r11
- mov r1, r8
- bl FX_DivAsync
- ldrsh r0, [r9, #0x22]
- ldr r3, [r9, #0x18]
- ldrsh r5, [r9, #0x20]
- ldr r4, [r9, #0x1c]
- smull r2, r1, r3, r0
- mov r7, r2, lsr #0xc
- orr r7, r7, r1, lsl #0x14
- smull r2, r1, r3, r5
- mov r6, r2, lsr #0xc
- orr r6, r6, r1, lsl #0x14
- smull r3, r2, r4, r0
- smull r1, r0, r4, r5
- mov r5, r3, lsr #0xc
- orr r5, r5, r2, lsl #0x14
- mov r4, r1, lsr #0xc
- orr r4, r4, r0, lsl #0x14
- str r7, [r10, #0x0]
- str r5, [r10, #0x14]
- bl FX_GetDivResult
- mov r1, r11
- mul r0, r4, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x4]
- mov r0, r8
- bl FX_DivAsync
- ldrh r1, [r9, #0x2c]
- ldrh r8, [r9, #0x2e]
- ldr r2, [r9, #0x28]
- rsb r0, r1, #0x0
- mul r3, r2, r8
- rsb r2, r8, #0x0
- add r8, r3, r2, lsl #0xb
- mov r0, r0, lsl #0xb
- smull r3, r2, r5, r8
- smull r8, r5, r6, r8
- ldr r11, [r9, #0x24]
- mul r12, r11, r1
- sub r0, r0, r12
- smlal r3, r2, r4, r0
- smull r4, r0, r7, r0
- subs r4, r4, r8
- sbc r0, r0, r5
- mov r4, r4, lsr #0x8
- orr r4, r4, r0, lsl #0x18
- add r0, r4, r1, lsl #0xf
- str r0, [r10, #0x30]
- ldrh r1, [r9, #0x2e]
- mov r0, r3, lsr #0x8
- orr r0, r0, r2, lsl #0x18
- add r0, r0, r1, lsl #0xf
- str r0, [r10, #0x34]
- bl FX_GetDivResult
- rsb r1, r6, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020BFA9C
-FUN_020BFA9C: ; 0x020BFA9C
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x50
- mov r4, r0
- ldr r0, [r4, #0x0]
- mov r3, #0x3
- ands r0, r0, #0x8
- ldrne r0, _020BFC1C ; =0x00101610
- mov r2, #0x2
- strne r0, [sp, #0x0]
- ldreq r0, _020BFC20 ; =0x00101810
- mov r1, #0x1000
- streq r0, [sp, #0x0]
- mov r0, #0x0
- str r3, [sp, #0x4]
- str r2, [sp, #0x48]
- str r1, [sp, #0x44]
- str r0, [sp, #0x40]
- str r0, [sp, #0x34]
- str r0, [sp, #0x30]
- str r0, [sp, #0x2c]
- str r0, [sp, #0x28]
- str r0, [sp, #0x24]
- str r0, [sp, #0x20]
- str r0, [sp, #0x14]
- str r0, [sp, #0x10]
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x1
- strne r1, [r4, #0x1c]
- ldrne r0, [r4, #0x1c]
- strne r0, [r4, #0x18]
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x2
- movne r0, #0x1000
- strneh r0, [r4, #0x22]
- movne r0, #0x0
- strneh r0, [r4, #0x20]
- ldr r0, [r4, #0x0]
- ands r0, r0, #0x4
- movne r0, #0x0
- strne r0, [r4, #0x28]
- ldrne r0, [r4, #0x28]
- strne r0, [r4, #0x24]
- ldr r1, [r4, #0x0]
- ldr r0, _020BFC24 ; =UNK_021067F0
- and r1, r1, #0x7
- ldr r2, [r0, r1, lsl #0x2]
- add r0, sp, #0x8
- mov r1, r4
- blx r2
- ldr r3, [r4, #0x30]
- cmp r3, #0x1000
- beq _020BFBB0
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- smull r2, r0, r3, r0
- mov r2, r2, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x8]
- ldr r2, [r4, #0x30]
- ldr r0, [sp, #0x38]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0xc]
- ldr r1, [r4, #0x30]
- smull r2, r0, r1, r0
- mov r1, r2, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- str r1, [sp, #0x38]
-_020BFBB0:
- ldr r3, [r4, #0x34]
- cmp r3, #0x1000
- beq _020BFC00
- ldr r0, [sp, #0x18]
- ldr r1, [sp, #0x1c]
- smull r2, r0, r3, r0
- mov r2, r2, lsr #0xc
- orr r2, r2, r0, lsl #0x14
- str r2, [sp, #0x18]
- ldr r2, [r4, #0x34]
- ldr r0, [sp, #0x3c]
- smull r3, r1, r2, r1
- mov r2, r3, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [sp, #0x1c]
- ldr r1, [r4, #0x34]
- smull r2, r0, r1, r0
- mov r1, r2, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- str r1, [sp, #0x3c]
-_020BFC00:
- add r1, sp, #0x0
- ldr r0, [sp, #0x0]
- add r1, r1, #0x4
- mov r2, #0x12
- bl FUN_020BB1C0
- add sp, sp, #0x50
- ldmia sp!, {r4,pc}
- .balign 4
-_020BFC1C: .word 0x00101610
-_020BFC20: .word 0x00101810
-_020BFC24: .word UNK_021067F0
-
- arm_func_start FUN_020BFC28
-FUN_020BFC28: ; 0x020BFC28
- mov r2, #0x1000
- str r2, [r0, #0x0]
- mov r1, #0x0
- str r1, [r0, #0x4]
- str r1, [r0, #0x10]
- str r2, [r0, #0x14]
- str r1, [r0, #0x30]
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start FUN_020BFC4C
-FUN_020BFC4C: ; 0x020BFC4C
- ldr r2, [r1, #0x18]
- mov r3, #0x0
- str r2, [r0, #0x0]
- ldr r2, [r1, #0x1c]
- str r2, [r0, #0x14]
- str r3, [r0, #0x4]
- str r3, [r0, #0x30]
- ldrh r2, [r1, #0x2e]
- ldr r1, [r1, #0x1c]
- rsb r2, r2, #0x0
- sub r1, r1, #0x1000
- mul r1, r2, r1
- mov r1, r1, lsl #0x4
- str r1, [r0, #0x34]
- str r3, [r0, #0x10]
- bx lr
-
- arm_func_start FUN_020BFC8C
-FUN_020BFC8C: ; 0x020BFC8C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- mov r6, r0
- mov r4, r2, lsl #0xc
- mov r7, r1, lsl #0xc
- mov r0, r7
- mov r1, r4
- bl FX_DivAsync
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x0]
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x14]
- bl FX_GetDivResult
- ldrsh r2, [r5, #0x20]
- mov r1, r7
- mul r0, r2, r0
- mov r2, r0, asr #0xc
- mov r0, r4
- str r2, [r6, #0x4]
- bl FX_DivAsync
- ldrh r1, [r5, #0x2c]
- ldrsh r0, [r5, #0x20]
- mul r0, r1, r0
- mov r0, r0, lsl #0x4
- str r0, [r6, #0x30]
- ldrh r1, [r5, #0x2e]
- ldrsh r0, [r5, #0x22]
- rsb r1, r1, #0x0
- sub r0, r0, #0x1000
- mul r0, r1, r0
- mov r0, r0, lsl #0x4
- str r0, [r6, #0x34]
- bl FX_GetDivResult
- ldrsh r1, [r5, #0x20]
- rsb r1, r1, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r6, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BFD38
-FUN_020BFD38: ; 0x020BFD38
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r9, r1
- ldrh r2, [r9, #0x2c]
- ldrh r1, [r9, #0x2e]
- mov r10, r0
- mov r8, r2, lsl #0xc
- mov r11, r1, lsl #0xc
- mov r0, r11
- mov r1, r8
- bl FX_DivAsync
- ldrsh r3, [r9, #0x22]
- ldr r0, [r9, #0x18]
- ldrsh r7, [r9, #0x20]
- ldr r5, [r9, #0x1c]
- smull r2, r1, r0, r3
- mov r2, r2, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- str r2, [r10, #0x0]
- smull r2, r1, r5, r3
- mov r4, r2, lsr #0xc
- orr r4, r4, r1, lsl #0x14
- smull r2, r1, r0, r7
- mov r6, r2, lsr #0xc
- orr r6, r6, r1, lsl #0x14
- str r4, [r10, #0x14]
- bl FX_GetDivResult
- smull r2, r1, r5, r7
- mov r2, r2, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- mul r0, r2, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x4]
- mov r0, r8
- mov r1, r11
- bl FX_DivAsync
- sub r0, r4, #0x1000
- ldrh r1, [r9, #0x2c]
- mul r2, r1, r6
- mov r1, r2, lsl #0x4
- str r1, [r10, #0x30]
- ldrh r1, [r9, #0x2e]
- rsb r1, r1, #0x0
- mul r0, r1, r0
- mov r0, r0, lsl #0x4
- str r0, [r10, #0x34]
- bl FX_GetDivResult
- rsb r1, r6, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r10, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
-
- arm_func_start FUN_020BFE0C
-FUN_020BFE0C: ; 0x020BFE0C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r2, #0x1000
- str r2, [r0, #0x0]
- str r2, [r0, #0x14]
- mov lr, #0x0
- str lr, [r0, #0x4]
- ldr r2, [r1, #0x24]
- ldrh r3, [r1, #0x2c]
- rsb r2, r2, #0x0
- ldr r12, [r1, #0x28]
- mul r2, r3, r2
- mov r2, r2, lsl #0x4
- str r2, [r0, #0x30]
- ldrh r1, [r1, #0x2e]
- rsb r2, r12, #0x0
- rsb r1, r1, #0x0
- mul r2, r1, r2
- mov r1, r2, lsl #0x4
- str r1, [r0, #0x34]
- str lr, [r0, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {pc}
-
- arm_func_start FUN_020BFE68
-FUN_020BFE68: ; 0x020BFE68
- stmdb sp!, {r4,lr}
- ldr r3, [r1, #0x18]
- mov r2, #0x0
- str r3, [r0, #0x0]
- ldr r3, [r1, #0x1c]
- str r3, [r0, #0x14]
- str r2, [r0, #0x4]
- ldr r12, [r1, #0x24]
- ldr r3, [r1, #0x18]
- ldr r4, [r1, #0x28]
- smull lr, r3, r12, r3
- mov r12, lr, lsr #0xc
- orr r12, r12, r3, lsl #0x14
- ldrh lr, [r1, #0x2c]
- rsb r3, r12, #0x0
- ldr r12, [r1, #0x1c]
- rsb r4, r4, #0x0
- mul r3, lr, r3
- smull lr, r12, r4, r12
- mov r3, r3, lsl #0x4
- str r3, [r0, #0x30]
- mov r4, lr, lsr #0xc
- ldrh r3, [r1, #0x2e]
- ldr r1, [r1, #0x1c]
- orr r4, r4, r12, lsl #0x14
- add r1, r1, r4
- rsb r3, r3, #0x0
- sub r1, r1, #0x1000
- mul r1, r3, r1
- mov r1, r1, lsl #0x4
- str r1, [r0, #0x34]
- str r2, [r0, #0x10]
- ldmia sp!, {r4,pc}
-
- arm_func_start FUN_020BFEEC
-FUN_020BFEEC: ; 0x020BFEEC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r5, r1
- ldrh r2, [r5, #0x2c]
- ldrh r1, [r5, #0x2e]
- mov r6, r0
- mov r4, r2, lsl #0xc
- mov r7, r1, lsl #0xc
- mov r0, r7
- mov r1, r4
- bl FX_DivAsync
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x0]
- ldrsh r0, [r5, #0x22]
- str r0, [r6, #0x14]
- bl FX_GetDivResult
- ldrsh r2, [r5, #0x20]
- mov r1, r7
- mul r0, r2, r0
- mov r2, r0, asr #0xc
- mov r0, r4
- str r2, [r6, #0x4]
- bl FX_DivAsync
- ldrsh lr, [r5, #0x20]
- ldr r4, [r5, #0x28]
- ldrsh r0, [r5, #0x22]
- ldr r12, [r5, #0x24]
- smull r3, r2, r4, lr
- smlal r3, r2, r12, r0
- smull r1, r0, r4, r0
- mov r3, r3, lsr #0xc
- orr r3, r3, r2, lsl #0x14
- sub r4, lr, r3
- smull r3, r2, r12, lr
- subs r1, r3, r1
- sbc r0, r2, r0
- ldrh r2, [r5, #0x2c]
- mov r1, r1, lsr #0xc
- orr r1, r1, r0, lsl #0x14
- mul r0, r2, r4
- mov r0, r0, lsl #0x4
- str r0, [r6, #0x30]
- ldrsh r0, [r5, #0x22]
- ldrh r2, [r5, #0x2e]
- add r0, r0, r1
- rsb r1, r2, #0x0
- sub r0, r0, #0x1000
- mul r0, r1, r0
- mov r0, r0, lsl #0x4
- str r0, [r6, #0x34]
- bl FX_GetDivResult
- ldrsh r1, [r5, #0x20]
- rsb r1, r1, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r6, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,pc}
-
- arm_func_start FUN_020BFFD4
-FUN_020BFFD4: ; 0x020BFFD4
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- mov r6, r1
- ldrh r2, [r6, #0x2c]
- ldrh r1, [r6, #0x2e]
- mov r7, r0
- mov r10, r2, lsl #0xc
- mov r11, r1, lsl #0xc
- mov r0, r11
- mov r1, r10
- bl FX_DivAsync
- ldrsh r3, [r6, #0x22]
- ldr r0, [r6, #0x18]
- ldrsh r9, [r6, #0x20]
- smull r2, r1, r0, r3
- mov r2, r2, lsr #0xc
- ldr r8, [r6, #0x1c]
- orr r2, r2, r1, lsl #0x14
- str r2, [r7, #0x0]
- smull r2, r1, r8, r3
- mov r4, r2, lsr #0xc
- orr r4, r4, r1, lsl #0x14
- smull r2, r1, r0, r9
- mov r5, r2, lsr #0xc
- orr r5, r5, r1, lsl #0x14
- str r4, [r7, #0x14]
- bl FX_GetDivResult
- smull r2, r1, r8, r9
- mov r2, r2, lsr #0xc
- orr r2, r2, r1, lsl #0x14
- mul r0, r2, r0
- mov r0, r0, asr #0xc
- str r0, [r7, #0x4]
- mov r0, r10
- mov r1, r11
- bl FX_DivAsync
- ldr lr, [r6, #0x1c]
- ldrsh r2, [r6, #0x20]
- ldr r8, [r6, #0x24]
- ldr r0, [r6, #0x28]
- smull r10, r9, r8, r2
- ldrh r1, [r6, #0x2c]
- smull r3, r2, r0, r2
- ldrsh r12, [r6, #0x22]
- str r1, [sp, #0x0]
- mov r11, lr, asr #0x1f
- smlal r3, r2, r8, r12
- smull r8, r12, r0, r12
- subs r8, r10, r8
- sbc r0, r9, r12
- mov r9, r8, lsr #0xc
- mov r12, r3, lsr #0xc
- orr r9, r9, r0, lsl #0x14
- mov r3, r2, asr #0xc
- orr r12, r12, r2, lsl #0x14
- umull r10, r2, r9, lr
- mla r2, r9, r11, r2
- mov r8, r0, asr #0xc
- mla r2, r8, lr, r2
- ldr r1, [r6, #0x18]
- mov r8, r10, lsr #0xc
- orr r8, r8, r2, lsl #0x14
- add r2, r4, r8
- mov r0, r1, asr #0x1f
- umull r8, r4, r12, r1
- mla r4, r12, r0, r4
- mla r4, r3, r1, r4
- mov r0, r8, lsr #0xc
- orr r0, r0, r4, lsl #0x14
- sub r1, r5, r0
- ldr r0, [sp, #0x0]
- sub r2, r2, #0x1000
- mul r1, r0, r1
- mov r0, r1, lsl #0x4
- str r0, [r7, #0x30]
- ldrh r0, [r6, #0x2e]
- rsb r0, r0, #0x0
- mul r1, r0, r2
- mov r0, r1, lsl #0x4
- str r0, [r7, #0x34]
- bl FX_GetDivResult
- rsb r1, r5, #0x0
- mul r0, r1, r0
- mov r0, r0, asr #0xc
- str r0, [r7, #0x10]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,pc}
diff --git a/arm9/global.inc b/arm9/global.inc
index 08432a05..4f8cce89 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -143,7 +143,7 @@
.extern DGT_Hash2SetSource
.extern DGTi_Hash2CalcHmac
.extern DGTi_hash2_arm4_small
-.extern ErrorHandling
+.extern GF_AssertFail
.extern FS_ChangeDir
.extern FS_CloseFile
.extern FS_ConvertPathToFileID
@@ -188,21 +188,21 @@
.extern FUN_02000EE8
.extern FUN_02000F18
.extern HandleDSLidAction
-.extern FUN_020010A8
-.extern FUN_02001204
-.extern FUN_02001300
-.extern FUN_02001328
-.extern FUN_02001354
-.extern FUN_020013C8
-.extern FUN_020013E8
-.extern FUN_0200143C
-.extern FUN_02001448
-.extern FUN_0200145C
-.extern FUN_02001464
-.extern FUN_02001470
-.extern FUN_02001538
-.extern FUN_02001658
-.extern FUN_02001B80
+.extern ListMenuInit
+.extern ListMenu_ProcessInput
+.extern DestroyListMenu
+.extern RedrawListMenu
+.extern ListMenuTestInputInternal
+.extern ListMenuTestInput
+.extern ListMenuOverrideSetColors
+.extern ListMenuGetCurrentItemArrayId
+.extern ListMenuGetScrollAndRow
+.extern ListMenuGetUnk33
+.extern ListMenuGetValueByArrayId
+.extern ListMenuGetTemplateField
+.extern ListMenuSetTemplateField
+.extern ListMenuGetItemStr
+.extern ListMenuCopyToVram
.extern FUN_02001B8C
.extern FUN_02001C14
.extern FUN_02001C34
@@ -236,7 +236,7 @@
.extern FontFunc
.extern FUN_02002DE0
.extern FUN_02002E14
-.extern FUN_02002E4C
+.extern GetFontAttribute
.extern FUN_02002ED0
.extern FUN_02002EEC
.extern FUN_02002F08
@@ -269,13 +269,13 @@
.extern DoSoundUpdateFrame
.extern FUN_02003CE8
.extern FUN_02003D38
-.extern FUN_02003F3C
-.extern FUN_02003F64
-.extern FUN_02003F78
-.extern FUN_02003F90
-.extern FUN_02003FA8
-.extern FUN_02003FC4
-.extern FUN_02003FDC
+.extern GF_Snd_SaveState
+.extern GF_Snd_RestoreState
+.extern GF_Snd_LoadGroup
+.extern GF_Snd_LoadSeq
+.extern GF_Snd_LoadSeqEx
+.extern GF_Snd_LoadWaveArc
+.extern GF_Snd_LoadBank
.extern FUN_02003FF4
.extern FUN_02004018
.extern FUN_020040F4
@@ -360,7 +360,7 @@
.extern FUN_02005614
.extern FUN_02005670
.extern FUN_020056AC
-.extern PlayBGM
+.extern PlaySound
.extern FUN_02005CBC
.extern FUN_02005CFC
.extern FUN_02005D20
@@ -394,22 +394,22 @@
.extern NARC_ReadFromMember
.extern NARC_ReadFile
.extern NARC_GetFileCount
-.extern FUN_0200687C
-.extern FUN_020068C8
-.extern FUN_02006930
-.extern FUN_02006948
-.extern FUN_02006A34
-.extern FUN_02006A8C
-.extern FUN_02006AE4
-.extern FUN_02006B38
-.extern FUN_02006BB0
-.extern FUN_02006BDC
-.extern FUN_02006C08
-.extern FUN_02006C30
-.extern FUN_02006C5C
-.extern FUN_02006C88
-.extern UncompressFromNarc
-.extern FUN_02006D18
+.extern GfGfxLoader_LoadCharData
+.extern GfGfxLoader_LoadScrnData
+.extern GfGfxLoader_GXLoadPal
+.extern GfGfxLoader_GXLoadPalWithSrcOffset
+.extern GfGfxLoader_LoadWholePalette
+.extern GfGfxLoader_PartiallyLoadPalette
+.extern GfGfxLoader_LoadImageMapping
+.extern GfGfxLoader_SetObjCntFlagsAndLoadImageMapping
+.extern GfGfxLoader_GetCharData
+.extern GfGfxLoader_GetScrnData
+.extern GfGfxLoader_GetPlttData
+.extern GfGfxLoader_GetCellBank
+.extern GfGfxLoader_GetAnimBank
+.extern GfGfxLoader_UncompressFromNarc
+.extern GfGfxLoader_LoadFromNarc
+.extern GfGfxLoader_LoadFromNarc_GetSizeOut
.extern FUN_02006D98
.extern FUN_02006ED4
.extern FUN_020072E8
@@ -805,17 +805,17 @@
.extern GF_RTC_CopyDate
.extern GF_RTC_TimeToSec
.extern GF_RTC_DateTimeToSec
-.extern FUN_02012710
+.extern GF_RTC_GetDayOfYear
.extern IsNighttime
.extern GF_RTC_GetTimeOfDay
.extern GF_RTC_GetTimeOfDayByHour
-.extern FUN_020127C0
-.extern ListMenu_ctor
-.extern ListMenu_dtor
-.extern ListMenu_ItemFromMsgData
-.extern ListMenu_AddItem
-.extern ListMenu_CopyItem
-.extern ListMenu_DestroyMenuStrings
+.extern GF_RTC_TimeDelta
+.extern ListMenuItems_ctor
+.extern ListMenuItems_dtor
+.extern ListMenuItems_AppendFromMsgData
+.extern ListMenuItems_AddItem
+.extern ListMenuItems_CopyItem
+.extern ListMenuItems_DestroyMenuStrings
.extern FUN_02012944
.extern FUN_02012974
.extern FUN_02012988
@@ -882,10 +882,10 @@
.extern FUN_02013628
.extern FUN_0201365C
.extern FUN_02013674
-.extern FUN_02013690
-.extern FUN_020136C0
-.extern FUN_020136E0
-.extern FUN_020136F8
+.extern ListMenuCursorNew
+.extern DestroyListMenuCursorObj
+.extern ListMenuCursorSetColor
+.extern ListMenuUpdateCursorObj
.extern MailMsg_init
.extern MailMsg_init_withBank
.extern MailMsg_init_default
@@ -1029,7 +1029,7 @@
.extern AllocFromHeap
.extern AllocFromHeapAtEnd
.extern FreeToHeap
-.extern FUN_02016A8C
+.extern FreeToHeapExplicit
.extern FUN_02016AF8
.extern FUN_02016B20
.extern FUN_02016B44
@@ -1068,10 +1068,10 @@
.extern FUN_0201886C
.extern FUN_02018878
.extern FUN_02018884
-.extern FUN_02018A60
+.extern BlitBitmapRect4Bit
.extern FUN_02018F4C
-.extern FUN_02018FF4
-.extern FUN_0201901C
+.extern AllocWindows
+.extern InitWindow
.extern FUN_02019048
.extern FUN_02019064
.extern FUN_020190EC
@@ -1098,15 +1098,15 @@
.extern FUN_020195D0
.extern FUN_020195E4
.extern FUN_0201960C
-.extern FUN_02019620
-.extern FUN_02019658
-.extern FUN_02019684
-.extern FUN_020196F4
+.extern FillWindowPixelBuffer
+.extern BlitBitmapRectToWindow
+.extern BlitBitmapRect
+.extern FillWindowPixelRect
.extern FUN_0201974C
-.extern FUN_0201A8C8
+.extern ScrollWindow
.extern FUN_0201AB08
-.extern FUN_0201AB0C
-.extern FUN_0201AB10
+.extern GetWindowWidth
+.extern GetWindowHeight
.extern FUN_0201AB14
.extern FUN_0201AB18
.extern FUN_0201AB1C
@@ -1977,16 +1977,16 @@
.extern AddIGTSeconds
.extern GetIGTHours
.extern GetIGTMinutes
-.extern FUN_02029EC4
-.extern FUN_02029ECC
-.extern FUN_02029EE4
-.extern FUN_02029EF8
-.extern FUN_02029F04
-.extern FUN_02029F08
-.extern FUN_02029F10
-.extern FUN_02029F14
-.extern FUN_02029F4C
-.extern FUN_02029F9C
+.extern Sav2_Chatot_sizeof
+.extern Sav2_Chatot_init
+.extern Chatot_new
+.extern Sav2_Chatot_get
+.extern Chatot_exists
+.extern Chatot_invalidate
+.extern Chatot_GetData
+.extern Chatot_Decode
+.extern Chatot_Encode
+.extern Chatot_copy
.extern FUN_02029FB0
.extern FUN_02029FB8
.extern FUN_02029FC8
@@ -2748,7 +2748,7 @@
.extern ScrCmd_Unk01FD
.extern ScrCmd_Unk01FE
.extern ScrCmd_Unk01FF
-.extern ScrCmd_Unk026D
+.extern ScrCmd_MessageUnown
.extern ScrCmd_Unk002C
.extern ScrCmd_Unk002D
.extern ScrCmd_Unk02C0
@@ -2758,9 +2758,9 @@
.extern ScrCmd_WaitButtonAB
.extern ScrCmd_WaitButtonABTime
.extern ScrCmd_WaitButton
-.extern ScrCmd_Unk0032
+.extern ScrCmd_WaitButtonABPad
.extern ScrCmd_Unk0033
-.extern ScrCmd_Unk0034
+.extern ScrCmd_CloseMessageBox
.extern ScrCmd_Unk0035
.extern ScrCmd_ScrollBg
.extern ScrCmd_CreateMessageBox
@@ -2786,404 +2786,404 @@
.extern ScrCmd_Unk0048
.extern ScrCmd_Unk02CF
.extern ScrCmd_Unk02D0
-.extern FUN_0203AFC4
-.extern FUN_0203B024
-.extern FUN_0203B148
-.extern FUN_0203B1F0
-.extern FUN_0203B2E0
-.extern FUN_0203B3B0
-.extern FUN_0203B3C0
-.extern FUN_0203B3DC
-.extern FUN_0203B3F8
-.extern FUN_0203B440
-.extern FUN_0203B468
-.extern FUN_0203B500
-.extern FUN_0203B544
-.extern FUN_0203B574
-.extern FUN_0203B5B8
-.extern FUN_0203B618
-.extern FUN_0203B640
-.extern FUN_0203B724
-.extern FUN_0203B758
-.extern FUN_0203B790
-.extern FUN_0203B7D8
-.extern FUN_0203B7F0
-.extern FUN_0203B81C
-.extern FUN_0203B85C
-.extern FUN_0203B8A0
-.extern FUN_0203B8E4
-.extern FUN_0203B914
-.extern FUN_0203B944
-.extern FUN_0203B968
-.extern FUN_0203B9B4
-.extern FUN_0203BA3C
-.extern FUN_0203BAB0
-.extern FUN_0203BAF4
-.extern FUN_0203BB34
-.extern FUN_0203BB80
-.extern FUN_0203BB84
-.extern FUN_0203BB88
-.extern FUN_0203BB8C
+.extern ScrCmd_Unk005E
+.extern ScrCmd_Unk02A1
+.extern ScrCmd_Unk005F
+.extern ScrCmd_Unk0060
+.extern ScrCmd_Unk02B4
+.extern ScrCmd_Unk0061
+.extern ScrCmd_Unk0062
+.extern ScrCmd_Unk0063
+.extern ScrCmd_Unk0064
+.extern ScrCmd_Unk0065
+.extern ScrCmd_Unk0066
+.extern ScrCmd_Unk0067
+.extern ScrCmd_Unk0068
+.extern ScrCmd_Unk0069
+.extern ScrCmd_Unk006A
+.extern ScrCmd_Unk01BD
+.extern ScrCmd_Unk006B
+.extern ScrCmd_Unk006C
+.extern ScrCmd_Unk006D
+.extern ScrCmd_Unk02AD
+.extern ScrCmd_Unk006E
+.extern ScrCmd_Unk02AB
+.extern ScrCmd_Unk0093
+.extern ScrCmd_Unk0094
+.extern ScrCmd_Unk0095
+.extern ScrCmd_Unk0191
+.extern ScrCmd_Unk02A5
+.extern ScrCmd_Unk0192
+.extern ScrCmd_Unk0193
+.extern ScrCmd_Unk0194
+.extern ScrCmd_Unk0195
+.extern ScrCmd_Unk0196
+.extern ScrCmd_Unk0197
+.extern ScrCmd_Unk009B
+.extern ScrCmd_Unk009C
+.extern ScrCmd_Unk009D
+.extern ScrCmd_Unk009E
+.extern ScrCmd_Unk009F
.extern FUN_0203BC04
-.extern FUN_0203BC1C
-.extern FUN_0203BC2C
-.extern FUN_0203BCBC
-.extern FUN_0203BCCC
-.extern FUN_0203BCD8
-.extern FUN_0203BD08
-.extern FUN_0203BD28
-.extern FUN_0203BDB8
-.extern FUN_0203BE50
-.extern FUN_0203BE68
-.extern FUN_0203BE80
-.extern FUN_0203BECC
-.extern FUN_0203BF00
-.extern FUN_0203BF20
-.extern FUN_0203BF2C
-.extern FUN_0203BF84
-.extern FUN_0203BFEC
-.extern FUN_0203C054
-.extern FUN_0203C090
-.extern FUN_0203C0CC
-.extern FUN_0203C0FC
-.extern FUN_0203C118
-.extern FUN_0203C12C
-.extern FUN_0203C174
-.extern FUN_0203C1AC
-.extern FUN_0203C200
-.extern ScrCmd_monstoragepc
-.extern FUN_0203C2C4
-.extern FUN_0203C2E0
-.extern FUN_0203C2F0
-.extern FUN_0203C300
-.extern ScrCmd_halloffame
-.extern FUN_0203C33C
-.extern FUN_0203C368
-.extern FUN_0203C3C8
-.extern FUN_0203C3E8
-.extern FUN_0203C430
-.extern FUN_0203C460
-.extern FUN_0203C4B0
-.extern FUN_0203C4F0
-.extern FUN_0203C520
-.extern FUN_0203C58C
-.extern FUN_0203C5BC
-.extern FUN_0203C614
-.extern FUN_0203C680
-.extern FUN_0203C6C4
-.extern FUN_0203C70C
-.extern FUN_0203C730
-.extern FUN_0203C788
-.extern FUN_0203C7E4
-.extern FUN_0203C7F4
-.extern FUN_0203C820
-.extern FUN_0203C844
-.extern FUN_0203C874
-.extern FUN_0203C8B4
-.extern FUN_0203C8E4
-.extern FUN_0203C930
-.extern FUN_0203C960
-.extern FUN_0203C990
-.extern FUN_0203CA20
-.extern FUN_0203CA2C
-.extern FUN_0203CA5C
-.extern FUN_0203CAE8
-.extern FUN_0203CB08
-.extern FUN_0203CB20
-.extern FUN_0203CB48
-.extern FUN_0203CB60
-.extern FUN_0203CB70
-.extern FUN_0203CBBC
-.extern FUN_0203CBE8
-.extern FUN_0203CC88
-.extern FUN_0203CD20
-.extern FUN_0203CDB8
-.extern FUN_0203CDC4
-.extern FUN_0203CDD0
-.extern FUN_0203CE00
-.extern FUN_0203CE0C
-.extern FUN_0203CE8C
-.extern FUN_0203CEBC
-.extern FUN_0203CF04
-.extern FUN_0203CF34
-.extern FUN_0203CF64
-.extern FUN_0203CF94
-.extern FUN_0203CFC4
-.extern FUN_0203CFC8
-.extern FUN_0203D050
-.extern FUN_0203D0A4
-.extern FUN_0203D0F8
-.extern FUN_0203D134
-.extern FUN_0203D140
-.extern FUN_0203D150
-.extern FUN_0203D178
-.extern FUN_0203D194
-.extern FUN_0203D1A4
-.extern FUN_0203D1C0
-.extern FUN_0203D214
-.extern FUN_0203D23C
-.extern FUN_0203D248
-.extern FUN_0203D278
-.extern FUN_0203D2A4
-.extern FUN_0203D2E4
-.extern FUN_0203D330
-.extern FUN_0203D33C
-.extern FUN_0203D36C
-.extern FUN_0203D3A4
-.extern FUN_0203D3DC
-.extern FUN_0203D448
-.extern FUN_0203D458
-.extern FUN_0203D490
-.extern FUN_0203D4E8
-.extern FUN_0203D528
-.extern FUN_0203D560
-.extern FUN_0203D5B0
-.extern FUN_0203D5F8
-.extern FUN_0203D60C
-.extern FUN_0203D61C
-.extern FUN_0203D630
-.extern FUN_0203D66C
-.extern FUN_0203D6C4
-.extern FUN_0203D728
-.extern FUN_0203D738
-.extern FUN_0203D774
-.extern FUN_0203D7DC
-.extern FUN_0203D834
-.extern FUN_0203D868
-.extern FUN_0203D874
-.extern ScrCmd_getplayergender
-.extern ScrCmd_healparty
-.extern FUN_0203D8E8
-.extern FUN_0203D8EC
-.extern FUN_0203D920
-.extern FUN_0203D938
-.extern FUN_0203D948
-.extern FUN_0203D958
-.extern FUN_0203D998
-.extern FUN_0203D9E8
-.extern FUN_0203DA78
-.extern FUN_0203DAB0
-.extern FUN_0203DAE8
-.extern FUN_0203DB38
-.extern FUN_0203DB88
-.extern FUN_0203DBD4
-.extern FUN_0203DC00
-.extern FUN_0203DC58
-.extern FUN_0203DC70
-.extern FUN_0203DC88
-.extern FUN_0203DCA0
-.extern FUN_0203DCB8
-.extern FUN_0203DCC8
-.extern FUN_0203DCD8
-.extern FUN_0203DCE8
-.extern FUN_0203DCF8
-.extern FUN_0203DD08
-.extern FUN_0203DD18
-.extern FUN_0203DD34
-.extern FUN_0203DD50
-.extern FUN_0203DD60
-.extern FUN_0203DE00
-.extern FUN_0203DE4C
-.extern FUN_0203DE58
-.extern FUN_0203DE80
-.extern FUN_0203DEA8
-.extern FUN_0203DEC4
-.extern FUN_0203DEF8
-.extern FUN_0203DF2C
-.extern FUN_0203DF38
-.extern FUN_0203DF64
-.extern FUN_0203DF84
-.extern FUN_0203DFA8
-.extern FUN_0203DFE0
-.extern FUN_0203E018
-.extern FUN_0203E054
-.extern FUN_0203E078
-.extern FUN_0203E0CC
-.extern FUN_0203E120
-.extern FUN_0203E138
-.extern FUN_0203E168
-.extern FUN_0203E254
-.extern FUN_0203E258
-.extern FUN_0203E29C
-.extern FUN_0203E2F8
-.extern FUN_0203E35C
-.extern FUN_0203E38C
-.extern FUN_0203E3D0
-.extern FUN_0203E408
-.extern FUN_0203E440
-.extern FUN_0203E470
-.extern FUN_0203E4A0
-.extern FUN_0203E4B0
-.extern FUN_0203E4D8
-.extern FUN_0203E4F0
-.extern FUN_0203E510
-.extern FUN_0203E568
-.extern FUN_0203E5DC
-.extern FUN_0203E674
-.extern FUN_0203E684
-.extern FUN_0203E6B4
-.extern FUN_0203E6C4
-.extern FUN_0203E6FC
-.extern FUN_0203E72C
-.extern FUN_0203E744
-.extern FUN_0203E774
-.extern FUN_0203E7F0
-.extern FUN_0203E81C
-.extern FUN_0203E848
-.extern FUN_0203E858
-.extern FUN_0203E870
-.extern FUN_0203E894
-.extern FUN_0203E8C4
-.extern FUN_0203E8F4
-.extern FUN_0203E928
-.extern FUN_0203E940
-.extern FUN_0203E954
-.extern FUN_0203E968
-.extern FUN_0203E9CC
-.extern FUN_0203EA68
-.extern FUN_0203EA90
-.extern FUN_0203EAB0
-.extern FUN_0203EB20
-.extern FUN_0203EB48
-.extern FUN_0203EB88
-.extern ScrCmd_gameversion
-.extern ScrCmd_givewallpaper
-.extern FUN_0203ECAC
-.extern FUN_0203ECD8
-.extern FUN_0203ECF4
-.extern FUN_0203ED10
-.extern ScrCmd_pcfreespace
-.extern FUN_0203EDA4
-.extern FUN_0203EDC8
-.extern FUN_0203EDE0
-.extern FUN_0203EE08
-.extern FUN_0203EE18
-.extern FUN_0203EE28
-.extern FUN_0203EE58
-.extern FUN_0203EE68
-.extern FUN_0203EE78
-.extern FUN_0203EE98
-.extern FUN_0203EED8
-.extern FUN_0203EF58
-.extern FUN_0203F00C
-.extern FUN_0203F020
-.extern FUN_0203F034
-.extern FUN_0203F058
-.extern FUN_0203F07C
-.extern FUN_0203F110
-.extern FUN_0203F174
-.extern FUN_0203F19C
-.extern FUN_0203F234
-.extern FUN_0203F254
-.extern FUN_0203F26C
-.extern FUN_0203F2AC
-.extern FUN_0203F2E4
-.extern FUN_0203F31C
-.extern FUN_0203F348
-.extern FUN_0203F38C
-.extern FUN_0203F39C
-.extern FUN_0203F3AC
-.extern FUN_0203F418
-.extern FUN_0203F44C
-.extern FUN_0203F484
-.extern FUN_0203F4D8
-.extern FUN_0203F508
-.extern FUN_0203F5D4
-.extern FUN_0203F604
-.extern FUN_0203F634
-.extern FUN_0203F664
-.extern FUN_0203F6E4
-.extern FUN_0203F720
-.extern FUN_0203F760
-.extern FUN_0203F7C8
-.extern FUN_0203F80C
-.extern FUN_0203F880
-.extern FUN_0203F8C0
-.extern FUN_0203F924
-.extern FUN_0203F954
-.extern FUN_0203F988
-.extern FUN_0203F9B0
-.extern FUN_0203F9DC
-.extern FUN_0203FA14
-.extern FUN_0203FA58
-.extern FUN_0203FB4C
-.extern FUN_0203FB64
-.extern FUN_0203FB94
-.extern FUN_0203FBA0
-.extern FUN_0203FBAC
-.extern FUN_0203FBBC
-.extern FUN_0203FC1C
-.extern FUN_0203FC58
-.extern FUN_0203FC80
-.extern FUN_0203FCB0
-.extern FUN_0203FCDC
-.extern FUN_0203FCF4
-.extern FUN_0203FDBC
-.extern FUN_0203FE08
-.extern FUN_0203FE48
-.extern FUN_0203FE80
-.extern FUN_0203FE90
-.extern FUN_0203FEC0
-.extern FUN_0203FF10
-.extern FUN_02040028
-.extern FUN_02040074
-.extern FUN_020400C8
-.extern FUN_0204011C
-.extern FUN_02040170
-.extern FUN_020401CC
-.extern FUN_02040204
-.extern FUN_02040220
-.extern FUN_0204025C
-.extern FUN_02040298
-.extern FUN_020402D4
-.extern FUN_02040304
-.extern FUN_02040340
-.extern FUN_02040370
-.extern FUN_020403A0
-.extern FUN_020403D0
-.extern FUN_02040414
-.extern FUN_02040458
-.extern FUN_02040488
-.extern FUN_020404FC
-.extern FUN_0204052C
-.extern FUN_0204056C
-.extern FUN_0204059C
-.extern FUN_020405B4
-.extern FUN_020405CC
-.extern FUN_020405F8
-.extern FUN_02040638
-.extern FUN_0204064C
-.extern FUN_02040660
-.extern FUN_020406C0
+.extern ScrCmd_Unk00A1
+.extern ScrCmd_Unk01F8
+.extern ScrCmd_Unk00A2
+.extern ScrCmd_Unk00A3
+.extern ScrCmd_Unk00A4
+.extern ScrCmd_Unk0207
+.extern ScrCmd_Unk0208
+.extern ScrCmd_Unk028C
+.extern ScrCmd_Unk0209
+.extern ScrCmd_Unk028D
+.extern ScrCmd_Unk028E
+.extern ScrCmd_Unk020A
+.extern ScrCmd_Unk020B
+.extern ScrCmd_Unk00A5
+.extern ScrCmd_Unk00A6
+.extern ScrCmd_Unk00A7
+.extern ScrCmd_Unk00A8
+.extern ScrCmd_Unk012E
+.extern ScrCmd_Unk012F
+.extern ScrCmd_Unk0130
+.extern ScrCmd_Unk0205
+.extern ScrCmd_Unk00A9
+.extern ScrCmd_Unk00AA
+.extern ScrCmd_Unk01D7
+.extern ScrCmd_Unk01D8
+.extern ScrCmd_Unk01D9
+.extern ScrCmd_MonStoragePC
+.extern ScrCmd_Unk00AC
+.extern ScrCmd_Unk00AD
+.extern ScrCmd_Unk00AE
+.extern ScrCmd_Unk00AF
+.extern ScrCmd_HallOfFame
+.extern ScrCmd_Unk00B1
+.extern ScrCmd_Unk00B2
+.extern ScrCmd_Unk00B3
+.extern ScrCmd_Unk00B4
+.extern ScrCmd_Unk00B5
+.extern ScrCmd_Unk0178
+.extern ScrCmd_Unk0179
+.extern ScrCmd_Unk00BA
+.extern ScrCmd_Unk00BB
+.extern ScrCmd_Unk0271
+.extern ScrCmd_Unk0243
+.extern ScrCmd_Unk0244
+.extern ScrCmd_Unk0245
+.extern ScrCmd_Unk00BC
+.extern ScrCmd_Unk00BD
+.extern ScrCmd_Unk00BE
+.extern ScrCmd_Unk0203
+.extern ScrCmd_Unk0204
+.extern ScrCmd_Unk0200
+.extern ScrCmd_Unk0201
+.extern ScrCmd_Unk00BF
+.extern ScrCmd_Unk00C0
+.extern ScrCmd_Unk00C1
+.extern ScrCmd_Unk00C2
+.extern ScrCmd_Unk00C3
+.extern ScrCmd_Unk00C4
+.extern ScrCmd_Unk00C5
+.extern ScrCmd_Unk00C6
+.extern ScrCmd_Unk00C7
+.extern ScrCmd_Unk00C8
+.extern ScrCmd_Unk02BF
+.extern ScrCmd_Unk00C9
+.extern ScrCmd_Unk00CA
+.extern ScrCmd_Unk00CB
+.extern ScrCmd_Unk00CC
+.extern ScrCmd_Unk00E3
+.extern ScrCmd_Unk00DE
+.extern ScrCmd_Unk00E6
+.extern ScrCmd_Unk00F2
+.extern ScrCmd_Unk00F3
+.extern ScrCmd_Unk00F4
+.extern ScrCmd_Unk00F5
+.extern ScrCmd_Unk00F6
+.extern ScrCmd_Unk00F7
+.extern ScrCmd_Unk011B
+.extern ScrCmd_Unk011C
+.extern ScrCmd_Unk011D
+.extern ScrCmd_Unk011E
+.extern ScrCmd_Unk011F
+.extern ScrCmd_Unk0120
+.extern ScrCmd_Unk0121
+.extern ScrCmd_Unk0122
+.extern ScrCmd_Unk0123
+.extern ScrCmd_Unk0124
+.extern ScrCmd_Unk02BD
+.extern ScrCmd_Unk0125
+.extern ScrCmd_Unk0126
+.extern ScrCmd_Unk0127
+.extern ScrCmd_Unk0128
+.extern ScrCmd_Unk0129
+.extern ScrCmd_Unk012A
+.extern ScrCmd_Unk012B
+.extern ScrCmd_Unk012C
+.extern ScrCmd_Unk012D
+.extern ScrCmd_Unk0131
+.extern ScrCmd_Unk0132
+.extern ScrCmd_Unk0133
+.extern ScrCmd_Unk0134
+.extern ScrCmd_Unk0135
+.extern ScrCmd_Unk0136
+.extern ScrCmd_Unk0137
+.extern ScrCmd_Unk0138
+.extern ScrCmd_Unk0139
+.extern ScrCmd_Unk013C
+.extern ScrCmd_Unk013D
+.extern ScrCmd_Unk013E
+.extern ScrCmd_Unk013F
+.extern ScrCmd_Unk02BA
+.extern ScrCmd_Unk0140
+.extern ScrCmd_Unk0146
+.extern ScrCmd_Unk0141
+.extern ScrCmd_Unk0142
+.extern ScrCmd_Unk013A
+.extern ScrCmd_Unk013B
+.extern ScrCmd_Unk0143
+.extern ScrCmd_Unk0144
+.extern ScrCmd_Unk0145
+.extern ScrCmd_Unk0153
+.extern ScrCmd_Unk0154
+.extern ScrCmd_Unk0155
+.extern ScrCmd_Unk029C
+.extern ScrCmd_Unk0156
+.extern ScrCmd_Unk014B
+.extern ScrCmd_Unk014C
+.extern ScrCmd_GetPlayerGender
+.extern ScrCmd_HealParty
+.extern ScrCmd_Unk014F
+.extern ScrCmd_Unk0150
+.extern ScrCmd_Unk02BB
+.extern ScrCmd_Unk0151
+.extern ScrCmd_Unk0152
+.extern ScrCmd_Unk017A
+.extern ScrCmd_Unk0186
+.extern ScrCmd_Unk0187
+.extern ScrCmd_Unk0188
+.extern ScrCmd_Unk0189
+.extern ScrCmd_Unk018A
+.extern ScrCmd_Unk018B
+.extern ScrCmd_Unk018C
+.extern ScrCmd_Unk018F
+.extern ScrCmd_Unk0168
+.extern ScrCmd_Unk0169
+.extern ScrCmd_Unk016A
+.extern ScrCmd_Unk016B
+.extern ScrCmd_Unk016C
+.extern ScrCmd_Unk016F
+.extern ScrCmd_Unk0170
+.extern ScrCmd_Unk0171
+.extern ScrCmd_Unk0172
+.extern ScrCmd_Unk0173
+.extern ScrCmd_Unk0174
+.extern ScrCmd_Unk0175
+.extern ScrCmd_Unk0176
+.extern ScrCmd_Unk01AC
+.extern ScrCmd_Unk019E
+.extern ScrCmd_Unk019F
+.extern ScrCmd_Unk01A0
+.extern ScrCmd_Unk01A1
+.extern ScrCmd_Unk01A2
+.extern ScrCmd_Unk003F
+.extern ScrCmd_Unk01B1
+.extern ScrCmd_Unk01B2
+.extern ScrCmd_Unk01B3
+.extern ScrCmd_Unk01B4
+.extern ScrCmd_Unk01B5
+.extern ScrCmd_Unk01B6
+.extern ScrCmd_Unk01B7
+.extern ScrCmd_Unk01B8
+.extern ScrCmd_Unk01C1
+.extern ScrCmd_Unk01C2
+.extern ScrCmd_Unk01C3
+.extern ScrCmd_Unk01C4
+.extern ScrCmd_Unk01C5
+.extern ScrCmd_Unk01CC
+.extern ScrCmd_Unk01CD
+.extern ScrCmd_Unk01CE
+.extern ScrCmd_Unk01D2
+.extern ScrCmd_Unk01D3
+.extern ScrCmd_Unk01D4
+.extern ScrCmd_Unk01D5
+.extern ScrCmd_Unk01D6
+.extern ScrCmd_Unk01E8
+.extern ScrCmd_Unk01E9
+.extern ScrCmd_Unk01EA
+.extern ScrCmd_Unk01EB
+.extern ScrCmd_Unk01EC
+.extern ScrCmd_Unk01ED
+.extern ScrCmd_Unk01EF
+.extern ScrCmd_Unk01E5
+.extern ScrCmd_Unk01E6
+.extern ScrCmd_Unk01E7
+.extern ScrCmd_Unk0202
+.extern ScrCmd_Unk0206
+.extern ScrCmd_Unk020D
+.extern ScrCmd_Unk020E
+.extern ScrCmd_Unk020F
+.extern ScrCmd_Unk0210
+.extern ScrCmd_Unk0211
+.extern ScrCmd_Unk0214
+.extern ScrCmd_Unk0218
+.extern ScrCmd_Unk0219
+.extern ScrCmd_Unk021A
+.extern ScrCmd_Unk021B
+.extern ScrCmd_Unk021C
+.extern ScrCmd_Unk0226
+.extern ScrCmd_Unk0227
+.extern ScrCmd_Unk0228
+.extern ScrCmd_Unk0229
+.extern ScrCmd_Unk022A
+.extern ScrCmd_Unk022B
+.extern ScrCmd_Unk022C
+.extern ScrCmd_Unk022D
+.extern ScrCmd_Unk0233
+.extern ScrCmd_Unk0234
+.extern ScrCmd_Unk0239
+.extern ScrCmd_Unk023A
+.extern ScrCmd_Unk023B
+.extern ScrCmd_Unk023C
+.extern ScrCmd_Unk023D
+.extern ScrCmd_GameVersion
+.extern ScrCmd_GiveWallpaper
+.extern ScrCmd_Unk024A
+.extern ScrCmd_Unk024B
+.extern ScrCmd_Unk024C
+.extern ScrCmd_Unk024D
+.extern ScrCmd_PCFreeSpace
+.extern ScrCmd_Unk0258
+.extern ScrCmd_Unk0259
+.extern ScrCmd_Unk025A
+.extern ScrCmd_Unk025B
+.extern ScrCmd_Unk025C
+.extern ScrCmd_Unk025D
+.extern ScrCmd_Unk025E
+.extern ScrCmd_Unk025F
+.extern ScrCmd_Unk0260
+.extern ScrCmd_Unk0262
+.extern ScrCmd_Unk0263
+.extern ScrCmd_Unk0264
+.extern ScrCmd_Unk0265
+.extern ScrCmd_Unk0266
+.extern ScrCmd_Unk0267
+.extern ScrCmd_Unk0268
+.extern ScrCmd_Unk0269
+.extern ScrCmd_Unk026A
+.extern ScrCmd_Unk026B
+.extern ScrCmd_Unk026C
+.extern ScrCmd_Unk026E
+.extern ScrCmd_Unk026F
+.extern ScrCmd_Unk0270
+.extern ScrCmd_Unk0273
+.extern ScrCmd_Unk0275
+.extern ScrCmd_Unk0277
+.extern ScrCmd_Unk0279
+.extern ScrCmd_Unk027A
+.extern ScrCmd_Unk027B
+.extern ScrCmd_Unk027D
+.extern ScrCmd_Unk027F
+.extern ScrCmd_Unk027E
+.extern ScrCmd_Unk0282
+.extern ScrCmd_Unk0284
+.extern ScrCmd_Unk0285
+.extern ScrCmd_Unk0286
+.extern ScrCmd_Unk0287
+.extern ScrCmd_Unk0288
+.extern ScrCmd_Unk0289
+.extern ScrCmd_Unk028A
+.extern ScrCmd_Unk028B
+.extern ScrCmd_Unk028F
+.extern ScrCmd_Unk0290
+.extern ScrCmd_Unk0291
+.extern ScrCmd_Unk0292
+.extern ScrCmd_Unk029E
+.extern ScrCmd_Unk0293
+.extern ScrCmd_Unk029F
+.extern ScrCmd_Unk02A3
+.extern ScrCmd_Unk02A4
+.extern ScrCmd_Unk02A2
+.extern ScrCmd_Unk02A7
+.extern ScrCmd_Unk02AA
+.extern ScrCmd_Unk02AC
+.extern ScrCmd_Unk02AF
+.extern ScrCmd_Unk02B0
+.extern ScrCmd_Unk02B1
+.extern ScrCmd_Unk02B2
+.extern ScrCmd_Unk02B5
+.extern ScrCmd_Unk02B6
+.extern ScrCmd_Unk02BE
+.extern ScrCmd_Unk02C1
+.extern ScrCmd_Unk02C2
+.extern ScrCmd_Unk02C3
+.extern ScrCmd_NormalMart
+.extern ScrCmd_SpecialMart
+.extern ScrCmd_GoodsMart
+.extern ScrCmd_SealsMart
+.extern ScrCmd_AccessoriesShop
+.extern ScrCmd_Unk00F8
+.extern ScrCmd_Unk00F9
+.extern ScrCmd_Unk00FA
+.extern ScrCmd_Unk00FB
+.extern ScrCmd_Unk00FC
+.extern ScrCmd_Unk00FD
+.extern ScrCmd_Unk00FE
+.extern ScrCmd_Unk00FF
+.extern ScrCmd_Unk0100
+.extern ScrCmd_Unk0101
+.extern ScrCmd_Unk0102
+.extern ScrCmd_Unk0103
+.extern ScrCmd_Unk0104
+.extern ScrCmd_Unk0105
+.extern ScrCmd_Unk0106
+.extern ScrCmd_Unk0107
+.extern ScrCmd_Unk0108
+.extern ScrCmd_Unk0109
+.extern ScrCmd_Unk010A
+.extern ScrCmd_Unk010B
+.extern ScrCmd_Unk010C
+.extern ScrCmd_Unk0110
+.extern ScrCmd_Unk010D
+.extern ScrCmd_Unk010E
+.extern ScrCmd_Unk010F
+.extern ScrCmd_Unk0117
+.extern ScrCmd_Unk0118
+.extern ScrCmd_Unk0111
+.extern ScrCmd_Unk0112
+.extern ScrCmd_Unk0113
+.extern ScrCmd_Unk0114
+.extern ScrCmd_Unk0115
+.extern ScrCmd_Unk0116
.extern ScrCmd_GetPlayerName
.extern ScrCmd_GetRivalName
.extern ScrCmd_GetFriendName
-.extern ScrCmd_Unk00D0
+.extern ScrCmd_GetPokemonName
.extern ScrCmd_GetItemName
.extern ScrCmd_GetPocketName
.extern ScrCmd_GetTMHMMoveName
.extern ScrCmd_GetMoveName
.extern ScrCmd_Unk00D5
.extern ScrCmd_Unk0280
-.extern ScrCmd_Unk00D6
+.extern ScrCmd_GetPokemonNickname
.extern ScrCmd_Unk0251
.extern ScrCmd_GetPoketchAppName
.extern ScrCmd_GetTrainerClassName
.extern ScrCmd_Unk00D9
.extern ScrCmd_Unk00DA
-.extern ScrCmd_Unk00DB
-.extern ScrCmd_Unk00DC
-.extern ScrCmd_Unk00DD
+.extern ScrCmd_GetPlayerStarterName
+.extern ScrCmd_GetRivalStarterName
+.extern ScrCmd_GetCounterpartStarterName
.extern ScrCmd_GetDecorationName
.extern ScrCmd_GetUndergroundTrapName
.extern ScrCmd_GetUndergroundItemName
-.extern ScrCmd_Unk00E2
-.extern ScrCmd_Unk017B
+.extern ScrCmd_GetMapName
+.extern ScrCmd_GetBerryName
.extern ScrCmd_GetNatureName
.extern ScrCmd_GetFashionName
-.extern ScrCmd_Unk0272
+.extern ScrCmd_GetWhiteRockInscription
.extern ScrCmd_GetPokemonMoveName
-.extern ScrCmd_Unk0232
+.extern ScrCmd_GetRibbonName
.extern ScrCmd_GetSealName
.extern ScrCmd_GetItemNameWithIndefArticle
.extern ScrCmd_GetItemNamePlural
@@ -3196,94 +3196,94 @@
.extern ScrCmd_Unk02CC
.extern ScrCmd_GetSealNamePlural
.extern ScrCmd_CapitalizeFirstChar
-.extern FUN_02041194
-.extern FUN_020411C4
-.extern FUN_02041340
-.extern FUN_020413C0
-.extern FUN_020413E8
-.extern FUN_020413F8
-.extern FUN_0204140C
-.extern FUN_02041424
-.extern FUN_0204143C
-.extern FUN_02041478
-.extern FUN_0204149C
-.extern FUN_020414B8
-.extern FUN_020414CC
-.extern FUN_020414E0
-.extern FUN_020414FC
-.extern FUN_02041518
-.extern FUN_02041558
-.extern ScrCmd_waitcry
-.extern ScrCmd_playbgm
-.extern FUN_020415BC
-.extern FUN_020415E0
-.extern FUN_02041618
-.extern FUN_02041644
-.extern FUN_02041650
-.extern FUN_02041664
-.extern FUN_02041674
-.extern FUN_020416A8
-.extern FUN_02041770
-.extern FUN_020417E0
-.extern FUN_02041808
-.extern FUN_0204185C
-.extern FUN_0204188C
-.extern FUN_0204190C
-.extern FUN_02041970
-.extern FUN_020419F8
-.extern FUN_02041A80
-.extern FUN_02041AB4
-.extern FUN_02041AD4
-.extern FUN_02041AE0
-.extern FUN_02041B10
-.extern FUN_02041B40
-.extern FUN_02041B70
-.extern FUN_02041B9C
-.extern FUN_02041BC4
-.extern FUN_02041BF0
-.extern FUN_02041C38
-.extern FUN_02041E40
-.extern FUN_02041FDC
-.extern FUN_02042000
-.extern FUN_02042038
-.extern FUN_02042110
-.extern FUN_0204214C
-.extern FUN_02042354
-.extern FUN_02042364
-.extern FUN_02042394
-.extern FUN_020423B0
-.extern FUN_02042700
-.extern FUN_02042780
-.extern FUN_020427A8
-.extern FUN_020427D0
-.extern FUN_02042864
-.extern FUN_02042894
-.extern FUN_020428E0
-.extern FUN_02042950
-.extern FUN_02042980
-.extern FUN_02042998
-.extern FUN_020429B8
-.extern FUN_020429E8
-.extern FUN_02042A18
-.extern FUN_02042A48
-.extern FUN_02042A98
-.extern ScrCmd_Unk017D
-.extern ScrCmd_Unk017E
-.extern ScrCmd_Unk017F
-.extern ScrCmd_Unk0180
-.extern ScrCmd_Unk0181
-.extern ScrCmd_Unk0182
-.extern ScrCmd_Unk0183
+.extern ScrCmd_Unk024E
+.extern ScrCmd_Unk024F
+.extern ScrCmd_Unk0250
+.extern ScrCmd_Unk02AE
+.extern ScrCmd_PlayBgm
+.extern ScrCmd_StopBgm
+.extern ScrCmd_PlayDefaultBgm
+.extern ScrCmd_Unk0053
+.extern ScrCmd_FadeOutBgm
+.extern ScrCmd_FadeInBgm
+.extern ScrCmd_Unk0056
+.extern ScrCmd_Unk0057
+.extern ScrCmd_Unk0058
+.extern ScrCmd_PlayFanfare
+.extern ScrCmd_StopFanfare
+.extern ScrCmd_PlayFanfareWait
+.extern ScrCmd_PlayCry
+.extern ScrCmd_PlayCryWait
+.extern ScrCmd_PlaySound
+.extern ScrCmd_PlaySoundWait
+.extern ScrCmd_CheckChatotCry
+.extern ScrCmd_StartChatotRecord
+.extern ScrCmd_StopChatotRecord
+.extern ScrCmd_SaveChatotCry
+.extern ScrCmd_Unk005D
+.extern ScrCmd_SetVolume
+.extern ScrCmd_Unk00B6
+.extern ScrCmd_Unk00B7
+.extern ScrCmd_Unk00B8
+.extern ScrCmd_Unk00B9
+.extern ScrCmd_Unk00E4
+.extern ScrCmd_Unk00E5
+.extern ScrCmd_Unk02A0
+.extern ScrCmd_Unk00E7
+.extern ScrCmd_Unk00E8
+.extern ScrCmd_Unk00E9
+.extern ScrCmd_Unk00EA
+.extern ScrCmd_Unk00EB
+.extern ScrCmd_Unk00EC
+.extern ScrCmd_Unk00ED
+.extern ScrCmd_Unk02BC
+.extern ScrCmd_Unk00EE
+.extern ScrCmd_Unk00EF
+.extern ScrCmd_Unk00F0
+.extern ScrCmd_Unk00F1
+.extern ScrCmd_Unk021D
+.extern ScrCmd_Unk0235
+.extern ScrCmd_Unk0236
+.extern ScrCmd_Unk02B8
+.extern ScrCmd_Unk0237
+.extern ScrCmd_Unk0238
+.extern ScrCmd_Unk027C
+.extern ScrCmd_Unk01DA
+.extern ScrCmd_Unk01DB
+.extern ScrCmd_Unk01DC
+.extern ScrCmd_Unk01DD
+.extern ScrCmd_Unk01DE
+.extern ScrCmd_Unk01DF
+.extern ScrCmd_Unk01E0
+.extern ScrCmd_Unk01E1
+.extern ScrCmd_Unk01E2
+.extern ScrCmd_Unk01E3
+.extern ScrCmd_Unk01E4
+.extern ScrCmd_Unk0294
+.extern ScrCmd_Unk0295
+.extern ScrCmd_Unk0296
+.extern ScrCmd_Unk0297
+.extern ScrCmd_Unk0298
+.extern ScrCmd_Unk0299
+.extern ScrCmd_Unk029A
+.extern ScrCmd_Unk029B
+.extern ScrCmd_GetBerryTreeGrowth
+.extern ScrCmd_GetBerryTreeType
+.extern ScrCmd_GetBerryTreeMulch
+.extern ScrCmd_GetBerryTreeWater
+.extern ScrCmd_GetBerryTreeAmount
+.extern ScrCmd_SetBerryTreeMulch
+.extern ScrCmd_SetBerryTreeType
.extern ScrCmd_Unk0184
-.extern ScrCmd_Unk0185
-.extern FUN_02042D1C
+.extern ScrCmd_TakeBerryTreeBerries
+.extern ScrCmd_Unk023E
.extern ScrCmd_Unk0253
.extern ScrCmd_Unk0254
.extern ScrCmd_Unk0255
.extern ScrCmd_Unk0256
-.extern ScrCmd_Unk0075
-.extern ScrCmd_Unk0076
-.extern ScrCmd_Unk0077
+.extern ScrCmd_ShowCoinBox
+.extern ScrCmd_HideCoinBox
+.extern ScrCmd_UpdateCoinBox
.extern ScrCmd_GetCoins
.extern ScrCmd_GiveCoins
.extern ScrCmd_TakeCoinsImmediate
@@ -3296,16 +3296,16 @@
.extern ScrCmd_TakeMoneyAddress
.extern ScrCmd_HasEnoughMoneyImmediate
.extern ScrCmd_HasEnoughMoneyAddress
-.extern ScrCmd_Unk0072
-.extern ScrCmd_Unk0073
-.extern ScrCmd_Unk0074
-.extern ScrCmd_Unk016D
-.extern ScrCmd_Unk016E
-.extern ScrCmd_Unk01A8
-.extern ScrCmd_Unk01A9
+.extern ScrCmd_ShowMoneyBox
+.extern ScrCmd_HideMoneyBox
+.extern ScrCmd_UpdateMoneyBox
+.extern ScrCmd_GetDaycarePokemonNames
+.extern ScrCmd_GetDaycareStatus
+.extern ScrCmd_DeleteDaycareEgg
+.extern ScrCmd_GiveDaycareEgg
.extern ScrCmd_Unk01A4
.extern ScrCmd_Unk01AA
-.extern ScrCmd_Unk01AE
+.extern ScrCmd_GetDaycareLevel
.extern ScrCmd_Unk01AF
.extern ScrCmd_Unk01B0
.extern ScrCmd_Unk01BC
@@ -3315,72 +3315,72 @@
.extern ScrCmd_Unk01A6
.extern ScrCmd_Unk01A7
.extern ScrCmd_Unk01AD
-.extern FUN_02044158
-.extern FUN_0204416C
-.extern FUN_02044198
+.extern ScrCmd_Unk0215
+.extern ScrCmd_Unk0216
+.extern ScrCmd_Unk0217
.extern ScrCmd_GiveMon
-.extern ScrCmd_getpartyspecies
-.extern ScrCmd_checkpartymonotid
-.extern ScrCmd_giveegg
-.extern ScrCmd_setpartymonmove
-.extern ScrCmd_partymonhasmove
-.extern ScrCmd_findpartymonwithmove
-.extern ScrCmd_survivepsn
-.extern ScrCmd_countpartymonsatorbelowlevel
-.extern ScrCmd_getpartymonlevel
-.extern ScrCmd_getpartymonnature
-.extern ScrCmd_findpartymonwithnature
-.extern ScrCmd_getpartymonfriendship
-.extern FUN_020448D4
-.extern FUN_020449A4
-.extern FUN_02044A0C
-.extern FUN_02044A6C
-.extern FUN_02044A94
-.extern FUN_02044B00
-.extern FUN_02044B2C
-.extern FUN_02044B84
-.extern FUN_02044C0C
-.extern FUN_02044C88
-.extern FUN_02044CE0
-.extern FUN_02044D44
-.extern FUN_02044D8C
-.extern FUN_02044E34
-.extern FUN_02044E78
-.extern FUN_02044ED8
-.extern FUN_02044F20
-.extern FUN_02044F58
-.extern FUN_02044FE8
-.extern FUN_0204505C
-.extern FUN_02045104
-.extern FUN_02045170
-.extern FUN_020451D0
-.extern FUN_02045264
-.extern ScrCmd_Unk01F1
-.extern ScrCmd_Unk01F4
-.extern ScrCmd_Unk01F5
+.extern ScrCmd_GetPartySpecies
+.extern ScrCmd_CheckPartyMonOTID
+.extern ScrCmd_GiveEgg
+.extern ScrCmd_SetPartyMonMove
+.extern ScrCmd_PartyMonHasMove
+.extern ScrCmd_FindPartyMonWithMove
+.extern ScrCmd_SurvivePsn
+.extern ScrCmd_CountPartyMonsAtOrBelowLevel
+.extern ScrCmd_GetPartyMonLevel
+.extern ScrCmd_GetPartyMonNature
+.extern ScrCmd_FindPartyMonWithNature
+.extern ScrCmd_GetPartyMonFriendship
+.extern ScrCmd_Unk01BA
+.extern ScrCmd_Unk01BB
+.extern ScrCmd_Unk0281
+.extern ScrCmd_Unk0247
+.extern ScrCmd_Unk0248
+.extern ScrCmd_Unk0177
+.extern ScrCmd_Unk019A
+.extern ScrCmd_Unk019B
+.extern ScrCmd_Unk019C
+.extern ScrCmd_Unk019D
+.extern ScrCmd_Unk0119
+.extern ScrCmd_Unk011A
+.extern ScrCmd_Unk01C8
+.extern ScrCmd_Unk01C9
+.extern ScrCmd_Unk01CA
+.extern ScrCmd_Unk01EE
+.extern ScrCmd_Unk01F0
+.extern ScrCmd_Unk01C0
+.extern ScrCmd_Unk022E
+.extern ScrCmd_Unk022F
+.extern ScrCmd_Unk0230
+.extern ScrCmd_Unk0231
+.extern ScrCmd_Unk02B7
+.extern ScrCmd_Unk00A0
+.extern ScrCmd_CountFossils
+.extern ScrCmd_GetFossilPokemon
+.extern ScrCmd_GetFossilMinimumAmount
.extern ScrCmd_Unk01F2
.extern ScrCmd_Unk01F3
-.extern ScrCmd_Unk02A6
-.extern FUN_020453F4
-.extern FUN_02045424
-.extern FUN_02045438
-.extern FUN_02045468
-.extern FUN_02045484
-.extern FUN_020454CC
-.extern FUN_02045500
-.extern FUN_0204552C
-.extern FUN_0204557C
-.extern FUN_02045590
-.extern FUN_020455BC
-.extern FUN_020455D0
-.extern FUN_020455E4
-.extern FUN_02045610
-.extern FUN_02045624
-.extern FUN_02045638
-.extern FUN_02045664
-.extern FUN_02045678
-.extern FUN_020456D4
-.extern FUN_0204572C
+.extern ScrCmd_GetPrizeItemIdAndCost
+.extern ScrCmd_HasSinnohDex
+.extern ScrCmd_GiveSinnohDex
+.extern ScrCmd_HasRunningShoes
+.extern ScrCmd_GiveRunningShoes
+.extern ScrCmd_HasBadge
+.extern ScrCmd_GiveBadge
+.extern ScrCmd_GiveBag
+.extern ScrCmd_GetTotalEarnedBadges
+.extern ScrCmd_HasBag
+.extern ScrCmd_Unk0160
+.extern ScrCmd_Unk0161
+.extern ScrCmd_Unk0162
+.extern ScrCmd_Unk0163
+.extern ScrCmd_Unk0164
+.extern ScrCmd_Unk0165
+.extern ScrCmd_CheckGameCompleted
+.extern ScrCmd_SetGameCompleted
+.extern ScrCmd_GetSetStrength
+.extern ScrCmd_GetSetFlash
+.extern ScrCmd_GetSetDefog
.extern ScrCmd_GiveItem
.extern ScrCmd_TakeItem
.extern ScrCmd_HasSpaceForItem
@@ -3389,32 +3389,32 @@
.extern ScrCmd_GetItemPocketId
.extern ScrCmd_Unk0081
.extern ScrCmd_Unk0082
-.extern ScrCmd_Unk0083
-.extern ScrCmd_Unk0084
-.extern ScrCmd_Unk0085
-.extern ScrCmd_Unk0086
-.extern ScrCmd_Unk0087
-.extern ScrCmd_Unk0088
-.extern ScrCmd_Unk0089
-.extern ScrCmd_Unk008A
-.extern ScrCmd_Unk008B
-.extern ScrCmd_Unk008C
-.extern ScrCmd_Unk008D
-.extern ScrCmd_Unk008E
-.extern ScrCmd_Unk008F
-.extern ScrCmd_Unk0090
-.extern ScrCmd_Unk0091
-.extern ScrCmd_Unk0092
-.extern FUN_02045D88
-.extern FUN_02045DD0
-.extern FUN_02045E1C
-.extern FUN_02045E20
-.extern FUN_02045EE0
-.extern FUN_02045EE4
-.extern FUN_02045F24
-.extern FUN_02045F84
-.extern FUN_02045F88
-.extern FUN_02045FCC
+.extern ScrCmd_GiveSecretBaseDecoration
+.extern ScrCmd_TakeSecretBaseDecoration
+.extern ScrCmd_HasSpaceForDecoration
+.extern ScrCmd_GetDecorationCount
+.extern ScrCmd_GiveUndergroundTrap
+.extern ScrCmd_TakeUndergroundTrap
+.extern ScrCmd_HasSpaceForTrap
+.extern ScrCmd_GetTrapCount
+.extern ScrCmd_GiveTreasure
+.extern ScrCmd_TakeTreasure
+.extern ScrCmd_HasSpaceForTreasure
+.extern ScrCmd_GetTreasureCount
+.extern ScrCmd_GiveUndergroundSphere
+.extern ScrCmd_TakeUndergroundSphere
+.extern ScrCmd_HasSpaceForSphere
+.extern ScrCmd_GetSphereCount
+.extern ScrCmd_Unk01C6
+.extern ScrCmd_Unk01C7
+.extern ScrCmd_Unk021E
+.extern ScrCmd_Unk021F
+.extern ScrCmd_Unk0220
+.extern ScrCmd_Unk0221
+.extern ScrCmd_Unk0224
+.extern ScrCmd_Unk0222
+.extern ScrCmd_Unk0223
+.extern ScrCmd_Unk0225
.extern ScrCmd_Unk023F
.extern ScrCmd_Unk0240
.extern ScrCmd_Unk0241
@@ -4636,6 +4636,7 @@
.extern FUN_020600DC
.extern FUN_02060144
.extern FUN_0206015C
+.extern FUN_02060194
.extern FUN_02060344
.extern FUN_020603B0
.extern FUN_020603C8
@@ -5574,229 +5575,229 @@
.extern VCT_Main
.extern VCT_Cleanup
.extern VCT_Init
-.extern FUN_020ADA84
-.extern FUN_020ADA98
-.extern FUN_020ADAB0
-.extern FUN_020ADB18
-.extern FUN_020ADBE8
-.extern FUN_020ADC74
-.extern FUN_020ADDC0
-.extern FUN_020ADDC8
-.extern FUN_020ADDF0
-.extern FUN_020ADE2C
-.extern FUN_020AE554
-.extern FUN_020AE5B0
-.extern FUN_020AE600
-.extern FUN_020AE638
-.extern FUN_020AE684
-.extern FUN_020AE82C
-.extern FUN_020AE84C
-.extern FUN_020AE868
-.extern FUN_020AE8CC
-.extern FUN_020AE918
-.extern FUN_020AEAF4
-.extern FUN_020AEB70
-.extern FUN_020AEC60
-.extern FUN_020AEC7C
-.extern FUN_020AEC98
-.extern FUN_020AEDF4
-.extern FUN_020AEE40
-.extern FUN_020AEEB8
-.extern FUN_020AEF1C
-.extern FUN_020AF2E0
-.extern FUN_020AF2F4
-.extern FUN_020AF30C
-.extern FUN_020AF6A4
-.extern FUN_020AF894
-.extern FUN_020AF9C4
-.extern FUN_020AFA28
-.extern FUN_020AFA30
-.extern FUN_020AFA80
-.extern FUN_020AFBA8
-.extern FUN_020AFBFC
-.extern FUN_020AFC04
-.extern FUN_020AFEB8
-.extern FUN_020AFFD8
-.extern FUN_020B0030
-.extern FUN_020B0088
-.extern FUN_020B00F0
-.extern FUN_020B0138
-.extern FUN_020B0180
-.extern FUN_020B0250
-.extern FUN_020B02C8
-.extern FUN_020B0448
-.extern FUN_020B04FC
-.extern FUN_020B0830
-.extern FUN_020B0870
-.extern FUN_020B0888
-.extern FUN_020B0BB0
-.extern FUN_020B0C7C
-.extern FUN_020B0D58
-.extern FUN_020B0E34
-.extern FUN_020B0FC0
-.extern FUN_020B10E8
-.extern FUN_020B1240
-.extern FUN_020B1340
-.extern FUN_020B1528
-.extern FUN_020B1768
-.extern FUN_020B19C4
-.extern FUN_020B19DC
-.extern FUN_020B1A14
-.extern FUN_020B1A1C
-.extern FUN_020B1A24
-.extern FUN_020B1AF8
-.extern FUN_020B1EA4
-.extern FUN_020B1EC4
-.extern FUN_020B1EE4
-.extern FUN_020B1EFC
-.extern FUN_020B1F80
-.extern FUN_020B20C8
-.extern FUN_020B2194
-.extern FUN_020B224C
-.extern FUN_020B23D8
-.extern FUN_020B242C
-.extern FUN_020B2794
-.extern FUN_020B28B4
-.extern FUN_020B2A08
-.extern FUN_020B2B08
-.extern FUN_020B2B58
-.extern FUN_020B2D9C
-.extern FUN_020B317C
-.extern FUN_020B31F0
-.extern FUN_020B326C
-.extern FUN_020B3334
-.extern FUN_020B3390
-.extern FUN_020B33A0
-.extern FUN_020B4358
-.extern FUN_020B43A4
-.extern FUN_020B442C
-.extern FUN_020B4568
-.extern FUN_020B4F38
-.extern FUN_020B502C
-.extern FUN_020B5C88
-.extern FUN_020B5CE4
-.extern FUN_020B5D3C
-.extern FUN_020B5E50
-.extern FUN_020B6180
-.extern FUN_020B6240
-.extern FUN_020B62F8
-.extern FUN_020B6388
-.extern FUN_020B63CC
-.extern FUN_020B7168
-.extern FUN_020B7218
-.extern FUN_020B772C
-.extern FUN_020B7790
-.extern FUN_020B7C58
-.extern FUN_020B7C78
-.extern FUN_020B7CDC
-.extern FUN_020B7CE4
-.extern FUN_020B7CF0
-.extern FUN_020B7D28
-.extern FUN_020B7DFC
-.extern FUN_020B7E10
-.extern FUN_020B7E1C
-.extern FUN_020B7E28
-.extern FUN_020B7EFC
-.extern FUN_020B80B4
-.extern FUN_020B8110
-.extern FUN_020B8344
-.extern FUN_020B8390
-.extern FUN_020B83BC
-.extern FUN_020B83E0
-.extern FUN_020B8404
-.extern FUN_020B8418
-.extern FUN_020B844C
-.extern FUN_020B8474
-.extern FUN_020B849C
-.extern FUN_020BAC98
-.extern FUN_020BAFB8
-.extern FUN_020BB1C0
-.extern FUN_020BB394
-.extern FUN_020BB408
-.extern FUN_020BB59C
-.extern FUN_020BB7F4
-.extern FUN_020BB8D0
-.extern FUN_020BB8F4
-.extern FUN_020BB934
-.extern FUN_020BB974
-.extern FUN_020BB9B4
-.extern FUN_020BB9F4
-.extern FUN_020BBA34
-.extern FUN_020BBA74
-.extern FUN_020BBAB4
-.extern FUN_020BBAF4
-.extern FUN_020BBB34
-.extern FUN_020BBB74
-.extern FUN_020BBBB4
-.extern FUN_020BBBF4
-.extern FUN_020BBC34
-.extern FUN_020BC02C
-.extern FUN_020BC094
-.extern FUN_020BC0FC
-.extern FUN_020BC13C
-.extern FUN_020BC2A0
-.extern FUN_020BC4C8
-.extern FUN_020C0174
-.extern FUN_020C01A0
-.extern SDAT_Init
-.extern FUN_020C03B8
-.extern FUN_020C041C
-.extern FUN_020C044C
-.extern FUN_020C04DC
-.extern FUN_020C0510
-.extern FUN_020C054C
-.extern FUN_020C0670
-.extern FUN_020C0688
-.extern FUN_020C0DD4
-.extern FUN_020C0E14
-.extern FUN_020C0E7C
-.extern FUN_020C0EA4
-.extern FUN_020C0EF4
-.extern FUN_020C0F30
-.extern FUN_020C0F40
-.extern FUN_020C0F50
-.extern FUN_020C0F68
-.extern FUN_020C0F80
-.extern FUN_020C0F8C
-.extern FUN_020C0F9C
-.extern FUN_020C0FDC
-.extern FUN_020C1040
-.extern FUN_020C10A4
-.extern FUN_020C1148
-.extern FUN_020C1180
-.extern FUN_020C13C4
-.extern FUN_020C1430
-.extern FUN_020C1458
-.extern FUN_020C14AC
-.extern FUN_020C1674
-.extern FUN_020C169C
-.extern FUN_020C16FC
-.extern FUN_020C1E58
-.extern FUN_020C1E68
-.extern FUN_020C1EA4
-.extern FUN_020C1F54
-.extern FUN_020C1FA4
-.extern FUN_020C1FF0
-.extern FUN_020C20DC
-.extern FUN_020C2104
-.extern FUN_020C217C
-.extern FUN_020C226C
-.extern FUN_020C22D0
-.extern FUN_020C23FC
-.extern FUN_020C2444
-.extern SDAT_Open
-.extern FUN_020C2828
-.extern FUN_020C290C
-.extern FUN_020C2A94
-.extern FUN_020C35E0
-.extern FUN_020C360C
-.extern FUN_020C3640
-.extern FUN_020C3674
-.extern FUN_020C36A8
-.extern FUN_020C3888
-.extern FUN_020C3910
-.extern FUN_020C3980
-.extern FUN_020C39CC
+.extern NNS_FndGetPrevListObject
+.extern NNS_FndGetNextListObject
+.extern NNS_FndRemoveListObject
+.extern NNS_FndInsertListObject
+.extern NNS_FndAppendListObject
+.extern NNS_FndInitList
+.extern NNS_FndGetSizeForMBlockExpHeap
+.extern NNS_FndGetTotalFreeSizeForExpHeap
+.extern NNS_FndFreeToExpHeap
+.extern NNS_FndResizeForMBlockExpHeap
+.extern NNS_FndFreeByStateToFrmHeap
+.extern NNS_FndRecordStateForFrmHeap
+.extern NNS_FndFreeToFrmHeap
+.extern NNS_FndAllocFromFrmHeapEx
+.extern NNS_FndCreateFrmHeapEx
+.extern NNS_FndInitAllocatorForExpHeap
+.extern NNS_FndFreeToAllocator
+.extern NNS_FndAllocFromAllocator
+.extern NNS_GfdSetFrmTexVramState
+.extern NNS_GfdGetFrmTexVramState
+.extern NNS_GfdResetFrmTexVramState
+.extern NNS_GfdInitFrmTexVramManager
+.extern NNS_GfdResetFrmPlttVramState
+.extern NNS_GfdSetFrmPlttVramState
+.extern NNS_GfdGetFrmPlttVramState
+.extern NNS_GfdInitFrmPlttVramManager
+.extern NNS_GfdRegisterNewVramTransferTask
+.extern NNS_GfdDoVramTransfer
+.extern NNS_GfdInitVramTransferManager
+.extern IsVramTransferTaskQueueEmpty_
+.extern IsVramTransferTaskQueueFull_
+.extern GetNextIndex_
+.extern NNS_GfdResetLnkTexVramState
+.extern NNS_GfdFreeLnkTexVram
+.extern NNS_GfdInitLnkTexVramManager
+.extern NNS_GfdGetLnkTexVramManagerWorkSize
+.extern NNS_GfdResetLnkPlttVramState
+.extern NNS_GfdFreeLnkPlttVram
+.extern NNS_GfdInitLnkPlttVramManager
+.extern NNS_GfdGetLnkPlttVramManagerWorkSize
+.extern NNS_G2dGetAnimSequenceByIdx
+.extern NNS_G2dGetUnpackedCellBank
+.extern NNS_G2dGetUnpackedMultiCellBank
+.extern NNS_G2dGetUnpackedBGCharacterData
+.extern NNS_G2dGetUnpackedCharacterData
+.extern NNS_G2dGetUnpackedPaletteCompressInfo
+.extern NNS_G2dGetUnpackedPaletteData
+.extern NNS_G2dGetUnpackedScreenData
+.extern NNS_G2dDrawSpriteFast
+.extern NNS_G2dSetupSoftwareSpriteCamera
+.extern NNS_G2dResetAnimCtrlState
+.extern NNS_G2dGetAnimCtrlCurrentFrame
+.extern NNS_G2dGetOamManagerOamCapacity
+.extern NNS_G2dApplyAndResetOamManagerBuffer
+.extern NNS_G2dResetOamManagerBuffer
+.extern NNS_G2dEntryOamManagerAffine
+.extern NNS_G2dEntryOamManagerOamWithAffineIdx
+.extern NNS_G2dEntryOamManagerOam
+.extern NNS_G2dGetNewOamManagerInstance
+.extern NNS_G2dInitOamManagerModule
+.extern NNS_G2dLoadPaletteEx
+.extern NNS_G2dLoadPalette
+.extern NNS_G2dLoadImageVramTransfer
+.extern NNS_G2dLoadImage2DMapping
+.extern NNS_G2dLoadImage1DMapping
+.extern NNS_G2dGetImagePaletteLocation
+.extern NNS_G2dInitImagePaletteProxy
+.extern NNS_G2dGetImageLocation
+.extern NNS_G2dSetImageLocation
+.extern NNS_G2dInitImageProxy
+.extern NNS_G2dMakeCellToOams
+.extern NNS_G2dSetCellAnimationCurrentFrame
+.extern NNS_G2dTickCellAnimation
+.extern NNS_G2dSetCellAnimationSequence
+.extern NNS_G2dInitCellAnimationVramTransfered
+.extern NNS_G2dInitCellAnimation
+.extern NNS_G2dInitMCAnimation
+.extern NNS_G2dSetMCAnimationCurrentFrame
+.extern NNS_G2dTickMCAnimation
+.extern NNS_G2dGetMCBankNumNodesRequired
+.extern NNS_G2dSetAnimSequenceToMCAnimation
+.extern NNS_G2dRotZ
+.extern NNS_G2dScale
+.extern NNS_G2dTranslate
+.extern NNS_G2dPopMtx
+.extern NNS_G2dPushMtx
+.extern NNS_G2dDrawMultiCellAnimation
+.extern NNS_G2dDrawCellAnimation
+.extern NNS_G2dEndRendering
+.extern NNS_G2dBeginRendering
+.extern NNS_G2dInitRenderSurface
+.extern NNS_G2dAddRendererTargetSurface
+.extern NNS_G2dInitRenderer
+.extern NNS_G2dFreeCellTransferStateHandle
+.extern NNS_G2dGetNewCellTransferStateHandle
+.extern NNS_G2dUpdateCellTransferStateManager
+.extern NNS_G2dInitCellTransferStateManager
+.extern NNS_G2dSetRndCoreFlipMode
+.extern NNS_G2dSetRndCoreAffineOverwriteMode
+.extern NNS_G2dFontGetCharWidthsFromIndex
+.extern NNS_G2dFontFindGlyphIndex
+.extern NNS_G2dFontInitUTF16
+.extern NNS_G2dArrangeOBJ1D
+.extern NNSi_G2dCalcRequiredOBJ
+.extern NNS_G2dMapScrToCharText
+.extern NNS_G2dCharCanvasInitForOBJ1D
+.extern NNS_G2dCharCanvasInitForBG
+.extern NNS_G2dCharCanvasDrawChar
+.extern NNSi_G2dTextCanvasDrawTextRect
+.extern NNSi_G2dTextCanvasDrawText
+.extern NNS_G3dReleaseMdlSet
+.extern NNS_G3dBindMdlSet
+.extern NNS_G3dPlttReleasePlttKey
+.extern NNS_G3dPlttLoad
+.extern NNS_G3dPlttSetPlttKey
+.extern NNS_G3dPlttGetRequiredSize
+.extern NNS_G3dTexReleaseTexKey
+.extern NNS_G3dTexLoad
+.extern NNS_G3dTexSetTexKey
+.extern NNS_G3dTex4x4GetRequiredSize
+.extern NNS_G3dTexGetRequiredSize
+.extern NNS_G3dRenderObjRemoveAnmObj
+.extern NNS_G3dRenderObjAddAnmObj
+.extern NNS_G3dRenderObjInit
+.extern NNS_G3dAnmObjInit
+.extern NNS_G3dGlbGetInvV
+.extern NNS_G3dGlbPolygonAttr
+.extern NNS_G3dGlbMaterialColorSpecEmi
+.extern NNS_G3dGlbMaterialColorDiffAmb
+.extern NNS_G3dGlbLightColor
+.extern NNS_G3dGlbLightVector
+.extern NNS_G3dGlbSetBaseScale
+.extern NNS_G3dGlbSetBaseTrans
+.extern NNS_G3dGlbFlushP
+.extern NNS_G3dDraw
+.extern NNS_G3dDraw1Mat1Shp
+.extern NNS_G3dGeBufferOP_N
+.extern NNS_G3dGeFlushBuffer
+.extern NNS_G3dWorldPosToScrPos
+.extern NNS_G3dResDefaultSetup
+.extern NNS_G3dInit
+.extern NNS_G3dAllocAnmObj
+.extern NNS_G3dMdlSetMdlXLDepthUpdateAll
+.extern NNS_G3dMdlSetMdlFarClipAll
+.extern NNS_G3dMdlSetMdl1DotAll
+.extern NNS_G3dMdlSetMdlDepthTestCondAll
+.extern NNS_G3dMdlSetMdlFogEnableFlagAll
+.extern NNS_G3dMdlSetMdlAlphaAll
+.extern NNS_G3dMdlSetMdlPolygonIDAll
+.extern NNS_G3dMdlSetMdlCullModeAll
+.extern NNS_G3dMdlSetMdlPolygonModeAll
+.extern NNS_G3dMdlSetMdlLightEnableFlagAll
+.extern NNS_G3dMdlSetMdlEmiAll
+.extern NNS_G3dMdlSetMdlSpecAll
+.extern NNS_G3dMdlSetMdlAmbAll
+.extern NNS_G3dMdlSetMdlDiffAll
+.extern NNSi_G3dModifyPolygonAttrMask
+.extern NNSi_G3dModifyMatFlag
+.extern NNS_G3dGetTex
+.extern NNS_G3dGetMdlSet
+.extern NNS_G3dGetResDataByName
+.extern NNS_G3dGetAnmByIdx
+.extern NNS_SndSetMonoFlag
+.extern NNS_SndMain
+.extern NNS_SndInit
+.extern NNS_SndWaveOutIsPlaying
+.extern NNS_SndWaveOutSetPan
+.extern NNS_SndWaveOutSetSpeed
+.extern NNS_SndWaveOutSetVolume
+.extern NNS_SndWaveOutStop
+.extern NNS_SndWaveOutStart
+.extern NNS_SndWaveOutFreeChannel
+.extern NNS_SndWaveOutAllocChannel
+.extern NNS_SndPlayerGetTick
+.extern NNS_SndPlayerGetSeqNo
+.extern NNS_SndPlayerSetTrackPan
+.extern NNS_SndPlayerSetTrackPitch
+.extern NNS_SndPlayerMoveVolume
+.extern NNS_SndPlayerSetInitialVolume
+.extern NNS_SndPlayerSetVolume
+.extern NNS_SndPlayerCountPlayingSeqByPlayerNo
+.extern NNS_SndHandleReleaseSeq
+.extern NNS_SndHandleInit
+.extern NNS_SndPlayerPause
+.extern NNS_SndPlayerStopSeqAll
+.extern NNS_SndPlayerStopSeqBySeqNo
+.extern NNS_SndPlayerStopSeqByPlayerNo
+.extern NNS_SndPlayerStopSeq
+.extern NNS_SndPlayerSetAllocatableChannel
+.extern NNS_SndPlayerSetPlayerVolume
+.extern NNS_SndStrmSetVolume
+.extern NNS_SndStrmStop
+.extern NNS_SndStrmStart
+.extern NNS_SndStrmSetup
+.extern NNS_SndStrmFreeChannel
+.extern NNS_SndStrmAllocChannel
+.extern NNS_SndStrmInit
+.extern NNS_SndCaptureIsActive
+.extern NNS_SndCaptureStopEffect
+.extern NNS_SndCaptureStartEffect
+.extern NNS_SndCaptureStopReverb
+.extern NNS_SndCaptureSetReverbVolume
+.extern NNS_SndCaptureStartReverb
+.extern NNS_SndArcGetFileAddress
+.extern NNS_SndArcReadFile
+.extern NNS_SndArcGetFileSize
+.extern NNS_SndArcGetWaveArcInfo
+.extern NNS_SndArcGetBankInfo
+.extern NNS_SndArcGetSeqParam
+.extern NNS_SndArcInitOnMemory
+.extern NNS_SndArcInit
+.extern NNS_SndHeapLoadState
+.extern NNS_SndHeapSaveState
+.extern NNS_SndHeapCreate
+.extern NNS_SndArcLoadSeqEx
+.extern NNS_SndArcLoadWaveArc
+.extern NNS_SndArcLoadBank
+.extern NNS_SndArcLoadSeq
+.extern NNS_SndArcLoadGroup
+.extern NNS_SndArcPlayerStartSeqArc
+.extern NNS_SndArcPlayerStartSeqEx
+.extern NNS_SndArcPlayerStartSeq
+.extern NNS_SndArcPlayerSetup
.extern FUN_020C5D8C
.extern FUN_020C5E04
.extern FUN_020C6034
@@ -7710,6 +7711,7 @@
.extern MTX_TransApply44
.extern NitroMain
.extern gBacklightTop
+.extern UNK_02016FA4
.extern OS_AllocFromArenaHi
.extern OS_AllocFromArenaLo
.extern OS_AllocFromHeap
@@ -8192,8 +8194,8 @@
.extern UNK_020FB764
.extern UNK_020FD144
.extern UNK_020FD6D4
-.extern UNK_021064B8
-.extern UNK_021064C0
+.extern NNS_GfdDefaultFuncAllocTexVram
+.extern NNS_GfdDefaultFuncAllocPlttVram
.extern gMain
.extern UNK_021C8ECC
.extern UNK_021C8ED0
@@ -8237,14 +8239,10 @@
.extern Unk_02106A04
.extern UNK_020FF368
.extern UNK_020FF3D4
-.extern UNK_020FFA38
+.extern FX_SinCosTable_
.extern UNK_02105BB8
-.extern UNK_021064BC
-.extern UNK_021064C4
-.extern UNK_021CED20
-.extern UNK_021CED98
-.extern UNK_021CEDD4
-.extern UNK_021CEF70
+.extern NNS_GfdDefaultFuncFreeTexVram
+.extern NNS_GfdDefaultFuncFreePlttVram
.extern UnloadOverlayByID
.extern VEC_Add
.extern VEC_CrossProduct
@@ -8466,16 +8464,16 @@
.extern sys_exit
.extern sys_readc
.extern sys_writec
-.extern tempName_NNS_FndAllocFromExpHeapEx
-.extern tempName_NNS_FndCreateExpHeapEx
+.extern NNS_FndAllocFromExpHeapEx
+.extern NNS_FndCreateExpHeapEx
.extern DWC_ClearDirtyFlag
.extern DWC_CreateUserData
-.extern thunk_FUN_020adc8c
-.extern thunk_FUN_020adc8c_2
-.extern thunk_FUN_020ae84c
-.extern thunk_FUN_020afda0
-.extern thunk_FUN_020afda0_2
-.extern thunk_FUN_020b5040
+.extern NNS_FndDestroyExpHeap
+.extern NNS_FndDestroyFrmHeap
+.extern NNS_G3dFreeAnmObj
+.extern NNS_G2dGetUnpackedMCAnimBank
+.extern NNS_G2dGetUnpackedAnimBank
+.extern NNS_G2dSetRendererImageProxy
.extern vsnprintf
.extern vsscanf
.extern vswprintf
@@ -8500,8 +8498,8 @@
.extern DWCi_BACKUPlWriteAll
.extern DWCi_BM_SetWiFiInfo
.extern DWC_Auth_CheckWiFiIDNeedCreate
-.extern UNK_021064B8
-.extern UNK_021064C0
+.extern NNS_GfdDefaultFuncAllocTexVram
+.extern NNS_GfdDefaultFuncAllocPlttVram
.extern MOD18_0224CA58
.extern MOD18_0223DFB4
.extern MOD18_02245FA0
@@ -8520,3 +8518,153 @@
.extern FUN_02025490
.extern FUN_020254A0
.extern FUN_020254B4
+.extern FUN_02041464
+.extern NNS_G2dGetCellDataByIdx
+.extern NNS_G2dBindAnimCtrl
+.extern NNS_G2dInitAnimCtrl
+.extern NNS_G2dSetAnimCtrlCurrentFrame
+.extern NNS_G2dTickAnimCtrl
+.extern NNS_G2dGetAnimCtrlCurrentElement
+.extern NNSi_G2dSrtcInitControl
+.extern NNSi_G2dSrtcSetSRTScale
+.extern NNSi_G2dSrtcSetSRTRotZ
+.extern NNSi_G2dSrtcSetTrans
+.extern NNS_G2dSetCellTransferStateRequested
+.extern NNSi_G2dInitCellTransferState
+.extern NNSi_objSizeHTbl
+.extern NNSi_objSizeWTbl
+.extern NNSi_G2dGetVramLocation
+.extern NNSi_G2dSetVramLocation
+.extern NNSi_G2dInitializeVRamLocation
+.extern NNSi_G2dBitReaderRead
+.extern NNSi_G2dGetUnpackedFont
+.extern NNSi_G2dSplitCharUTF16
+.extern NNS_G2dGetMultiCellDataByIdx
+.extern NNSi_G2dIsAnimCtrlLoopAnim
+.extern NNSi_G2dInitializeNode
+.extern NNS_G2dFindBinaryBlock
+.extern NNSi_G2dUnpackUserExCellAttrBank
+.extern GXi_DmaId
+.extern NNS_G2dGetPaletteTableValue
+.extern NNSi_G2dMtxConcat32
+.extern NNSi_G2dGetOamSoftEmuAutoZOffsetStep
+.extern NNSi_G2dSetOamSoftEmuAutoZOffsetStep
+.extern NNSi_G2dResetOamSoftEmuAutoZOffset
+.extern NNSi_G2dSetOamSoftEmuAutoZOffsetFlag
+.extern NNS_G2dRndCoreDrawCellVramTransfer
+.extern NNS_G2dRndCoreDrawCell
+.extern NNS_G2dRndCoreEndRendering
+.extern NNS_G2dRndCoreBeginRendering
+.extern NNS_G2dIsRndCoreFlipV
+.extern NNS_G2dIsRndCoreFlipH
+.extern NNS_G2dSetRndCoreSurface
+.extern NNS_G2dSetRndCore3DSoftSpriteZvalue
+.extern NNS_G2dSetRndCoreCurrentMtx2D
+.extern NNS_G2dSetRndCoreCurrentMtx3D
+.extern NNS_G2dSetRndCoreOamRegisterFunc
+.extern NNS_G2dSetRndCoreImageProxy
+.extern NNS_G2dInitRndCore
+.extern NNS_G2dIsImagePaletteReadyToUse
+.extern NNS_G2dIsImageReadyToUse
+.extern NNSi_G2dGetCellTransferState
+.extern NNS_G2dDrawOneOam3DDirectWithPosFast
+.extern NNSi_G2dFontGetTextRect
+.extern NNSi_G2dFontGetTextHeight
+.extern NNSi_G2dFontGetStringWidth
+.extern NNS_G3dGeSendDL
+.extern NNS_G3dSendTexSRT_FuncArray
+.extern NNSi_G3dAnmCalcNsBca
+.extern NNSi_G3dAnmObjInitNsBca
+.extern NNSi_G3dAnmCalcNsBma
+.extern NNSi_G3dAnmObjInitNsBma
+.extern NNSi_G3dAnmCalcNsBta
+.extern NNSi_G3dAnmObjInitNsBta
+.extern NNSi_G3dAnmCalcNsBtp
+.extern NNSi_G3dAnmObjInitNsBtp
+.extern NNSi_G3dAnmCalcNsBva
+.extern NNSi_G3dAnmObjInitNsBva
+.extern NNSi_G3dGetJointScaleBasic
+.extern NNSi_G3dSendJointSRTBasic
+.extern NNSi_G3dSendTexSRTMaya
+.extern NNSi_G3dGetJointScaleMaya
+.extern NNSi_G3dSendJointSRTMaya
+.extern NNSi_G3dSendTexSRTSi3d
+.extern NNSi_G3dGetJointScaleSi3d
+.extern NNSi_G3dSendJointSRTSi3d
+.extern NNSi_G3dSendTexSRT3dsMax
+.extern NNSi_G3dSendTexSRTXsi
+.extern NNS_G3dAnmFmtNum
+.extern NNS_G3dFuncBlendVisDefault
+.extern NNS_G3dFuncBlendJntDefault
+.extern NNS_G3dFuncBlendMatDefault
+.extern NNS_G3dAnmObjInitFuncArray
+.extern NNS_G3dRS
+.extern NNS_G3dAnmObjCalcSizeRequired
+.extern NNS_G3dFuncAnmJntNsBcaDefault
+.extern NNS_G3dGetResDictIdxByName
+.extern NNS_G3dFuncAnmMatNsBmaDefault
+.extern NNS_G3dFuncAnmMatNsBtaDefault
+.extern NNSi_G3dGetTexPatAnmFV
+.extern NNSi_G3dGetTexPatAnmPlttNameByIdx
+.extern NNSi_G3dGetTexPatAnmTexNameByIdx
+.extern NNS_G3dFuncAnmMatNsBtpDefault
+.extern NNS_G3dFuncAnmVisNsBvaDefault
+.extern NNS_G3dGlbGetInvWV
+.extern NNS_G3dGlbGetWV
+.extern NNS_G3dGetCurrentMtx
+.extern NNS_G3dSendJointSRT_FuncArray
+.extern NNS_G3dGetJointScale_FuncArray
+.extern NNS_G3dGlb
+.extern NNS_G3dGlbGetViewPort
+.extern NNS_G3dGlbInit
+.extern NNSi_GfdFreeLnkVram
+.extern NNSi_GfdAllocLnkVramAligned
+.extern NNSi_GfdAddNewFreeBlock
+.extern NNSi_GfdInitLnkVramBlockPool
+.extern NNSi_GfdInitLnkVramMan
+.extern NNSi_GfdAllocLnkVram
+.extern NNS_SndFreeAlarm
+.extern NNS_SndAllocAlarm
+.extern NNS_SndUnlockCapture
+.extern NNS_SndLockCapture
+.extern NNS_SndUnlockChannel
+.extern NNS_SndLockChannel
+.extern NNSi_SndFaderIsFinished
+.extern NNSi_SndFaderUpdate
+.extern NNSi_SndFaderGet
+.extern NNSi_SndFaderSet
+.extern NNS_G3dRSOnGlb
+.extern NNSi_SndFaderInit
+.extern SingleWaveDisposeCallback
+.extern NNSi_SndInitResourceMgr
+.extern NNSi_SndPlayerMain
+.extern NNSi_SndPlayerInit
+.extern NNSi_SndCaptureEndSleep
+.extern NNSi_SndCaptureBeginSleep
+.extern NNSi_SndCaptureMain
+.extern NNSi_SndCaptureInit
+.extern NNSi_SndArcStrmMain
+.extern NNS_SndHeapClear
+.extern NNS_SndHeapDestroy
+.extern NNS_SndHeapAlloc
+.extern SNDi_DecibelTable
+.extern NNS_SndArcSetFileAddress
+.extern NNS_SndArcGetGroupInfo
+.extern NNS_SndArcGetSeqArcInfo
+.extern NNS_SndArcGetSeqInfo
+.extern NNS_SndArcGetCurrent
+.extern NNS_SndArcSetCurrent
+.extern LoadSingleWaves
+.extern NNSi_SndPlayerAllocHeap
+.extern NNSi_SndPlayerStartSeq
+.extern NNSi_SndPlayerAllocSeqPlayer
+.extern NNS_SndPlayerSetSeqArcNo
+.extern NNS_SndPlayerSetSeqNo
+.extern NNS_SndPlayerSetChannelPriority
+.extern NNS_SndPlayerCreateHeap
+.extern NNS_SndPlayerSetPlayableSeqCount
+.extern NNS_SndArcGetPlayerInfo
+.extern NNSi_SndArcLoadBank
+.extern NNSi_SndArcLoadSeq
+.extern NNSi_SndSeqArcGetSeqInfo
+.extern NNSi_SndPlayerFreeSeqPlayer
diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h
index 339ff9b8..4e5722bb 100644
--- a/arm9/lib/include/MI_memory.h
+++ b/arm9/lib/include/MI_memory.h
@@ -25,6 +25,11 @@ static inline void MI_CpuClear8(void *dest, u32 size) {
MI_CpuFill8(dest, 0, size);
}
+static inline void MI_CpuFill16(void *dest, u16 data, u32 size)
+{
+ MIi_CpuClear16(data, dest, size);
+}
+
static inline void MI_CpuClear16(void * destp, u32 size)
{
MIi_CpuClear16(0, destp, size);
@@ -55,4 +60,9 @@ static inline void MI_CpuFillFast(void *dest, u32 data, u32 size)
MIi_CpuClearFast(data, dest, size);
}
+static inline void MI_CpuCopyFast(const void *src, void *dest, u32 size)
+{
+ MIi_CpuCopyFast(src, dest, size);
+}
+
#endif //POKEDIAMOND_ARM9_MI_MEMORY_H
diff --git a/arm9/lib/include/NNS_SND_arc.h b/arm9/lib/include/NNS_SND_arc.h
new file mode 100644
index 00000000..95b33141
--- /dev/null
+++ b/arm9/lib/include/NNS_SND_arc.h
@@ -0,0 +1,38 @@
+#ifndef GUARD_NNS_SND_ARC_H
+#define GUARD_NNS_SND_ARC_H
+
+#include "SND_main.h"
+
+typedef struct NNSSndArcHeader
+{
+ struct SNDBinaryFileHeader fileHeader;
+ u32 symbolDataOffset;
+ u32 symbolDataSize;
+ u32 infoOffset;
+ u32 infoSize;
+ u32 fatOffset;
+ u32 fatSize;
+ u32 fileImageOffset;
+ u32 fileImageSize;
+} NNSSndArcHeader;
+
+typedef struct NNSSndArc
+{
+ NNSSndArcHeader header;
+ BOOL file_open;
+ FSFile file;
+ FSFileID fileId;
+ struct NNSSndArcFat* fat;
+ struct NNSSndArcSymbol* symbol;
+ struct NNSSndArcInfo* info;
+} NNSSndArc;
+
+void NNS_SndInit(void);
+void NNS_SndArcInit(NNSSndArc *, const char *, void *, u32);
+void NNS_SndArcPlayerSetup(void *);
+void NNS_SndMain(void);
+void NNS_SndHandleInit(u32 *);
+void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame);
+void NNS_SndHandleReleaseSeq(void);
+
+#endif //GUARD_NNS_SND_ARC_H
diff --git a/arm9/lib/include/NNS_SND_arc_loader.h b/arm9/lib/include/NNS_SND_arc_loader.h
new file mode 100644
index 00000000..851c08ab
--- /dev/null
+++ b/arm9/lib/include/NNS_SND_arc_loader.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_NNS_SND_ARC_LOADER_H
+#define GUARD_NNS_SND_ARC_LOADER_H
+
+#include "NNS_SND_heap.h"
+
+BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle * heap);
+
+#endif //GUARD_NNS_SND_ARC_LOADER_H
diff --git a/arm9/lib/include/NNS_SND_heap.h b/arm9/lib/include/NNS_SND_heap.h
new file mode 100644
index 00000000..2929d1bb
--- /dev/null
+++ b/arm9/lib/include/NNS_SND_heap.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_NNS_SND_HEAP_H
+#define GUARD_NNS_SND_HEAP_H
+
+struct NNSSndHeap;
+typedef struct NNSSndHeap* NNSSndHeapHandle;
+
+NNSSndHeapHandle * NNS_SndHeapCreate(void * start, u32 size);
+int NNS_SndHeapSaveState(NNSSndHeapHandle * heap);
+void NNS_SndHeapLoadState(NNSSndHeapHandle * heap, int level);
+
+#endif //GUARD_NNS_SND_HEAP_H
diff --git a/arm9/lib/include/NNS_g2d.h b/arm9/lib/include/NNS_g2d.h
new file mode 100644
index 00000000..483f254a
--- /dev/null
+++ b/arm9/lib/include/NNS_g2d.h
@@ -0,0 +1,212 @@
+#ifndef NNSYS_NNS_G2D_H
+#define NNSYS_NNS_G2D_H
+
+#include "gx.h"
+
+typedef struct NNSG2dCharacterData
+{
+ u16 H;
+ u16 W;
+ GXTexFmt pixelFmt;
+ GXOBJVRamModeChar mapingType;
+ u32 characterFmt;
+ u32 szByte;
+ void * pRawData;
+} NNSG2dCharacterData;
+
+typedef struct NNSG2dScreenData
+{
+ u16 screenWidth;
+ u16 screenHeight;
+ u16 colorMode;
+ u16 screenFormat;
+ u32 szByte;
+ u32 rawData[1];
+} NNSG2dScreenData;
+
+typedef struct NNSG2dPaletteData
+{
+ GXTexFmt fmt;
+ BOOL bExtendedPlt;
+ u32 szByte;
+ void * pRawData;
+
+} NNSG2dPaletteData;
+
+typedef enum NNS_G2D_VRAM_TYPE
+{
+ NNS_G2D_VRAM_TYPE_3DMAIN = 0,
+ NNS_G2D_VRAM_TYPE_2DMAIN = 1,
+ NNS_G2D_VRAM_TYPE_2DSUB = 2,
+ NNS_G2D_VRAM_TYPE_MAX = 3
+} NNS_G2D_VRAM_TYPE;
+
+typedef enum NNSG2dCharacterDataMapingType
+{
+ NNS_G2D_CHARACTERMAPING_1D_32,
+ NNS_G2D_CHARACTERMAPING_1D_64,
+ NNS_G2D_CHARACTERMAPING_1D_128,
+ NNS_G2D_CHARACTERMAPING_1D_256,
+ NNS_G2D_CHARACTERMAPING_2D,
+ NNS_G2D_CHARACTERMAPING_MAX
+
+} NNSG2dCharacterDataMapingType;
+
+typedef struct NNSG2dImageAttr
+{
+ GXTexSizeS sizeS;
+ GXTexSizeT sizeT;
+ GXTexFmt fmt;
+ BOOL bExtendedPlt;
+ GXTexPlttColor0 plttUse;
+ GXOBJVRamModeChar mappingType;
+} NNSG2dImageAttr;
+
+typedef struct NNSG2dVRamLocation
+{
+ u32 baseAddrOfVram[ NNS_G2D_VRAM_TYPE_MAX ];
+} NNSG2dVRamLocation;
+
+typedef struct NNSG2dImageProxy
+{
+ NNSG2dVRamLocation vramLocation;
+ NNSG2dImageAttr attr;
+} NNSG2dImageProxy;
+
+typedef struct NNSG2dPaletteCompressInfo
+{
+ u16 numPalette;
+ u16 pad16;
+ void * pPlttIdxTbl;
+
+} NNSG2dPaletteCompressInfo;
+
+void NNS_G2dLoadImage1DMapping
+(
+ const NNSG2dCharacterData * pSrcData,
+ u32 baseAddr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImageProxy * pImgProxy
+);
+
+void NNS_G2dLoadImage2DMapping
+(
+ const NNSG2dCharacterData * pSrcData,
+ u32 baseAddr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImageProxy * pImgProxy
+);
+
+typedef struct NNSG2dImagePaletteProxy
+{
+ GXTexFmt fmt;
+ BOOL bExtendedPlt;
+ NNSG2dVRamLocation vramLocation;
+} NNSG2dImagePaletteProxy;
+
+void NNS_G2dLoadPalette
+(
+ const NNSG2dPaletteData * pSrcData,
+ u32 addr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImagePaletteProxy * pPltProxy
+);
+
+void NNS_G2dLoadPaletteEx
+(
+ const NNSG2dPaletteData * pSrcData,
+ const NNSG2dPaletteCompressInfo * pCmpInfo,
+ u32 addr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImagePaletteProxy * pPltProxy
+);
+
+typedef struct NNSG2dCellVramTransferData
+{
+ u32 srcDataOffset;
+ u32 szByte;
+} NNSG2dCellVramTransferData;
+
+typedef struct NNSG2dVramTransferData
+{
+ u32 szByteMax;
+ NNSG2dCellVramTransferData * pCellTransferDataArray;
+} NNSG2dVramTransferData;
+
+typedef struct NNSG2dCellOAMAttrData
+{
+ u16 attr0;
+ u16 attr1;
+ u16 attr2;
+} NNSG2dCellOAMAttrData;
+
+typedef struct NNSG2dCellData
+{
+ u16 numOAMAttrs;
+ u16 cellAttr;
+ NNSG2dCellOAMAttrData * pOamAttrArray;
+
+} NNSG2dCellData;
+
+typedef struct NNSG2dCellDataBank
+{
+ u16 numCells;
+ u16 cellBankAttr;
+ NNSG2dCellData * pCellDataArrayHead;
+ NNSG2dCharacterDataMapingType mappingMode;
+ NNSG2dVramTransferData * pVramTransferData;
+ void * pStringBank;
+ void * pExtendedData;
+
+} NNSG2dCellDataBank;
+
+typedef enum NNSG2dAnimationPlayMode
+{
+ NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0,
+ NNS_G2D_ANIMATIONPLAYMODE_FORWARD,
+ NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP,
+ NNS_G2D_ANIMATIONPLAYMODE_REVERSE,
+ NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP,
+ NNS_G2D_ANIMATIONPLAYMODE_MAX
+} NNSG2dAnimationPlayMode;
+
+typedef struct NNSG2dAnimFrameData
+{
+ void * pContent;
+ u16 frames;
+ u16 pad16;
+} NNSG2dAnimFrameData;
+
+typedef struct NNSG2dAnimSequenceData
+{
+ u16 numFrames;
+ u16 loopStartFrameIdx;
+ u32 animType;
+ NNSG2dAnimationPlayMode playMode;
+ NNSG2dAnimFrameData * pAnmFrameArray;
+
+} NNSG2dAnimSequenceData;
+
+typedef struct NNSG2dAnimBankData
+{
+
+ u16 numSequences;
+ u16 numTotalFrames;
+ NNSG2dAnimSequenceData * pSequenceArrayHead;
+ NNSG2dAnimFrameData * pFrameArrayHead;
+ void * pAnimContents;
+ void * pStringBank;
+ void * pExtendedData;
+
+} NNSG2dAnimBankData;
+
+BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
+BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
+BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData);
+BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData);
+BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData);
+BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompressInfo ** ppPltCmpInfo);
+BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank);
+BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank);
+
+#endif //NNSYS_NNS_G2D_H
diff --git a/arm9/lib/include/RTC_api.h b/arm9/lib/include/RTC_api.h
index d2577cdf..09efde7e 100644
--- a/arm9/lib/include/RTC_api.h
+++ b/arm9/lib/include/RTC_api.h
@@ -1,6 +1,29 @@
#ifndef NITRO_RTC_API_H_
#define NITRO_RTC_API_H_
+typedef enum RTCAlarmChan
+{
+ RTC_ALARM_CHAN_1 = 0,
+ RTC_ALARM_CHAN_2,
+ RTC_ALARM_CHAN_MAX
+}
+RTCAlarmChan;
+
+// Alarm status definitions
+typedef enum RTCAlarmStatus
+{
+ RTC_ALARM_STATUS_OFF = 0,
+ RTC_ALARM_STATUS_ON,
+ RTC_ALARM_STATUS_MAX
+}
+RTCAlarmStatus;
+
+#define RTC_ALARM_ENABLE_NONE 0x0000
+#define RTC_ALARM_ENABLE_WEEK 0x0001
+#define RTC_ALARM_ENABLE_HOUR 0x0002
+#define RTC_ALARM_ENABLE_MINUTE 0x0004
+#define RTC_ALARM_ENABLE_ALL ( RTC_ALARM_ENABLE_WEEK | RTC_ALARM_ENABLE_HOUR | RTC_ALARM_ENABLE_MINUTE )
+
typedef enum RTCWeek
{
RTC_WEEK_SUNDAY = 0,
@@ -12,7 +35,7 @@ typedef enum RTCWeek
RTC_WEEK_SATURDAY,
RTC_WEEK_MAX
}
- RTCWeek;
+RTCWeek;
typedef struct RTCDate
{
@@ -21,7 +44,7 @@ typedef struct RTCDate
u32 day;
RTCWeek week;
}
- RTCDate;
+RTCDate;
typedef struct RTCTime
{
@@ -29,6 +52,60 @@ typedef struct RTCTime
u32 minute;
u32 second;
}
- RTCTime;
+RTCTime;
+
+typedef struct RTCAlarmParam
+{
+ RTCWeek week; // Day of the week
+ u32 hour; // Hour ( 0 ~ 23 )
+ u32 minute; // Minute ( 0 ~ 59 )
+ u32 enable; // Alarm enable flag ( RTC_ALARM_ENABLE_* )
+
+}
+RTCAlarmParam;
+
+typedef enum RTCResult
+{
+ RTC_RESULT_SUCCESS = 0,
+ RTC_RESULT_BUSY,
+ RTC_RESULT_ILLEGAL_PARAMETER,
+ RTC_RESULT_SEND_ERROR,
+ RTC_RESULT_INVALID_COMMAND,
+ RTC_RESULT_ILLEGAL_STATUS,
+ RTC_RESULT_FATAL_ERROR,
+ RTC_RESULT_MAX
+}
+RTCResult;
+
+typedef void (*RTCCallback) (RTCResult result, void *arg);
+typedef void (*RTCInterrupt) (void);
+
+void RTC_Init(void);
+RTCResult RTC_GetDate(RTCDate *date);
+RTCResult RTC_GetTime(RTCTime *time);
+RTCResult RTC_GetDateTime(RTCDate *date, RTCTime *time);
+RTCResult RTC_SetDate(const RTCDate *date);
+RTCResult RTC_SetTime(const RTCTime *time);
+RTCResult RTC_SetDateTime(const RTCDate *date, const RTCTime *time);
+RTCResult RTC_GetAlarmStatus(RTCAlarmChan chan, RTCAlarmStatus *status);
+RTCResult RTC_GetAlarmParam(RTCAlarmChan chan, RTCAlarmParam *param);
+RTCResult RTC_SetAlarmStatus(RTCAlarmChan chan, const RTCAlarmStatus *status);
+RTCResult RTC_SetAlarmParam(RTCAlarmChan chan, const RTCAlarmParam *param);
+RTCResult RTC_GetDateAsync(RTCDate *date, RTCCallback callback, void *arg);
+RTCResult RTC_GetTimeAsync(RTCTime *time, RTCCallback callback, void *arg);
+RTCResult RTC_GetDateTimeAsync(RTCDate *date, RTCTime *time, RTCCallback callback, void *arg);
+RTCResult RTC_SetDateAsync(const RTCDate *date, RTCCallback callback, void *arg);
+RTCResult RTC_SetTimeAsync(const RTCTime *time, RTCCallback callback, void *arg);
+RTCResult RTC_SetDateTimeAsync(const RTCDate *date, const RTCTime *time, RTCCallback callback,
+ void *arg);
+RTCResult RTC_GetAlarmStatusAsync(RTCAlarmChan chan, RTCAlarmStatus *status, RTCCallback callback,
+ void *arg);
+RTCResult RTC_GetAlarmParamAsync(RTCAlarmChan chan, RTCAlarmParam *param, RTCCallback callback,
+ void *arg);
+void RTC_SetAlarmInterrupt(RTCInterrupt interrupt);
+RTCResult RTC_SetAlarmStatusAsync(RTCAlarmChan chan, const RTCAlarmStatus *status,
+ RTCCallback callback, void *arg);
+RTCResult RTC_SetAlarmParamAsync(RTCAlarmChan chan, const RTCAlarmParam *param,
+ RTCCallback callback, void *arg);
#endif //NITRO_RTC_API_H_
diff --git a/arm9/lib/include/RTC_internal.h b/arm9/lib/include/RTC_internal.h
new file mode 100644
index 00000000..440d8b95
--- /dev/null
+++ b/arm9/lib/include/RTC_internal.h
@@ -0,0 +1,11 @@
+#ifndef NITRO_RTC_INTERNAL_H_
+#define NITRO_RTC_INTERNAL_H_
+
+#include "nitro/types.h"
+
+BOOL RTCi_WriteRawStatus2Async(void);
+BOOL RTCi_ReadRawTimeAsync(void);
+BOOL RTCi_ReadRawDateAsync(void);
+BOOL RTCi_ReadRawDateTimeAsync(void);
+
+#endif //NITRO_RTC_INTERNAL_H_
diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h
index 26f6cfaf..11081942 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/include/gx.h
@@ -5,6 +5,7 @@
#include "MI_memory.h"
#include "MI_dma.h"
#include "OS_vramExclusive.h"
+#include "registers.h"
//temporary while other files aren't decompiled
@@ -166,4 +167,18 @@ typedef enum
}
GXDispSelect;
+typedef enum
+{
+ GX_OBJVRAMMODE_CHAR_2D = (0 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_32K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_64K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (1 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_128K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (2 << REG_GX_DISPCNT_EXOBJ_SHIFT),
+ GX_OBJVRAMMODE_CHAR_1D_256K =
+ (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (3 << REG_GX_DISPCNT_EXOBJ_SHIFT)
+}
+ GXOBJVRamModeChar;
+
#endif //GUARD_GX_H
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index d55347d5..7a0155da 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -517,4 +517,146 @@
#define REG_GX_POWCNT_DSEL_SIZE 1
#define REG_GX_POWCNT_DSEL_MASK 0x8000
+// GX_DISPCNT
+#define REG_GX_DISPCNT_O_SHIFT 31
+#define REG_GX_DISPCNT_O_SIZE 1
+#define REG_GX_DISPCNT_O_MASK 0x80000000
+
+#define REG_GX_DISPCNT_BG_SHIFT 30
+#define REG_GX_DISPCNT_BG_SIZE 1
+#define REG_GX_DISPCNT_BG_MASK 0x40000000
+
+#define REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT 27
+#define REG_GX_DISPCNT_BGSCREENOFFSET_SIZE 3
+#define REG_GX_DISPCNT_BGSCREENOFFSET_MASK 0x38000000
+
+#define REG_GX_DISPCNT_BGCHAROFFSET_SHIFT 24
+#define REG_GX_DISPCNT_BGCHAROFFSET_SIZE 3
+#define REG_GX_DISPCNT_BGCHAROFFSET_MASK 0x07000000
+
+#define REG_GX_DISPCNT_OH_SHIFT 23
+#define REG_GX_DISPCNT_OH_SIZE 1
+#define REG_GX_DISPCNT_OH_MASK 0x00800000
+
+#define REG_GX_DISPCNT_EXOBJ_SHIFT 20
+#define REG_GX_DISPCNT_EXOBJ_SIZE 3
+#define REG_GX_DISPCNT_EXOBJ_MASK 0x00700000
+
+#define REG_GX_DISPCNT_VRAM_SHIFT 18
+#define REG_GX_DISPCNT_VRAM_SIZE 2
+#define REG_GX_DISPCNT_VRAM_MASK 0x000c0000
+
+#define REG_GX_DISPCNT_MODE_SHIFT 16
+#define REG_GX_DISPCNT_MODE_SIZE 2
+#define REG_GX_DISPCNT_MODE_MASK 0x00030000
+
+#define REG_GX_DISPCNT_OW_SHIFT 15
+#define REG_GX_DISPCNT_OW_SIZE 1
+#define REG_GX_DISPCNT_OW_MASK 0x00008000
+
+#define REG_GX_DISPCNT_W1_SHIFT 14
+#define REG_GX_DISPCNT_W1_SIZE 1
+#define REG_GX_DISPCNT_W1_MASK 0x00004000
+
+#define REG_GX_DISPCNT_W0_SHIFT 13
+#define REG_GX_DISPCNT_W0_SIZE 1
+#define REG_GX_DISPCNT_W0_MASK 0x00002000
+
+#define REG_GX_DISPCNT_DISPLAY_SHIFT 8
+#define REG_GX_DISPCNT_DISPLAY_SIZE 5
+#define REG_GX_DISPCNT_DISPLAY_MASK 0x00001f00
+
+#define REG_GX_DISPCNT_BLANK_SHIFT 7
+#define REG_GX_DISPCNT_BLANK_SIZE 1
+#define REG_GX_DISPCNT_BLANK_MASK 0x00000080
+
+#define REG_GX_DISPCNT_OBJMAP_SHIFT 4
+#define REG_GX_DISPCNT_OBJMAP_SIZE 3
+#define REG_GX_DISPCNT_OBJMAP_MASK 0x00000070
+
+#define REG_GX_DISPCNT_BG02D3D_SHIFT 3
+#define REG_GX_DISPCNT_BG02D3D_SIZE 1
+#define REG_GX_DISPCNT_BG02D3D_MASK 0x00000008
+
+#define REG_GX_DISPCNT_BGMODE_SHIFT 0
+#define REG_GX_DISPCNT_BGMODE_SIZE 3
+#define REG_GX_DISPCNT_BGMODE_MASK 0x00000007
+
+#define REG_GX_DISPCNT_OBJMAP_CH_SHIFT 4
+#define REG_GX_DISPCNT_OBJMAP_CH_SIZE 1
+#define REG_GX_DISPCNT_OBJMAP_CH_MASK 0x00000010
+
+#define REG_GX_DISPCNT_OBJMAP_BM_SHIFT 5
+#define REG_GX_DISPCNT_OBJMAP_BM_SIZE 2
+#define REG_GX_DISPCNT_OBJMAP_BM_MASK 0x00000060
+
+#define REG_GX_DISPCNT_EXOBJ_CH_SHIFT 20
+#define REG_GX_DISPCNT_EXOBJ_CH_SIZE 2
+#define REG_GX_DISPCNT_EXOBJ_CH_MASK 0x00300000
+
+#define REG_GX_DISPCNT_EXOBJ_BM_SHIFT 22
+#define REG_GX_DISPCNT_EXOBJ_BM_SIZE 1
+#define REG_GX_DISPCNT_EXOBJ_BM_MASK 0x00400000
+
+// GXS_DB_DISPCNT
+#define REG_GXS_DB_DISPCNT_O_SHIFT 31
+#define REG_GXS_DB_DISPCNT_O_SIZE 1
+#define REG_GXS_DB_DISPCNT_O_MASK 0x80000000
+
+#define REG_GXS_DB_DISPCNT_BG_SHIFT 30
+#define REG_GXS_DB_DISPCNT_BG_SIZE 1
+#define REG_GXS_DB_DISPCNT_BG_MASK 0x40000000
+
+#define REG_GXS_DB_DISPCNT_OH_SHIFT 23
+#define REG_GXS_DB_DISPCNT_OH_SIZE 1
+#define REG_GXS_DB_DISPCNT_OH_MASK 0x00800000
+
+#define REG_GXS_DB_DISPCNT_EXOBJ_SHIFT 20
+#define REG_GXS_DB_DISPCNT_EXOBJ_SIZE 2
+#define REG_GXS_DB_DISPCNT_EXOBJ_MASK 0x00300000
+
+#define REG_GXS_DB_DISPCNT_MODE_SHIFT 16
+#define REG_GXS_DB_DISPCNT_MODE_SIZE 1
+#define REG_GXS_DB_DISPCNT_MODE_MASK 0x00010000
+
+#define REG_GXS_DB_DISPCNT_OW_SHIFT 15
+#define REG_GXS_DB_DISPCNT_OW_SIZE 1
+#define REG_GXS_DB_DISPCNT_OW_MASK 0x00008000
+
+#define REG_GXS_DB_DISPCNT_W1_SHIFT 14
+#define REG_GXS_DB_DISPCNT_W1_SIZE 1
+#define REG_GXS_DB_DISPCNT_W1_MASK 0x00004000
+
+#define REG_GXS_DB_DISPCNT_W0_SHIFT 13
+#define REG_GXS_DB_DISPCNT_W0_SIZE 1
+#define REG_GXS_DB_DISPCNT_W0_MASK 0x00002000
+
+#define REG_GXS_DB_DISPCNT_DISPLAY_SHIFT 8
+#define REG_GXS_DB_DISPCNT_DISPLAY_SIZE 5
+#define REG_GXS_DB_DISPCNT_DISPLAY_MASK 0x00001f00
+
+#define REG_GXS_DB_DISPCNT_BLANK_SHIFT 7
+#define REG_GXS_DB_DISPCNT_BLANK_SIZE 1
+#define REG_GXS_DB_DISPCNT_BLANK_MASK 0x00000080
+
+#define REG_GXS_DB_DISPCNT_OBJMAP_SHIFT 4
+#define REG_GXS_DB_DISPCNT_OBJMAP_SIZE 3
+#define REG_GXS_DB_DISPCNT_OBJMAP_MASK 0x00000070
+
+#define REG_GXS_DB_DISPCNT_BGMODE_SHIFT 0
+#define REG_GXS_DB_DISPCNT_BGMODE_SIZE 3
+#define REG_GXS_DB_DISPCNT_BGMODE_MASK 0x00000007
+
+#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SHIFT 4
+#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SIZE 1
+#define REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK 0x00000010
+
+#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SHIFT 5
+#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SIZE 2
+#define REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK 0x00000060
+
+#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SHIFT 20
+#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2
+#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H
diff --git a/arm9/lib/src/FX_sincos.c b/arm9/lib/src/FX_sincos.c
new file mode 100644
index 00000000..89c8fc78
--- /dev/null
+++ b/arm9/lib/src/FX_sincos.c
@@ -0,0 +1,4105 @@
+#include "global.h"
+#include "fx.h"
+
+/*
+ * [2 * idx + 0] <- sin(idx * 2pi / 4096)
+ * [2 * idx + 1] <- cos(idx * 2pi / 4096)
+ */
+const fx16 FX_SinCosTable_[4096 * 2] = {
+ FX16_CONST(0.0), FX16_CONST(1.0),
+ FX16_CONST(0.0015339801862847655), FX16_CONST(0.9999988234517019),
+ FX16_CONST(0.003067956762965976), FX16_CONST(0.9999952938095762),
+ FX16_CONST(0.0046019261204485705), FX16_CONST(0.9999894110819284),
+ FX16_CONST(0.006135884649154475), FX16_CONST(0.9999811752826011),
+ FX16_CONST(0.007669828739531097), FX16_CONST(0.9999705864309741),
+ FX16_CONST(0.00920375478205982), FX16_CONST(0.9999576445519639),
+ FX16_CONST(0.01073765916726449), FX16_CONST(0.9999423496760239),
+ FX16_CONST(0.012271538285719925), FX16_CONST(0.9999247018391445),
+ FX16_CONST(0.01380538852806039), FX16_CONST(0.9999047010828529),
+ FX16_CONST(0.0153392062849881), FX16_CONST(0.9998823474542126),
+ FX16_CONST(0.01687298794728171), FX16_CONST(0.9998576410058239),
+ FX16_CONST(0.01840672990580482), FX16_CONST(0.9998305817958234),
+ FX16_CONST(0.01994042855151444), FX16_CONST(0.9998011698878843),
+ FX16_CONST(0.021474080275469508), FX16_CONST(0.9997694053512153),
+ FX16_CONST(0.02300768146883937), FX16_CONST(0.9997352882605617),
+ FX16_CONST(0.024541228522912288), FX16_CONST(0.9996988186962042),
+ FX16_CONST(0.0260747178291039), FX16_CONST(0.9996599967439592),
+ FX16_CONST(0.02760814577896574), FX16_CONST(0.9996188224951786),
+ FX16_CONST(0.029141508764193722), FX16_CONST(0.9995752960467492),
+ FX16_CONST(0.030674803176636626), FX16_CONST(0.9995294175010931),
+ FX16_CONST(0.032208025408304586), FX16_CONST(0.999481186966167),
+ FX16_CONST(0.03374117185137758), FX16_CONST(0.9994306045554617),
+ FX16_CONST(0.03527423889821395), FX16_CONST(0.9993776703880028),
+ FX16_CONST(0.03680722294135883), FX16_CONST(0.9993223845883495),
+ FX16_CONST(0.038340120373552694), FX16_CONST(0.9992647472865944),
+ FX16_CONST(0.03987292758773981), FX16_CONST(0.9992047586183639),
+ FX16_CONST(0.04140564097707674), FX16_CONST(0.9991424187248169),
+ FX16_CONST(0.04293825693494082), FX16_CONST(0.9990777277526454),
+ FX16_CONST(0.04447077185493867), FX16_CONST(0.9990106858540734),
+ FX16_CONST(0.04600318213091462), FX16_CONST(0.9989412931868569),
+ FX16_CONST(0.0475354841569593), FX16_CONST(0.9988695499142836),
+ FX16_CONST(0.049067674327418015), FX16_CONST(0.9987954562051724),
+ FX16_CONST(0.05059974903689928), FX16_CONST(0.9987190122338729),
+ FX16_CONST(0.052131704680283324), FX16_CONST(0.9986402181802653),
+ FX16_CONST(0.05366353765273052), FX16_CONST(0.9985590742297593),
+ FX16_CONST(0.055195244349689934), FX16_CONST(0.9984755805732948),
+ FX16_CONST(0.05672682116690775), FX16_CONST(0.9983897374073402),
+ FX16_CONST(0.05825826450043575), FX16_CONST(0.9983015449338929),
+ FX16_CONST(0.05978957074663987), FX16_CONST(0.9982110033604782),
+ FX16_CONST(0.06132073630220858), FX16_CONST(0.9981181129001492),
+ FX16_CONST(0.0628517575641614), FX16_CONST(0.9980228737714862),
+ FX16_CONST(0.06438263092985747), FX16_CONST(0.997925286198596),
+ FX16_CONST(0.0659133527970038), FX16_CONST(0.9978253504111116),
+ FX16_CONST(0.06744391956366405), FX16_CONST(0.9977230666441916),
+ FX16_CONST(0.06897432762826675), FX16_CONST(0.9976184351385196),
+ FX16_CONST(0.07050457338961386), FX16_CONST(0.9975114561403035),
+ FX16_CONST(0.07203465324688933), FX16_CONST(0.9974021299012753),
+ FX16_CONST(0.07356456359966743), FX16_CONST(0.9972904566786902),
+ FX16_CONST(0.0750943008479213), FX16_CONST(0.9971764367353262),
+ FX16_CONST(0.07662386139203149), FX16_CONST(0.997060070339483),
+ FX16_CONST(0.07815324163279423), FX16_CONST(0.9969413577649822),
+ FX16_CONST(0.07968243797143013), FX16_CONST(0.9968202992911657),
+ FX16_CONST(0.08121144680959244), FX16_CONST(0.9966968952028961),
+ FX16_CONST(0.08274026454937569), FX16_CONST(0.9965711457905548),
+ FX16_CONST(0.08426888759332407), FX16_CONST(0.9964430513500426),
+ FX16_CONST(0.0857973123444399), FX16_CONST(0.996312612182778),
+ FX16_CONST(0.08732553520619206), FX16_CONST(0.996179828595697),
+ FX16_CONST(0.0888535525825246), FX16_CONST(0.996044700901252),
+ FX16_CONST(0.09038136087786498), FX16_CONST(0.9959072294174117),
+ FX16_CONST(0.09190895649713272), FX16_CONST(0.9957674144676598),
+ FX16_CONST(0.09343633584574779), FX16_CONST(0.9956252563809943),
+ FX16_CONST(0.09496349532963899), FX16_CONST(0.9954807554919269),
+ FX16_CONST(0.09649043135525259), FX16_CONST(0.9953339121404823),
+ FX16_CONST(0.0980171403295606), FX16_CONST(0.9951847266721969),
+ FX16_CONST(0.09954361866006932), FX16_CONST(0.9950331994381186),
+ FX16_CONST(0.10106986275482782), FX16_CONST(0.9948793307948056),
+ FX16_CONST(0.10259586902243628), FX16_CONST(0.9947231211043257),
+ FX16_CONST(0.10412163387205459), FX16_CONST(0.9945645707342554),
+ FX16_CONST(0.10564715371341062), FX16_CONST(0.9944036800576791),
+ FX16_CONST(0.10717242495680884), FX16_CONST(0.9942404494531879),
+ FX16_CONST(0.10869744401313872), FX16_CONST(0.9940748793048794),
+ FX16_CONST(0.11022220729388306), FX16_CONST(0.9939069700023561),
+ FX16_CONST(0.11174671121112659), FX16_CONST(0.9937367219407246),
+ FX16_CONST(0.11327095217756435), FX16_CONST(0.9935641355205953),
+ FX16_CONST(0.11479492660651008), FX16_CONST(0.9933892111480807),
+ FX16_CONST(0.11631863091190475), FX16_CONST(0.9932119492347945),
+ FX16_CONST(0.11784206150832498), FX16_CONST(0.9930323501978514),
+ FX16_CONST(0.11936521481099135), FX16_CONST(0.9928504144598651),
+ FX16_CONST(0.12088808723577708), FX16_CONST(0.992666142448948),
+ FX16_CONST(0.1224106751992162), FX16_CONST(0.99247953459871),
+ FX16_CONST(0.12393297511851216), FX16_CONST(0.9922905913482574),
+ FX16_CONST(0.12545498341154623), FX16_CONST(0.9920993131421918),
+ FX16_CONST(0.12697669649688587), FX16_CONST(0.9919057004306093),
+ FX16_CONST(0.12849811079379317), FX16_CONST(0.9917097536690995),
+ FX16_CONST(0.13001922272223335), FX16_CONST(0.9915114733187439),
+ FX16_CONST(0.13154002870288312), FX16_CONST(0.9913108598461154),
+ FX16_CONST(0.13306052515713906), FX16_CONST(0.9911079137232769),
+ FX16_CONST(0.13458070850712617), FX16_CONST(0.99090263542778),
+ FX16_CONST(0.1361005751757062), FX16_CONST(0.9906950254426646),
+ FX16_CONST(0.13762012158648604), FX16_CONST(0.9904850842564571),
+ FX16_CONST(0.1391393441638262), FX16_CONST(0.9902728123631691),
+ FX16_CONST(0.1406582393328492), FX16_CONST(0.9900582102622971),
+ FX16_CONST(0.14217680351944803), FX16_CONST(0.9898412784588205),
+ FX16_CONST(0.14369503315029447), FX16_CONST(0.9896220174632009),
+ FX16_CONST(0.14521292465284746), FX16_CONST(0.9894004277913804),
+ FX16_CONST(0.14673047445536175), FX16_CONST(0.989176509964781),
+ FX16_CONST(0.14824767898689603), FX16_CONST(0.988950264510303),
+ FX16_CONST(0.1497645346773215), FX16_CONST(0.9887216919603238),
+ FX16_CONST(0.15128103795733022), FX16_CONST(0.9884907928526966),
+ FX16_CONST(0.15279718525844344), FX16_CONST(0.9882575677307495),
+ FX16_CONST(0.1543129730130201), FX16_CONST(0.9880220171432835),
+ FX16_CONST(0.15582839765426523), FX16_CONST(0.9877841416445722),
+ FX16_CONST(0.15734345561623825), FX16_CONST(0.9875439417943592),
+ FX16_CONST(0.15885814333386145), FX16_CONST(0.9873014181578584),
+ FX16_CONST(0.16037245724292828), FX16_CONST(0.987056571305751),
+ FX16_CONST(0.16188639378011183), FX16_CONST(0.9868094018141855),
+ FX16_CONST(0.16339994938297323), FX16_CONST(0.9865599102647754),
+ FX16_CONST(0.1649131204899699), FX16_CONST(0.9863080972445987),
+ FX16_CONST(0.1664259035404641), FX16_CONST(0.9860539633461954),
+ FX16_CONST(0.16793829497473117), FX16_CONST(0.9857975091675675),
+ FX16_CONST(0.16945029123396796), FX16_CONST(0.9855387353121761),
+ FX16_CONST(0.17096188876030122), FX16_CONST(0.9852776423889412),
+ FX16_CONST(0.17247308399679595), FX16_CONST(0.9850142310122398),
+ FX16_CONST(0.17398387338746382), FX16_CONST(0.9847485018019042),
+ FX16_CONST(0.17549425337727143), FX16_CONST(0.9844804553832209),
+ FX16_CONST(0.17700422041214875), FX16_CONST(0.984210092386929),
+ FX16_CONST(0.1785137709389975), FX16_CONST(0.9839374134492189),
+ FX16_CONST(0.18002290140569951), FX16_CONST(0.9836624192117303),
+ FX16_CONST(0.18153160826112497), FX16_CONST(0.9833851103215512),
+ FX16_CONST(0.18303988795514095), FX16_CONST(0.9831054874312163),
+ FX16_CONST(0.18454773693861962), FX16_CONST(0.9828235511987052),
+ FX16_CONST(0.18605515166344663), FX16_CONST(0.9825393022874412),
+ FX16_CONST(0.1875621285825296), FX16_CONST(0.9822527413662894),
+ FX16_CONST(0.1890686641498062), FX16_CONST(0.9819638691095552),
+ FX16_CONST(0.19057475482025274), FX16_CONST(0.9816726861969831),
+ FX16_CONST(0.19208039704989244), FX16_CONST(0.9813791933137546),
+ FX16_CONST(0.1935855872958036), FX16_CONST(0.9810833911504867),
+ FX16_CONST(0.19509032201612825), FX16_CONST(0.9807852804032304),
+ FX16_CONST(0.19659459767008022), FX16_CONST(0.9804848617734694),
+ FX16_CONST(0.19809841071795356), FX16_CONST(0.9801821359681174),
+ FX16_CONST(0.19960175762113097), FX16_CONST(0.9798771036995176),
+ FX16_CONST(0.2011046348420919), FX16_CONST(0.9795697656854405),
+ FX16_CONST(0.20260703884442113), FX16_CONST(0.979260122649082),
+ FX16_CONST(0.20410896609281687), FX16_CONST(0.9789481753190622),
+ FX16_CONST(0.20561041305309924), FX16_CONST(0.9786339244294232),
+ FX16_CONST(0.20711137619221856), FX16_CONST(0.9783173707196277),
+ FX16_CONST(0.20861185197826349), FX16_CONST(0.9779985149345571),
+ FX16_CONST(0.2101118368804696), FX16_CONST(0.9776773578245099),
+ FX16_CONST(0.21161132736922755), FX16_CONST(0.9773539001452),
+ FX16_CONST(0.21311031991609136), FX16_CONST(0.9770281426577544),
+ FX16_CONST(0.21460881099378676), FX16_CONST(0.9767000861287118),
+ FX16_CONST(0.21610679707621952), FX16_CONST(0.9763697313300211),
+ FX16_CONST(0.21760427463848364), FX16_CONST(0.976037079039039),
+ FX16_CONST(0.2191012401568698), FX16_CONST(0.9757021300385286),
+ FX16_CONST(0.2205976901088735), FX16_CONST(0.975364885116657),
+ FX16_CONST(0.2220936209732035), FX16_CONST(0.9750253450669941),
+ FX16_CONST(0.22358902922979), FX16_CONST(0.9746835106885107),
+ FX16_CONST(0.22508391135979283), FX16_CONST(0.9743393827855759),
+ FX16_CONST(0.22657826384561), FX16_CONST(0.9739929621679558),
+ FX16_CONST(0.22807208317088573), FX16_CONST(0.973644249650812),
+ FX16_CONST(0.22956536582051887), FX16_CONST(0.9732932460546982),
+ FX16_CONST(0.2310581082806711), FX16_CONST(0.9729399522055602),
+ FX16_CONST(0.23255030703877524), FX16_CONST(0.9725843689347322),
+ FX16_CONST(0.23404195858354343), FX16_CONST(0.9722264970789363),
+ FX16_CONST(0.2355330594049755), FX16_CONST(0.9718663374802794),
+ FX16_CONST(0.2370236059943672), FX16_CONST(0.9715038909862518),
+ FX16_CONST(0.23851359484431842), FX16_CONST(0.9711391584497251),
+ FX16_CONST(0.2400030224487415), FX16_CONST(0.9707721407289504),
+ FX16_CONST(0.24149188530286933), FX16_CONST(0.9704028386875555),
+ FX16_CONST(0.24298017990326387), FX16_CONST(0.970031253194544),
+ FX16_CONST(0.24446790274782415), FX16_CONST(0.9696573851242924),
+ FX16_CONST(0.2459550503357946), FX16_CONST(0.9692812353565485),
+ FX16_CONST(0.24744161916777327), FX16_CONST(0.9689028047764289),
+ FX16_CONST(0.24892760574572015), FX16_CONST(0.9685220942744174),
+ FX16_CONST(0.2504130065729652), FX16_CONST(0.9681391047463624),
+ FX16_CONST(0.25189781815421697), FX16_CONST(0.9677538370934755),
+ FX16_CONST(0.25338203699557016), FX16_CONST(0.9673662922223285),
+ FX16_CONST(0.25486565960451457), FX16_CONST(0.9669764710448521),
+ FX16_CONST(0.2563486824899429), FX16_CONST(0.9665843744783331),
+ FX16_CONST(0.257831102162159), FX16_CONST(0.9661900034454125),
+ FX16_CONST(0.25931291513288623), FX16_CONST(0.9657933588740837),
+ FX16_CONST(0.2607941179152755), FX16_CONST(0.9653944416976894),
+ FX16_CONST(0.2622747070239136), FX16_CONST(0.9649932528549203),
+ FX16_CONST(0.26375467897483135), FX16_CONST(0.9645897932898128),
+ FX16_CONST(0.2652340302855118), FX16_CONST(0.9641840639517458),
+ FX16_CONST(0.26671275747489837), FX16_CONST(0.9637760657954398),
+ FX16_CONST(0.2681908570634032), FX16_CONST(0.963365799780954),
+ FX16_CONST(0.2696683255729151), FX16_CONST(0.9629532668736839),
+ FX16_CONST(0.271145159526808), FX16_CONST(0.9625384680443592),
+ FX16_CONST(0.272621355449949), FX16_CONST(0.9621214042690416),
+ FX16_CONST(0.2740969098687064), FX16_CONST(0.9617020765291225),
+ FX16_CONST(0.27557181931095814), FX16_CONST(0.9612804858113206),
+ FX16_CONST(0.2770460803060999), FX16_CONST(0.9608566331076797),
+ FX16_CONST(0.27851968938505306), FX16_CONST(0.9604305194155658),
+ FX16_CONST(0.2799926430802732), FX16_CONST(0.960002145737666),
+ FX16_CONST(0.28146493792575794), FX16_CONST(0.9595715130819845),
+ FX16_CONST(0.2829365704570554), FX16_CONST(0.9591386224618419),
+ FX16_CONST(0.2844075372112719), FX16_CONST(0.9587034748958716),
+ FX16_CONST(0.2858778347270806), FX16_CONST(0.9582660714080177),
+ FX16_CONST(0.2873474595447295), FX16_CONST(0.9578264130275329),
+ FX16_CONST(0.2888164082060495), FX16_CONST(0.9573845007889759),
+ FX16_CONST(0.29028467725446233), FX16_CONST(0.9569403357322088),
+ FX16_CONST(0.29175226323498926), FX16_CONST(0.9564939189023951),
+ FX16_CONST(0.29321916269425863), FX16_CONST(0.9560452513499964),
+ FX16_CONST(0.2946853721805143), FX16_CONST(0.9555943341307711),
+ FX16_CONST(0.2961508882436238), FX16_CONST(0.9551411683057708),
+ FX16_CONST(0.2976157074350862), FX16_CONST(0.9546857549413383),
+ FX16_CONST(0.2990798263080405), FX16_CONST(0.9542280951091057),
+ FX16_CONST(0.30054324141727345), FX16_CONST(0.9537681898859903),
+ FX16_CONST(0.3020059493192281), FX16_CONST(0.9533060403541939),
+ FX16_CONST(0.3034679465720113), FX16_CONST(0.9528416476011987),
+ FX16_CONST(0.3049292297354024), FX16_CONST(0.9523750127197659),
+ FX16_CONST(0.3063897953708609), FX16_CONST(0.9519061368079323),
+ FX16_CONST(0.30784964004153487), FX16_CONST(0.9514350209690083),
+ FX16_CONST(0.3093087603122687), FX16_CONST(0.9509616663115751),
+ FX16_CONST(0.3107671527496115), FX16_CONST(0.9504860739494817),
+ FX16_CONST(0.3122248139218249), FX16_CONST(0.950008245001843),
+ FX16_CONST(0.3136817403988915), FX16_CONST(0.9495281805930367),
+ FX16_CONST(0.31513792875252244), FX16_CONST(0.9490458818527006),
+ FX16_CONST(0.31659337555616585), FX16_CONST(0.9485613499157303),
+ FX16_CONST(0.31804807738501495), FX16_CONST(0.9480745859222762),
+ FX16_CONST(0.3195020308160157), FX16_CONST(0.9475855910177411),
+ FX16_CONST(0.3209552324278752), FX16_CONST(0.9470943663527772),
+ FX16_CONST(0.32240767880106985), FX16_CONST(0.9466009130832835),
+ FX16_CONST(0.32385936651785285), FX16_CONST(0.9461052323704034),
+ FX16_CONST(0.3253102921622629), FX16_CONST(0.9456073253805213),
+ FX16_CONST(0.32676045232013173), FX16_CONST(0.9451071932852606),
+ FX16_CONST(0.3282098435790925), FX16_CONST(0.9446048372614803),
+ FX16_CONST(0.3296584625285875), FX16_CONST(0.9441002584912727),
+ FX16_CONST(0.33110630575987643), FX16_CONST(0.9435934581619604),
+ FX16_CONST(0.3325533698660442), FX16_CONST(0.9430844374660935),
+ FX16_CONST(0.3339996514420094), FX16_CONST(0.9425731976014469),
+ FX16_CONST(0.3354451470845316), FX16_CONST(0.9420597397710173),
+ FX16_CONST(0.33688985339222005), FX16_CONST(0.9415440651830208),
+ FX16_CONST(0.3383337669655411), FX16_CONST(0.9410261750508893),
+ FX16_CONST(0.33977688440682685), FX16_CONST(0.9405060705932683),
+ FX16_CONST(0.34121920232028236), FX16_CONST(0.939983753034014),
+ FX16_CONST(0.3426607173119944), FX16_CONST(0.9394592236021899),
+ FX16_CONST(0.3441014259899388), FX16_CONST(0.9389324835320646),
+ FX16_CONST(0.3455413249639891), FX16_CONST(0.9384035340631081),
+ FX16_CONST(0.3469804108459237), FX16_CONST(0.9378723764399899),
+ FX16_CONST(0.34841868024943456), FX16_CONST(0.937339011912575),
+ FX16_CONST(0.3498561297901349), FX16_CONST(0.9368034417359216),
+ FX16_CONST(0.3512927560855671), FX16_CONST(0.9362656671702783),
+ FX16_CONST(0.3527285557552107), FX16_CONST(0.9357256894810804),
+ FX16_CONST(0.35416352542049034), FX16_CONST(0.9351835099389476),
+ FX16_CONST(0.35559766170478385), FX16_CONST(0.9346391298196808),
+ FX16_CONST(0.35703096123343), FX16_CONST(0.9340925504042589),
+ FX16_CONST(0.35846342063373654), FX16_CONST(0.9335437729788362),
+ FX16_CONST(0.3598950365349881), FX16_CONST(0.932992798834739),
+ FX16_CONST(0.3613258055684543), FX16_CONST(0.9324396292684624),
+ FX16_CONST(0.3627557243673972), FX16_CONST(0.9318842655816681),
+ FX16_CONST(0.3641847895670799), FX16_CONST(0.9313267090811804),
+ FX16_CONST(0.36561299780477385), FX16_CONST(0.9307669610789837),
+ FX16_CONST(0.3670403457197672), FX16_CONST(0.9302050228922191),
+ FX16_CONST(0.3684668299533723), FX16_CONST(0.9296408958431812),
+ FX16_CONST(0.3698924471489341), FX16_CONST(0.9290745812593159),
+ FX16_CONST(0.37131719395183754), FX16_CONST(0.9285060804732156),
+ FX16_CONST(0.37274106700951576), FX16_CONST(0.9279353948226179),
+ FX16_CONST(0.37416406297145793), FX16_CONST(0.9273625256504011),
+ FX16_CONST(0.3755861784892172), FX16_CONST(0.9267874743045817),
+ FX16_CONST(0.37700741021641826), FX16_CONST(0.9262102421383114),
+ FX16_CONST(0.37842775480876556), FX16_CONST(0.9256308305098727),
+ FX16_CONST(0.37984720892405116), FX16_CONST(0.9250492407826776),
+ FX16_CONST(0.3812657692221624), FX16_CONST(0.9244654743252626),
+ FX16_CONST(0.3826834323650898), FX16_CONST(0.9238795325112867),
+ FX16_CONST(0.38410019501693504), FX16_CONST(0.9232914167195276),
+ FX16_CONST(0.38551605384391885), FX16_CONST(0.9227011283338786),
+ FX16_CONST(0.3869310055143886), FX16_CONST(0.9221086687433452),
+ FX16_CONST(0.38834504669882625), FX16_CONST(0.9215140393420419),
+ FX16_CONST(0.3897581740698564), FX16_CONST(0.9209172415291894),
+ FX16_CONST(0.39117038430225387), FX16_CONST(0.9203182767091106),
+ FX16_CONST(0.39258167407295147), FX16_CONST(0.9197171462912274),
+ FX16_CONST(0.3939920400610481), FX16_CONST(0.9191138516900578),
+ FX16_CONST(0.39540147894781635), FX16_CONST(0.9185083943252123),
+ FX16_CONST(0.3968099874167103), FX16_CONST(0.9179007756213905),
+ FX16_CONST(0.39821756215337356), FX16_CONST(0.9172909970083779),
+ FX16_CONST(0.3996241998456468), FX16_CONST(0.9166790599210427),
+ FX16_CONST(0.4010298971835756), FX16_CONST(0.9160649657993317),
+ FX16_CONST(0.40243465085941843), FX16_CONST(0.9154487160882678),
+ FX16_CONST(0.4038384575676541), FX16_CONST(0.9148303122379462),
+ FX16_CONST(0.40524131400498986), FX16_CONST(0.9142097557035307),
+ FX16_CONST(0.40664321687036903), FX16_CONST(0.9135870479452508),
+ FX16_CONST(0.4080441628649787), FX16_CONST(0.9129621904283982),
+ FX16_CONST(0.4094441486922576), FX16_CONST(0.9123351846233227),
+ FX16_CONST(0.4108431710579039), FX16_CONST(0.9117060320054299),
+ FX16_CONST(0.4122412266698829), FX16_CONST(0.9110747340551764),
+ FX16_CONST(0.4136383122384345), FX16_CONST(0.9104412922580672),
+ FX16_CONST(0.41503442447608163), FX16_CONST(0.9098057081046522),
+ FX16_CONST(0.41642956009763715), FX16_CONST(0.9091679830905224),
+ FX16_CONST(0.41782371582021227), FX16_CONST(0.9085281187163061),
+ FX16_CONST(0.4192168883632239), FX16_CONST(0.9078861164876663),
+ FX16_CONST(0.4206090744484025), FX16_CONST(0.9072419779152958),
+ FX16_CONST(0.4220002707997997), FX16_CONST(0.9065957045149153),
+ FX16_CONST(0.42339047414379605), FX16_CONST(0.9059472978072685),
+ FX16_CONST(0.4247796812091088), FX16_CONST(0.9052967593181188),
+ FX16_CONST(0.4261678887267996), FX16_CONST(0.9046440905782462),
+ FX16_CONST(0.4275550934302821), FX16_CONST(0.9039892931234433),
+ FX16_CONST(0.4289412920553295), FX16_CONST(0.9033323684945118),
+ FX16_CONST(0.4303264813400826), FX16_CONST(0.9026733182372588),
+ FX16_CONST(0.43171065802505726), FX16_CONST(0.9020121439024932),
+ FX16_CONST(0.43309381885315196), FX16_CONST(0.901348847046022),
+ FX16_CONST(0.43447596056965565), FX16_CONST(0.9006834292286469),
+ FX16_CONST(0.4358570799222555), FX16_CONST(0.9000158920161602),
+ FX16_CONST(0.4372371736610441), FX16_CONST(0.8993462369793416),
+ FX16_CONST(0.43861623853852766), FX16_CONST(0.8986744656939538),
+ FX16_CONST(0.43999427130963326), FX16_CONST(0.8980005797407399),
+ FX16_CONST(0.44137126873171667), FX16_CONST(0.8973245807054183),
+ FX16_CONST(0.44274722756457), FX16_CONST(0.8966464701786802),
+ FX16_CONST(0.4441221445704292), FX16_CONST(0.8959662497561852),
+ FX16_CONST(0.44549601651398174), FX16_CONST(0.8952839210385576),
+ FX16_CONST(0.44686884016237416), FX16_CONST(0.8945994856313827),
+ FX16_CONST(0.4482406122852199), FX16_CONST(0.8939129451452033),
+ FX16_CONST(0.44961132965460654), FX16_CONST(0.8932243011955153),
+ FX16_CONST(0.45098098904510386), FX16_CONST(0.8925335554027646),
+ FX16_CONST(0.4523495872337709), FX16_CONST(0.8918407093923427),
+ FX16_CONST(0.45371712100016387), FX16_CONST(0.8911457647945832),
+ FX16_CONST(0.45508358712634384), FX16_CONST(0.8904487232447579),
+ FX16_CONST(0.4564489823968839), FX16_CONST(0.8897495863830728),
+ FX16_CONST(0.4578133035988772), FX16_CONST(0.8890483558546646),
+ FX16_CONST(0.4591765475219441), FX16_CONST(0.8883450333095964),
+ FX16_CONST(0.46053871095824), FX16_CONST(0.8876396204028539),
+ FX16_CONST(0.46189979070246273), FX16_CONST(0.8869321187943422),
+ FX16_CONST(0.46325978355186015), FX16_CONST(0.8862225301488806),
+ FX16_CONST(0.4646186863062378), FX16_CONST(0.8855108561362),
+ FX16_CONST(0.4659764957679662), FX16_CONST(0.8847970984309378),
+ FX16_CONST(0.4673332087419884), FX16_CONST(0.884081258712635),
+ FX16_CONST(0.4686888220358279), FX16_CONST(0.8833633386657316),
+ FX16_CONST(0.4700433324595956), FX16_CONST(0.8826433399795628),
+ FX16_CONST(0.47139673682599764), FX16_CONST(0.881921264348355),
+ FX16_CONST(0.4727490319503428), FX16_CONST(0.8811971134712221),
+ FX16_CONST(0.47410021465054997), FX16_CONST(0.8804708890521608),
+ FX16_CONST(0.47545028174715587), FX16_CONST(0.8797425928000474),
+ FX16_CONST(0.4767992300633221), FX16_CONST(0.8790122264286335),
+ FX16_CONST(0.478147056424843), FX16_CONST(0.8782797916565416),
+ FX16_CONST(0.47949375766015295), FX16_CONST(0.8775452902072614),
+ FX16_CONST(0.48083933060033396), FX16_CONST(0.8768087238091457),
+ FX16_CONST(0.4821837720791227), FX16_CONST(0.8760700941954066),
+ FX16_CONST(0.4835270789329187), FX16_CONST(0.8753294031041109),
+ FX16_CONST(0.48486924800079106), FX16_CONST(0.8745866522781761),
+ FX16_CONST(0.4862102761244864), FX16_CONST(0.8738418434653669),
+ FX16_CONST(0.487550160148436), FX16_CONST(0.8730949784182901),
+ FX16_CONST(0.48888889691976317), FX16_CONST(0.8723460588943915),
+ FX16_CONST(0.49022648328829116), FX16_CONST(0.871595086655951),
+ FX16_CONST(0.4915629161065499), FX16_CONST(0.870842063470079),
+ FX16_CONST(0.49289819222978404), FX16_CONST(0.8700869911087115),
+ FX16_CONST(0.4942323085159597), FX16_CONST(0.8693298713486068),
+ FX16_CONST(0.49556526182577254), FX16_CONST(0.8685707059713409),
+ FX16_CONST(0.49689704902265447), FX16_CONST(0.8678094967633033),
+ FX16_CONST(0.4982276669727818), FX16_CONST(0.8670462455156926),
+ FX16_CONST(0.49955711254508184), FX16_CONST(0.866280954024513),
+ FX16_CONST(0.5008853826112407), FX16_CONST(0.8655136240905691),
+ FX16_CONST(0.5022124740457108), FX16_CONST(0.8647442575194624),
+ FX16_CONST(0.5035383837257176), FX16_CONST(0.8639728561215867),
+ FX16_CONST(0.5048631085312676), FX16_CONST(0.8631994217121242),
+ FX16_CONST(0.5061866453451552), FX16_CONST(0.8624239561110405),
+ FX16_CONST(0.5075089910529709), FX16_CONST(0.8616464611430813),
+ FX16_CONST(0.508830142543107), FX16_CONST(0.8608669386377673),
+ FX16_CONST(0.5101500967067668), FX16_CONST(0.8600853904293901),
+ FX16_CONST(0.5114688504379703), FX16_CONST(0.8593018183570085),
+ FX16_CONST(0.512786400633563), FX16_CONST(0.8585162242644427),
+ FX16_CONST(0.5141027441932217), FX16_CONST(0.8577286100002721),
+ FX16_CONST(0.5154178780194629), FX16_CONST(0.8569389774178288),
+ FX16_CONST(0.5167317990176499), FX16_CONST(0.8561473283751945),
+ FX16_CONST(0.5180445040959993), FX16_CONST(0.855353664735196),
+ FX16_CONST(0.5193559901655896), FX16_CONST(0.8545579883654005),
+ FX16_CONST(0.5206662541403672), FX16_CONST(0.8537603011381114),
+ FX16_CONST(0.5219752929371544), FX16_CONST(0.8529606049303636),
+ FX16_CONST(0.5232831034756564), FX16_CONST(0.8521589016239198),
+ FX16_CONST(0.524589682678469), FX16_CONST(0.8513551931052652),
+ FX16_CONST(0.5258950274710846), FX16_CONST(0.8505494812656035),
+ FX16_CONST(0.5271991347819013), FX16_CONST(0.8497417680008525),
+ FX16_CONST(0.5285020015422285), FX16_CONST(0.8489320552116396),
+ FX16_CONST(0.5298036246862946), FX16_CONST(0.8481203448032972),
+ FX16_CONST(0.531104001151255), FX16_CONST(0.8473066386858583),
+ FX16_CONST(0.5324031278771979), FX16_CONST(0.8464909387740521),
+ FX16_CONST(0.533701001807153), FX16_CONST(0.8456732469872991),
+ FX16_CONST(0.5349976198870972), FX16_CONST(0.8448535652497071),
+ FX16_CONST(0.5362929790659632), FX16_CONST(0.8440318954900664),
+ FX16_CONST(0.5375870762956454), FX16_CONST(0.8432082396418454),
+ FX16_CONST(0.5388799085310084), FX16_CONST(0.8423825996431858),
+ FX16_CONST(0.5401714727298929), FX16_CONST(0.8415549774368984),
+ FX16_CONST(0.5414617658531234), FX16_CONST(0.8407253749704581),
+ FX16_CONST(0.5427507848645159), FX16_CONST(0.8398937941959995),
+ FX16_CONST(0.5440385267308838), FX16_CONST(0.8390602370703127),
+ FX16_CONST(0.5453249884220465), FX16_CONST(0.8382247055548381),
+ FX16_CONST(0.5466101669108349), FX16_CONST(0.8373872016156619),
+ FX16_CONST(0.5478940591731002), FX16_CONST(0.836547727223512),
+ FX16_CONST(0.5491766621877197), FX16_CONST(0.8357062843537526),
+ FX16_CONST(0.5504579729366048), FX16_CONST(0.83486287498638),
+ FX16_CONST(0.5517379884047073), FX16_CONST(0.8340175011060181),
+ FX16_CONST(0.5530167055800275), FX16_CONST(0.8331701647019132),
+ FX16_CONST(0.55429412145362), FX16_CONST(0.8323208677679297),
+ FX16_CONST(0.5555702330196022), FX16_CONST(0.8314696123025452),
+ FX16_CONST(0.5568450372751601), FX16_CONST(0.8306164003088463),
+ FX16_CONST(0.5581185312205561), FX16_CONST(0.829761233794523),
+ FX16_CONST(0.5593907118591361), FX16_CONST(0.8289041147718649),
+ FX16_CONST(0.560661576197336), FX16_CONST(0.8280450452577558),
+ FX16_CONST(0.5619311212446894), FX16_CONST(0.8271840272736691),
+ FX16_CONST(0.5631993440138341), FX16_CONST(0.8263210628456635),
+ FX16_CONST(0.5644662415205194), FX16_CONST(0.8254561540043776),
+ FX16_CONST(0.5657318107836131), FX16_CONST(0.8245893027850253),
+ FX16_CONST(0.5669960488251087), FX16_CONST(0.8237205112273914),
+ FX16_CONST(0.5682589526701315), FX16_CONST(0.8228497813758264),
+ FX16_CONST(0.5695205193469471), FX16_CONST(0.8219771152792416),
+ FX16_CONST(0.5707807458869673), FX16_CONST(0.8211025149911046),
+ FX16_CONST(0.572039629324757), FX16_CONST(0.8202259825694347),
+ FX16_CONST(0.5732971666980422), FX16_CONST(0.819347520076797),
+ FX16_CONST(0.5745533550477158), FX16_CONST(0.8184671295802987),
+ FX16_CONST(0.5758081914178453), FX16_CONST(0.8175848131515837),
+ FX16_CONST(0.5770616728556794), FX16_CONST(0.8167005728668278),
+ FX16_CONST(0.5783137964116556), FX16_CONST(0.8158144108067338),
+ FX16_CONST(0.5795645591394056), FX16_CONST(0.8149263290565266),
+ FX16_CONST(0.5808139580957645), FX16_CONST(0.8140363297059484),
+ FX16_CONST(0.5820619903407754), FX16_CONST(0.8131444148492536),
+ FX16_CONST(0.5833086529376983), FX16_CONST(0.812250586585204),
+ FX16_CONST(0.5845539429530153), FX16_CONST(0.8113548470170637),
+ FX16_CONST(0.5857978574564389), FX16_CONST(0.8104571982525948),
+ FX16_CONST(0.587040393520918), FX16_CONST(0.8095576424040513),
+ FX16_CONST(0.5882815482226452), FX16_CONST(0.808656181588175),
+ FX16_CONST(0.5895213186410639), FX16_CONST(0.8077528179261904),
+ FX16_CONST(0.5907597018588742), FX16_CONST(0.8068475535437993),
+ FX16_CONST(0.591996694962041), FX16_CONST(0.8059403905711763),
+ FX16_CONST(0.5932322950397998), FX16_CONST(0.8050313311429637),
+ FX16_CONST(0.5944664991846644), FX16_CONST(0.8041203773982657),
+ FX16_CONST(0.5956993044924334), FX16_CONST(0.8032075314806449),
+ FX16_CONST(0.5969307080621964), FX16_CONST(0.8022927955381157),
+ FX16_CONST(0.5981607069963424), FX16_CONST(0.8013761717231402),
+ FX16_CONST(0.5993892984005645), FX16_CONST(0.8004576621926228),
+ FX16_CONST(0.600616479383869), FX16_CONST(0.799537269107905),
+ FX16_CONST(0.60184224705858), FX16_CONST(0.7986149946347609),
+ FX16_CONST(0.6030665985403482), FX16_CONST(0.7976908409433912),
+ FX16_CONST(0.604289530948156), FX16_CONST(0.7967648102084188),
+ FX16_CONST(0.6055110414043255), FX16_CONST(0.7958369046088836),
+ FX16_CONST(0.6067311270345245), FX16_CONST(0.794907126328237),
+ FX16_CONST(0.6079497849677736), FX16_CONST(0.7939754775543372),
+ FX16_CONST(0.6091670123364532), FX16_CONST(0.7930419604794436),
+ FX16_CONST(0.6103828062763095), FX16_CONST(0.7921065773002124),
+ FX16_CONST(0.6115971639264619), FX16_CONST(0.7911693302176902),
+ FX16_CONST(0.6128100824294097), FX16_CONST(0.79023022143731),
+ FX16_CONST(0.6140215589310385), FX16_CONST(0.7892892531688857),
+ FX16_CONST(0.6152315905806268), FX16_CONST(0.7883464276266062),
+ FX16_CONST(0.6164401745308536), FX16_CONST(0.7874017470290314),
+ FX16_CONST(0.6176473079378039), FX16_CONST(0.7864552135990858),
+ FX16_CONST(0.6188529879609763), FX16_CONST(0.7855068295640539),
+ FX16_CONST(0.6200572117632891), FX16_CONST(0.7845565971555752),
+ FX16_CONST(0.6212599765110876), FX16_CONST(0.7836045186096382),
+ FX16_CONST(0.62246127937415), FX16_CONST(0.7826505961665757),
+ FX16_CONST(0.6236611175256945), FX16_CONST(0.7816948320710594),
+ FX16_CONST(0.6248594881423863), FX16_CONST(0.7807372285720945),
+ FX16_CONST(0.6260563884043435), FX16_CONST(0.7797777879230146),
+ FX16_CONST(0.6272518154951441), FX16_CONST(0.778816512381476),
+ FX16_CONST(0.6284457666018327), FX16_CONST(0.7778534042094531),
+ FX16_CONST(0.629638238914927), FX16_CONST(0.7768884656732324),
+ FX16_CONST(0.6308292296284245), FX16_CONST(0.7759216990434077),
+ FX16_CONST(0.6320187359398091), FX16_CONST(0.7749531065948739),
+ FX16_CONST(0.6332067550500572), FX16_CONST(0.7739826906068229),
+ FX16_CONST(0.6343932841636455), FX16_CONST(0.773010453362737),
+ FX16_CONST(0.6355783204885561), FX16_CONST(0.7720363971503845),
+ FX16_CONST(0.6367618612362842), FX16_CONST(0.7710605242618138),
+ FX16_CONST(0.637943903621844), FX16_CONST(0.7700828369933479),
+ FX16_CONST(0.6391244448637757), FX16_CONST(0.7691033376455797),
+ FX16_CONST(0.6403034821841517), FX16_CONST(0.7681220285233654),
+ FX16_CONST(0.641481012808583), FX16_CONST(0.7671389119358204),
+ FX16_CONST(0.6426570339662269), FX16_CONST(0.7661539901963129),
+ FX16_CONST(0.6438315428897914), FX16_CONST(0.765167265622459),
+ FX16_CONST(0.6450045368155439), FX16_CONST(0.7641787405361167),
+ FX16_CONST(0.6461760129833163), FX16_CONST(0.7631884172633814),
+ FX16_CONST(0.6473459686365121), FX16_CONST(0.762196298134579),
+ FX16_CONST(0.6485144010221124), FX16_CONST(0.7612023854842618),
+ FX16_CONST(0.6496813073906832), FX16_CONST(0.7602066816512024),
+ FX16_CONST(0.6508466849963809), FX16_CONST(0.759209188978388),
+ FX16_CONST(0.6520105310969595), FX16_CONST(0.7582099098130153),
+ FX16_CONST(0.6531728429537768), FX16_CONST(0.7572088465064846),
+ FX16_CONST(0.6543336178318004), FX16_CONST(0.7562060014143945),
+ FX16_CONST(0.6554928529996153), FX16_CONST(0.7552013768965365),
+ FX16_CONST(0.6566505457294289), FX16_CONST(0.7541949753168892),
+ FX16_CONST(0.6578066932970786), FX16_CONST(0.7531867990436125),
+ FX16_CONST(0.6589612929820373), FX16_CONST(0.7521768504490427),
+ FX16_CONST(0.6601143420674205), FX16_CONST(0.7511651319096864),
+ FX16_CONST(0.6612658378399923), FX16_CONST(0.7501516458062151),
+ FX16_CONST(0.6624157775901718), FX16_CONST(0.7491363945234594),
+ FX16_CONST(0.6635641586120398), FX16_CONST(0.7481193804504036),
+ FX16_CONST(0.6647109782033448), FX16_CONST(0.7471006059801801),
+ FX16_CONST(0.6658562336655097), FX16_CONST(0.7460800735100638),
+ FX16_CONST(0.6669999223036375), FX16_CONST(0.745057785441466),
+ FX16_CONST(0.6681420414265185), FX16_CONST(0.7440337441799293),
+ FX16_CONST(0.669282588346636), FX16_CONST(0.7430079521351217),
+ FX16_CONST(0.6704215603801731), FX16_CONST(0.7419804117208311),
+ FX16_CONST(0.6715589548470183), FX16_CONST(0.7409511253549592),
+ FX16_CONST(0.6726947690707729), FX16_CONST(0.7399200954595162),
+ FX16_CONST(0.673829000378756), FX16_CONST(0.7388873244606151),
+ FX16_CONST(0.6749616461020119), FX16_CONST(0.737852814788466),
+ FX16_CONST(0.6760927035753159), FX16_CONST(0.7368165688773698),
+ FX16_CONST(0.6772221701371803), FX16_CONST(0.7357785891657136),
+ FX16_CONST(0.6783500431298615), FX16_CONST(0.7347388780959635),
+ FX16_CONST(0.679476319899365), FX16_CONST(0.7336974381146603),
+ FX16_CONST(0.680600997795453), FX16_CONST(0.7326542716724128),
+ FX16_CONST(0.6817240741716497), FX16_CONST(0.7316093812238926),
+ FX16_CONST(0.6828455463852481), FX16_CONST(0.7305627692278276),
+ FX16_CONST(0.6839654117973154), FX16_CONST(0.729514438146997),
+ FX16_CONST(0.6850836677727004), FX16_CONST(0.7284643904482252),
+ FX16_CONST(0.6862003116800386), FX16_CONST(0.7274126286023758),
+ FX16_CONST(0.687315340891759), FX16_CONST(0.726359155084346),
+ FX16_CONST(0.6884287527840904), FX16_CONST(0.7253039723730608),
+ FX16_CONST(0.6895405447370668), FX16_CONST(0.724247082951467),
+ FX16_CONST(0.6906507141345346), FX16_CONST(0.7231884893065275),
+ FX16_CONST(0.6917592583641577), FX16_CONST(0.7221281939292153),
+ FX16_CONST(0.6928661748174246), FX16_CONST(0.7210661993145081),
+ FX16_CONST(0.6939714608896539), FX16_CONST(0.7200025079613817),
+ FX16_CONST(0.6950751139800009), FX16_CONST(0.7189371223728045),
+ FX16_CONST(0.696177131491463), FX16_CONST(0.7178700450557317),
+ FX16_CONST(0.6972775108308865), FX16_CONST(0.7168012785210995),
+ FX16_CONST(0.6983762494089728), FX16_CONST(0.7157308252838187),
+ FX16_CONST(0.6994733446402838), FX16_CONST(0.7146586878627691),
+ FX16_CONST(0.7005687939432483), FX16_CONST(0.7135848687807935),
+ FX16_CONST(0.7016625947401685), FX16_CONST(0.7125093705646924),
+ FX16_CONST(0.7027547444572253), FX16_CONST(0.7114321957452164),
+ FX16_CONST(0.7038452405244849), FX16_CONST(0.7103533468570624),
+ FX16_CONST(0.7049340803759049), FX16_CONST(0.7092728264388657),
+ FX16_CONST(0.7060212614493397), FX16_CONST(0.7081906370331954),
+ FX16_CONST(0.7071067811865476), FX16_CONST(0.7071067811865476),
+ FX16_CONST(0.7081906370331954), FX16_CONST(0.7060212614493397),
+ FX16_CONST(0.7092728264388657), FX16_CONST(0.704934080375905),
+ FX16_CONST(0.7103533468570624), FX16_CONST(0.7038452405244849),
+ FX16_CONST(0.7114321957452164), FX16_CONST(0.7027547444572253),
+ FX16_CONST(0.7125093705646923), FX16_CONST(0.7016625947401685),
+ FX16_CONST(0.7135848687807935), FX16_CONST(0.7005687939432484),
+ FX16_CONST(0.7146586878627691), FX16_CONST(0.6994733446402838),
+ FX16_CONST(0.7157308252838186), FX16_CONST(0.6983762494089729),
+ FX16_CONST(0.7168012785210994), FX16_CONST(0.6972775108308866),
+ FX16_CONST(0.7178700450557317), FX16_CONST(0.696177131491463),
+ FX16_CONST(0.7189371223728044), FX16_CONST(0.6950751139800009),
+ FX16_CONST(0.7200025079613817), FX16_CONST(0.693971460889654),
+ FX16_CONST(0.7210661993145081), FX16_CONST(0.6928661748174247),
+ FX16_CONST(0.7221281939292153), FX16_CONST(0.6917592583641577),
+ FX16_CONST(0.7231884893065273), FX16_CONST(0.6906507141345346),
+ FX16_CONST(0.7242470829514669), FX16_CONST(0.6895405447370669),
+ FX16_CONST(0.7253039723730608), FX16_CONST(0.6884287527840904),
+ FX16_CONST(0.726359155084346), FX16_CONST(0.687315340891759),
+ FX16_CONST(0.7274126286023758), FX16_CONST(0.6862003116800386),
+ FX16_CONST(0.7284643904482252), FX16_CONST(0.6850836677727004),
+ FX16_CONST(0.7295144381469969), FX16_CONST(0.6839654117973155),
+ FX16_CONST(0.7305627692278276), FX16_CONST(0.6828455463852481),
+ FX16_CONST(0.7316093812238926), FX16_CONST(0.6817240741716498),
+ FX16_CONST(0.7326542716724128), FX16_CONST(0.680600997795453),
+ FX16_CONST(0.7336974381146603), FX16_CONST(0.679476319899365),
+ FX16_CONST(0.7347388780959635), FX16_CONST(0.6783500431298615),
+ FX16_CONST(0.7357785891657135), FX16_CONST(0.6772221701371804),
+ FX16_CONST(0.7368165688773698), FX16_CONST(0.676092703575316),
+ FX16_CONST(0.737852814788466), FX16_CONST(0.674961646102012),
+ FX16_CONST(0.7388873244606151), FX16_CONST(0.6738290003787561),
+ FX16_CONST(0.7399200954595161), FX16_CONST(0.672694769070773),
+ FX16_CONST(0.7409511253549591), FX16_CONST(0.6715589548470183),
+ FX16_CONST(0.741980411720831), FX16_CONST(0.6704215603801731),
+ FX16_CONST(0.7430079521351217), FX16_CONST(0.669282588346636),
+ FX16_CONST(0.7440337441799293), FX16_CONST(0.6681420414265186),
+ FX16_CONST(0.745057785441466), FX16_CONST(0.6669999223036375),
+ FX16_CONST(0.7460800735100637), FX16_CONST(0.6658562336655097),
+ FX16_CONST(0.7471006059801801), FX16_CONST(0.6647109782033449),
+ FX16_CONST(0.7481193804504035), FX16_CONST(0.6635641586120399),
+ FX16_CONST(0.7491363945234593), FX16_CONST(0.6624157775901718),
+ FX16_CONST(0.750151645806215), FX16_CONST(0.6612658378399923),
+ FX16_CONST(0.7511651319096864), FX16_CONST(0.6601143420674205),
+ FX16_CONST(0.7521768504490427), FX16_CONST(0.6589612929820373),
+ FX16_CONST(0.7531867990436125), FX16_CONST(0.6578066932970787),
+ FX16_CONST(0.7541949753168892), FX16_CONST(0.656650545729429),
+ FX16_CONST(0.7552013768965365), FX16_CONST(0.6554928529996155),
+ FX16_CONST(0.7562060014143945), FX16_CONST(0.6543336178318006),
+ FX16_CONST(0.7572088465064846), FX16_CONST(0.6531728429537769),
+ FX16_CONST(0.7582099098130153), FX16_CONST(0.6520105310969595),
+ FX16_CONST(0.759209188978388), FX16_CONST(0.650846684996381),
+ FX16_CONST(0.7602066816512024), FX16_CONST(0.6496813073906832),
+ FX16_CONST(0.7612023854842618), FX16_CONST(0.6485144010221126),
+ FX16_CONST(0.7621962981345789), FX16_CONST(0.6473459686365121),
+ FX16_CONST(0.7631884172633813), FX16_CONST(0.6461760129833164),
+ FX16_CONST(0.7641787405361167), FX16_CONST(0.645004536815544),
+ FX16_CONST(0.765167265622459), FX16_CONST(0.6438315428897915),
+ FX16_CONST(0.7661539901963128), FX16_CONST(0.6426570339662269),
+ FX16_CONST(0.7671389119358204), FX16_CONST(0.6414810128085832),
+ FX16_CONST(0.7681220285233653), FX16_CONST(0.6403034821841517),
+ FX16_CONST(0.7691033376455796), FX16_CONST(0.6391244448637757),
+ FX16_CONST(0.7700828369933479), FX16_CONST(0.6379439036218442),
+ FX16_CONST(0.7710605242618138), FX16_CONST(0.6367618612362842),
+ FX16_CONST(0.7720363971503844), FX16_CONST(0.6355783204885562),
+ FX16_CONST(0.7730104533627369), FX16_CONST(0.6343932841636455),
+ FX16_CONST(0.7739826906068228), FX16_CONST(0.6332067550500572),
+ FX16_CONST(0.7749531065948738), FX16_CONST(0.6320187359398091),
+ FX16_CONST(0.7759216990434076), FX16_CONST(0.6308292296284246),
+ FX16_CONST(0.7768884656732324), FX16_CONST(0.6296382389149271),
+ FX16_CONST(0.777853404209453), FX16_CONST(0.6284457666018327),
+ FX16_CONST(0.7788165123814759), FX16_CONST(0.6272518154951442),
+ FX16_CONST(0.7797777879230144), FX16_CONST(0.6260563884043435),
+ FX16_CONST(0.7807372285720945), FX16_CONST(0.6248594881423865),
+ FX16_CONST(0.7816948320710594), FX16_CONST(0.6236611175256946),
+ FX16_CONST(0.7826505961665757), FX16_CONST(0.6224612793741501),
+ FX16_CONST(0.7836045186096382), FX16_CONST(0.6212599765110877),
+ FX16_CONST(0.7845565971555752), FX16_CONST(0.6200572117632892),
+ FX16_CONST(0.7855068295640539), FX16_CONST(0.6188529879609763),
+ FX16_CONST(0.7864552135990858), FX16_CONST(0.617647307937804),
+ FX16_CONST(0.7874017470290313), FX16_CONST(0.6164401745308536),
+ FX16_CONST(0.7883464276266062), FX16_CONST(0.6152315905806268),
+ FX16_CONST(0.7892892531688857), FX16_CONST(0.6140215589310385),
+ FX16_CONST(0.79023022143731), FX16_CONST(0.6128100824294097),
+ FX16_CONST(0.7911693302176901), FX16_CONST(0.611597163926462),
+ FX16_CONST(0.7921065773002123), FX16_CONST(0.6103828062763095),
+ FX16_CONST(0.7930419604794436), FX16_CONST(0.6091670123364532),
+ FX16_CONST(0.7939754775543372), FX16_CONST(0.6079497849677737),
+ FX16_CONST(0.794907126328237), FX16_CONST(0.6067311270345245),
+ FX16_CONST(0.7958369046088835), FX16_CONST(0.6055110414043255),
+ FX16_CONST(0.7967648102084187), FX16_CONST(0.6042895309481561),
+ FX16_CONST(0.797690840943391), FX16_CONST(0.6030665985403483),
+ FX16_CONST(0.7986149946347608), FX16_CONST(0.60184224705858),
+ FX16_CONST(0.799537269107905), FX16_CONST(0.600616479383869),
+ FX16_CONST(0.8004576621926227), FX16_CONST(0.5993892984005645),
+ FX16_CONST(0.8013761717231401), FX16_CONST(0.5981607069963424),
+ FX16_CONST(0.8022927955381157), FX16_CONST(0.5969307080621965),
+ FX16_CONST(0.8032075314806448), FX16_CONST(0.5956993044924335),
+ FX16_CONST(0.8041203773982657), FX16_CONST(0.5944664991846645),
+ FX16_CONST(0.8050313311429637), FX16_CONST(0.5932322950397998),
+ FX16_CONST(0.8059403905711763), FX16_CONST(0.591996694962041),
+ FX16_CONST(0.8068475535437992), FX16_CONST(0.5907597018588743),
+ FX16_CONST(0.8077528179261902), FX16_CONST(0.5895213186410639),
+ FX16_CONST(0.808656181588175), FX16_CONST(0.5882815482226453),
+ FX16_CONST(0.8095576424040513), FX16_CONST(0.5870403935209181),
+ FX16_CONST(0.8104571982525948), FX16_CONST(0.5857978574564389),
+ FX16_CONST(0.8113548470170637), FX16_CONST(0.5845539429530153),
+ FX16_CONST(0.8122505865852039), FX16_CONST(0.5833086529376983),
+ FX16_CONST(0.8131444148492536), FX16_CONST(0.5820619903407755),
+ FX16_CONST(0.8140363297059483), FX16_CONST(0.5808139580957645),
+ FX16_CONST(0.8149263290565266), FX16_CONST(0.5795645591394057),
+ FX16_CONST(0.8158144108067338), FX16_CONST(0.5783137964116556),
+ FX16_CONST(0.8167005728668278), FX16_CONST(0.5770616728556796),
+ FX16_CONST(0.8175848131515837), FX16_CONST(0.5758081914178453),
+ FX16_CONST(0.8184671295802987), FX16_CONST(0.5745533550477158),
+ FX16_CONST(0.8193475200767969), FX16_CONST(0.5732971666980423),
+ FX16_CONST(0.8202259825694347), FX16_CONST(0.572039629324757),
+ FX16_CONST(0.8211025149911046), FX16_CONST(0.5707807458869674),
+ FX16_CONST(0.8219771152792416), FX16_CONST(0.5695205193469473),
+ FX16_CONST(0.8228497813758263), FX16_CONST(0.5682589526701315),
+ FX16_CONST(0.8237205112273913), FX16_CONST(0.5669960488251087),
+ FX16_CONST(0.8245893027850253), FX16_CONST(0.5657318107836132),
+ FX16_CONST(0.8254561540043774), FX16_CONST(0.5644662415205195),
+ FX16_CONST(0.8263210628456635), FX16_CONST(0.5631993440138341),
+ FX16_CONST(0.8271840272736691), FX16_CONST(0.5619311212446895),
+ FX16_CONST(0.8280450452577558), FX16_CONST(0.560661576197336),
+ FX16_CONST(0.8289041147718649), FX16_CONST(0.5593907118591361),
+ FX16_CONST(0.829761233794523), FX16_CONST(0.5581185312205561),
+ FX16_CONST(0.8306164003088462), FX16_CONST(0.5568450372751601),
+ FX16_CONST(0.8314696123025452), FX16_CONST(0.5555702330196023),
+ FX16_CONST(0.8323208677679297), FX16_CONST(0.5542941214536201),
+ FX16_CONST(0.8331701647019132), FX16_CONST(0.5530167055800276),
+ FX16_CONST(0.8340175011060181), FX16_CONST(0.5517379884047074),
+ FX16_CONST(0.83486287498638), FX16_CONST(0.5504579729366048),
+ FX16_CONST(0.8357062843537526), FX16_CONST(0.5491766621877198),
+ FX16_CONST(0.8365477272235119), FX16_CONST(0.5478940591731002),
+ FX16_CONST(0.8373872016156619), FX16_CONST(0.5466101669108349),
+ FX16_CONST(0.838224705554838), FX16_CONST(0.5453249884220465),
+ FX16_CONST(0.8390602370703126), FX16_CONST(0.5440385267308839),
+ FX16_CONST(0.8398937941959994), FX16_CONST(0.542750784864516),
+ FX16_CONST(0.840725374970458), FX16_CONST(0.5414617658531236),
+ FX16_CONST(0.8415549774368983), FX16_CONST(0.540171472729893),
+ FX16_CONST(0.8423825996431858), FX16_CONST(0.5388799085310084),
+ FX16_CONST(0.8432082396418454), FX16_CONST(0.5375870762956455),
+ FX16_CONST(0.8440318954900664), FX16_CONST(0.5362929790659632),
+ FX16_CONST(0.844853565249707), FX16_CONST(0.5349976198870973),
+ FX16_CONST(0.8456732469872991), FX16_CONST(0.533701001807153),
+ FX16_CONST(0.8464909387740521), FX16_CONST(0.532403127877198),
+ FX16_CONST(0.8473066386858583), FX16_CONST(0.531104001151255),
+ FX16_CONST(0.8481203448032971), FX16_CONST(0.5298036246862948),
+ FX16_CONST(0.8489320552116396), FX16_CONST(0.5285020015422285),
+ FX16_CONST(0.8497417680008524), FX16_CONST(0.5271991347819014),
+ FX16_CONST(0.8505494812656034), FX16_CONST(0.5258950274710847),
+ FX16_CONST(0.8513551931052652), FX16_CONST(0.5245896826784688),
+ FX16_CONST(0.8521589016239198), FX16_CONST(0.5232831034756564),
+ FX16_CONST(0.8529606049303636), FX16_CONST(0.5219752929371544),
+ FX16_CONST(0.8537603011381113), FX16_CONST(0.5206662541403673),
+ FX16_CONST(0.8545579883654005), FX16_CONST(0.5193559901655895),
+ FX16_CONST(0.855353664735196), FX16_CONST(0.5180445040959993),
+ FX16_CONST(0.8561473283751945), FX16_CONST(0.51673179901765),
+ FX16_CONST(0.8569389774178287), FX16_CONST(0.5154178780194631),
+ FX16_CONST(0.8577286100002721), FX16_CONST(0.5141027441932217),
+ FX16_CONST(0.8585162242644427), FX16_CONST(0.5127864006335631),
+ FX16_CONST(0.8593018183570084), FX16_CONST(0.5114688504379705),
+ FX16_CONST(0.8600853904293903), FX16_CONST(0.5101500967067667),
+ FX16_CONST(0.8608669386377673), FX16_CONST(0.508830142543107),
+ FX16_CONST(0.8616464611430813), FX16_CONST(0.5075089910529709),
+ FX16_CONST(0.8624239561110405), FX16_CONST(0.5061866453451553),
+ FX16_CONST(0.8631994217121242), FX16_CONST(0.5048631085312675),
+ FX16_CONST(0.8639728561215867), FX16_CONST(0.5035383837257176),
+ FX16_CONST(0.8647442575194624), FX16_CONST(0.5022124740457109),
+ FX16_CONST(0.865513624090569), FX16_CONST(0.5008853826112409),
+ FX16_CONST(0.866280954024513), FX16_CONST(0.49955711254508184),
+ FX16_CONST(0.8670462455156926), FX16_CONST(0.49822766697278187),
+ FX16_CONST(0.8678094967633032), FX16_CONST(0.49689704902265464),
+ FX16_CONST(0.8685707059713409), FX16_CONST(0.4955652618257725),
+ FX16_CONST(0.8693298713486067), FX16_CONST(0.49423230851595973),
+ FX16_CONST(0.8700869911087113), FX16_CONST(0.4928981922297841),
+ FX16_CONST(0.8708420634700789), FX16_CONST(0.49156291610655006),
+ FX16_CONST(0.8715950866559511), FX16_CONST(0.4902264832882911),
+ FX16_CONST(0.8723460588943914), FX16_CONST(0.4888888969197632),
+ FX16_CONST(0.8730949784182901), FX16_CONST(0.48755016014843605),
+ FX16_CONST(0.8738418434653668), FX16_CONST(0.48621027612448653),
+ FX16_CONST(0.8745866522781761), FX16_CONST(0.4848692480007911),
+ FX16_CONST(0.8753294031041108), FX16_CONST(0.48352707893291874),
+ FX16_CONST(0.8760700941954066), FX16_CONST(0.48218377207912283),
+ FX16_CONST(0.8768087238091458), FX16_CONST(0.4808393306003339),
+ FX16_CONST(0.8775452902072612), FX16_CONST(0.479493757660153),
+ FX16_CONST(0.8782797916565415), FX16_CONST(0.4781470564248431),
+ FX16_CONST(0.8790122264286334), FX16_CONST(0.47679923006332225),
+ FX16_CONST(0.8797425928000474), FX16_CONST(0.47545028174715587),
+ FX16_CONST(0.8804708890521608), FX16_CONST(0.47410021465055),
+ FX16_CONST(0.881197113471222), FX16_CONST(0.4727490319503429),
+ FX16_CONST(0.8819212643483549), FX16_CONST(0.4713967368259978),
+ FX16_CONST(0.8826433399795628), FX16_CONST(0.4700433324595956),
+ FX16_CONST(0.8833633386657316), FX16_CONST(0.46868882203582796),
+ FX16_CONST(0.884081258712635), FX16_CONST(0.4673332087419885),
+ FX16_CONST(0.8847970984309378), FX16_CONST(0.4659764957679661),
+ FX16_CONST(0.8855108561362), FX16_CONST(0.4646186863062378),
+ FX16_CONST(0.8862225301488806), FX16_CONST(0.46325978355186026),
+ FX16_CONST(0.8869321187943421), FX16_CONST(0.46189979070246284),
+ FX16_CONST(0.8876396204028539), FX16_CONST(0.46053871095824),
+ FX16_CONST(0.8883450333095964), FX16_CONST(0.45917654752194415),
+ FX16_CONST(0.8890483558546646), FX16_CONST(0.4578133035988773),
+ FX16_CONST(0.8897495863830729), FX16_CONST(0.45644898239688386),
+ FX16_CONST(0.8904487232447579), FX16_CONST(0.45508358712634384),
+ FX16_CONST(0.8911457647945832), FX16_CONST(0.4537171210001639),
+ FX16_CONST(0.8918407093923427), FX16_CONST(0.452349587233771),
+ FX16_CONST(0.8925335554027647), FX16_CONST(0.4509809890451038),
+ FX16_CONST(0.8932243011955153), FX16_CONST(0.4496113296546066),
+ FX16_CONST(0.8939129451452033), FX16_CONST(0.44824061228522),
+ FX16_CONST(0.8945994856313826), FX16_CONST(0.4468688401623743),
+ FX16_CONST(0.8952839210385576), FX16_CONST(0.44549601651398174),
+ FX16_CONST(0.8959662497561851), FX16_CONST(0.44412214457042926),
+ FX16_CONST(0.8966464701786802), FX16_CONST(0.44274722756457013),
+ FX16_CONST(0.8973245807054183), FX16_CONST(0.4413712687317166),
+ FX16_CONST(0.8980005797407399), FX16_CONST(0.43999427130963326),
+ FX16_CONST(0.8986744656939538), FX16_CONST(0.4386162385385277),
+ FX16_CONST(0.8993462369793415), FX16_CONST(0.4372371736610442),
+ FX16_CONST(0.9000158920161603), FX16_CONST(0.4358570799222555),
+ FX16_CONST(0.9006834292286469), FX16_CONST(0.4344759605696557),
+ FX16_CONST(0.901348847046022), FX16_CONST(0.433093818853152),
+ FX16_CONST(0.9020121439024931), FX16_CONST(0.43171065802505737),
+ FX16_CONST(0.9026733182372588), FX16_CONST(0.4303264813400826),
+ FX16_CONST(0.9033323684945118), FX16_CONST(0.42894129205532955),
+ FX16_CONST(0.9039892931234433), FX16_CONST(0.4275550934302822),
+ FX16_CONST(0.9046440905782462), FX16_CONST(0.4261678887267996),
+ FX16_CONST(0.9052967593181188), FX16_CONST(0.4247796812091088),
+ FX16_CONST(0.9059472978072685), FX16_CONST(0.4233904741437961),
+ FX16_CONST(0.9065957045149153), FX16_CONST(0.4220002707997998),
+ FX16_CONST(0.9072419779152959), FX16_CONST(0.4206090744484025),
+ FX16_CONST(0.9078861164876663), FX16_CONST(0.41921688836322396),
+ FX16_CONST(0.9085281187163061), FX16_CONST(0.4178237158202124),
+ FX16_CONST(0.9091679830905223), FX16_CONST(0.4164295600976373),
+ FX16_CONST(0.9098057081046522), FX16_CONST(0.41503442447608163),
+ FX16_CONST(0.9104412922580671), FX16_CONST(0.41363831223843456),
+ FX16_CONST(0.9110747340551762), FX16_CONST(0.412241226669883),
+ FX16_CONST(0.9117060320054299), FX16_CONST(0.4108431710579039),
+ FX16_CONST(0.9123351846233227), FX16_CONST(0.40944414869225765),
+ FX16_CONST(0.9129621904283981), FX16_CONST(0.40804416286497874),
+ FX16_CONST(0.9135870479452508), FX16_CONST(0.40664321687036914),
+ FX16_CONST(0.9142097557035307), FX16_CONST(0.40524131400498986),
+ FX16_CONST(0.9148303122379461), FX16_CONST(0.40383845756765413),
+ FX16_CONST(0.9154487160882678), FX16_CONST(0.40243465085941854),
+ FX16_CONST(0.9160649657993316), FX16_CONST(0.4010298971835758),
+ FX16_CONST(0.9166790599210427), FX16_CONST(0.3996241998456468),
+ FX16_CONST(0.9172909970083779), FX16_CONST(0.3982175621533736),
+ FX16_CONST(0.9179007756213904), FX16_CONST(0.3968099874167104),
+ FX16_CONST(0.9185083943252123), FX16_CONST(0.3954014789478163),
+ FX16_CONST(0.9191138516900578), FX16_CONST(0.3939920400610481),
+ FX16_CONST(0.9197171462912274), FX16_CONST(0.3925816740729515),
+ FX16_CONST(0.9203182767091105), FX16_CONST(0.391170384302254),
+ FX16_CONST(0.9209172415291894), FX16_CONST(0.3897581740698564),
+ FX16_CONST(0.9215140393420419), FX16_CONST(0.3883450466988263),
+ FX16_CONST(0.9221086687433451), FX16_CONST(0.3869310055143887),
+ FX16_CONST(0.9227011283338785), FX16_CONST(0.385516053843919),
+ FX16_CONST(0.9232914167195276), FX16_CONST(0.38410019501693504),
+ FX16_CONST(0.9238795325112867), FX16_CONST(0.38268343236508984),
+ FX16_CONST(0.9244654743252626), FX16_CONST(0.3812657692221625),
+ FX16_CONST(0.9250492407826776), FX16_CONST(0.3798472089240511),
+ FX16_CONST(0.9256308305098727), FX16_CONST(0.3784277548087656),
+ FX16_CONST(0.9262102421383113), FX16_CONST(0.3770074102164183),
+ FX16_CONST(0.9267874743045817), FX16_CONST(0.3755861784892173),
+ FX16_CONST(0.9273625256504011), FX16_CONST(0.374164062971458),
+ FX16_CONST(0.9279353948226179), FX16_CONST(0.3727410670095158),
+ FX16_CONST(0.9285060804732156), FX16_CONST(0.3713171939518376),
+ FX16_CONST(0.9290745812593157), FX16_CONST(0.36989244714893427),
+ FX16_CONST(0.9296408958431812), FX16_CONST(0.3684668299533723),
+ FX16_CONST(0.9302050228922191), FX16_CONST(0.36704034571976724),
+ FX16_CONST(0.9307669610789837), FX16_CONST(0.36561299780477396),
+ FX16_CONST(0.9313267090811804), FX16_CONST(0.36418478956707984),
+ FX16_CONST(0.9318842655816681), FX16_CONST(0.3627557243673972),
+ FX16_CONST(0.9324396292684624), FX16_CONST(0.36132580556845434),
+ FX16_CONST(0.9329927988347388), FX16_CONST(0.3598950365349883),
+ FX16_CONST(0.9335437729788362), FX16_CONST(0.35846342063373654),
+ FX16_CONST(0.9340925504042589), FX16_CONST(0.35703096123343003),
+ FX16_CONST(0.9346391298196808), FX16_CONST(0.35559766170478396),
+ FX16_CONST(0.9351835099389475), FX16_CONST(0.3541635254204905),
+ FX16_CONST(0.9357256894810804), FX16_CONST(0.3527285557552107),
+ FX16_CONST(0.9362656671702783), FX16_CONST(0.35129275608556715),
+ FX16_CONST(0.9368034417359216), FX16_CONST(0.34985612979013503),
+ FX16_CONST(0.937339011912575), FX16_CONST(0.3484186802494345),
+ FX16_CONST(0.9378723764399899), FX16_CONST(0.3469804108459237),
+ FX16_CONST(0.9384035340631081), FX16_CONST(0.34554132496398915),
+ FX16_CONST(0.9389324835320645), FX16_CONST(0.344101425989939),
+ FX16_CONST(0.9394592236021899), FX16_CONST(0.3426607173119944),
+ FX16_CONST(0.9399837530340139), FX16_CONST(0.3412192023202824),
+ FX16_CONST(0.9405060705932683), FX16_CONST(0.33977688440682696),
+ FX16_CONST(0.9410261750508893), FX16_CONST(0.3383337669655413),
+ FX16_CONST(0.9415440651830208), FX16_CONST(0.33688985339222005),
+ FX16_CONST(0.9420597397710173), FX16_CONST(0.33544514708453166),
+ FX16_CONST(0.9425731976014469), FX16_CONST(0.3339996514420095),
+ FX16_CONST(0.9430844374660935), FX16_CONST(0.3325533698660442),
+ FX16_CONST(0.9435934581619604), FX16_CONST(0.33110630575987643),
+ FX16_CONST(0.9441002584912727), FX16_CONST(0.32965846252858755),
+ FX16_CONST(0.9446048372614803), FX16_CONST(0.32820984357909266),
+ FX16_CONST(0.9451071932852606), FX16_CONST(0.3267604523201318),
+ FX16_CONST(0.9456073253805213), FX16_CONST(0.325310292162263),
+ FX16_CONST(0.9461052323704033), FX16_CONST(0.32385936651785296),
+ FX16_CONST(0.9466009130832835), FX16_CONST(0.32240767880107),
+ FX16_CONST(0.9470943663527772), FX16_CONST(0.3209552324278752),
+ FX16_CONST(0.9475855910177411), FX16_CONST(0.31950203081601575),
+ FX16_CONST(0.9480745859222762), FX16_CONST(0.31804807738501506),
+ FX16_CONST(0.9485613499157303), FX16_CONST(0.31659337555616585),
+ FX16_CONST(0.9490458818527006), FX16_CONST(0.31513792875252244),
+ FX16_CONST(0.9495281805930367), FX16_CONST(0.3136817403988916),
+ FX16_CONST(0.950008245001843), FX16_CONST(0.31222481392182505),
+ FX16_CONST(0.9504860739494817), FX16_CONST(0.3107671527496115),
+ FX16_CONST(0.9509616663115751), FX16_CONST(0.3093087603122688),
+ FX16_CONST(0.9514350209690083), FX16_CONST(0.307849640041535),
+ FX16_CONST(0.9519061368079322), FX16_CONST(0.3063897953708611),
+ FX16_CONST(0.9523750127197659), FX16_CONST(0.30492922973540243),
+ FX16_CONST(0.9528416476011987), FX16_CONST(0.30346794657201137),
+ FX16_CONST(0.9533060403541938), FX16_CONST(0.3020059493192282),
+ FX16_CONST(0.9537681898859903), FX16_CONST(0.3005432414172734),
+ FX16_CONST(0.9542280951091057), FX16_CONST(0.2990798263080405),
+ FX16_CONST(0.9546857549413383), FX16_CONST(0.2976157074350863),
+ FX16_CONST(0.9551411683057707), FX16_CONST(0.29615088824362396),
+ FX16_CONST(0.9555943341307711), FX16_CONST(0.2946853721805143),
+ FX16_CONST(0.9560452513499964), FX16_CONST(0.2932191626942587),
+ FX16_CONST(0.956493918902395), FX16_CONST(0.2917522632349894),
+ FX16_CONST(0.9569403357322089), FX16_CONST(0.29028467725446233),
+ FX16_CONST(0.9573845007889759), FX16_CONST(0.2888164082060495),
+ FX16_CONST(0.9578264130275329), FX16_CONST(0.28734745954472957),
+ FX16_CONST(0.9582660714080177), FX16_CONST(0.2858778347270807),
+ FX16_CONST(0.9587034748958716), FX16_CONST(0.2844075372112718),
+ FX16_CONST(0.9591386224618419), FX16_CONST(0.2829365704570554),
+ FX16_CONST(0.9595715130819845), FX16_CONST(0.28146493792575805),
+ FX16_CONST(0.9600021457376658), FX16_CONST(0.2799926430802734),
+ FX16_CONST(0.9604305194155658), FX16_CONST(0.27851968938505306),
+ FX16_CONST(0.9608566331076797), FX16_CONST(0.27704608030609995),
+ FX16_CONST(0.9612804858113206), FX16_CONST(0.27557181931095825),
+ FX16_CONST(0.9617020765291225), FX16_CONST(0.27409690986870633),
+ FX16_CONST(0.9621214042690416), FX16_CONST(0.272621355449949),
+ FX16_CONST(0.9625384680443592), FX16_CONST(0.27114515952680807),
+ FX16_CONST(0.9629532668736839), FX16_CONST(0.2696683255729152),
+ FX16_CONST(0.963365799780954), FX16_CONST(0.2681908570634032),
+ FX16_CONST(0.9637760657954398), FX16_CONST(0.2667127574748984),
+ FX16_CONST(0.9641840639517457), FX16_CONST(0.2652340302855119),
+ FX16_CONST(0.9645897932898126), FX16_CONST(0.2637546789748315),
+ FX16_CONST(0.9649932528549203), FX16_CONST(0.2622747070239136),
+ FX16_CONST(0.9653944416976894), FX16_CONST(0.26079411791527557),
+ FX16_CONST(0.9657933588740836), FX16_CONST(0.25931291513288635),
+ FX16_CONST(0.9661900034454126), FX16_CONST(0.25783110216215893),
+ FX16_CONST(0.9665843744783331), FX16_CONST(0.2563486824899429),
+ FX16_CONST(0.9669764710448521), FX16_CONST(0.2548656596045146),
+ FX16_CONST(0.9673662922223285), FX16_CONST(0.25338203699557027),
+ FX16_CONST(0.9677538370934755), FX16_CONST(0.2518978181542169),
+ FX16_CONST(0.9681391047463624), FX16_CONST(0.2504130065729653),
+ FX16_CONST(0.9685220942744173), FX16_CONST(0.24892760574572026),
+ FX16_CONST(0.9689028047764289), FX16_CONST(0.24744161916777344),
+ FX16_CONST(0.9692812353565485), FX16_CONST(0.2459550503357946),
+ FX16_CONST(0.9696573851242924), FX16_CONST(0.2444679027478242),
+ FX16_CONST(0.970031253194544), FX16_CONST(0.24298017990326398),
+ FX16_CONST(0.9704028386875555), FX16_CONST(0.2414918853028693),
+ FX16_CONST(0.9707721407289504), FX16_CONST(0.2400030224487415),
+ FX16_CONST(0.9711391584497251), FX16_CONST(0.2385135948443185),
+ FX16_CONST(0.9715038909862518), FX16_CONST(0.23702360599436734),
+ FX16_CONST(0.9718663374802794), FX16_CONST(0.23553305940497546),
+ FX16_CONST(0.9722264970789363), FX16_CONST(0.23404195858354346),
+ FX16_CONST(0.9725843689347322), FX16_CONST(0.23255030703877533),
+ FX16_CONST(0.9729399522055601), FX16_CONST(0.23105810828067128),
+ FX16_CONST(0.9732932460546982), FX16_CONST(0.22956536582051887),
+ FX16_CONST(0.9736442496508119), FX16_CONST(0.2280720831708858),
+ FX16_CONST(0.9739929621679558), FX16_CONST(0.2265782638456101),
+ FX16_CONST(0.9743393827855759), FX16_CONST(0.22508391135979278),
+ FX16_CONST(0.9746835106885107), FX16_CONST(0.22358902922979002),
+ FX16_CONST(0.9750253450669941), FX16_CONST(0.2220936209732036),
+ FX16_CONST(0.9753648851166569), FX16_CONST(0.22059769010887365),
+ FX16_CONST(0.9757021300385286), FX16_CONST(0.21910124015686977),
+ FX16_CONST(0.976037079039039), FX16_CONST(0.21760427463848367),
+ FX16_CONST(0.9763697313300211), FX16_CONST(0.2161067970762196),
+ FX16_CONST(0.9767000861287118), FX16_CONST(0.21460881099378692),
+ FX16_CONST(0.9770281426577544), FX16_CONST(0.21311031991609136),
+ FX16_CONST(0.9773539001452), FX16_CONST(0.2116113273692276),
+ FX16_CONST(0.9776773578245099), FX16_CONST(0.21011183688046972),
+ FX16_CONST(0.9779985149345571), FX16_CONST(0.20861185197826346),
+ FX16_CONST(0.9783173707196277), FX16_CONST(0.20711137619221856),
+ FX16_CONST(0.9786339244294231), FX16_CONST(0.20561041305309932),
+ FX16_CONST(0.9789481753190622), FX16_CONST(0.204108966092817),
+ FX16_CONST(0.979260122649082), FX16_CONST(0.2026070388444211),
+ FX16_CONST(0.9795697656854405), FX16_CONST(0.20110463484209196),
+ FX16_CONST(0.9798771036995176), FX16_CONST(0.19960175762113105),
+ FX16_CONST(0.9801821359681173), FX16_CONST(0.19809841071795373),
+ FX16_CONST(0.9804848617734694), FX16_CONST(0.19659459767008022),
+ FX16_CONST(0.9807852804032304), FX16_CONST(0.19509032201612833),
+ FX16_CONST(0.9810833911504866), FX16_CONST(0.19358558729580375),
+ FX16_CONST(0.9813791933137546), FX16_CONST(0.19208039704989238),
+ FX16_CONST(0.9816726861969831), FX16_CONST(0.1905747548202528),
+ FX16_CONST(0.9819638691095552), FX16_CONST(0.18906866414980628),
+ FX16_CONST(0.9822527413662894), FX16_CONST(0.18756212858252974),
+ FX16_CONST(0.9825393022874412), FX16_CONST(0.18605515166344663),
+ FX16_CONST(0.9828235511987052), FX16_CONST(0.18454773693861964),
+ FX16_CONST(0.9831054874312163), FX16_CONST(0.18303988795514106),
+ FX16_CONST(0.9833851103215512), FX16_CONST(0.18153160826112513),
+ FX16_CONST(0.9836624192117303), FX16_CONST(0.18002290140569951),
+ FX16_CONST(0.9839374134492189), FX16_CONST(0.1785137709389976),
+ FX16_CONST(0.984210092386929), FX16_CONST(0.17700422041214886),
+ FX16_CONST(0.9844804553832209), FX16_CONST(0.1754942533772714),
+ FX16_CONST(0.9847485018019042), FX16_CONST(0.17398387338746385),
+ FX16_CONST(0.9850142310122398), FX16_CONST(0.17247308399679603),
+ FX16_CONST(0.9852776423889412), FX16_CONST(0.17096188876030136),
+ FX16_CONST(0.9855387353121761), FX16_CONST(0.16945029123396793),
+ FX16_CONST(0.9857975091675674), FX16_CONST(0.16793829497473123),
+ FX16_CONST(0.9860539633461954), FX16_CONST(0.16642590354046422),
+ FX16_CONST(0.9863080972445987), FX16_CONST(0.1649131204899701),
+ FX16_CONST(0.9865599102647754), FX16_CONST(0.16339994938297323),
+ FX16_CONST(0.9868094018141854), FX16_CONST(0.16188639378011188),
+ FX16_CONST(0.987056571305751), FX16_CONST(0.1603724572429284),
+ FX16_CONST(0.9873014181578584), FX16_CONST(0.1588581433338614),
+ FX16_CONST(0.9875439417943592), FX16_CONST(0.15734345561623828),
+ FX16_CONST(0.9877841416445722), FX16_CONST(0.15582839765426532),
+ FX16_CONST(0.9880220171432835), FX16_CONST(0.15431297301302024),
+ FX16_CONST(0.9882575677307495), FX16_CONST(0.1527971852584434),
+ FX16_CONST(0.9884907928526966), FX16_CONST(0.15128103795733025),
+ FX16_CONST(0.9887216919603238), FX16_CONST(0.14976453467732162),
+ FX16_CONST(0.988950264510303), FX16_CONST(0.1482476789868962),
+ FX16_CONST(0.989176509964781), FX16_CONST(0.14673047445536175),
+ FX16_CONST(0.9894004277913804), FX16_CONST(0.14521292465284752),
+ FX16_CONST(0.9896220174632008), FX16_CONST(0.14369503315029458),
+ FX16_CONST(0.9898412784588205), FX16_CONST(0.142176803519448),
+ FX16_CONST(0.9900582102622971), FX16_CONST(0.14065823933284924),
+ FX16_CONST(0.9902728123631691), FX16_CONST(0.13913934416382628),
+ FX16_CONST(0.990485084256457), FX16_CONST(0.13762012158648618),
+ FX16_CONST(0.9906950254426646), FX16_CONST(0.1361005751757062),
+ FX16_CONST(0.99090263542778), FX16_CONST(0.13458070850712622),
+ FX16_CONST(0.9911079137232768), FX16_CONST(0.13306052515713918),
+ FX16_CONST(0.9913108598461154), FX16_CONST(0.13154002870288328),
+ FX16_CONST(0.9915114733187439), FX16_CONST(0.13001922272223335),
+ FX16_CONST(0.9917097536690995), FX16_CONST(0.12849811079379322),
+ FX16_CONST(0.9919057004306093), FX16_CONST(0.12697669649688598),
+ FX16_CONST(0.9920993131421918), FX16_CONST(0.1254549834115462),
+ FX16_CONST(0.9922905913482574), FX16_CONST(0.1239329751185122),
+ FX16_CONST(0.99247953459871), FX16_CONST(0.12241067519921628),
+ FX16_CONST(0.992666142448948), FX16_CONST(0.12088808723577722),
+ FX16_CONST(0.9928504144598651), FX16_CONST(0.11936521481099135),
+ FX16_CONST(0.9930323501978514), FX16_CONST(0.11784206150832502),
+ FX16_CONST(0.9932119492347945), FX16_CONST(0.11631863091190488),
+ FX16_CONST(0.9933892111480807), FX16_CONST(0.11479492660651025),
+ FX16_CONST(0.9935641355205953), FX16_CONST(0.11327095217756436),
+ FX16_CONST(0.9937367219407246), FX16_CONST(0.11174671121112666),
+ FX16_CONST(0.9939069700023561), FX16_CONST(0.11022220729388318),
+ FX16_CONST(0.9940748793048794), FX16_CONST(0.10869744401313867),
+ FX16_CONST(0.9942404494531879), FX16_CONST(0.10717242495680887),
+ FX16_CONST(0.9944036800576791), FX16_CONST(0.1056471537134107),
+ FX16_CONST(0.9945645707342554), FX16_CONST(0.10412163387205473),
+ FX16_CONST(0.9947231211043257), FX16_CONST(0.10259586902243628),
+ FX16_CONST(0.9948793307948056), FX16_CONST(0.10106986275482788),
+ FX16_CONST(0.9950331994381186), FX16_CONST(0.09954361866006944),
+ FX16_CONST(0.9951847266721968), FX16_CONST(0.09801714032956077),
+ FX16_CONST(0.9953339121404823), FX16_CONST(0.0964904313552526),
+ FX16_CONST(0.9954807554919269), FX16_CONST(0.09496349532963906),
+ FX16_CONST(0.9956252563809943), FX16_CONST(0.09343633584574791),
+ FX16_CONST(0.9957674144676598), FX16_CONST(0.0919089564971327),
+ FX16_CONST(0.9959072294174117), FX16_CONST(0.09038136087786501),
+ FX16_CONST(0.996044700901252), FX16_CONST(0.08885355258252468),
+ FX16_CONST(0.9961798285956969), FX16_CONST(0.08732553520619223),
+ FX16_CONST(0.996312612182778), FX16_CONST(0.08579731234443988),
+ FX16_CONST(0.9964430513500426), FX16_CONST(0.08426888759332413),
+ FX16_CONST(0.9965711457905548), FX16_CONST(0.0827402645493758),
+ FX16_CONST(0.9966968952028961), FX16_CONST(0.08121144680959239),
+ FX16_CONST(0.9968202992911657), FX16_CONST(0.07968243797143013),
+ FX16_CONST(0.9969413577649822), FX16_CONST(0.07815324163279432),
+ FX16_CONST(0.997060070339483), FX16_CONST(0.07662386139203162),
+ FX16_CONST(0.9971764367353262), FX16_CONST(0.07509430084792129),
+ FX16_CONST(0.9972904566786902), FX16_CONST(0.07356456359966745),
+ FX16_CONST(0.9974021299012753), FX16_CONST(0.07203465324688942),
+ FX16_CONST(0.9975114561403035), FX16_CONST(0.07050457338961401),
+ FX16_CONST(0.9976184351385196), FX16_CONST(0.06897432762826673),
+ FX16_CONST(0.9977230666441916), FX16_CONST(0.0674439195636641),
+ FX16_CONST(0.9978253504111116), FX16_CONST(0.06591335279700393),
+ FX16_CONST(0.997925286198596), FX16_CONST(0.06438263092985741),
+ FX16_CONST(0.9980228737714862), FX16_CONST(0.06285175756416142),
+ FX16_CONST(0.9981181129001492), FX16_CONST(0.06132073630220865),
+ FX16_CONST(0.9982110033604782), FX16_CONST(0.05978957074664001),
+ FX16_CONST(0.9983015449338929), FX16_CONST(0.05825826450043573),
+ FX16_CONST(0.9983897374073402), FX16_CONST(0.05672682116690778),
+ FX16_CONST(0.9984755805732948), FX16_CONST(0.05519524434969003),
+ FX16_CONST(0.9985590742297593), FX16_CONST(0.05366353765273068),
+ FX16_CONST(0.9986402181802653), FX16_CONST(0.05213170468028332),
+ FX16_CONST(0.9987190122338729), FX16_CONST(0.05059974903689934),
+ FX16_CONST(0.9987954562051724), FX16_CONST(0.049067674327418126),
+ FX16_CONST(0.9988695499142836), FX16_CONST(0.04753548415695926),
+ FX16_CONST(0.9989412931868569), FX16_CONST(0.046003182130914644),
+ FX16_CONST(0.9990106858540734), FX16_CONST(0.044470771854938744),
+ FX16_CONST(0.9990777277526454), FX16_CONST(0.04293825693494096),
+ FX16_CONST(0.9991424187248169), FX16_CONST(0.04140564097707671),
+ FX16_CONST(0.9992047586183639), FX16_CONST(0.039872927587739845),
+ FX16_CONST(0.9992647472865944), FX16_CONST(0.03834012037355279),
+ FX16_CONST(0.9993223845883495), FX16_CONST(0.03680722294135899),
+ FX16_CONST(0.9993776703880028), FX16_CONST(0.03527423889821395),
+ FX16_CONST(0.9994306045554617), FX16_CONST(0.03374117185137764),
+ FX16_CONST(0.999481186966167), FX16_CONST(0.032208025408304704),
+ FX16_CONST(0.9995294175010931), FX16_CONST(0.03067480317663658),
+ FX16_CONST(0.9995752960467492), FX16_CONST(0.02914150876419374),
+ FX16_CONST(0.9996188224951786), FX16_CONST(0.02760814577896582),
+ FX16_CONST(0.9996599967439592), FX16_CONST(0.02607471782910404),
+ FX16_CONST(0.9996988186962042), FX16_CONST(0.024541228522912264),
+ FX16_CONST(0.9997352882605617), FX16_CONST(0.02300768146883941),
+ FX16_CONST(0.9997694053512153), FX16_CONST(0.021474080275469605),
+ FX16_CONST(0.9998011698878843), FX16_CONST(0.019940428551514598),
+ FX16_CONST(0.9998305817958234), FX16_CONST(0.01840672990580482),
+ FX16_CONST(0.9998576410058239), FX16_CONST(0.016872987947281773),
+ FX16_CONST(0.9998823474542126), FX16_CONST(0.01533920628498822),
+ FX16_CONST(0.9999047010828529), FX16_CONST(0.013805388528060349),
+ FX16_CONST(0.9999247018391445), FX16_CONST(0.012271538285719944),
+ FX16_CONST(0.9999423496760239), FX16_CONST(0.010737659167264572),
+ FX16_CONST(0.9999576445519639), FX16_CONST(0.00920375478205996),
+ FX16_CONST(0.9999705864309741), FX16_CONST(0.007669828739531077),
+ FX16_CONST(0.9999811752826011), FX16_CONST(0.006135884649154515),
+ FX16_CONST(0.9999894110819284), FX16_CONST(0.004601926120448672),
+ FX16_CONST(0.9999952938095762), FX16_CONST(0.003067956762966138),
+ FX16_CONST(0.9999988234517019), FX16_CONST(0.0015339801862847662),
+ FX16_CONST(1.0), FX16_CONST(6.123233995736766e-17),
+ FX16_CONST(0.9999988234517019), FX16_CONST(-0.0015339801862846436),
+ FX16_CONST(0.9999952938095762), FX16_CONST(-0.0030679567629660156),
+ FX16_CONST(0.9999894110819284), FX16_CONST(-0.00460192612044855),
+ FX16_CONST(0.9999811752826011), FX16_CONST(-0.006135884649154393),
+ FX16_CONST(0.9999705864309741), FX16_CONST(-0.007669828739530955),
+ FX16_CONST(0.9999576445519639), FX16_CONST(-0.009203754782059837),
+ FX16_CONST(0.9999423496760239), FX16_CONST(-0.010737659167264449),
+ FX16_CONST(0.9999247018391445), FX16_CONST(-0.012271538285719823),
+ FX16_CONST(0.9999047010828529), FX16_CONST(-0.013805388528060226),
+ FX16_CONST(0.9998823474542126), FX16_CONST(-0.015339206284988098),
+ FX16_CONST(0.9998576410058239), FX16_CONST(-0.01687298794728165),
+ FX16_CONST(0.9998305817958234), FX16_CONST(-0.018406729905804695),
+ FX16_CONST(0.9998011698878843), FX16_CONST(-0.019940428551514476),
+ FX16_CONST(0.9997694053512153), FX16_CONST(-0.021474080275469484),
+ FX16_CONST(0.9997352882605617), FX16_CONST(-0.02300768146883929),
+ FX16_CONST(0.9996988186962042), FX16_CONST(-0.024541228522912142),
+ FX16_CONST(0.9996599967439592), FX16_CONST(-0.026074717829103915),
+ FX16_CONST(0.9996188224951786), FX16_CONST(-0.027608145778965698),
+ FX16_CONST(0.9995752960467492), FX16_CONST(-0.029141508764193618),
+ FX16_CONST(0.9995294175010931), FX16_CONST(-0.03067480317663646),
+ FX16_CONST(0.999481186966167), FX16_CONST(-0.03220802540830458),
+ FX16_CONST(0.9994306045554617), FX16_CONST(-0.03374117185137752),
+ FX16_CONST(0.9993776703880028), FX16_CONST(-0.03527423889821382),
+ FX16_CONST(0.9993223845883495), FX16_CONST(-0.036807222941358866),
+ FX16_CONST(0.9992647472865944), FX16_CONST(-0.038340120373552666),
+ FX16_CONST(0.9992047586183639), FX16_CONST(-0.03987292758773973),
+ FX16_CONST(0.9991424187248169), FX16_CONST(-0.041405640977076594),
+ FX16_CONST(0.9990777277526454), FX16_CONST(-0.042938256934940834),
+ FX16_CONST(0.9990106858540734), FX16_CONST(-0.04447077185493862),
+ FX16_CONST(0.9989412931868569), FX16_CONST(-0.04600318213091452),
+ FX16_CONST(0.9988695499142836), FX16_CONST(-0.047535484156959136),
+ FX16_CONST(0.9987954562051724), FX16_CONST(-0.04906767432741801),
+ FX16_CONST(0.9987190122338729), FX16_CONST(-0.05059974903689921),
+ FX16_CONST(0.9986402181802653), FX16_CONST(-0.05213170468028319),
+ FX16_CONST(0.9985590742297593), FX16_CONST(-0.053663537652730554),
+ FX16_CONST(0.9984755805732948), FX16_CONST(-0.05519524434968991),
+ FX16_CONST(0.9983897374073402), FX16_CONST(-0.05672682116690766),
+ FX16_CONST(0.9983015449338929), FX16_CONST(-0.05825826450043561),
+ FX16_CONST(0.9982110033604782), FX16_CONST(-0.05978957074663988),
+ FX16_CONST(0.9981181129001492), FX16_CONST(-0.06132073630220853),
+ FX16_CONST(0.9980228737714862), FX16_CONST(-0.06285175756416131),
+ FX16_CONST(0.997925286198596), FX16_CONST(-0.06438263092985728),
+ FX16_CONST(0.9978253504111116), FX16_CONST(-0.0659133527970038),
+ FX16_CONST(0.9977230666441916), FX16_CONST(-0.06744391956366398),
+ FX16_CONST(0.9976184351385196), FX16_CONST(-0.06897432762826661),
+ FX16_CONST(0.9975114561403035), FX16_CONST(-0.0705045733896139),
+ FX16_CONST(0.9974021299012753), FX16_CONST(-0.07203465324688929),
+ FX16_CONST(0.9972904566786902), FX16_CONST(-0.07356456359966733),
+ FX16_CONST(0.9971764367353262), FX16_CONST(-0.07509430084792117),
+ FX16_CONST(0.997060070339483), FX16_CONST(-0.0766238613920315),
+ FX16_CONST(0.9969413577649822), FX16_CONST(-0.07815324163279419),
+ FX16_CONST(0.9968202992911658), FX16_CONST(-0.07968243797143001),
+ FX16_CONST(0.9966968952028961), FX16_CONST(-0.08121144680959226),
+ FX16_CONST(0.9965711457905548), FX16_CONST(-0.08274026454937568),
+ FX16_CONST(0.9964430513500426), FX16_CONST(-0.084268887593324),
+ FX16_CONST(0.996312612182778), FX16_CONST(-0.08579731234443976),
+ FX16_CONST(0.9961798285956969), FX16_CONST(-0.0873255352061921),
+ FX16_CONST(0.996044700901252), FX16_CONST(-0.08885355258252456),
+ FX16_CONST(0.9959072294174117), FX16_CONST(-0.09038136087786489),
+ FX16_CONST(0.9957674144676598), FX16_CONST(-0.09190895649713257),
+ FX16_CONST(0.9956252563809943), FX16_CONST(-0.09343633584574779),
+ FX16_CONST(0.9954807554919269), FX16_CONST(-0.09496349532963895),
+ FX16_CONST(0.9953339121404823), FX16_CONST(-0.09649043135525248),
+ FX16_CONST(0.9951847266721969), FX16_CONST(-0.09801714032956065),
+ FX16_CONST(0.9950331994381186), FX16_CONST(-0.09954361866006932),
+ FX16_CONST(0.9948793307948056), FX16_CONST(-0.10106986275482775),
+ FX16_CONST(0.9947231211043257), FX16_CONST(-0.10259586902243616),
+ FX16_CONST(0.9945645707342554), FX16_CONST(-0.1041216338720546),
+ FX16_CONST(0.9944036800576791), FX16_CONST(-0.10564715371341057),
+ FX16_CONST(0.9942404494531879), FX16_CONST(-0.10717242495680876),
+ FX16_CONST(0.9940748793048795), FX16_CONST(-0.10869744401313856),
+ FX16_CONST(0.9939069700023561), FX16_CONST(-0.11022220729388306),
+ FX16_CONST(0.9937367219407246), FX16_CONST(-0.11174671121112655),
+ FX16_CONST(0.9935641355205953), FX16_CONST(-0.11327095217756424),
+ FX16_CONST(0.9933892111480807), FX16_CONST(-0.11479492660651013),
+ FX16_CONST(0.9932119492347945), FX16_CONST(-0.11631863091190475),
+ FX16_CONST(0.9930323501978514), FX16_CONST(-0.1178420615083249),
+ FX16_CONST(0.9928504144598651), FX16_CONST(-0.11936521481099123),
+ FX16_CONST(0.992666142448948), FX16_CONST(-0.1208880872357771),
+ FX16_CONST(0.99247953459871), FX16_CONST(-0.12241067519921615),
+ FX16_CONST(0.9922905913482574), FX16_CONST(-0.12393297511851208),
+ FX16_CONST(0.9920993131421918), FX16_CONST(-0.12545498341154607),
+ FX16_CONST(0.9919057004306093), FX16_CONST(-0.12697669649688587),
+ FX16_CONST(0.9917097536690995), FX16_CONST(-0.1284981107937931),
+ FX16_CONST(0.991511473318744), FX16_CONST(-0.13001922272223324),
+ FX16_CONST(0.9913108598461154), FX16_CONST(-0.13154002870288314),
+ FX16_CONST(0.9911079137232769), FX16_CONST(-0.13306052515713904),
+ FX16_CONST(0.99090263542778), FX16_CONST(-0.1345807085071261),
+ FX16_CONST(0.9906950254426646), FX16_CONST(-0.13610057517570606),
+ FX16_CONST(0.990485084256457), FX16_CONST(-0.13762012158648607),
+ FX16_CONST(0.9902728123631691), FX16_CONST(-0.13913934416382617),
+ FX16_CONST(0.9900582102622971), FX16_CONST(-0.14065823933284913),
+ FX16_CONST(0.9898412784588205), FX16_CONST(-0.1421768035194479),
+ FX16_CONST(0.9896220174632009), FX16_CONST(-0.14369503315029444),
+ FX16_CONST(0.9894004277913804), FX16_CONST(-0.1452129246528474),
+ FX16_CONST(0.989176509964781), FX16_CONST(-0.14673047445536164),
+ FX16_CONST(0.988950264510303), FX16_CONST(-0.1482476789868961),
+ FX16_CONST(0.9887216919603238), FX16_CONST(-0.1497645346773215),
+ FX16_CONST(0.9884907928526967), FX16_CONST(-0.15128103795733014),
+ FX16_CONST(0.9882575677307495), FX16_CONST(-0.1527971852584433),
+ FX16_CONST(0.9880220171432835), FX16_CONST(-0.15431297301302013),
+ FX16_CONST(0.9877841416445722), FX16_CONST(-0.1558283976542652),
+ FX16_CONST(0.9875439417943593), FX16_CONST(-0.15734345561623816),
+ FX16_CONST(0.9873014181578584), FX16_CONST(-0.15885814333386128),
+ FX16_CONST(0.987056571305751), FX16_CONST(-0.16037245724292826),
+ FX16_CONST(0.9868094018141855), FX16_CONST(-0.16188639378011177),
+ FX16_CONST(0.9865599102647755), FX16_CONST(-0.16339994938297311),
+ FX16_CONST(0.9863080972445987), FX16_CONST(-0.16491312048996995),
+ FX16_CONST(0.9860539633461954), FX16_CONST(-0.1664259035404641),
+ FX16_CONST(0.9857975091675675), FX16_CONST(-0.1679382949747311),
+ FX16_CONST(0.9855387353121761), FX16_CONST(-0.16945029123396782),
+ FX16_CONST(0.9852776423889412), FX16_CONST(-0.17096188876030124),
+ FX16_CONST(0.9850142310122398), FX16_CONST(-0.17247308399679592),
+ FX16_CONST(0.9847485018019042), FX16_CONST(-0.1739838733874637),
+ FX16_CONST(0.9844804553832209), FX16_CONST(-0.17549425337727126),
+ FX16_CONST(0.984210092386929), FX16_CONST(-0.17700422041214875),
+ FX16_CONST(0.9839374134492189), FX16_CONST(-0.17851377093899745),
+ FX16_CONST(0.9836624192117303), FX16_CONST(-0.1800229014056994),
+ FX16_CONST(0.9833851103215512), FX16_CONST(-0.18153160826112502),
+ FX16_CONST(0.9831054874312163), FX16_CONST(-0.18303988795514092),
+ FX16_CONST(0.9828235511987053), FX16_CONST(-0.18454773693861953),
+ FX16_CONST(0.9825393022874412), FX16_CONST(-0.1860551516634465),
+ FX16_CONST(0.9822527413662894), FX16_CONST(-0.1875621285825296),
+ FX16_CONST(0.9819638691095552), FX16_CONST(-0.18906866414980616),
+ FX16_CONST(0.9816726861969831), FX16_CONST(-0.19057475482025266),
+ FX16_CONST(0.9813791933137546), FX16_CONST(-0.19208039704989227),
+ FX16_CONST(0.9810833911504867), FX16_CONST(-0.1935855872958036),
+ FX16_CONST(0.9807852804032304), FX16_CONST(-0.1950903220161282),
+ FX16_CONST(0.9804848617734694), FX16_CONST(-0.1965945976700801),
+ FX16_CONST(0.9801821359681174), FX16_CONST(-0.19809841071795362),
+ FX16_CONST(0.9798771036995176), FX16_CONST(-0.19960175762113094),
+ FX16_CONST(0.9795697656854405), FX16_CONST(-0.20110463484209182),
+ FX16_CONST(0.9792601226490821), FX16_CONST(-0.20260703884442097),
+ FX16_CONST(0.9789481753190622), FX16_CONST(-0.2041089660928169),
+ FX16_CONST(0.9786339244294232), FX16_CONST(-0.2056104130530992),
+ FX16_CONST(0.9783173707196277), FX16_CONST(-0.20711137619221845),
+ FX16_CONST(0.9779985149345571), FX16_CONST(-0.20861185197826332),
+ FX16_CONST(0.9776773578245099), FX16_CONST(-0.2101118368804696),
+ FX16_CONST(0.9773539001452001), FX16_CONST(-0.2116113273692275),
+ FX16_CONST(0.9770281426577544), FX16_CONST(-0.21311031991609125),
+ FX16_CONST(0.9767000861287118), FX16_CONST(-0.2146088109937868),
+ FX16_CONST(0.9763697313300211), FX16_CONST(-0.2161067970762195),
+ FX16_CONST(0.9760370790390391), FX16_CONST(-0.21760427463848356),
+ FX16_CONST(0.9757021300385286), FX16_CONST(-0.21910124015686966),
+ FX16_CONST(0.975364885116657), FX16_CONST(-0.22059769010887353),
+ FX16_CONST(0.9750253450669941), FX16_CONST(-0.22209362097320348),
+ FX16_CONST(0.9746835106885107), FX16_CONST(-0.22358902922978988),
+ FX16_CONST(0.9743393827855759), FX16_CONST(-0.22508391135979267),
+ FX16_CONST(0.9739929621679558), FX16_CONST(-0.22657826384560997),
+ FX16_CONST(0.973644249650812), FX16_CONST(-0.22807208317088568),
+ FX16_CONST(0.9732932460546982), FX16_CONST(-0.22956536582051876),
+ FX16_CONST(0.9729399522055602), FX16_CONST(-0.23105810828067114),
+ FX16_CONST(0.9725843689347322), FX16_CONST(-0.23255030703877522),
+ FX16_CONST(0.9722264970789364), FX16_CONST(-0.23404195858354332),
+ FX16_CONST(0.9718663374802794), FX16_CONST(-0.23553305940497535),
+ FX16_CONST(0.9715038909862518), FX16_CONST(-0.23702360599436723),
+ FX16_CONST(0.9711391584497251), FX16_CONST(-0.2385135948443184),
+ FX16_CONST(0.9707721407289504), FX16_CONST(-0.2400030224487414),
+ FX16_CONST(0.9704028386875555), FX16_CONST(-0.24149188530286916),
+ FX16_CONST(0.970031253194544), FX16_CONST(-0.24298017990326387),
+ FX16_CONST(0.9696573851242924), FX16_CONST(-0.2444679027478241),
+ FX16_CONST(0.9692812353565485), FX16_CONST(-0.24595505033579448),
+ FX16_CONST(0.9689028047764289), FX16_CONST(-0.24744161916777332),
+ FX16_CONST(0.9685220942744174), FX16_CONST(-0.24892760574572012),
+ FX16_CONST(0.9681391047463624), FX16_CONST(-0.25041300657296517),
+ FX16_CONST(0.9677538370934755), FX16_CONST(-0.2518978181542168),
+ FX16_CONST(0.9673662922223285), FX16_CONST(-0.25338203699557016),
+ FX16_CONST(0.9669764710448521), FX16_CONST(-0.2548656596045145),
+ FX16_CONST(0.9665843744783331), FX16_CONST(-0.25634868248994275),
+ FX16_CONST(0.9661900034454126), FX16_CONST(-0.2578311021621588),
+ FX16_CONST(0.9657933588740837), FX16_CONST(-0.25931291513288623),
+ FX16_CONST(0.9653944416976894), FX16_CONST(-0.26079411791527546),
+ FX16_CONST(0.9649932528549204), FX16_CONST(-0.2622747070239135),
+ FX16_CONST(0.9645897932898128), FX16_CONST(-0.2637546789748314),
+ FX16_CONST(0.9641840639517458), FX16_CONST(-0.2652340302855118),
+ FX16_CONST(0.9637760657954398), FX16_CONST(-0.2667127574748983),
+ FX16_CONST(0.963365799780954), FX16_CONST(-0.268190857063403),
+ FX16_CONST(0.9629532668736839), FX16_CONST(-0.2696683255729151),
+ FX16_CONST(0.9625384680443592), FX16_CONST(-0.27114515952680796),
+ FX16_CONST(0.9621214042690416), FX16_CONST(-0.27262135544994887),
+ FX16_CONST(0.9617020765291225), FX16_CONST(-0.2740969098687062),
+ FX16_CONST(0.9612804858113206), FX16_CONST(-0.27557181931095814),
+ FX16_CONST(0.9608566331076797), FX16_CONST(-0.27704608030609984),
+ FX16_CONST(0.9604305194155659), FX16_CONST(-0.27851968938505295),
+ FX16_CONST(0.9600021457376658), FX16_CONST(-0.2799926430802733),
+ FX16_CONST(0.9595715130819845), FX16_CONST(-0.28146493792575794),
+ FX16_CONST(0.959138622461842), FX16_CONST(-0.2829365704570553),
+ FX16_CONST(0.9587034748958716), FX16_CONST(-0.2844075372112717),
+ FX16_CONST(0.9582660714080177), FX16_CONST(-0.2858778347270806),
+ FX16_CONST(0.9578264130275329), FX16_CONST(-0.28734745954472946),
+ FX16_CONST(0.957384500788976), FX16_CONST(-0.28881640820604937),
+ FX16_CONST(0.9569403357322089), FX16_CONST(-0.29028467725446216),
+ FX16_CONST(0.9564939189023951), FX16_CONST(-0.29175226323498926),
+ FX16_CONST(0.9560452513499965), FX16_CONST(-0.2932191626942586),
+ FX16_CONST(0.9555943341307711), FX16_CONST(-0.2946853721805142),
+ FX16_CONST(0.9551411683057707), FX16_CONST(-0.29615088824362384),
+ FX16_CONST(0.9546857549413383), FX16_CONST(-0.2976157074350862),
+ FX16_CONST(0.9542280951091057), FX16_CONST(-0.29907982630804036),
+ FX16_CONST(0.9537681898859903), FX16_CONST(-0.3005432414172733),
+ FX16_CONST(0.9533060403541939), FX16_CONST(-0.3020059493192281),
+ FX16_CONST(0.9528416476011987), FX16_CONST(-0.30346794657201126),
+ FX16_CONST(0.9523750127197659), FX16_CONST(-0.30492922973540226),
+ FX16_CONST(0.9519061368079323), FX16_CONST(-0.306389795370861),
+ FX16_CONST(0.9514350209690083), FX16_CONST(-0.30784964004153487),
+ FX16_CONST(0.9509616663115751), FX16_CONST(-0.3093087603122686),
+ FX16_CONST(0.9504860739494818), FX16_CONST(-0.31076715274961136),
+ FX16_CONST(0.950008245001843), FX16_CONST(-0.31222481392182494),
+ FX16_CONST(0.9495281805930367), FX16_CONST(-0.3136817403988914),
+ FX16_CONST(0.9490458818527006), FX16_CONST(-0.31513792875252233),
+ FX16_CONST(0.9485613499157304), FX16_CONST(-0.31659337555616573),
+ FX16_CONST(0.9480745859222762), FX16_CONST(-0.31804807738501495),
+ FX16_CONST(0.9475855910177412), FX16_CONST(-0.31950203081601564),
+ FX16_CONST(0.9470943663527772), FX16_CONST(-0.3209552324278751),
+ FX16_CONST(0.9466009130832835), FX16_CONST(-0.32240767880106985),
+ FX16_CONST(0.9461052323704034), FX16_CONST(-0.32385936651785285),
+ FX16_CONST(0.9456073253805214), FX16_CONST(-0.32531029216226287),
+ FX16_CONST(0.9451071932852606), FX16_CONST(-0.3267604523201316),
+ FX16_CONST(0.9446048372614803), FX16_CONST(-0.32820984357909255),
+ FX16_CONST(0.9441002584912727), FX16_CONST(-0.32965846252858744),
+ FX16_CONST(0.9435934581619604), FX16_CONST(-0.3311063057598763),
+ FX16_CONST(0.9430844374660935), FX16_CONST(-0.33255336986604406),
+ FX16_CONST(0.9425731976014469), FX16_CONST(-0.3339996514420094),
+ FX16_CONST(0.9420597397710174), FX16_CONST(-0.33544514708453155),
+ FX16_CONST(0.9415440651830208), FX16_CONST(-0.33688985339221994),
+ FX16_CONST(0.9410261750508893), FX16_CONST(-0.3383337669655412),
+ FX16_CONST(0.9405060705932683), FX16_CONST(-0.33977688440682685),
+ FX16_CONST(0.939983753034014), FX16_CONST(-0.3412192023202823),
+ FX16_CONST(0.9394592236021899), FX16_CONST(-0.34266071731199427),
+ FX16_CONST(0.9389324835320645), FX16_CONST(-0.34410142598993887),
+ FX16_CONST(0.9384035340631082), FX16_CONST(-0.34554132496398904),
+ FX16_CONST(0.9378723764399899), FX16_CONST(-0.34698041084592357),
+ FX16_CONST(0.937339011912575), FX16_CONST(-0.3484186802494344),
+ FX16_CONST(0.9368034417359216), FX16_CONST(-0.3498561297901349),
+ FX16_CONST(0.9362656671702783), FX16_CONST(-0.35129275608556704),
+ FX16_CONST(0.9357256894810804), FX16_CONST(-0.3527285557552106),
+ FX16_CONST(0.9351835099389476), FX16_CONST(-0.3541635254204904),
+ FX16_CONST(0.9346391298196808), FX16_CONST(-0.35559766170478385),
+ FX16_CONST(0.934092550404259), FX16_CONST(-0.3570309612334299),
+ FX16_CONST(0.9335437729788363), FX16_CONST(-0.35846342063373643),
+ FX16_CONST(0.9329927988347388), FX16_CONST(-0.35989503653498817),
+ FX16_CONST(0.9324396292684624), FX16_CONST(-0.36132580556845423),
+ FX16_CONST(0.9318842655816681), FX16_CONST(-0.3627557243673971),
+ FX16_CONST(0.9313267090811805), FX16_CONST(-0.3641847895670797),
+ FX16_CONST(0.9307669610789837), FX16_CONST(-0.36561299780477385),
+ FX16_CONST(0.9302050228922191), FX16_CONST(-0.3670403457197671),
+ FX16_CONST(0.9296408958431813), FX16_CONST(-0.3684668299533722),
+ FX16_CONST(0.9290745812593157), FX16_CONST(-0.36989244714893416),
+ FX16_CONST(0.9285060804732156), FX16_CONST(-0.3713171939518375),
+ FX16_CONST(0.9279353948226179), FX16_CONST(-0.3727410670095157),
+ FX16_CONST(0.9273625256504011), FX16_CONST(-0.3741640629714579),
+ FX16_CONST(0.9267874743045817), FX16_CONST(-0.3755861784892172),
+ FX16_CONST(0.9262102421383114), FX16_CONST(-0.3770074102164182),
+ FX16_CONST(0.9256308305098728), FX16_CONST(-0.37842775480876545),
+ FX16_CONST(0.9250492407826777), FX16_CONST(-0.379847208924051),
+ FX16_CONST(0.9244654743252626), FX16_CONST(-0.3812657692221624),
+ FX16_CONST(0.9238795325112867), FX16_CONST(-0.3826834323650897),
+ FX16_CONST(0.9232914167195277), FX16_CONST(-0.38410019501693493),
+ FX16_CONST(0.9227011283338785), FX16_CONST(-0.3855160538439189),
+ FX16_CONST(0.9221086687433452), FX16_CONST(-0.3869310055143886),
+ FX16_CONST(0.921514039342042), FX16_CONST(-0.3883450466988262),
+ FX16_CONST(0.9209172415291895), FX16_CONST(-0.3897581740698563),
+ FX16_CONST(0.9203182767091106), FX16_CONST(-0.39117038430225387),
+ FX16_CONST(0.9197171462912274), FX16_CONST(-0.3925816740729514),
+ FX16_CONST(0.9191138516900578), FX16_CONST(-0.393992040061048),
+ FX16_CONST(0.9185083943252123), FX16_CONST(-0.3954014789478162),
+ FX16_CONST(0.9179007756213905), FX16_CONST(-0.3968099874167103),
+ FX16_CONST(0.917290997008378), FX16_CONST(-0.3982175621533735),
+ FX16_CONST(0.9166790599210427), FX16_CONST(-0.3996241998456467),
+ FX16_CONST(0.9160649657993317), FX16_CONST(-0.4010298971835757),
+ FX16_CONST(0.9154487160882678), FX16_CONST(-0.40243465085941843),
+ FX16_CONST(0.9148303122379462), FX16_CONST(-0.403838457567654),
+ FX16_CONST(0.9142097557035307), FX16_CONST(-0.40524131400498975),
+ FX16_CONST(0.9135870479452508), FX16_CONST(-0.40664321687036903),
+ FX16_CONST(0.9129621904283982), FX16_CONST(-0.40804416286497863),
+ FX16_CONST(0.9123351846233229), FX16_CONST(-0.40944414869225754),
+ FX16_CONST(0.9117060320054299), FX16_CONST(-0.4108431710579038),
+ FX16_CONST(0.9110747340551764), FX16_CONST(-0.4122412266698829),
+ FX16_CONST(0.9104412922580672), FX16_CONST(-0.4136383122384345),
+ FX16_CONST(0.9098057081046523), FX16_CONST(-0.4150344244760815),
+ FX16_CONST(0.9091679830905225), FX16_CONST(-0.416429560097637),
+ FX16_CONST(0.9085281187163061), FX16_CONST(-0.41782371582021227),
+ FX16_CONST(0.9078861164876662), FX16_CONST(-0.41921688836322407),
+ FX16_CONST(0.9072419779152959), FX16_CONST(-0.4206090744484024),
+ FX16_CONST(0.9065957045149153), FX16_CONST(-0.4220002707997997),
+ FX16_CONST(0.9059472978072686), FX16_CONST(-0.42339047414379577),
+ FX16_CONST(0.9052967593181188), FX16_CONST(-0.4247796812091087),
+ FX16_CONST(0.9046440905782461), FX16_CONST(-0.42616788872679967),
+ FX16_CONST(0.9039892931234434), FX16_CONST(-0.42755509343028186),
+ FX16_CONST(0.9033323684945118), FX16_CONST(-0.42894129205532944),
+ FX16_CONST(0.9026733182372587), FX16_CONST(-0.4303264813400827),
+ FX16_CONST(0.9020121439024933), FX16_CONST(-0.4317106580250571),
+ FX16_CONST(0.901348847046022), FX16_CONST(-0.4330938188531519),
+ FX16_CONST(0.9006834292286469), FX16_CONST(-0.4344759605696558),
+ FX16_CONST(0.9000158920161603), FX16_CONST(-0.43585707992225536),
+ FX16_CONST(0.8993462369793416), FX16_CONST(-0.4372371736610441),
+ FX16_CONST(0.8986744656939539), FX16_CONST(-0.4386162385385274),
+ FX16_CONST(0.8980005797407399), FX16_CONST(-0.43999427130963314),
+ FX16_CONST(0.8973245807054183), FX16_CONST(-0.4413712687317167),
+ FX16_CONST(0.8966464701786803), FX16_CONST(-0.4427472275645698),
+ FX16_CONST(0.8959662497561852), FX16_CONST(-0.44412214457042914),
+ FX16_CONST(0.8952839210385575), FX16_CONST(-0.4454960165139818),
+ FX16_CONST(0.8945994856313828), FX16_CONST(-0.446868840162374),
+ FX16_CONST(0.8939129451452033), FX16_CONST(-0.4482406122852199),
+ FX16_CONST(0.8932243011955152), FX16_CONST(-0.4496113296546067),
+ FX16_CONST(0.8925335554027647), FX16_CONST(-0.4509809890451037),
+ FX16_CONST(0.8918407093923427), FX16_CONST(-0.4523495872337709),
+ FX16_CONST(0.8911457647945834), FX16_CONST(-0.4537171210001636),
+ FX16_CONST(0.890448723244758), FX16_CONST(-0.4550835871263437),
+ FX16_CONST(0.8897495863830728), FX16_CONST(-0.456448982396884),
+ FX16_CONST(0.8890483558546647), FX16_CONST(-0.457813303598877),
+ FX16_CONST(0.8883450333095964), FX16_CONST(-0.45917654752194403),
+ FX16_CONST(0.8876396204028539), FX16_CONST(-0.46053871095824006),
+ FX16_CONST(0.8869321187943423), FX16_CONST(-0.46189979070246256),
+ FX16_CONST(0.8862225301488806), FX16_CONST(-0.46325978355186015),
+ FX16_CONST(0.8855108561361998), FX16_CONST(-0.4646186863062379),
+ FX16_CONST(0.8847970984309379), FX16_CONST(-0.465976495767966),
+ FX16_CONST(0.884081258712635), FX16_CONST(-0.4673332087419884),
+ FX16_CONST(0.8833633386657317), FX16_CONST(-0.4686888220358277),
+ FX16_CONST(0.8826433399795628), FX16_CONST(-0.4700433324595955),
+ FX16_CONST(0.881921264348355), FX16_CONST(-0.4713967368259977),
+ FX16_CONST(0.8811971134712222), FX16_CONST(-0.47274903195034257),
+ FX16_CONST(0.8804708890521609), FX16_CONST(-0.4741002146505499),
+ FX16_CONST(0.8797425928000474), FX16_CONST(-0.4754502817471559),
+ FX16_CONST(0.8790122264286335), FX16_CONST(-0.4767992300633219),
+ FX16_CONST(0.8782797916565416), FX16_CONST(-0.478147056424843),
+ FX16_CONST(0.8775452902072612), FX16_CONST(-0.4794937576601531),
+ FX16_CONST(0.8768087238091458), FX16_CONST(-0.4808393306003338),
+ FX16_CONST(0.8760700941954066), FX16_CONST(-0.4821837720791227),
+ FX16_CONST(0.875329403104111), FX16_CONST(-0.48352707893291846),
+ FX16_CONST(0.8745866522781762), FX16_CONST(-0.484869248000791),
+ FX16_CONST(0.8738418434653668), FX16_CONST(-0.4862102761244864),
+ FX16_CONST(0.8730949784182902), FX16_CONST(-0.4875501601484357),
+ FX16_CONST(0.8723460588943915), FX16_CONST(-0.4888888969197631),
+ FX16_CONST(0.871595086655951), FX16_CONST(-0.4902264832882912),
+ FX16_CONST(0.870842063470079), FX16_CONST(-0.49156291610654973),
+ FX16_CONST(0.8700869911087115), FX16_CONST(-0.492898192229784),
+ FX16_CONST(0.8693298713486067), FX16_CONST(-0.49423230851595984),
+ FX16_CONST(0.868570705971341), FX16_CONST(-0.4955652618257724),
+ FX16_CONST(0.8678094967633032), FX16_CONST(-0.4968970490226545),
+ FX16_CONST(0.8670462455156928), FX16_CONST(-0.4982276669727816),
+ FX16_CONST(0.8662809540245131), FX16_CONST(-0.4995571125450818),
+ FX16_CONST(0.8655136240905691), FX16_CONST(-0.5008853826112408),
+ FX16_CONST(0.8647442575194625), FX16_CONST(-0.5022124740457106),
+ FX16_CONST(0.8639728561215868), FX16_CONST(-0.5035383837257175),
+ FX16_CONST(0.8631994217121242), FX16_CONST(-0.5048631085312676),
+ FX16_CONST(0.8624239561110406), FX16_CONST(-0.5061866453451551),
+ FX16_CONST(0.8616464611430814), FX16_CONST(-0.5075089910529708),
+ FX16_CONST(0.8608669386377672), FX16_CONST(-0.5088301425431071),
+ FX16_CONST(0.8600853904293903), FX16_CONST(-0.5101500967067666),
+ FX16_CONST(0.8593018183570085), FX16_CONST(-0.5114688504379704),
+ FX16_CONST(0.858516224264443), FX16_CONST(-0.5127864006335627),
+ FX16_CONST(0.8577286100002721), FX16_CONST(-0.5141027441932216),
+ FX16_CONST(0.8569389774178287), FX16_CONST(-0.515417878019463),
+ FX16_CONST(0.8561473283751946), FX16_CONST(-0.5167317990176497),
+ FX16_CONST(0.855353664735196), FX16_CONST(-0.5180445040959992),
+ FX16_CONST(0.8545579883654005), FX16_CONST(-0.5193559901655896),
+ FX16_CONST(0.8537603011381115), FX16_CONST(-0.5206662541403669),
+ FX16_CONST(0.8529606049303637), FX16_CONST(-0.5219752929371543),
+ FX16_CONST(0.8521589016239197), FX16_CONST(-0.5232831034756565),
+ FX16_CONST(0.8513551931052652), FX16_CONST(-0.5245896826784687),
+ FX16_CONST(0.8505494812656035), FX16_CONST(-0.5258950274710846),
+ FX16_CONST(0.8497417680008527), FX16_CONST(-0.5271991347819011),
+ FX16_CONST(0.8489320552116397), FX16_CONST(-0.5285020015422284),
+ FX16_CONST(0.8481203448032972), FX16_CONST(-0.5298036246862947),
+ FX16_CONST(0.8473066386858585), FX16_CONST(-0.5311040011512548),
+ FX16_CONST(0.8464909387740521), FX16_CONST(-0.5324031278771979),
+ FX16_CONST(0.8456732469872991), FX16_CONST(-0.533701001807153),
+ FX16_CONST(0.8448535652497072), FX16_CONST(-0.534997619887097),
+ FX16_CONST(0.8440318954900664), FX16_CONST(-0.5362929790659631),
+ FX16_CONST(0.8432082396418453), FX16_CONST(-0.5375870762956456),
+ FX16_CONST(0.842382599643186), FX16_CONST(-0.5388799085310083),
+ FX16_CONST(0.8415549774368984), FX16_CONST(-0.5401714727298929),
+ FX16_CONST(0.8407253749704582), FX16_CONST(-0.5414617658531232),
+ FX16_CONST(0.8398937941959995), FX16_CONST(-0.5427507848645158),
+ FX16_CONST(0.8390602370703127), FX16_CONST(-0.5440385267308839),
+ FX16_CONST(0.8382247055548382), FX16_CONST(-0.5453249884220462),
+ FX16_CONST(0.8373872016156619), FX16_CONST(-0.5466101669108347),
+ FX16_CONST(0.836547727223512), FX16_CONST(-0.5478940591731002),
+ FX16_CONST(0.8357062843537527), FX16_CONST(-0.5491766621877195),
+ FX16_CONST(0.8348628749863801), FX16_CONST(-0.5504579729366047),
+ FX16_CONST(0.834017501106018), FX16_CONST(-0.5517379884047074),
+ FX16_CONST(0.8331701647019133), FX16_CONST(-0.5530167055800274),
+ FX16_CONST(0.8323208677679297), FX16_CONST(-0.5542941214536201),
+ FX16_CONST(0.8314696123025453), FX16_CONST(-0.555570233019602),
+ FX16_CONST(0.8306164003088463), FX16_CONST(-0.55684503727516),
+ FX16_CONST(0.829761233794523), FX16_CONST(-0.5581185312205561),
+ FX16_CONST(0.8289041147718651), FX16_CONST(-0.5593907118591358),
+ FX16_CONST(0.8280450452577558), FX16_CONST(-0.5606615761973359),
+ FX16_CONST(0.827184027273669), FX16_CONST(-0.5619311212446895),
+ FX16_CONST(0.8263210628456636), FX16_CONST(-0.5631993440138339),
+ FX16_CONST(0.8254561540043776), FX16_CONST(-0.5644662415205194),
+ FX16_CONST(0.8245893027850252), FX16_CONST(-0.5657318107836132),
+ FX16_CONST(0.8237205112273915), FX16_CONST(-0.5669960488251085),
+ FX16_CONST(0.8228497813758263), FX16_CONST(-0.5682589526701315),
+ FX16_CONST(0.8219771152792414), FX16_CONST(-0.5695205193469473),
+ FX16_CONST(0.8211025149911048), FX16_CONST(-0.5707807458869671),
+ FX16_CONST(0.8202259825694347), FX16_CONST(-0.572039629324757),
+ FX16_CONST(0.8193475200767971), FX16_CONST(-0.573297166698042),
+ FX16_CONST(0.8184671295802988), FX16_CONST(-0.5745533550477158),
+ FX16_CONST(0.8175848131515837), FX16_CONST(-0.5758081914178453),
+ FX16_CONST(0.816700572866828), FX16_CONST(-0.5770616728556793),
+ FX16_CONST(0.8158144108067338), FX16_CONST(-0.5783137964116555),
+ FX16_CONST(0.8149263290565265), FX16_CONST(-0.5795645591394059),
+ FX16_CONST(0.8140363297059485), FX16_CONST(-0.5808139580957644),
+ FX16_CONST(0.8131444148492536), FX16_CONST(-0.5820619903407755),
+ FX16_CONST(0.8122505865852039), FX16_CONST(-0.5833086529376984),
+ FX16_CONST(0.8113548470170638), FX16_CONST(-0.5845539429530152),
+ FX16_CONST(0.8104571982525948), FX16_CONST(-0.5857978574564389),
+ FX16_CONST(0.8095576424040515), FX16_CONST(-0.5870403935209177),
+ FX16_CONST(0.8086561815881751), FX16_CONST(-0.5882815482226452),
+ FX16_CONST(0.8077528179261904), FX16_CONST(-0.5895213186410639),
+ FX16_CONST(0.8068475535437994), FX16_CONST(-0.590759701858874),
+ FX16_CONST(0.8059403905711764), FX16_CONST(-0.5919966949620409),
+ FX16_CONST(0.8050313311429635), FX16_CONST(-0.5932322950397999),
+ FX16_CONST(0.8041203773982658), FX16_CONST(-0.5944664991846643),
+ FX16_CONST(0.8032075314806449), FX16_CONST(-0.5956993044924334),
+ FX16_CONST(0.8022927955381156), FX16_CONST(-0.5969307080621966),
+ FX16_CONST(0.8013761717231402), FX16_CONST(-0.5981607069963422),
+ FX16_CONST(0.8004576621926228), FX16_CONST(-0.5993892984005645),
+ FX16_CONST(0.7995372691079052), FX16_CONST(-0.6006164793838688),
+ FX16_CONST(0.7986149946347609), FX16_CONST(-0.60184224705858),
+ FX16_CONST(0.797690840943391), FX16_CONST(-0.6030665985403483),
+ FX16_CONST(0.7967648102084189), FX16_CONST(-0.6042895309481559),
+ FX16_CONST(0.7958369046088836), FX16_CONST(-0.6055110414043254),
+ FX16_CONST(0.7949071263282369), FX16_CONST(-0.6067311270345246),
+ FX16_CONST(0.7939754775543373), FX16_CONST(-0.6079497849677735),
+ FX16_CONST(0.7930419604794436), FX16_CONST(-0.6091670123364532),
+ FX16_CONST(0.7921065773002123), FX16_CONST(-0.6103828062763096),
+ FX16_CONST(0.7911693302176903), FX16_CONST(-0.6115971639264618),
+ FX16_CONST(0.79023022143731), FX16_CONST(-0.6128100824294097),
+ FX16_CONST(0.7892892531688859), FX16_CONST(-0.6140215589310382),
+ FX16_CONST(0.7883464276266063), FX16_CONST(-0.6152315905806267),
+ FX16_CONST(0.7874017470290313), FX16_CONST(-0.6164401745308536),
+ FX16_CONST(0.7864552135990859), FX16_CONST(-0.6176473079378038),
+ FX16_CONST(0.785506829564054), FX16_CONST(-0.6188529879609762),
+ FX16_CONST(0.7845565971555751), FX16_CONST(-0.6200572117632892),
+ FX16_CONST(0.7836045186096383), FX16_CONST(-0.6212599765110874),
+ FX16_CONST(0.7826505961665757), FX16_CONST(-0.62246127937415),
+ FX16_CONST(0.7816948320710593), FX16_CONST(-0.6236611175256946),
+ FX16_CONST(0.7807372285720946), FX16_CONST(-0.6248594881423862),
+ FX16_CONST(0.7797777879230144), FX16_CONST(-0.6260563884043435),
+ FX16_CONST(0.7788165123814761), FX16_CONST(-0.6272518154951439),
+ FX16_CONST(0.7778534042094531), FX16_CONST(-0.6284457666018326),
+ FX16_CONST(0.7768884656732324), FX16_CONST(-0.6296382389149271),
+ FX16_CONST(0.7759216990434078), FX16_CONST(-0.6308292296284244),
+ FX16_CONST(0.7749531065948739), FX16_CONST(-0.632018735939809),
+ FX16_CONST(0.7739826906068228), FX16_CONST(-0.6332067550500573),
+ FX16_CONST(0.7730104533627371), FX16_CONST(-0.6343932841636454),
+ FX16_CONST(0.7720363971503845), FX16_CONST(-0.6355783204885561),
+ FX16_CONST(0.7710605242618137), FX16_CONST(-0.6367618612362843),
+ FX16_CONST(0.7700828369933481), FX16_CONST(-0.6379439036218439),
+ FX16_CONST(0.7691033376455796), FX16_CONST(-0.6391244448637757),
+ FX16_CONST(0.7681220285233655), FX16_CONST(-0.6403034821841515),
+ FX16_CONST(0.7671389119358204), FX16_CONST(-0.641481012808583),
+ FX16_CONST(0.7661539901963128), FX16_CONST(-0.6426570339662269),
+ FX16_CONST(0.7651672656224591), FX16_CONST(-0.6438315428897913),
+ FX16_CONST(0.7641787405361168), FX16_CONST(-0.6450045368155439),
+ FX16_CONST(0.7631884172633812), FX16_CONST(-0.6461760129833164),
+ FX16_CONST(0.762196298134579), FX16_CONST(-0.647345968636512),
+ FX16_CONST(0.7612023854842619), FX16_CONST(-0.6485144010221124),
+ FX16_CONST(0.7602066816512023), FX16_CONST(-0.6496813073906833),
+ FX16_CONST(0.7592091889783881), FX16_CONST(-0.6508466849963808),
+ FX16_CONST(0.7582099098130153), FX16_CONST(-0.6520105310969595),
+ FX16_CONST(0.7572088465064847), FX16_CONST(-0.6531728429537765),
+ FX16_CONST(0.7562060014143945), FX16_CONST(-0.6543336178318004),
+ FX16_CONST(0.7552013768965364), FX16_CONST(-0.6554928529996155),
+ FX16_CONST(0.7541949753168893), FX16_CONST(-0.6566505457294288),
+ FX16_CONST(0.7531867990436125), FX16_CONST(-0.6578066932970785),
+ FX16_CONST(0.7521768504490427), FX16_CONST(-0.6589612929820374),
+ FX16_CONST(0.7511651319096866), FX16_CONST(-0.6601143420674204),
+ FX16_CONST(0.7501516458062151), FX16_CONST(-0.6612658378399922),
+ FX16_CONST(0.7491363945234593), FX16_CONST(-0.6624157775901719),
+ FX16_CONST(0.7481193804504037), FX16_CONST(-0.6635641586120397),
+ FX16_CONST(0.7471006059801801), FX16_CONST(-0.6647109782033449),
+ FX16_CONST(0.746080073510064), FX16_CONST(-0.6658562336655095),
+ FX16_CONST(0.7450577854414661), FX16_CONST(-0.6669999223036374),
+ FX16_CONST(0.7440337441799292), FX16_CONST(-0.6681420414265186),
+ FX16_CONST(0.7430079521351218), FX16_CONST(-0.6692825883466359),
+ FX16_CONST(0.7419804117208311), FX16_CONST(-0.6704215603801731),
+ FX16_CONST(0.740951125354959), FX16_CONST(-0.6715589548470184),
+ FX16_CONST(0.7399200954595163), FX16_CONST(-0.6726947690707727),
+ FX16_CONST(0.7388873244606152), FX16_CONST(-0.673829000378756),
+ FX16_CONST(0.7378528147884659), FX16_CONST(-0.674961646102012),
+ FX16_CONST(0.73681656887737), FX16_CONST(-0.6760927035753158),
+ FX16_CONST(0.7357785891657136), FX16_CONST(-0.6772221701371804),
+ FX16_CONST(0.7347388780959637), FX16_CONST(-0.6783500431298612),
+ FX16_CONST(0.7336974381146604), FX16_CONST(-0.679476319899365),
+ FX16_CONST(0.7326542716724128), FX16_CONST(-0.680600997795453),
+ FX16_CONST(0.7316093812238927), FX16_CONST(-0.6817240741716496),
+ FX16_CONST(0.7305627692278276), FX16_CONST(-0.682845546385248),
+ FX16_CONST(0.729514438146997), FX16_CONST(-0.6839654117973155),
+ FX16_CONST(0.7284643904482253), FX16_CONST(-0.6850836677727002),
+ FX16_CONST(0.7274126286023758), FX16_CONST(-0.6862003116800386),
+ FX16_CONST(0.7263591550843459), FX16_CONST(-0.6873153408917592),
+ FX16_CONST(0.7253039723730609), FX16_CONST(-0.6884287527840903),
+ FX16_CONST(0.7242470829514669), FX16_CONST(-0.6895405447370669),
+ FX16_CONST(0.7231884893065276), FX16_CONST(-0.6906507141345344),
+ FX16_CONST(0.7221281939292155), FX16_CONST(-0.6917592583641576),
+ FX16_CONST(0.7210661993145081), FX16_CONST(-0.6928661748174247),
+ FX16_CONST(0.7200025079613818), FX16_CONST(-0.6939714608896538),
+ FX16_CONST(0.7189371223728045), FX16_CONST(-0.6950751139800008),
+ FX16_CONST(0.7178700450557317), FX16_CONST(-0.696177131491463),
+ FX16_CONST(0.7168012785210996), FX16_CONST(-0.6972775108308864),
+ FX16_CONST(0.7157308252838187), FX16_CONST(-0.6983762494089728),
+ FX16_CONST(0.714658687862769), FX16_CONST(-0.6994733446402839),
+ FX16_CONST(0.7135848687807936), FX16_CONST(-0.7005687939432482),
+ FX16_CONST(0.7125093705646923), FX16_CONST(-0.7016625947401685),
+ FX16_CONST(0.7114321957452167), FX16_CONST(-0.7027547444572251),
+ FX16_CONST(0.7103533468570624), FX16_CONST(-0.7038452405244848),
+ FX16_CONST(0.7092728264388656), FX16_CONST(-0.7049340803759049),
+ FX16_CONST(0.7081906370331955), FX16_CONST(-0.7060212614493396),
+ FX16_CONST(0.7071067811865476), FX16_CONST(-0.7071067811865475),
+ FX16_CONST(0.7060212614493397), FX16_CONST(-0.7081906370331954),
+ FX16_CONST(0.7049340803759051), FX16_CONST(-0.7092728264388655),
+ FX16_CONST(0.703845240524485), FX16_CONST(-0.7103533468570623),
+ FX16_CONST(0.7027547444572252), FX16_CONST(-0.7114321957452165),
+ FX16_CONST(0.7016625947401687), FX16_CONST(-0.7125093705646922),
+ FX16_CONST(0.7005687939432483), FX16_CONST(-0.7135848687807935),
+ FX16_CONST(0.699473344640284), FX16_CONST(-0.7146586878627689),
+ FX16_CONST(0.6983762494089729), FX16_CONST(-0.7157308252838186),
+ FX16_CONST(0.6972775108308865), FX16_CONST(-0.7168012785210995),
+ FX16_CONST(0.6961771314914631), FX16_CONST(-0.7178700450557316),
+ FX16_CONST(0.6950751139800009), FX16_CONST(-0.7189371223728044),
+ FX16_CONST(0.6939714608896539), FX16_CONST(-0.7200025079613817),
+ FX16_CONST(0.6928661748174249), FX16_CONST(-0.7210661993145079),
+ FX16_CONST(0.6917592583641579), FX16_CONST(-0.7221281939292152),
+ FX16_CONST(0.6906507141345346), FX16_CONST(-0.7231884893065275),
+ FX16_CONST(0.689540544737067), FX16_CONST(-0.7242470829514668),
+ FX16_CONST(0.6884287527840904), FX16_CONST(-0.7253039723730608),
+ FX16_CONST(0.6873153408917593), FX16_CONST(-0.7263591550843458),
+ FX16_CONST(0.6862003116800387), FX16_CONST(-0.7274126286023757),
+ FX16_CONST(0.6850836677727004), FX16_CONST(-0.7284643904482252),
+ FX16_CONST(0.6839654117973156), FX16_CONST(-0.7295144381469968),
+ FX16_CONST(0.6828455463852481), FX16_CONST(-0.7305627692278275),
+ FX16_CONST(0.6817240741716497), FX16_CONST(-0.7316093812238926),
+ FX16_CONST(0.6806009977954532), FX16_CONST(-0.7326542716724127),
+ FX16_CONST(0.6794763198993651), FX16_CONST(-0.7336974381146603),
+ FX16_CONST(0.6783500431298614), FX16_CONST(-0.7347388780959635),
+ FX16_CONST(0.6772221701371806), FX16_CONST(-0.7357785891657134),
+ FX16_CONST(0.6760927035753159), FX16_CONST(-0.7368165688773698),
+ FX16_CONST(0.6749616461020123), FX16_CONST(-0.7378528147884658),
+ FX16_CONST(0.6738290003787561), FX16_CONST(-0.7388873244606151),
+ FX16_CONST(0.6726947690707729), FX16_CONST(-0.7399200954595162),
+ FX16_CONST(0.6715589548470186), FX16_CONST(-0.7409511253549589),
+ FX16_CONST(0.6704215603801732), FX16_CONST(-0.741980411720831),
+ FX16_CONST(0.669282588346636), FX16_CONST(-0.7430079521351217),
+ FX16_CONST(0.6681420414265187), FX16_CONST(-0.7440337441799291),
+ FX16_CONST(0.6669999223036376), FX16_CONST(-0.745057785441466),
+ FX16_CONST(0.6658562336655096), FX16_CONST(-0.7460800735100638),
+ FX16_CONST(0.664710978203345), FX16_CONST(-0.74710060598018),
+ FX16_CONST(0.6635641586120398), FX16_CONST(-0.7481193804504036),
+ FX16_CONST(0.662415777590172), FX16_CONST(-0.7491363945234591),
+ FX16_CONST(0.6612658378399923), FX16_CONST(-0.750151645806215),
+ FX16_CONST(0.6601143420674205), FX16_CONST(-0.7511651319096864),
+ FX16_CONST(0.6589612929820375), FX16_CONST(-0.7521768504490425),
+ FX16_CONST(0.6578066932970787), FX16_CONST(-0.7531867990436124),
+ FX16_CONST(0.656650545729429), FX16_CONST(-0.7541949753168892),
+ FX16_CONST(0.6554928529996156), FX16_CONST(-0.7552013768965364),
+ FX16_CONST(0.6543336178318006), FX16_CONST(-0.7562060014143945),
+ FX16_CONST(0.6531728429537766), FX16_CONST(-0.7572088465064847),
+ FX16_CONST(0.6520105310969597), FX16_CONST(-0.7582099098130152),
+ FX16_CONST(0.650846684996381), FX16_CONST(-0.759209188978388),
+ FX16_CONST(0.6496813073906834), FX16_CONST(-0.7602066816512022),
+ FX16_CONST(0.6485144010221126), FX16_CONST(-0.7612023854842617),
+ FX16_CONST(0.6473459686365121), FX16_CONST(-0.7621962981345789),
+ FX16_CONST(0.6461760129833166), FX16_CONST(-0.7631884172633812),
+ FX16_CONST(0.645004536815544), FX16_CONST(-0.7641787405361167),
+ FX16_CONST(0.6438315428897914), FX16_CONST(-0.765167265622459),
+ FX16_CONST(0.6426570339662271), FX16_CONST(-0.7661539901963128),
+ FX16_CONST(0.6414810128085832), FX16_CONST(-0.7671389119358204),
+ FX16_CONST(0.6403034821841516), FX16_CONST(-0.7681220285233654),
+ FX16_CONST(0.6391244448637758), FX16_CONST(-0.7691033376455795),
+ FX16_CONST(0.637943903621844), FX16_CONST(-0.7700828369933479),
+ FX16_CONST(0.6367618612362844), FX16_CONST(-0.7710605242618136),
+ FX16_CONST(0.6355783204885562), FX16_CONST(-0.7720363971503844),
+ FX16_CONST(0.6343932841636455), FX16_CONST(-0.773010453362737),
+ FX16_CONST(0.6332067550500574), FX16_CONST(-0.7739826906068227),
+ FX16_CONST(0.6320187359398091), FX16_CONST(-0.7749531065948738),
+ FX16_CONST(0.6308292296284245), FX16_CONST(-0.7759216990434077),
+ FX16_CONST(0.6296382389149272), FX16_CONST(-0.7768884656732323),
+ FX16_CONST(0.6284457666018327), FX16_CONST(-0.777853404209453),
+ FX16_CONST(0.6272518154951441), FX16_CONST(-0.778816512381476),
+ FX16_CONST(0.6260563884043436), FX16_CONST(-0.7797777879230143),
+ FX16_CONST(0.6248594881423863), FX16_CONST(-0.7807372285720945),
+ FX16_CONST(0.6236611175256949), FX16_CONST(-0.7816948320710593),
+ FX16_CONST(0.6224612793741501), FX16_CONST(-0.7826505961665756),
+ FX16_CONST(0.6212599765110876), FX16_CONST(-0.7836045186096382),
+ FX16_CONST(0.6200572117632894), FX16_CONST(-0.784556597155575),
+ FX16_CONST(0.6188529879609764), FX16_CONST(-0.7855068295640539),
+ FX16_CONST(0.6176473079378039), FX16_CONST(-0.7864552135990858),
+ FX16_CONST(0.6164401745308538), FX16_CONST(-0.7874017470290312),
+ FX16_CONST(0.6152315905806269), FX16_CONST(-0.7883464276266062),
+ FX16_CONST(0.6140215589310384), FX16_CONST(-0.7892892531688858),
+ FX16_CONST(0.6128100824294098), FX16_CONST(-0.7902302214373099),
+ FX16_CONST(0.6115971639264619), FX16_CONST(-0.7911693302176902),
+ FX16_CONST(0.6103828062763097), FX16_CONST(-0.7921065773002122),
+ FX16_CONST(0.6091670123364533), FX16_CONST(-0.7930419604794436),
+ FX16_CONST(0.6079497849677736), FX16_CONST(-0.7939754775543372),
+ FX16_CONST(0.6067311270345247), FX16_CONST(-0.7949071263282368),
+ FX16_CONST(0.6055110414043257), FX16_CONST(-0.7958369046088835),
+ FX16_CONST(0.604289530948156), FX16_CONST(-0.7967648102084187),
+ FX16_CONST(0.6030665985403484), FX16_CONST(-0.7976908409433909),
+ FX16_CONST(0.6018422470585801), FX16_CONST(-0.7986149946347608),
+ FX16_CONST(0.6006164793838689), FX16_CONST(-0.7995372691079051),
+ FX16_CONST(0.5993892984005647), FX16_CONST(-0.8004576621926226),
+ FX16_CONST(0.5981607069963424), FX16_CONST(-0.8013761717231402),
+ FX16_CONST(0.5969307080621967), FX16_CONST(-0.8022927955381155),
+ FX16_CONST(0.5956993044924335), FX16_CONST(-0.8032075314806448),
+ FX16_CONST(0.5944664991846644), FX16_CONST(-0.8041203773982657),
+ FX16_CONST(0.5932322950398), FX16_CONST(-0.8050313311429634),
+ FX16_CONST(0.591996694962041), FX16_CONST(-0.8059403905711763),
+ FX16_CONST(0.5907597018588742), FX16_CONST(-0.8068475535437993),
+ FX16_CONST(0.589521318641064), FX16_CONST(-0.8077528179261902),
+ FX16_CONST(0.5882815482226453), FX16_CONST(-0.808656181588175),
+ FX16_CONST(0.5870403935209179), FX16_CONST(-0.8095576424040514),
+ FX16_CONST(0.585797857456439), FX16_CONST(-0.8104571982525947),
+ FX16_CONST(0.5845539429530153), FX16_CONST(-0.8113548470170637),
+ FX16_CONST(0.5833086529376985), FX16_CONST(-0.8122505865852038),
+ FX16_CONST(0.5820619903407757), FX16_CONST(-0.8131444148492535),
+ FX16_CONST(0.5808139580957645), FX16_CONST(-0.8140363297059484),
+ FX16_CONST(0.579564559139406), FX16_CONST(-0.8149263290565264),
+ FX16_CONST(0.5783137964116557), FX16_CONST(-0.8158144108067338),
+ FX16_CONST(0.5770616728556794), FX16_CONST(-0.8167005728668278),
+ FX16_CONST(0.5758081914178454), FX16_CONST(-0.8175848131515836),
+ FX16_CONST(0.5745533550477159), FX16_CONST(-0.8184671295802987),
+ FX16_CONST(0.5732971666980421), FX16_CONST(-0.819347520076797),
+ FX16_CONST(0.5720396293247573), FX16_CONST(-0.8202259825694346),
+ FX16_CONST(0.5707807458869673), FX16_CONST(-0.8211025149911046),
+ FX16_CONST(0.5695205193469475), FX16_CONST(-0.8219771152792413),
+ FX16_CONST(0.5682589526701317), FX16_CONST(-0.8228497813758262),
+ FX16_CONST(0.5669960488251087), FX16_CONST(-0.8237205112273914),
+ FX16_CONST(0.5657318107836135), FX16_CONST(-0.8245893027850251),
+ FX16_CONST(0.5644662415205195), FX16_CONST(-0.8254561540043774),
+ FX16_CONST(0.5631993440138341), FX16_CONST(-0.8263210628456635),
+ FX16_CONST(0.5619311212446896), FX16_CONST(-0.827184027273669),
+ FX16_CONST(0.5606615761973361), FX16_CONST(-0.8280450452577557),
+ FX16_CONST(0.559390711859136), FX16_CONST(-0.828904114771865),
+ FX16_CONST(0.5581185312205563), FX16_CONST(-0.8297612337945229),
+ FX16_CONST(0.5568450372751601), FX16_CONST(-0.8306164003088462),
+ FX16_CONST(0.5555702330196022), FX16_CONST(-0.8314696123025453),
+ FX16_CONST(0.5542941214536202), FX16_CONST(-0.8323208677679296),
+ FX16_CONST(0.5530167055800275), FX16_CONST(-0.8331701647019132),
+ FX16_CONST(0.5517379884047077), FX16_CONST(-0.8340175011060179),
+ FX16_CONST(0.5504579729366049), FX16_CONST(-0.83486287498638),
+ FX16_CONST(0.5491766621877197), FX16_CONST(-0.8357062843537526),
+ FX16_CONST(0.5478940591731004), FX16_CONST(-0.8365477272235119),
+ FX16_CONST(0.546610166910835), FX16_CONST(-0.8373872016156618),
+ FX16_CONST(0.5453249884220464), FX16_CONST(-0.8382247055548381),
+ FX16_CONST(0.544038526730884), FX16_CONST(-0.8390602370703126),
+ FX16_CONST(0.5427507848645159), FX16_CONST(-0.8398937941959995),
+ FX16_CONST(0.5414617658531233), FX16_CONST(-0.8407253749704581),
+ FX16_CONST(0.540171472729893), FX16_CONST(-0.8415549774368983),
+ FX16_CONST(0.5388799085310084), FX16_CONST(-0.8423825996431858),
+ FX16_CONST(0.5375870762956457), FX16_CONST(-0.8432082396418453),
+ FX16_CONST(0.5362929790659633), FX16_CONST(-0.8440318954900664),
+ FX16_CONST(0.5349976198870972), FX16_CONST(-0.8448535652497071),
+ FX16_CONST(0.5337010018071532), FX16_CONST(-0.845673246987299),
+ FX16_CONST(0.532403127877198), FX16_CONST(-0.846490938774052),
+ FX16_CONST(0.5311040011512549), FX16_CONST(-0.8473066386858584),
+ FX16_CONST(0.5298036246862948), FX16_CONST(-0.8481203448032971),
+ FX16_CONST(0.5285020015422285), FX16_CONST(-0.8489320552116396),
+ FX16_CONST(0.5271991347819013), FX16_CONST(-0.8497417680008525),
+ FX16_CONST(0.5258950274710849), FX16_CONST(-0.8505494812656034),
+ FX16_CONST(0.524589682678469), FX16_CONST(-0.8513551931052652),
+ FX16_CONST(0.5232831034756567), FX16_CONST(-0.8521589016239196),
+ FX16_CONST(0.5219752929371544), FX16_CONST(-0.8529606049303636),
+ FX16_CONST(0.5206662541403672), FX16_CONST(-0.8537603011381114),
+ FX16_CONST(0.5193559901655898), FX16_CONST(-0.8545579883654004),
+ FX16_CONST(0.5180445040959994), FX16_CONST(-0.8553536647351959),
+ FX16_CONST(0.5167317990176498), FX16_CONST(-0.8561473283751945),
+ FX16_CONST(0.5154178780194631), FX16_CONST(-0.8569389774178287),
+ FX16_CONST(0.5141027441932218), FX16_CONST(-0.857728610000272),
+ FX16_CONST(0.512786400633563), FX16_CONST(-0.8585162242644429),
+ FX16_CONST(0.5114688504379705), FX16_CONST(-0.8593018183570084),
+ FX16_CONST(0.5101500967067668), FX16_CONST(-0.8600853904293901),
+ FX16_CONST(0.5088301425431073), FX16_CONST(-0.8608669386377672),
+ FX16_CONST(0.507508991052971), FX16_CONST(-0.8616464611430813),
+ FX16_CONST(0.5061866453451552), FX16_CONST(-0.8624239561110405),
+ FX16_CONST(0.5048631085312677), FX16_CONST(-0.863199421712124),
+ FX16_CONST(0.5035383837257176), FX16_CONST(-0.8639728561215867),
+ FX16_CONST(0.5022124740457107), FX16_CONST(-0.8647442575194624),
+ FX16_CONST(0.5008853826112409), FX16_CONST(-0.865513624090569),
+ FX16_CONST(0.4995571125450819), FX16_CONST(-0.866280954024513),
+ FX16_CONST(0.49822766697278176), FX16_CONST(-0.8670462455156926),
+ FX16_CONST(0.4968970490226547), FX16_CONST(-0.8678094967633032),
+ FX16_CONST(0.49556526182577254), FX16_CONST(-0.8685707059713409),
+ FX16_CONST(0.49423230851596), FX16_CONST(-0.8693298713486066),
+ FX16_CONST(0.49289819222978415), FX16_CONST(-0.8700869911087113),
+ FX16_CONST(0.4915629161065499), FX16_CONST(-0.8708420634700789),
+ FX16_CONST(0.4902264832882914), FX16_CONST(-0.8715950866559509),
+ FX16_CONST(0.4888888969197632), FX16_CONST(-0.8723460588943914),
+ FX16_CONST(0.4875501601484359), FX16_CONST(-0.8730949784182901),
+ FX16_CONST(0.4862102761244866), FX16_CONST(-0.8738418434653668),
+ FX16_CONST(0.4848692480007911), FX16_CONST(-0.8745866522781761),
+ FX16_CONST(0.48352707893291863), FX16_CONST(-0.8753294031041109),
+ FX16_CONST(0.4821837720791229), FX16_CONST(-0.8760700941954065),
+ FX16_CONST(0.48083933060033396), FX16_CONST(-0.8768087238091457),
+ FX16_CONST(0.4794937576601533), FX16_CONST(-0.8775452902072611),
+ FX16_CONST(0.4781470564248432), FX16_CONST(-0.8782797916565415),
+ FX16_CONST(0.4767992300633221), FX16_CONST(-0.8790122264286335),
+ FX16_CONST(0.4754502817471561), FX16_CONST(-0.8797425928000473),
+ FX16_CONST(0.4741002146505501), FX16_CONST(-0.8804708890521608),
+ FX16_CONST(0.47274903195034274), FX16_CONST(-0.8811971134712221),
+ FX16_CONST(0.4713967368259978), FX16_CONST(-0.8819212643483549),
+ FX16_CONST(0.4700433324595957), FX16_CONST(-0.8826433399795628),
+ FX16_CONST(0.46868882203582785), FX16_CONST(-0.8833633386657317),
+ FX16_CONST(0.4673332087419886), FX16_CONST(-0.8840812587126349),
+ FX16_CONST(0.4659764957679662), FX16_CONST(-0.8847970984309378),
+ FX16_CONST(0.4646186863062381), FX16_CONST(-0.8855108561361998),
+ FX16_CONST(0.4632597835518603), FX16_CONST(-0.8862225301488805),
+ FX16_CONST(0.46189979070246273), FX16_CONST(-0.8869321187943422),
+ FX16_CONST(0.4605387109582402), FX16_CONST(-0.8876396204028538),
+ FX16_CONST(0.4591765475219442), FX16_CONST(-0.8883450333095962),
+ FX16_CONST(0.4578133035988772), FX16_CONST(-0.8890483558546646),
+ FX16_CONST(0.45644898239688414), FX16_CONST(-0.8897495863830727),
+ FX16_CONST(0.4550835871263439), FX16_CONST(-0.8904487232447579),
+ FX16_CONST(0.45371712100016376), FX16_CONST(-0.8911457647945833),
+ FX16_CONST(0.45234958723377106), FX16_CONST(-0.8918407093923426),
+ FX16_CONST(0.45098098904510386), FX16_CONST(-0.8925335554027646),
+ FX16_CONST(0.4496113296546069), FX16_CONST(-0.8932243011955152),
+ FX16_CONST(0.44824061228522005), FX16_CONST(-0.8939129451452031),
+ FX16_CONST(0.44686884016237416), FX16_CONST(-0.8945994856313827),
+ FX16_CONST(0.44549601651398196), FX16_CONST(-0.8952839210385574),
+ FX16_CONST(0.4441221445704293), FX16_CONST(-0.8959662497561851),
+ FX16_CONST(0.44274722756456997), FX16_CONST(-0.8966464701786803),
+ FX16_CONST(0.4413712687317169), FX16_CONST(-0.8973245807054182),
+ FX16_CONST(0.4399942713096333), FX16_CONST(-0.8980005797407398),
+ FX16_CONST(0.43861623853852755), FX16_CONST(-0.8986744656939539),
+ FX16_CONST(0.43723717366104425), FX16_CONST(-0.8993462369793415),
+ FX16_CONST(0.43585707992225553), FX16_CONST(-0.9000158920161602),
+ FX16_CONST(0.434475960569656), FX16_CONST(-0.9006834292286467),
+ FX16_CONST(0.43309381885315207), FX16_CONST(-0.9013488470460219),
+ FX16_CONST(0.43171065802505726), FX16_CONST(-0.9020121439024932),
+ FX16_CONST(0.4303264813400829), FX16_CONST(-0.9026733182372587),
+ FX16_CONST(0.4289412920553296), FX16_CONST(-0.9033323684945118),
+ FX16_CONST(0.42755509343028203), FX16_CONST(-0.9039892931234433),
+ FX16_CONST(0.42616788872679984), FX16_CONST(-0.9046440905782461),
+ FX16_CONST(0.42477968120910886), FX16_CONST(-0.9052967593181187),
+ FX16_CONST(0.42339047414379594), FX16_CONST(-0.9059472978072685),
+ FX16_CONST(0.42200027079979985), FX16_CONST(-0.9065957045149153),
+ FX16_CONST(0.42060907444840256), FX16_CONST(-0.9072419779152958),
+ FX16_CONST(0.41921688836322424), FX16_CONST(-0.907886116487666),
+ FX16_CONST(0.41782371582021244), FX16_CONST(-0.9085281187163061),
+ FX16_CONST(0.41642956009763715), FX16_CONST(-0.9091679830905224),
+ FX16_CONST(0.41503442447608185), FX16_CONST(-0.9098057081046521),
+ FX16_CONST(0.41363831223843467), FX16_CONST(-0.9104412922580671),
+ FX16_CONST(0.41224122666988283), FX16_CONST(-0.9110747340551764),
+ FX16_CONST(0.41084317105790413), FX16_CONST(-0.9117060320054298),
+ FX16_CONST(0.4094441486922577), FX16_CONST(-0.9123351846233227),
+ FX16_CONST(0.4080441628649786), FX16_CONST(-0.9129621904283982),
+ FX16_CONST(0.4066432168703692), FX16_CONST(-0.9135870479452507),
+ FX16_CONST(0.4052413140049899), FX16_CONST(-0.9142097557035307),
+ FX16_CONST(0.4038384575676544), FX16_CONST(-0.914830312237946),
+ FX16_CONST(0.4024346508594186), FX16_CONST(-0.9154487160882677),
+ FX16_CONST(0.4010298971835756), FX16_CONST(-0.9160649657993317),
+ FX16_CONST(0.39962419984564707), FX16_CONST(-0.9166790599210426),
+ FX16_CONST(0.39821756215337367), FX16_CONST(-0.9172909970083779),
+ FX16_CONST(0.39680998741671025), FX16_CONST(-0.9179007756213905),
+ FX16_CONST(0.3954014789478165), FX16_CONST(-0.9185083943252121),
+ FX16_CONST(0.39399204006104815), FX16_CONST(-0.9191138516900578),
+ FX16_CONST(0.3925816740729514), FX16_CONST(-0.9197171462912274),
+ FX16_CONST(0.39117038430225404), FX16_CONST(-0.9203182767091105),
+ FX16_CONST(0.38975817406985647), FX16_CONST(-0.9209172415291894),
+ FX16_CONST(0.3883450466988266), FX16_CONST(-0.9215140393420418),
+ FX16_CONST(0.38693100551438875), FX16_CONST(-0.9221086687433451),
+ FX16_CONST(0.38551605384391885), FX16_CONST(-0.9227011283338786),
+ FX16_CONST(0.3841001950169353), FX16_CONST(-0.9232914167195275),
+ FX16_CONST(0.3826834323650899), FX16_CONST(-0.9238795325112867),
+ FX16_CONST(0.3812657692221623), FX16_CONST(-0.9244654743252626),
+ FX16_CONST(0.3798472089240514), FX16_CONST(-0.9250492407826775),
+ FX16_CONST(0.37842775480876567), FX16_CONST(-0.9256308305098727),
+ FX16_CONST(0.37700741021641815), FX16_CONST(-0.9262102421383114),
+ FX16_CONST(0.3755861784892174), FX16_CONST(-0.9267874743045817),
+ FX16_CONST(0.37416406297145804), FX16_CONST(-0.9273625256504011),
+ FX16_CONST(0.3727410670095161), FX16_CONST(-0.9279353948226178),
+ FX16_CONST(0.3713171939518377), FX16_CONST(-0.9285060804732155),
+ FX16_CONST(0.3698924471489341), FX16_CONST(-0.9290745812593159),
+ FX16_CONST(0.3684668299533726), FX16_CONST(-0.9296408958431812),
+ FX16_CONST(0.3670403457197673), FX16_CONST(-0.9302050228922191),
+ FX16_CONST(0.3656129978047738), FX16_CONST(-0.9307669610789837),
+ FX16_CONST(0.3641847895670801), FX16_CONST(-0.9313267090811803),
+ FX16_CONST(0.3627557243673973), FX16_CONST(-0.931884265581668),
+ FX16_CONST(0.3613258055684542), FX16_CONST(-0.9324396292684625),
+ FX16_CONST(0.35989503653498833), FX16_CONST(-0.9329927988347388),
+ FX16_CONST(0.3584634206337366), FX16_CONST(-0.9335437729788362),
+ FX16_CONST(0.3570309612334303), FX16_CONST(-0.9340925504042588),
+ FX16_CONST(0.355597661704784), FX16_CONST(-0.9346391298196807),
+ FX16_CONST(0.3541635254204904), FX16_CONST(-0.9351835099389476),
+ FX16_CONST(0.35272855575521095), FX16_CONST(-0.9357256894810803),
+ FX16_CONST(0.3512927560855672), FX16_CONST(-0.9362656671702783),
+ FX16_CONST(0.34985612979013486), FX16_CONST(-0.9368034417359217),
+ FX16_CONST(0.3484186802494348), FX16_CONST(-0.9373390119125748),
+ FX16_CONST(0.34698041084592374), FX16_CONST(-0.9378723764399898),
+ FX16_CONST(0.345541324963989), FX16_CONST(-0.9384035340631082),
+ FX16_CONST(0.34410142598993904), FX16_CONST(-0.9389324835320645),
+ FX16_CONST(0.34266071731199443), FX16_CONST(-0.9394592236021899),
+ FX16_CONST(0.3412192023202827), FX16_CONST(-0.9399837530340138),
+ FX16_CONST(0.339776884406827), FX16_CONST(-0.9405060705932683),
+ FX16_CONST(0.3383337669655412), FX16_CONST(-0.9410261750508893),
+ FX16_CONST(0.33688985339222033), FX16_CONST(-0.9415440651830207),
+ FX16_CONST(0.3354451470845317), FX16_CONST(-0.9420597397710173),
+ FX16_CONST(0.3339996514420094), FX16_CONST(-0.9425731976014469),
+ FX16_CONST(0.33255336986604445), FX16_CONST(-0.9430844374660934),
+ FX16_CONST(0.3311063057598765), FX16_CONST(-0.9435934581619604),
+ FX16_CONST(0.32965846252858744), FX16_CONST(-0.9441002584912727),
+ FX16_CONST(0.3282098435790927), FX16_CONST(-0.9446048372614801),
+ FX16_CONST(0.32676045232013184), FX16_CONST(-0.9451071932852606),
+ FX16_CONST(0.32531029216226326), FX16_CONST(-0.9456073253805212),
+ FX16_CONST(0.323859366517853), FX16_CONST(-0.9461052323704033),
+ FX16_CONST(0.32240767880106985), FX16_CONST(-0.9466009130832835),
+ FX16_CONST(0.3209552324278755), FX16_CONST(-0.9470943663527771),
+ FX16_CONST(0.3195020308160158), FX16_CONST(-0.9475855910177411),
+ FX16_CONST(0.3180480773850149), FX16_CONST(-0.9480745859222762),
+ FX16_CONST(0.31659337555616607), FX16_CONST(-0.9485613499157303),
+ FX16_CONST(0.3151379287525225), FX16_CONST(-0.9490458818527006),
+ FX16_CONST(0.3136817403988914), FX16_CONST(-0.9495281805930367),
+ FX16_CONST(0.3122248139218251), FX16_CONST(-0.950008245001843),
+ FX16_CONST(0.31076715274961153), FX16_CONST(-0.9504860739494817),
+ FX16_CONST(0.309308760312269), FX16_CONST(-0.950961666311575),
+ FX16_CONST(0.30784964004153503), FX16_CONST(-0.9514350209690083),
+ FX16_CONST(0.3063897953708609), FX16_CONST(-0.9519061368079323),
+ FX16_CONST(0.30492922973540265), FX16_CONST(-0.9523750127197658),
+ FX16_CONST(0.3034679465720114), FX16_CONST(-0.9528416476011986),
+ FX16_CONST(0.30200594931922803), FX16_CONST(-0.9533060403541939),
+ FX16_CONST(0.3005432414172737), FX16_CONST(-0.9537681898859902),
+ FX16_CONST(0.29907982630804053), FX16_CONST(-0.9542280951091056),
+ FX16_CONST(0.29761570743508614), FX16_CONST(-0.9546857549413383),
+ FX16_CONST(0.296150888243624), FX16_CONST(-0.9551411683057707),
+ FX16_CONST(0.2946853721805144), FX16_CONST(-0.9555943341307711),
+ FX16_CONST(0.29321916269425896), FX16_CONST(-0.9560452513499963),
+ FX16_CONST(0.29175226323498943), FX16_CONST(-0.956493918902395),
+ FX16_CONST(0.2902846772544624), FX16_CONST(-0.9569403357322088),
+ FX16_CONST(0.28881640820604976), FX16_CONST(-0.9573845007889759),
+ FX16_CONST(0.2873474595447296), FX16_CONST(-0.9578264130275329),
+ FX16_CONST(0.28587783472708056), FX16_CONST(-0.9582660714080177),
+ FX16_CONST(0.2844075372112721), FX16_CONST(-0.9587034748958715),
+ FX16_CONST(0.28293657045705545), FX16_CONST(-0.9591386224618419),
+ FX16_CONST(0.2814649379257579), FX16_CONST(-0.9595715130819845),
+ FX16_CONST(0.27999264308027344), FX16_CONST(-0.9600021457376658),
+ FX16_CONST(0.27851968938505317), FX16_CONST(-0.9604305194155658),
+ FX16_CONST(0.27704608030610023), FX16_CONST(-0.9608566331076795),
+ FX16_CONST(0.2755718193109583), FX16_CONST(-0.9612804858113206),
+ FX16_CONST(0.2740969098687064), FX16_CONST(-0.9617020765291225),
+ FX16_CONST(0.27262135544994925), FX16_CONST(-0.9621214042690415),
+ FX16_CONST(0.2711451595268081), FX16_CONST(-0.9625384680443592),
+ FX16_CONST(0.2696683255729151), FX16_CONST(-0.9629532668736839),
+ FX16_CONST(0.2681908570634034), FX16_CONST(-0.9633657997809539),
+ FX16_CONST(0.2667127574748985), FX16_CONST(-0.9637760657954398),
+ FX16_CONST(0.26523403028551173), FX16_CONST(-0.9641840639517458),
+ FX16_CONST(0.26375467897483157), FX16_CONST(-0.9645897932898126),
+ FX16_CONST(0.2622747070239137), FX16_CONST(-0.9649932528549203),
+ FX16_CONST(0.26079411791527585), FX16_CONST(-0.9653944416976893),
+ FX16_CONST(0.2593129151328864), FX16_CONST(-0.9657933588740836),
+ FX16_CONST(0.257831102162159), FX16_CONST(-0.9661900034454125),
+ FX16_CONST(0.2563486824899432), FX16_CONST(-0.966584374478333),
+ FX16_CONST(0.2548656596045147), FX16_CONST(-0.9669764710448521),
+ FX16_CONST(0.2533820369955701), FX16_CONST(-0.9673662922223285),
+ FX16_CONST(0.2518978181542172), FX16_CONST(-0.9677538370934754),
+ FX16_CONST(0.25041300657296534), FX16_CONST(-0.9681391047463623),
+ FX16_CONST(0.2489276057457201), FX16_CONST(-0.9685220942744174),
+ FX16_CONST(0.2474416191677735), FX16_CONST(-0.9689028047764289),
+ FX16_CONST(0.24595505033579465), FX16_CONST(-0.9692812353565484),
+ FX16_CONST(0.24446790274782448), FX16_CONST(-0.9696573851242923),
+ FX16_CONST(0.24298017990326407), FX16_CONST(-0.970031253194544),
+ FX16_CONST(0.24149188530286936), FX16_CONST(-0.9704028386875555),
+ FX16_CONST(0.24000302244874178), FX16_CONST(-0.9707721407289502),
+ FX16_CONST(0.23851359484431855), FX16_CONST(-0.9711391584497251),
+ FX16_CONST(0.23702360599436717), FX16_CONST(-0.9715038909862518),
+ FX16_CONST(0.23553305940497574), FX16_CONST(-0.9718663374802793),
+ FX16_CONST(0.2340419585835435), FX16_CONST(-0.9722264970789363),
+ FX16_CONST(0.23255030703877516), FX16_CONST(-0.9725843689347322),
+ FX16_CONST(0.23105810828067133), FX16_CONST(-0.9729399522055601),
+ FX16_CONST(0.22956536582051892), FX16_CONST(-0.9732932460546982),
+ FX16_CONST(0.22807208317088606), FX16_CONST(-0.9736442496508119),
+ FX16_CONST(0.22657826384561017), FX16_CONST(-0.9739929621679558),
+ FX16_CONST(0.22508391135979283), FX16_CONST(-0.9743393827855759),
+ FX16_CONST(0.2235890292297903), FX16_CONST(-0.9746835106885107),
+ FX16_CONST(0.22209362097320365), FX16_CONST(-0.9750253450669941),
+ FX16_CONST(0.2205976901088735), FX16_CONST(-0.975364885116657),
+ FX16_CONST(0.21910124015687005), FX16_CONST(-0.9757021300385285),
+ FX16_CONST(0.21760427463848372), FX16_CONST(-0.976037079039039),
+ FX16_CONST(0.21610679707621944), FX16_CONST(-0.9763697313300211),
+ FX16_CONST(0.21460881099378698), FX16_CONST(-0.9767000861287117),
+ FX16_CONST(0.21311031991609142), FX16_CONST(-0.9770281426577544),
+ FX16_CONST(0.2116113273692279), FX16_CONST(-0.9773539001452),
+ FX16_CONST(0.2101118368804698), FX16_CONST(-0.9776773578245099),
+ FX16_CONST(0.2086118519782635), FX16_CONST(-0.9779985149345571),
+ FX16_CONST(0.20711137619221884), FX16_CONST(-0.9783173707196275),
+ FX16_CONST(0.20561041305309938), FX16_CONST(-0.9786339244294231),
+ FX16_CONST(0.20410896609281684), FX16_CONST(-0.9789481753190622),
+ FX16_CONST(0.20260703884442138), FX16_CONST(-0.979260122649082),
+ FX16_CONST(0.201104634842092), FX16_CONST(-0.9795697656854405),
+ FX16_CONST(0.19960175762113092), FX16_CONST(-0.9798771036995176),
+ FX16_CONST(0.1980984107179538), FX16_CONST(-0.9801821359681173),
+ FX16_CONST(0.19659459767008028), FX16_CONST(-0.9804848617734694),
+ FX16_CONST(0.1950903220161286), FX16_CONST(-0.9807852804032304),
+ FX16_CONST(0.1935855872958038), FX16_CONST(-0.9810833911504866),
+ FX16_CONST(0.19208039704989247), FX16_CONST(-0.9813791933137546),
+ FX16_CONST(0.19057475482025307), FX16_CONST(-0.9816726861969831),
+ FX16_CONST(0.18906866414980636), FX16_CONST(-0.9819638691095552),
+ FX16_CONST(0.18756212858252957), FX16_CONST(-0.9822527413662894),
+ FX16_CONST(0.1860551516634469), FX16_CONST(-0.9825393022874412),
+ FX16_CONST(0.1845477369386197), FX16_CONST(-0.9828235511987052),
+ FX16_CONST(0.1830398879551409), FX16_CONST(-0.9831054874312163),
+ FX16_CONST(0.18153160826112522), FX16_CONST(-0.9833851103215512),
+ FX16_CONST(0.18002290140569957), FX16_CONST(-0.9836624192117303),
+ FX16_CONST(0.17851377093899742), FX16_CONST(-0.9839374134492189),
+ FX16_CONST(0.17700422041214894), FX16_CONST(-0.984210092386929),
+ FX16_CONST(0.17549425337727145), FX16_CONST(-0.9844804553832209),
+ FX16_CONST(0.17398387338746413), FX16_CONST(-0.9847485018019042),
+ FX16_CONST(0.17247308399679612), FX16_CONST(-0.9850142310122398),
+ FX16_CONST(0.17096188876030122), FX16_CONST(-0.9852776423889412),
+ FX16_CONST(0.1694502912339682), FX16_CONST(-0.9855387353121761),
+ FX16_CONST(0.16793829497473128), FX16_CONST(-0.9857975091675674),
+ FX16_CONST(0.16642590354046405), FX16_CONST(-0.9860539633461954),
+ FX16_CONST(0.16491312048997014), FX16_CONST(-0.9863080972445986),
+ FX16_CONST(0.16339994938297328), FX16_CONST(-0.9865599102647754),
+ FX16_CONST(0.16188639378011174), FX16_CONST(-0.9868094018141855),
+ FX16_CONST(0.16037245724292845), FX16_CONST(-0.987056571305751),
+ FX16_CONST(0.15885814333386147), FX16_CONST(-0.9873014181578584),
+ FX16_CONST(0.15734345561623855), FX16_CONST(-0.9875439417943592),
+ FX16_CONST(0.15582839765426537), FX16_CONST(-0.9877841416445722),
+ FX16_CONST(0.15431297301302008), FX16_CONST(-0.9880220171432835),
+ FX16_CONST(0.15279718525844369), FX16_CONST(-0.9882575677307495),
+ FX16_CONST(0.1512810379573303), FX16_CONST(-0.9884907928526966),
+ FX16_CONST(0.14976453467732145), FX16_CONST(-0.9887216919603238),
+ FX16_CONST(0.14824767898689625), FX16_CONST(-0.988950264510303),
+ FX16_CONST(0.1467304744553618), FX16_CONST(-0.989176509964781),
+ FX16_CONST(0.14521292465284735), FX16_CONST(-0.9894004277913804),
+ FX16_CONST(0.14369503315029464), FX16_CONST(-0.9896220174632008),
+ FX16_CONST(0.1421768035194481), FX16_CONST(-0.9898412784588205),
+ FX16_CONST(0.14065823933284954), FX16_CONST(-0.990058210262297),
+ FX16_CONST(0.13913934416382634), FX16_CONST(-0.9902728123631691),
+ FX16_CONST(0.13762012158648604), FX16_CONST(-0.9904850842564571),
+ FX16_CONST(0.13610057517570648), FX16_CONST(-0.9906950254426646),
+ FX16_CONST(0.13458070850712628), FX16_CONST(-0.99090263542778),
+ FX16_CONST(0.133060525157139), FX16_CONST(-0.9911079137232769),
+ FX16_CONST(0.13154002870288334), FX16_CONST(-0.9913108598461154),
+ FX16_CONST(0.13001922272223343), FX16_CONST(-0.9915114733187439),
+ FX16_CONST(0.12849811079379309), FX16_CONST(-0.9917097536690995),
+ FX16_CONST(0.12697669649688606), FX16_CONST(-0.9919057004306093),
+ FX16_CONST(0.12545498341154626), FX16_CONST(-0.9920993131421918),
+ FX16_CONST(0.12393297511851248), FX16_CONST(-0.9922905913482573),
+ FX16_CONST(0.12241067519921635), FX16_CONST(-0.99247953459871),
+ FX16_CONST(0.12088808723577706), FX16_CONST(-0.992666142448948),
+ FX16_CONST(0.11936521481099163), FX16_CONST(-0.9928504144598651),
+ FX16_CONST(0.11784206150832509), FX16_CONST(-0.9930323501978514),
+ FX16_CONST(0.11631863091190471), FX16_CONST(-0.9932119492347945),
+ FX16_CONST(0.1147949266065103), FX16_CONST(-0.9933892111480807),
+ FX16_CONST(0.11327095217756442), FX16_CONST(-0.9935641355205953),
+ FX16_CONST(0.1117467112111265), FX16_CONST(-0.9937367219407246),
+ FX16_CONST(0.11022220729388324), FX16_CONST(-0.9939069700023561),
+ FX16_CONST(0.10869744401313874), FX16_CONST(-0.9940748793048794),
+ FX16_CONST(0.10717242495680916), FX16_CONST(-0.9942404494531879),
+ FX16_CONST(0.10564715371341075), FX16_CONST(-0.9944036800576791),
+ FX16_CONST(0.10412163387205457), FX16_CONST(-0.9945645707342554),
+ FX16_CONST(0.10259586902243656), FX16_CONST(-0.9947231211043257),
+ FX16_CONST(0.10106986275482793), FX16_CONST(-0.9948793307948056),
+ FX16_CONST(0.09954361866006928), FX16_CONST(-0.9950331994381186),
+ FX16_CONST(0.09801714032956083), FX16_CONST(-0.9951847266721968),
+ FX16_CONST(0.09649043135525266), FX16_CONST(-0.9953339121404823),
+ FX16_CONST(0.09496349532963891), FX16_CONST(-0.9954807554919269),
+ FX16_CONST(0.09343633584574797), FX16_CONST(-0.9956252563809943),
+ FX16_CONST(0.09190895649713275), FX16_CONST(-0.9957674144676598),
+ FX16_CONST(0.09038136087786529), FX16_CONST(-0.9959072294174117),
+ FX16_CONST(0.08885355258252475), FX16_CONST(-0.996044700901252),
+ FX16_CONST(0.08732553520619206), FX16_CONST(-0.996179828595697),
+ FX16_CONST(0.08579731234444016), FX16_CONST(-0.996312612182778),
+ FX16_CONST(0.08426888759332418), FX16_CONST(-0.9964430513500426),
+ FX16_CONST(0.08274026454937564), FX16_CONST(-0.9965711457905548),
+ FX16_CONST(0.08121144680959266), FX16_CONST(-0.9966968952028961),
+ FX16_CONST(0.0796824379714302), FX16_CONST(-0.9968202992911657),
+ FX16_CONST(0.07815324163279415), FX16_CONST(-0.9969413577649822),
+ FX16_CONST(0.07662386139203169), FX16_CONST(-0.997060070339483),
+ FX16_CONST(0.07509430084792135), FX16_CONST(-0.9971764367353261),
+ FX16_CONST(0.07356456359966773), FX16_CONST(-0.9972904566786902),
+ FX16_CONST(0.07203465324688947), FX16_CONST(-0.9974021299012753),
+ FX16_CONST(0.07050457338961386), FX16_CONST(-0.9975114561403035),
+ FX16_CONST(0.06897432762826702), FX16_CONST(-0.9976184351385196),
+ FX16_CONST(0.06744391956366418), FX16_CONST(-0.9977230666441916),
+ FX16_CONST(0.06591335279700376), FX16_CONST(-0.9978253504111116),
+ FX16_CONST(0.0643826309298577), FX16_CONST(-0.997925286198596),
+ FX16_CONST(0.06285175756416149), FX16_CONST(-0.9980228737714862),
+ FX16_CONST(0.06132073630220849), FX16_CONST(-0.9981181129001492),
+ FX16_CONST(0.05978957074664007), FX16_CONST(-0.9982110033604782),
+ FX16_CONST(0.058258264500435794), FX16_CONST(-0.9983015449338929),
+ FX16_CONST(0.05672682116690807), FX16_CONST(-0.9983897374073402),
+ FX16_CONST(0.055195244349690094), FX16_CONST(-0.9984755805732948),
+ FX16_CONST(0.05366353765273052), FX16_CONST(-0.9985590742297593),
+ FX16_CONST(0.052131704680283594), FX16_CONST(-0.9986402181802652),
+ FX16_CONST(0.05059974903689939), FX16_CONST(-0.9987190122338729),
+ FX16_CONST(0.049067674327417966), FX16_CONST(-0.9987954562051724),
+ FX16_CONST(0.04753548415695954), FX16_CONST(-0.9988695499142836),
+ FX16_CONST(0.046003182130914706), FX16_CONST(-0.9989412931868569),
+ FX16_CONST(0.044470771854938584), FX16_CONST(-0.9990106858540734),
+ FX16_CONST(0.04293825693494102), FX16_CONST(-0.9990777277526454),
+ FX16_CONST(0.041405640977076774), FX16_CONST(-0.9991424187248169),
+ FX16_CONST(0.03987292758774013), FX16_CONST(-0.9992047586183639),
+ FX16_CONST(0.038340120373552854), FX16_CONST(-0.9992647472865944),
+ FX16_CONST(0.03680722294135883), FX16_CONST(-0.9993223845883495),
+ FX16_CONST(0.03527423889821423), FX16_CONST(-0.9993776703880028),
+ FX16_CONST(0.033741171851377705), FX16_CONST(-0.9994306045554617),
+ FX16_CONST(0.032208025408304544), FX16_CONST(-0.999481186966167),
+ FX16_CONST(0.030674803176636865), FX16_CONST(-0.9995294175010931),
+ FX16_CONST(0.029141508764193802), FX16_CONST(-0.9995752960467492),
+ FX16_CONST(0.02760814577896566), FX16_CONST(-0.9996188224951786),
+ FX16_CONST(0.0260747178291041), FX16_CONST(-0.9996599967439592),
+ FX16_CONST(0.024541228522912326), FX16_CONST(-0.9996988186962042),
+ FX16_CONST(0.023007681468839695), FX16_CONST(-0.9997352882605617),
+ FX16_CONST(0.021474080275469667), FX16_CONST(-0.9997694053512153),
+ FX16_CONST(0.019940428551514438), FX16_CONST(-0.9998011698878843),
+ FX16_CONST(0.0184067299058051), FX16_CONST(-0.9998305817958234),
+ FX16_CONST(0.016872987947281835), FX16_CONST(-0.9998576410058239),
+ FX16_CONST(0.01533920628498806), FX16_CONST(-0.9998823474542126),
+ FX16_CONST(0.013805388528060632), FX16_CONST(-0.9999047010828528),
+ FX16_CONST(0.012271538285720007), FX16_CONST(-0.9999247018391445),
+ FX16_CONST(0.01073765916726441), FX16_CONST(-0.9999423496760239),
+ FX16_CONST(0.00920375478206002), FX16_CONST(-0.9999576445519639),
+ FX16_CONST(0.007669828739531138), FX16_CONST(-0.9999705864309741),
+ FX16_CONST(0.006135884649154799), FX16_CONST(-0.9999811752826011),
+ FX16_CONST(0.004601926120448733), FX16_CONST(-0.9999894110819284),
+ FX16_CONST(0.003067956762965977), FX16_CONST(-0.9999952938095762),
+ FX16_CONST(0.0015339801862850493), FX16_CONST(-0.9999988234517019),
+ FX16_CONST(1.2246467991473532e-16), FX16_CONST(-1.0),
+ FX16_CONST(-0.0015339801862848043), FX16_CONST(-0.9999988234517019),
+ FX16_CONST(-0.0030679567629657324), FX16_CONST(-0.9999952938095762),
+ FX16_CONST(-0.004601926120448488), FX16_CONST(-0.9999894110819284),
+ FX16_CONST(-0.006135884649154554), FX16_CONST(-0.9999811752826011),
+ FX16_CONST(-0.007669828739530893), FX16_CONST(-0.9999705864309741),
+ FX16_CONST(-0.009203754782059776), FX16_CONST(-0.9999576445519639),
+ FX16_CONST(-0.010737659167264166), FX16_CONST(-0.9999423496760239),
+ FX16_CONST(-0.012271538285719762), FX16_CONST(-0.9999247018391445),
+ FX16_CONST(-0.013805388528060387), FX16_CONST(-0.9999047010828529),
+ FX16_CONST(-0.015339206284987816), FX16_CONST(-0.9998823474542126),
+ FX16_CONST(-0.01687298794728159), FX16_CONST(-0.9998576410058239),
+ FX16_CONST(-0.01840672990580486), FX16_CONST(-0.9998305817958234),
+ FX16_CONST(-0.01994042855151419), FX16_CONST(-0.9998011698878843),
+ FX16_CONST(-0.02147408027546942), FX16_CONST(-0.9997694053512153),
+ FX16_CONST(-0.02300768146883945), FX16_CONST(-0.9997352882605617),
+ FX16_CONST(-0.02454122852291208), FX16_CONST(-0.9996988186962042),
+ FX16_CONST(-0.026074717829103856), FX16_CONST(-0.9996599967439592),
+ FX16_CONST(-0.027608145778965414), FX16_CONST(-0.9996188224951786),
+ FX16_CONST(-0.029141508764193556), FX16_CONST(-0.9995752960467492),
+ FX16_CONST(-0.03067480317663662), FX16_CONST(-0.9995294175010931),
+ FX16_CONST(-0.032208025408304294), FX16_CONST(-0.999481186966167),
+ FX16_CONST(-0.033741171851377455), FX16_CONST(-0.9994306045554617),
+ FX16_CONST(-0.03527423889821398), FX16_CONST(-0.9993776703880028),
+ FX16_CONST(-0.03680722294135858), FX16_CONST(-0.9993223845883495),
+ FX16_CONST(-0.03834012037355261), FX16_CONST(-0.9992647472865944),
+ FX16_CONST(-0.03987292758773989), FX16_CONST(-0.9992047586183639),
+ FX16_CONST(-0.04140564097707653), FX16_CONST(-0.9991424187248169),
+ FX16_CONST(-0.04293825693494078), FX16_CONST(-0.9990777277526454),
+ FX16_CONST(-0.044470771854938335), FX16_CONST(-0.9990106858540734),
+ FX16_CONST(-0.046003182130914456), FX16_CONST(-0.9989412931868569),
+ FX16_CONST(-0.047535484156959296), FX16_CONST(-0.9988695499142836),
+ FX16_CONST(-0.049067674327417724), FX16_CONST(-0.9987954562051724),
+ FX16_CONST(-0.05059974903689915), FX16_CONST(-0.9987190122338729),
+ FX16_CONST(-0.05213170468028335), FX16_CONST(-0.9986402181802653),
+ FX16_CONST(-0.05366353765273028), FX16_CONST(-0.9985590742297593),
+ FX16_CONST(-0.05519524434968985), FX16_CONST(-0.9984755805732948),
+ FX16_CONST(-0.05672682116690782), FX16_CONST(-0.9983897374073402),
+ FX16_CONST(-0.05825826450043555), FX16_CONST(-0.9983015449338929),
+ FX16_CONST(-0.05978957074663983), FX16_CONST(-0.9982110033604782),
+ FX16_CONST(-0.061320736302208245), FX16_CONST(-0.9981181129001492),
+ FX16_CONST(-0.06285175756416124), FX16_CONST(-0.9980228737714862),
+ FX16_CONST(-0.06438263092985745), FX16_CONST(-0.997925286198596),
+ FX16_CONST(-0.06591335279700353), FX16_CONST(-0.9978253504111116),
+ FX16_CONST(-0.06744391956366393), FX16_CONST(-0.9977230666441916),
+ FX16_CONST(-0.06897432762826677), FX16_CONST(-0.9976184351385196),
+ FX16_CONST(-0.0705045733896136), FX16_CONST(-0.9975114561403035),
+ FX16_CONST(-0.07203465324688924), FX16_CONST(-0.9974021299012753),
+ FX16_CONST(-0.0735645635996675), FX16_CONST(-0.9972904566786902),
+ FX16_CONST(-0.0750943008479211), FX16_CONST(-0.9971764367353262),
+ FX16_CONST(-0.07662386139203144), FX16_CONST(-0.997060070339483),
+ FX16_CONST(-0.0781532416327939), FX16_CONST(-0.9969413577649822),
+ FX16_CONST(-0.07968243797142995), FX16_CONST(-0.9968202992911658),
+ FX16_CONST(-0.08121144680959243), FX16_CONST(-0.9966968952028961),
+ FX16_CONST(-0.0827402645493754), FX16_CONST(-0.9965711457905548),
+ FX16_CONST(-0.08426888759332393), FX16_CONST(-0.9964430513500426),
+ FX16_CONST(-0.08579731234443992), FX16_CONST(-0.996312612182778),
+ FX16_CONST(-0.08732553520619181), FX16_CONST(-0.996179828595697),
+ FX16_CONST(-0.0888535525825245), FX16_CONST(-0.996044700901252),
+ FX16_CONST(-0.09038136087786505), FX16_CONST(-0.9959072294174117),
+ FX16_CONST(-0.09190895649713252), FX16_CONST(-0.9957674144676598),
+ FX16_CONST(-0.09343633584574773), FX16_CONST(-0.9956252563809943),
+ FX16_CONST(-0.09496349532963866), FX16_CONST(-0.9954807554919269),
+ FX16_CONST(-0.09649043135525241), FX16_CONST(-0.9953339121404823),
+ FX16_CONST(-0.09801714032956059), FX16_CONST(-0.9951847266721969),
+ FX16_CONST(-0.09954361866006904), FX16_CONST(-0.9950331994381186),
+ FX16_CONST(-0.10106986275482768), FX16_CONST(-0.9948793307948056),
+ FX16_CONST(-0.10259586902243631), FX16_CONST(-0.9947231211043257),
+ FX16_CONST(-0.10412163387205432), FX16_CONST(-0.9945645707342555),
+ FX16_CONST(-0.10564715371341052), FX16_CONST(-0.9944036800576791),
+ FX16_CONST(-0.10717242495680891), FX16_CONST(-0.9942404494531879),
+ FX16_CONST(-0.1086974440131385), FX16_CONST(-0.9940748793048795),
+ FX16_CONST(-0.110222207293883), FX16_CONST(-0.9939069700023561),
+ FX16_CONST(-0.11174671121112625), FX16_CONST(-0.9937367219407247),
+ FX16_CONST(-0.11327095217756417), FX16_CONST(-0.9935641355205953),
+ FX16_CONST(-0.11479492660651007), FX16_CONST(-0.9933892111480807),
+ FX16_CONST(-0.11631863091190447), FX16_CONST(-0.9932119492347946),
+ FX16_CONST(-0.11784206150832484), FX16_CONST(-0.9930323501978514),
+ FX16_CONST(-0.11936521481099138), FX16_CONST(-0.9928504144598651),
+ FX16_CONST(-0.12088808723577682), FX16_CONST(-0.992666142448948),
+ FX16_CONST(-0.1224106751992161), FX16_CONST(-0.99247953459871),
+ FX16_CONST(-0.12393297511851223), FX16_CONST(-0.9922905913482574),
+ FX16_CONST(-0.125454983411546), FX16_CONST(-0.9920993131421918),
+ FX16_CONST(-0.1269766964968858), FX16_CONST(-0.9919057004306093),
+ FX16_CONST(-0.12849811079379284), FX16_CONST(-0.9917097536690995),
+ FX16_CONST(-0.13001922272223318), FX16_CONST(-0.991511473318744),
+ FX16_CONST(-0.1315400287028831), FX16_CONST(-0.9913108598461154),
+ FX16_CONST(-0.13306052515713876), FX16_CONST(-0.9911079137232769),
+ FX16_CONST(-0.13458070850712606), FX16_CONST(-0.99090263542778),
+ FX16_CONST(-0.13610057517570623), FX16_CONST(-0.9906950254426646),
+ FX16_CONST(-0.1376201215864858), FX16_CONST(-0.9904850842564571),
+ FX16_CONST(-0.13913934416382612), FX16_CONST(-0.9902728123631691),
+ FX16_CONST(-0.1406582393328493), FX16_CONST(-0.9900582102622971),
+ FX16_CONST(-0.14217680351944784), FX16_CONST(-0.9898412784588205),
+ FX16_CONST(-0.1436950331502944), FX16_CONST(-0.9896220174632009),
+ FX16_CONST(-0.14521292465284713), FX16_CONST(-0.9894004277913804),
+ FX16_CONST(-0.14673047445536158), FX16_CONST(-0.989176509964781),
+ FX16_CONST(-0.14824767898689603), FX16_CONST(-0.988950264510303),
+ FX16_CONST(-0.1497645346773212), FX16_CONST(-0.9887216919603238),
+ FX16_CONST(-0.15128103795733008), FX16_CONST(-0.9884907928526967),
+ FX16_CONST(-0.15279718525844344), FX16_CONST(-0.9882575677307495),
+ FX16_CONST(-0.15431297301301983), FX16_CONST(-0.9880220171432836),
+ FX16_CONST(-0.15582839765426512), FX16_CONST(-0.9877841416445722),
+ FX16_CONST(-0.1573434556162383), FX16_CONST(-0.9875439417943592),
+ FX16_CONST(-0.15885814333386122), FX16_CONST(-0.9873014181578584),
+ FX16_CONST(-0.1603724572429282), FX16_CONST(-0.987056571305751),
+ FX16_CONST(-0.1618863937801115), FX16_CONST(-0.9868094018141855),
+ FX16_CONST(-0.16339994938297306), FX16_CONST(-0.9865599102647755),
+ FX16_CONST(-0.1649131204899699), FX16_CONST(-0.9863080972445987),
+ FX16_CONST(-0.16642590354046383), FX16_CONST(-0.9860539633461954),
+ FX16_CONST(-0.16793829497473103), FX16_CONST(-0.9857975091675675),
+ FX16_CONST(-0.169450291233968), FX16_CONST(-0.9855387353121761),
+ FX16_CONST(-0.17096188876030097), FX16_CONST(-0.9852776423889413),
+ FX16_CONST(-0.17247308399679587), FX16_CONST(-0.9850142310122398),
+ FX16_CONST(-0.17398387338746388), FX16_CONST(-0.9847485018019042),
+ FX16_CONST(-0.1754942533772712), FX16_CONST(-0.9844804553832209),
+ FX16_CONST(-0.1770042204121487), FX16_CONST(-0.9842100923869291),
+ FX16_CONST(-0.17851377093899717), FX16_CONST(-0.9839374134492189),
+ FX16_CONST(-0.18002290140569935), FX16_CONST(-0.9836624192117303),
+ FX16_CONST(-0.18153160826112497), FX16_CONST(-0.9833851103215512),
+ FX16_CONST(-0.18303988795514065), FX16_CONST(-0.9831054874312164),
+ FX16_CONST(-0.18454773693861948), FX16_CONST(-0.9828235511987053),
+ FX16_CONST(-0.18605515166344666), FX16_CONST(-0.9825393022874412),
+ FX16_CONST(-0.18756212858252932), FX16_CONST(-0.9822527413662895),
+ FX16_CONST(-0.1890686641498061), FX16_CONST(-0.9819638691095552),
+ FX16_CONST(-0.19057475482025282), FX16_CONST(-0.9816726861969831),
+ FX16_CONST(-0.19208039704989222), FX16_CONST(-0.9813791933137547),
+ FX16_CONST(-0.19358558729580355), FX16_CONST(-0.9810833911504867),
+ FX16_CONST(-0.19509032201612836), FX16_CONST(-0.9807852804032304),
+ FX16_CONST(-0.19659459767008003), FX16_CONST(-0.9804848617734694),
+ FX16_CONST(-0.19809841071795356), FX16_CONST(-0.9801821359681174),
+ FX16_CONST(-0.19960175762113067), FX16_CONST(-0.9798771036995177),
+ FX16_CONST(-0.20110463484209176), FX16_CONST(-0.9795697656854405),
+ FX16_CONST(-0.20260703884442113), FX16_CONST(-0.979260122649082),
+ FX16_CONST(-0.20410896609281662), FX16_CONST(-0.9789481753190622),
+ FX16_CONST(-0.20561041305309916), FX16_CONST(-0.9786339244294232),
+ FX16_CONST(-0.2071113761922186), FX16_CONST(-0.9783173707196277),
+ FX16_CONST(-0.20861185197826326), FX16_CONST(-0.9779985149345571),
+ FX16_CONST(-0.21011183688046955), FX16_CONST(-0.97767735782451),
+ FX16_CONST(-0.21161132736922766), FX16_CONST(-0.9773539001452),
+ FX16_CONST(-0.2131103199160912), FX16_CONST(-0.9770281426577544),
+ FX16_CONST(-0.21460881099378673), FX16_CONST(-0.9767000861287118),
+ FX16_CONST(-0.21610679707621921), FX16_CONST(-0.9763697313300213),
+ FX16_CONST(-0.21760427463848347), FX16_CONST(-0.9760370790390391),
+ FX16_CONST(-0.2191012401568698), FX16_CONST(-0.9757021300385286),
+ FX16_CONST(-0.22059769010887326), FX16_CONST(-0.975364885116657),
+ FX16_CONST(-0.22209362097320343), FX16_CONST(-0.9750253450669941),
+ FX16_CONST(-0.22358902922979004), FX16_CONST(-0.9746835106885107),
+ FX16_CONST(-0.2250839113597926), FX16_CONST(-0.9743393827855759),
+ FX16_CONST(-0.22657826384560992), FX16_CONST(-0.973992962167956),
+ FX16_CONST(-0.22807208317088581), FX16_CONST(-0.9736442496508119),
+ FX16_CONST(-0.2295653658205187), FX16_CONST(-0.9732932460546982),
+ FX16_CONST(-0.23105810828067108), FX16_CONST(-0.9729399522055602),
+ FX16_CONST(-0.23255030703877494), FX16_CONST(-0.9725843689347323),
+ FX16_CONST(-0.23404195858354326), FX16_CONST(-0.9722264970789364),
+ FX16_CONST(-0.23553305940497551), FX16_CONST(-0.9718663374802794),
+ FX16_CONST(-0.23702360599436695), FX16_CONST(-0.9715038909862519),
+ FX16_CONST(-0.2385135948443183), FX16_CONST(-0.9711391584497252),
+ FX16_CONST(-0.24000302244874153), FX16_CONST(-0.9707721407289502),
+ FX16_CONST(-0.2414918853028691), FX16_CONST(-0.9704028386875555),
+ FX16_CONST(-0.24298017990326382), FX16_CONST(-0.970031253194544),
+ FX16_CONST(-0.24446790274782426), FX16_CONST(-0.9696573851242924),
+ FX16_CONST(-0.24595505033579443), FX16_CONST(-0.9692812353565485),
+ FX16_CONST(-0.24744161916777327), FX16_CONST(-0.9689028047764289),
+ FX16_CONST(-0.24892760574571987), FX16_CONST(-0.9685220942744174),
+ FX16_CONST(-0.2504130065729651), FX16_CONST(-0.9681391047463624),
+ FX16_CONST(-0.25189781815421697), FX16_CONST(-0.9677538370934755),
+ FX16_CONST(-0.2533820369955699), FX16_CONST(-0.9673662922223286),
+ FX16_CONST(-0.25486565960451446), FX16_CONST(-0.9669764710448522),
+ FX16_CONST(-0.2563486824899429), FX16_CONST(-0.9665843744783331),
+ FX16_CONST(-0.25783110216215877), FX16_CONST(-0.9661900034454126),
+ FX16_CONST(-0.2593129151328862), FX16_CONST(-0.9657933588740837),
+ FX16_CONST(-0.2607941179152756), FX16_CONST(-0.9653944416976894),
+ FX16_CONST(-0.2622747070239134), FX16_CONST(-0.9649932528549204),
+ FX16_CONST(-0.26375467897483135), FX16_CONST(-0.9645897932898128),
+ FX16_CONST(-0.2652340302855115), FX16_CONST(-0.9641840639517458),
+ FX16_CONST(-0.26671275747489825), FX16_CONST(-0.96377606579544),
+ FX16_CONST(-0.2681908570634032), FX16_CONST(-0.963365799780954),
+ FX16_CONST(-0.2696683255729148), FX16_CONST(-0.962953266873684),
+ FX16_CONST(-0.2711451595268079), FX16_CONST(-0.9625384680443592),
+ FX16_CONST(-0.27262135544994903), FX16_CONST(-0.9621214042690416),
+ FX16_CONST(-0.27409690986870616), FX16_CONST(-0.9617020765291227),
+ FX16_CONST(-0.2755718193109581), FX16_CONST(-0.9612804858113206),
+ FX16_CONST(-0.2770460803061), FX16_CONST(-0.9608566331076795),
+ FX16_CONST(-0.2785196893850529), FX16_CONST(-0.9604305194155659),
+ FX16_CONST(-0.2799926430802732), FX16_CONST(-0.960002145737666),
+ FX16_CONST(-0.28146493792575766), FX16_CONST(-0.9595715130819846),
+ FX16_CONST(-0.28293657045705517), FX16_CONST(-0.959138622461842),
+ FX16_CONST(-0.2844075372112718), FX16_CONST(-0.9587034748958716),
+ FX16_CONST(-0.28587783472708034), FX16_CONST(-0.9582660714080178),
+ FX16_CONST(-0.2873474595447294), FX16_CONST(-0.9578264130275329),
+ FX16_CONST(-0.28881640820604954), FX16_CONST(-0.9573845007889759),
+ FX16_CONST(-0.2902846772544621), FX16_CONST(-0.9569403357322089),
+ FX16_CONST(-0.2917522632349892), FX16_CONST(-0.9564939189023951),
+ FX16_CONST(-0.29321916269425874), FX16_CONST(-0.9560452513499964),
+ FX16_CONST(-0.29468537218051416), FX16_CONST(-0.9555943341307711),
+ FX16_CONST(-0.2961508882436238), FX16_CONST(-0.9551411683057708),
+ FX16_CONST(-0.2976157074350859), FX16_CONST(-0.9546857549413384),
+ FX16_CONST(-0.2990798263080403), FX16_CONST(-0.9542280951091057),
+ FX16_CONST(-0.30054324141727345), FX16_CONST(-0.9537681898859903),
+ FX16_CONST(-0.3020059493192278), FX16_CONST(-0.953306040354194),
+ FX16_CONST(-0.3034679465720112), FX16_CONST(-0.9528416476011987),
+ FX16_CONST(-0.30492922973540243), FX16_CONST(-0.9523750127197659),
+ FX16_CONST(-0.3063897953708607), FX16_CONST(-0.9519061368079323),
+ FX16_CONST(-0.3078496400415348), FX16_CONST(-0.9514350209690083),
+ FX16_CONST(-0.3093087603122688), FX16_CONST(-0.9509616663115751),
+ FX16_CONST(-0.3107671527496113), FX16_CONST(-0.9504860739494818),
+ FX16_CONST(-0.3122248139218249), FX16_CONST(-0.950008245001843),
+ FX16_CONST(-0.3136817403988912), FX16_CONST(-0.9495281805930368),
+ FX16_CONST(-0.3151379287525222), FX16_CONST(-0.9490458818527007),
+ FX16_CONST(-0.31659337555616585), FX16_CONST(-0.9485613499157303),
+ FX16_CONST(-0.31804807738501467), FX16_CONST(-0.9480745859222763),
+ FX16_CONST(-0.3195020308160156), FX16_CONST(-0.9475855910177412),
+ FX16_CONST(-0.32095523242787527), FX16_CONST(-0.9470943663527772),
+ FX16_CONST(-0.32240767880106963), FX16_CONST(-0.9466009130832836),
+ FX16_CONST(-0.3238593665178528), FX16_CONST(-0.9461052323704034),
+ FX16_CONST(-0.325310292162263), FX16_CONST(-0.9456073253805213),
+ FX16_CONST(-0.32676045232013157), FX16_CONST(-0.9451071932852606),
+ FX16_CONST(-0.3282098435790925), FX16_CONST(-0.9446048372614803),
+ FX16_CONST(-0.3296584625285872), FX16_CONST(-0.9441002584912728),
+ FX16_CONST(-0.33110630575987626), FX16_CONST(-0.9435934581619604),
+ FX16_CONST(-0.3325533698660442), FX16_CONST(-0.9430844374660935),
+ FX16_CONST(-0.3339996514420091), FX16_CONST(-0.942573197601447),
+ FX16_CONST(-0.3354451470845315), FX16_CONST(-0.9420597397710174),
+ FX16_CONST(-0.3368898533922201), FX16_CONST(-0.9415440651830208),
+ FX16_CONST(-0.3383337669655409), FX16_CONST(-0.9410261750508894),
+ FX16_CONST(-0.3397768844068268), FX16_CONST(-0.9405060705932684),
+ FX16_CONST(-0.34121920232028247), FX16_CONST(-0.9399837530340139),
+ FX16_CONST(-0.3426607173119942), FX16_CONST(-0.93945922360219),
+ FX16_CONST(-0.3441014259899388), FX16_CONST(-0.9389324835320646),
+ FX16_CONST(-0.34554132496398876), FX16_CONST(-0.9384035340631083),
+ FX16_CONST(-0.3469804108459235), FX16_CONST(-0.9378723764399899),
+ FX16_CONST(-0.34841868024943456), FX16_CONST(-0.937339011912575),
+ FX16_CONST(-0.34985612979013464), FX16_CONST(-0.9368034417359217),
+ FX16_CONST(-0.351292756085567), FX16_CONST(-0.9362656671702783),
+ FX16_CONST(-0.3527285557552107), FX16_CONST(-0.9357256894810804),
+ FX16_CONST(-0.3541635254204901), FX16_CONST(-0.9351835099389477),
+ FX16_CONST(-0.3555976617047838), FX16_CONST(-0.9346391298196808),
+ FX16_CONST(-0.3570309612334301), FX16_CONST(-0.9340925504042589),
+ FX16_CONST(-0.3584634206337364), FX16_CONST(-0.9335437729788363),
+ FX16_CONST(-0.3598950365349881), FX16_CONST(-0.932992798834739),
+ FX16_CONST(-0.36132580556845395), FX16_CONST(-0.9324396292684625),
+ FX16_CONST(-0.36275572436739706), FX16_CONST(-0.9318842655816681),
+ FX16_CONST(-0.3641847895670799), FX16_CONST(-0.9313267090811804),
+ FX16_CONST(-0.3656129978047736), FX16_CONST(-0.9307669610789838),
+ FX16_CONST(-0.36704034571976707), FX16_CONST(-0.9302050228922191),
+ FX16_CONST(-0.3684668299533724), FX16_CONST(-0.9296408958431812),
+ FX16_CONST(-0.3698924471489339), FX16_CONST(-0.9290745812593159),
+ FX16_CONST(-0.37131719395183743), FX16_CONST(-0.9285060804732156),
+ FX16_CONST(-0.37274106700951587), FX16_CONST(-0.9279353948226178),
+ FX16_CONST(-0.3741640629714578), FX16_CONST(-0.9273625256504011),
+ FX16_CONST(-0.37558617848921716), FX16_CONST(-0.9267874743045819),
+ FX16_CONST(-0.3770074102164179), FX16_CONST(-0.9262102421383115),
+ FX16_CONST(-0.3784277548087654), FX16_CONST(-0.9256308305098728),
+ FX16_CONST(-0.37984720892405116), FX16_CONST(-0.9250492407826776),
+ FX16_CONST(-0.3812657692221621), FX16_CONST(-0.9244654743252627),
+ FX16_CONST(-0.38268343236508967), FX16_CONST(-0.9238795325112868),
+ FX16_CONST(-0.3841001950169351), FX16_CONST(-0.9232914167195276),
+ FX16_CONST(-0.3855160538439186), FX16_CONST(-0.9227011283338786),
+ FX16_CONST(-0.3869310055143885), FX16_CONST(-0.9221086687433452),
+ FX16_CONST(-0.38834504669882636), FX16_CONST(-0.9215140393420419),
+ FX16_CONST(-0.38975817406985624), FX16_CONST(-0.9209172415291895),
+ FX16_CONST(-0.3911703843022538), FX16_CONST(-0.9203182767091106),
+ FX16_CONST(-0.3925816740729512), FX16_CONST(-0.9197171462912275),
+ FX16_CONST(-0.39399204006104793), FX16_CONST(-0.9191138516900578),
+ FX16_CONST(-0.3954014789478163), FX16_CONST(-0.9185083943252123),
+ FX16_CONST(-0.39680998741671003), FX16_CONST(-0.9179007756213906),
+ FX16_CONST(-0.39821756215337345), FX16_CONST(-0.917290997008378),
+ FX16_CONST(-0.39962419984564684), FX16_CONST(-0.9166790599210427),
+ FX16_CONST(-0.4010298971835754), FX16_CONST(-0.9160649657993318),
+ FX16_CONST(-0.4024346508594184), FX16_CONST(-0.9154487160882678),
+ FX16_CONST(-0.4038384575676542), FX16_CONST(-0.9148303122379461),
+ FX16_CONST(-0.4052413140049897), FX16_CONST(-0.9142097557035307),
+ FX16_CONST(-0.406643216870369), FX16_CONST(-0.9135870479452508),
+ FX16_CONST(-0.40804416286497835), FX16_CONST(-0.9129621904283983),
+ FX16_CONST(-0.4094441486922574), FX16_CONST(-0.9123351846233229),
+ FX16_CONST(-0.4108431710579039), FX16_CONST(-0.9117060320054299),
+ FX16_CONST(-0.4122412266698826), FX16_CONST(-0.9110747340551765),
+ FX16_CONST(-0.4136383122384344), FX16_CONST(-0.9104412922580672),
+ FX16_CONST(-0.41503442447608163), FX16_CONST(-0.9098057081046522),
+ FX16_CONST(-0.41642956009763693), FX16_CONST(-0.9091679830905225),
+ FX16_CONST(-0.4178237158202122), FX16_CONST(-0.9085281187163061),
+ FX16_CONST(-0.419216888363224), FX16_CONST(-0.9078861164876662),
+ FX16_CONST(-0.42060907444840234), FX16_CONST(-0.9072419779152959),
+ FX16_CONST(-0.4220002707997996), FX16_CONST(-0.9065957045149154),
+ FX16_CONST(-0.4233904741437957), FX16_CONST(-0.9059472978072686),
+ FX16_CONST(-0.42477968120910864), FX16_CONST(-0.9052967593181188),
+ FX16_CONST(-0.4261678887267996), FX16_CONST(-0.9046440905782462),
+ FX16_CONST(-0.4275550934302818), FX16_CONST(-0.9039892931234434),
+ FX16_CONST(-0.4289412920553294), FX16_CONST(-0.9033323684945119),
+ FX16_CONST(-0.43032648134008267), FX16_CONST(-0.9026733182372588),
+ FX16_CONST(-0.43171065802505704), FX16_CONST(-0.9020121439024933),
+ FX16_CONST(-0.43309381885315185), FX16_CONST(-0.901348847046022),
+ FX16_CONST(-0.43447596056965576), FX16_CONST(-0.9006834292286469),
+ FX16_CONST(-0.4358570799222553), FX16_CONST(-0.9000158920161603),
+ FX16_CONST(-0.43723717366104403), FX16_CONST(-0.8993462369793416),
+ FX16_CONST(-0.4386162385385273), FX16_CONST(-0.898674465693954),
+ FX16_CONST(-0.4399942713096331), FX16_CONST(-0.8980005797407399),
+ FX16_CONST(-0.44137126873171667), FX16_CONST(-0.8973245807054183),
+ FX16_CONST(-0.44274722756456975), FX16_CONST(-0.8966464701786804),
+ FX16_CONST(-0.4441221445704291), FX16_CONST(-0.8959662497561852),
+ FX16_CONST(-0.44549601651398174), FX16_CONST(-0.8952839210385575),
+ FX16_CONST(-0.44686884016237394), FX16_CONST(-0.8945994856313828),
+ FX16_CONST(-0.44824061228521983), FX16_CONST(-0.8939129451452033),
+ FX16_CONST(-0.44961132965460665), FX16_CONST(-0.8932243011955153),
+ FX16_CONST(-0.45098098904510364), FX16_CONST(-0.8925335554027647),
+ FX16_CONST(-0.45234958723377083), FX16_CONST(-0.8918407093923427),
+ FX16_CONST(-0.45371712100016354), FX16_CONST(-0.8911457647945834),
+ FX16_CONST(-0.45508358712634367), FX16_CONST(-0.890448723244758),
+ FX16_CONST(-0.4564489823968839), FX16_CONST(-0.8897495863830728),
+ FX16_CONST(-0.45781330359887695), FX16_CONST(-0.8890483558546647),
+ FX16_CONST(-0.459176547521944), FX16_CONST(-0.8883450333095964),
+ FX16_CONST(-0.46053871095824006), FX16_CONST(-0.8876396204028539),
+ FX16_CONST(-0.4618997907024625), FX16_CONST(-0.8869321187943423),
+ FX16_CONST(-0.4632597835518601), FX16_CONST(-0.8862225301488806),
+ FX16_CONST(-0.46461868630623787), FX16_CONST(-0.8855108561362),
+ FX16_CONST(-0.46597649576796596), FX16_CONST(-0.8847970984309379),
+ FX16_CONST(-0.46733320874198836), FX16_CONST(-0.884081258712635),
+ FX16_CONST(-0.4686888220358276), FX16_CONST(-0.8833633386657318),
+ FX16_CONST(-0.47004333245959545), FX16_CONST(-0.8826433399795629),
+ FX16_CONST(-0.47139673682599764), FX16_CONST(-0.881921264348355),
+ FX16_CONST(-0.4727490319503425), FX16_CONST(-0.8811971134712222),
+ FX16_CONST(-0.47410021465054986), FX16_CONST(-0.8804708890521609),
+ FX16_CONST(-0.47545028174715587), FX16_CONST(-0.8797425928000474),
+ FX16_CONST(-0.47679923006332187), FX16_CONST(-0.8790122264286336),
+ FX16_CONST(-0.47814705642484295), FX16_CONST(-0.8782797916565416),
+ FX16_CONST(-0.47949375766015306), FX16_CONST(-0.8775452902072612),
+ FX16_CONST(-0.48083933060033374), FX16_CONST(-0.8768087238091458),
+ FX16_CONST(-0.48218377207912266), FX16_CONST(-0.8760700941954066),
+ FX16_CONST(-0.4835270789329184), FX16_CONST(-0.875329403104111),
+ FX16_CONST(-0.48486924800079095), FX16_CONST(-0.8745866522781762),
+ FX16_CONST(-0.48621027612448636), FX16_CONST(-0.8738418434653669),
+ FX16_CONST(-0.48755016014843566), FX16_CONST(-0.8730949784182902),
+ FX16_CONST(-0.48888889691976306), FX16_CONST(-0.8723460588943915),
+ FX16_CONST(-0.49022648328829116), FX16_CONST(-0.8715950866559511),
+ FX16_CONST(-0.4915629161065497), FX16_CONST(-0.8708420634700791),
+ FX16_CONST(-0.4928981922297839), FX16_CONST(-0.8700869911087115),
+ FX16_CONST(-0.4942323085159598), FX16_CONST(-0.8693298713486067),
+ FX16_CONST(-0.4955652618257723), FX16_CONST(-0.868570705971341),
+ FX16_CONST(-0.49689704902265447), FX16_CONST(-0.8678094967633033),
+ FX16_CONST(-0.49822766697278154), FX16_CONST(-0.8670462455156929),
+ FX16_CONST(-0.4995571125450817), FX16_CONST(-0.8662809540245131),
+ FX16_CONST(-0.5008853826112407), FX16_CONST(-0.8655136240905691),
+ FX16_CONST(-0.5022124740457106), FX16_CONST(-0.8647442575194625),
+ FX16_CONST(-0.5035383837257175), FX16_CONST(-0.8639728561215868),
+ FX16_CONST(-0.5048631085312676), FX16_CONST(-0.8631994217121242),
+ FX16_CONST(-0.506186645345155), FX16_CONST(-0.8624239561110407),
+ FX16_CONST(-0.5075089910529708), FX16_CONST(-0.8616464611430814),
+ FX16_CONST(-0.5088301425431071), FX16_CONST(-0.8608669386377673),
+ FX16_CONST(-0.5101500967067666), FX16_CONST(-0.8600853904293903),
+ FX16_CONST(-0.5114688504379703), FX16_CONST(-0.8593018183570085),
+ FX16_CONST(-0.5127864006335627), FX16_CONST(-0.858516224264443),
+ FX16_CONST(-0.5141027441932216), FX16_CONST(-0.8577286100002721),
+ FX16_CONST(-0.5154178780194629), FX16_CONST(-0.8569389774178288),
+ FX16_CONST(-0.5167317990176497), FX16_CONST(-0.8561473283751947),
+ FX16_CONST(-0.5180445040959992), FX16_CONST(-0.8553536647351961),
+ FX16_CONST(-0.5193559901655895), FX16_CONST(-0.8545579883654005),
+ FX16_CONST(-0.5206662541403669), FX16_CONST(-0.8537603011381115),
+ FX16_CONST(-0.5219752929371543), FX16_CONST(-0.8529606049303637),
+ FX16_CONST(-0.5232831034756564), FX16_CONST(-0.8521589016239198),
+ FX16_CONST(-0.5245896826784687), FX16_CONST(-0.8513551931052653),
+ FX16_CONST(-0.5258950274710846), FX16_CONST(-0.8505494812656035),
+ FX16_CONST(-0.5271991347819011), FX16_CONST(-0.8497417680008527),
+ FX16_CONST(-0.5285020015422283), FX16_CONST(-0.8489320552116397),
+ FX16_CONST(-0.5298036246862946), FX16_CONST(-0.8481203448032972),
+ FX16_CONST(-0.5311040011512547), FX16_CONST(-0.8473066386858585),
+ FX16_CONST(-0.5324031278771978), FX16_CONST(-0.8464909387740521),
+ FX16_CONST(-0.533701001807153), FX16_CONST(-0.8456732469872991),
+ FX16_CONST(-0.5349976198870969), FX16_CONST(-0.8448535652497072),
+ FX16_CONST(-0.5362929790659631), FX16_CONST(-0.8440318954900665),
+ FX16_CONST(-0.5375870762956455), FX16_CONST(-0.8432082396418454),
+ FX16_CONST(-0.5388799085310082), FX16_CONST(-0.842382599643186),
+ FX16_CONST(-0.5401714727298929), FX16_CONST(-0.8415549774368984),
+ FX16_CONST(-0.5414617658531232), FX16_CONST(-0.8407253749704582),
+ FX16_CONST(-0.5427507848645158), FX16_CONST(-0.8398937941959996),
+ FX16_CONST(-0.5440385267308838), FX16_CONST(-0.8390602370703127),
+ FX16_CONST(-0.5453249884220461), FX16_CONST(-0.8382247055548382),
+ FX16_CONST(-0.5466101669108347), FX16_CONST(-0.837387201615662),
+ FX16_CONST(-0.5478940591731002), FX16_CONST(-0.836547727223512),
+ FX16_CONST(-0.5491766621877194), FX16_CONST(-0.8357062843537527),
+ FX16_CONST(-0.5504579729366047), FX16_CONST(-0.8348628749863801),
+ FX16_CONST(-0.5517379884047074), FX16_CONST(-0.8340175011060181),
+ FX16_CONST(-0.5530167055800274), FX16_CONST(-0.8331701647019133),
+ FX16_CONST(-0.55429412145362), FX16_CONST(-0.8323208677679297),
+ FX16_CONST(-0.555570233019602), FX16_CONST(-0.8314696123025455),
+ FX16_CONST(-0.5568450372751599), FX16_CONST(-0.8306164003088464),
+ FX16_CONST(-0.5581185312205561), FX16_CONST(-0.829761233794523),
+ FX16_CONST(-0.5593907118591358), FX16_CONST(-0.8289041147718651),
+ FX16_CONST(-0.5606615761973359), FX16_CONST(-0.8280450452577559),
+ FX16_CONST(-0.5619311212446894), FX16_CONST(-0.8271840272736691),
+ FX16_CONST(-0.5631993440138339), FX16_CONST(-0.8263210628456636),
+ FX16_CONST(-0.5644662415205194), FX16_CONST(-0.8254561540043776),
+ FX16_CONST(-0.5657318107836132), FX16_CONST(-0.8245893027850253),
+ FX16_CONST(-0.5669960488251085), FX16_CONST(-0.8237205112273915),
+ FX16_CONST(-0.5682589526701315), FX16_CONST(-0.8228497813758264),
+ FX16_CONST(-0.5695205193469473), FX16_CONST(-0.8219771152792416),
+ FX16_CONST(-0.5707807458869671), FX16_CONST(-0.8211025149911048),
+ FX16_CONST(-0.572039629324757), FX16_CONST(-0.8202259825694347),
+ FX16_CONST(-0.573297166698042), FX16_CONST(-0.8193475200767971),
+ FX16_CONST(-0.5745533550477157), FX16_CONST(-0.8184671295802988),
+ FX16_CONST(-0.5758081914178453), FX16_CONST(-0.8175848131515837),
+ FX16_CONST(-0.5770616728556793), FX16_CONST(-0.816700572866828),
+ FX16_CONST(-0.5783137964116555), FX16_CONST(-0.8158144108067339),
+ FX16_CONST(-0.5795645591394057), FX16_CONST(-0.8149263290565266),
+ FX16_CONST(-0.5808139580957643), FX16_CONST(-0.8140363297059485),
+ FX16_CONST(-0.5820619903407754), FX16_CONST(-0.8131444148492536),
+ FX16_CONST(-0.5833086529376983), FX16_CONST(-0.8122505865852039),
+ FX16_CONST(-0.5845539429530151), FX16_CONST(-0.8113548470170638),
+ FX16_CONST(-0.5857978574564389), FX16_CONST(-0.8104571982525949),
+ FX16_CONST(-0.5870403935209177), FX16_CONST(-0.8095576424040515),
+ FX16_CONST(-0.5882815482226451), FX16_CONST(-0.8086561815881751),
+ FX16_CONST(-0.5895213186410639), FX16_CONST(-0.8077528179261904),
+ FX16_CONST(-0.5907597018588739), FX16_CONST(-0.8068475535437994),
+ FX16_CONST(-0.5919966949620409), FX16_CONST(-0.8059403905711764),
+ FX16_CONST(-0.5932322950397998), FX16_CONST(-0.8050313311429635),
+ FX16_CONST(-0.5944664991846642), FX16_CONST(-0.8041203773982659),
+ FX16_CONST(-0.5956993044924332), FX16_CONST(-0.8032075314806449),
+ FX16_CONST(-0.5969307080621965), FX16_CONST(-0.8022927955381157),
+ FX16_CONST(-0.5981607069963422), FX16_CONST(-0.8013761717231404),
+ FX16_CONST(-0.5993892984005645), FX16_CONST(-0.8004576621926228),
+ FX16_CONST(-0.6006164793838686), FX16_CONST(-0.7995372691079052),
+ FX16_CONST(-0.6018422470585799), FX16_CONST(-0.7986149946347609),
+ FX16_CONST(-0.6030665985403482), FX16_CONST(-0.7976908409433912),
+ FX16_CONST(-0.6042895309481559), FX16_CONST(-0.7967648102084189),
+ FX16_CONST(-0.6055110414043254), FX16_CONST(-0.7958369046088836),
+ FX16_CONST(-0.6067311270345245), FX16_CONST(-0.794907126328237),
+ FX16_CONST(-0.6079497849677735), FX16_CONST(-0.7939754775543373),
+ FX16_CONST(-0.6091670123364531), FX16_CONST(-0.7930419604794438),
+ FX16_CONST(-0.6103828062763095), FX16_CONST(-0.7921065773002123),
+ FX16_CONST(-0.6115971639264618), FX16_CONST(-0.7911693302176903),
+ FX16_CONST(-0.6128100824294097), FX16_CONST(-0.79023022143731),
+ FX16_CONST(-0.6140215589310382), FX16_CONST(-0.7892892531688859),
+ FX16_CONST(-0.6152315905806267), FX16_CONST(-0.7883464276266063),
+ FX16_CONST(-0.6164401745308536), FX16_CONST(-0.7874017470290314),
+ FX16_CONST(-0.6176473079378038), FX16_CONST(-0.7864552135990859),
+ FX16_CONST(-0.6188529879609762), FX16_CONST(-0.785506829564054),
+ FX16_CONST(-0.6200572117632892), FX16_CONST(-0.7845565971555752),
+ FX16_CONST(-0.6212599765110874), FX16_CONST(-0.7836045186096384),
+ FX16_CONST(-0.6224612793741499), FX16_CONST(-0.7826505961665758),
+ FX16_CONST(-0.6236611175256946), FX16_CONST(-0.7816948320710594),
+ FX16_CONST(-0.6248594881423862), FX16_CONST(-0.7807372285720946),
+ FX16_CONST(-0.6260563884043435), FX16_CONST(-0.7797777879230146),
+ FX16_CONST(-0.6272518154951439), FX16_CONST(-0.7788165123814762),
+ FX16_CONST(-0.6284457666018326), FX16_CONST(-0.7778534042094533),
+ FX16_CONST(-0.629638238914927), FX16_CONST(-0.7768884656732324),
+ FX16_CONST(-0.6308292296284242), FX16_CONST(-0.7759216990434078),
+ FX16_CONST(-0.632018735939809), FX16_CONST(-0.7749531065948739),
+ FX16_CONST(-0.6332067550500573), FX16_CONST(-0.7739826906068228),
+ FX16_CONST(-0.6343932841636453), FX16_CONST(-0.7730104533627371),
+ FX16_CONST(-0.6355783204885561), FX16_CONST(-0.7720363971503845),
+ FX16_CONST(-0.6367618612362843), FX16_CONST(-0.7710605242618137),
+ FX16_CONST(-0.6379439036218439), FX16_CONST(-0.7700828369933481),
+ FX16_CONST(-0.6391244448637757), FX16_CONST(-0.7691033376455797),
+ FX16_CONST(-0.6403034821841515), FX16_CONST(-0.7681220285233656),
+ FX16_CONST(-0.641481012808583), FX16_CONST(-0.7671389119358205),
+ FX16_CONST(-0.6426570339662269), FX16_CONST(-0.7661539901963129),
+ FX16_CONST(-0.6438315428897913), FX16_CONST(-0.7651672656224591),
+ FX16_CONST(-0.6450045368155438), FX16_CONST(-0.7641787405361168),
+ FX16_CONST(-0.6461760129833164), FX16_CONST(-0.7631884172633813),
+ FX16_CONST(-0.6473459686365118), FX16_CONST(-0.7621962981345791),
+ FX16_CONST(-0.6485144010221123), FX16_CONST(-0.7612023854842619),
+ FX16_CONST(-0.6496813073906832), FX16_CONST(-0.7602066816512024),
+ FX16_CONST(-0.6508466849963808), FX16_CONST(-0.7592091889783882),
+ FX16_CONST(-0.6520105310969595), FX16_CONST(-0.7582099098130154),
+ FX16_CONST(-0.6531728429537765), FX16_CONST(-0.7572088465064848),
+ FX16_CONST(-0.6543336178318003), FX16_CONST(-0.7562060014143946),
+ FX16_CONST(-0.6554928529996153), FX16_CONST(-0.7552013768965365),
+ FX16_CONST(-0.6566505457294288), FX16_CONST(-0.7541949753168894),
+ FX16_CONST(-0.6578066932970785), FX16_CONST(-0.7531867990436125),
+ FX16_CONST(-0.6589612929820373), FX16_CONST(-0.7521768504490427),
+ FX16_CONST(-0.6601143420674203), FX16_CONST(-0.7511651319096866),
+ FX16_CONST(-0.6612658378399922), FX16_CONST(-0.7501516458062151),
+ FX16_CONST(-0.6624157775901718), FX16_CONST(-0.7491363945234593),
+ FX16_CONST(-0.6635641586120397), FX16_CONST(-0.7481193804504037),
+ FX16_CONST(-0.6647109782033448), FX16_CONST(-0.7471006059801802),
+ FX16_CONST(-0.6658562336655094), FX16_CONST(-0.746080073510064),
+ FX16_CONST(-0.6669999223036374), FX16_CONST(-0.7450577854414661),
+ FX16_CONST(-0.6681420414265185), FX16_CONST(-0.7440337441799293),
+ FX16_CONST(-0.6692825883466358), FX16_CONST(-0.7430079521351219),
+ FX16_CONST(-0.670421560380173), FX16_CONST(-0.7419804117208311),
+ FX16_CONST(-0.6715589548470184), FX16_CONST(-0.7409511253549591),
+ FX16_CONST(-0.6726947690707727), FX16_CONST(-0.7399200954595163),
+ FX16_CONST(-0.6738290003787559), FX16_CONST(-0.7388873244606152),
+ FX16_CONST(-0.674961646102012), FX16_CONST(-0.737852814788466),
+ FX16_CONST(-0.6760927035753158), FX16_CONST(-0.73681656887737),
+ FX16_CONST(-0.6772221701371803), FX16_CONST(-0.7357785891657136),
+ FX16_CONST(-0.6783500431298612), FX16_CONST(-0.7347388780959637),
+ FX16_CONST(-0.6794763198993649), FX16_CONST(-0.7336974381146604),
+ FX16_CONST(-0.680600997795453), FX16_CONST(-0.7326542716724128),
+ FX16_CONST(-0.6817240741716496), FX16_CONST(-0.7316093812238927),
+ FX16_CONST(-0.682845546385248), FX16_CONST(-0.7305627692278277),
+ FX16_CONST(-0.6839654117973154), FX16_CONST(-0.729514438146997),
+ FX16_CONST(-0.6850836677727001), FX16_CONST(-0.7284643904482254),
+ FX16_CONST(-0.6862003116800385), FX16_CONST(-0.7274126286023759),
+ FX16_CONST(-0.6873153408917592), FX16_CONST(-0.7263591550843459),
+ FX16_CONST(-0.6884287527840903), FX16_CONST(-0.7253039723730609),
+ FX16_CONST(-0.6895405447370668), FX16_CONST(-0.724247082951467),
+ FX16_CONST(-0.6906507141345344), FX16_CONST(-0.7231884893065277),
+ FX16_CONST(-0.6917592583641576), FX16_CONST(-0.7221281939292155),
+ FX16_CONST(-0.6928661748174246), FX16_CONST(-0.7210661993145081),
+ FX16_CONST(-0.6939714608896538), FX16_CONST(-0.7200025079613819),
+ FX16_CONST(-0.6950751139800008), FX16_CONST(-0.7189371223728045),
+ FX16_CONST(-0.696177131491463), FX16_CONST(-0.7178700450557317),
+ FX16_CONST(-0.6972775108308864), FX16_CONST(-0.7168012785210996),
+ FX16_CONST(-0.6983762494089728), FX16_CONST(-0.7157308252838187),
+ FX16_CONST(-0.6994733446402839), FX16_CONST(-0.714658687862769),
+ FX16_CONST(-0.7005687939432482), FX16_CONST(-0.7135848687807937),
+ FX16_CONST(-0.7016625947401685), FX16_CONST(-0.7125093705646924),
+ FX16_CONST(-0.7027547444572251), FX16_CONST(-0.7114321957452167),
+ FX16_CONST(-0.7038452405244848), FX16_CONST(-0.7103533468570625),
+ FX16_CONST(-0.7049340803759049), FX16_CONST(-0.7092728264388657),
+ FX16_CONST(-0.7060212614493395), FX16_CONST(-0.7081906370331955),
+ FX16_CONST(-0.7071067811865475), FX16_CONST(-0.7071067811865477),
+ FX16_CONST(-0.7081906370331953), FX16_CONST(-0.7060212614493397),
+ FX16_CONST(-0.7092728264388655), FX16_CONST(-0.7049340803759051),
+ FX16_CONST(-0.7103533468570623), FX16_CONST(-0.703845240524485),
+ FX16_CONST(-0.7114321957452164), FX16_CONST(-0.7027547444572253),
+ FX16_CONST(-0.7125093705646922), FX16_CONST(-0.7016625947401687),
+ FX16_CONST(-0.7135848687807935), FX16_CONST(-0.7005687939432484),
+ FX16_CONST(-0.7146586878627688), FX16_CONST(-0.6994733446402841),
+ FX16_CONST(-0.7157308252838185), FX16_CONST(-0.698376249408973),
+ FX16_CONST(-0.7168012785210994), FX16_CONST(-0.6972775108308866),
+ FX16_CONST(-0.7178700450557315), FX16_CONST(-0.6961771314914632),
+ FX16_CONST(-0.7189371223728044), FX16_CONST(-0.695075113980001),
+ FX16_CONST(-0.7200025079613817), FX16_CONST(-0.693971460889654),
+ FX16_CONST(-0.7210661993145079), FX16_CONST(-0.6928661748174249),
+ FX16_CONST(-0.7221281939292152), FX16_CONST(-0.6917592583641579),
+ FX16_CONST(-0.7231884893065275), FX16_CONST(-0.6906507141345346),
+ FX16_CONST(-0.7242470829514668), FX16_CONST(-0.689540544737067),
+ FX16_CONST(-0.7253039723730607), FX16_CONST(-0.6884287527840905),
+ FX16_CONST(-0.7263591550843458), FX16_CONST(-0.6873153408917594),
+ FX16_CONST(-0.7274126286023757), FX16_CONST(-0.6862003116800387),
+ FX16_CONST(-0.7284643904482252), FX16_CONST(-0.6850836677727004),
+ FX16_CONST(-0.7295144381469968), FX16_CONST(-0.6839654117973156),
+ FX16_CONST(-0.7305627692278275), FX16_CONST(-0.6828455463852482),
+ FX16_CONST(-0.7316093812238925), FX16_CONST(-0.6817240741716498),
+ FX16_CONST(-0.7326542716724127), FX16_CONST(-0.6806009977954532),
+ FX16_CONST(-0.7336974381146601), FX16_CONST(-0.6794763198993651),
+ FX16_CONST(-0.7347388780959635), FX16_CONST(-0.6783500431298615),
+ FX16_CONST(-0.7357785891657134), FX16_CONST(-0.6772221701371806),
+ FX16_CONST(-0.7368165688773698), FX16_CONST(-0.676092703575316),
+ FX16_CONST(-0.7378528147884658), FX16_CONST(-0.6749616461020123),
+ FX16_CONST(-0.738887324460615), FX16_CONST(-0.6738290003787561),
+ FX16_CONST(-0.7399200954595161), FX16_CONST(-0.672694769070773),
+ FX16_CONST(-0.7409511253549589), FX16_CONST(-0.6715589548470187),
+ FX16_CONST(-0.741980411720831), FX16_CONST(-0.6704215603801732),
+ FX16_CONST(-0.7430079521351217), FX16_CONST(-0.669282588346636),
+ FX16_CONST(-0.7440337441799291), FX16_CONST(-0.6681420414265187),
+ FX16_CONST(-0.7450577854414658), FX16_CONST(-0.6669999223036376),
+ FX16_CONST(-0.7460800735100638), FX16_CONST(-0.6658562336655096),
+ FX16_CONST(-0.7471006059801799), FX16_CONST(-0.664710978203345),
+ FX16_CONST(-0.7481193804504035), FX16_CONST(-0.6635641586120399),
+ FX16_CONST(-0.749136394523459), FX16_CONST(-0.662415777590172),
+ FX16_CONST(-0.750151645806215), FX16_CONST(-0.6612658378399924),
+ FX16_CONST(-0.7511651319096864), FX16_CONST(-0.6601143420674205),
+ FX16_CONST(-0.7521768504490425), FX16_CONST(-0.6589612929820375),
+ FX16_CONST(-0.7531867990436124), FX16_CONST(-0.6578066932970787),
+ FX16_CONST(-0.7541949753168892), FX16_CONST(-0.656650545729429),
+ FX16_CONST(-0.7552013768965363), FX16_CONST(-0.6554928529996156),
+ FX16_CONST(-0.7562060014143944), FX16_CONST(-0.6543336178318007),
+ FX16_CONST(-0.7572088465064842), FX16_CONST(-0.6531728429537771),
+ FX16_CONST(-0.7582099098130151), FX16_CONST(-0.6520105310969597),
+ FX16_CONST(-0.759209188978388), FX16_CONST(-0.650846684996381),
+ FX16_CONST(-0.7602066816512024), FX16_CONST(-0.6496813073906831),
+ FX16_CONST(-0.761202385484262), FX16_CONST(-0.6485144010221122),
+ FX16_CONST(-0.7621962981345786), FX16_CONST(-0.6473459686365125),
+ FX16_CONST(-0.763188417263381), FX16_CONST(-0.6461760129833166),
+ FX16_CONST(-0.7641787405361166), FX16_CONST(-0.6450045368155441),
+ FX16_CONST(-0.765167265622459), FX16_CONST(-0.6438315428897915),
+ FX16_CONST(-0.766153990196313), FX16_CONST(-0.6426570339662268),
+ FX16_CONST(-0.7671389119358201), FX16_CONST(-0.6414810128085836),
+ FX16_CONST(-0.7681220285233652), FX16_CONST(-0.640303482184152),
+ FX16_CONST(-0.7691033376455795), FX16_CONST(-0.639124444863776),
+ FX16_CONST(-0.7700828369933479), FX16_CONST(-0.6379439036218442),
+ FX16_CONST(-0.7710605242618138), FX16_CONST(-0.6367618612362842),
+ FX16_CONST(-0.7720363971503846), FX16_CONST(-0.635578320488556),
+ FX16_CONST(-0.7730104533627367), FX16_CONST(-0.6343932841636459),
+ FX16_CONST(-0.7739826906068226), FX16_CONST(-0.6332067550500575),
+ FX16_CONST(-0.7749531065948738), FX16_CONST(-0.6320187359398092),
+ FX16_CONST(-0.7759216990434076), FX16_CONST(-0.6308292296284246),
+ FX16_CONST(-0.7768884656732326), FX16_CONST(-0.6296382389149269),
+ FX16_CONST(-0.7778534042094527), FX16_CONST(-0.6284457666018332),
+ FX16_CONST(-0.7788165123814756), FX16_CONST(-0.6272518154951444),
+ FX16_CONST(-0.7797777879230143), FX16_CONST(-0.6260563884043437),
+ FX16_CONST(-0.7807372285720944), FX16_CONST(-0.6248594881423865),
+ FX16_CONST(-0.7816948320710595), FX16_CONST(-0.6236611175256945),
+ FX16_CONST(-0.7826505961665758), FX16_CONST(-0.6224612793741497),
+ FX16_CONST(-0.7836045186096379), FX16_CONST(-0.621259976511088),
+ FX16_CONST(-0.784556597155575), FX16_CONST(-0.6200572117632894),
+ FX16_CONST(-0.7855068295640538), FX16_CONST(-0.6188529879609764),
+ FX16_CONST(-0.7864552135990858), FX16_CONST(-0.617647307937804),
+ FX16_CONST(-0.7874017470290315), FX16_CONST(-0.6164401745308535),
+ FX16_CONST(-0.7883464276266059), FX16_CONST(-0.6152315905806273),
+ FX16_CONST(-0.7892892531688854), FX16_CONST(-0.6140215589310387),
+ FX16_CONST(-0.7902302214373099), FX16_CONST(-0.6128100824294099),
+ FX16_CONST(-0.7911693302176901), FX16_CONST(-0.611597163926462),
+ FX16_CONST(-0.7921065773002124), FX16_CONST(-0.6103828062763094),
+ FX16_CONST(-0.7930419604794439), FX16_CONST(-0.609167012336453),
+ FX16_CONST(-0.7939754775543368), FX16_CONST(-0.6079497849677741),
+ FX16_CONST(-0.7949071263282368), FX16_CONST(-0.6067311270345248),
+ FX16_CONST(-0.7958369046088835), FX16_CONST(-0.6055110414043257),
+ FX16_CONST(-0.7967648102084187), FX16_CONST(-0.6042895309481561),
+ FX16_CONST(-0.7976908409433912), FX16_CONST(-0.603066598540348),
+ FX16_CONST(-0.7986149946347605), FX16_CONST(-0.6018422470585805),
+ FX16_CONST(-0.7995372691079048), FX16_CONST(-0.6006164793838693),
+ FX16_CONST(-0.8004576621926226), FX16_CONST(-0.5993892984005648),
+ FX16_CONST(-0.8013761717231401), FX16_CONST(-0.5981607069963424),
+ FX16_CONST(-0.8022927955381157), FX16_CONST(-0.5969307080621964),
+ FX16_CONST(-0.803207531480645), FX16_CONST(-0.5956993044924331),
+ FX16_CONST(-0.8041203773982655), FX16_CONST(-0.5944664991846649),
+ FX16_CONST(-0.8050313311429634), FX16_CONST(-0.5932322950398001),
+ FX16_CONST(-0.8059403905711762), FX16_CONST(-0.5919966949620411),
+ FX16_CONST(-0.8068475535437992), FX16_CONST(-0.5907597018588743),
+ FX16_CONST(-0.8077528179261905), FX16_CONST(-0.5895213186410638),
+ FX16_CONST(-0.8086561815881746), FX16_CONST(-0.5882815482226458),
+ FX16_CONST(-0.809557642404051), FX16_CONST(-0.5870403935209183),
+ FX16_CONST(-0.8104571982525947), FX16_CONST(-0.5857978574564391),
+ FX16_CONST(-0.8113548470170637), FX16_CONST(-0.5845539429530153),
+ FX16_CONST(-0.812250586585204), FX16_CONST(-0.5833086529376983),
+ FX16_CONST(-0.8131444148492537), FX16_CONST(-0.5820619903407753),
+ FX16_CONST(-0.8140363297059481), FX16_CONST(-0.580813958095765),
+ FX16_CONST(-0.8149263290565264), FX16_CONST(-0.579564559139406),
+ FX16_CONST(-0.8158144108067337), FX16_CONST(-0.5783137964116557),
+ FX16_CONST(-0.8167005728668278), FX16_CONST(-0.5770616728556796),
+ FX16_CONST(-0.8175848131515838), FX16_CONST(-0.5758081914178452),
+ FX16_CONST(-0.8184671295802983), FX16_CONST(-0.5745533550477163),
+ FX16_CONST(-0.8193475200767967), FX16_CONST(-0.5732971666980425),
+ FX16_CONST(-0.8202259825694345), FX16_CONST(-0.5720396293247573),
+ FX16_CONST(-0.8211025149911046), FX16_CONST(-0.5707807458869674),
+ FX16_CONST(-0.8219771152792416), FX16_CONST(-0.5695205193469471),
+ FX16_CONST(-0.8228497813758264), FX16_CONST(-0.5682589526701314),
+ FX16_CONST(-0.8237205112273911), FX16_CONST(-0.566996048825109),
+ FX16_CONST(-0.8245893027850251), FX16_CONST(-0.5657318107836135),
+ FX16_CONST(-0.8254561540043774), FX16_CONST(-0.5644662415205196),
+ FX16_CONST(-0.8263210628456634), FX16_CONST(-0.5631993440138341),
+ FX16_CONST(-0.8271840272736692), FX16_CONST(-0.5619311212446892),
+ FX16_CONST(-0.8280450452577555), FX16_CONST(-0.5606615761973365),
+ FX16_CONST(-0.8289041147718647), FX16_CONST(-0.5593907118591365),
+ FX16_CONST(-0.8297612337945229), FX16_CONST(-0.5581185312205563),
+ FX16_CONST(-0.8306164003088462), FX16_CONST(-0.5568450372751601),
+ FX16_CONST(-0.8314696123025452), FX16_CONST(-0.5555702330196022),
+ FX16_CONST(-0.8323208677679298), FX16_CONST(-0.5542941214536199),
+ FX16_CONST(-0.8331701647019129), FX16_CONST(-0.5530167055800279),
+ FX16_CONST(-0.8340175011060179), FX16_CONST(-0.5517379884047077),
+ FX16_CONST(-0.8348628749863799), FX16_CONST(-0.5504579729366049),
+ FX16_CONST(-0.8357062843537526), FX16_CONST(-0.5491766621877198),
+ FX16_CONST(-0.8365477272235121), FX16_CONST(-0.5478940591731001),
+ FX16_CONST(-0.8373872016156616), FX16_CONST(-0.5466101669108354),
+ FX16_CONST(-0.8382247055548379), FX16_CONST(-0.5453249884220468),
+ FX16_CONST(-0.8390602370703125), FX16_CONST(-0.5440385267308842),
+ FX16_CONST(-0.8398937941959994), FX16_CONST(-0.542750784864516),
+ FX16_CONST(-0.8407253749704581), FX16_CONST(-0.5414617658531234),
+ FX16_CONST(-0.8415549774368986), FX16_CONST(-0.5401714727298927),
+ FX16_CONST(-0.8423825996431856), FX16_CONST(-0.5388799085310089),
+ FX16_CONST(-0.8432082396418452), FX16_CONST(-0.5375870762956457),
+ FX16_CONST(-0.8440318954900663), FX16_CONST(-0.5362929790659633),
+ FX16_CONST(-0.8448535652497071), FX16_CONST(-0.5349976198870973),
+ FX16_CONST(-0.8456732469872992), FX16_CONST(-0.5337010018071529),
+ FX16_CONST(-0.8464909387740518), FX16_CONST(-0.5324031278771985),
+ FX16_CONST(-0.8473066386858581), FX16_CONST(-0.5311040011512553),
+ FX16_CONST(-0.8481203448032971), FX16_CONST(-0.5298036246862949),
+ FX16_CONST(-0.8489320552116396), FX16_CONST(-0.5285020015422286),
+ FX16_CONST(-0.8497417680008525), FX16_CONST(-0.5271991347819013),
+ FX16_CONST(-0.8505494812656036), FX16_CONST(-0.5258950274710845),
+ FX16_CONST(-0.8513551931052649), FX16_CONST(-0.5245896826784693),
+ FX16_CONST(-0.8521589016239196), FX16_CONST(-0.5232831034756568),
+ FX16_CONST(-0.8529606049303635), FX16_CONST(-0.5219752929371545),
+ FX16_CONST(-0.8537603011381114), FX16_CONST(-0.5206662541403672),
+ FX16_CONST(-0.8545579883654005), FX16_CONST(-0.5193559901655894),
+ FX16_CONST(-0.8553536647351957), FX16_CONST(-0.5180445040959999),
+ FX16_CONST(-0.8561473283751942), FX16_CONST(-0.5167317990176502),
+ FX16_CONST(-0.8569389774178287), FX16_CONST(-0.5154178780194633),
+ FX16_CONST(-0.857728610000272), FX16_CONST(-0.5141027441932218),
+ FX16_CONST(-0.8585162242644429), FX16_CONST(-0.512786400633563),
+ FX16_CONST(-0.8593018183570085), FX16_CONST(-0.5114688504379702),
+ FX16_CONST(-0.8600853904293899), FX16_CONST(-0.5101500967067673),
+ FX16_CONST(-0.8608669386377671), FX16_CONST(-0.5088301425431073),
+ FX16_CONST(-0.8616464611430812), FX16_CONST(-0.507508991052971),
+ FX16_CONST(-0.8624239561110405), FX16_CONST(-0.5061866453451553),
+ FX16_CONST(-0.8631994217121243), FX16_CONST(-0.5048631085312674),
+ FX16_CONST(-0.8639728561215865), FX16_CONST(-0.503538383725718),
+ FX16_CONST(-0.8647442575194622), FX16_CONST(-0.5022124740457111),
+ FX16_CONST(-0.865513624090569), FX16_CONST(-0.500885382611241),
+ FX16_CONST(-0.8662809540245129), FX16_CONST(-0.49955711254508195),
+ FX16_CONST(-0.8670462455156926), FX16_CONST(-0.4982276669727818),
+ FX16_CONST(-0.8678094967633033), FX16_CONST(-0.49689704902265436),
+ FX16_CONST(-0.8685707059713407), FX16_CONST(-0.495565261825773),
+ FX16_CONST(-0.8693298713486066), FX16_CONST(-0.49423230851596),
+ FX16_CONST(-0.8700869911087113), FX16_CONST(-0.4928981922297842),
+ FX16_CONST(-0.8708420634700789), FX16_CONST(-0.49156291610654995),
+ FX16_CONST(-0.8715950866559511), FX16_CONST(-0.49022648328829105),
+ FX16_CONST(-0.8723460588943912), FX16_CONST(-0.48888889691976367),
+ FX16_CONST(-0.8730949784182899), FX16_CONST(-0.48755016014843633),
+ FX16_CONST(-0.8738418434653666), FX16_CONST(-0.48621027612448664),
+ FX16_CONST(-0.8745866522781761), FX16_CONST(-0.4848692480007912),
+ FX16_CONST(-0.8753294031041109), FX16_CONST(-0.4835270789329187),
+ FX16_CONST(-0.8760700941954067), FX16_CONST(-0.48218377207912255),
+ FX16_CONST(-0.8768087238091454), FX16_CONST(-0.4808393306003344),
+ FX16_CONST(-0.8775452902072611), FX16_CONST(-0.47949375766015334),
+ FX16_CONST(-0.8782797916565415), FX16_CONST(-0.47814705642484323),
+ FX16_CONST(-0.8790122264286334), FX16_CONST(-0.47679923006332214),
+ FX16_CONST(-0.8797425928000475), FX16_CONST(-0.47545028174715576),
+ FX16_CONST(-0.8804708890521605), FX16_CONST(-0.4741002146505505),
+ FX16_CONST(-0.8811971134712219), FX16_CONST(-0.4727490319503432),
+ FX16_CONST(-0.8819212643483549), FX16_CONST(-0.47139673682599786),
+ FX16_CONST(-0.8826433399795628), FX16_CONST(-0.47004333245959573),
+ FX16_CONST(-0.8833633386657316), FX16_CONST(-0.4686888220358279),
+ FX16_CONST(-0.8840812587126351), FX16_CONST(-0.46733320874198825),
+ FX16_CONST(-0.8847970984309376), FX16_CONST(-0.4659764957679666),
+ FX16_CONST(-0.8855108561361997), FX16_CONST(-0.46461868630623815),
+ FX16_CONST(-0.8862225301488805), FX16_CONST(-0.46325978355186037),
+ FX16_CONST(-0.8869321187943422), FX16_CONST(-0.4618997907024628),
+ FX16_CONST(-0.887639620402854), FX16_CONST(-0.4605387109582399),
+ FX16_CONST(-0.888345033309596), FX16_CONST(-0.45917654752194464),
+ FX16_CONST(-0.8890483558546644), FX16_CONST(-0.4578133035988776),
+ FX16_CONST(-0.8897495863830727), FX16_CONST(-0.4564489823968842),
+ FX16_CONST(-0.8904487232447579), FX16_CONST(-0.45508358712634395),
+ FX16_CONST(-0.8911457647945833), FX16_CONST(-0.4537171210001638),
+ FX16_CONST(-0.8918407093923428), FX16_CONST(-0.45234958723377067),
+ FX16_CONST(-0.8925335554027644), FX16_CONST(-0.4509809890451043),
+ FX16_CONST(-0.8932243011955152), FX16_CONST(-0.44961132965460693),
+ FX16_CONST(-0.8939129451452031), FX16_CONST(-0.4482406122852201),
+ FX16_CONST(-0.8945994856313827), FX16_CONST(-0.4468688401623742),
+ FX16_CONST(-0.8952839210385576), FX16_CONST(-0.44549601651398163),
+ FX16_CONST(-0.8959662497561849), FX16_CONST(-0.44412214457042976),
+ FX16_CONST(-0.89664647017868), FX16_CONST(-0.4427472275645704),
+ FX16_CONST(-0.8973245807054182), FX16_CONST(-0.44137126873171695),
+ FX16_CONST(-0.8980005797407398), FX16_CONST(-0.43999427130963337),
+ FX16_CONST(-0.8986744656939538), FX16_CONST(-0.4386162385385276),
+ FX16_CONST(-0.8993462369793417), FX16_CONST(-0.4372371736610439),
+ FX16_CONST(-0.90001589201616), FX16_CONST(-0.435857079922256),
+ FX16_CONST(-0.9006834292286467), FX16_CONST(-0.43447596056965604),
+ FX16_CONST(-0.9013488470460219), FX16_CONST(-0.4330938188531521),
+ FX16_CONST(-0.9020121439024932), FX16_CONST(-0.4317106580250573),
+ FX16_CONST(-0.9026733182372588), FX16_CONST(-0.4303264813400825),
+ FX16_CONST(-0.9033323684945116), FX16_CONST(-0.42894129205533005),
+ FX16_CONST(-0.9039892931234431), FX16_CONST(-0.4275550934302825),
+ FX16_CONST(-0.9046440905782461), FX16_CONST(-0.4261678887267999),
+ FX16_CONST(-0.9052967593181187), FX16_CONST(-0.4247796812091089),
+ FX16_CONST(-0.9059472978072685), FX16_CONST(-0.423390474143796),
+ FX16_CONST(-0.9065957045149154), FX16_CONST(-0.4220002707997995),
+ FX16_CONST(-0.9072419779152956), FX16_CONST(-0.420609074448403),
+ FX16_CONST(-0.907886116487666), FX16_CONST(-0.4192168883632243),
+ FX16_CONST(-0.908528118716306), FX16_CONST(-0.4178237158202125),
+ FX16_CONST(-0.9091679830905224), FX16_CONST(-0.4164295600976372),
+ FX16_CONST(-0.9098057081046523), FX16_CONST(-0.4150344244760815),
+ FX16_CONST(-0.9104412922580669), FX16_CONST(-0.4136383122384351),
+ FX16_CONST(-0.9110747340551761), FX16_CONST(-0.4122412266698833),
+ FX16_CONST(-0.9117060320054298), FX16_CONST(-0.4108431710579042),
+ FX16_CONST(-0.9123351846233227), FX16_CONST(-0.40944414869225776),
+ FX16_CONST(-0.9129621904283982), FX16_CONST(-0.40804416286497863),
+ FX16_CONST(-0.9135870479452509), FX16_CONST(-0.40664321687036886),
+ FX16_CONST(-0.9142097557035305), FX16_CONST(-0.40524131400499036),
+ FX16_CONST(-0.914830312237946), FX16_CONST(-0.40383845756765446),
+ FX16_CONST(-0.9154487160882677), FX16_CONST(-0.40243465085941865),
+ FX16_CONST(-0.9160649657993317), FX16_CONST(-0.4010298971835757),
+ FX16_CONST(-0.9166790599210427), FX16_CONST(-0.39962419984564673),
+ FX16_CONST(-0.9172909970083777), FX16_CONST(-0.39821756215337417),
+ FX16_CONST(-0.9179007756213903), FX16_CONST(-0.39680998741671075),
+ FX16_CONST(-0.9185083943252121), FX16_CONST(-0.3954014789478166),
+ FX16_CONST(-0.9191138516900577), FX16_CONST(-0.3939920400610482),
+ FX16_CONST(-0.9197171462912274), FX16_CONST(-0.39258167407295147),
+ FX16_CONST(-0.9203182767091106), FX16_CONST(-0.3911703843022537),
+ FX16_CONST(-0.9209172415291893), FX16_CONST(-0.38975817406985697),
+ FX16_CONST(-0.9215140393420418), FX16_CONST(-0.38834504669882663),
+ FX16_CONST(-0.9221086687433451), FX16_CONST(-0.3869310055143888),
+ FX16_CONST(-0.9227011283338785), FX16_CONST(-0.3855160538439189),
+ FX16_CONST(-0.9232914167195276), FX16_CONST(-0.38410019501693493),
+ FX16_CONST(-0.9238795325112865), FX16_CONST(-0.38268343236509034),
+ FX16_CONST(-0.9244654743252625), FX16_CONST(-0.38126576922216276),
+ FX16_CONST(-0.9250492407826775), FX16_CONST(-0.37984720892405144),
+ FX16_CONST(-0.9256308305098727), FX16_CONST(-0.3784277548087657),
+ FX16_CONST(-0.9262102421383114), FX16_CONST(-0.3770074102164182),
+ FX16_CONST(-0.9267874743045819), FX16_CONST(-0.37558617848921705),
+ FX16_CONST(-0.9273625256504009), FX16_CONST(-0.3741640629714585),
+ FX16_CONST(-0.9279353948226177), FX16_CONST(-0.37274106700951615),
+ FX16_CONST(-0.9285060804732155), FX16_CONST(-0.37131719395183777),
+ FX16_CONST(-0.9290745812593157), FX16_CONST(-0.36989244714893416),
+ FX16_CONST(-0.9296408958431813), FX16_CONST(-0.3684668299533722),
+ FX16_CONST(-0.9302050228922192), FX16_CONST(-0.36704034571976696),
+ FX16_CONST(-0.9307669610789836), FX16_CONST(-0.3656129978047743),
+ FX16_CONST(-0.9313267090811803), FX16_CONST(-0.36418478956708017),
+ FX16_CONST(-0.931884265581668), FX16_CONST(-0.36275572436739734),
+ FX16_CONST(-0.9324396292684624), FX16_CONST(-0.36132580556845423),
+ FX16_CONST(-0.932992798834739), FX16_CONST(-0.35989503653498794),
+ FX16_CONST(-0.933543772978836), FX16_CONST(-0.35846342063373704),
+ FX16_CONST(-0.9340925504042588), FX16_CONST(-0.35703096123343037),
+ FX16_CONST(-0.9346391298196807), FX16_CONST(-0.3555976617047841),
+ FX16_CONST(-0.9351835099389476), FX16_CONST(-0.35416352542049045),
+ FX16_CONST(-0.9357256894810804), FX16_CONST(-0.3527285557552106),
+ FX16_CONST(-0.9362656671702784), FX16_CONST(-0.35129275608556687),
+ FX16_CONST(-0.9368034417359214), FX16_CONST(-0.34985612979013536),
+ FX16_CONST(-0.9373390119125748), FX16_CONST(-0.34841868024943484),
+ FX16_CONST(-0.9378723764399898), FX16_CONST(-0.3469804108459238),
+ FX16_CONST(-0.9384035340631082), FX16_CONST(-0.34554132496398904),
+ FX16_CONST(-0.9389324835320646), FX16_CONST(-0.34410142598993865),
+ FX16_CONST(-0.9394592236021897), FX16_CONST(-0.3426607173119949),
+ FX16_CONST(-0.9399837530340138), FX16_CONST(-0.34121920232028274),
+ FX16_CONST(-0.9405060705932683), FX16_CONST(-0.3397768844068271),
+ FX16_CONST(-0.9410261750508893), FX16_CONST(-0.33833376696554124),
+ FX16_CONST(-0.9415440651830208), FX16_CONST(-0.33688985339221994),
+ FX16_CONST(-0.9420597397710174), FX16_CONST(-0.3354451470845314),
+ FX16_CONST(-0.9425731976014468), FX16_CONST(-0.3339996514420098),
+ FX16_CONST(-0.9430844374660934), FX16_CONST(-0.3325533698660445),
+ FX16_CONST(-0.9435934581619603), FX16_CONST(-0.33110630575987654),
+ FX16_CONST(-0.9441002584912727), FX16_CONST(-0.3296584625285875),
+ FX16_CONST(-0.9446048372614804), FX16_CONST(-0.32820984357909233),
+ FX16_CONST(-0.9451071932852604), FX16_CONST(-0.3267604523201323),
+ FX16_CONST(-0.9456073253805212), FX16_CONST(-0.3253102921622633),
+ FX16_CONST(-0.9461052323704033), FX16_CONST(-0.3238593665178531),
+ FX16_CONST(-0.9466009130832835), FX16_CONST(-0.3224076788010699),
+ FX16_CONST(-0.9470943663527772), FX16_CONST(-0.32095523242787516),
+ FX16_CONST(-0.9475855910177412), FX16_CONST(-0.3195020308160154),
+ FX16_CONST(-0.9480745859222761), FX16_CONST(-0.3180480773850154),
+ FX16_CONST(-0.9485613499157302), FX16_CONST(-0.3165933755561662),
+ FX16_CONST(-0.9490458818527006), FX16_CONST(-0.31513792875252256),
+ FX16_CONST(-0.9495281805930367), FX16_CONST(-0.31368174039889146),
+ FX16_CONST(-0.9500082450018431), FX16_CONST(-0.3122248139218248),
+ FX16_CONST(-0.9504860739494816), FX16_CONST(-0.31076715274961203),
+ FX16_CONST(-0.950961666311575), FX16_CONST(-0.30930876031226906),
+ FX16_CONST(-0.9514350209690083), FX16_CONST(-0.3078496400415351),
+ FX16_CONST(-0.9519061368079323), FX16_CONST(-0.306389795370861),
+ FX16_CONST(-0.9523750127197659), FX16_CONST(-0.3049292297354023),
+ FX16_CONST(-0.9528416476011987), FX16_CONST(-0.30346794657201104),
+ FX16_CONST(-0.9533060403541936), FX16_CONST(-0.30200594931922853),
+ FX16_CONST(-0.9537681898859902), FX16_CONST(-0.30054324141727373),
+ FX16_CONST(-0.9542280951091056), FX16_CONST(-0.2990798263080406),
+ FX16_CONST(-0.9546857549413383), FX16_CONST(-0.2976157074350862),
+ FX16_CONST(-0.9551411683057708), FX16_CONST(-0.2961508882436237),
+ FX16_CONST(-0.9555943341307709), FX16_CONST(-0.2946853721805149),
+ FX16_CONST(-0.9560452513499963), FX16_CONST(-0.293219162694259),
+ FX16_CONST(-0.956493918902395), FX16_CONST(-0.2917522632349895),
+ FX16_CONST(-0.9569403357322088), FX16_CONST(-0.29028467725446244),
+ FX16_CONST(-0.957384500788976), FX16_CONST(-0.28881640820604937),
+ FX16_CONST(-0.957826413027533), FX16_CONST(-0.2873474595447293),
+ FX16_CONST(-0.9582660714080176), FX16_CONST(-0.28587783472708106),
+ FX16_CONST(-0.9587034748958715), FX16_CONST(-0.28440753721127215),
+ FX16_CONST(-0.9591386224618419), FX16_CONST(-0.2829365704570555),
+ FX16_CONST(-0.9595715130819845), FX16_CONST(-0.28146493792575794),
+ FX16_CONST(-0.960002145737666), FX16_CONST(-0.27999264308027305),
+ FX16_CONST(-0.9604305194155657), FX16_CONST(-0.2785196893850536),
+ FX16_CONST(-0.9608566331076795), FX16_CONST(-0.2770460803061003),
+ FX16_CONST(-0.9612804858113205), FX16_CONST(-0.27557181931095837),
+ FX16_CONST(-0.9617020765291225), FX16_CONST(-0.27409690986870644),
+ FX16_CONST(-0.9621214042690416), FX16_CONST(-0.27262135544994887),
+ FX16_CONST(-0.9625384680443593), FX16_CONST(-0.2711451595268078),
+ FX16_CONST(-0.9629532668736838), FX16_CONST(-0.26966832557291553),
+ FX16_CONST(-0.9633657997809539), FX16_CONST(-0.2681908570634035),
+ FX16_CONST(-0.9637760657954398), FX16_CONST(-0.26671275747489853),
+ FX16_CONST(-0.9641840639517458), FX16_CONST(-0.2652340302855118),
+ FX16_CONST(-0.9645897932898128), FX16_CONST(-0.26375467897483124),
+ FX16_CONST(-0.9649932528549202), FX16_CONST(-0.26227470702391414),
+ FX16_CONST(-0.9653944416976893), FX16_CONST(-0.2607941179152759),
+ FX16_CONST(-0.9657933588740836), FX16_CONST(-0.25931291513288646),
+ FX16_CONST(-0.9661900034454125), FX16_CONST(-0.25783110216215904),
+ FX16_CONST(-0.9665843744783331), FX16_CONST(-0.2563486824899428),
+ FX16_CONST(-0.9669764710448522), FX16_CONST(-0.25486565960451435),
+ FX16_CONST(-0.9673662922223284), FX16_CONST(-0.2533820369955706),
+ FX16_CONST(-0.9677538370934754), FX16_CONST(-0.25189781815421725),
+ FX16_CONST(-0.9681391047463623), FX16_CONST(-0.2504130065729654),
+ FX16_CONST(-0.9685220942744173), FX16_CONST(-0.24892760574572015),
+ FX16_CONST(-0.9689028047764289), FX16_CONST(-0.24744161916777313),
+ FX16_CONST(-0.9692812353565483), FX16_CONST(-0.24595505033579515),
+ FX16_CONST(-0.9696573851242923), FX16_CONST(-0.24446790274782454),
+ FX16_CONST(-0.970031253194544), FX16_CONST(-0.24298017990326412),
+ FX16_CONST(-0.9704028386875555), FX16_CONST(-0.2414918853028694),
+ FX16_CONST(-0.9707721407289504), FX16_CONST(-0.2400030224487414),
+ FX16_CONST(-0.9711391584497252), FX16_CONST(-0.2385135948443182),
+ FX16_CONST(-0.9715038909862517), FX16_CONST(-0.23702360599436767),
+ FX16_CONST(-0.9718663374802793), FX16_CONST(-0.2355330594049758),
+ FX16_CONST(-0.9722264970789363), FX16_CONST(-0.23404195858354357),
+ FX16_CONST(-0.9725843689347322), FX16_CONST(-0.23255030703877522),
+ FX16_CONST(-0.9729399522055602), FX16_CONST(-0.23105810828067094),
+ FX16_CONST(-0.9732932460546981), FX16_CONST(-0.22956536582051942),
+ FX16_CONST(-0.9736442496508119), FX16_CONST(-0.22807208317088612),
+ FX16_CONST(-0.9739929621679558), FX16_CONST(-0.22657826384561022),
+ FX16_CONST(-0.9743393827855759), FX16_CONST(-0.22508391135979292),
+ FX16_CONST(-0.9746835106885107), FX16_CONST(-0.2235890292297899),
+ FX16_CONST(-0.9750253450669942), FX16_CONST(-0.2220936209732033),
+ FX16_CONST(-0.9753648851166569), FX16_CONST(-0.22059769010887398),
+ FX16_CONST(-0.9757021300385285), FX16_CONST(-0.2191012401568701),
+ FX16_CONST(-0.976037079039039), FX16_CONST(-0.21760427463848378),
+ FX16_CONST(-0.9763697313300211), FX16_CONST(-0.2161067970762195),
+ FX16_CONST(-0.9767000861287118), FX16_CONST(-0.2146088109937866),
+ FX16_CONST(-0.9770281426577543), FX16_CONST(-0.21311031991609192),
+ FX16_CONST(-0.9773539001452), FX16_CONST(-0.21161132736922797),
+ FX16_CONST(-0.9776773578245099), FX16_CONST(-0.21011183688046986),
+ FX16_CONST(-0.977998514934557), FX16_CONST(-0.20861185197826357),
+ FX16_CONST(-0.9783173707196277), FX16_CONST(-0.20711137619221848),
+ FX16_CONST(-0.9786339244294232), FX16_CONST(-0.20561041305309902),
+ FX16_CONST(-0.9789481753190621), FX16_CONST(-0.20410896609281734),
+ FX16_CONST(-0.979260122649082), FX16_CONST(-0.20260703884442144),
+ FX16_CONST(-0.9795697656854405), FX16_CONST(-0.20110463484209207),
+ FX16_CONST(-0.9798771036995176), FX16_CONST(-0.19960175762113097),
+ FX16_CONST(-0.9801821359681174), FX16_CONST(-0.19809841071795342),
+ FX16_CONST(-0.9804848617734693), FX16_CONST(-0.19659459767008078),
+ FX16_CONST(-0.9807852804032303), FX16_CONST(-0.19509032201612866),
+ FX16_CONST(-0.9810833911504866), FX16_CONST(-0.19358558729580386),
+ FX16_CONST(-0.9813791933137546), FX16_CONST(-0.19208039704989252),
+ FX16_CONST(-0.9816726861969831), FX16_CONST(-0.19057475482025268),
+ FX16_CONST(-0.9819638691095554), FX16_CONST(-0.18906866414980597),
+ FX16_CONST(-0.9822527413662894), FX16_CONST(-0.18756212858253007),
+ FX16_CONST(-0.9825393022874412), FX16_CONST(-0.18605515166344697),
+ FX16_CONST(-0.9828235511987052), FX16_CONST(-0.18454773693861978),
+ FX16_CONST(-0.9831054874312163), FX16_CONST(-0.18303988795514095),
+ FX16_CONST(-0.9833851103215513), FX16_CONST(-0.18153160826112483),
+ FX16_CONST(-0.9836624192117301), FX16_CONST(-0.18002290140570007),
+ FX16_CONST(-0.9839374134492188), FX16_CONST(-0.17851377093899792),
+ FX16_CONST(-0.984210092386929), FX16_CONST(-0.177004220412149),
+ FX16_CONST(-0.9844804553832209), FX16_CONST(-0.1754942533772715),
+ FX16_CONST(-0.9847485018019042), FX16_CONST(-0.17398387338746374),
+ FX16_CONST(-0.9850142310122398), FX16_CONST(-0.17247308399679573),
+ FX16_CONST(-0.9852776423889411), FX16_CONST(-0.1709618887603017),
+ FX16_CONST(-0.9855387353121761), FX16_CONST(-0.1694502912339683),
+ FX16_CONST(-0.9857975091675674), FX16_CONST(-0.16793829497473134),
+ FX16_CONST(-0.9860539633461954), FX16_CONST(-0.1664259035404641),
+ FX16_CONST(-0.9863080972445987), FX16_CONST(-0.16491312048996976),
+ FX16_CONST(-0.9865599102647754), FX16_CONST(-0.16339994938297378),
+ FX16_CONST(-0.9868094018141854), FX16_CONST(-0.16188639378011224),
+ FX16_CONST(-0.987056571305751), FX16_CONST(-0.1603724572429285),
+ FX16_CONST(-0.9873014181578583), FX16_CONST(-0.15885814333386153),
+ FX16_CONST(-0.9875439417943593), FX16_CONST(-0.1573434556162382),
+ FX16_CONST(-0.9877841416445722), FX16_CONST(-0.15582839765426498),
+ FX16_CONST(-0.9880220171432835), FX16_CONST(-0.15431297301302058),
+ FX16_CONST(-0.9882575677307495), FX16_CONST(-0.15279718525844374),
+ FX16_CONST(-0.9884907928526966), FX16_CONST(-0.15128103795733036),
+ FX16_CONST(-0.9887216919603238), FX16_CONST(-0.1497645346773215),
+ FX16_CONST(-0.988950264510303), FX16_CONST(-0.1482476789868959),
+ FX16_CONST(-0.9891765099647809), FX16_CONST(-0.1467304744553623),
+ FX16_CONST(-0.9894004277913803), FX16_CONST(-0.14521292465284785),
+ FX16_CONST(-0.9896220174632008), FX16_CONST(-0.1436950331502947),
+ FX16_CONST(-0.9898412784588205), FX16_CONST(-0.14217680351944814),
+ FX16_CONST(-0.9900582102622971), FX16_CONST(-0.14065823933284916),
+ FX16_CONST(-0.9902728123631691), FX16_CONST(-0.13913934416382598),
+ FX16_CONST(-0.990485084256457), FX16_CONST(-0.13762012158648654),
+ FX16_CONST(-0.9906950254426646), FX16_CONST(-0.13610057517570653),
+ FX16_CONST(-0.99090263542778), FX16_CONST(-0.13458070850712636),
+ FX16_CONST(-0.9911079137232769), FX16_CONST(-0.13306052515713906),
+ FX16_CONST(-0.9913108598461154), FX16_CONST(-0.13154002870288295),
+ FX16_CONST(-0.9915114733187439), FX16_CONST(-0.13001922272223393),
+ FX16_CONST(-0.9917097536690995), FX16_CONST(-0.12849811079379359),
+ FX16_CONST(-0.9919057004306093), FX16_CONST(-0.12697669649688612),
+ FX16_CONST(-0.9920993131421918), FX16_CONST(-0.12545498341154632),
+ FX16_CONST(-0.9922905913482574), FX16_CONST(-0.12393297511851209),
+ FX16_CONST(-0.9924795345987101), FX16_CONST(-0.12241067519921596),
+ FX16_CONST(-0.9926661424489479), FX16_CONST(-0.12088808723577757),
+ FX16_CONST(-0.9928504144598651), FX16_CONST(-0.11936521481099169),
+ FX16_CONST(-0.9930323501978514), FX16_CONST(-0.11784206150832514),
+ FX16_CONST(-0.9932119492347945), FX16_CONST(-0.11631863091190477),
+ FX16_CONST(-0.9933892111480807), FX16_CONST(-0.11479492660650993),
+ FX16_CONST(-0.9935641355205953), FX16_CONST(-0.11327095217756492),
+ FX16_CONST(-0.9937367219407246), FX16_CONST(-0.111746711211127),
+ FX16_CONST(-0.9939069700023561), FX16_CONST(-0.11022220729388331),
+ FX16_CONST(-0.9940748793048794), FX16_CONST(-0.1086974440131388),
+ FX16_CONST(-0.9942404494531879), FX16_CONST(-0.10717242495680877),
+ FX16_CONST(-0.9944036800576791), FX16_CONST(-0.10564715371341038),
+ FX16_CONST(-0.9945645707342554), FX16_CONST(-0.10412163387205507),
+ FX16_CONST(-0.9947231211043257), FX16_CONST(-0.10259586902243661),
+ FX16_CONST(-0.9948793307948056), FX16_CONST(-0.10106986275482799),
+ FX16_CONST(-0.9950331994381186), FX16_CONST(-0.09954361866006935),
+ FX16_CONST(-0.9951847266721969), FX16_CONST(-0.09801714032956045),
+ FX16_CONST(-0.9953339121404822), FX16_CONST(-0.09649043135525316),
+ FX16_CONST(-0.9954807554919269), FX16_CONST(-0.09496349532963941),
+ FX16_CONST(-0.9956252563809943), FX16_CONST(-0.09343633584574804),
+ FX16_CONST(-0.9957674144676598), FX16_CONST(-0.09190895649713282),
+ FX16_CONST(-0.9959072294174117), FX16_CONST(-0.09038136087786491),
+ FX16_CONST(-0.996044700901252), FX16_CONST(-0.08885355258252436),
+ FX16_CONST(-0.9961798285956969), FX16_CONST(-0.08732553520619256),
+ FX16_CONST(-0.996312612182778), FX16_CONST(-0.08579731234444023),
+ FX16_CONST(-0.9964430513500426), FX16_CONST(-0.08426888759332424),
+ FX16_CONST(-0.9965711457905548), FX16_CONST(-0.0827402645493757),
+ FX16_CONST(-0.9966968952028961), FX16_CONST(-0.08121144680959229),
+ FX16_CONST(-0.9968202992911657), FX16_CONST(-0.0796824379714307),
+ FX16_CONST(-0.996941357764982), FX16_CONST(-0.07815324163279465),
+ FX16_CONST(-0.997060070339483), FX16_CONST(-0.07662386139203174),
+ FX16_CONST(-0.9971764367353261), FX16_CONST(-0.0750943008479214),
+ FX16_CONST(-0.9972904566786902), FX16_CONST(-0.07356456359966736),
+ FX16_CONST(-0.9974021299012753), FX16_CONST(-0.0720346532468891),
+ FX16_CONST(-0.9975114561403035), FX16_CONST(-0.07050457338961436),
+ FX16_CONST(-0.9976184351385196), FX16_CONST(-0.06897432762826708),
+ FX16_CONST(-0.9977230666441916), FX16_CONST(-0.06744391956366423),
+ FX16_CONST(-0.9978253504111116), FX16_CONST(-0.06591335279700383),
+ FX16_CONST(-0.997925286198596), FX16_CONST(-0.06438263092985731),
+ FX16_CONST(-0.9980228737714861), FX16_CONST(-0.06285175756416199),
+ FX16_CONST(-0.9981181129001492), FX16_CONST(-0.061320736302208995),
+ FX16_CONST(-0.9982110033604782), FX16_CONST(-0.05978957074664013),
+ FX16_CONST(-0.9983015449338928), FX16_CONST(-0.058258264500435857),
+ FX16_CONST(-0.9983897374073402), FX16_CONST(-0.056726821166907686),
+ FX16_CONST(-0.9984755805732948), FX16_CONST(-0.05519524434968971),
+ FX16_CONST(-0.9985590742297593), FX16_CONST(-0.053663537652731026),
+ FX16_CONST(-0.9986402181802652), FX16_CONST(-0.05213170468028366),
+ FX16_CONST(-0.9987190122338729), FX16_CONST(-0.050599749036899455),
+ FX16_CONST(-0.9987954562051724), FX16_CONST(-0.04906767432741803),
+ FX16_CONST(-0.9988695499142836), FX16_CONST(-0.04753548415695916),
+ FX16_CONST(-0.9989412931868569), FX16_CONST(-0.046003182130915206),
+ FX16_CONST(-0.9990106858540733), FX16_CONST(-0.044470771854939084),
+ FX16_CONST(-0.9990777277526454), FX16_CONST(-0.042938256934941084),
+ FX16_CONST(-0.9991424187248169), FX16_CONST(-0.04140564097707684),
+ FX16_CONST(-0.9992047586183639), FX16_CONST(-0.03987292758773975),
+ FX16_CONST(-0.9992647472865944), FX16_CONST(-0.03834012037355247),
+ FX16_CONST(-0.9993223845883494), FX16_CONST(-0.03680722294135933),
+ FX16_CONST(-0.9993776703880028), FX16_CONST(-0.035274238898214294),
+ FX16_CONST(-0.9994306045554617), FX16_CONST(-0.03374117185137776),
+ FX16_CONST(-0.999481186966167), FX16_CONST(-0.0322080254083046),
+ FX16_CONST(-0.9995294175010931), FX16_CONST(-0.030674803176636484),
+ FX16_CONST(-0.9995752960467492), FX16_CONST(-0.02914150876419431),
+ FX16_CONST(-0.9996188224951786), FX16_CONST(-0.027608145778966163),
+ FX16_CONST(-0.9996599967439592), FX16_CONST(-0.02607471782910416),
+ FX16_CONST(-0.9996988186962042), FX16_CONST(-0.02454122852291239),
+ FX16_CONST(-0.9997352882605617), FX16_CONST(-0.02300768146883931),
+ FX16_CONST(-0.9997694053512153), FX16_CONST(-0.021474080275469286),
+ FX16_CONST(-0.9998011698878843), FX16_CONST(-0.019940428551514944),
+ FX16_CONST(-0.9998305817958234), FX16_CONST(-0.018406729905805164),
+ FX16_CONST(-0.9998576410058239), FX16_CONST(-0.016872987947281894),
+ FX16_CONST(-0.9998823474542126), FX16_CONST(-0.015339206284988121),
+ FX16_CONST(-0.9999047010828529), FX16_CONST(-0.01380538852806025),
+ FX16_CONST(-0.9999247018391445), FX16_CONST(-0.012271538285720512),
+ FX16_CONST(-0.9999423496760239), FX16_CONST(-0.010737659167264916),
+ FX16_CONST(-0.9999576445519639), FX16_CONST(-0.009203754782060083),
+ FX16_CONST(-0.9999705864309741), FX16_CONST(-0.007669828739531199),
+ FX16_CONST(-0.9999811752826011), FX16_CONST(-0.006135884649154416),
+ FX16_CONST(-0.9999894110819284), FX16_CONST(-0.00460192612044835),
+ FX16_CONST(-0.9999952938095762), FX16_CONST(-0.0030679567629664827),
+ FX16_CONST(-0.9999988234517019), FX16_CONST(-0.0015339801862851105),
+ FX16_CONST(-1.0), FX16_CONST(-1.8369701987210297e-16),
+ FX16_CONST(-0.9999988234517019), FX16_CONST(0.0015339801862847432),
+ FX16_CONST(-0.9999952938095762), FX16_CONST(0.003067956762966115),
+ FX16_CONST(-0.9999894110819284), FX16_CONST(0.004601926120447982),
+ FX16_CONST(-0.9999811752826011), FX16_CONST(0.0061358846491540485),
+ FX16_CONST(-0.9999705864309741), FX16_CONST(0.007669828739530832),
+ FX16_CONST(-0.9999576445519639), FX16_CONST(0.009203754782059715),
+ FX16_CONST(-0.9999423496760239), FX16_CONST(0.010737659167264548),
+ FX16_CONST(-0.9999247018391445), FX16_CONST(0.012271538285720144),
+ FX16_CONST(-0.9999047010828529), FX16_CONST(0.013805388528059882),
+ FX16_CONST(-0.9998823474542126), FX16_CONST(0.015339206284987753),
+ FX16_CONST(-0.9998576410058239), FX16_CONST(0.016872987947281527),
+ FX16_CONST(-0.9998305817958234), FX16_CONST(0.018406729905804796),
+ FX16_CONST(-0.9998011698878843), FX16_CONST(0.019940428551514577),
+ FX16_CONST(-0.9997694053512153), FX16_CONST(0.021474080275468918),
+ FX16_CONST(-0.9997352882605617), FX16_CONST(0.023007681468838945),
+ FX16_CONST(-0.9996988186962042), FX16_CONST(0.02454122852291202),
+ FX16_CONST(-0.9996599967439592), FX16_CONST(0.026074717829103793),
+ FX16_CONST(-0.9996188224951786), FX16_CONST(0.027608145778965795),
+ FX16_CONST(-0.9995752960467492), FX16_CONST(0.02914150876419394),
+ FX16_CONST(-0.9995294175010931), FX16_CONST(0.030674803176636116),
+ FX16_CONST(-0.999481186966167), FX16_CONST(0.03220802540830423),
+ FX16_CONST(-0.9994306045554617), FX16_CONST(0.0337411718513774),
+ FX16_CONST(-0.9993776703880028), FX16_CONST(0.035274238898213926),
+ FX16_CONST(-0.9993223845883495), FX16_CONST(0.036807222941358964),
+ FX16_CONST(-0.9992647472865945), FX16_CONST(0.038340120373552104),
+ FX16_CONST(-0.9992047586183639), FX16_CONST(0.03987292758773938),
+ FX16_CONST(-0.9991424187248169), FX16_CONST(0.04140564097707647),
+ FX16_CONST(-0.9990777277526454), FX16_CONST(0.042938256934940716),
+ FX16_CONST(-0.9990106858540734), FX16_CONST(0.044470771854938716),
+ FX16_CONST(-0.9989412931868569), FX16_CONST(0.046003182130914845),
+ FX16_CONST(-0.9988695499142836), FX16_CONST(0.04753548415695879),
+ FX16_CONST(-0.9987954562051724), FX16_CONST(0.04906767432741766),
+ FX16_CONST(-0.9987190122338729), FX16_CONST(0.05059974903689909),
+ FX16_CONST(-0.9986402181802653), FX16_CONST(0.05213170468028329),
+ FX16_CONST(-0.9985590742297593), FX16_CONST(0.05366353765273066),
+ FX16_CONST(-0.9984755805732948), FX16_CONST(0.055195244349689344),
+ FX16_CONST(-0.9983897374073402), FX16_CONST(0.05672682116690732),
+ FX16_CONST(-0.9983015449338929), FX16_CONST(0.05825826450043549),
+ FX16_CONST(-0.9982110033604782), FX16_CONST(0.059789570746639764),
+ FX16_CONST(-0.9981181129001492), FX16_CONST(0.06132073630220863),
+ FX16_CONST(-0.9980228737714862), FX16_CONST(0.06285175756416163),
+ FX16_CONST(-0.997925286198596), FX16_CONST(0.06438263092985695),
+ FX16_CONST(-0.9978253504111116), FX16_CONST(0.06591335279700346),
+ FX16_CONST(-0.9977230666441916), FX16_CONST(0.06744391956366387),
+ FX16_CONST(-0.9976184351385196), FX16_CONST(0.06897432762826672),
+ FX16_CONST(-0.9975114561403035), FX16_CONST(0.070504573389614),
+ FX16_CONST(-0.9974021299012753), FX16_CONST(0.07203465324688872),
+ FX16_CONST(-0.9972904566786902), FX16_CONST(0.07356456359966698),
+ FX16_CONST(-0.9971764367353262), FX16_CONST(0.07509430084792104),
+ FX16_CONST(-0.997060070339483), FX16_CONST(0.07662386139203138),
+ FX16_CONST(-0.9969413577649822), FX16_CONST(0.07815324163279429),
+ FX16_CONST(-0.9968202992911657), FX16_CONST(0.07968243797143033),
+ FX16_CONST(-0.9966968952028961), FX16_CONST(0.08121144680959191),
+ FX16_CONST(-0.9965711457905548), FX16_CONST(0.08274026454937533),
+ FX16_CONST(-0.9964430513500426), FX16_CONST(0.08426888759332388),
+ FX16_CONST(-0.996312612182778), FX16_CONST(0.08579731234443985),
+ FX16_CONST(-0.9961798285956969), FX16_CONST(0.0873255352061922),
+ FX16_CONST(-0.9960447009012521), FX16_CONST(0.088853552582524),
+ FX16_CONST(-0.9959072294174117), FX16_CONST(0.09038136087786454),
+ FX16_CONST(-0.9957674144676598), FX16_CONST(0.09190895649713245),
+ FX16_CONST(-0.9956252563809943), FX16_CONST(0.09343633584574766),
+ FX16_CONST(-0.9954807554919269), FX16_CONST(0.09496349532963905),
+ FX16_CONST(-0.9953339121404823), FX16_CONST(0.0964904313552528),
+ FX16_CONST(-0.9951847266721969), FX16_CONST(0.09801714032956009),
+ FX16_CONST(-0.9950331994381186), FX16_CONST(0.09954361866006897),
+ FX16_CONST(-0.9948793307948056), FX16_CONST(0.10106986275482763),
+ FX16_CONST(-0.9947231211043257), FX16_CONST(0.10259586902243625),
+ FX16_CONST(-0.9945645707342554), FX16_CONST(0.1041216338720547),
+ FX16_CONST(-0.9944036800576791), FX16_CONST(0.10564715371341002),
+ FX16_CONST(-0.994240449453188), FX16_CONST(0.10717242495680841),
+ FX16_CONST(-0.9940748793048795), FX16_CONST(0.10869744401313844),
+ FX16_CONST(-0.9939069700023561), FX16_CONST(0.11022220729388293),
+ FX16_CONST(-0.9937367219407246), FX16_CONST(0.11174671121112664),
+ FX16_CONST(-0.9935641355205953), FX16_CONST(0.11327095217756455),
+ FX16_CONST(-0.9933892111480808), FX16_CONST(0.11479492660650957),
+ FX16_CONST(-0.9932119492347946), FX16_CONST(0.1163186309119044),
+ FX16_CONST(-0.9930323501978514), FX16_CONST(0.11784206150832478),
+ FX16_CONST(-0.9928504144598651), FX16_CONST(0.11936521481099133),
+ FX16_CONST(-0.992666142448948), FX16_CONST(0.1208880872357772),
+ FX16_CONST(-0.9924795345987101), FX16_CONST(0.1224106751992156),
+ FX16_CONST(-0.9922905913482574), FX16_CONST(0.12393297511851173),
+ FX16_CONST(-0.9920993131421918), FX16_CONST(0.12545498341154596),
+ FX16_CONST(-0.9919057004306093), FX16_CONST(0.12697669649688575),
+ FX16_CONST(-0.9917097536690995), FX16_CONST(0.12849811079379322),
+ FX16_CONST(-0.9915114733187439), FX16_CONST(0.13001922272223354),
+ FX16_CONST(-0.9913108598461154), FX16_CONST(0.1315400287028826),
+ FX16_CONST(-0.9911079137232769), FX16_CONST(0.1330605251571387),
+ FX16_CONST(-0.99090263542778), FX16_CONST(0.13458070850712597),
+ FX16_CONST(-0.9906950254426646), FX16_CONST(0.13610057517570617),
+ FX16_CONST(-0.990485084256457), FX16_CONST(0.13762012158648618),
+ FX16_CONST(-0.9902728123631692), FX16_CONST(0.13913934416382562),
+ FX16_CONST(-0.9900582102622971), FX16_CONST(0.1406582393328488),
+ FX16_CONST(-0.9898412784588205), FX16_CONST(0.14217680351944778),
+ FX16_CONST(-0.9896220174632009), FX16_CONST(0.14369503315029433),
+ FX16_CONST(-0.9894004277913804), FX16_CONST(0.1452129246528475),
+ FX16_CONST(-0.9891765099647809), FX16_CONST(0.14673047445536194),
+ FX16_CONST(-0.9889502645103031), FX16_CONST(0.14824767898689553),
+ FX16_CONST(-0.9887216919603238), FX16_CONST(0.14976453467732115),
+ FX16_CONST(-0.9884907928526967), FX16_CONST(0.15128103795733),
+ FX16_CONST(-0.9882575677307495), FX16_CONST(0.15279718525844338),
+ FX16_CONST(-0.9880220171432835), FX16_CONST(0.15431297301302022),
+ FX16_CONST(-0.9877841416445723), FX16_CONST(0.15582839765426462),
+ FX16_CONST(-0.9875439417943593), FX16_CONST(0.1573434556162378),
+ FX16_CONST(-0.9873014181578584), FX16_CONST(0.15885814333386117),
+ FX16_CONST(-0.9870565713057511), FX16_CONST(0.16037245724292815),
+ FX16_CONST(-0.9868094018141854), FX16_CONST(0.16188639378011188),
+ FX16_CONST(-0.9865599102647754), FX16_CONST(0.16339994938297342),
+ FX16_CONST(-0.9863080972445988), FX16_CONST(0.1649131204899694),
+ FX16_CONST(-0.9860539633461955), FX16_CONST(0.16642590354046374),
+ FX16_CONST(-0.9857975091675675), FX16_CONST(0.16793829497473098),
+ FX16_CONST(-0.9855387353121761), FX16_CONST(0.16945029123396793),
+ FX16_CONST(-0.9852776423889412), FX16_CONST(0.17096188876030133),
+ FX16_CONST(-0.98501423101224), FX16_CONST(0.17247308399679537),
+ FX16_CONST(-0.9847485018019043), FX16_CONST(0.17398387338746338),
+ FX16_CONST(-0.9844804553832209), FX16_CONST(0.17549425337727115),
+ FX16_CONST(-0.9842100923869291), FX16_CONST(0.17700422041214864),
+ FX16_CONST(-0.9839374134492189), FX16_CONST(0.17851377093899756),
+ FX16_CONST(-0.9836624192117303), FX16_CONST(0.1800229014056997),
+ FX16_CONST(-0.9833851103215513), FX16_CONST(0.18153160826112447),
+ FX16_CONST(-0.9831054874312164), FX16_CONST(0.1830398879551406),
+ FX16_CONST(-0.9828235511987053), FX16_CONST(0.1845477369386194),
+ FX16_CONST(-0.9825393022874412), FX16_CONST(0.1860551516634466),
+ FX16_CONST(-0.9822527413662894), FX16_CONST(0.1875621285825297),
+ FX16_CONST(-0.9819638691095554), FX16_CONST(0.1890686641498056),
+ FX16_CONST(-0.9816726861969832), FX16_CONST(0.19057475482025232),
+ FX16_CONST(-0.9813791933137547), FX16_CONST(0.19208039704989216),
+ FX16_CONST(-0.9810833911504867), FX16_CONST(0.1935855872958035),
+ FX16_CONST(-0.9807852804032304), FX16_CONST(0.1950903220161283),
+ FX16_CONST(-0.9804848617734693), FX16_CONST(0.19659459767008042),
+ FX16_CONST(-0.9801821359681175), FX16_CONST(0.19809841071795306),
+ FX16_CONST(-0.9798771036995177), FX16_CONST(0.1996017576211306),
+ FX16_CONST(-0.9795697656854406), FX16_CONST(0.2011046348420917),
+ FX16_CONST(-0.979260122649082), FX16_CONST(0.20260703884442108),
+ FX16_CONST(-0.9789481753190622), FX16_CONST(0.20410896609281698),
+ FX16_CONST(-0.9786339244294233), FX16_CONST(0.20561041305309866),
+ FX16_CONST(-0.9783173707196278), FX16_CONST(0.20711137619221812),
+ FX16_CONST(-0.9779985149345571), FX16_CONST(0.2086118519782632),
+ FX16_CONST(-0.97767735782451), FX16_CONST(0.2101118368804695),
+ FX16_CONST(-0.9773539001452), FX16_CONST(0.2116113273692276),
+ FX16_CONST(-0.9770281426577543), FX16_CONST(0.21311031991609156),
+ FX16_CONST(-0.976700086128712), FX16_CONST(0.21460881099378626),
+ FX16_CONST(-0.9763697313300213), FX16_CONST(0.21610679707621913),
+ FX16_CONST(-0.9760370790390391), FX16_CONST(0.21760427463848342),
+ FX16_CONST(-0.9757021300385286), FX16_CONST(0.21910124015686974),
+ FX16_CONST(-0.975364885116657), FX16_CONST(0.22059769010887362),
+ FX16_CONST(-0.9750253450669942), FX16_CONST(0.22209362097320293),
+ FX16_CONST(-0.9746835106885108), FX16_CONST(0.22358902922978954),
+ FX16_CONST(-0.974339382785576), FX16_CONST(0.22508391135979255),
+ FX16_CONST(-0.973992962167956), FX16_CONST(0.22657826384560986),
+ FX16_CONST(-0.9736442496508119), FX16_CONST(0.22807208317088576),
+ FX16_CONST(-0.9732932460546981), FX16_CONST(0.22956536582051906),
+ FX16_CONST(-0.9729399522055603), FX16_CONST(0.23105810828067058),
+ FX16_CONST(-0.9725843689347323), FX16_CONST(0.23255030703877488),
+ FX16_CONST(-0.9722264970789364), FX16_CONST(0.2340419585835432),
+ FX16_CONST(-0.9718663374802794), FX16_CONST(0.23553305940497546),
+ FX16_CONST(-0.9715038909862518), FX16_CONST(0.2370236059943673),
+ FX16_CONST(-0.9711391584497253), FX16_CONST(0.23851359484431783),
+ FX16_CONST(-0.9707721407289505), FX16_CONST(0.24000302244874103),
+ FX16_CONST(-0.9704028386875555), FX16_CONST(0.24149188530286905),
+ FX16_CONST(-0.970031253194544), FX16_CONST(0.24298017990326376),
+ FX16_CONST(-0.9696573851242924), FX16_CONST(0.24446790274782418),
+ FX16_CONST(-0.9692812353565484), FX16_CONST(0.2459550503357948),
+ FX16_CONST(-0.968902804776429), FX16_CONST(0.24744161916777277),
+ FX16_CONST(-0.9685220942744174), FX16_CONST(0.2489276057457198),
+ FX16_CONST(-0.9681391047463624), FX16_CONST(0.25041300657296506),
+ FX16_CONST(-0.9677538370934755), FX16_CONST(0.2518978181542169),
+ FX16_CONST(-0.9673662922223285), FX16_CONST(0.25338203699557027),
+ FX16_CONST(-0.9669764710448523), FX16_CONST(0.25486565960451396),
+ FX16_CONST(-0.9665843744783332), FX16_CONST(0.25634868248994247),
+ FX16_CONST(-0.9661900034454126), FX16_CONST(0.2578311021621587),
+ FX16_CONST(-0.9657933588740837), FX16_CONST(0.2593129151328861),
+ FX16_CONST(-0.9653944416976894), FX16_CONST(0.2607941179152755),
+ FX16_CONST(-0.9649932528549203), FX16_CONST(0.2622747070239138),
+ FX16_CONST(-0.9645897932898129), FX16_CONST(0.26375467897483085),
+ FX16_CONST(-0.9641840639517459), FX16_CONST(0.26523403028551146),
+ FX16_CONST(-0.96377606579544), FX16_CONST(0.2667127574748982),
+ FX16_CONST(-0.963365799780954), FX16_CONST(0.2681908570634031),
+ FX16_CONST(-0.9629532668736839), FX16_CONST(0.2696683255729152),
+ FX16_CONST(-0.9625384680443594), FX16_CONST(0.2711451595268074),
+ FX16_CONST(-0.9621214042690417), FX16_CONST(0.27262135544994853),
+ FX16_CONST(-0.9617020765291227), FX16_CONST(0.2740969098687061),
+ FX16_CONST(-0.9612804858113206), FX16_CONST(0.27557181931095803),
+ FX16_CONST(-0.9608566331076797), FX16_CONST(0.27704608030609995),
+ FX16_CONST(-0.9604305194155658), FX16_CONST(0.2785196893850533),
+ FX16_CONST(-0.9600021457376661), FX16_CONST(0.2799926430802727),
+ FX16_CONST(-0.9595715130819846), FX16_CONST(0.2814649379257576),
+ FX16_CONST(-0.959138622461842), FX16_CONST(0.2829365704570551),
+ FX16_CONST(-0.9587034748958716), FX16_CONST(0.28440753721127177),
+ FX16_CONST(-0.9582660714080177), FX16_CONST(0.28587783472708067),
+ FX16_CONST(-0.957826413027533), FX16_CONST(0.2873474595447289),
+ FX16_CONST(-0.9573845007889761), FX16_CONST(0.28881640820604904),
+ FX16_CONST(-0.9569403357322089), FX16_CONST(0.29028467725446205),
+ FX16_CONST(-0.9564939189023951), FX16_CONST(0.29175226323498915),
+ FX16_CONST(-0.9560452513499964), FX16_CONST(0.2932191626942587),
+ FX16_CONST(-0.955594334130771), FX16_CONST(0.2946853721805145),
+ FX16_CONST(-0.9551411683057709), FX16_CONST(0.2961508882436233),
+ FX16_CONST(-0.9546857549413384), FX16_CONST(0.29761570743508586),
+ FX16_CONST(-0.9542280951091057), FX16_CONST(0.29907982630804025),
+ FX16_CONST(-0.9537681898859903), FX16_CONST(0.3005432414172734),
+ FX16_CONST(-0.9533060403541939), FX16_CONST(0.30200594931922814),
+ FX16_CONST(-0.9528416476011988), FX16_CONST(0.3034679465720107),
+ FX16_CONST(-0.952375012719766), FX16_CONST(0.304929229735402),
+ FX16_CONST(-0.9519061368079325), FX16_CONST(0.30638979537086064),
+ FX16_CONST(-0.9514350209690084), FX16_CONST(0.30784964004153476),
+ FX16_CONST(-0.9509616663115751), FX16_CONST(0.3093087603122687),
+ FX16_CONST(-0.9504860739494817), FX16_CONST(0.31076715274961164),
+ FX16_CONST(-0.9500082450018432), FX16_CONST(0.3122248139218244),
+ FX16_CONST(-0.9495281805930368), FX16_CONST(0.31368174039889113),
+ FX16_CONST(-0.9490458818527007), FX16_CONST(0.31513792875252217),
+ FX16_CONST(-0.9485613499157303), FX16_CONST(0.3165933755561658),
+ FX16_CONST(-0.9480745859222762), FX16_CONST(0.318048077385015),
+ FX16_CONST(-0.9475855910177413), FX16_CONST(0.3195020308160151),
+ FX16_CONST(-0.9470943663527773), FX16_CONST(0.32095523242787477),
+ FX16_CONST(-0.9466009130832836), FX16_CONST(0.3224076788010696),
+ FX16_CONST(-0.9461052323704034), FX16_CONST(0.32385936651785274),
+ FX16_CONST(-0.9456073253805213), FX16_CONST(0.3253102921622629),
+ FX16_CONST(-0.9451071932852605), FX16_CONST(0.32676045232013196),
+ FX16_CONST(-0.9446048372614805), FX16_CONST(0.328209843579092),
+ FX16_CONST(-0.9441002584912728), FX16_CONST(0.32965846252858716),
+ FX16_CONST(-0.9435934581619604), FX16_CONST(0.3311063057598762),
+ FX16_CONST(-0.9430844374660935), FX16_CONST(0.33255336986604417),
+ FX16_CONST(-0.9425731976014469), FX16_CONST(0.3339996514420095),
+ FX16_CONST(-0.9420597397710175), FX16_CONST(0.33544514708453105),
+ FX16_CONST(-0.9415440651830209), FX16_CONST(0.3368898533922196),
+ FX16_CONST(-0.9410261750508894), FX16_CONST(0.33833376696554085),
+ FX16_CONST(-0.9405060705932684), FX16_CONST(0.33977688440682674),
+ FX16_CONST(-0.9399837530340139), FX16_CONST(0.3412192023202824),
+ FX16_CONST(-0.9394592236021898), FX16_CONST(0.34266071731199454),
+ FX16_CONST(-0.9389324835320647), FX16_CONST(0.3441014259899383),
+ FX16_CONST(-0.9384035340631083), FX16_CONST(0.3455413249639887),
+ FX16_CONST(-0.9378723764399899), FX16_CONST(0.34698041084592346),
+ FX16_CONST(-0.937339011912575), FX16_CONST(0.3484186802494345),
+ FX16_CONST(-0.9368034417359216), FX16_CONST(0.34985612979013503),
+ FX16_CONST(-0.9362656671702785), FX16_CONST(0.35129275608556654),
+ FX16_CONST(-0.9357256894810805), FX16_CONST(0.3527285557552103),
+ FX16_CONST(-0.9351835099389477), FX16_CONST(0.35416352542049007),
+ FX16_CONST(-0.9346391298196808), FX16_CONST(0.35559766170478374),
+ FX16_CONST(-0.9340925504042589), FX16_CONST(0.35703096123343003),
+ FX16_CONST(-0.9335437729788362), FX16_CONST(0.3584634206337367),
+ FX16_CONST(-0.9329927988347391), FX16_CONST(0.3598950365349876),
+ FX16_CONST(-0.9324396292684626), FX16_CONST(0.3613258055684539),
+ FX16_CONST(-0.9318842655816681), FX16_CONST(0.362755724367397),
+ FX16_CONST(-0.9313267090811805), FX16_CONST(0.36418478956707984),
+ FX16_CONST(-0.9307669610789837), FX16_CONST(0.36561299780477396),
+ FX16_CONST(-0.9302050228922193), FX16_CONST(0.36704034571976657),
+ FX16_CONST(-0.9296408958431814), FX16_CONST(0.3684668299533719),
+ FX16_CONST(-0.9290745812593159), FX16_CONST(0.3698924471489338),
+ FX16_CONST(-0.9285060804732156), FX16_CONST(0.3713171939518374),
+ FX16_CONST(-0.9279353948226179), FX16_CONST(0.3727410670095158),
+ FX16_CONST(-0.927362525650401), FX16_CONST(0.37416406297145816),
+ FX16_CONST(-0.926787474304582), FX16_CONST(0.3755861784892167),
+ FX16_CONST(-0.9262102421383115), FX16_CONST(0.37700741021641787),
+ FX16_CONST(-0.9256308305098728), FX16_CONST(0.37842775480876534),
+ FX16_CONST(-0.9250492407826776), FX16_CONST(0.3798472089240511),
+ FX16_CONST(-0.9244654743252626), FX16_CONST(0.38126576922216243),
+ FX16_CONST(-0.9238795325112866), FX16_CONST(0.38268343236509),
+ FX16_CONST(-0.9232914167195279), FX16_CONST(0.3841001950169346),
+ FX16_CONST(-0.9227011283338787), FX16_CONST(0.38551605384391857),
+ FX16_CONST(-0.9221086687433452), FX16_CONST(0.38693100551438847),
+ FX16_CONST(-0.9215140393420419), FX16_CONST(0.3883450466988263),
+ FX16_CONST(-0.9209172415291894), FX16_CONST(0.38975817406985663),
+ FX16_CONST(-0.9203182767091108), FX16_CONST(0.39117038430225337),
+ FX16_CONST(-0.9197171462912275), FX16_CONST(0.39258167407295114),
+ FX16_CONST(-0.9191138516900579), FX16_CONST(0.3939920400610479),
+ FX16_CONST(-0.9185083943252123), FX16_CONST(0.39540147894781624),
+ FX16_CONST(-0.9179007756213904), FX16_CONST(0.3968099874167104),
+ FX16_CONST(-0.9172909970083778), FX16_CONST(0.39821756215337384),
+ FX16_CONST(-0.9166790599210428), FX16_CONST(0.3996241998456464),
+ FX16_CONST(-0.9160649657993318), FX16_CONST(0.40102989718357535),
+ FX16_CONST(-0.9154487160882678), FX16_CONST(0.4024346508594183),
+ FX16_CONST(-0.9148303122379462), FX16_CONST(0.40383845756765413),
+ FX16_CONST(-0.9142097557035306), FX16_CONST(0.40524131400499),
+ FX16_CONST(-0.913587047945251), FX16_CONST(0.4066432168703685),
+ FX16_CONST(-0.9129621904283983), FX16_CONST(0.4080441628649783),
+ FX16_CONST(-0.9123351846233229), FX16_CONST(0.40944414869225737),
+ FX16_CONST(-0.9117060320054299), FX16_CONST(0.41084317105790386),
+ FX16_CONST(-0.9110747340551762), FX16_CONST(0.41224122666988294),
+ FX16_CONST(-0.9104412922580671), FX16_CONST(0.4136383122384348),
+ FX16_CONST(-0.9098057081046524), FX16_CONST(0.4150344244760812),
+ FX16_CONST(-0.9091679830905225), FX16_CONST(0.4164295600976369),
+ FX16_CONST(-0.9085281187163062), FX16_CONST(0.41782371582021216),
+ FX16_CONST(-0.9078861164876663), FX16_CONST(0.41921688836322396),
+ FX16_CONST(-0.9072419779152958), FX16_CONST(0.4206090744484027),
+ FX16_CONST(-0.9065957045149156), FX16_CONST(0.4220002707997992),
+ FX16_CONST(-0.9059472978072687), FX16_CONST(0.42339047414379566),
+ FX16_CONST(-0.9052967593181189), FX16_CONST(0.4247796812091086),
+ FX16_CONST(-0.9046440905782462), FX16_CONST(0.42616788872679956),
+ FX16_CONST(-0.9039892931234433), FX16_CONST(0.42755509343028214),
+ FX16_CONST(-0.9033323684945117), FX16_CONST(0.4289412920553297),
+ FX16_CONST(-0.902673318237259), FX16_CONST(0.43032648134008217),
+ FX16_CONST(-0.9020121439024933), FX16_CONST(0.431710658025057),
+ FX16_CONST(-0.9013488470460221), FX16_CONST(0.4330938188531518),
+ FX16_CONST(-0.9006834292286469), FX16_CONST(0.4344759605696557),
+ FX16_CONST(-0.9000158920161602), FX16_CONST(0.43585707992225564),
+ FX16_CONST(-0.8993462369793418), FX16_CONST(0.4372371736610436),
+ FX16_CONST(-0.898674465693954), FX16_CONST(0.43861623853852727),
+ FX16_CONST(-0.89800057974074), FX16_CONST(0.43999427130963303),
+ FX16_CONST(-0.8973245807054183), FX16_CONST(0.4413712687317166),
+ FX16_CONST(-0.8966464701786802), FX16_CONST(0.4427472275645701),
+ FX16_CONST(-0.895966249756185), FX16_CONST(0.4441221445704294),
+ FX16_CONST(-0.8952839210385577), FX16_CONST(0.4454960165139813),
+ FX16_CONST(-0.8945994856313828), FX16_CONST(0.4468688401623739),
+ FX16_CONST(-0.8939129451452034), FX16_CONST(0.4482406122852198),
+ FX16_CONST(-0.8932243011955153), FX16_CONST(0.4496113296546066),
+ FX16_CONST(-0.8925335554027646), FX16_CONST(0.45098098904510403),
+ FX16_CONST(-0.891840709392343), FX16_CONST(0.4523495872337704),
+ FX16_CONST(-0.8911457647945834), FX16_CONST(0.4537171210001635),
+ FX16_CONST(-0.890448723244758), FX16_CONST(0.4550835871263436),
+ FX16_CONST(-0.8897495863830729), FX16_CONST(0.45644898239688386),
+ FX16_CONST(-0.8890483558546646), FX16_CONST(0.4578133035988773),
+ FX16_CONST(-0.8883450333095962), FX16_CONST(0.45917654752194437),
+ FX16_CONST(-0.8876396204028542), FX16_CONST(0.46053871095823956),
+ FX16_CONST(-0.8869321187943423), FX16_CONST(0.46189979070246245),
+ FX16_CONST(-0.8862225301488807), FX16_CONST(0.46325978355186004),
+ FX16_CONST(-0.8855108561362), FX16_CONST(0.4646186863062378),
+ FX16_CONST(-0.8847970984309377), FX16_CONST(0.4659764957679663),
+ FX16_CONST(-0.8840812587126353), FX16_CONST(0.4673332087419879),
+ FX16_CONST(-0.8833633386657318), FX16_CONST(0.46868882203582757),
+ FX16_CONST(-0.8826433399795629), FX16_CONST(0.4700433324595954),
+ FX16_CONST(-0.881921264348355), FX16_CONST(0.4713967368259976),
+ FX16_CONST(-0.881197113471222), FX16_CONST(0.47274903195034285),
+ FX16_CONST(-0.8804708890521606), FX16_CONST(0.4741002146505502),
+ FX16_CONST(-0.8797425928000476), FX16_CONST(0.4754502817471554),
+ FX16_CONST(-0.8790122264286336), FX16_CONST(0.4767992300633218),
+ FX16_CONST(-0.8782797916565416), FX16_CONST(0.4781470564248429),
+ FX16_CONST(-0.8775452902072612), FX16_CONST(0.479493757660153),
+ FX16_CONST(-0.8768087238091457), FX16_CONST(0.48083933060033407),
+ FX16_CONST(-0.8760700941954069), FX16_CONST(0.4821837720791222),
+ FX16_CONST(-0.875329403104111), FX16_CONST(0.48352707893291835),
+ FX16_CONST(-0.8745866522781762), FX16_CONST(0.4848692480007909),
+ FX16_CONST(-0.8738418434653669), FX16_CONST(0.4862102761244863),
+ FX16_CONST(-0.8730949784182901), FX16_CONST(0.487550160148436),
+ FX16_CONST(-0.8723460588943914), FX16_CONST(0.4888888969197634),
+ FX16_CONST(-0.8715950866559513), FX16_CONST(0.4902264832882907),
+ FX16_CONST(-0.8708420634700791), FX16_CONST(0.4915629161065497),
+ FX16_CONST(-0.8700869911087115), FX16_CONST(0.49289819222978387),
+ FX16_CONST(-0.8693298713486067), FX16_CONST(0.49423230851595973),
+ FX16_CONST(-0.8685707059713408), FX16_CONST(0.49556526182577265),
+ FX16_CONST(-0.8678094967633035), FX16_CONST(0.496897049022654),
+ FX16_CONST(-0.8670462455156929), FX16_CONST(0.4982276669727815),
+ FX16_CONST(-0.8662809540245131), FX16_CONST(0.49955711254508167),
+ FX16_CONST(-0.8655136240905691), FX16_CONST(0.5008853826112407),
+ FX16_CONST(-0.8647442575194624), FX16_CONST(0.5022124740457108),
+ FX16_CONST(-0.8639728561215866), FX16_CONST(0.5035383837257178),
+ FX16_CONST(-0.8631994217121244), FX16_CONST(0.5048631085312671),
+ FX16_CONST(-0.8624239561110407), FX16_CONST(0.506186645345155),
+ FX16_CONST(-0.8616464611430814), FX16_CONST(0.5075089910529706),
+ FX16_CONST(-0.8608669386377673), FX16_CONST(0.508830142543107),
+ FX16_CONST(-0.8600853904293901), FX16_CONST(0.5101500967067669),
+ FX16_CONST(-0.8593018183570087), FX16_CONST(0.5114688504379699),
+ FX16_CONST(-0.858516224264443), FX16_CONST(0.5127864006335626),
+ FX16_CONST(-0.8577286100002722), FX16_CONST(0.5141027441932216),
+ FX16_CONST(-0.8569389774178288), FX16_CONST(0.5154178780194629),
+ FX16_CONST(-0.8561473283751945), FX16_CONST(0.5167317990176499),
+ FX16_CONST(-0.8553536647351959), FX16_CONST(0.5180445040959996),
+ FX16_CONST(-0.8545579883654008), FX16_CONST(0.5193559901655892),
+ FX16_CONST(-0.8537603011381115), FX16_CONST(0.5206662541403668),
+ FX16_CONST(-0.8529606049303637), FX16_CONST(0.5219752929371542),
+ FX16_CONST(-0.8521589016239198), FX16_CONST(0.5232831034756564),
+ FX16_CONST(-0.8513551931052651), FX16_CONST(0.5245896826784691),
+ FX16_CONST(-0.8505494812656038), FX16_CONST(0.5258950274710842),
+ FX16_CONST(-0.8497417680008528), FX16_CONST(0.527199134781901),
+ FX16_CONST(-0.8489320552116397), FX16_CONST(0.5285020015422283),
+ FX16_CONST(-0.8481203448032973), FX16_CONST(0.5298036246862946),
+ FX16_CONST(-0.8473066386858583), FX16_CONST(0.531104001151255),
+ FX16_CONST(-0.8464909387740519), FX16_CONST(0.5324031278771981),
+ FX16_CONST(-0.8456732469872993), FX16_CONST(0.5337010018071525),
+ FX16_CONST(-0.8448535652497072), FX16_CONST(0.5349976198870969),
+ FX16_CONST(-0.8440318954900665), FX16_CONST(0.536292979065963),
+ FX16_CONST(-0.8432082396418454), FX16_CONST(0.5375870762956455),
+ FX16_CONST(-0.8423825996431858), FX16_CONST(0.5388799085310085),
+ FX16_CONST(-0.8415549774368988), FX16_CONST(0.5401714727298924),
+ FX16_CONST(-0.8407253749704583), FX16_CONST(0.5414617658531231),
+ FX16_CONST(-0.8398937941959996), FX16_CONST(0.5427507848645157),
+ FX16_CONST(-0.8390602370703127), FX16_CONST(0.5440385267308838),
+ FX16_CONST(-0.838224705554838), FX16_CONST(0.5453249884220465),
+ FX16_CONST(-0.8373872016156618), FX16_CONST(0.5466101669108351),
+ FX16_CONST(-0.8365477272235122), FX16_CONST(0.5478940591730997),
+ FX16_CONST(-0.8357062843537528), FX16_CONST(0.5491766621877194),
+ FX16_CONST(-0.8348628749863801), FX16_CONST(0.5504579729366046),
+ FX16_CONST(-0.8340175011060181), FX16_CONST(0.5517379884047073),
+ FX16_CONST(-0.8331701647019131), FX16_CONST(0.5530167055800277),
+ FX16_CONST(-0.83232086776793), FX16_CONST(0.5542941214536197),
+ FX16_CONST(-0.8314696123025455), FX16_CONST(0.5555702330196018),
+ FX16_CONST(-0.8306164003088464), FX16_CONST(0.5568450372751599),
+ FX16_CONST(-0.8297612337945232), FX16_CONST(0.558118531220556),
+ FX16_CONST(-0.8289041147718649), FX16_CONST(0.5593907118591361),
+ FX16_CONST(-0.8280450452577557), FX16_CONST(0.5606615761973361),
+ FX16_CONST(-0.8271840272736694), FX16_CONST(0.561931121244689),
+ FX16_CONST(-0.8263210628456636), FX16_CONST(0.5631993440138339),
+ FX16_CONST(-0.8254561540043777), FX16_CONST(0.5644662415205193),
+ FX16_CONST(-0.8245893027850253), FX16_CONST(0.5657318107836131),
+ FX16_CONST(-0.8237205112273913), FX16_CONST(0.5669960488251088),
+ FX16_CONST(-0.8228497813758266), FX16_CONST(0.568258952670131),
+ FX16_CONST(-0.8219771152792418), FX16_CONST(0.5695205193469468),
+ FX16_CONST(-0.8211025149911049), FX16_CONST(0.570780745886967),
+ FX16_CONST(-0.8202259825694347), FX16_CONST(0.5720396293247569),
+ FX16_CONST(-0.8193475200767969), FX16_CONST(0.5732971666980422),
+ FX16_CONST(-0.8184671295802985), FX16_CONST(0.574553355047716),
+ FX16_CONST(-0.8175848131515839), FX16_CONST(0.5758081914178449),
+ FX16_CONST(-0.816700572866828), FX16_CONST(0.5770616728556792),
+ FX16_CONST(-0.8158144108067339), FX16_CONST(0.5783137964116554),
+ FX16_CONST(-0.8149263290565266), FX16_CONST(0.5795645591394057),
+ FX16_CONST(-0.8140363297059483), FX16_CONST(0.5808139580957646),
+ FX16_CONST(-0.8131444148492539), FX16_CONST(0.5820619903407751),
+ FX16_CONST(-0.8122505865852042), FX16_CONST(0.583308652937698),
+ FX16_CONST(-0.811354847017064), FX16_CONST(0.5845539429530151),
+ FX16_CONST(-0.8104571982525949), FX16_CONST(0.5857978574564388),
+ FX16_CONST(-0.8095576424040513), FX16_CONST(0.5870403935209181),
+ FX16_CONST(-0.8086561815881749), FX16_CONST(0.5882815482226454),
+ FX16_CONST(-0.8077528179261906), FX16_CONST(0.5895213186410635),
+ FX16_CONST(-0.8068475535437994), FX16_CONST(0.5907597018588739),
+ FX16_CONST(-0.8059403905711764), FX16_CONST(0.5919966949620408),
+ FX16_CONST(-0.8050313311429637), FX16_CONST(0.5932322950397998),
+ FX16_CONST(-0.8041203773982657), FX16_CONST(0.5944664991846645),
+ FX16_CONST(-0.8032075314806453), FX16_CONST(0.5956993044924328),
+ FX16_CONST(-0.8022927955381159), FX16_CONST(0.5969307080621962),
+ FX16_CONST(-0.8013761717231404), FX16_CONST(0.598160706996342),
+ FX16_CONST(-0.8004576621926228), FX16_CONST(0.5993892984005644),
+ FX16_CONST(-0.799537269107905), FX16_CONST(0.600616479383869),
+ FX16_CONST(-0.7986149946347607), FX16_CONST(0.6018422470585802),
+ FX16_CONST(-0.7976908409433914), FX16_CONST(0.6030665985403478),
+ FX16_CONST(-0.7967648102084189), FX16_CONST(0.6042895309481557),
+ FX16_CONST(-0.7958369046088837), FX16_CONST(0.6055110414043253),
+ FX16_CONST(-0.794907126328237), FX16_CONST(0.6067311270345245),
+ FX16_CONST(-0.7939754775543371), FX16_CONST(0.6079497849677737),
+ FX16_CONST(-0.7930419604794441), FX16_CONST(0.6091670123364527),
+ FX16_CONST(-0.7921065773002126), FX16_CONST(0.6103828062763091),
+ FX16_CONST(-0.7911693302176903), FX16_CONST(0.6115971639264617),
+ FX16_CONST(-0.7902302214373101), FX16_CONST(0.6128100824294096),
+ FX16_CONST(-0.7892892531688857), FX16_CONST(0.6140215589310385),
+ FX16_CONST(-0.7883464276266061), FX16_CONST(0.615231590580627),
+ FX16_CONST(-0.7874017470290317), FX16_CONST(0.6164401745308532),
+ FX16_CONST(-0.786455213599086), FX16_CONST(0.6176473079378036),
+ FX16_CONST(-0.785506829564054), FX16_CONST(0.6188529879609762),
+ FX16_CONST(-0.7845565971555752), FX16_CONST(0.6200572117632892),
+ FX16_CONST(-0.7836045186096382), FX16_CONST(0.6212599765110877),
+ FX16_CONST(-0.7826505961665761), FX16_CONST(0.6224612793741495),
+ FX16_CONST(-0.7816948320710597), FX16_CONST(0.6236611175256942),
+ FX16_CONST(-0.7807372285720947), FX16_CONST(0.6248594881423861),
+ FX16_CONST(-0.7797777879230146), FX16_CONST(0.6260563884043434),
+ FX16_CONST(-0.7788165123814759), FX16_CONST(0.6272518154951442),
+ FX16_CONST(-0.7778534042094529), FX16_CONST(0.6284457666018328),
+ FX16_CONST(-0.7768884656732328), FX16_CONST(0.6296382389149267),
+ FX16_CONST(-0.7759216990434078), FX16_CONST(0.6308292296284242),
+ FX16_CONST(-0.774953106594874), FX16_CONST(0.6320187359398088),
+ FX16_CONST(-0.7739826906068228), FX16_CONST(0.6332067550500572),
+ FX16_CONST(-0.7730104533627369), FX16_CONST(0.6343932841636456),
+ FX16_CONST(-0.7720363971503849), FX16_CONST(0.6355783204885557),
+ FX16_CONST(-0.771060524261814), FX16_CONST(0.6367618612362839),
+ FX16_CONST(-0.7700828369933481), FX16_CONST(0.6379439036218438),
+ FX16_CONST(-0.7691033376455797), FX16_CONST(0.6391244448637756),
+ FX16_CONST(-0.7681220285233654), FX16_CONST(0.6403034821841517),
+ FX16_CONST(-0.7671389119358203), FX16_CONST(0.6414810128085833),
+ FX16_CONST(-0.7661539901963133), FX16_CONST(0.6426570339662265),
+ FX16_CONST(-0.7651672656224592), FX16_CONST(0.6438315428897912),
+ FX16_CONST(-0.7641787405361168), FX16_CONST(0.6450045368155438),
+ FX16_CONST(-0.7631884172633813), FX16_CONST(0.6461760129833163),
+ FX16_CONST(-0.7621962981345789), FX16_CONST(0.6473459686365122),
+ FX16_CONST(-0.7612023854842622), FX16_CONST(0.648514401022112),
+ FX16_CONST(-0.7602066816512026), FX16_CONST(0.6496813073906829),
+ FX16_CONST(-0.7592091889783882), FX16_CONST(0.6508466849963808),
+ FX16_CONST(-0.7582099098130154), FX16_CONST(0.6520105310969595),
+ FX16_CONST(-0.7572088465064846), FX16_CONST(0.6531728429537768),
+ FX16_CONST(-0.7562060014143943), FX16_CONST(0.6543336178318007),
+ FX16_CONST(-0.7552013768965369), FX16_CONST(0.655492852999615),
+ FX16_CONST(-0.7541949753168894), FX16_CONST(0.6566505457294287),
+ FX16_CONST(-0.7531867990436126), FX16_CONST(0.6578066932970785),
+ FX16_CONST(-0.7521768504490427), FX16_CONST(0.6589612929820373),
+ FX16_CONST(-0.7511651319096864), FX16_CONST(0.6601143420674206),
+ FX16_CONST(-0.7501516458062154), FX16_CONST(0.6612658378399917),
+ FX16_CONST(-0.7491363945234596), FX16_CONST(0.6624157775901715),
+ FX16_CONST(-0.7481193804504037), FX16_CONST(0.6635641586120395),
+ FX16_CONST(-0.7471006059801802), FX16_CONST(0.6647109782033448),
+ FX16_CONST(-0.7460800735100638), FX16_CONST(0.6658562336655097),
+ FX16_CONST(-0.7450577854414658), FX16_CONST(0.6669999223036377),
+ FX16_CONST(-0.7440337441799296), FX16_CONST(0.6681420414265181),
+ FX16_CONST(-0.7430079521351219), FX16_CONST(0.6692825883466358),
+ FX16_CONST(-0.7419804117208312), FX16_CONST(0.670421560380173),
+ FX16_CONST(-0.7409511253549591), FX16_CONST(0.6715589548470183),
+ FX16_CONST(-0.7399200954595161), FX16_CONST(0.672694769070773),
+ FX16_CONST(-0.7388873244606156), FX16_CONST(0.6738290003787556),
+ FX16_CONST(-0.7378528147884663), FX16_CONST(0.6749616461020117),
+ FX16_CONST(-0.7368165688773701), FX16_CONST(0.6760927035753157),
+ FX16_CONST(-0.7357785891657136), FX16_CONST(0.6772221701371803),
+ FX16_CONST(-0.7347388780959634), FX16_CONST(0.6783500431298615),
+ FX16_CONST(-0.7336974381146601), FX16_CONST(0.6794763198993652),
+ FX16_CONST(-0.7326542716724131), FX16_CONST(0.6806009977954527),
+ FX16_CONST(-0.7316093812238929), FX16_CONST(0.6817240741716495),
+ FX16_CONST(-0.7305627692278277), FX16_CONST(0.6828455463852479),
+ FX16_CONST(-0.729514438146997), FX16_CONST(0.6839654117973154),
+ FX16_CONST(-0.7284643904482251), FX16_CONST(0.6850836677727005),
+ FX16_CONST(-0.7274126286023762), FX16_CONST(0.6862003116800381),
+ FX16_CONST(-0.7263591550843463), FX16_CONST(0.6873153408917587),
+ FX16_CONST(-0.725303972373061), FX16_CONST(0.6884287527840902),
+ FX16_CONST(-0.724247082951467), FX16_CONST(0.6895405447370668),
+ FX16_CONST(-0.7231884893065273), FX16_CONST(0.6906507141345346),
+ FX16_CONST(-0.7221281939292151), FX16_CONST(0.6917592583641579),
+ FX16_CONST(-0.7210661993145084), FX16_CONST(0.6928661748174243),
+ FX16_CONST(-0.7200025079613819), FX16_CONST(0.6939714608896537),
+ FX16_CONST(-0.7189371223728046), FX16_CONST(0.6950751139800007),
+ FX16_CONST(-0.7178700450557318), FX16_CONST(0.6961771314914629),
+ FX16_CONST(-0.7168012785210994), FX16_CONST(0.6972775108308866),
+ FX16_CONST(-0.715730825283819), FX16_CONST(0.6983762494089724),
+ FX16_CONST(-0.7146586878627694), FX16_CONST(0.6994733446402834),
+ FX16_CONST(-0.7135848687807937), FX16_CONST(0.7005687939432481),
+ FX16_CONST(-0.7125093705646924), FX16_CONST(0.7016625947401685),
+ FX16_CONST(-0.7114321957452164), FX16_CONST(0.7027547444572253),
+ FX16_CONST(-0.7103533468570622), FX16_CONST(0.703845240524485),
+ FX16_CONST(-0.709272826438866), FX16_CONST(0.7049340803759045),
+ FX16_CONST(-0.7081906370331956), FX16_CONST(0.7060212614493395),
+ FX16_CONST(-0.7071067811865477), FX16_CONST(0.7071067811865474),
+ FX16_CONST(-0.7060212614493399), FX16_CONST(0.7081906370331953),
+ FX16_CONST(-0.7049340803759048), FX16_CONST(0.7092728264388657),
+ FX16_CONST(-0.7038452405244854), FX16_CONST(0.7103533468570619),
+ FX16_CONST(-0.7027547444572256), FX16_CONST(0.7114321957452161),
+ FX16_CONST(-0.7016625947401687), FX16_CONST(0.7125093705646921),
+ FX16_CONST(-0.7005687939432484), FX16_CONST(0.7135848687807935),
+ FX16_CONST(-0.6994733446402838), FX16_CONST(0.7146586878627691),
+ FX16_CONST(-0.6983762494089727), FX16_CONST(0.7157308252838188),
+ FX16_CONST(-0.697277510830887), FX16_CONST(0.7168012785210991),
+ FX16_CONST(-0.6961771314914632), FX16_CONST(0.7178700450557315),
+ FX16_CONST(-0.695075113980001), FX16_CONST(0.7189371223728043),
+ FX16_CONST(-0.693971460889654), FX16_CONST(0.7200025079613817),
+ FX16_CONST(-0.6928661748174246), FX16_CONST(0.7210661993145082),
+ FX16_CONST(-0.6917592583641582), FX16_CONST(0.7221281939292149),
+ FX16_CONST(-0.6906507141345349), FX16_CONST(0.7231884893065271),
+ FX16_CONST(-0.6895405447370672), FX16_CONST(0.7242470829514667),
+ FX16_CONST(-0.6884287527840905), FX16_CONST(0.7253039723730607),
+ FX16_CONST(-0.687315340891759), FX16_CONST(0.726359155084346),
+ FX16_CONST(-0.6862003116800385), FX16_CONST(0.7274126286023759),
+ FX16_CONST(-0.6850836677727008), FX16_CONST(0.7284643904482249),
+ FX16_CONST(-0.6839654117973157), FX16_CONST(0.7295144381469967),
+ FX16_CONST(-0.6828455463852482), FX16_CONST(0.7305627692278274),
+ FX16_CONST(-0.6817240741716498), FX16_CONST(0.7316093812238925),
+ FX16_CONST(-0.680600997795453), FX16_CONST(0.7326542716724129),
+ FX16_CONST(-0.6794763198993655), FX16_CONST(0.7336974381146598),
+ FX16_CONST(-0.6783500431298618), FX16_CONST(0.7347388780959632),
+ FX16_CONST(-0.6772221701371807), FX16_CONST(0.7357785891657133),
+ FX16_CONST(-0.676092703575316), FX16_CONST(0.7368165688773698),
+ FX16_CONST(-0.674961646102012), FX16_CONST(0.737852814788466),
+ FX16_CONST(-0.6738290003787559), FX16_CONST(0.7388873244606152),
+ FX16_CONST(-0.6726947690707733), FX16_CONST(0.7399200954595158),
+ FX16_CONST(-0.6715589548470187), FX16_CONST(0.7409511253549589),
+ FX16_CONST(-0.6704215603801733), FX16_CONST(0.7419804117208308),
+ FX16_CONST(-0.6692825883466361), FX16_CONST(0.7430079521351216),
+ FX16_CONST(-0.6681420414265185), FX16_CONST(0.7440337441799294),
+ FX16_CONST(-0.666999922303638), FX16_CONST(0.7450577854414656),
+ FX16_CONST(-0.6658562336655101), FX16_CONST(0.7460800735100634),
+ FX16_CONST(-0.6647109782033451), FX16_CONST(0.7471006059801799),
+ FX16_CONST(-0.6635641586120399), FX16_CONST(0.7481193804504035),
+ FX16_CONST(-0.6624157775901718), FX16_CONST(0.7491363945234594),
+ FX16_CONST(-0.661265837839992), FX16_CONST(0.7501516458062152),
+ FX16_CONST(-0.6601143420674209), FX16_CONST(0.751165131909686),
+ FX16_CONST(-0.6589612929820376), FX16_CONST(0.7521768504490425),
+ FX16_CONST(-0.6578066932970789), FX16_CONST(0.7531867990436123),
+ FX16_CONST(-0.656650545729429), FX16_CONST(0.7541949753168892),
+ FX16_CONST(-0.6554928529996153), FX16_CONST(0.7552013768965365),
+ FX16_CONST(-0.654333617831801), FX16_CONST(0.7562060014143941),
+ FX16_CONST(-0.6531728429537771), FX16_CONST(0.7572088465064842),
+ FX16_CONST(-0.6520105310969597), FX16_CONST(0.7582099098130151),
+ FX16_CONST(-0.650846684996381), FX16_CONST(0.759209188978388),
+ FX16_CONST(-0.6496813073906832), FX16_CONST(0.7602066816512024),
+ FX16_CONST(-0.6485144010221123), FX16_CONST(0.7612023854842619),
+ FX16_CONST(-0.6473459686365125), FX16_CONST(0.7621962981345786),
+ FX16_CONST(-0.6461760129833166), FX16_CONST(0.763188417263381),
+ FX16_CONST(-0.6450045368155441), FX16_CONST(0.7641787405361166),
+ FX16_CONST(-0.6438315428897915), FX16_CONST(0.7651672656224588),
+ FX16_CONST(-0.6426570339662268), FX16_CONST(0.7661539901963129),
+ FX16_CONST(-0.6414810128085836), FX16_CONST(0.76713891193582),
+ FX16_CONST(-0.640303482184152), FX16_CONST(0.7681220285233651),
+ FX16_CONST(-0.639124444863776), FX16_CONST(0.7691033376455795),
+ FX16_CONST(-0.6379439036218442), FX16_CONST(0.7700828369933479),
+ FX16_CONST(-0.6367618612362842), FX16_CONST(0.7710605242618138),
+ FX16_CONST(-0.635578320488556), FX16_CONST(0.7720363971503846),
+ FX16_CONST(-0.6343932841636459), FX16_CONST(0.7730104533627365),
+ FX16_CONST(-0.6332067550500575), FX16_CONST(0.7739826906068226),
+ FX16_CONST(-0.6320187359398092), FX16_CONST(0.7749531065948737),
+ FX16_CONST(-0.6308292296284246), FX16_CONST(0.7759216990434076),
+ FX16_CONST(-0.629638238914927), FX16_CONST(0.7768884656732326),
+ FX16_CONST(-0.6284457666018332), FX16_CONST(0.7778534042094527),
+ FX16_CONST(-0.6272518154951445), FX16_CONST(0.7788165123814756),
+ FX16_CONST(-0.6260563884043437), FX16_CONST(0.7797777879230143),
+ FX16_CONST(-0.6248594881423865), FX16_CONST(0.7807372285720944),
+ FX16_CONST(-0.6236611175256945), FX16_CONST(0.7816948320710594),
+ FX16_CONST(-0.6224612793741499), FX16_CONST(0.7826505961665758),
+ FX16_CONST(-0.621259976511088), FX16_CONST(0.7836045186096379),
+ FX16_CONST(-0.6200572117632894), FX16_CONST(0.784556597155575),
+ FX16_CONST(-0.6188529879609765), FX16_CONST(0.7855068295640538),
+ FX16_CONST(-0.617647307937804), FX16_CONST(0.7864552135990857),
+ FX16_CONST(-0.6164401745308535), FX16_CONST(0.7874017470290314),
+ FX16_CONST(-0.6152315905806274), FX16_CONST(0.7883464276266059),
+ FX16_CONST(-0.6140215589310388), FX16_CONST(0.7892892531688854),
+ FX16_CONST(-0.6128100824294099), FX16_CONST(0.7902302214373098),
+ FX16_CONST(-0.611597163926462), FX16_CONST(0.7911693302176901),
+ FX16_CONST(-0.6103828062763095), FX16_CONST(0.7921065773002124),
+ FX16_CONST(-0.6091670123364531), FX16_CONST(0.7930419604794438),
+ FX16_CONST(-0.6079497849677741), FX16_CONST(0.7939754775543368),
+ FX16_CONST(-0.6067311270345248), FX16_CONST(0.7949071263282368),
+ FX16_CONST(-0.6055110414043257), FX16_CONST(0.7958369046088833),
+ FX16_CONST(-0.6042895309481561), FX16_CONST(0.7967648102084187),
+ FX16_CONST(-0.6030665985403482), FX16_CONST(0.7976908409433912),
+ FX16_CONST(-0.6018422470585806), FX16_CONST(0.7986149946347605),
+ FX16_CONST(-0.6006164793838693), FX16_CONST(0.7995372691079048),
+ FX16_CONST(-0.5993892984005648), FX16_CONST(0.8004576621926226),
+ FX16_CONST(-0.5981607069963424), FX16_CONST(0.8013761717231401),
+ FX16_CONST(-0.5969307080621965), FX16_CONST(0.8022927955381157),
+ FX16_CONST(-0.5956993044924332), FX16_CONST(0.803207531480645),
+ FX16_CONST(-0.5944664991846649), FX16_CONST(0.8041203773982655),
+ FX16_CONST(-0.5932322950398001), FX16_CONST(0.8050313311429633),
+ FX16_CONST(-0.5919966949620411), FX16_CONST(0.8059403905711762),
+ FX16_CONST(-0.5907597018588743), FX16_CONST(0.8068475535437992),
+ FX16_CONST(-0.5895213186410638), FX16_CONST(0.8077528179261904),
+ FX16_CONST(-0.5882815482226458), FX16_CONST(0.8086561815881746),
+ FX16_CONST(-0.5870403935209184), FX16_CONST(0.8095576424040509),
+ FX16_CONST(-0.5857978574564391), FX16_CONST(0.8104571982525945),
+ FX16_CONST(-0.5845539429530154), FX16_CONST(0.8113548470170636),
+ FX16_CONST(-0.5833086529376983), FX16_CONST(0.8122505865852039),
+ FX16_CONST(-0.5820619903407754), FX16_CONST(0.8131444148492536),
+ FX16_CONST(-0.580813958095765), FX16_CONST(0.8140363297059481),
+ FX16_CONST(-0.5795645591394061), FX16_CONST(0.8149263290565264),
+ FX16_CONST(-0.5783137964116558), FX16_CONST(0.8158144108067337),
+ FX16_CONST(-0.5770616728556796), FX16_CONST(0.8167005728668277),
+ FX16_CONST(-0.5758081914178452), FX16_CONST(0.8175848131515837),
+ FX16_CONST(-0.5745533550477163), FX16_CONST(0.8184671295802983),
+ FX16_CONST(-0.5732971666980426), FX16_CONST(0.8193475200767967),
+ FX16_CONST(-0.5720396293247574), FX16_CONST(0.8202259825694345),
+ FX16_CONST(-0.5707807458869674), FX16_CONST(0.8211025149911046),
+ FX16_CONST(-0.5695205193469471), FX16_CONST(0.8219771152792416),
+ FX16_CONST(-0.5682589526701314), FX16_CONST(0.8228497813758264),
+ FX16_CONST(-0.5669960488251091), FX16_CONST(0.8237205112273911),
+ FX16_CONST(-0.5657318107836136), FX16_CONST(0.8245893027850251),
+ FX16_CONST(-0.5644662415205196), FX16_CONST(0.8254561540043773),
+ FX16_CONST(-0.5631993440138342), FX16_CONST(0.8263210628456634),
+ FX16_CONST(-0.5619311212446894), FX16_CONST(0.8271840272736691),
+ FX16_CONST(-0.5606615761973366), FX16_CONST(0.8280450452577554),
+ FX16_CONST(-0.5593907118591365), FX16_CONST(0.8289041147718647),
+ FX16_CONST(-0.5581185312205563), FX16_CONST(0.8297612337945228),
+ FX16_CONST(-0.5568450372751602), FX16_CONST(0.8306164003088462),
+ FX16_CONST(-0.5555702330196022), FX16_CONST(0.8314696123025452),
+ FX16_CONST(-0.55429412145362), FX16_CONST(0.8323208677679297),
+ FX16_CONST(-0.553016705580028), FX16_CONST(0.8331701647019129),
+ FX16_CONST(-0.5517379884047078), FX16_CONST(0.8340175011060179),
+ FX16_CONST(-0.550457972936605), FX16_CONST(0.8348628749863799),
+ FX16_CONST(-0.5491766621877198), FX16_CONST(0.8357062843537525),
+ FX16_CONST(-0.5478940591731001), FX16_CONST(0.836547727223512),
+ FX16_CONST(-0.5466101669108354), FX16_CONST(0.8373872016156616),
+ FX16_CONST(-0.5453249884220468), FX16_CONST(0.8382247055548377),
+ FX16_CONST(-0.5440385267308842), FX16_CONST(0.8390602370703125),
+ FX16_CONST(-0.542750784864516), FX16_CONST(0.8398937941959994),
+ FX16_CONST(-0.5414617658531234), FX16_CONST(0.8407253749704581),
+ FX16_CONST(-0.5401714727298927), FX16_CONST(0.8415549774368986),
+ FX16_CONST(-0.5388799085310089), FX16_CONST(0.8423825996431855),
+ FX16_CONST(-0.5375870762956458), FX16_CONST(0.8432082396418452),
+ FX16_CONST(-0.5362929790659634), FX16_CONST(0.8440318954900663),
+ FX16_CONST(-0.5349976198870973), FX16_CONST(0.844853565249707),
+ FX16_CONST(-0.5337010018071529), FX16_CONST(0.8456732469872991),
+ FX16_CONST(-0.5324031278771986), FX16_CONST(0.8464909387740517),
+ FX16_CONST(-0.5311040011512553), FX16_CONST(0.8473066386858581),
+ FX16_CONST(-0.5298036246862949), FX16_CONST(0.8481203448032971),
+ FX16_CONST(-0.5285020015422286), FX16_CONST(0.8489320552116395),
+ FX16_CONST(-0.5271991347819014), FX16_CONST(0.8497417680008524),
+ FX16_CONST(-0.5258950274710845), FX16_CONST(0.8505494812656035),
+ FX16_CONST(-0.5245896826784694), FX16_CONST(0.8513551931052649),
+ FX16_CONST(-0.5232831034756568), FX16_CONST(0.8521589016239196),
+ FX16_CONST(-0.5219752929371545), FX16_CONST(0.8529606049303635),
+ FX16_CONST(-0.5206662541403673), FX16_CONST(0.8537603011381113),
+ FX16_CONST(-0.5193559901655895), FX16_CONST(0.8545579883654005),
+ FX16_CONST(-0.5180445040959999), FX16_CONST(0.8553536647351957),
+ FX16_CONST(-0.5167317990176503), FX16_CONST(0.8561473283751942),
+ FX16_CONST(-0.5154178780194633), FX16_CONST(0.8569389774178285),
+ FX16_CONST(-0.5141027441932219), FX16_CONST(0.857728610000272),
+ FX16_CONST(-0.512786400633563), FX16_CONST(0.8585162242644427),
+ FX16_CONST(-0.5114688504379703), FX16_CONST(0.8593018183570085),
+ FX16_CONST(-0.5101500967067673), FX16_CONST(0.8600853904293899),
+ FX16_CONST(-0.5088301425431074), FX16_CONST(0.8608669386377671),
+ FX16_CONST(-0.5075089910529711), FX16_CONST(0.8616464611430812),
+ FX16_CONST(-0.5061866453451553), FX16_CONST(0.8624239561110405),
+ FX16_CONST(-0.5048631085312675), FX16_CONST(0.8631994217121242),
+ FX16_CONST(-0.5035383837257181), FX16_CONST(0.8639728561215864),
+ FX16_CONST(-0.5022124740457112), FX16_CONST(0.8647442575194622),
+ FX16_CONST(-0.500885382611241), FX16_CONST(0.8655136240905689),
+ FX16_CONST(-0.499557112545082), FX16_CONST(0.8662809540245129),
+ FX16_CONST(-0.49822766697278187), FX16_CONST(0.8670462455156926),
+ FX16_CONST(-0.4968970490226544), FX16_CONST(0.8678094967633033),
+ FX16_CONST(-0.49556526182577304), FX16_CONST(0.8685707059713406),
+ FX16_CONST(-0.49423230851596006), FX16_CONST(0.8693298713486066),
+ FX16_CONST(-0.49289819222978426), FX16_CONST(0.8700869911087113),
+ FX16_CONST(-0.49156291610655), FX16_CONST(0.8708420634700789),
+ FX16_CONST(-0.4902264832882911), FX16_CONST(0.8715950866559511),
+ FX16_CONST(-0.4888888969197637), FX16_CONST(0.8723460588943912),
+ FX16_CONST(-0.4875501601484364), FX16_CONST(0.8730949784182899),
+ FX16_CONST(-0.4862102761244867), FX16_CONST(0.8738418434653666),
+ FX16_CONST(-0.48486924800079123), FX16_CONST(0.874586652278176),
+ FX16_CONST(-0.48352707893291874), FX16_CONST(0.8753294031041108),
+ FX16_CONST(-0.4821837720791226), FX16_CONST(0.8760700941954067),
+ FX16_CONST(-0.48083933060033446), FX16_CONST(0.8768087238091454),
+ FX16_CONST(-0.4794937576601534), FX16_CONST(0.8775452902072611),
+ FX16_CONST(-0.4781470564248433), FX16_CONST(0.8782797916565414),
+ FX16_CONST(-0.4767992300633222), FX16_CONST(0.8790122264286334),
+ FX16_CONST(-0.4754502817471558), FX16_CONST(0.8797425928000475),
+ FX16_CONST(-0.4741002146505506), FX16_CONST(0.8804708890521604),
+ FX16_CONST(-0.47274903195034323), FX16_CONST(0.8811971134712218),
+ FX16_CONST(-0.4713967368259979), FX16_CONST(0.8819212643483548),
+ FX16_CONST(-0.4700433324595958), FX16_CONST(0.8826433399795627),
+ FX16_CONST(-0.46868882203582796), FX16_CONST(0.8833633386657316),
+ FX16_CONST(-0.4673332087419883), FX16_CONST(0.8840812587126351),
+ FX16_CONST(-0.4659764957679667), FX16_CONST(0.8847970984309375),
+ FX16_CONST(-0.4646186863062382), FX16_CONST(0.8855108561361997),
+ FX16_CONST(-0.4632597835518604), FX16_CONST(0.8862225301488805),
+ FX16_CONST(-0.46189979070246284), FX16_CONST(0.8869321187943421),
+ FX16_CONST(-0.46053871095823995), FX16_CONST(0.8876396204028539),
+ FX16_CONST(-0.4591765475219447), FX16_CONST(0.888345033309596),
+ FX16_CONST(-0.4578133035988777), FX16_CONST(0.8890483558546644),
+ FX16_CONST(-0.45644898239688425), FX16_CONST(0.8897495863830727),
+ FX16_CONST(-0.455083587126344), FX16_CONST(0.8904487232447578),
+ FX16_CONST(-0.45371712100016387), FX16_CONST(0.8911457647945832),
+ FX16_CONST(-0.4523495872337707), FX16_CONST(0.8918407093923428),
+ FX16_CONST(-0.45098098904510436), FX16_CONST(0.8925335554027644),
+ FX16_CONST(-0.449611329654607), FX16_CONST(0.8932243011955151),
+ FX16_CONST(-0.44824061228522016), FX16_CONST(0.8939129451452031),
+ FX16_CONST(-0.44686884016237427), FX16_CONST(0.8945994856313826),
+ FX16_CONST(-0.4454960165139817), FX16_CONST(0.8952839210385576),
+ FX16_CONST(-0.4441221445704298), FX16_CONST(0.8959662497561849),
+ FX16_CONST(-0.44274722756457047), FX16_CONST(0.8966464701786799),
+ FX16_CONST(-0.441371268731717), FX16_CONST(0.8973245807054181),
+ FX16_CONST(-0.4399942713096334), FX16_CONST(0.8980005797407398),
+ FX16_CONST(-0.43861623853852766), FX16_CONST(0.8986744656939538),
+ FX16_CONST(-0.437237173661044), FX16_CONST(0.8993462369793416),
+ FX16_CONST(-0.43585707992225603), FX16_CONST(0.90001589201616),
+ FX16_CONST(-0.4344759605696561), FX16_CONST(0.9006834292286467),
+ FX16_CONST(-0.4330938188531522), FX16_CONST(0.9013488470460219),
+ FX16_CONST(-0.43171065802505737), FX16_CONST(0.9020121439024932),
+ FX16_CONST(-0.43032648134008256), FX16_CONST(0.9026733182372588),
+ FX16_CONST(-0.4289412920553301), FX16_CONST(0.9033323684945116),
+ FX16_CONST(-0.42755509343028253), FX16_CONST(0.9039892931234431),
+ FX16_CONST(-0.42616788872679995), FX16_CONST(0.904644090578246),
+ FX16_CONST(-0.42477968120910903), FX16_CONST(0.9052967593181187),
+ FX16_CONST(-0.42339047414379605), FX16_CONST(0.9059472978072685),
+ FX16_CONST(-0.42200027079979957), FX16_CONST(0.9065957045149154),
+ FX16_CONST(-0.42060907444840306), FX16_CONST(0.9072419779152956),
+ FX16_CONST(-0.41921688836322435), FX16_CONST(0.907886116487666),
+ FX16_CONST(-0.41782371582021255), FX16_CONST(0.908528118716306),
+ FX16_CONST(-0.41642956009763726), FX16_CONST(0.9091679830905224),
+ FX16_CONST(-0.4150344244760816), FX16_CONST(0.9098057081046522),
+ FX16_CONST(-0.41363831223843517), FX16_CONST(0.9104412922580669),
+ FX16_CONST(-0.41224122666988333), FX16_CONST(0.9110747340551761),
+ FX16_CONST(-0.41084317105790424), FX16_CONST(0.9117060320054297),
+ FX16_CONST(-0.40944414869225776), FX16_CONST(0.9123351846233226),
+ FX16_CONST(-0.4080441628649787), FX16_CONST(0.9129621904283981),
+ FX16_CONST(-0.40664321687036886), FX16_CONST(0.9135870479452509),
+ FX16_CONST(-0.4052413140049904), FX16_CONST(0.9142097557035305),
+ FX16_CONST(-0.4038384575676545), FX16_CONST(0.914830312237946),
+ FX16_CONST(-0.4024346508594187), FX16_CONST(0.9154487160882677),
+ FX16_CONST(-0.40102989718357573), FX16_CONST(0.9160649657993316),
+ FX16_CONST(-0.3996241998456468), FX16_CONST(0.9166790599210427),
+ FX16_CONST(-0.3982175621533742), FX16_CONST(0.9172909970083777),
+ FX16_CONST(-0.3968099874167108), FX16_CONST(0.9179007756213903),
+ FX16_CONST(-0.39540147894781663), FX16_CONST(0.918508394325212),
+ FX16_CONST(-0.39399204006104827), FX16_CONST(0.9191138516900577),
+ FX16_CONST(-0.3925816740729515), FX16_CONST(0.9197171462912274),
+ FX16_CONST(-0.39117038430225376), FX16_CONST(0.9203182767091106),
+ FX16_CONST(-0.389758174069857), FX16_CONST(0.9209172415291892),
+ FX16_CONST(-0.3883450466988267), FX16_CONST(0.9215140393420418),
+ FX16_CONST(-0.38693100551438886), FX16_CONST(0.9221086687433451),
+ FX16_CONST(-0.38551605384391896), FX16_CONST(0.9227011283338785),
+ FX16_CONST(-0.384100195016935), FX16_CONST(0.9232914167195276),
+ FX16_CONST(-0.3826834323650904), FX16_CONST(0.9238795325112865),
+ FX16_CONST(-0.3812657692221628), FX16_CONST(0.9244654743252624),
+ FX16_CONST(-0.3798472089240515), FX16_CONST(0.9250492407826775),
+ FX16_CONST(-0.3784277548087658), FX16_CONST(0.9256308305098727),
+ FX16_CONST(-0.37700741021641826), FX16_CONST(0.9262102421383114),
+ FX16_CONST(-0.3755861784892171), FX16_CONST(0.9267874743045819),
+ FX16_CONST(-0.37416406297145854), FX16_CONST(0.9273625256504009),
+ FX16_CONST(-0.3727410670095162), FX16_CONST(0.9279353948226177),
+ FX16_CONST(-0.3713171939518378), FX16_CONST(0.9285060804732155),
+ FX16_CONST(-0.3698924471489342), FX16_CONST(0.9290745812593157),
+ FX16_CONST(-0.36846682995337227), FX16_CONST(0.9296408958431813),
+ FX16_CONST(-0.367040345719767), FX16_CONST(0.9302050228922192),
+ FX16_CONST(-0.36561299780477435), FX16_CONST(0.9307669610789835),
+ FX16_CONST(-0.3641847895670802), FX16_CONST(0.9313267090811803),
+ FX16_CONST(-0.3627557243673974), FX16_CONST(0.931884265581668),
+ FX16_CONST(-0.3613258055684543), FX16_CONST(0.9324396292684624),
+ FX16_CONST(-0.359895036534988), FX16_CONST(0.932992798834739),
+ FX16_CONST(-0.3584634206337371), FX16_CONST(0.933543772978836),
+ FX16_CONST(-0.3570309612334304), FX16_CONST(0.9340925504042588),
+ FX16_CONST(-0.35559766170478413), FX16_CONST(0.9346391298196807),
+ FX16_CONST(-0.3541635254204905), FX16_CONST(0.9351835099389475),
+ FX16_CONST(-0.35272855575521067), FX16_CONST(0.9357256894810804),
+ FX16_CONST(-0.3512927560855669), FX16_CONST(0.9362656671702784),
+ FX16_CONST(-0.3498561297901354), FX16_CONST(0.9368034417359214),
+ FX16_CONST(-0.3484186802494349), FX16_CONST(0.9373390119125748),
+ FX16_CONST(-0.34698041084592385), FX16_CONST(0.9378723764399898),
+ FX16_CONST(-0.3455413249639891), FX16_CONST(0.9384035340631081),
+ FX16_CONST(-0.34410142598993876), FX16_CONST(0.9389324835320646),
+ FX16_CONST(-0.34266071731199493), FX16_CONST(0.9394592236021897),
+ FX16_CONST(-0.3412192023202828), FX16_CONST(0.9399837530340138),
+ FX16_CONST(-0.33977688440682713), FX16_CONST(0.9405060705932682),
+ FX16_CONST(-0.3383337669655413), FX16_CONST(0.9410261750508893),
+ FX16_CONST(-0.33688985339222), FX16_CONST(0.9415440651830208),
+ FX16_CONST(-0.33544514708453144), FX16_CONST(0.9420597397710174),
+ FX16_CONST(-0.3339996514420099), FX16_CONST(0.9425731976014468),
+ FX16_CONST(-0.33255336986604456), FX16_CONST(0.9430844374660934),
+ FX16_CONST(-0.3311063057598766), FX16_CONST(0.9435934581619603),
+ FX16_CONST(-0.32965846252858755), FX16_CONST(0.9441002584912727),
+ FX16_CONST(-0.3282098435790924), FX16_CONST(0.9446048372614803),
+ FX16_CONST(-0.32676045232013234), FX16_CONST(0.9451071932852604),
+ FX16_CONST(-0.32531029216226337), FX16_CONST(0.9456073253805212),
+ FX16_CONST(-0.32385936651785313), FX16_CONST(0.9461052323704033),
+ FX16_CONST(-0.32240767880106996), FX16_CONST(0.9466009130832835),
+ FX16_CONST(-0.3209552324278752), FX16_CONST(0.9470943663527772),
+ FX16_CONST(-0.31950203081601547), FX16_CONST(0.9475855910177412),
+ FX16_CONST(-0.31804807738501545), FX16_CONST(0.9480745859222761),
+ FX16_CONST(-0.31659337555616623), FX16_CONST(0.9485613499157302),
+ FX16_CONST(-0.3151379287525226), FX16_CONST(0.9490458818527006),
+ FX16_CONST(-0.3136817403988915), FX16_CONST(0.9495281805930367),
+ FX16_CONST(-0.31222481392182483), FX16_CONST(0.9500082450018431),
+ FX16_CONST(-0.3107671527496121), FX16_CONST(0.9504860739494815),
+ FX16_CONST(-0.30930876031226917), FX16_CONST(0.950961666311575),
+ FX16_CONST(-0.30784964004153514), FX16_CONST(0.9514350209690082),
+ FX16_CONST(-0.3063897953708611), FX16_CONST(0.9519061368079322),
+ FX16_CONST(-0.3049292297354024), FX16_CONST(0.9523750127197659),
+ FX16_CONST(-0.3034679465720111), FX16_CONST(0.9528416476011987),
+ FX16_CONST(-0.3020059493192286), FX16_CONST(0.9533060403541936),
+ FX16_CONST(-0.3005432414172738), FX16_CONST(0.9537681898859902),
+ FX16_CONST(-0.29907982630804064), FX16_CONST(0.9542280951091056),
+ FX16_CONST(-0.29761570743508625), FX16_CONST(0.9546857549413383),
+ FX16_CONST(-0.29615088824362373), FX16_CONST(0.9551411683057708),
+ FX16_CONST(-0.29468537218051494), FX16_CONST(0.9555943341307709),
+ FX16_CONST(-0.2932191626942591), FX16_CONST(0.9560452513499963),
+ FX16_CONST(-0.29175226323498954), FX16_CONST(0.956493918902395),
+ FX16_CONST(-0.2902846772544625), FX16_CONST(0.9569403357322088),
+ FX16_CONST(-0.2888164082060494), FX16_CONST(0.957384500788976),
+ FX16_CONST(-0.28734745954472934), FX16_CONST(0.9578264130275329),
+ FX16_CONST(-0.2858778347270811), FX16_CONST(0.9582660714080176),
+ FX16_CONST(-0.2844075372112722), FX16_CONST(0.9587034748958715),
+ FX16_CONST(-0.28293657045705556), FX16_CONST(0.9591386224618419),
+ FX16_CONST(-0.28146493792575805), FX16_CONST(0.9595715130819845),
+ FX16_CONST(-0.2799926430802731), FX16_CONST(0.960002145737666),
+ FX16_CONST(-0.27851968938505367), FX16_CONST(0.9604305194155657),
+ FX16_CONST(-0.27704608030610034), FX16_CONST(0.9608566331076795),
+ FX16_CONST(-0.2755718193109584), FX16_CONST(0.9612804858113205),
+ FX16_CONST(-0.2740969098687065), FX16_CONST(0.9617020765291225),
+ FX16_CONST(-0.2726213554499489), FX16_CONST(0.9621214042690416),
+ FX16_CONST(-0.27114515952680784), FX16_CONST(0.9625384680443592),
+ FX16_CONST(-0.2696683255729156), FX16_CONST(0.9629532668736838),
+ FX16_CONST(-0.26819085706340356), FX16_CONST(0.9633657997809539),
+ FX16_CONST(-0.2667127574748986), FX16_CONST(0.9637760657954398),
+ FX16_CONST(-0.26523403028551185), FX16_CONST(0.9641840639517458),
+ FX16_CONST(-0.2637546789748313), FX16_CONST(0.9645897932898128),
+ FX16_CONST(-0.2622747070239142), FX16_CONST(0.9649932528549202),
+ FX16_CONST(-0.26079411791527596), FX16_CONST(0.9653944416976893),
+ FX16_CONST(-0.2593129151328865), FX16_CONST(0.9657933588740836),
+ FX16_CONST(-0.25783110216215915), FX16_CONST(0.9661900034454125),
+ FX16_CONST(-0.25634868248994286), FX16_CONST(0.9665843744783331),
+ FX16_CONST(-0.2548656596045144), FX16_CONST(0.9669764710448522),
+ FX16_CONST(-0.25338203699557066), FX16_CONST(0.9673662922223284),
+ FX16_CONST(-0.2518978181542173), FX16_CONST(0.9677538370934754),
+ FX16_CONST(-0.25041300657296545), FX16_CONST(0.9681391047463623),
+ FX16_CONST(-0.2489276057457202), FX16_CONST(0.9685220942744173),
+ FX16_CONST(-0.24744161916777319), FX16_CONST(0.9689028047764289),
+ FX16_CONST(-0.2459550503357952), FX16_CONST(0.9692812353565483),
+ FX16_CONST(-0.2444679027478246), FX16_CONST(0.9696573851242923),
+ FX16_CONST(-0.24298017990326418), FX16_CONST(0.970031253194544),
+ FX16_CONST(-0.24149188530286947), FX16_CONST(0.9704028386875554),
+ FX16_CONST(-0.24000302244874144), FX16_CONST(0.9707721407289504),
+ FX16_CONST(-0.23851359484431825), FX16_CONST(0.9711391584497252),
+ FX16_CONST(-0.23702360599436773), FX16_CONST(0.9715038909862517),
+ FX16_CONST(-0.23553305940497588), FX16_CONST(0.9718663374802793),
+ FX16_CONST(-0.23404195858354362), FX16_CONST(0.9722264970789363),
+ FX16_CONST(-0.2325503070387753), FX16_CONST(0.9725843689347322),
+ FX16_CONST(-0.231058108280671), FX16_CONST(0.9729399522055602),
+ FX16_CONST(-0.22956536582051948), FX16_CONST(0.9732932460546981),
+ FX16_CONST(-0.22807208317088618), FX16_CONST(0.9736442496508119),
+ FX16_CONST(-0.22657826384561028), FX16_CONST(0.9739929621679558),
+ FX16_CONST(-0.22508391135979297), FX16_CONST(0.9743393827855759),
+ FX16_CONST(-0.22358902922978996), FX16_CONST(0.9746835106885107),
+ FX16_CONST(-0.22209362097320334), FX16_CONST(0.9750253450669942),
+ FX16_CONST(-0.22059769010887406), FX16_CONST(0.9753648851166569),
+ FX16_CONST(-0.21910124015687016), FX16_CONST(0.9757021300385285),
+ FX16_CONST(-0.21760427463848384), FX16_CONST(0.976037079039039),
+ FX16_CONST(-0.21610679707621955), FX16_CONST(0.9763697313300211),
+ FX16_CONST(-0.21460881099378668), FX16_CONST(0.9767000861287118),
+ FX16_CONST(-0.21311031991609197), FX16_CONST(0.9770281426577542),
+ FX16_CONST(-0.21161132736922802), FX16_CONST(0.9773539001452),
+ FX16_CONST(-0.21011183688046992), FX16_CONST(0.9776773578245099),
+ FX16_CONST(-0.20861185197826362), FX16_CONST(0.977998514934557),
+ FX16_CONST(-0.20711137619221853), FX16_CONST(0.9783173707196277),
+ FX16_CONST(-0.20561041305309907), FX16_CONST(0.9786339244294232),
+ FX16_CONST(-0.2041089660928174), FX16_CONST(0.9789481753190621),
+ FX16_CONST(-0.2026070388444215), FX16_CONST(0.979260122649082),
+ FX16_CONST(-0.20110463484209212), FX16_CONST(0.9795697656854405),
+ FX16_CONST(-0.19960175762113103), FX16_CONST(0.9798771036995176),
+ FX16_CONST(-0.19809841071795348), FX16_CONST(0.9801821359681174),
+ FX16_CONST(-0.19659459767008083), FX16_CONST(0.9804848617734693),
+ FX16_CONST(-0.19509032201612872), FX16_CONST(0.9807852804032303),
+ FX16_CONST(-0.1935855872958039), FX16_CONST(0.9810833911504866),
+ FX16_CONST(-0.19208039704989258), FX16_CONST(0.9813791933137546),
+ FX16_CONST(-0.19057475482025274), FX16_CONST(0.9816726861969831),
+ FX16_CONST(-0.18906866414980603), FX16_CONST(0.9819638691095554),
+ FX16_CONST(-0.18756212858253013), FX16_CONST(0.9822527413662893),
+ FX16_CONST(-0.18605515166344702), FX16_CONST(0.9825393022874411),
+ FX16_CONST(-0.18454773693861984), FX16_CONST(0.9828235511987052),
+ FX16_CONST(-0.183039887955141), FX16_CONST(0.9831054874312163),
+ FX16_CONST(-0.18153160826112488), FX16_CONST(0.9833851103215512),
+ FX16_CONST(-0.18002290140570013), FX16_CONST(0.9836624192117301),
+ FX16_CONST(-0.17851377093899798), FX16_CONST(0.9839374134492188),
+ FX16_CONST(-0.17700422041214905), FX16_CONST(0.984210092386929),
+ FX16_CONST(-0.17549425337727156), FX16_CONST(0.9844804553832209),
+ FX16_CONST(-0.1739838733874638), FX16_CONST(0.9847485018019042),
+ FX16_CONST(-0.17247308399679578), FX16_CONST(0.9850142310122398),
+ FX16_CONST(-0.17096188876030177), FX16_CONST(0.9852776423889411),
+ FX16_CONST(-0.16945029123396835), FX16_CONST(0.985538735312176),
+ FX16_CONST(-0.1679382949747314), FX16_CONST(0.9857975091675674),
+ FX16_CONST(-0.1664259035404642), FX16_CONST(0.9860539633461954),
+ FX16_CONST(-0.1649131204899698), FX16_CONST(0.9863080972445987),
+ FX16_CONST(-0.16339994938297386), FX16_CONST(0.9865599102647753),
+ FX16_CONST(-0.1618863937801123), FX16_CONST(0.9868094018141854),
+ FX16_CONST(-0.16037245724292856), FX16_CONST(0.987056571305751),
+ FX16_CONST(-0.15885814333386158), FX16_CONST(0.9873014181578583),
+ FX16_CONST(-0.15734345561623825), FX16_CONST(0.9875439417943592),
+ FX16_CONST(-0.15582839765426507), FX16_CONST(0.9877841416445722),
+ FX16_CONST(-0.15431297301302063), FX16_CONST(0.9880220171432835),
+ FX16_CONST(-0.1527971852584438), FX16_CONST(0.9882575677307495),
+ FX16_CONST(-0.15128103795733044), FX16_CONST(0.9884907928526966),
+ FX16_CONST(-0.1497645346773216), FX16_CONST(0.9887216919603238),
+ FX16_CONST(-0.14824767898689595), FX16_CONST(0.988950264510303),
+ FX16_CONST(-0.1467304744553624), FX16_CONST(0.9891765099647809),
+ FX16_CONST(-0.14521292465284794), FX16_CONST(0.9894004277913803),
+ FX16_CONST(-0.14369503315029475), FX16_CONST(0.9896220174632008),
+ FX16_CONST(-0.1421768035194482), FX16_CONST(0.9898412784588205),
+ FX16_CONST(-0.1406582393328492), FX16_CONST(0.9900582102622971),
+ FX16_CONST(-0.13913934416382603), FX16_CONST(0.9902728123631691),
+ FX16_CONST(-0.1376201215864866), FX16_CONST(0.990485084256457),
+ FX16_CONST(-0.1361005751757066), FX16_CONST(0.9906950254426646),
+ FX16_CONST(-0.13458070850712642), FX16_CONST(0.99090263542778),
+ FX16_CONST(-0.13306052515713912), FX16_CONST(0.9911079137232768),
+ FX16_CONST(-0.131540028702883), FX16_CONST(0.9913108598461154),
+ FX16_CONST(-0.13001922272223398), FX16_CONST(0.9915114733187439),
+ FX16_CONST(-0.12849811079379364), FX16_CONST(0.9917097536690994),
+ FX16_CONST(-0.12697669649688617), FX16_CONST(0.9919057004306093),
+ FX16_CONST(-0.12545498341154637), FX16_CONST(0.9920993131421917),
+ FX16_CONST(-0.12393297511851216), FX16_CONST(0.9922905913482574),
+ FX16_CONST(-0.12241067519921603), FX16_CONST(0.99247953459871),
+ FX16_CONST(-0.12088808723577762), FX16_CONST(0.9926661424489479),
+ FX16_CONST(-0.11936521481099176), FX16_CONST(0.992850414459865),
+ FX16_CONST(-0.1178420615083252), FX16_CONST(0.9930323501978514),
+ FX16_CONST(-0.11631863091190484), FX16_CONST(0.9932119492347945),
+ FX16_CONST(-0.11479492660650999), FX16_CONST(0.9933892111480807),
+ FX16_CONST(-0.11327095217756497), FX16_CONST(0.9935641355205953),
+ FX16_CONST(-0.11174671121112706), FX16_CONST(0.9937367219407246),
+ FX16_CONST(-0.11022220729388336), FX16_CONST(0.9939069700023561),
+ FX16_CONST(-0.10869744401313887), FX16_CONST(0.9940748793048794),
+ FX16_CONST(-0.10717242495680884), FX16_CONST(0.9942404494531879),
+ FX16_CONST(-0.10564715371341044), FX16_CONST(0.9944036800576791),
+ FX16_CONST(-0.10412163387205513), FX16_CONST(0.9945645707342554),
+ FX16_CONST(-0.10259586902243668), FX16_CONST(0.9947231211043257),
+ FX16_CONST(-0.10106986275482806), FX16_CONST(0.9948793307948056),
+ FX16_CONST(-0.0995436186600694), FX16_CONST(0.9950331994381186),
+ FX16_CONST(-0.0980171403295605), FX16_CONST(0.9951847266721969),
+ FX16_CONST(-0.09649043135525323), FX16_CONST(0.9953339121404822),
+ FX16_CONST(-0.09496349532963948), FX16_CONST(0.9954807554919269),
+ FX16_CONST(-0.09343633584574809), FX16_CONST(0.9956252563809943),
+ FX16_CONST(-0.09190895649713288), FX16_CONST(0.9957674144676598),
+ FX16_CONST(-0.09038136087786497), FX16_CONST(0.9959072294174117),
+ FX16_CONST(-0.08885355258252442), FX16_CONST(0.996044700901252),
+ FX16_CONST(-0.08732553520619263), FX16_CONST(0.9961798285956969),
+ FX16_CONST(-0.08579731234444028), FX16_CONST(0.996312612182778),
+ FX16_CONST(-0.08426888759332431), FX16_CONST(0.9964430513500426),
+ FX16_CONST(-0.08274026454937576), FX16_CONST(0.9965711457905548),
+ FX16_CONST(-0.08121144680959234), FX16_CONST(0.9966968952028961),
+ FX16_CONST(-0.07968243797143075), FX16_CONST(0.9968202992911657),
+ FX16_CONST(-0.07815324163279472), FX16_CONST(0.996941357764982),
+ FX16_CONST(-0.07662386139203181), FX16_CONST(0.997060070339483),
+ FX16_CONST(-0.07509430084792147), FX16_CONST(0.9971764367353261),
+ FX16_CONST(-0.07356456359966741), FX16_CONST(0.9972904566786902),
+ FX16_CONST(-0.07203465324688915), FX16_CONST(0.9974021299012753),
+ FX16_CONST(-0.07050457338961442), FX16_CONST(0.9975114561403035),
+ FX16_CONST(-0.06897432762826713), FX16_CONST(0.9976184351385196),
+ FX16_CONST(-0.06744391956366429), FX16_CONST(0.9977230666441916),
+ FX16_CONST(-0.06591335279700389), FX16_CONST(0.9978253504111116),
+ FX16_CONST(-0.06438263092985737), FX16_CONST(0.997925286198596),
+ FX16_CONST(-0.06285175756416206), FX16_CONST(0.9980228737714861),
+ FX16_CONST(-0.06132073630220906), FX16_CONST(0.9981181129001492),
+ FX16_CONST(-0.05978957074664019), FX16_CONST(0.9982110033604782),
+ FX16_CONST(-0.05825826450043591), FX16_CONST(0.9983015449338928),
+ FX16_CONST(-0.05672682116690774), FX16_CONST(0.9983897374073402),
+ FX16_CONST(-0.055195244349689775), FX16_CONST(0.9984755805732948),
+ FX16_CONST(-0.05366353765273108), FX16_CONST(0.9985590742297593),
+ FX16_CONST(-0.05213170468028372), FX16_CONST(0.9986402181802652),
+ FX16_CONST(-0.05059974903689952), FX16_CONST(0.9987190122338729),
+ FX16_CONST(-0.04906767432741809), FX16_CONST(0.9987954562051724),
+ FX16_CONST(-0.04753548415695922), FX16_CONST(0.9988695499142836),
+ FX16_CONST(-0.04600318213091527), FX16_CONST(0.9989412931868569),
+ FX16_CONST(-0.044470771854939146), FX16_CONST(0.9990106858540733),
+ FX16_CONST(-0.04293825693494114), FX16_CONST(0.9990777277526454),
+ FX16_CONST(-0.0414056409770769), FX16_CONST(0.9991424187248169),
+ FX16_CONST(-0.03987292758773981), FX16_CONST(0.9992047586183639),
+ FX16_CONST(-0.038340120373552534), FX16_CONST(0.9992647472865944),
+ FX16_CONST(-0.036807222941359394), FX16_CONST(0.9993223845883494),
+ FX16_CONST(-0.03527423889821435), FX16_CONST(0.9993776703880028),
+ FX16_CONST(-0.03374117185137782), FX16_CONST(0.9994306045554617),
+ FX16_CONST(-0.03220802540830466), FX16_CONST(0.999481186966167),
+ FX16_CONST(-0.030674803176636543), FX16_CONST(0.9995294175010931),
+ FX16_CONST(-0.029141508764194368), FX16_CONST(0.9995752960467492),
+ FX16_CONST(-0.027608145778966225), FX16_CONST(0.9996188224951786),
+ FX16_CONST(-0.02607471782910422), FX16_CONST(0.9996599967439592),
+ FX16_CONST(-0.024541228522912448), FX16_CONST(0.9996988186962042),
+ FX16_CONST(-0.023007681468839372), FX16_CONST(0.9997352882605617),
+ FX16_CONST(-0.021474080275469345), FX16_CONST(0.9997694053512153),
+ FX16_CONST(-0.019940428551515003), FX16_CONST(0.9998011698878843),
+ FX16_CONST(-0.018406729905805226), FX16_CONST(0.9998305817958234),
+ FX16_CONST(-0.016872987947281957), FX16_CONST(0.9998576410058239),
+ FX16_CONST(-0.015339206284988182), FX16_CONST(0.9998823474542126),
+ FX16_CONST(-0.01380538852806031), FX16_CONST(0.9999047010828529),
+ FX16_CONST(-0.012271538285720572), FX16_CONST(0.9999247018391445),
+ FX16_CONST(-0.010737659167264976), FX16_CONST(0.9999423496760239),
+ FX16_CONST(-0.009203754782060144), FX16_CONST(0.9999576445519639),
+ FX16_CONST(-0.007669828739531261), FX16_CONST(0.9999705864309741),
+ FX16_CONST(-0.006135884649154477), FX16_CONST(0.9999811752826011),
+ FX16_CONST(-0.004601926120448411), FX16_CONST(0.9999894110819284),
+ FX16_CONST(-0.003067956762966544), FX16_CONST(0.9999952938095762),
+ FX16_CONST(-0.0015339801862851719), FX16_CONST(0.9999988234517019)
+};
diff --git a/arm9/lib/src/RTC_internal.c b/arm9/lib/src/RTC_internal.c
new file mode 100644
index 00000000..e3a132ab
--- /dev/null
+++ b/arm9/lib/src/RTC_internal.c
@@ -0,0 +1,31 @@
+#include "function_target.h"
+#include "PXI_fifo.h"
+#include "RTC_internal.h"
+
+static BOOL RtcSendPxiCommand(u8 command);
+
+ARM_FUNC BOOL RTCi_ReadRawDateTimeAsync(void)
+{
+ return RtcSendPxiCommand(16);
+}
+
+ARM_FUNC BOOL RTCi_ReadRawDateAsync(void)
+{
+ return RtcSendPxiCommand(17);
+}
+
+ARM_FUNC BOOL RTCi_ReadRawTimeAsync(void)
+{
+ return RtcSendPxiCommand(18);
+}
+
+ARM_FUNC BOOL RTCi_WriteRawStatus2Async(void)
+{
+ return RtcSendPxiCommand(39);
+}
+
+ARM_FUNC static BOOL RtcSendPxiCommand(u8 command)
+{
+ s32 data = command << 8 & 0x7f00;
+ return PXI_SendWordByFifo(PXI_FIFO_TAG_RTC, (u32)data, FALSE) >= 0;
+}
diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s
index 6b6a6f27..6f673fe8 100644
--- a/arm9/modules/04/asm/thumb_04.s
+++ b/arm9/modules/04/asm/thumb_04.s
@@ -12,7 +12,7 @@ MOD04_021D74E0: ; 0x021D74E0
ldr r0, [r0, #4]
cmp r0, #0
beq _021D74F2
- bl ErrorHandling
+ bl GF_AssertFail
_021D74F2:
ldr r1, _021D7648 ; =0x00001FAC
add r0, r4, #0
@@ -61,7 +61,7 @@ _021D74F2:
bic r0, r1
mov r1, #0x2b
lsl r1, r1, #0xc
- bl tempName_NNS_FndCreateExpHeapEx
+ bl NNS_FndCreateExpHeapEx
ldr r1, _021D7644 ; =UNK04_0220FBC0
ldr r3, _021D7654 ; =0x00001F08
ldr r2, [r1]
@@ -195,20 +195,20 @@ MOD04_021D7660: ; 0x021D7660
beq _021D7698
ldr r0, _021D76A4 ; =0x00001F08
ldr r0, [r1, r0]
- bl thunk_FUN_020adc8c
+ bl NNS_FndDestroyExpHeap
ldr r0, _021D76A0 ; =UNK04_0220FBC0
ldr r1, _021D76A8 ; =0x00001F54
ldr r2, [r0]
ldr r0, [r2, r1]
sub r1, #0x50
ldr r1, [r2, r1]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r1, _021D76A0 ; =UNK04_0220FBC0
ldr r0, _021D76A8 ; =0x00001F54
ldr r2, [r1]
ldr r1, [r1, #4]
ldr r0, [r2, r0]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, _021D76A0 ; =UNK04_0220FBC0
mov r1, #0
str r1, [r0, #4]
@@ -1130,7 +1130,7 @@ MOD04_021D7DA8: ; 0x021D7DA8
ldr r0, _021D7DE8 ; =0x00001F08
ldr r0, [r1, r0]
add r1, r5, #0
- bl tempName_NNS_FndAllocFromExpHeapEx
+ bl NNS_FndAllocFromExpHeapEx
add r5, r0, #0
bne _021D7DD8
mov r0, #1
@@ -1160,7 +1160,7 @@ MOD04_021D7DEC: ; 0x021D7DEC
ldr r0, _021D7E14 ; =0x00001F08
ldr r0, [r1, r0]
add r1, r5, #0
- bl FUN_020ADDF0
+ bl NNS_FndFreeToExpHeap
add r0, r4, #0
bl OS_RestoreInterrupts
_021D7E0C:
@@ -2347,12 +2347,12 @@ _021D86CE:
str r1, [r2, r0]
mov r0, #1
bl FUN_020AA770
- bl SDAT_Init
+ bl NNS_SndInit
ldr r0, _021D8718 ; =UNK04_0220FBC8
ldr r1, [r0, #4]
ldr r0, _021D8728 ; =0x00003504
add r0, r1, r0
- bl FUN_020C16FC
+ bl NNS_SndStrmInit
ldr r1, _021D8718 ; =UNK04_0220FBC8
mov r0, #0
ldr r2, [r1, #4]
@@ -2887,13 +2887,13 @@ _021D8ACA:
ldr r0, [r5, #4]
add r2, sp, #0x10
add r0, r0, r3
- bl FUN_020C169C
+ bl NNS_SndStrmAllocChannel
add r0, r5, #0
ldr r1, [r0, #4]
ldr r0, _021D8BDC ; =0x00003504
add r0, r1, r0
mov r1, #0
- bl FUN_020C13C4
+ bl NNS_SndStrmSetVolume
mov r0, #0x41
str r0, [sp]
mov r0, #2
@@ -2914,7 +2914,7 @@ _021D8ACA:
add r2, r3, r2
mov r1, #1
lsl r3, r7, #1
- bl FUN_020C14AC
+ bl NNS_SndStrmSetup
ldr r2, _021D8BCC ; =UNK04_0220FBC8
ldr r1, _021D8BE4 ; =0x000034F8
ldr r0, [r2, #4]
@@ -2975,14 +2975,14 @@ _021D8BEC: .word 0x000034FC
thumb_func_start MOD04_021D8BF0
MOD04_021D8BF0: ; 0x021D8BF0
ldr r0, _021D8BFC ; =UNK04_0220FBC8
- ldr r3, _021D8C00 ; =FUN_020C1458
+ ldr r3, _021D8C00 ; =NNS_SndStrmStart
ldr r1, [r0, #4]
ldr r0, _021D8C04 ; =0x00003504
add r0, r1, r0
bx r3
.align 2, 0
_021D8BFC: .word UNK04_0220FBC8
-_021D8C00: .word FUN_020C1458
+_021D8C00: .word NNS_SndStrmStart
_021D8C04: .word 0x00003504
thumb_func_start MOD04_021D8C08
@@ -3052,12 +3052,12 @@ MOD04_021D8C6C: ; 0x021D8C6C
ldr r1, [r0, #4]
ldr r0, _021D8CC4 ; =0x00003504
add r0, r1, r0
- bl FUN_020C1430
+ bl NNS_SndStrmStop
ldr r0, _021D8CBC ; =UNK04_0220FBC8
ldr r1, [r0, #4]
ldr r0, _021D8CC4 ; =0x00003504
add r0, r1, r0
- bl FUN_020C1674
+ bl NNS_SndStrmFreeChannel
bl VCT_Cleanup
ldr r1, _021D8CBC ; =UNK04_0220FBC8
mov r0, #0x35
@@ -3065,7 +3065,7 @@ MOD04_021D8C6C: ; 0x021D8C6C
lsl r0, r0, #8
ldr r0, [r2, r0]
ldr r1, [r1]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r1, #0
ldr r0, _021D8CBC ; =UNK04_0220FBC8
cmp r4, #0
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index e66ad6aa..730bfc00 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -73,7 +73,7 @@ _021D7564:
ldr r0, [r4, #4]
cmp r0, #0
beq _021D757A
- bl ErrorHandling
+ bl GF_AssertFail
_021D757A:
mov r0, #4
mov r1, #0x28
@@ -250,7 +250,7 @@ _021D76E2:
ldr r0, [r4, #0x4c]
cmp r0, #0
bne _021D7720
- bl ErrorHandling
+ bl GF_AssertFail
_021D7720:
ldr r0, [r4, #0x24]
bl MOD05_021EF514
@@ -727,7 +727,7 @@ MOD05_021D7B10: ; 0x021D7B10
MOD05_021D7B38: ; 0x021D7B38
push {lr}
sub sp, #0x14
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7c
@@ -826,7 +826,7 @@ MOD05_021D7BE0: ; 0x021D7BE0
ldr r0, [r0]
ldr r1, [r4, #0x2c]
bl MOD05_021E805C
- ldr r5, _021D7C98 ; =UNK_021CED20
+ ldr r5, _021D7C98 ; =NNS_G3dGlb + 0x8
add r3, sp, #0x40
mov r2, #8
_021D7C0E:
@@ -859,29 +859,29 @@ _021D7C1C:
orr r2, r0
add r0, r1, r2
str r0, [sp, #0x38]
- ldr r1, _021D7C98 ; =UNK_021CED20
+ ldr r1, _021D7C98 ; =NNS_G3dGlb + 0x8
add r0, sp, #0
mov r2, #0x40
bl MIi_CpuCopyFast
- ldr r1, _021D7C9C ; =UNK_021CED98
+ ldr r1, _021D7C9C ; =NNS_G3dGlb + 0x80
mov r0, #0x50
ldr r2, [r1, #0x7c]
bic r2, r0
str r2, [r1, #0x7c]
- bl FUN_020B849C
+ bl NNS_G3dGlbFlushP
ldr r0, [r4, #0x3c]
bl MOD05_021E4BA0
bl FUN_0201F178
- ldr r1, _021D7C98 ; =UNK_021CED20
+ ldr r1, _021D7C98 ; =NNS_G3dGlb + 0x8
add r0, sp, #0x40
mov r2, #0x40
bl MIi_CpuCopyFast
- ldr r1, _021D7C9C ; =UNK_021CED98
+ ldr r1, _021D7C9C ; =NNS_G3dGlb + 0x80
mov r0, #0x50
ldr r2, [r1, #0x7c]
bic r2, r0
str r2, [r1, #0x7c]
- bl FUN_020B849C
+ bl NNS_G3dGlbFlushP
ldr r0, [r4, #4]
ldr r0, [r0, #4]
bl MOD05_021D7FD0
@@ -892,8 +892,8 @@ _021D7C1C:
add sp, #0x80
pop {r3, r4, r5, pc}
nop
-_021D7C98: .word UNK_021CED20
-_021D7C9C: .word UNK_021CED98
+_021D7C98: .word NNS_G3dGlb + 0x8
+_021D7C9C: .word NNS_G3dGlb + 0x80
_021D7CA0: .word UNK_02105BB8
thumb_func_start MOD05_021D7CA4
@@ -931,7 +931,7 @@ _021D7CC6:
add sp, #0xc
pop {pc}
_021D7CE6:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {pc}
.balign 4, 0
@@ -965,7 +965,7 @@ MOD05_021D7CF0: ; 0x021D7CF0
ldr r0, [r5, #0x30]
cmp r0, #0
beq _021D7D36
- bl ErrorHandling
+ bl GF_AssertFail
_021D7D36:
mov r0, #4
add r1, r4, #0
diff --git a/arm9/modules/05/asm/mod05_021D7F4C.s b/arm9/modules/05/asm/mod05_021D7F4C.s
index 2ba8b668..fd877faf 100644
--- a/arm9/modules/05/asm/mod05_021D7F4C.s
+++ b/arm9/modules/05/asm/mod05_021D7F4C.s
@@ -147,12 +147,12 @@ _021D8034:
ldr r0, [r4, #4]
cmp r0, #0
bne _021D8062
- bl ErrorHandling
+ bl GF_AssertFail
_021D8062:
ldr r0, [r4, #8]
cmp r0, #0
bne _021D806C
- bl ErrorHandling
+ bl GF_AssertFail
_021D806C:
ldrh r1, [r6, #4]
cmp r1, #0
@@ -177,7 +177,7 @@ _021D808C:
cmp r1, r2
blt _021D8034
_021D8094:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s
index c00cb45f..e228ee0a 100644
--- a/arm9/modules/05/asm/mod05_021D80E8.s
+++ b/arm9/modules/05/asm/mod05_021D80E8.s
@@ -1674,7 +1674,7 @@ _021D8E84:
mov r0, #2
b _021D8E96
_021D8E8C:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x20
mov r0, #0
pop {r3, r4, r5, pc}
@@ -1702,7 +1702,7 @@ _021D8EB0:
beq _021D8ED2
cmp r0, #3
beq _021D8ED2
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x20
mov r0, #0
pop {r3, r4, r5, pc}
@@ -2118,7 +2118,7 @@ _021D91DC:
ldr r0, _021D9244 ; =0x00000FFF
cmp r1, r0
beq _021D91F2
- bl ErrorHandling
+ bl GF_AssertFail
_021D91F2:
ldr r0, [r4, #0xc]
bl FUN_02034E30
diff --git a/arm9/modules/05/asm/mod05_021D9320.s b/arm9/modules/05/asm/mod05_021D9320.s
index 4d0220e5..ec304548 100644
--- a/arm9/modules/05/asm/mod05_021D9320.s
+++ b/arm9/modules/05/asm/mod05_021D9320.s
@@ -295,7 +295,7 @@ MOD05_021D9510: ; 0x021D9510
bl FUN_0201FE94
add r5, r0, #0
bne _021D9580
- bl ErrorHandling
+ bl GF_AssertFail
_021D9580:
ldrh r1, [r4, #0xa]
add r0, r5, #0
@@ -444,7 +444,7 @@ MOD05_021D967C: ; 0x021D967C
bl FUN_0200945C
cmp r0, #0
bne _021D96A0
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_021D96A0:
@@ -468,7 +468,7 @@ _021D96A0:
bl FUN_02009D68
cmp r0, #1
beq _021D96D0
- bl ErrorHandling
+ bl GF_AssertFail
_021D96D0:
mov r0, #0x53
lsl r0, r0, #2
@@ -481,7 +481,7 @@ _021D96D0:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_021D96E8:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -526,7 +526,7 @@ MOD05_021D971C: ; 0x021D971C
bl FUN_0200945C
cmp r0, #0
bne _021D9740
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_021D9740:
@@ -554,7 +554,7 @@ _021D9740:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_021D9774:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.balign 4, 0
@@ -610,7 +610,7 @@ MOD05_021D97B4: ; 0x021D97B4
bl FUN_0200945C
cmp r0, #0
bne _021D97DE
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
_021D97DE:
@@ -635,11 +635,11 @@ _021D97DE:
bl MOD05_021D9780
cmp r0, #1
beq _021D9818
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
_021D9814:
- bl ErrorHandling
+ bl GF_AssertFail
_021D9818:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -865,7 +865,7 @@ _021D99A6:
bl FUN_02020248
b _021D99EE
_021D99EA:
- bl ErrorHandling
+ bl GF_AssertFail
_021D99EE:
add r0, r6, #0
add sp, #0x74
diff --git a/arm9/modules/05/asm/mod05_021D9A48.s b/arm9/modules/05/asm/mod05_021D9A48.s
index 2e5469f9..ee169f98 100644
--- a/arm9/modules/05/asm/mod05_021D9A48.s
+++ b/arm9/modules/05/asm/mod05_021D9A48.s
@@ -15,7 +15,7 @@ MOD05_021D9A48: ; 0x021D9A48
add r4, r3, #0
cmp r1, r0
bne _021D9A60
- bl ErrorHandling
+ bl GF_AssertFail
_021D9A60:
mov r0, #0
add r1, r6, #0
@@ -70,7 +70,7 @@ MOD05_021D9AA8: ; 0x021D9AA8
add r5, r3, #0
cmp r4, r0
bne _021D9ABE
- bl ErrorHandling
+ bl GF_AssertFail
_021D9ABE:
add r0, r6, #0
add r1, r4, #0
@@ -78,29 +78,29 @@ _021D9ABE:
bl NARC_AllocAndReadWholeMember
add r4, r0, #0
bne _021D9AD0
- bl ErrorHandling
+ bl GF_AssertFail
_021D9AD0:
add r0, r4, #0
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
add r6, r0, #0
bne _021D9AE0
- bl ErrorHandling
+ bl GF_AssertFail
_021D9AE0:
ldr r0, [sp, #0x1c]
add r1, r6, #0
add r2, r7, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r5]
cmp r5, #0
bne _021D9AF4
- bl ErrorHandling
+ bl GF_AssertFail
_021D9AF4:
ldr r0, [r5]
ldr r3, [sp, #0x18]
add r1, r6, #0
add r2, r7, #0
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -117,7 +117,7 @@ _021D9B0E:
mov r0, #0
pop {r3, pc}
_021D9B16:
- bl FUN_020B7E28
+ bl NNS_G3dRenderObjRemoveAnmObj
mov r0, #1
pop {r3, pc}
.balign 4, 0
@@ -257,7 +257,7 @@ MOD05_021D9C00: ; 0x021D9C00
ldr r0, [r4, #4]
cmp r0, #1
beq _021D9C0E
- bl ErrorHandling
+ bl GF_AssertFail
_021D9C0E:
ldr r0, [r4, #0x1c]
pop {r4, pc}
@@ -280,7 +280,7 @@ MOD05_021D9C14: ; 0x021D9C14
bl NARC_ReadWholeMember
cmp r4, #4
blt _021D9C38
- bl ErrorHandling
+ bl GF_AssertFail
_021D9C38:
lsl r1, r4, #2
add r0, sp, #0x14
@@ -312,7 +312,7 @@ _021D9C66:
ldr r0, [r4, #0x34]
cmp r5, r0
bne _021D9C74
- bl ErrorHandling
+ bl GF_AssertFail
_021D9C74:
add r6, r6, #1
add r4, #0x28
@@ -368,7 +368,7 @@ _021D9CD8:
add r1, #0x28
cmp r2, #0x10
blt _021D9C80
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
add sp, #0x24
pop {r4, r5, r6, r7, pc}
@@ -470,7 +470,7 @@ _021D9D9C:
_021D9DA4:
cmp r4, #0x10
bne _021D9DAC
- bl ErrorHandling
+ bl GF_AssertFail
_021D9DAC:
ldr r0, [sp, #0x10]
add r0, r0, #4
@@ -495,7 +495,7 @@ MOD05_021D9DC0: ; 0x021D9DC0
str r3, [sp]
cmp r6, #0
bne _021D9DDC
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x18
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -516,7 +516,7 @@ _021D9DEC:
bl NARC_ReadWholeMember
cmp r4, #4
blt _021D9E02
- bl ErrorHandling
+ bl GF_AssertFail
_021D9E02:
lsl r1, r4, #2
add r0, sp, #8
@@ -571,7 +571,7 @@ _021D9E58:
add r1, r6, r1
ldr r0, [sp]
ldr r1, [r1, #0x10]
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
_021D9E6A:
add sp, #0x18
mov r0, #1
@@ -596,7 +596,7 @@ MOD05_021D9E80: ; 0x021D9E80
add r4, r2, #0
str r0, [sp]
bne _021D9E94
- bl ErrorHandling
+ bl GF_AssertFail
_021D9E94:
add r0, r4, #0
bl MOD05_021DA220
@@ -671,7 +671,7 @@ _021D9F12:
add r1, r4, r1
ldr r0, [sp, #0xc]
ldr r1, [r1, #0x10]
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
mov r0, #1
str r0, [sp]
b _021D9F32
@@ -709,7 +709,7 @@ _021D9F54:
bne _021D9F6E
ldr r1, [r5, #0x10]
add r0, r6, #0
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
str r7, [r5, #0x10]
ldr r0, [r5, #0x24]
bl FreeToHeap
@@ -734,7 +734,7 @@ MOD05_021D9F80: ; 0x021D9F80
beq _021D9FB2
cmp r5, #0
bne _021D9F90
- bl ErrorHandling
+ bl GF_AssertFail
_021D9F90:
ldr r0, [r5, #4]
cmp r0, #0
@@ -743,7 +743,7 @@ _021D9F90:
bne _021D9FAC
ldr r1, [r5]
add r0, r4, #0
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
mov r0, #0
str r0, [r5]
ldr r0, [r5, #0x14]
@@ -770,7 +770,7 @@ MOD05_021D9FB4: ; 0x021D9FB4
bl NARC_ReadWholeMember
cmp r5, #4
blt _021D9FD4
- bl ErrorHandling
+ bl GF_AssertFail
_021D9FD4:
lsl r1, r5, #2
add r0, sp, #4
@@ -779,7 +779,7 @@ _021D9FD4:
mvn r0, r0
cmp r5, r0
bne _021D9FE6
- bl ErrorHandling
+ bl GF_AssertFail
_021D9FE6:
mov r0, #0
mov r2, #0x28
@@ -834,7 +834,7 @@ MOD05_021DA03C: ; 0x021DA03C
add r4, r1, #0
cmp r5, #0
bne _021DA04A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA04A:
mov r6, #0
add r1, r6, #0
@@ -850,7 +850,7 @@ _021DA050:
ldr r0, [r6, #4]
cmp r0, #0
bne _021DA072
- bl ErrorHandling
+ bl GF_AssertFail
b _021DA072
_021DA06A:
add r1, r1, #1
@@ -860,7 +860,7 @@ _021DA06A:
_021DA072:
cmp r6, #0
bne _021DA07A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA07A:
add r0, r6, #0
pop {r4, r5, r6, pc}
@@ -881,7 +881,7 @@ MOD05_021DA080: ; 0x021DA080
bl NARC_ReadWholeMember
cmp r4, #4
blt _021DA0A0
- bl ErrorHandling
+ bl GF_AssertFail
_021DA0A0:
lsl r1, r4, #2
add r0, sp, #4
@@ -900,7 +900,7 @@ _021DA0AC:
ldr r0, [r4, #4]
cmp r0, #0
bne _021DA0CE
- bl ErrorHandling
+ bl GF_AssertFail
b _021DA0CE
_021DA0C6:
add r2, r2, #1
@@ -910,7 +910,7 @@ _021DA0C6:
_021DA0CE:
cmp r4, #0
bne _021DA0D6
- bl ErrorHandling
+ bl GF_AssertFail
_021DA0D6:
add r0, r4, #0
add sp, #0x14
@@ -1171,7 +1171,7 @@ MOD05_021DA26C: ; 0x021DA26C
add r5, r0, #0
add r4, r1, #0
bne _021DA278
- bl ErrorHandling
+ bl GF_AssertFail
_021DA278:
mov r1, #0x10
mov r0, #0
@@ -1203,7 +1203,7 @@ _021DA292:
strb r4, [r0]
b _021DA2B6
_021DA2AE:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
_021DA2B6:
@@ -1265,7 +1265,7 @@ MOD05_021DA304: ; 0x021DA304
add r6, r2, #0
cmp r4, #4
ble _021DA314
- bl ErrorHandling
+ bl GF_AssertFail
_021DA314:
cmp r5, #0
beq _021DA31A
@@ -1284,7 +1284,7 @@ MOD05_021DA320: ; 0x021DA320
add r6, r2, #0
cmp r4, r0
blt _021DA332
- bl ErrorHandling
+ bl GF_AssertFail
_021DA332:
lsl r0, r4, #2
str r6, [r5, r0]
@@ -1299,7 +1299,7 @@ MOD05_021DA338: ; 0x021DA338
add r4, r1, #0
cmp r4, r0
blt _021DA34A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA34A:
lsl r0, r4, #2
ldr r0, [r5, r0]
@@ -1320,7 +1320,7 @@ _021DA360:
bl MOD05_021D9B04
ldr r0, [r6, #0x14]
ldr r1, [sp]
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
_021DA378:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -1368,7 +1368,7 @@ _021DA3AC:
bl MOD05_021D9C14
add r4, r0, #0
bne _021DA3D2
- bl ErrorHandling
+ bl GF_AssertFail
_021DA3D2:
ldr r0, [sp, #0x4c]
add r1, r5, #0
@@ -1464,7 +1464,7 @@ MOD05_021DA464: ; 0x021DA464
bl MOD05_021DA26C
add r5, r0, #0
bne _021DA482
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_021DA482:
@@ -1476,7 +1476,7 @@ _021DA482:
ldrb r4, [r0]
cmp r4, #0
bne _021DA498
- bl ErrorHandling
+ bl GF_AssertFail
_021DA498:
cmp r4, #0
bne _021DA49E
@@ -1506,7 +1506,7 @@ MOD05_021DA4BC: ; 0x021DA4BC
add r6, r3, #0
cmp r4, #6
blo _021DA4CE
- bl ErrorHandling
+ bl GF_AssertFail
_021DA4CE:
add r0, r5, #0
add r1, r7, #0
@@ -1517,7 +1517,7 @@ _021DA4CE:
ldr r0, [r5, r4]
cmp r0, #0
beq _021DA4E6
- bl ErrorHandling
+ bl GF_AssertFail
_021DA4E6:
str r6, [r5, r4]
pop {r3, r4, r5, r6, r7, pc}
@@ -1531,7 +1531,7 @@ MOD05_021DA4EC: ; 0x021DA4EC
add r6, r2, #0
cmp r4, #0
bne _021DA4FC
- bl ErrorHandling
+ bl GF_AssertFail
_021DA4FC:
add r0, r5, #0
add r1, r4, #0
@@ -1552,7 +1552,7 @@ MOD05_021DA514: ; 0x021DA514
add r4, r3, #0
cmp r5, #0
bne _021DA526
- bl ErrorHandling
+ bl GF_AssertFail
_021DA526:
add r0, r6, #0
add r1, r5, #0
@@ -1578,7 +1578,7 @@ MOD05_021DA54C: ; 0x021DA54C
add r4, r1, #0
add r6, r2, #0
bne _021DA55A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA55A:
add r0, r4, #0
add r1, r6, #0
@@ -1597,7 +1597,7 @@ MOD05_021DA574: ; 0x021DA574
add r5, r0, #0
add r4, r1, #0
bne _021DA580
- bl ErrorHandling
+ bl GF_AssertFail
_021DA580:
add r0, r5, #0
add r1, r4, #0
@@ -1611,7 +1611,7 @@ MOD05_021DA58C: ; 0x021DA58C
bl MOD05_021DA574
add r4, r0, #0
bne _021DA59A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA59A:
add r0, r4, #0
bl MOD05_021DA20C
diff --git a/arm9/modules/05/asm/mod05_021DA5B8.s b/arm9/modules/05/asm/mod05_021DA5B8.s
index e961bb5a..b4648ab3 100644
--- a/arm9/modules/05/asm/mod05_021DA5B8.s
+++ b/arm9/modules/05/asm/mod05_021DA5B8.s
@@ -115,7 +115,7 @@ _021DA606:
bl MOD05_021DA464
b _021DA692
_021DA688:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x84
mov r0, #1
pop {r4, r5, r6, r7, pc}
@@ -156,7 +156,7 @@ _021DA6CC:
mov r2, #0
b _021DA6DA
_021DA6D4:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #0
_021DA6DA:
ldr r0, [r5, #0x50]
@@ -220,7 +220,7 @@ _021DA752:
mov r2, #1
b _021DA760
_021DA75A:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #1
_021DA760:
ldr r0, [r5, #0x50]
@@ -350,7 +350,7 @@ _021DA7E4:
bl MOD05_021DA464
b _021DA878
_021DA864:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #1
bl MOD05_021D7CA4
mov r0, #6
@@ -412,7 +412,7 @@ _021DA8D6:
mov r2, #2
b _021DA8E4
_021DA8DE:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #0
_021DA8E4:
ldr r0, [r5, #0x50]
@@ -477,7 +477,7 @@ _021DA960:
mov r2, #3
b _021DA96E
_021DA968:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #1
_021DA96E:
ldr r0, [r5, #0x50]
@@ -737,7 +737,7 @@ _021DAB10:
bl MOD05_021DA464
b _021DAB68
_021DAB5E:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x40
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -753,7 +753,7 @@ _021DAB68:
bl FUN_0205ADDC
b _021DAB86
_021DAB82:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAB86:
ldr r0, [r4]
add r0, r0, #1
@@ -784,7 +784,7 @@ _021DABBA:
bl FUN_0205ADDC
b _021DABC6
_021DABC2:
- bl ErrorHandling
+ bl GF_AssertFail
_021DABC6:
ldr r0, [r4]
add r0, r0, #1
@@ -958,7 +958,7 @@ _021DACDA:
bl MOD05_021DA464
b _021DAD34
_021DAD2A:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x40
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -974,7 +974,7 @@ _021DAD34:
bl FUN_0205ADDC
b _021DAD52
_021DAD4E:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD52:
ldr r0, [r4]
add r0, r0, #1
@@ -1003,7 +1003,7 @@ _021DAD80:
bl FUN_0205ADDC
b _021DAD8C
_021DAD88:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD8C:
ldr r0, [r4]
add r0, r0, #1
@@ -1152,7 +1152,7 @@ _021DAE50:
add sp, #0x84
pop {r4, r5, r6, r7, pc}
_021DAEC8:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x84
pop {r4, r5, r6, r7, pc}
.balign 4, 0
@@ -1189,7 +1189,7 @@ _021DAF04:
mov r2, #0
b _021DAF12
_021DAF0C:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #0
_021DAF12:
ldr r0, [r5, #0x50]
@@ -1232,7 +1232,7 @@ _021DAF58:
mov r2, #1
b _021DAF66
_021DAF60:
- bl ErrorHandling
+ bl GF_AssertFail
mov r2, #1
_021DAF66:
ldr r0, [r5, #0x50]
@@ -1302,7 +1302,7 @@ MOD05_021DAFA8: ; 0x021DAFA8
bl FUN_0204A94C
cmp r0, #0
bne _021DAFEA
- bl ErrorHandling
+ bl GF_AssertFail
_021DAFEA:
ldr r0, [sp, #0x18]
bl MOD05_021E7EC8
@@ -1315,7 +1315,7 @@ _021DAFEA:
bl MOD05_021D9DC0
cmp r0, #0
bne _021DB008
- bl ErrorHandling
+ bl GF_AssertFail
_021DB008:
ldr r0, [sp, #0x14]
ldr r2, [r4, #0x4c]
@@ -1675,7 +1675,7 @@ _021DB2E6:
mov r6, #0x27
b _021DB2EE
_021DB2EA:
- bl ErrorHandling
+ bl GF_AssertFail
_021DB2EE:
mov r1, #0
str r1, [sp]
diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s
index b606312e..eaee32f8 100644
--- a/arm9/modules/05/asm/mod05_021DB44C.s
+++ b/arm9/modules/05/asm/mod05_021DB44C.s
@@ -10,7 +10,7 @@ MOD05_021DB44C: ; 0x021DB44C
add r5, r0, #0
cmp r6, #3
blo _021DB45A
- bl ErrorHandling
+ bl GF_AssertFail
_021DB45A:
mov r0, #4
mov r1, #0x14
@@ -60,14 +60,14 @@ MOD05_021DB4B0: ; 0x021DB4B0
push {r4, lr}
add r4, r0, #0
bne _021DB4BA
- bl ErrorHandling
+ bl GF_AssertFail
_021DB4BA:
ldr r0, [r4]
add r0, r0, #4
bl MOD05_021DB7A0
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4]
pop {r4, pc}
@@ -77,7 +77,7 @@ MOD05_021DB4D0: ; 0x021DB4D0
push {r3, r4, r5, lr}
add r4, r0, #0
bne _021DB4DA
- bl ErrorHandling
+ bl GF_AssertFail
_021DB4DA:
bl GF_RTC_TimeToSec
lsr r1, r0, #0x1f
@@ -229,21 +229,21 @@ MOD05_021DB5EC: ; 0x021DB5EC
add r4, r0, #0
mov r1, #0
mov r2, #0x40
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
add r0, r4, #0
mov r1, #0
mov r2, #0x80
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
mov r2, #2
add r0, r4, #0
mov r1, #0
lsl r2, r2, #8
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
mov r2, #1
add r0, r4, #0
mov r1, #0
lsl r2, r2, #0xa
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
pop {r4, pc}
thumb_func_start MOD05_021DB61C
@@ -419,7 +419,7 @@ _021DB73E:
_021DB78A:
ldr r1, [sp, #0x14]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #8]
add sp, #0x1fc
add sp, #0x20
@@ -433,7 +433,7 @@ MOD05_021DB7A0: ; 0x021DB7A0
add r4, r0, #0
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4]
pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021DB900.s b/arm9/modules/05/asm/mod05_021DB900.s
index 9edf9e7c..931fcfad 100644
--- a/arm9/modules/05/asm/mod05_021DB900.s
+++ b/arm9/modules/05/asm/mod05_021DB900.s
@@ -11,7 +11,7 @@ MOD05_021DB900: ; 0x021DB900
bl AllocFromHeap
add r4, r0, #0
bne _021DB912
- bl ErrorHandling
+ bl GF_AssertFail
_021DB912:
add r0, r4, #0
pop {r4, pc}
@@ -37,7 +37,7 @@ MOD05_021DB918: ; 0x021DB918
bl FS_ReadFile
cmp r0, #0
bge _021DB946
- bl ErrorHandling
+ bl GF_AssertFail
_021DB946:
add r0, sp, #4
add r1, sp, #0
@@ -45,7 +45,7 @@ _021DB946:
bl FS_ReadFile
cmp r0, #0
bge _021DB958
- bl ErrorHandling
+ bl GF_AssertFail
_021DB958:
add r0, sp, #0
ldrh r1, [r0, #2]
@@ -58,7 +58,7 @@ _021DB958:
str r0, [r5]
cmp r0, #0
bne _021DB974
- bl ErrorHandling
+ bl GF_AssertFail
_021DB974:
mov r0, #4
add r1, r4, #0
@@ -66,7 +66,7 @@ _021DB974:
str r0, [r5, #4]
cmp r0, #0
bne _021DB986
- bl ErrorHandling
+ bl GF_AssertFail
_021DB986:
ldr r1, [r5]
add r0, sp, #4
@@ -74,7 +74,7 @@ _021DB986:
bl FS_ReadFile
cmp r0, #0
bge _021DB998
- bl ErrorHandling
+ bl GF_AssertFail
_021DB998:
ldr r1, [r5, #4]
add r0, sp, #4
@@ -82,14 +82,14 @@ _021DB998:
bl FS_ReadFile
cmp r0, #0
bge _021DB9AA
- bl ErrorHandling
+ bl GF_AssertFail
_021DB9AA:
add r0, sp, #4
bl FS_CloseFile
add sp, #0x4c
pop {r3, r4, r5, r6, pc}
_021DB9B4:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4c
pop {r3, r4, r5, r6, pc}
diff --git a/arm9/modules/05/asm/mod05_021DBA00.s b/arm9/modules/05/asm/mod05_021DBA00.s
index 22e64df5..d0d97f37 100644
--- a/arm9/modules/05/asm/mod05_021DBA00.s
+++ b/arm9/modules/05/asm/mod05_021DBA00.s
@@ -24,7 +24,7 @@ MOD05_021DBA1C: ; 0x021DBA1C
add r4, r0, #0
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4]
pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021DBABC.s b/arm9/modules/05/asm/mod05_021DBABC.s
index 28a15fb2..2c2bb7d6 100644
--- a/arm9/modules/05/asm/mod05_021DBABC.s
+++ b/arm9/modules/05/asm/mod05_021DBABC.s
@@ -24,7 +24,7 @@ MOD05_021DBAD8: ; 0x021DBAD8
add r4, r0, #0
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4]
pop {r4, pc}
@@ -51,7 +51,7 @@ _021DBAFA:
ldrsh r2, [r5, r2]
ldrsh r3, [r5, r3]
add r0, r4, #0
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
_021DBB14:
add r1, r4, #4
mov r0, #1
@@ -60,7 +60,7 @@ _021DBB14:
beq _021DBB26
ldrh r1, [r6, #0x18]
add r0, r4, #0
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
_021DBB26:
add r4, r4, #1
add r5, r5, #6
@@ -77,7 +77,7 @@ _021DBB26:
ldrh r0, [r0, #0x20]
ldrh r1, [r1, #0x22]
ldr r2, [r2, #0x28]
- bl FUN_020B83E0
+ bl NNS_G3dGlbMaterialColorDiffAmb
_021DBB48:
mov r0, #3
lsl r0, r0, #0xa
@@ -89,7 +89,7 @@ _021DBB48:
ldrh r0, [r0, #0x24]
ldrh r1, [r1, #0x26]
ldr r2, [r2, #0x2c]
- bl FUN_020B83BC
+ bl NNS_G3dGlbMaterialColorSpecEmi
_021DBB60:
mov r0, #1
lsl r0, r0, #0xc
@@ -109,7 +109,7 @@ _021DBB60:
ldr r0, [r0, #0x30]
ldr r2, [r2, #0x38]
ldr r3, [r3, #0x3c]
- bl FUN_020B8390
+ bl NNS_G3dGlbPolygonAttr
_021DBB88:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -126,7 +126,7 @@ MOD05_021DBB8C: ; 0x021DBB8C
beq _021DBBA4
ldrh r1, [r5, #0x20]
add r0, r6, #0
- bl FUN_020BBC34
+ bl NNS_G3dMdlSetMdlDiffAll
_021DBBA4:
mov r0, #2
lsl r0, r0, #8
@@ -134,7 +134,7 @@ _021DBBA4:
beq _021DBBB4
ldrh r1, [r5, #0x22]
add r0, r6, #0
- bl FUN_020BBBF4
+ bl NNS_G3dMdlSetMdlAmbAll
_021DBBB4:
mov r0, #1
lsl r0, r0, #0xa
@@ -142,7 +142,7 @@ _021DBBB4:
beq _021DBBC4
ldrh r1, [r5, #0x24]
add r0, r6, #0
- bl FUN_020BBBB4
+ bl NNS_G3dMdlSetMdlSpecAll
_021DBBC4:
mov r0, #2
lsl r0, r0, #0xa
@@ -150,7 +150,7 @@ _021DBBC4:
beq _021DBBD4
ldrh r1, [r5, #0x26]
add r0, r6, #0
- bl FUN_020BBB74
+ bl NNS_G3dMdlSetMdlEmiAll
_021DBBD4:
mov r0, #1
lsl r0, r0, #0xc
@@ -158,7 +158,7 @@ _021DBBD4:
beq _021DBBE4
ldr r1, [r5, #0x30]
add r0, r6, #0
- bl FUN_020BBB34
+ bl NNS_G3dMdlSetMdlLightEnableFlagAll
_021DBBE4:
mov r0, #2
lsl r0, r0, #0xc
@@ -166,7 +166,7 @@ _021DBBE4:
beq _021DBBF4
ldr r1, [r5, #0x34]
add r0, r6, #0
- bl FUN_020BBAF4
+ bl NNS_G3dMdlSetMdlPolygonModeAll
_021DBBF4:
mov r0, #1
lsl r0, r0, #0xe
@@ -174,7 +174,7 @@ _021DBBF4:
beq _021DBC04
ldr r1, [r5, #0x38]
add r0, r6, #0
- bl FUN_020BBAB4
+ bl NNS_G3dMdlSetMdlCullModeAll
_021DBC04:
mov r0, #2
lsl r0, r0, #0xe
@@ -182,7 +182,7 @@ _021DBC04:
beq _021DBC14
ldr r1, [r5, #0x3c]
add r0, r6, #0
- bl FUN_020BBA74
+ bl NNS_G3dMdlSetMdlPolygonIDAll
_021DBC14:
mov r0, #1
lsl r0, r0, #0x10
@@ -190,7 +190,7 @@ _021DBC14:
beq _021DBC24
ldr r1, [r5, #0x40]
add r0, r6, #0
- bl FUN_020BBA34
+ bl NNS_G3dMdlSetMdlAlphaAll
_021DBC24:
mov r1, #2
lsl r1, r1, #0x10
@@ -201,7 +201,7 @@ _021DBC24:
lsr r1, r1, #2
add r0, r6, #0
and r1, r2
- bl FUN_020BB9F4
+ bl NNS_G3dMdlSetMdlFogEnableFlagAll
_021DBC3A:
mov r1, #1
lsl r1, r1, #0x12
@@ -212,7 +212,7 @@ _021DBC3A:
lsr r1, r1, #4
add r0, r6, #0
and r1, r2
- bl FUN_020BB9B4
+ bl NNS_G3dMdlSetMdlDepthTestCondAll
_021DBC50:
mov r1, #2
lsl r1, r1, #0x12
@@ -223,7 +223,7 @@ _021DBC50:
lsr r1, r1, #6
add r0, r6, #0
and r1, r2
- bl FUN_020BB974
+ bl NNS_G3dMdlSetMdl1DotAll
_021DBC66:
mov r1, #1
lsl r1, r1, #0x14
@@ -234,7 +234,7 @@ _021DBC66:
lsr r1, r1, #8
add r0, r6, #0
and r1, r2
- bl FUN_020BB934
+ bl NNS_G3dMdlSetMdlFarClipAll
_021DBC7C:
mov r1, #2
lsl r1, r1, #0x14
@@ -245,7 +245,7 @@ _021DBC7C:
lsr r1, r1, #0xa
add r0, r6, #0
and r1, r2
- bl FUN_020BB8F4
+ bl NNS_G3dMdlSetMdlXLDepthUpdateAll
_021DBC92:
pop {r4, r5, r6, pc}
@@ -268,7 +268,7 @@ MOD05_021DBC94: ; 0x021DBC94
ldrsh r1, [r5, r4]
ldrsh r2, [r2, r4]
ldrsh r3, [r3, r4]
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
pop {r4, r5, r6, pc}
thumb_func_start MOD05_021DBCBC
@@ -280,7 +280,7 @@ MOD05_021DBCBC: ; 0x021DBCBC
strh r2, [r4, r3]
add r0, r1, #0
ldrh r1, [r4, r3]
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
pop {r4, pc}
thumb_func_start MOD05_021DBCD0
diff --git a/arm9/modules/05/asm/mod05_021DBD84.s b/arm9/modules/05/asm/mod05_021DBD84.s
index 7c107314..9a6cb847 100644
--- a/arm9/modules/05/asm/mod05_021DBD84.s
+++ b/arm9/modules/05/asm/mod05_021DBD84.s
@@ -16,7 +16,7 @@ MOD05_021DBD84: ; 0x021DBD84
add r4, r1, r0
cmp r2, #0x10
blo _021DBD9E
- bl ErrorHandling
+ bl GF_AssertFail
_021DBD9E:
mov r0, #4
bl FUN_0201EB64
diff --git a/arm9/modules/05/asm/mod05_021DBE04.s b/arm9/modules/05/asm/mod05_021DBE04.s
index 4b4b5177..873fd482 100644
--- a/arm9/modules/05/asm/mod05_021DBE04.s
+++ b/arm9/modules/05/asm/mod05_021DBE04.s
@@ -9,11 +9,11 @@ MOD05_021DBE04: ; 0x021DBE04
ldr r4, [r0, #0x18]
cmp r4, #0
bne _021DBE10
- bl ErrorHandling
+ bl GF_AssertFail
_021DBE10:
cmp r4, #5
blt _021DBE18
- bl ErrorHandling
+ bl GF_AssertFail
_021DBE18:
sub r0, r4, #1
pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021DBEF4.s b/arm9/modules/05/asm/mod05_021DBEF4.s
index 1d56d13e..f65de9d8 100644
--- a/arm9/modules/05/asm/mod05_021DBEF4.s
+++ b/arm9/modules/05/asm/mod05_021DBEF4.s
@@ -133,7 +133,7 @@ _021DBFA8:
str r0, [r1, r5]
add r0, r1, #0
ldr r0, [r0, r5]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
add r1, r6, r5
str r0, [r1, #8]
add r0, r4, #0
diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s
index ab06fed1..7b1e767f 100644
--- a/arm9/modules/05/asm/mod05_021DC0B8.s
+++ b/arm9/modules/05/asm/mod05_021DC0B8.s
@@ -68,7 +68,7 @@ MOD05_021DC124: ; 0x021DC124
add r4, r1, #0
cmp r0, #6
beq _021DC134
- bl ErrorHandling
+ bl GF_AssertFail
_021DC134:
ldr r2, [r5, #4]
cmp r2, r4
@@ -78,7 +78,7 @@ _021DC134:
bl MOD05_021DC608
cmp r0, #0
bne _021DC14A
- bl ErrorHandling
+ bl GF_AssertFail
_021DC14A:
ldr r0, [r5]
mov r1, #0
@@ -86,7 +86,7 @@ _021DC14A:
bl MOD05_021DC608
cmp r0, #0
bne _021DC15C
- bl ErrorHandling
+ bl GF_AssertFail
_021DC15C:
ldr r0, [r5]
mov r1, #3
@@ -94,7 +94,7 @@ _021DC15C:
bl MOD05_021DC608
cmp r0, #0
bne _021DC16E
- bl ErrorHandling
+ bl GF_AssertFail
_021DC16E:
str r4, [r5, #4]
_021DC170:
@@ -122,7 +122,7 @@ _021DC190:
ldr r0, [r5, #0x14]
cmp r0, #0
beq _021DC19A
- bl ErrorHandling
+ bl GF_AssertFail
_021DC19A:
str r4, [r5, #8]
ldr r0, [r5, #4]
@@ -182,7 +182,7 @@ _021DC1F6:
bl MOD05_021DC608
cmp r0, #0
bne _021DC208
- bl ErrorHandling
+ bl GF_AssertFail
_021DC208:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -200,7 +200,7 @@ _021DC210:
bl MOD05_021DC608
cmp r0, #0
bne _021DC22E
- bl ErrorHandling
+ bl GF_AssertFail
_021DC22E:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -213,7 +213,7 @@ _021DC236:
bl MOD05_021DC608
cmp r0, #0
bne _021DC248
- bl ErrorHandling
+ bl GF_AssertFail
_021DC248:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -236,7 +236,7 @@ _021DC264:
bl MOD05_021DC608
cmp r0, #0
bne _021DC276
- bl ErrorHandling
+ bl GF_AssertFail
_021DC276:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -288,7 +288,7 @@ _021DC2C4:
bl MOD05_021DC608
cmp r0, #0
bne _021DC2D6
- bl ErrorHandling
+ bl GF_AssertFail
_021DC2D6:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -311,7 +311,7 @@ _021DC2F2:
bl MOD05_021DC608
cmp r0, #0
bne _021DC304
- bl ErrorHandling
+ bl GF_AssertFail
_021DC304:
ldr r0, [r4]
ldr r2, [r4, #8]
@@ -319,7 +319,7 @@ _021DC304:
bl MOD05_021DC608
cmp r0, #0
bne _021DC316
- bl ErrorHandling
+ bl GF_AssertFail
_021DC316:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -337,7 +337,7 @@ _021DC31E:
bl MOD05_021DC608
cmp r0, #0
bne _021DC33C
- bl ErrorHandling
+ bl GF_AssertFail
_021DC33C:
ldr r0, [r4, #0xc]
add r0, r0, #1
@@ -520,7 +520,7 @@ MOD05_021DC480: ; 0x021DC480
add r1, r5, #0
mov r2, #0
mov r3, #4
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r5, r0, #0
add r1, r4, #0
mov r2, #4
@@ -692,7 +692,7 @@ _021DC5A2:
bl NARC_dtor
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4]
_021DC5FE:
@@ -1220,7 +1220,7 @@ _021DC998:
str r2, [r1, r0]
ldr r1, [r4, #0xc]
add r0, r3, #4
- ldr r6, _021DCA38 ; =UNK_021CEF70
+ ldr r6, _021DCA38 ; =NNS_G3dGlb + 0x258
add r5, r1, r0
ldmia r6!, {r0, r1}
stmia r5!, {r0, r1}
@@ -1271,7 +1271,7 @@ _021DCA30:
pop {r4, r5, r6, pc}
.balign 4, 0
_021DCA34: .word 0x00000F48
-_021DCA38: .word UNK_021CEF70
+_021DCA38: .word NNS_G3dGlb + 0x258
_021DCA3C: .word 0x00000F58
_021DCA40: .word 0x0400000C
@@ -1362,7 +1362,7 @@ _021DCAD2:
bl MOD05_021DC880
ldr r1, [r4, #0x10]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4, #0x10]
ldr r0, [r4, #0x1c]
@@ -1390,7 +1390,7 @@ _021DCB14:
cmp r1, #0
beq _021DCB2C
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r1, [r4, #0xc]
ldr r0, _021DCB64 ; =0x00000F58
mov r2, #0
@@ -1414,7 +1414,7 @@ _021DCB3E:
_021DCB4C:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4, #0xc]
_021DCB58:
@@ -1559,7 +1559,7 @@ _021DCC66:
bl MOD05_021DCD68
cmp r0, #0
bne _021DCC74
- bl ErrorHandling
+ bl GF_AssertFail
_021DCC74:
ldr r0, [r4, #0x18]
add r0, r0, #1
@@ -1897,7 +1897,7 @@ MOD05_021DCECC: ; 0x021DCECC
bl NARC_AllocAndReadWholeMember
add r1, sp, #0x14
str r0, [sp]
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r1, [sp, #0x14]
mov r0, #2
ldr r1, [r1, #0xc]
@@ -1934,7 +1934,7 @@ MOD05_021DCF14: ; 0x021DCF14
bl NARC_AllocAndReadWholeMember
add r1, sp, #0x14
str r0, [sp, #8]
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r3, [sp, #0x14]
mov r0, #0
str r0, [sp]
@@ -1981,11 +1981,11 @@ MOD05_021DCF68: ; 0x021DCF68
str r0, [sp, #0x14]
cmp r0, #0
bne _021DCFA0
- bl ErrorHandling
+ bl GF_AssertFail
_021DCFA0:
ldr r0, [sp, #0x14]
add r1, sp, #0x18
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r3, [sp, #0x18]
mov r0, #0
str r0, [sp]
@@ -2043,15 +2043,15 @@ MOD05_021DD010: ; 0x021DD010
add r4, r1, #0
cmp r0, #0
beq _021DD020
- bl ErrorHandling
+ bl GF_AssertFail
_021DD020:
cmp r4, #0
bgt _021DD028
- bl ErrorHandling
+ bl GF_AssertFail
_021DD028:
cmp r4, #0x28
bls _021DD030
- bl ErrorHandling
+ bl GF_AssertFail
_021DD030:
add r0, r5, #0
add r0, #0xc
@@ -2285,7 +2285,7 @@ MOD05_021DD180: ; 0x021DD180
ldr r0, [sp, #0xc]
lsl r1, r1, #0x12
bl FX_Div
- ldr r3, _021DD2B0 ; =UNK_021CEF70
+ ldr r3, _021DD2B0 ; =NNS_G3dGlb + 0x258
str r0, [sp, #0xc]
ldmia r3!, {r0, r1}
add r2, sp, #0x14
@@ -2391,7 +2391,7 @@ _021DD2A4:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
-_021DD2B0: .word UNK_021CEF70
+_021DD2B0: .word NNS_G3dGlb + 0x258
_021DD2B4: .word 0x00000F4C
_021DD2B8: .word 0xFFFFF000
@@ -10147,7 +10147,7 @@ MOD05_021E0FA4: ; 0x021E0FA4
ldr r0, [r5, r0]
cmp r0, #0
beq _021E0FB6
- bl ErrorHandling
+ bl GF_AssertFail
_021E0FB6:
ldr r1, _021E0FCC ; =0x00000F5C
mov r0, #1
diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s
index df43ddb9..0e1a6b44 100644
--- a/arm9/modules/05/asm/mod05_021E1374.s
+++ b/arm9/modules/05/asm/mod05_021E1374.s
@@ -17,7 +17,7 @@ MOD05_021E1374: ; 0x021E1374
bl AllocFromHeap
add r4, r0, #0
bne _021E1396
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021E1396:
mov r2, #0x47
@@ -493,7 +493,7 @@ MOD05_021E1724: ; 0x021E1724
bl AllocFromHeap
add r4, r0, #0
bne _021E173C
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
_021E173C:
ldr r0, _021E1750 ; =MOD05_021E1754
@@ -520,7 +520,7 @@ MOD05_021E1754: ; 0x021E1754
ldrh r0, [r1, r0]
cmp r0, #0
bne _021E1770
- bl ErrorHandling
+ bl GF_AssertFail
_021E1770:
ldr r2, [r4, #8]
ldr r0, _021E1790 ; =0x00000112
@@ -533,7 +533,7 @@ _021E1770:
bl FUN_0200CAB4
mov r0, #4
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_021E178E:
pop {r4, pc}
.balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s
index 0b72da2a..c41f4c57 100644
--- a/arm9/modules/05/asm/mod05_021E1AD8.s
+++ b/arm9/modules/05/asm/mod05_021E1AD8.s
@@ -738,7 +738,7 @@ _021E2032:
add r0, r4, r0
mov r1, #0
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
mov r1, #0x6d
lsl r1, r1, #2
str r0, [r4, r1]
@@ -1012,13 +1012,13 @@ MOD05_021E2278: ; 0x021E2278
mov r1, #3
mov r2, #0xf
mov r3, #4
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, pc}
_021E228E:
mov r1, #1
mov r2, #0xf
mov r3, #2
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, pc}
.balign 4, 0
@@ -1045,7 +1045,7 @@ _021E22B8:
mov r0, #0x6d
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
mov r0, #0x6d
mov r1, #0xb5
@@ -1054,7 +1054,7 @@ _021E22B8:
ldrh r6, [r5, r1]
ldr r0, [r5, r0]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
mov r0, #0xb5
lsl r0, r0, #2
ldrh r0, [r5, r0]
@@ -1134,7 +1134,7 @@ MOD05_021E2368: ; 0x021E2368
mov r1, #0
ldr r0, [r6, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r6, r0]
@@ -1189,7 +1189,7 @@ MOD05_021E23D0: ; 0x021E23D0
add r6, r0, #0
ldr r0, [r5, #0x18]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
@@ -1226,7 +1226,7 @@ MOD05_021E2434: ; 0x021E2434
ldr r0, [r4, r1]
add r1, r1, #6
add r1, r4, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldr r0, _021E2460 ; =0x000001BA
ldrh r1, [r4, r0]
add r0, #0xe2
@@ -1259,7 +1259,7 @@ MOD05_021E2464: ; 0x021E2464
add r5, r0, #0
add r0, r4, #0
add r1, r0, #0
- bl FUN_02002E4C
+ bl GetFontAttribute
lsl r1, r0, #3
mov r0, #7
tst r0, r1
@@ -1318,7 +1318,7 @@ _021E2496:
add r0, #8
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r2, #0
add r0, r5, #0
mov r1, #0xf
@@ -1718,7 +1718,7 @@ MOD05_021E27E8: ; 0x021E27E8
add r6, r2, #0
mov r0, #4
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r4, r0, #0
str r6, [sp]
mov r0, #0xa
@@ -1750,7 +1750,7 @@ MOD05_021E27E8: ; 0x021E27E8
bl FUN_0200CCA4
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0x7a
mov r0, #0
mov r1, #0x1a
@@ -1807,7 +1807,7 @@ MOD05_021E28A0: ; 0x021E28A0
mov r1, #0xf
mov r2, #0
str r3, [sp, #4]
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r2, #0x7a
mov r0, #0
mov r1, #0x1a
@@ -1878,7 +1878,7 @@ MOD05_021E2950: ; 0x021E2950
add r6, r2, #0
mov r0, #4
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r4, r0, #0
str r6, [sp]
mov r0, #0xa
@@ -1936,7 +1936,7 @@ MOD05_021E29C8: ; 0x021E29C8
str r1, [sp, #0xc]
add r0, r1, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021E2A6C ; =0x00000141
mov r0, #0
mov r1, #0x1a
@@ -2007,7 +2007,7 @@ MOD05_021E2A70: ; 0x021E2A70
add r6, r2, #0
mov r0, #4
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r4, r0, #0
str r6, [sp]
mov r0, #0xa
@@ -2054,7 +2054,7 @@ MOD05_021E2AD4: ; 0x021E2AD4
str r1, [sp, #0xc]
add r0, r1, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021E2B7C ; =0x00000141
mov r0, #0
mov r1, #0x1a
diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s
index 16e19ae0..8a1f9413 100644
--- a/arm9/modules/05/asm/mod05_021E2B80.s
+++ b/arm9/modules/05/asm/mod05_021E2B80.s
@@ -296,7 +296,7 @@ MOD05_CreateMessageBox: ; 0x021E2D9C
_021E2DC8:
ldr r0, [r4, #0xc]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
pop {r3, r4, r5, pc}
.balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021E2E88.s b/arm9/modules/05/asm/mod05_021E2E88.s
index 0666b52d..a81ba2f1 100644
--- a/arm9/modules/05/asm/mod05_021E2E88.s
+++ b/arm9/modules/05/asm/mod05_021E2E88.s
@@ -146,7 +146,7 @@ _021E2F92:
add r0, r5, #0
add r0, #0x20
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #8
str r2, [sp]
add r0, r5, #0
@@ -159,7 +159,7 @@ _021E2F92:
ldr r1, [r5, #0x34]
add r0, #0x20
ldr r1, [r1, #0x14]
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
ldr r0, [sp, #0x18]
mov r1, #8
add r0, r0, #1
@@ -178,7 +178,7 @@ _021E2F92:
ldr r1, [r1, #0x14]
add r0, #0x20
mov r2, #0x18
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r0, #8
str r0, [sp]
str r0, [sp, #4]
@@ -192,7 +192,7 @@ _021E2F92:
ldr r1, [r1, #0x14]
add r0, #0x20
mov r2, #0x38
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r1, #8
str r1, [sp]
lsl r0, r4, #0x10
@@ -208,7 +208,7 @@ _021E2F92:
add r0, #0x20
mov r2, #0x40
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r1, #8
str r1, [sp]
str r1, [sp, #4]
@@ -223,7 +223,7 @@ _021E2F92:
ldr r1, [r1, #0x14]
add r0, #0x20
mov r2, #0x20
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r1, #8
str r1, [sp]
lsl r0, r4, #0x10
@@ -240,7 +240,7 @@ _021E2F92:
add r0, #0x20
mov r2, #0x30
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
ldr r0, [sp, #0x18]
mov r7, #0
cmp r0, #0
@@ -266,7 +266,7 @@ _021E3078:
ldr r1, [r1, #0x14]
mov r2, #0x10
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r0, #8
str r0, [sp]
str r0, [sp, #4]
@@ -282,7 +282,7 @@ _021E3078:
ldr r1, [r1, #0x14]
mov r2, #0x48
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r0, #8
str r0, [sp]
str r0, [sp, #4]
@@ -299,7 +299,7 @@ _021E3078:
ldr r1, [r1, #0x14]
mov r2, #0x28
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
@@ -568,7 +568,7 @@ _021E32E0:
str r0, [r4, #0x14]
pop {r4, pc}
_021E32E6:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
.balign 4, 0
_021E32EC: .word MOD05_021E3124
diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s
index 27446591..42f9037e 100644
--- a/arm9/modules/05/asm/mod05_021E3444.s
+++ b/arm9/modules/05/asm/mod05_021E3444.s
@@ -495,7 +495,7 @@ MOD05_021E37CC: ; 0x021E37CC
ldr r4, [sp, #0x20]
cmp r0, #0
beq _021E37E4
- bl ErrorHandling
+ bl GF_AssertFail
_021E37E4:
mov r0, #0
str r0, [r6, #0x18]
@@ -587,7 +587,7 @@ MOD05_021E3888: ; 0x021E3888
bl MOD05_021E35AC
cmp r0, #0
beq _021E389E
- bl ErrorHandling
+ bl GF_AssertFail
_021E389E:
str r4, [r5, #0x18]
mov r0, #0
@@ -837,7 +837,7 @@ MOD05_021E3A70: ; 0x021E3A70
add r7, r3, #0
cmp r0, #0
beq _021E3A84
- bl ErrorHandling
+ bl GF_AssertFail
_021E3A84:
mov r1, #0
str r1, [r5, #0x18]
@@ -1170,7 +1170,7 @@ MOD05_021E3D20: ; 0x021E3D20
str r0, [sp, #4]
mov r0, #0x70
add r2, r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1181,7 +1181,7 @@ MOD05_021E3D20: ; 0x021E3D20
add r1, r6, #0
add r2, r4, #0
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1192,7 +1192,7 @@ MOD05_021E3D20: ; 0x021E3D20
add r1, r5, #0
add r2, r4, #0
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r4, r5, r6, pc}
@@ -1232,7 +1232,7 @@ MOD05_021E3DA0: ; 0x021E3DA0
bl MTX_Identity22_
add r0, sp, #8
ldrh r0, [r0, #0x14]
- ldr r3, _021E3E0C ; =UNK_020FFA38
+ ldr r3, _021E3E0C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1271,7 +1271,7 @@ MOD05_021E3DA0: ; 0x021E3DA0
bl FUN_0200CA98
pop {r3, r4, r5, r6, r7, pc}
nop
-_021E3E0C: .word UNK_020FFA38
+_021E3E0C: .word FX_SinCosTable_
_021E3E10: .word MOD05_021E3D70
thumb_func_start MOD05_021E3E14
@@ -1464,7 +1464,7 @@ MOD05_021E3F68: ; 0x021E3F68
ldrh r1, [r1, #8]
add r2, sp, #4
add r3, r4, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
add r0, sp, #0x20
ldrh r0, [r0, #0x10]
@@ -1508,7 +1508,7 @@ MOD05_021E3FC4: ; 0x021E3FC4
bl FUN_0201FF84
add r4, r0, #0
bne _021E3FF2
- bl ErrorHandling
+ bl GF_AssertFail
_021E3FF2:
add r0, r4, #0
add sp, #0x20
@@ -1549,7 +1549,7 @@ MOD05_021E4014: ; 0x021E4014
ldrh r1, [r1, #0xa]
mov r2, #0
add r3, sp, #0xc
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #4]
ldr r0, [sp, #0xc]
ldr r0, [r0, #0x14]
@@ -1652,7 +1652,7 @@ MOD05_021E40F0: ; 0x021E40F0
bl DC_FlushRange
add r0, r6, #0
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r1, r0, #0
add r0, r5, #0
add r2, r4, #0
@@ -1671,7 +1671,7 @@ MOD05_021E4118: ; 0x021E4118
bl DC_FlushRange
add r0, r6, #0
mov r1, #1
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
add r1, r0, #0
add r0, r5, #0
add r2, r4, #0
@@ -1709,7 +1709,7 @@ MOD05_021E4160: ; 0x021E4160
add r7, r3, #0
cmp r0, #0
beq _021E4176
- bl ErrorHandling
+ bl GF_AssertFail
_021E4176:
ldr r3, [sp, #0x1c]
add r0, r5, #0
@@ -1827,7 +1827,7 @@ MOD05_021E4240: ; 0x021E4240
add r7, r3, #0
cmp r0, #0
beq _021E4256
- bl ErrorHandling
+ bl GF_AssertFail
_021E4256:
ldr r3, [sp, #0x1c]
add r0, r5, #0
@@ -1989,7 +1989,7 @@ _021E4370:
ldrb r1, [r1, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
_021E4390:
add sp, #8
pop {r3, r4, r5, pc}
@@ -2286,7 +2286,7 @@ MOD05_021E45A0: ; 0x021E45A0
add r4, r1, #0
lsl r1, r0, #1
lsl r0, r1, #1
- ldr r2, _021E4680 ; =UNK_020FFA38
+ ldr r2, _021E4680 ; =FX_SinCosTable_
add r1, r1, #1
lsl r1, r1, #1
ldrsh r0, [r2, r0]
@@ -2297,7 +2297,7 @@ MOD05_021E45A0: ; 0x021E45A0
asr r0, r4, #4
lsl r1, r0, #1
lsl r0, r1, #1
- ldr r2, _021E4680 ; =UNK_020FFA38
+ ldr r2, _021E4680 ; =FX_SinCosTable_
add r1, r1, #1
lsl r1, r1, #1
ldrsh r0, [r2, r0]
@@ -2389,7 +2389,7 @@ _021E464C:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
-_021E4680: .word UNK_020FFA38
+_021E4680: .word FX_SinCosTable_
_021E4684: .word 0x00000000
thumb_func_start MOD05_021E4688
@@ -2569,7 +2569,7 @@ MOD05_021E47BC: ; 0x021E47BC
add r5, r3, #0
cmp r0, #0
beq _021E47D8
- bl ErrorHandling
+ bl GF_AssertFail
_021E47D8:
mov r1, #0
str r1, [r4, #0x18]
@@ -2787,7 +2787,7 @@ _021E4976:
mov r6, #0
b _021E4980
_021E497A:
- bl ErrorHandling
+ bl GF_AssertFail
mov r6, #0
_021E4980:
ldr r0, [r5, #4]
diff --git a/arm9/modules/05/asm/mod05_021E4AE4.s b/arm9/modules/05/asm/mod05_021E4AE4.s
index b05969ea..98146a9c 100644
--- a/arm9/modules/05/asm/mod05_021E4AE4.s
+++ b/arm9/modules/05/asm/mod05_021E4AE4.s
@@ -76,7 +76,7 @@ MOD05_021E4B64: ; 0x021E4B64
bl MOD05_021E4D2C
cmp r0, #0
beq _021E4B78
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
_021E4B78:
add r0, r5, #0
@@ -166,7 +166,7 @@ MOD05_021E4C08: ; 0x021E4C08
bl MOD05_021E4D2C
cmp r0, #0
bne _021E4C1A
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
_021E4C1A:
@@ -333,7 +333,7 @@ _021E4D1C:
sub r4, r4, #1
bne _021E4D0E
_021E4D22:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -402,7 +402,7 @@ _021E4D7A:
cmp r2, #0x20
bne _021E4D72
_021E4D82:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
nop
@@ -454,7 +454,7 @@ MOD05_021E4DC4: ; 0x021E4DC4
bl FUN_020644E4
add r4, r0, #0
bne _021E4DDE
- bl ErrorHandling
+ bl GF_AssertFail
_021E4DDE:
add r0, r4, #0
add sp, #8
@@ -566,14 +566,14 @@ MOD05_021E4E90: ; 0x021E4E90
bl FUN_0201F6E8
add r4, r0, #0
bne _021E4EC0
- bl ErrorHandling
+ bl GF_AssertFail
_021E4EC0:
cmp r4, #0
beq _021E4EDA
add r0, r4, #0
bl FUN_0201F8E0
mov r1, #1
- bl FUN_020BB9F4
+ bl NNS_G3dMdlSetMdlFogEnableFlagAll
add r0, r4, #0
bl FUN_0201F8E0
bl MOD05_021DB5EC
@@ -618,7 +618,7 @@ MOD05_021E4EFC: ; 0x021E4EFC
bl FUN_02021050
add r4, r0, #0
bne _021E4F2E
- bl ErrorHandling
+ bl GF_AssertFail
_021E4F2E:
add r0, r4, #0
bl FUN_020210AC
@@ -638,7 +638,7 @@ _021E4F3C:
bl MOD05_021E4FC8
add r4, r0, #0
bne _021E4F58
- bl ErrorHandling
+ bl GF_AssertFail
_021E4F58:
add r0, r4, #0
add sp, #0x1c
@@ -700,7 +700,7 @@ _021E4FBA:
add r3, #8
sub r2, r2, #1
bne _021E4FAE
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
.balign 4, 0
@@ -742,7 +742,7 @@ _021E4FFC:
_021E5002:
cmp r4, #0
bne _021E500A
- bl ErrorHandling
+ bl GF_AssertFail
_021E500A:
add r0, r4, #0
mov r1, #0
@@ -790,7 +790,7 @@ _021E505C:
add r3, #8
sub r2, r2, #1
bne _021E5052
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
@@ -884,7 +884,7 @@ MOD05_021E50D4: ; 0x021E50D4
bl FUN_02020F54
cmp r0, #0
bne _021E5106
- bl ErrorHandling
+ bl GF_AssertFail
_021E5106:
ldr r2, [r4, #0x18]
add r0, r5, #0
@@ -969,7 +969,7 @@ MOD05_021E5198: ; 0x021E5198
ldr r0, [r4]
add r6, r1, #0
add r5, r2, #0
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
cmp r0, #0
beq _021E51C8
bl FUN_0201B254
@@ -979,13 +979,13 @@ MOD05_021E5198: ; 0x021E5198
ldr r1, [r0, #8]
bl DC_FlushRange
ldr r0, [r4]
- bl FUN_020BB59C
+ bl NNS_G3dResDefaultSetup
cmp r0, #0
bne _021E51C8
- bl ErrorHandling
+ bl GF_AssertFail
_021E51C8:
ldr r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -993,11 +993,11 @@ _021E51C8:
str r0, [r5]
cmp r5, #0
bne _021E51E0
- bl ErrorHandling
+ bl GF_AssertFail
_021E51E0:
ldr r1, [r5]
add r0, r6, #0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
pop {r4, r5, r6, pc}
.balign 4, 0
@@ -1038,7 +1038,7 @@ MOD05_021E5224: ; 0x021E5224
add r2, r3, #0
bl MOD05_021E4C6C
str r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
str r0, [r4, #4]
ldrh r1, [r0, #0xe]
add r1, r0, r1
@@ -1046,7 +1046,7 @@ MOD05_021E5224: ; 0x021E5224
add r0, r0, r1
str r0, [r4, #8]
ldr r0, [r4]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r4, #0xc]
cmp r0, #0
beq _021E525A
@@ -1071,17 +1071,17 @@ MOD05_021E5260: ; 0x021E5260
bl MOD05_021E4C6C
str r0, [r5]
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
str r0, [r5, #4]
ldr r1, [r5, #4]
ldr r2, [r4, #8]
add r0, r6, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r5, #8]
ldr r1, [r5, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0xc]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
pop {r4, r5, r6, pc}
.balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021E55BC.s b/arm9/modules/05/asm/mod05_021E55BC.s
index 43186ebe..517222fb 100644
--- a/arm9/modules/05/asm/mod05_021E55BC.s
+++ b/arm9/modules/05/asm/mod05_021E55BC.s
@@ -134,7 +134,7 @@ MOD05_021E569C: ; 0x021E569C
bl FUN_020582A8
cmp r0, #0
bne _021E56B8
- bl ErrorHandling
+ bl GF_AssertFail
_021E56B8:
ldr r0, [r4]
cmp r0, #0
@@ -207,7 +207,7 @@ _021E5716:
lsl r0, r0, #0xc
sub r0, r1, r0
str r0, [sp, #0x5c]
- bl FUN_020B8344
+ bl NNS_G3dGlbGetInvV
mov r2, #0
add r5, r0, #0
add r0, sp, #0x24
diff --git a/arm9/modules/05/asm/mod05_021E577C.s b/arm9/modules/05/asm/mod05_021E577C.s
index bf86c095..bad97efe 100644
--- a/arm9/modules/05/asm/mod05_021E577C.s
+++ b/arm9/modules/05/asm/mod05_021E577C.s
@@ -134,7 +134,7 @@ MOD05_021E585C: ; 0x021E585C
bl FUN_020582A8
cmp r0, #0
bne _021E5878
- bl ErrorHandling
+ bl GF_AssertFail
_021E5878:
add r0, r5, #0
add r1, sp, #0
@@ -186,7 +186,7 @@ _021E58B2:
lsl r0, r0, #0xc
sub r0, r1, r0
str r0, [sp, #0x5c]
- bl FUN_020B8344
+ bl NNS_G3dGlbGetInvV
mov r2, #0
add r5, r0, #0
add r0, sp, #0x24
diff --git a/arm9/modules/05/asm/mod05_021E5918.s b/arm9/modules/05/asm/mod05_021E5918.s
index 0322f00e..8459b021 100644
--- a/arm9/modules/05/asm/mod05_021E5918.s
+++ b/arm9/modules/05/asm/mod05_021E5918.s
@@ -188,7 +188,7 @@ _021E5A4E:
lsl r0, r0, #0xc
sub r0, r1, r0
str r0, [sp, #0x5c]
- bl FUN_020B8344
+ bl NNS_G3dGlbGetInvV
mov r2, #0
add r5, r0, #0
add r0, sp, #0x24
diff --git a/arm9/modules/05/asm/mod05_021E5AB4.s b/arm9/modules/05/asm/mod05_021E5AB4.s
index ff3779f5..3b0d6a5f 100644
--- a/arm9/modules/05/asm/mod05_021E5AB4.s
+++ b/arm9/modules/05/asm/mod05_021E5AB4.s
@@ -131,13 +131,13 @@ MOD05_021E5B80: ; 0x021E5B80
add r0, r4, #4
ldr r1, [r2, #0x18]
ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4]
ldr r3, [r5, #8]
ldr r1, [r3, #0x18]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x10]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #8]
add r0, r4, #0
add r0, #0x18
@@ -146,7 +146,7 @@ MOD05_021E5B80: ; 0x021E5B80
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r6, #0
add r1, sp, #0
bl FUN_0206477C
@@ -166,7 +166,7 @@ MOD05_021E5BF8: ; 0x021E5BF8
ldr r4, [r1]
ldr r1, [r4]
add r0, r4, #4
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
add r0, r4, #0
bl MOD05_021E4C00
pop {r4, pc}
@@ -209,7 +209,7 @@ _021E5C40:
bne _021E5C40
ldr r0, [r5]
str r0, [r3]
- bl FUN_020B8344
+ bl NNS_G3dGlbGetInvV
mov r2, #0
add r5, r0, #0
add r0, sp, #0x24
diff --git a/arm9/modules/05/asm/mod05_021E5C8C.s b/arm9/modules/05/asm/mod05_021E5C8C.s
index ab321b6f..dc59dcec 100644
--- a/arm9/modules/05/asm/mod05_021E5C8C.s
+++ b/arm9/modules/05/asm/mod05_021E5C8C.s
@@ -129,13 +129,13 @@ MOD05_021E5D50: ; 0x021E5D50
add r0, r4, #4
ldr r1, [r2, #0x1c]
ldr r2, [r2, #0x10]
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4]
ldr r3, [r5, #8]
ldr r1, [r3, #0x1c]
ldr r2, [r3, #0x10]
ldr r3, [r3, #0x14]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #8]
add r0, r4, #0
add r0, #0x18
@@ -144,7 +144,7 @@ MOD05_021E5D50: ; 0x021E5D50
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r6, #0
add r1, sp, #0
bl FUN_0206477C
@@ -164,7 +164,7 @@ MOD05_021E5DC8: ; 0x021E5DC8
ldr r4, [r1]
ldr r1, [r4]
add r0, r4, #4
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
add r0, r4, #0
bl MOD05_021E4C00
pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021E5E10.s b/arm9/modules/05/asm/mod05_021E5E10.s
index e2e6814e..f5f3ef70 100644
--- a/arm9/modules/05/asm/mod05_021E5E10.s
+++ b/arm9/modules/05/asm/mod05_021E5E10.s
@@ -165,13 +165,13 @@ MOD05_021E5F18: ; 0x021E5F18
add r0, r4, #4
ldr r1, [r2, #0x18]
ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4]
ldr r3, [r5, #8]
ldr r1, [r3, #0x18]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x10]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #8]
add r0, r4, #0
add r0, #0x18
@@ -180,7 +180,7 @@ MOD05_021E5F18: ; 0x021E5F18
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r6, #0
add r1, sp, #0
bl FUN_0206477C
@@ -200,7 +200,7 @@ MOD05_021E5F90: ; 0x021E5F90
ldr r4, [r1]
ldr r1, [r4]
add r0, r4, #4
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
add r0, r4, #0
bl MOD05_021E4C00
pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021E5FD8.s b/arm9/modules/05/asm/mod05_021E5FD8.s
index 8ce2cd0f..f341dfd8 100644
--- a/arm9/modules/05/asm/mod05_021E5FD8.s
+++ b/arm9/modules/05/asm/mod05_021E5FD8.s
@@ -825,7 +825,7 @@ MOD05_021E6638: ; 0x021E6638
str r0, [r4, #0x14]
cmp r0, #0
bne _021E6666
- bl ErrorHandling
+ bl GF_AssertFail
_021E6666:
ldr r1, _021E6674 ; =MOD05_021E6678
add r0, r5, #0
@@ -1685,13 +1685,13 @@ MOD05_021E6CC4: ; 0x021E6CC4
ldr r0, [r5, #0x30]
cmp r1, r0
bgt _021E6D2A
- bl ErrorHandling
+ bl GF_AssertFail
_021E6D2A:
ldr r1, [sp, #0x10]
ldr r0, [r5, #0x2c]
cmp r1, r0
blt _021E6D36
- bl ErrorHandling
+ bl GF_AssertFail
_021E6D36:
mov r0, #0
str r0, [sp]
@@ -1807,13 +1807,13 @@ _021E6E06:
ldr r0, [r4, #0x30]
cmp r1, r0
beq _021E6E12
- bl ErrorHandling
+ bl GF_AssertFail
_021E6E12:
ldr r1, [sp, #4]
ldr r0, [r4, #0x2c]
cmp r1, r0
beq _021E6E1E
- bl ErrorHandling
+ bl GF_AssertFail
_021E6E1E:
ldr r0, [r4, #0x3c]
ldr r1, [r4, #0xc]
@@ -1918,13 +1918,13 @@ MOD05_021E6E90: ; 0x021E6E90
ldr r0, [r5, #0x30]
cmp r1, r0
blt _021E6EFA
- bl ErrorHandling
+ bl GF_AssertFail
_021E6EFA:
ldr r1, [sp, #0x10]
ldr r0, [r5, #0x2c]
cmp r1, r0
bgt _021E6F06
- bl ErrorHandling
+ bl GF_AssertFail
_021E6F06:
mov r0, #0
str r0, [sp]
@@ -2053,13 +2053,13 @@ _021E6FEC:
ldr r0, [r4, #0x30]
cmp r1, r0
beq _021E6FF8
- bl ErrorHandling
+ bl GF_AssertFail
_021E6FF8:
ldr r1, [sp, #4]
ldr r0, [r4, #0x2c]
cmp r1, r0
beq _021E7004
- bl ErrorHandling
+ bl GF_AssertFail
_021E7004:
ldr r0, [r4, #0x3c]
ldr r1, [r4, #0xc]
@@ -2274,7 +2274,7 @@ _021E7198:
bl FUN_0200CA44
add r4, r0, #0
bne _021E71DA
- bl ErrorHandling
+ bl GF_AssertFail
_021E71DA:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -2397,7 +2397,7 @@ MOD05_021E72B8: ; 0x021E72B8
bl AllocFromHeapAtEnd
add r4, r0, #0
bne _021E72CC
- bl ErrorHandling
+ bl GF_AssertFail
_021E72CC:
add r0, r4, #0
mov r1, #0
@@ -2409,12 +2409,12 @@ _021E72CC:
thumb_func_start MOD05_021E72DC
MOD05_021E72DC: ; 0x021E72DC
- ldr r3, _021E72E4 ; =FUN_02016A8C
+ ldr r3, _021E72E4 ; =FreeToHeapExplicit
add r1, r0, #0
mov r0, #4
bx r3
.balign 4, 0
-_021E72E4: .word FUN_02016A8C
+_021E72E4: .word FreeToHeapExplicit
thumb_func_start MOD05_021E72E8
MOD05_021E72E8: ; 0x021E72E8
diff --git a/arm9/modules/05/asm/mod05_021E779C.s b/arm9/modules/05/asm/mod05_021E779C.s
index ad4118ff..7c09387c 100644
--- a/arm9/modules/05/asm/mod05_021E779C.s
+++ b/arm9/modules/05/asm/mod05_021E779C.s
@@ -38,7 +38,7 @@ MOD05_021E77C8: ; 0x021E77C8
sub r1, r1, #1
str r1, [r0]
bpl _021E77D6
- bl ErrorHandling
+ bl GF_AssertFail
_021E77D6:
pop {r3, pc}
@@ -56,7 +56,7 @@ MOD05_021E77E0: ; 0x021E77E0
sub r1, r1, #1
str r1, [r0, #4]
bpl _021E77EE
- bl ErrorHandling
+ bl GF_AssertFail
_021E77EE:
pop {r3, pc}
@@ -544,7 +544,7 @@ MOD05_021E7B78: ; 0x021E7B78
bl FUN_020582A8
cmp r0, #0
bne _021E7B94
- bl ErrorHandling
+ bl GF_AssertFail
_021E7B94:
add r0, r6, #0
add r1, sp, #0
diff --git a/arm9/modules/05/asm/mod05_021E7C00.s b/arm9/modules/05/asm/mod05_021E7C00.s
index 2e968e4f..aaa4fb70 100644
--- a/arm9/modules/05/asm/mod05_021E7C00.s
+++ b/arm9/modules/05/asm/mod05_021E7C00.s
@@ -83,7 +83,7 @@ MOD05_021E7C80: ; 0x021E7C80
add r4, r1, #0
cmp r5, #0x20
blt _021E7C90
- bl ErrorHandling
+ bl GF_AssertFail
_021E7C90:
add r6, sp, #0
mov r3, #0
@@ -427,7 +427,7 @@ MOD05_021E7EEC: ; 0x021E7EEC
add r5, r0, #0
cmp r4, #0x20
blt _021E7EFA
- bl ErrorHandling
+ bl GF_AssertFail
_021E7EFA:
mov r0, #0x8c
mul r0, r4
@@ -435,7 +435,7 @@ _021E7EFA:
ldr r0, [r4, #4]
cmp r0, #0
bne _021E7F0A
- bl ErrorHandling
+ bl GF_AssertFail
_021E7F0A:
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -448,14 +448,14 @@ MOD05_021E7F10: ; 0x021E7F10
add r4, r3, #0
bl MOD05_021F4BD0
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
add r1, r0, r1
add r0, r5, #0
str r1, [r4]
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -466,18 +466,18 @@ MOD05_021E7F34: ; 0x021E7F34
add r0, r1, #0
add r4, r2, #0
add r5, r3, #0
- bl FUN_020B8474
- ldr r1, _021E7FB4 ; =UNK_021CEDD4
+ bl NNS_G3dGlbSetBaseTrans
+ ldr r1, _021E7FB4 ; =NNS_G3dGlb + 0xBC
add r0, r4, #0
bl MI_Copy36B
- ldr r1, _021E7FB8 ; =UNK_021CED98
+ ldr r1, _021E7FB8 ; =NNS_G3dGlb + 0x80
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r5, #0
str r2, [r1, #0x7c]
- bl FUN_020B844C
- bl FUN_020B849C
+ bl NNS_G3dGlbSetBaseScale
+ bl NNS_G3dGlbFlushP
add r2, sp, #0
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x18]
@@ -511,7 +511,7 @@ _021E7F98:
ldrh r2, [r2, #2]
add r0, r7, #0
add r1, r5, #0
- bl FUN_020BAFB8
+ bl NNS_G3dDraw1Mat1Shp
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -522,8 +522,8 @@ _021E7F98:
_021E7FB0:
pop {r3, r4, r5, r6, r7, pc}
nop
-_021E7FB4: .word UNK_021CEDD4
-_021E7FB8: .word UNK_021CED98
+_021E7FB4: .word NNS_G3dGlb + 0xBC
+_021E7FB8: .word NNS_G3dGlb + 0x80
thumb_func_start MOD05_021E7FBC
MOD05_021E7FBC: ; 0x021E7FBC
@@ -602,7 +602,7 @@ _021E8044:
lsr r4, r1, #0x18
cmp r4, #0x20
blo _021E7FD4
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x20
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s
index 7a66cdcb..5bf27853 100644
--- a/arm9/modules/05/asm/mod05_021E8310.s
+++ b/arm9/modules/05/asm/mod05_021E8310.s
@@ -139,11 +139,11 @@ MOD05_021E8410: ; 0x021E8410
add r5, r0, #0
mov r0, #0
mov r1, #1
- bl FUN_02002E4C
+ bl GetFontAttribute
add r4, r0, #0
mov r0, #0
mov r1, #3
- bl FUN_02002E4C
+ bl GetFontAttribute
add r0, r4, r0
str r0, [sp, #0x14]
mov r4, #0
@@ -204,7 +204,7 @@ _021E846E:
add r6, r0, #0
mov r0, #0
mov r1, #2
- bl FUN_02002E4C
+ bl GetFontAttribute
add r2, r0, #0
mov r0, #0
add r1, r6, #0
@@ -276,10 +276,10 @@ MOD05_021E84F4: ; 0x021E84F4
bl FUN_0200CB00
mov r0, #0
mov r1, #6
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0
ldr r0, [r4, #0x10]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl MOD05_021E8410
ldr r0, [r4, #0x10]
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index fe346300..006e8bb1 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -339,7 +339,7 @@ MOD05_021E88C0: ; 0x021E88C0
bl GX_EngineAToggleLayers
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
thumb_func_start MOD05_021E88E8
@@ -513,7 +513,7 @@ _021E8A42:
bl MOD05_021E37A4
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
_021E8A56:
@@ -695,7 +695,7 @@ _021E8BC2:
bl MOD05_021E37A4
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
_021E8BD6:
@@ -851,7 +851,7 @@ _021E8CE6:
_021E8D00:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
mov r0, #1
@@ -1008,7 +1008,7 @@ _021E8E1C:
_021E8E36:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
mov r0, #1
@@ -1256,7 +1256,7 @@ _021E8FFC:
_021E9010:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
mov r0, #1
@@ -1391,7 +1391,7 @@ _021E910C:
_021E9120:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
mov r0, #1
@@ -1794,7 +1794,7 @@ _021E944E:
bl MOD05_021E37A4
ldr r1, [r7, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x10]
bl FUN_0200621C
_021E948A:
@@ -2151,7 +2151,7 @@ _021E974A:
bl MOD05_021E3A48
ldr r1, [r6, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x10]
bl FUN_0200621C
_021E9786:
@@ -2594,7 +2594,7 @@ _021E9AF0:
bl MOD05_021E3E44
ldr r1, [r7, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x14]
bl FUN_0200621C
add sp, #0x58
@@ -2737,7 +2737,7 @@ _021E9C02:
bl GX_EngineAToggleLayers
mov r0, #4
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
mov r1, #0x83
lsl r1, r1, #2
str r0, [r4, r1]
@@ -2766,7 +2766,7 @@ _021E9C02:
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -3183,7 +3183,7 @@ _021E9FA4:
ldr r1, [sp, #0x1c]
mov r0, #4
ldr r1, [r1, #0xc]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x18]
bl FUN_0200621C
add sp, #0x44
@@ -3594,7 +3594,7 @@ _021EA354:
bl MOD05_021E3E44
ldr r1, [r5, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
_021EA382:
@@ -3709,7 +3709,7 @@ _021EA430:
bl GX_EngineAToggleLayers
mov r0, #4
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
mov r1, #2
lsl r1, r1, #8
str r0, [r4, r1]
@@ -3738,7 +3738,7 @@ _021EA430:
lsl r0, r0, #8
ldr r0, [r4, r0]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
@@ -4116,7 +4116,7 @@ _021EA76C:
ldr r1, [sp, #0x18]
mov r0, #4
ldr r1, [r1, #0xc]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x14]
bl FUN_0200621C
_021EA7DE:
@@ -4472,7 +4472,7 @@ _021EAA98:
bl MOD05_021E3E44
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
_021EAAC6:
@@ -4781,7 +4781,7 @@ _021EAD1A:
bl MOD05_021E3E44
ldr r1, [r6, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x10]
bl FUN_0200621C
_021EAD4C:
@@ -5156,7 +5156,7 @@ _021EB01A:
ldr r1, [sp, #0x14]
mov r0, #4
ldr r1, [r1, #0xc]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [sp, #0x10]
bl FUN_0200621C
_021EB04A:
@@ -5380,7 +5380,7 @@ _021EB18E:
str r0, [r4, #4]
mov r0, #4
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r4]
mov r3, #0
str r3, [sp]
@@ -5404,7 +5404,7 @@ _021EB18E:
bl FUN_02017FB4
ldr r0, [r4]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
bl FUN_02019220
ldr r0, [r5]
@@ -5586,7 +5586,7 @@ _021EB394:
strb r1, [r0]
ldr r1, [r5, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
_021EB3F2:
@@ -5797,7 +5797,7 @@ _021EB56C:
_021EB58A:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
mov r0, #1
@@ -6008,7 +6008,7 @@ _021EB720:
_021EB73E:
ldr r1, [r4, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r0, r6, #0
bl FUN_0200621C
mov r0, #1
@@ -6506,7 +6506,7 @@ _021EBB60:
str r0, [r2]
ldr r1, [r5, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add sp, #0x30
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -7514,7 +7514,7 @@ _021EC37A:
bl MOD05_021E3E44
ldr r1, [r5, #0xc]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add sp, #0x4c
mov r0, #1
pop {r4, r5, r6, r7, pc}
@@ -7747,8 +7747,8 @@ _021EC544:
cmp r0, #0
bne _021EC572
add r0, r7, #0
- bl FUN_02029EF8
- bl FUN_02029F08
+ bl Sav2_Chatot_get
+ bl Chatot_invalidate
_021EC572:
add sp, #0x24
pop {r4, r5, r6, r7, pc}
@@ -11065,7 +11065,7 @@ _021EDFA6:
str r0, [r4]
pop {r3, r4, r5, r6, r7, pc}
_021EDFB6:
- bl ErrorHandling
+ bl GF_AssertFail
_021EDFBA:
pop {r3, r4, r5, r6, r7, pc}
@@ -11212,7 +11212,7 @@ MOD05_021EE0C0: ; 0x021EE0C0
bl NARC_ReadFromMember
b _021EE0FC
_021EE0E6:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0x10
str r0, [sp]
mov r0, #0x43
@@ -11664,7 +11664,7 @@ MOD05_021EE470: ; 0x021EE470
ldr r0, [r0, r5]
cmp r0, #0
beq _021EE498
- bl ErrorHandling
+ bl GF_AssertFail
_021EE498:
ldr r0, [sp, #4]
mov r1, #1
@@ -11768,7 +11768,7 @@ MOD05_021EE52C: ; 0x021EE52C
ldr r0, [r0]
cmp r1, r0
ble _021EE560
- bl ErrorHandling
+ bl GF_AssertFail
_021EE560:
ldr r0, [r4, #0x10]
ldr r1, [r0]
@@ -11819,7 +11819,7 @@ _021EE5B2:
ror r1, r0
add r0, r2, r1
beq _021EE5C6
- bl ErrorHandling
+ bl GF_AssertFail
_021EE5C6:
mov r0, #0
str r0, [r4, #0x18]
@@ -11836,7 +11836,7 @@ _021EE5D0:
ldr r0, [r2, #8]
cmp r1, r0
beq _021EE5E8
- bl ErrorHandling
+ bl GF_AssertFail
b _021EE6B0
_021EE5E8:
cmp r3, r7
@@ -11887,7 +11887,7 @@ _021EE632:
ror r1, r0
add r0, r2, r1
beq _021EE6A8
- bl ErrorHandling
+ bl GF_AssertFail
b _021EE6A8
_021EE648:
add r1, r5, #0
@@ -11939,7 +11939,7 @@ _021EE694:
ror r1, r0
add r0, r2, r1
beq _021EE6A8
- bl ErrorHandling
+ bl GF_AssertFail
_021EE6A8:
ldrb r0, [r4, #0x1c]
add r1, r5, #0
@@ -12073,7 +12073,7 @@ _021EE78C:
bne _021EE7C4
sub r0, #0x10
ldr r0, [r2, r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
add r7, r0, #0
ldrh r0, [r7, #0xe]
add r0, r7, r0
@@ -12233,7 +12233,7 @@ MOD05_021EE8CC: ; 0x021EE8CC
ldr r6, [sp, #0x30]
cmp r0, #1
bne _021EE8E6
- bl ErrorHandling
+ bl GF_AssertFail
_021EE8E6:
add r0, r6, #0
add r1, r4, #0
@@ -12310,7 +12310,7 @@ _021EE964:
bl MOD05_021EE470
cmp r0, #1
beq _021EE984
- bl ErrorHandling
+ bl GF_AssertFail
_021EE984:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
@@ -12470,7 +12470,7 @@ _021EEA9E:
mvn r4, r4
b _021EEAB4
_021EEAB0:
- bl ErrorHandling
+ bl GF_AssertFail
_021EEAB4:
ldr r2, [sp, #0x10]
ldr r3, [sp, #0xc]
@@ -12578,7 +12578,7 @@ _021EEB7C:
mvn r4, r4
b _021EEB86
_021EEB82:
- bl ErrorHandling
+ bl GF_AssertFail
_021EEB86:
ldr r2, [sp, #0x10]
ldr r3, [sp, #0xc]
@@ -12782,7 +12782,7 @@ _021EED0A:
mvn r4, r4
b _021EED14
_021EED10:
- bl ErrorHandling
+ bl GF_AssertFail
_021EED14:
ldr r2, [sp, #0x10]
ldr r3, [sp, #0xc]
@@ -12799,7 +12799,7 @@ _021EED14:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
_021EED32:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.balign 4, 0
@@ -12954,7 +12954,7 @@ _021EEE4E:
mov r0, #0
pop {r3, pc}
_021EEE56:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
@@ -13015,7 +13015,7 @@ _021EEEB8:
add r0, r4, #0
pop {r3, r4, r5, pc}
_021EEEC0:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
_021EEEC6:
pop {r3, r4, r5, pc}
@@ -13084,7 +13084,7 @@ _021EEF22:
lsr r6, r0, #0x18
b _021EEF62
_021EEF30:
- bl ErrorHandling
+ bl GF_AssertFail
b _021EEF62
_021EEF36:
cmp r5, r0
@@ -13106,10 +13106,10 @@ _021EEF4A:
lsr r6, r0, #0x18
b _021EEF62
_021EEF58:
- bl ErrorHandling
+ bl GF_AssertFail
b _021EEF62
_021EEF5E:
- bl ErrorHandling
+ bl GF_AssertFail
_021EEF62:
strb r6, [r4]
pop {r4, r5, r6, pc}
@@ -13145,7 +13145,7 @@ _021EEF90:
mov r0, #1
pop {r3, pc}
_021EEF94:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
@@ -13193,7 +13193,7 @@ MOD05_021EEFD0: ; 0x021EEFD0
add r4, #0x64
cmp r0, #0
beq _021EEFEC
- bl ErrorHandling
+ bl GF_AssertFail
_021EEFEC:
add r1, r5, #0
add r1, #0xa1
@@ -13290,13 +13290,13 @@ MOD05_021EF094: ; 0x021EF094
add r4, #0x64
cmp r0, #2
blo _021EF0A8
- bl ErrorHandling
+ bl GF_AssertFail
_021EF0A8:
add r0, r5, #0
bl MOD05_021EEFD0
cmp r0, #1
beq _021EF0B6
- bl ErrorHandling
+ bl GF_AssertFail
_021EF0B6:
mov r0, #0x86
ldr r2, [r4, #0x10]
@@ -13694,7 +13694,7 @@ _021EF39A:
mov r7, #0
b _021EF3AE
_021EF3AA:
- bl ErrorHandling
+ bl GF_AssertFail
_021EF3AE:
add r0, r7, #0
bl MOD05_021F3BC0
@@ -13883,8 +13883,8 @@ MOD05_021EF514: ; 0x021EF514
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
bl FUN_020162FC
- bl FUN_020AF6A4
- bl FUN_020AFA30
+ bl NNS_GfdResetLnkTexVramState
+ bl NNS_GfdResetLnkPlttVramState
mov r4, #0
add r6, r5, #4
mov r7, #0x30
@@ -14073,7 +14073,7 @@ _021EF66A:
mvn r0, r0
cmp r5, r0
bne _021EF676
- bl ErrorHandling
+ bl GF_AssertFail
_021EF676:
add r0, r4, #0
add r0, #0xac
@@ -14309,7 +14309,7 @@ MOD05_021EF824: ; 0x021EF824
add r4, r0, #0
cmp r5, #4
blo _021EF832
- bl ErrorHandling
+ bl GF_AssertFail
_021EF832:
lsl r0, r5, #2
add r0, r4, r0
@@ -14363,7 +14363,7 @@ _021EF882:
mul r0, r1
cmp r7, r0
blo _021EF898
- bl ErrorHandling
+ bl GF_AssertFail
_021EF898:
add r0, r5, #0
add r0, #0xc8
@@ -14531,23 +14531,23 @@ _021EF9B0:
_021EF9B6:
ldr r0, [r4, #0xc]
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
add r5, r0, #0
ldrb r0, [r5, #9]
cmp r0, #1
beq _021EF9CA
- bl ErrorHandling
+ bl GF_AssertFail
_021EF9CA:
ldrh r0, [r5, #0xe]
add r0, r5, r0
ldr r0, [r0, #0xc]
add r5, r5, r0
bne _021EF9D8
- bl ErrorHandling
+ bl GF_AssertFail
_021EF9D8:
ldr r0, [r4, #8]
add r1, r5, #0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
ldr r0, [r4, #0x18]
mov r1, #1
str r1, [r0]
@@ -14618,27 +14618,27 @@ MOD05_021EFA40: ; 0x021EFA40
bl FUN_0201B3A8
cmp r0, #0
bne _021EFA6A
- bl ErrorHandling
+ bl GF_AssertFail
_021EFA6A:
ldr r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrb r0, [r0, #9]
cmp r0, #1
beq _021EFA7A
- bl ErrorHandling
+ bl GF_AssertFail
_021EFA7A:
ldr r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
add r4, r0, r1
bne _021EFA8E
- bl ErrorHandling
+ bl GF_AssertFail
_021EFA8E:
add r0, r5, #0
add r1, r4, #0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
add r0, r4, #0
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -15197,7 +15197,7 @@ MOD05_021EFEDC: ; 0x021EFEDC
add r7, r0, #0
add r0, r7, #1
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5]
mov r0, #1
str r0, [sp]
@@ -15238,7 +15238,7 @@ _021EFF2E:
ldr r0, [r5]
ldr r1, [r5, #8]
add r2, r4, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
_021EFF54:
add r4, r4, #1
cmp r4, #0x20
@@ -15248,7 +15248,7 @@ _021EFF54:
ldr r0, [r5]
ldr r1, [r5, #0x3c]
sub r3, #0xd
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r4, _021EFFC0 ; =UNK05_021F8B4C
add r3, sp, #0x14
add r2, r3, #0
@@ -15277,7 +15277,7 @@ _021EFF54:
add r0, r2, #0
add r2, r1, #0
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #4]
add r0, r5, #0
add r0, #0x20
@@ -15298,7 +15298,7 @@ MOD05_021EFFC8: ; 0x021EFFC8
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
ldr r0, [r5, #4]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
mov r0, #1
mvn r0, r0
@@ -15366,9 +15366,9 @@ _021F0056:
mov r1, #0
ldr r0, [r5, #4]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r5]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -15780,7 +15780,7 @@ _021F03A8:
asr r0, r1, #4
lsl r3, r0, #1
lsl r1, r3, #1
- ldr r2, _021F0438 ; =UNK_020FFA38
+ ldr r2, _021F0438 ; =FX_SinCosTable_
add r3, r3, #1
lsl r3, r3, #1
ldrsh r1, [r2, r1]
@@ -15794,7 +15794,7 @@ _021F03A8:
asr r0, r5, #4
lsl r2, r0, #1
lsl r1, r2, #1
- ldr r3, _021F0438 ; =UNK_020FFA38
+ ldr r3, _021F0438 ; =FX_SinCosTable_
add r2, r2, #1
lsl r2, r2, #1
ldrsh r1, [r3, r1]
@@ -15839,7 +15839,7 @@ _021F03A8:
pop {r4, r5, r6, r7, pc}
nop
_021F0434: .word UNK05_021F8B6C
-_021F0438: .word UNK_020FFA38
+_021F0438: .word FX_SinCosTable_
thumb_func_start MOD05_021F043C
MOD05_021F043C: ; 0x021F043C
@@ -15866,7 +15866,7 @@ MOD05_021F0454: ; 0x021F0454
bl FUN_0201F008
strh r0, [r5]
ldrh r0, [r5]
- ldr r2, _021F04F0 ; =UNK_020FFA38
+ ldr r2, _021F04F0 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r1, r0, #1
lsl r0, r1, #1
@@ -15909,7 +15909,7 @@ MOD05_021F0454: ; 0x021F0454
str r0, [r5, #0x1c]
add r0, sp, #0
ldrh r0, [r0]
- ldr r3, _021F04F0 ; =UNK_020FFA38
+ ldr r3, _021F04F0 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -15924,7 +15924,7 @@ MOD05_021F0454: ; 0x021F0454
add sp, #0x2c
pop {r4, r5, pc}
nop
-_021F04F0: .word UNK_020FFA38
+_021F04F0: .word FX_SinCosTable_
_021F04F4: .word UNK05_021F8B78
thumb_func_start MOD05_021F04F8
@@ -15935,7 +15935,7 @@ MOD05_021F04F8: ; 0x021F04F8
cmp r0, #0
beq _021F0512
bne _021F0508
- bl ErrorHandling
+ bl GF_AssertFail
_021F0508:
ldr r0, [r4]
bl FreeToHeap
@@ -16156,7 +16156,7 @@ MOD05_021F067C: ; 0x021F067C
add r5, r0, #0
cmp r5, #9
blt _021F06B6
- bl ErrorHandling
+ bl GF_AssertFail
_021F06B6:
lsl r6, r5, #2
ldr r5, _021F06EC ; UNK05_021FC4B4
@@ -16608,7 +16608,7 @@ MOD05_021F0A28: ; 0x021F0A28
add r5, r0, #0
cmp r5, #0xa
blt _021F0A3E
- bl ErrorHandling
+ bl GF_AssertFail
_021F0A3E:
lsl r6, r5, #2
ldr r5, _021F0A74 ; =UNK05_021FC528
@@ -17068,7 +17068,7 @@ MOD05_021F0DB4: ; 0x021F0DB4
add r5, r0, #0
cmp r5, #0xa
blt _021F0DEE
- bl ErrorHandling
+ bl GF_AssertFail
_021F0DEE:
lsl r6, r5, #2
ldr r5, _021F0E24 ; =UNK05_021FC500
@@ -17634,7 +17634,7 @@ MOD05_021F1234: ; 0x021F1234
str r0, [sp, #4]
cmp r0, #0xc
blt _021F1272
- bl ErrorHandling
+ bl GF_AssertFail
_021F1272:
mov r1, #2
ldrsb r2, [r4, r1]
@@ -17886,7 +17886,7 @@ MOD05_021F1440: ; 0x021F1440
add r5, r0, #0
cmp r5, #4
blt _021F147A
- bl ErrorHandling
+ bl GF_AssertFail
_021F147A:
lsl r6, r5, #2
ldr r5, _021F14B8 ; =UNK05_021FC40C
@@ -18654,7 +18654,7 @@ MOD05_021F1A78: ; 0x021F1A78
ldr r0, [r4]
cmp r0, #0
beq _021F1A8C
- bl ErrorHandling
+ bl GF_AssertFail
_021F1A8C:
add r0, r5, #0
bl MOD06_0224A130
@@ -18671,7 +18671,7 @@ MOD05_021F1A98: ; 0x021F1A98
ldr r0, [r4]
cmp r0, #0
beq _021F1AAC
- bl ErrorHandling
+ bl GF_AssertFail
_021F1AAC:
add r0, r5, #0
bl MOD06_0224A6B8
@@ -18688,7 +18688,7 @@ MOD05_021F1AB8: ; 0x021F1AB8
ldr r0, [r4]
cmp r0, #0
beq _021F1ACC
- bl ErrorHandling
+ bl GF_AssertFail
_021F1ACC:
add r0, r5, #0
bl MOD06_0224A8D4
@@ -18705,7 +18705,7 @@ MOD05_021F1AD8: ; 0x021F1AD8
ldr r0, [r4]
cmp r0, #0
beq _021F1AEC
- bl ErrorHandling
+ bl GF_AssertFail
_021F1AEC:
add r0, r5, #0
bl MOD06_0224AA40
@@ -18968,7 +18968,7 @@ MOD05_021F1CB8: ; 0x021F1CB8
bl FUN_02058390
cmp r0, #0
beq _021F1CD2
- bl ErrorHandling
+ bl GF_AssertFail
_021F1CD2:
add r0, r5, #0
bl MOD05_021F1D68
@@ -19014,7 +19014,7 @@ MOD05_021F1D2C: ; 0x021F1D2C
bl FUN_020587E0
cmp r0, #1
beq _021F1D3C
- bl ErrorHandling
+ bl GF_AssertFail
_021F1D3C:
add r0, r4, #0
bl FUN_020583A0
@@ -19104,7 +19104,7 @@ _021F1DE4:
ldr r2, [r3]
cmp r2, r1
bne _021F1DDA
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
@@ -19382,7 +19382,7 @@ MOD05_021F1FE0: ; 0x021F1FE0
bl MOD05_021F21CC
add r4, r0, #0
bne _021F200C
- bl ErrorHandling
+ bl GF_AssertFail
_021F200C:
add r0, r6, #0
add r1, sp, #0
@@ -19393,7 +19393,7 @@ _021F200C:
bl MOD05_021F2E70
add r4, r0, #0
bne _021F2026
- bl ErrorHandling
+ bl GF_AssertFail
_021F2026:
add r0, r4, #0
add sp, #0xc
@@ -19567,7 +19567,7 @@ MOD05_021F2160: ; 0x021F2160
str r4, [r0]
cmp r4, #0
bne _021F2180
- bl ErrorHandling
+ bl GF_AssertFail
_021F2180:
mov r0, #4
lsl r1, r6, #3
@@ -19577,7 +19577,7 @@ _021F2180:
str r5, [r7]
cmp r5, #0
bne _021F2196
- bl ErrorHandling
+ bl GF_AssertFail
_021F2196:
ldr r0, _021F21A8 ; =0x0000FFFF
_021F2198:
@@ -19600,11 +19600,11 @@ MOD05_021F21AC: ; 0x021F21AC
add r1, #0xe4
ldr r1, [r1]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add r4, #0xf4
ldr r1, [r4]
mov r0, #4
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
thumb_func_start MOD05_021F21CC
@@ -19875,7 +19875,7 @@ _021F23BE:
bl _021F238C
add r7, r0, #0
bne _021F23D0
- bl ErrorHandling
+ bl GF_AssertFail
_021F23D0:
mov r0, #0x41
lsl r0, r0, #2
@@ -20217,7 +20217,7 @@ MOD05_021F2628: ; 0x021F2628
bl MOD05_021F25C8
cmp r0, #0
bne _021F264C
- bl ErrorHandling
+ bl GF_AssertFail
_021F264C:
pop {r4, r5, r6, pc}
nop
@@ -20256,7 +20256,7 @@ MOD05_021F2670: ; 0x021F2670
bl MOD05_021F25C8
cmp r0, #0
bne _021F269E
- bl ErrorHandling
+ bl GF_AssertFail
_021F269E:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -20370,7 +20370,7 @@ MOD05_021F2764: ; 0x021F2764
bl MOD05_021F25C8
cmp r0, #0
bne _021F2788
- bl ErrorHandling
+ bl GF_AssertFail
_021F2788:
pop {r4, r5, r6, pc}
nop
@@ -20409,7 +20409,7 @@ MOD05_021F27AC: ; 0x021F27AC
bl MOD05_021F25C8
cmp r0, #0
bne _021F27DA
- bl ErrorHandling
+ bl GF_AssertFail
_021F27DA:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -20523,7 +20523,7 @@ MOD05_021F28A0: ; 0x021F28A0
bl MOD05_021F25C8
cmp r0, #0
bne _021F28C4
- bl ErrorHandling
+ bl GF_AssertFail
_021F28C4:
pop {r4, r5, r6, pc}
nop
@@ -20586,7 +20586,7 @@ MOD05_021F2914: ; 0x021F2914
bl MOD05_021F25C8
cmp r0, #0
bne _021F2942
- bl ErrorHandling
+ bl GF_AssertFail
_021F2942:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -21247,7 +21247,7 @@ _021F2DD0:
ldr r2, [r3]
cmp r2, r1
bne _021F2DC6
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.balign 4, 0
@@ -21368,7 +21368,7 @@ MOD05_021F2E70: ; 0x021F2E70
add r0, r4, #0
bl FUN_0201F8E0
mov r1, #1
- bl FUN_020BB9F4
+ bl NNS_G3dMdlSetMdlFogEnableFlagAll
add r0, r4, #0
bl FUN_0201F8E0
bl MOD05_021DB5EC
@@ -21557,7 +21557,7 @@ _021F301C:
cmp r2, r3
blt _021F3004
_021F3024:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_021F302C:
@@ -21769,7 +21769,7 @@ MOD05_021F317C: ; 0x021F317C
bl FUN_02020F54
cmp r0, #0
bne _021F31A2
- bl ErrorHandling
+ bl GF_AssertFail
_021F31A2:
add r0, r5, #0
add r1, r4, #0
@@ -21820,7 +21820,7 @@ _021F31F4:
cmp r2, r6
blt _021F31DE
_021F31FC:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
.balign 4, 0
@@ -21963,7 +21963,7 @@ _021F32EA:
cmp r4, r6
blt _021F32CE
_021F32F2:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_start MOD05_021F32F8
@@ -22050,7 +22050,7 @@ MOD05_021F3364: ; 0x021F3364
ldr r0, [r0]
cmp r0, #0
bne _021F338A
- bl ErrorHandling
+ bl GF_AssertFail
_021F338A:
ldr r0, [r4, #4]
mov r1, #0
@@ -22095,7 +22095,7 @@ MOD05_021F33B4: ; 0x021F33B4
bl AllocFromHeap
add r4, r0, #0
bne _021F33E2
- bl ErrorHandling
+ bl GF_AssertFail
_021F33E2:
ldr r2, [sp, #8]
add r0, r4, #0
@@ -22249,7 +22249,7 @@ _021F352E:
ldr r0, _021F36C8 ; =0x0000FFFF
cmp r1, r0
bne _021F3538
- bl ErrorHandling
+ bl GF_AssertFail
_021F3538:
ldr r0, [sp, #0x18]
ldr r1, [r4, #4]
@@ -22272,7 +22272,7 @@ _021F355C:
ldr r0, _021F36C8 ; =0x0000FFFF
cmp r1, r0
bne _021F3566
- bl ErrorHandling
+ bl GF_AssertFail
_021F3566:
ldr r0, [sp, #0x18]
ldr r1, [r4, #4]
@@ -22296,14 +22296,14 @@ _021F358C:
ldr r0, _021F36C8 ; =0x0000FFFF
cmp r1, r0
bne _021F3596
- bl ErrorHandling
+ bl GF_AssertFail
_021F3596:
ldr r0, [sp, #0x18]
ldr r1, [r4, #4]
mov r2, #0
bl MOD05_021F2DB0
str r0, [r5, #0x10]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
add r4, r0, #0
add r0, r6, #0
bl MOD05_021F2E00
@@ -22333,7 +22333,7 @@ _021F3596:
str r0, [r5, #0x24]
cmp r0, #0
bne _021F35EC
- bl ErrorHandling
+ bl GF_AssertFail
_021F35EC:
ldr r0, [sp, #0x10]
bl FUN_0201F844
@@ -22415,7 +22415,7 @@ _021F367A:
bl FUN_0200CA98
add r4, r0, #0
bne _021F36B6
- bl ErrorHandling
+ bl GF_AssertFail
_021F36B6:
add r0, r4, #0
add r1, r5, #0
@@ -22536,7 +22536,7 @@ MOD05_021F37AC: ; 0x021F37AC
bl AllocFromHeap
add r4, r0, #0
bne _021F37BC
- bl ErrorHandling
+ bl GF_AssertFail
_021F37BC:
add r2, r4, #0
mov r1, #0x10
@@ -22552,12 +22552,12 @@ _021F37C2:
thumb_func_start MOD05_021F37D0
MOD05_021F37D0: ; 0x021F37D0
- ldr r3, _021F37D8 ; =FUN_02016A8C
+ ldr r3, _021F37D8 ; =FreeToHeapExplicit
add r1, r0, #0
ldr r0, [r1]
bx r3
.balign 4, 0
-_021F37D8: .word FUN_02016A8C
+_021F37D8: .word FreeToHeapExplicit
thumb_func_start MOD05_021F37DC
MOD05_021F37DC: ; 0x021F37DC
@@ -22588,7 +22588,7 @@ _021F37FC:
bne _021F37F0
ldr r0, [r5]
ldr r1, [r5, #0xc]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_021F380E:
pop {r3, r4, r5, pc}
@@ -22606,7 +22606,7 @@ MOD05_021F3810: ; 0x021F3810
str r0, [r4, #0xc]
cmp r0, #0
bne _021F382E
- bl ErrorHandling
+ bl GF_AssertFail
_021F382E:
ldr r0, [r4, #0xc]
mov r1, #0
@@ -23816,7 +23816,7 @@ _021F4174:
lsl r0, r0, #0xc
cmp r3, r0
ble _021F4180
- bl ErrorHandling
+ bl GF_AssertFail
_021F4180:
pop {r4, r5, r6, pc}
.balign 4, 0
@@ -24324,7 +24324,7 @@ MOD05_021F4520: ; 0x021F4520
str r3, [sp]
cmp r3, #0
bne _021F4532
- bl ErrorHandling
+ bl GF_AssertFail
_021F4532:
ldr r0, [r5]
mov r4, #0
@@ -24364,7 +24364,7 @@ MOD05_021F4568: ; 0x021F4568
ldr r0, [r4]
cmp r5, r0
blt _021F4578
- bl ErrorHandling
+ bl GF_AssertFail
_021F4578:
mov r0, #0x18
add r6, r5, #0
@@ -24374,7 +24374,7 @@ _021F4578:
ldr r0, [r0, #0x14]
cmp r0, #0
bne _021F458C
- bl ErrorHandling
+ bl GF_AssertFail
_021F458C:
ldr r0, [r4, #4]
add r0, r0, r6
@@ -24390,7 +24390,7 @@ MOD05_021F4594: ; 0x021F4594
add r4, r1, #0
cmp r5, r0
blt _021F45A6
- bl ErrorHandling
+ bl GF_AssertFail
_021F45A6:
mov r0, #0x18
ldr r1, [r6, #4]
@@ -24438,7 +24438,7 @@ MOD05_021F45E8: ; 0x021F45E8
bl FUN_02015F34
cmp r0, #1
beq _021F45FC
- bl ErrorHandling
+ bl GF_AssertFail
_021F45FC:
mov r0, #1
str r0, [r4]
@@ -24455,7 +24455,7 @@ MOD05_021F4608: ; 0x021F4608
bl FUN_02015F34
cmp r0, #1
beq _021F461C
- bl ErrorHandling
+ bl GF_AssertFail
_021F461C:
mov r0, #0
str r0, [r4]
@@ -24470,7 +24470,7 @@ MOD05_021F4624: ; 0x021F4624
bl MOD05_021F46A8
add r4, r0, #0
bne _021F4636
- bl ErrorHandling
+ bl GF_AssertFail
_021F4636:
cmp r4, #0
beq _021F4642
@@ -24623,7 +24623,7 @@ MOD05_021F4724: ; 0x021F4724
ldr r0, [r4]
cmp r0, #0
beq _021F4732
- bl ErrorHandling
+ bl GF_AssertFail
_021F4732:
mov r0, #0x31
lsl r0, r0, #4
@@ -24984,7 +24984,7 @@ MOD05_021F49AC: ; 0x021F49AC
strh r1, [r7, #8]
cmp r1, r0
blo _021F49E4
- bl ErrorHandling
+ bl GF_AssertFail
_021F49E4:
ldr r1, _021F4BA8 ; =0x000008A4
mov r0, #0
@@ -25006,7 +25006,7 @@ _021F49E4:
str r0, [r5, r1]
sub r0, r1, #4
ldr r0, [r5, r0]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
ldr r1, _021F4BA8 ; =0x000008A4
str r0, [r5, r1]
ldrh r0, [r7, #8]
@@ -25014,7 +25014,7 @@ _021F49E4:
beq _021F4A2C
sub r0, r1, #4
ldr r0, [r5, r0]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
ldr r1, _021F4BB0 ; =0x000008A8
str r0, [r5, r1]
b _021F4A32
@@ -25028,7 +25028,7 @@ _021F4A32:
bl FUN_0201B3C4
cmp r0, #0
bne _021F4A42
- bl ErrorHandling
+ bl GF_AssertFail
_021F4A42:
ldr r1, _021F4BAC ; =0x0000089C
ldr r0, [r5, r1]
@@ -25042,7 +25042,7 @@ _021F4A42:
bl FUN_0201B3C4
cmp r0, #0
bne _021F4A62
- bl ErrorHandling
+ bl GF_AssertFail
_021F4A62:
mov r1, #0x8a
lsl r1, r1, #4
@@ -25088,7 +25088,7 @@ _021F4AA6:
ldr r0, [r4, #4]
cmp r0, #0
beq _021F4ABE
- bl ErrorHandling
+ bl GF_AssertFail
_021F4ABE:
ldr r0, [sp, #0xc]
add r1, r6, #0
@@ -25099,7 +25099,7 @@ _021F4ABE:
cmp r6, r0
bge _021F4AEC
ldr r0, [r4, #4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
add r1, r0, #0
ldrh r2, [r1, #0xe]
ldr r3, [r7, #4]
@@ -25117,7 +25117,7 @@ _021F4AEC:
bl FUN_0201B3A8
cmp r0, #0
bne _021F4AFE
- bl ErrorHandling
+ bl GF_AssertFail
_021F4AFE:
ldr r0, [sp]
ldrh r1, [r7, #8]
@@ -25137,20 +25137,20 @@ _021F4B10:
mov r2, #4
bl NARC_AllocAndReadWholeMember
str r0, [r5, #4]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
add r4, r0, #0
beq _021F4B46
bl FUN_0201B3C4
cmp r0, #0
bne _021F4B36
- bl ErrorHandling
+ bl GF_AssertFail
_021F4B36:
ldr r0, [r5, #4]
add r1, r4, #0
bl FUN_0201B3A8
cmp r0, #0
bne _021F4B46
- bl ErrorHandling
+ bl GF_AssertFail
_021F4B46:
ldr r0, [sp, #0xc]
bl NARC_dtor
@@ -25211,7 +25211,7 @@ MOD05_021F4BD0: ; 0x021F4BD0
add r5, r0, #0
add r4, r1, #0
bne _021F4BDC
- bl ErrorHandling
+ bl GF_AssertFail
_021F4BDC:
add r2, r4, #4
lsl r1, r5, #2
@@ -25221,7 +25221,7 @@ _021F4BDC:
ldr r0, [r4, #4]
cmp r0, #0
bne _021F4BF0
- bl ErrorHandling
+ bl GF_AssertFail
_021F4BF0:
add r0, r4, #4
pop {r3, r4, r5, pc}
@@ -25292,7 +25292,7 @@ MOD05_021F4C74: ; 0x021F4C74
push {r4, lr}
add r4, r0, #0
bne _021F4C7E
- bl ErrorHandling
+ bl GF_AssertFail
_021F4C7E:
ldr r0, _021F4C84 ; =0x000008A4
ldr r0, [r4, r0]
@@ -25305,7 +25305,7 @@ MOD05_021F4C88: ; 0x021F4C88
push {r4, lr}
add r4, r0, #0
bne _021F4C92
- bl ErrorHandling
+ bl GF_AssertFail
_021F4C92:
ldr r0, _021F4C98 ; =0x000008A8
ldr r0, [r4, r0]
@@ -25458,7 +25458,7 @@ MOD05_021F4D80: ; 0x021F4D80
add r5, r0, #0
cmp r5, #0x15
bne _021F4D96
- bl ErrorHandling
+ bl GF_AssertFail
_021F4D96:
ldr r0, [r4, #0xc]
bl FUN_0202A9B0
@@ -25494,7 +25494,7 @@ MOD05_021F4DC8: ; 0x021F4DC8
add r5, r0, #0
cmp r5, #0x15
bne _021F4DDE
- bl ErrorHandling
+ bl GF_AssertFail
_021F4DDE:
ldr r0, [r6, #0xc]
bl FUN_0202A9B0
@@ -25525,7 +25525,7 @@ _021F4DDE:
lsr r6, r0, #0x10
cmp r6, #0x64
blo _021F4E2E
- bl ErrorHandling
+ bl GF_AssertFail
_021F4E2E:
cmp r6, #0x5a
bhs _021F4E42
@@ -25574,7 +25574,7 @@ MOD05_021F4E7C: ; 0x021F4E7C
add r4, r0, #0
cmp r4, #0x15
bne _021F4E94
- bl ErrorHandling
+ bl GF_AssertFail
_021F4E94:
add r0, r5, #0
add r0, #0xa4
@@ -25627,7 +25627,7 @@ MOD05_021F4EE4: ; 0x021F4EE4
lsr r4, r0, #0x10
cmp r4, #0x64
blo _021F4F02
- bl ErrorHandling
+ bl GF_AssertFail
_021F4F02:
cmp r6, #0
beq _021F4F2A
@@ -25681,7 +25681,7 @@ MOD05_021F4F44: ; 0x021F4F44
lsr r5, r0, #0x10
cmp r5, #0x64
blo _021F4F60
- bl ErrorHandling
+ bl GF_AssertFail
_021F4F60:
cmp r5, #5
bge _021F4F6A
@@ -25744,7 +25744,7 @@ MOD05_021F4FAC: ; 0x021F4FAC
lsr r5, r0, #0x10
cmp r5, #0x64
blo _021F4FC8
- bl ErrorHandling
+ bl GF_AssertFail
_021F4FC8:
cmp r4, #3
bne _021F4FE8
@@ -26044,7 +26044,7 @@ MOD05_021F51D0: ; 0x021F51D0
add r5, r0, #0
cmp r5, #0x15
bne _021F51E6
- bl ErrorHandling
+ bl GF_AssertFail
_021F51E6:
ldr r0, [r4, #0xc]
bl FUN_0202A9B0
@@ -26090,7 +26090,7 @@ MOD05_021F522C: ; 0x021F522C
add r4, r0, #0
cmp r4, #0x15
bne _021F5242
- bl ErrorHandling
+ bl GF_AssertFail
_021F5242:
add r0, r5, #0
add r0, #0xa4
@@ -26118,9 +26118,9 @@ MOD05_021F5268: ; 0x021F5268
add r1, r2, #0
str r5, [sp]
add r2, r5, #0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
str r0, [r4, #4]
ldrh r1, [r0, #0xe]
add r1, r0, r1
@@ -26128,7 +26128,7 @@ MOD05_021F5268: ; 0x021F5268
add r0, r0, r1
str r0, [r4, #8]
ldr r0, [r4]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r4, #0xc]
cmp r0, #0
beq _021F52A4
@@ -26166,18 +26166,18 @@ MOD05_021F52C8: ; 0x021F52C8
beq _021F52F8
add r1, sp, #4
add r2, sp, #0
- bl FUN_020B7CF0
- ldr r1, _021F5314 ; =UNK_021064BC
+ bl NNS_G3dTexReleaseTexKey
+ ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram
ldr r0, [sp, #4]
ldr r1, [r1]
blx r1
- ldr r1, _021F5314 ; =UNK_021064BC
+ ldr r1, _021F5314 ; =NNS_GfdDefaultFuncFreeTexVram
ldr r0, [sp]
ldr r1, [r1]
blx r1
ldr r0, [r4, #0xc]
- bl FUN_020B7C58
- ldr r1, _021F5318 ; =UNK_021064C4
+ bl NNS_G3dPlttReleasePlttKey
+ ldr r1, _021F5318 ; =NNS_GfdDefaultFuncFreePlttVram
ldr r1, [r1]
blx r1
_021F52F8:
@@ -26196,8 +26196,8 @@ _021F5306:
add sp, #8
pop {r4, pc}
nop
-_021F5314: .word UNK_021064BC
-_021F5318: .word UNK_021064C4
+_021F5314: .word NNS_GfdDefaultFuncFreeTexVram
+_021F5318: .word NNS_GfdDefaultFuncFreePlttVram
thumb_func_start MOD05_021F531C
MOD05_021F531C: ; 0x021F531C
@@ -26211,7 +26211,7 @@ MOD05_021F531C: ; 0x021F531C
ldr r3, [sp, #0x18]
add r2, r6, #0
str r6, [sp]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r2, r0, #0
ldr r3, [sp, #0x1c]
add r0, r5, #0
@@ -26241,7 +26241,7 @@ MOD05_021F5358: ; 0x021F5358
beq _021F5376
add r0, r1, #0
ldr r1, [r4, #8]
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021F5376
@@ -26343,7 +26343,7 @@ MOD05_021F5400: ; 0x021F5400
bl memset
ldr r1, [r5, #8]
add r0, r4, #0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
mov r0, #1
str r0, [r4, #0x6c]
lsl r0, r0, #0xc
@@ -26354,11 +26354,11 @@ MOD05_021F5400: ; 0x021F5400
thumb_func_start MOD05_021F5424
MOD05_021F5424: ; 0x021F5424
- ldr r3, _021F542C ; =FUN_020B7EFC
+ ldr r3, _021F542C ; =NNS_G3dRenderObjAddAnmObj
ldr r1, [r1, #8]
bx r3
nop
-_021F542C: .word FUN_020B7EFC
+_021F542C: .word NNS_G3dRenderObjAddAnmObj
thumb_func_start MOD05_021F5430
MOD05_021F5430: ; 0x021F5430
@@ -26373,7 +26373,7 @@ MOD05_021F5430: ; 0x021F5430
add r0, r4, #0
add r0, #0x70
ldrh r0, [r0]
- ldr r3, _021F54C8 ; =UNK_020FFA38
+ ldr r3, _021F54C8 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -26390,7 +26390,7 @@ MOD05_021F5430: ; 0x021F5430
add r0, r4, #0
add r0, #0x74
ldrh r0, [r0]
- ldr r3, _021F54C8 ; =UNK_020FFA38
+ ldr r3, _021F54C8 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -26407,7 +26407,7 @@ MOD05_021F5430: ; 0x021F5430
add r0, r4, #0
add r0, #0x72
ldrh r0, [r0]
- ldr r3, _021F54C8 ; =UNK_020FFA38
+ ldr r3, _021F54C8 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -26432,7 +26432,7 @@ _021F54C4:
add sp, #0x48
pop {r4, pc}
.balign 4, 0
-_021F54C8: .word UNK_020FFA38
+_021F54C8: .word FX_SinCosTable_
thumb_func_start MOD05_021F54CC
MOD05_021F54CC: ; 0x021F54CC
@@ -26471,17 +26471,17 @@ MOD05_021F54EC: ; 0x021F54EC
add r0, r2, #0
mov r1, #0
add r6, r3, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
str r0, [r5, #4]
ldr r1, [r5, #4]
ldr r2, [r4, #8]
add r0, r6, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r5, #8]
ldr r1, [r5, #4]
ldr r2, [r4, #8]
ldr r3, [r4, #0xc]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
pop {r4, r5, r6, pc}
thumb_func_start MOD05_021F5518
@@ -27024,7 +27024,7 @@ _021F5924:
bl MOD06_0223BE70
cmp r0, #0
bne _021F5980
- bl ErrorHandling
+ bl GF_AssertFail
b _021F5980
_021F5936:
mov r0, #0xa
@@ -27062,7 +27062,7 @@ _021F5978:
mov r0, #1
pop {r4, r5, r6, pc}
_021F597C:
- bl ErrorHandling
+ bl GF_AssertFail
_021F5980:
mov r0, #0
pop {r4, r5, r6, pc}
@@ -27087,7 +27087,7 @@ MOD05_021F5990: ; 0x021F5990
bl FUN_0201681C
cmp r0, #1
beq _021F59B2
- bl ErrorHandling
+ bl GF_AssertFail
_021F59B2:
sub r5, r6, r5
add r0, r7, #0
@@ -27095,7 +27095,7 @@ _021F59B2:
bl AllocFromHeap
add r4, r0, #0
bne _021F59C4
- bl ErrorHandling
+ bl GF_AssertFail
_021F59C4:
add r0, r4, #0
mov r1, #0
@@ -27164,7 +27164,7 @@ MOD05_021F5A28: ; 0x021F5A28
str r0, [sp]
cmp r0, #0
bne _021F5A40
- bl ErrorHandling
+ bl GF_AssertFail
_021F5A40:
add r0, r5, #0
add r1, r6, #0
@@ -27198,7 +27198,7 @@ MOD05_021F5A74: ; 0x021F5A74
bl MOD05_021F5B3C
add r4, r0, #0
bne _021F5A82
- bl ErrorHandling
+ bl GF_AssertFail
_021F5A82:
ldr r0, [r4]
bl MOD05_021F5B34
@@ -27212,7 +27212,7 @@ MOD05_021F5A90: ; 0x021F5A90
bl MOD05_021F5B3C
add r4, r0, #0
bne _021F5A9E
- bl ErrorHandling
+ bl GF_AssertFail
_021F5A9E:
ldr r0, [r4]
pop {r4, pc}
@@ -27291,7 +27291,7 @@ _021F5B26:
add r4, r0, #0
cmp r4, #0
bne _021F5B30
- bl ErrorHandling
+ bl GF_AssertFail
_021F5B30:
add r0, r4, #0
pop {r4, pc}
@@ -28037,7 +28037,7 @@ MOD05_021F6074: ; 0x021F6074
bl AllocFromHeapAtEnd
add r4, r0, #0
bne _021F6088
- bl ErrorHandling
+ bl GF_AssertFail
_021F6088:
add r0, r4, #0
mov r1, #0
@@ -28198,7 +28198,7 @@ MOD05_021F61B0: ; 0x021F61B0
beq _021F61C6
cmp r0, #2
beq _021F61CA
- bl ErrorHandling
+ bl GF_AssertFail
_021F61C2:
ldr r0, _021F61D0 ; =0x000001BD
pop {r3, pc}
diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c
index c24a7bd3..73fddb7e 100644
--- a/arm9/modules/05/src/mod05_021E72FC.c
+++ b/arm9/modules/05/src/mod05_021E72FC.c
@@ -148,7 +148,7 @@ THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0)
UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0);
if (res == NULL)
{
- ErrorHandling();
+ GF_AssertFail();
}
memset((void *)res, 0, param0);
return res;
@@ -156,5 +156,5 @@ THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0)
THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0)
{
- FUN_02016A8C(4, param0);
+ FreeToHeapExplicit(4, param0);
}
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index d46e003b..3b86cb19 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -75,7 +75,7 @@ MOD06_02239714: ; 0x02239714
ldr r0, [r4, #0x38]
cmp r0, #2
beq _02239722
- bl ErrorHandling
+ bl GF_AssertFail
_02239722:
mov r0, #3
str r0, [r4, #0x38]
@@ -1124,7 +1124,7 @@ MOD06_02239F04: ; 0x02239F04
bl FUN_02058060
add r5, r0, #0
bne _02239F18
- bl ErrorHandling
+ bl GF_AssertFail
_02239F18:
add r0, r5, #0
bl FUN_02058B2C
@@ -2298,7 +2298,7 @@ MOD06_0223A790: ; 0x0223A790
ldr r0, [r4, r0]
cmp r0, #5
beq _0223A7A2
- bl ErrorHandling
+ bl GF_AssertFail
_0223A7A2:
add r0, r4, #0
bl FreeToHeap
@@ -2339,7 +2339,7 @@ MOD06_0223A7DC: ; 0x0223A7DC
ldr r0, [r4, r0]
cmp r0, #2
beq _0223A7EE
- bl ErrorHandling
+ bl GF_AssertFail
_0223A7EE:
mov r0, #0x4b
mov r1, #3
@@ -2393,7 +2393,7 @@ MOD06_0223A828: ; 0x0223A828
str r1, [r0]
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add r4, #0x40
add r0, r4, #0
bl MOD06_0223A400
@@ -2401,7 +2401,7 @@ MOD06_0223A828: ; 0x0223A828
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
_0223A860:
add sp, #4
pop {r3, r4, pc}
@@ -3119,7 +3119,7 @@ MOD06_0223ADB4: ; 0x0223ADB4
str r0, [r4]
cmp r0, #0
bne _0223ADCA
- bl ErrorHandling
+ bl GF_AssertFail
_0223ADCA:
mov r0, #0
str r0, [r4, #0x24]
@@ -3693,7 +3693,7 @@ MOD06_0223B20C: ; 0x0223B20C
add r7, r3, #0
cmp r0, #0
beq _0223B224
- bl ErrorHandling
+ bl GF_AssertFail
_0223B224:
mov r0, #0x71
mov r1, #0
@@ -3749,7 +3749,7 @@ MOD06_0223B268: ; 0x0223B268
bl MOD06_0223B438
add r4, r0, #0
bne _0223B290
- bl ErrorHandling
+ bl GF_AssertFail
_0223B290:
mov r1, #0x73
lsl r1, r1, #2
@@ -3897,7 +3897,7 @@ MOD06_0223B378: ; 0x0223B378
add r7, r3, #0
cmp r0, #0
beq _0223B38C
- bl ErrorHandling
+ bl GF_AssertFail
_0223B38C:
add r0, r5, #0
add r0, #0x7c
@@ -4562,7 +4562,7 @@ MOD06_0223B814: ; 0x0223B814
ldr r0, [r4, #0x14]
cmp r0, #2
beq _0223B822
- bl ErrorHandling
+ bl GF_AssertFail
_0223B822:
mov r0, #3
str r0, [r4, #0x14]
@@ -5133,7 +5133,7 @@ _0223BC90:
bl MOD06_0223C438
b _0223BCCC
_0223BCBC:
- bl ErrorHandling
+ bl GF_AssertFail
ldr r0, [sp, #0x2c]
bl FUN_02047964
add sp, #0xb4
@@ -5154,13 +5154,13 @@ _0223BCDE:
bl FUN_02016B90
cmp r0, #0
bne _0223BCEC
- bl ErrorHandling
+ bl GF_AssertFail
_0223BCEC:
mov r0, #0xb
bl FUN_02016B90
cmp r0, #0
bne _0223BCFA
- bl ErrorHandling
+ bl GF_AssertFail
_0223BCFA:
ldr r0, [sp, #0x10]
cmp r0, #0
@@ -5222,7 +5222,7 @@ _0223BD2E:
lsr r5, r0, #0x10
cmp r5, #0x64
blo _0223BD80
- bl ErrorHandling
+ bl GF_AssertFail
_0223BD80:
cmp r5, r6
blt _0223BD8A
@@ -5570,7 +5570,7 @@ _0223C034:
bl MOD06_0223C438
b _0223C06A
_0223C060:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0xac
mov r0, #0
pop {r4, r5, r6, r7, pc}
@@ -5583,7 +5583,7 @@ _0223C06A:
bl FUN_02046A20
b _0223C07E
_0223C07A:
- bl ErrorHandling
+ bl GF_AssertFail
_0223C07E:
mov r0, #0
add r5, #0x74
@@ -5851,7 +5851,7 @@ _0223C2A2:
bl MOD06_0223C3F4
b _0223C2DC
_0223C2CC:
- bl ErrorHandling
+ bl GF_AssertFail
ldr r0, [r4]
bl FUN_02047964
add sp, #0xac
@@ -5867,13 +5867,13 @@ _0223C2E4:
bl FUN_02016B90
cmp r0, #0
bne _0223C2F2
- bl ErrorHandling
+ bl GF_AssertFail
_0223C2F2:
mov r0, #0xb
bl FUN_02016B90
cmp r0, #0
bne _0223C300
- bl ErrorHandling
+ bl GF_AssertFail
_0223C300:
ldr r0, [sp, #0x10]
cmp r0, #0
@@ -6089,7 +6089,7 @@ MOD06_0223C470: ; 0x0223C470
lsr r4, r0, #0x10
cmp r4, #0x64
blo _0223C4A8
- bl ErrorHandling
+ bl GF_AssertFail
_0223C4A8:
cmp r4, #5
blo _0223C4B0
@@ -6133,7 +6133,7 @@ _0223C4EC:
lsr r6, r0, #0x10
cmp r6, #0x64
blo _0223C504
- bl ErrorHandling
+ bl GF_AssertFail
_0223C504:
cmp r6, r4
bge _0223C518
@@ -6217,7 +6217,7 @@ MOD06_0223C584: ; 0x0223C584
lsr r5, r0, #0x10
cmp r5, #0x64
blo _0223C5A0
- bl ErrorHandling
+ bl GF_AssertFail
_0223C5A0:
cmp r5, r4
blo _0223C5A8
@@ -6238,7 +6238,7 @@ MOD06_0223C5AC: ; 0x0223C5AC
lsr r4, r0, #0x10
cmp r4, #0x64
blo _0223C5C6
- bl ErrorHandling
+ bl GF_AssertFail
_0223C5C6:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -6328,7 +6328,7 @@ MOD06_0223C648: ; 0x0223C648
lsr r4, r0, #0x10
cmp r4, #0x64
blo _0223C662
- bl ErrorHandling
+ bl GF_AssertFail
_0223C662:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -6373,7 +6373,7 @@ MOD06_0223C694: ; 0x0223C694
lsr r6, r0, #0x10
cmp r6, #0x64
blo _0223C6B2
- bl ErrorHandling
+ bl GF_AssertFail
_0223C6B2:
lsl r0, r6, #0x18
lsr r0, r0, #0x18
@@ -6454,7 +6454,7 @@ _0223C72C:
mov r4, #4
b _0223C734
_0223C730:
- bl ErrorHandling
+ bl GF_AssertFail
_0223C734:
add r0, r4, #0
pop {r4, r5, r6, pc}
@@ -6522,7 +6522,7 @@ MOD06_0223C78C: ; 0x0223C78C
lsr r5, r0, #0x10
cmp r5, #2
blo _0223C7AC
- bl ErrorHandling
+ bl GF_AssertFail
_0223C7AC:
cmp r5, #0
bne _0223C7C6
@@ -6543,7 +6543,7 @@ _0223C7C6:
lsr r4, r0, #0x10
cmp r4, #0x19
blo _0223C7DC
- bl ErrorHandling
+ bl GF_AssertFail
_0223C7DC:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
@@ -6593,7 +6593,7 @@ _0223C82C:
lsr r7, r0, #0x10
cmp r7, #2
blo _0223C83C
- bl ErrorHandling
+ bl GF_AssertFail
_0223C83C:
cmp r7, #0
bne _0223C848
@@ -6646,7 +6646,7 @@ MOD06_0223C854: ; 0x0223C854
lsr r4, r0, #0x10
cmp r4, #3
blo _0223C8A6
- bl ErrorHandling
+ bl GF_AssertFail
_0223C8A6:
cmp r4, #0
beq _0223C8E0
@@ -6667,7 +6667,7 @@ _0223C8BE:
lsr r4, r0, #0x10
cmp r4, #2
blo _0223C8D2
- bl ErrorHandling
+ bl GF_AssertFail
_0223C8D2:
cmp r4, #0
bne _0223C8E0
@@ -6691,7 +6691,7 @@ _0223C8EC:
add r7, r0, #0
cmp r7, #2
bne _0223C904
- bl ErrorHandling
+ bl GF_AssertFail
_0223C904:
ldr r0, [sp, #0x24]
cmp r7, r0
@@ -6731,7 +6731,7 @@ _0223C92E:
bl MOD06_0223D1BC
cmp r0, #0
bne _0223C95A
- bl ErrorHandling
+ bl GF_AssertFail
_0223C95A:
ldr r0, [sp, #0x1c]
bl FreeToHeap
@@ -6780,7 +6780,7 @@ _0223C998:
lsr r6, r0, #0x10
cmp r6, #3
blo _0223C9BE
- bl ErrorHandling
+ bl GF_AssertFail
_0223C9BE:
cmp r6, #0
beq _0223CA28
@@ -6800,7 +6800,7 @@ _0223C9D8:
mov r6, #1
b _0223C9E4
_0223C9E0:
- bl ErrorHandling
+ bl GF_AssertFail
_0223C9E4:
ldr r0, [sp, #0x28]
add r1, r5, #0
@@ -6825,7 +6825,7 @@ _0223C9E4:
bl MOD06_0223D1BC
cmp r0, #0
bne _0223CA1E
- bl ErrorHandling
+ bl GF_AssertFail
_0223CA1E:
add r0, r4, #0
bl FreeToHeap
@@ -6852,7 +6852,7 @@ _0223CA28:
bl MOD06_0223D1BC
cmp r0, #0
bne _0223CA5C
- bl ErrorHandling
+ bl GF_AssertFail
_0223CA5C:
add r0, r4, #0
bl FreeToHeap
@@ -6999,7 +6999,7 @@ _0223CB74:
add r7, r0, #0
b _0223CB8A
_0223CB86:
- bl ErrorHandling
+ bl GF_AssertFail
_0223CB8A:
add r0, r5, #0
add r1, r6, #0
@@ -7048,7 +7048,7 @@ MOD06_0223CBD4: ; 0x0223CBD4
add r7, r3, #0
cmp r5, #0
bne _0223CBE8
- bl ErrorHandling
+ bl GF_AssertFail
_0223CBE8:
lsl r0, r4, #0x18
lsr r1, r0, #0x18
@@ -7197,7 +7197,7 @@ MOD06_0223CCDC: ; 0x0223CCDC
lsr r6, r0, #0x10
cmp r6, #0xb
blo _0223CD1A
- bl ErrorHandling
+ bl GF_AssertFail
_0223CD1A:
add r0, r6, #5
lsl r0, r0, #0x18
@@ -7219,7 +7219,7 @@ _0223CD36:
lsr r6, r0, #0x10
cmp r6, #2
blo _0223CD46
- bl ErrorHandling
+ bl GF_AssertFail
_0223CD46:
cmp r6, #0
beq _0223CD4C
@@ -7353,7 +7353,7 @@ _0223CE32:
ldr r0, [r0, r1]
pop {r4, pc}
_0223CE3A:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, pc}
.align 2, 0
@@ -7454,7 +7454,7 @@ MOD06_0223CED4: ; 0x0223CED4
lsr r4, r0, #0x10
cmp r4, #2
blo _0223CEFA
- bl ErrorHandling
+ bl GF_AssertFail
_0223CEFA:
cmp r4, #0
bne _0223CF0E
@@ -7569,7 +7569,7 @@ _0223CFAC:
lsr r4, r0, #0x10
cmp r4, #2
blo _0223CFC2
- bl ErrorHandling
+ bl GF_AssertFail
_0223CFC2:
cmp r4, #0
bne _0223CFCA
@@ -7705,7 +7705,7 @@ MOD06_0223D044: ; 0x0223D044
bl AddMonToParty
cmp r0, #0
bne _0223D0D8
- bl ErrorHandling
+ bl GF_AssertFail
_0223D0D8:
add r0, r4, #0
bl FreeToHeap
@@ -7768,7 +7768,7 @@ _0223D148:
lsr r4, r0, #0x10
cmp r4, #2
blo _0223D158
- bl ErrorHandling
+ bl GF_AssertFail
_0223D158:
cmp r4, #0
bne _0223D162
@@ -7780,7 +7780,7 @@ _0223D162:
bls _0223D1AA
cmp r5, #0
bne _0223D16E
- bl ErrorHandling
+ bl GF_AssertFail
_0223D16E:
cmp r5, #1
bhi _0223D176
@@ -7802,7 +7802,7 @@ _0223D176:
lsr r4, r0, #0x10
cmp r4, r5
blo _0223D19E
- bl ErrorHandling
+ bl GF_AssertFail
_0223D19E:
lsl r1, r4, #2
add r0, sp, #8
@@ -7940,7 +7940,7 @@ _0223D296:
lsr r6, r0, #0x10
cmp r6, #2
blo _0223D2A6
- bl ErrorHandling
+ bl GF_AssertFail
_0223D2A6:
cmp r6, #0
bne _0223D2AE
@@ -8020,7 +8020,7 @@ _0223D308:
beq _0223D342
cmp r1, #8
ble _0223D338
- bl ErrorHandling
+ bl GF_AssertFail
_0223D338:
add r5, #0xa0
ldr r0, [r5]
@@ -8427,7 +8427,7 @@ MOD06_0223D63C: ; 0x0223D63C
mov r4, #3
add r0, r4, #0
mov r1, #0xb
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0x84
str r0, [r1]
@@ -8439,7 +8439,7 @@ MOD06_0223D63C: ; 0x0223D63C
ldr r1, [r1]
mov r2, #0xf
mov r3, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r5, #0
add r1, r5, #0
add r0, #0x84
@@ -8448,7 +8448,7 @@ MOD06_0223D63C: ; 0x0223D63C
ldr r1, [r1]
mov r2, #0x10
mov r3, #0xe
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r5, #0
add r1, r5, #0
add r0, #0x84
@@ -8458,7 +8458,7 @@ MOD06_0223D63C: ; 0x0223D63C
ldr r0, [r0]
ldr r1, [r1]
sub r3, #0x13
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
mov r3, #1
str r3, [sp]
mov r1, #0xd
@@ -8478,7 +8478,7 @@ _0223D6B8:
mov r4, #2
add r0, r4, #0
mov r1, #0xb
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0x84
str r0, [r1]
@@ -8490,7 +8490,7 @@ _0223D6B8:
ldr r1, [r1]
mov r2, #0xf
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r5, #0
add r1, r5, #0
add r0, #0x84
@@ -8500,7 +8500,7 @@ _0223D6B8:
ldr r0, [r0]
ldr r1, [r1]
sub r3, #0x13
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
mov r3, #1
str r3, [sp]
mov r1, #0xd
@@ -8618,7 +8618,7 @@ MOD06_0223D7B8: ; 0x0223D7B8
add r0, r4, #0
add r0, #0x84
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r4, #8
add r0, r4, #0
bl FUN_02019178
@@ -8879,7 +8879,7 @@ MOD06_0223D9E8: ; 0x0223D9E8
ldr r2, [r4]
mov r0, #0x3e
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, _0223DA88 ; =0x00000241
ldrb r0, [r4, r0]
cmp r0, #0
@@ -8894,7 +8894,7 @@ MOD06_0223D9E8: ; 0x0223D9E8
mov r0, #0x3e
mov r1, #2
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
b _0223DA3E
_0223DA26:
mov r0, #0
@@ -8907,7 +8907,7 @@ _0223DA26:
mov r0, #0x3e
mov r1, #3
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
_0223DA3E:
mov r0, #0x20
str r0, [sp]
@@ -8917,7 +8917,7 @@ _0223DA3E:
mov r0, #0x3e
mov r1, #1
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r3, #0xb
@@ -9146,7 +9146,7 @@ _0223DC34:
ldrb r0, [r5, r0]
mov r1, #0xb
add r0, r0, #1
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x7c]
mov r0, #0x8b
lsl r0, r0, #2
@@ -9172,7 +9172,7 @@ _0223DC52:
ldr r0, [r5, #0x7c]
ldrh r2, [r2, r4]
add r1, r7, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r7, #0
bl String_dtor
mov r0, #0x8b
@@ -9190,7 +9190,7 @@ _0223DC8E:
ldr r0, [r5, #0x7c]
ldr r1, [r1]
sub r3, #0xa
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, [sp]
bl DestroyMsgData
ldr r4, _0223DCEC ; =0x0224F38C
@@ -9220,7 +9220,7 @@ _0223DC8E:
add r0, r2, #0
add r2, r1, #0
str r5, [sp, #0x20]
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x78]
add sp, #0x24
pop {r4, r5, r6, r7, pc}
@@ -9236,7 +9236,7 @@ MOD06_0223DCF0: ; 0x0223DCF0
mov r1, #0x13
str r0, [sp, #0x10]
add r6, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
cmp r6, #1
beq _0223DD0C
@@ -9246,7 +9246,7 @@ _0223DD0C:
add r0, r4, #0
add r0, #0x18
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #1
mvn r1, r1
cmp r5, r1
@@ -9328,7 +9328,7 @@ _0223DDBA:
ldr r0, [sp, #0x10]
add r1, #2
add r2, sp, #0x14
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, sp, #0x14
ldrh r0, [r0, #2]
cmp r0, #0
@@ -9348,7 +9348,7 @@ _0223DDE4:
_0223DDF0:
ldr r0, [sp, #0x10]
mov r1, #2
- bl FUN_02001470
+ bl ListMenuGetTemplateField
cmp r0, #7
bls _0223DE16
add r1, sp, #0x14
@@ -9383,7 +9383,7 @@ MOD06_0223DE34: ; 0x0223DE34
add r4, r1, #0
mov r1, #0x13
add r7, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r1, #1
mvn r1, r1
add r5, r0, #0
@@ -9456,7 +9456,7 @@ MOD06_0223DED0: ; 0x0223DED0
bne _0223DF1C
add r0, #0x28
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x28
mov r1, #1
@@ -9491,7 +9491,7 @@ _0223DF1C:
mov r1, #0xf
mov r2, #0
str r3, [sp, #4]
- bl FUN_020196F4
+ bl FillWindowPixelRect
_0223DF30:
mov r0, #0x10
mov r1, #0xb
@@ -9558,14 +9558,14 @@ MOD06_0223DFB4: ; 0x0223DFB4
ldr r0, [r5, #0x78]
mov r1, #0
add r2, #2
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
ldr r0, [r5, #0x78]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
ldr r0, [r5, #0x78]
mov r1, #0
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, sp, #0
ldrh r2, [r0]
ldrh r0, [r0, #2]
@@ -9595,9 +9595,9 @@ _0223E006:
mov r1, #0
ldr r0, [r5, #0x78]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r5, #0x7c]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0
bl MOD06_0223D9C0
add r0, r5, #0
@@ -9637,7 +9637,7 @@ _0223E034:
add r0, r5, #0
add r0, #0x58
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x18
bl FUN_02019570
@@ -9832,7 +9832,7 @@ _0223E214:
add r0, r5, #0
add r0, #0x48
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x48
mov r1, #1
@@ -9934,7 +9934,7 @@ _0223E2C4:
add r0, r4, #0
add r0, #0x58
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0223E380 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
@@ -10167,7 +10167,7 @@ MOD06_0223E4E8: ; 0x0223E4E8
add r4, r1, #0
add r0, #0x38
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r4, #0
bne _0223E50A
add r0, r5, #0
@@ -10429,7 +10429,7 @@ _0223E704:
add r0, r5, #0
add r0, #0x58
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0x23
lsl r2, r2, #4
ldr r1, [r5, r2]
@@ -10644,7 +10644,7 @@ _0223E88A:
add r0, r5, #0
add r0, #0x58
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0x23
lsl r2, r2, #4
ldr r1, [r5, r2]
@@ -11388,7 +11388,7 @@ _0223EEB8:
mov r1, #0
add r0, r2, #0
add r2, r1, #0
- bl FUN_020010A8
+ bl ListMenuInit
ldr r1, _0223EF10 ; =0x02252420
ldr r2, [r1]
str r0, [r2, #0x5c]
@@ -11412,7 +11412,7 @@ MOD06_0223EF18: ; 0x0223EF18
ldr r0, [r0]
cmp r0, #0
beq _0223EF28
- bl ErrorHandling
+ bl GF_AssertFail
_0223EF28:
mov r0, #4
mov r1, #0x9c
@@ -11454,15 +11454,15 @@ _0223EF28:
str r0, [r2, #0x7c]
ldr r0, [r1]
add r0, #0x20
- bl FUN_0201901C
+ bl InitWindow
ldr r0, _0223EFF4 ; =0x02252420
ldr r0, [r0]
add r0, #0x30
- bl FUN_0201901C
+ bl InitWindow
ldr r0, _0223EFF4 ; =0x02252420
ldr r0, [r0]
add r0, #0x40
- bl FUN_0201901C
+ bl InitWindow
mov r0, #4
bl ScrStrBufs_new
ldr r1, _0223EFF4 ; =0x02252420
@@ -11619,7 +11619,7 @@ MOD06_0223F0C8: ; 0x0223F0C8
mov r1, #3
add r5, r0, #0
mov r4, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
cmp r0, #0
bls _0223F0F6
add r6, r4, #0
@@ -11633,7 +11633,7 @@ _0223F0DC:
add r0, r5, #0
add r1, r7, #0
add r4, r4, #1
- bl FUN_02001470
+ bl ListMenuGetTemplateField
cmp r4, r0
blo _0223F0DC
_0223F0F6:
@@ -11655,7 +11655,7 @@ MOD06_0223F0F8: ; 0x0223F0F8
cmp r0, #0
beq _0223F11A
add r1, sp, #0xc
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
_0223F11A:
add r0, sp, #0xc
ldrh r1, [r0]
@@ -11665,7 +11665,7 @@ _0223F11A:
lsl r5, r5, #4
ldr r0, [r0]
add r0, #0x20
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, #8
lsl r0, r0, #0x10
@@ -11680,7 +11680,7 @@ _0223F11A:
add r0, #0x20
mov r2, #8
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, sp, #0xc
ldrh r2, [r0]
cmp r2, r4
@@ -11853,7 +11853,7 @@ _0223F2AA:
mov r1, #0xf
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0223F330 ; =0x02252420
ldr r0, [r0]
add r0, #0x30
@@ -11977,7 +11977,7 @@ MOD06_0223F3B8: ; 0x0223F3B8
beq _0223F450
mov r0, #0x10
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r4, _0223F454 ; =0x02252420
mov r5, #0
ldr r1, [r4]
@@ -12006,7 +12006,7 @@ _0223F3E0:
mov r2, #0
ldr r0, [r1, #0x64]
ldr r1, [r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r5, r5, #1
cmp r5, #0x10
blt _0223F3E0
@@ -12074,7 +12074,7 @@ _0223F49A:
ldr r0, _0223F518 ; =0x02252420
ldr r0, [r0]
ldr r0, [r0, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
_0223F4A4:
mov r1, #1
mvn r1, r1
@@ -12105,7 +12105,7 @@ _0223F4D8:
add r1, r4, #0
ldr r0, [r4, #0x5c]
add r1, #0x8e
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, r4, #0
add r0, #0x8e
ldrh r5, [r0]
@@ -12160,7 +12160,7 @@ _0223F53C:
mov r2, #8
add r0, #0x20
mov r3, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _0223F580 ; =0x02252420
mov r1, #0
ldr r0, [r0]
@@ -12451,7 +12451,7 @@ MOD06_0223F7C4: ; 0x0223F7C4
cmp r0, #0
beq _0223F7E0
add r1, sp, #0xc
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
_0223F7E0:
add r0, sp, #0xc
ldrh r1, [r0]
@@ -12611,7 +12611,7 @@ _0223F910:
mov r1, #0xf
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0223F950 ; =0x02252420
ldr r0, [r0]
add r0, #0x30
@@ -12651,7 +12651,7 @@ _0223F966:
ldrb r0, [r0]
cmp r0, #0x11
blo _0223F982
- bl ErrorHandling
+ bl GF_AssertFail
_0223F982:
ldr r0, _0223F9D4 ; =0x02252420
ldr r0, [r0]
@@ -12727,7 +12727,7 @@ _0223FA02:
mov r1, #0xf
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0223FA5C ; =0x02252420
add r1, r4, #0
ldr r2, [r0]
@@ -12821,7 +12821,7 @@ MOD06_0223FAB8: ; 0x0223FAB8
beq _0223FB4C
mov r0, #5
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r4, _0223FB50 ; =0x02252420
mov r5, #0
ldr r1, [r4]
@@ -12834,7 +12834,7 @@ _0223FAE6:
ldr r0, [r1, #0x64]
ldr r1, [r1, #0x74]
add r3, r7, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r5, r5, #1
cmp r5, #5
blt _0223FAE6
@@ -12966,13 +12966,13 @@ _0223FBDA:
strb r0, [r2]
ldr r0, [r1]
ldr r0, [r0, #0x5c]
- bl FUN_02001328
+ bl RedrawListMenu
ldr r0, _0223FCF0 ; =0x02252420
mov r1, #3
ldr r0, [r0]
mov r5, #0
ldr r0, [r0, #0x5c]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
cmp r0, #0
bls _0223FC32
ldr r4, _0223FCF0 ; =0x02252420
@@ -12989,13 +12989,13 @@ _0223FC14:
add r1, r7, #0
ldr r0, [r0, #0x5c]
add r5, r5, #1
- bl FUN_02001470
+ bl ListMenuGetTemplateField
cmp r5, r0
blo _0223FC14
_0223FC32:
ldr r0, [sp, #4]
ldr r0, [r0, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
bl FUN_0202DF08
cmp r0, #0xff
@@ -13094,7 +13094,7 @@ MOD06_0223FD08: ; 0x0223FD08
add r0, r4, #0
bl MOD06_0223F9D8
ldr r0, [r4, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r0, [r4, #0x60]
mov r1, #4
bl FUN_020021AC
@@ -13421,7 +13421,7 @@ MOD06_0223FFD4: ; 0x0223FFD4
mov r0, #0
bl FUN_02031A24
ldr r0, [r4, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r0, _02240020 ; =0x02252420
ldr r0, [r0]
add r0, #0x94
@@ -13459,7 +13459,7 @@ MOD06_02240030: ; 0x02240030
add r0, r5, #0
bl MOD06_0223F9D8
ldr r0, [r5, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r0, [r5, #0x60]
mov r1, #4
bl FUN_020021AC
@@ -13681,7 +13681,7 @@ MOD06_02240204: ; 0x02240204
add r0, r4, #0
bl MOD06_0223F9D8
ldr r0, [r4, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r0, _02240248 ; =0x02252420
ldr r0, [r0]
add r0, #0x94
@@ -13719,7 +13719,7 @@ MOD06_02240258: ; 0x02240258
add r0, r5, #0
bl MOD06_0223F9D8
ldr r0, [r5, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r0, [r5, #0x60]
mov r1, #4
bl FUN_020021AC
@@ -13778,7 +13778,7 @@ _022402DC:
add r0, r4, #0
bl MOD06_0223F9D8
ldr r0, [r4, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r0, #0xa
bl FUN_020315D8
cmp r0, #0
@@ -13804,7 +13804,7 @@ MOD06_02240310: ; 0x02240310
add r0, r4, #0
bl MOD06_0223F9D8
ldr r0, [r4, #0x5c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r0, _02240354 ; =0x02252420
ldr r0, [r0]
add r0, #0x94
@@ -13843,17 +13843,17 @@ MOD06_02240364: ; 0x02240364
ldr r0, [r0]
mov r1, #0xf
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x20
mov r1, #0
bl FUN_0200CCF8
ldr r0, [r4, #0x64]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r1, #0
ldr r0, [r4, #0x5c]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #0
add r0, #0x20
bl FUN_02019570
@@ -14473,7 +14473,7 @@ MOD06_02240864: ; 0x02240864
bne _0224089E
add r0, r5, #0
add r0, #0x54
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [r5, #0x10]
add r1, r5, #0
ldr r0, [r0, #8]
@@ -14577,7 +14577,7 @@ _02240940:
bne _022409D2
add r0, r6, #2
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #8]
mov r3, #1
str r3, [sp]
@@ -14605,7 +14605,7 @@ _02240940:
ldr r1, [r5, #0x68]
mov r2, #0x7b
mov r3, #0xc
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
mov r4, #0
cmp r6, #0
ble _022409C4
@@ -14625,7 +14625,7 @@ _02240998:
ldr r0, [r5, #8]
ldr r1, [r5, #0x20]
add r2, r4, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r4, r4, #1
cmp r4, r6
blt _02240998
@@ -14635,7 +14635,7 @@ _022409C4:
ldr r0, [r5, #8]
ldr r1, [r5, #0x68]
sub r3, #0x74
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_022409D2:
ldr r4, _02240A24 ; =0x0224F704
add r3, sp, #0x14
@@ -14666,7 +14666,7 @@ _022409D2:
add r2, #0x78
ldrh r2, [r2]
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5]
add r5, #0x34
add r0, r5, #0
@@ -14686,7 +14686,7 @@ MOD06_02240A28: ; 0x02240A28
beq _02240A62
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #0
add r0, #0x34
mov r1, #1
@@ -14700,7 +14700,7 @@ MOD06_02240A28: ; 0x02240A28
add r0, #0x34
bl FUN_02019178
ldr r0, [r4, #8]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
str r0, [r4]
_02240A62:
@@ -14711,20 +14711,20 @@ MOD06_02240A64: ; 0x02240A64
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r2, r5, #0
ldr r0, [r5]
mov r1, #0
add r2, #0x78
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, r5, #0
add r0, #0x80
ldrh r6, [r0]
add r1, r5, #0
ldr r0, [r5]
add r1, #0x80
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, r5, #0
add r0, #0x80
ldrh r0, [r0]
@@ -14792,7 +14792,7 @@ MOD06_02240B04: ; 0x02240B04
mov r0, #3
mov r1, #4
ldr r4, _02240BA8 ; =MOD6_022522E4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0xc]
mov r0, #0xa
str r0, [sp]
@@ -14823,7 +14823,7 @@ _02240B4A:
ldr r1, [r5, #0x68]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, #3
@@ -14855,7 +14855,7 @@ _02240B4A:
add r2, #0x7a
ldrh r2, [r2]
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #4]
add r5, #0x44
add r0, r5, #0
@@ -14873,20 +14873,20 @@ MOD06_02240BB8: ; 0x02240BB8
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #4]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r2, r5, #0
ldr r0, [r5, #4]
mov r1, #0
add r2, #0x7a
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, r5, #0
add r0, #0x82
ldrh r6, [r0]
add r1, r5, #0
ldr r0, [r5, #4]
add r1, #0x82
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, r5, #0
add r0, #0x82
ldrh r0, [r0]
@@ -14921,7 +14921,7 @@ _02240C1A:
beq _02240C50
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r5, #0
add r0, #0x44
mov r1, #1
@@ -14935,7 +14935,7 @@ _02240C1A:
add r0, #0x44
bl FUN_02019178
ldr r0, [r5, #0xc]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
str r0, [r5, #4]
_02240C50:
@@ -14992,7 +14992,7 @@ MOD06_02240C58: ; 0x02240C58
bl FUN_0200CCA4
ldr r0, [sp, #0x24]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x14]
add r1, r0, #0
add r1, #0x78
@@ -15741,7 +15741,7 @@ _022412C8:
strb r0, [r5]
pop {r4, r5, pc}
_022412DC:
- bl ErrorHandling
+ bl GF_AssertFail
_022412E0:
add sp, #0x2c
pop {r4, r5, pc}
@@ -15994,7 +15994,7 @@ _022414DA:
str r0, [r5]
b _02241580
_022414E6:
- bl ErrorHandling
+ bl GF_AssertFail
b _02241580
_022414EC:
add r4, #0xa0
@@ -16251,7 +16251,7 @@ _022416EA:
str r7, [sp, #0xc]
b _02241702
_022416F6:
- bl ErrorHandling
+ bl GF_AssertFail
mov r5, #0
mov r6, #1
add r7, r6, #0
@@ -16360,7 +16360,7 @@ _022417E4:
mov r5, #2
b _022417F4
_022417F0:
- bl ErrorHandling
+ bl GF_AssertFail
_022417F4:
add r0, r6, #0
add r1, r7, #0
@@ -16460,7 +16460,7 @@ _022418D0:
lsl r4, r4, #0x10
b _022418DC
_022418D6:
- bl ErrorHandling
+ bl GF_AssertFail
mov r4, #0
_022418DC:
add r0, r5, #0
@@ -17241,7 +17241,7 @@ _02241F00:
str r0, [r4]
b _02241F2E
_02241F2A:
- bl ErrorHandling
+ bl GF_AssertFail
_02241F2E:
ldr r0, [r6, #0x38]
ldr r1, [sp, #4]
@@ -17393,7 +17393,7 @@ _0224205A:
bl FUN_0205ADDC
b _02242072
_0224206E:
- bl ErrorHandling
+ bl GF_AssertFail
_02242072:
ldr r0, [sp]
add r1, sp, #0x10
@@ -17553,7 +17553,7 @@ _022421AA:
bl FUN_0205ADDC
b _022421C2
_022421BE:
- bl ErrorHandling
+ bl GF_AssertFail
_022421C2:
ldr r0, [sp]
add r1, sp, #0x10
@@ -17886,7 +17886,7 @@ MOD06_02242458: ; 0x02242458
lsr r5, r0, #0x18
cmp r5, #3
bls _02242478
- bl ErrorHandling
+ bl GF_AssertFail
_02242478:
ldr r1, _02242498 ; =0x0224FC00
lsl r0, r5, #0xa
@@ -17897,7 +17897,7 @@ _02242478:
lsl r0, r0, #0xa
cmp r4, r0
blt _0224248E
- bl ErrorHandling
+ bl GF_AssertFail
_0224248E:
ldrb r1, [r5, r4]
ldr r0, [sp, #0x10]
@@ -18344,7 +18344,7 @@ _022427DC:
str r0, [r4]
b _022427FE
_022427FA:
- bl ErrorHandling
+ bl GF_AssertFail
_022427FE:
add r0, r6, #0
add r1, sp, #0
@@ -18399,7 +18399,7 @@ _0224285C:
mov r0, #0xd
pop {r3, pc}
_02242860:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
@@ -18423,7 +18423,7 @@ _02242882:
add r7, r2, #0
b _0224288A
_02242886:
- bl ErrorHandling
+ bl GF_AssertFail
_0224288A:
ldrb r0, [r5, #7]
mov r4, #0
@@ -18431,7 +18431,7 @@ _0224288A:
lsr r0, r0, #0x1e
cmp r0, #3
bls _0224289A
- bl ErrorHandling
+ bl GF_AssertFail
_0224289A:
ldrb r0, [r5, #7]
lsl r0, r0, #0x1e
@@ -18442,7 +18442,7 @@ _0224289A:
asr r4, r0, #0x10
cmp r6, #3
bls _022428B0
- bl ErrorHandling
+ bl GF_AssertFail
_022428B0:
lsl r0, r6, #0x1e
asr r1, r0, #0x10
@@ -18462,7 +18462,7 @@ _022428C4:
asr r4, r0, #0x10
b _022428D4
_022428D0:
- bl ErrorHandling
+ bl GF_AssertFail
_022428D4:
str r4, [r7]
pop {r3, r4, r5, r6, r7, pc}
@@ -18719,7 +18719,7 @@ _02242AAA:
asr r0, r0, #0x18
b _02242ACE
_02242AC8:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_02242ACE:
str r0, [r6]
@@ -18829,7 +18829,7 @@ _02242B96:
add r6, r0, #0
b _02242B9E
_02242B9A:
- bl ErrorHandling
+ bl GF_AssertFail
_02242B9E:
ldr r0, [r6]
lsl r0, r0, #0x10
@@ -18885,7 +18885,7 @@ MOD06_02242BE0: ; 0x02242BE0
bl AllocFromHeap
add r4, r0, #0
bne _02242C0E
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_02242C0E:
@@ -19028,7 +19028,7 @@ MOD06_02242CDC: ; 0x02242CDC
mov r1, #0
add r2, r5, #0
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
add r4, #0x88
str r0, [r4]
add sp, #0x14
@@ -19219,13 +19219,13 @@ MOD06_02242E9C: ; 0x02242E9C
mov r1, #3
mov r2, #0xf
mov r3, #4
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, pc}
_02242EB2:
mov r1, #1
mov r2, #0xf
mov r3, #2
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, pc}
.align 2, 0
@@ -19287,7 +19287,7 @@ MOD06_02242F1C: ; 0x02242F1C
add r4, r0, #0
add r0, #0x88
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #1
mvn r1, r1
cmp r0, r1
@@ -19331,7 +19331,7 @@ _02242F6E:
add r0, r4, #0
add r0, #0x88
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #1
mvn r1, r1
cmp r0, r1
@@ -19439,7 +19439,7 @@ MOD06_02243024: ; 0x02243024
mov r1, #0
ldr r0, [r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r6, #0x74]
mov r1, #0
bl FUN_0200CCF8
@@ -19480,7 +19480,7 @@ MOD06_02243080: ; 0x02243080
add r0, r5, #0
add r0, #0x14
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x54]
ldr r1, [sp, #0xc]
add r2, r4, #0
@@ -20044,7 +20044,7 @@ MOD06_022434BC: ; 0x022434BC
ldr r0, [r4]
cmp r0, #0
beq _022434CA
- bl ErrorHandling
+ bl GF_AssertFail
_022434CA:
mov r0, #0
str r0, [r4]
@@ -20265,7 +20265,7 @@ MOD06_02243694: ; 0x02243694
ldr r0, _022436C0 ; =0x12345678
cmp r1, r0
beq _022436A6
- bl ErrorHandling
+ bl GF_AssertFail
_022436A6:
ldr r2, _022436C4 ; =0x000008CC
ldr r5, [r4, #4]
@@ -22907,7 +22907,7 @@ MOD06_02244AEC: ; 0x02244AEC
ldrb r0, [r0, #0x10]
cmp r0, #4
bls _02244B18
- bl ErrorHandling
+ bl GF_AssertFail
_02244B18:
add r0, sp, #0x80
ldrb r6, [r0, #0x10]
@@ -23537,11 +23537,11 @@ MOD06_02244F84: ; 0x02244F84
add r7, r0, #0
add r0, r5, #0
mov r1, #1
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
str r0, [sp]
add r0, r7, #0
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
mov r1, #0x32
add r5, r0, #0
add r0, r4, #0
@@ -23683,7 +23683,7 @@ _02245098:
lsr r4, r0, #0x10
cmp r4, #0xc
blo _02245104
- bl ErrorHandling
+ bl GF_AssertFail
_02245104:
lsl r1, r4, #2
add r0, sp, #4
@@ -23716,7 +23716,7 @@ _02245132:
lsr r6, r0, #0x10
cmp r6, #0x24
blo _02245148
- bl ErrorHandling
+ bl GF_AssertFail
_02245148:
lsl r0, r6, #0x18
lsr r2, r0, #0x16
@@ -23962,7 +23962,7 @@ _02245302:
str r0, [r5, #0x10]
b _02245316
_02245312:
- bl ErrorHandling
+ bl GF_AssertFail
_02245316:
ldr r0, [sp]
str r0, [r5, #8]
@@ -24040,7 +24040,7 @@ _02245392:
ldr r1, [r5, #0x2c]
bl MOD05_021F4BD0
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -24454,7 +24454,7 @@ _022456DC:
mov r4, #5
b _022456E4
_022456E0:
- bl ErrorHandling
+ bl GF_AssertFail
_022456E4:
add r0, r4, #0
pop {r4, pc}
@@ -24553,7 +24553,7 @@ _02245790:
str r0, [r1]
b _022457A0
_0224579C:
- bl ErrorHandling
+ bl GF_AssertFail
_022457A0:
mov r0, #0
pop {r3, pc}
@@ -24589,7 +24589,7 @@ MOD06_022457CC: ; 0x022457CC
add r5, r0, #0
cmp r4, #3
blo _022457DC
- bl ErrorHandling
+ bl GF_AssertFail
_022457DC:
ldr r0, [r5, #0xc]
bl FUN_0202A9B0
@@ -24611,7 +24611,7 @@ MOD06_022457F8: ; 0x022457F8
add r5, r0, #0
cmp r4, #3
blo _02245808
- bl ErrorHandling
+ bl GF_AssertFail
_02245808:
ldr r0, [r5, #0xc]
bl FUN_0202A9B0
@@ -25141,7 +25141,7 @@ _02245BF2:
cmp r2, r5
blt _02245BB6
_02245BFA:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -25173,7 +25173,7 @@ _02245C2A:
cmp r2, r3
blt _02245C18
_02245C32:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_start MOD06_02245C38
@@ -25203,7 +25203,7 @@ _02245C5E:
cmp r2, r3
blt _02245C4C
_02245C66:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_start MOD06_02245C6C
@@ -25262,7 +25262,7 @@ _02245CCC:
cmp r2, r5
blt _02245C8E
_02245CD4:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
@@ -25293,7 +25293,7 @@ _02245D02:
cmp r2, r3
blt _02245CF0
_02245D0A:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_start MOD06_02245D10
@@ -25323,7 +25323,7 @@ _02245D36:
cmp r2, r3
blt _02245D24
_02245D3E:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_start MOD06_02245D44
@@ -25381,7 +25381,7 @@ _02245DA2:
cmp r2, r5
blt _02245D66
_02245DAA:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -25441,7 +25441,7 @@ _02245E12:
cmp r2, r5
blt _02245DD6
_02245E1A:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -25510,7 +25510,7 @@ _02245E3E:
bl FUN_0201FF84
add r4, r0, #0
bne _02245EA6
- bl ErrorHandling
+ bl GF_AssertFail
_02245EA6:
add r0, r4, #0
add sp, #0x70
@@ -28280,7 +28280,7 @@ _02247392:
bl FUN_0201FF84
add r4, r0, #0
bne _022473BE
- bl ErrorHandling
+ bl GF_AssertFail
_022473BE:
add r0, r4, #0
add sp, #0x70
@@ -28438,7 +28438,7 @@ _022474E4:
_022474EC:
cmp r5, #4
blt _022474F4
- bl ErrorHandling
+ bl GF_AssertFail
_022474F4:
mov r0, #0x72
mov r5, #0
@@ -28474,7 +28474,7 @@ _02247528:
_02247530:
cmp r5, #4
blt _02247538
- bl ErrorHandling
+ bl GF_AssertFail
_02247538:
add r0, r6, #0
bl NARC_dtor
@@ -28490,7 +28490,7 @@ MOD06_02247544: ; 0x02247544
bl NARC_AllocAndReadWholeMember
add r1, r5, #0
add r4, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r1, [r5]
mov r0, #3
ldr r1, [r1, #0xc]
@@ -28513,7 +28513,7 @@ MOD06_0224756C: ; 0x0224756C
bl NARC_AllocAndReadWholeMember
add r1, r4, #0
add r6, r0, #0
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r3, [r4]
mov r0, #0
str r0, [sp]
@@ -28551,7 +28551,7 @@ MOD06_022475A4: ; 0x022475A4
bl NARC_AllocAndReadWholeMember
add r1, r4, #0
add r6, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r3, [r4]
add r0, r5, #0
add r2, r3, #0
@@ -28656,7 +28656,7 @@ MOD06_0224767C: ; 0x0224767C
ldr r0, [r4, r0]
cmp r0, #0
beq _0224768E
- bl ErrorHandling
+ bl GF_AssertFail
_0224768E:
ldr r0, _022476A0 ; =MOD06_022476D4
add r1, r4, #0
@@ -28678,7 +28678,7 @@ MOD06_022476A4: ; 0x022476A4
ldr r0, [r4, r0]
cmp r0, #0
bne _022476B6
- bl ErrorHandling
+ bl GF_AssertFail
_022476B6:
mov r0, #0x86
lsl r0, r0, #2
@@ -28805,7 +28805,7 @@ MOD06_0224778C: ; 0x0224778C
bl AllocFromHeap
add r4, r0, #0
bne _022477A8
- bl ErrorHandling
+ bl GF_AssertFail
_022477A8:
mov r1, #0
add r0, r6, #0
@@ -28870,7 +28870,7 @@ MOD06_02247808: ; 0x02247808
bl FUN_020094F0
bl FUN_02009C5C
mov r1, #1
- bl FUN_020B1A14
+ bl NNS_G2dGetImageLocation
mov r1, #0x32
add r5, r0, #0
add r0, r4, #0
@@ -28923,7 +28923,7 @@ MOD06_02247860: ; 0x02247860
add r1, r6, #0
bl FUN_02009E54
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r5, r0, #0
add r0, r4, #0
mov r1, #0x20
@@ -28974,7 +28974,7 @@ _022478E6:
_022478EE:
cmp r0, #4
blt _022478F6
- bl ErrorHandling
+ bl GF_AssertFail
_022478F6:
mov r0, #0x1a
lsl r0, r0, #4
@@ -29011,7 +29011,7 @@ _02247930:
_02247938:
cmp r0, #3
blt _02247940
- bl ErrorHandling
+ bl GF_AssertFail
_02247940:
mov r0, #0x69
lsl r0, r0, #2
@@ -29048,7 +29048,7 @@ _0224797A:
_02247982:
cmp r0, #4
blt _0224798A
- bl ErrorHandling
+ bl GF_AssertFail
_0224798A:
pop {r3, r4, r5, pc}
@@ -30697,7 +30697,7 @@ MOD06_02248634: ; 0x02248634
bl AllocFromHeapAtEnd
add r4, r0, #0
bne _02248644
- bl ErrorHandling
+ bl GF_AssertFail
_02248644:
add r0, r4, #0
mov r1, #0
@@ -30891,7 +30891,7 @@ _022487AC:
lsr r4, r0, #0x10
cmp r4, #0x64
blo _022487C4
- bl ErrorHandling
+ bl GF_AssertFail
_022487C4:
cmp r4, #0x1e
bhs _022487D2
@@ -30973,7 +30973,7 @@ MOD06_0224884C: ; 0x0224884C
add r5, r0, #0
cmp r6, #4
blo _0224885C
- bl ErrorHandling
+ bl GF_AssertFail
_0224885C:
add r0, r5, #0
mov r1, #0x14
@@ -30992,7 +30992,7 @@ _0224886C:
mov r0, #0x73
add r1, r6, #0
add r3, r5, #0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4]
str r5, [r4, #0x10]
str r6, [r4, #0xc]
@@ -31284,7 +31284,7 @@ CreateInGameTradeMon: ; 0x022489D4
bl MonIsShiny
cmp r0, #0
beq _02248B08
- bl ErrorHandling
+ bl GF_AssertFail
_02248B08:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -31596,7 +31596,7 @@ MOD06_02248D00: ; 0x02248D00
cmp r4, #9
blo _02248D5A
_02248D56:
- bl ErrorHandling
+ bl GF_AssertFail
_02248D5A:
add r0, r4, #0
add sp, #0xc
@@ -31619,7 +31619,7 @@ MOD06_02248D60: ; 0x02248D60
ldrb r0, [r0]
cmp r0, #5
blo _02248D84
- bl ErrorHandling
+ bl GF_AssertFail
_02248D84:
add r0, sp, #4
ldrb r0, [r0]
@@ -31983,7 +31983,7 @@ MOD06_02249018: ; 0x02249018
add r4, r0, #0
cmp r4, #8
bls _02249028
- bl ErrorHandling
+ bl GF_AssertFail
_02249028:
ldr r2, _02249034 ; =0x02251738
sub r1, r4, #1
@@ -32019,7 +32019,7 @@ _0224905E: ; jump table
.short _02249096 - _0224905E - 2 ; case 2
.short _0224909A - _0224905E - 2 ; case 3
_02249066:
- bl ErrorHandling
+ bl GF_AssertFail
_0224906A:
bl GF_RTC_GetTimeOfDay
cmp r0, #0
@@ -32286,12 +32286,12 @@ _02249244:
ldr r0, [sp, #4]
cmp r0, #0
bne _02249254
- bl ErrorHandling
+ bl GF_AssertFail
_02249254:
ldr r0, [sp, #4]
cmp r0, #0xc
bls _0224925E
- bl ErrorHandling
+ bl GF_AssertFail
_0224925E:
ldr r0, [sp, #4]
ldr r3, _022492A8 ; =0x0225181C
@@ -32641,12 +32641,12 @@ MOD06_022494E4: ; 0x022494E4
ldr r0, [r5, r0]
mov r1, #1
lsl r2, r2, #0x10
- bl FUN_020BC02C
+ bl NNSi_G3dModifyPolygonAttrMask
mov r0, #0x49
lsl r0, r0, #2
ldr r0, [r5, r0]
add r1, r4, #0
- bl FUN_020BBA34
+ bl NNS_G3dMdlSetMdlAlphaAll
pop {r3, r4, r5, pc}
thumb_func_start MOD06_02249508
@@ -33786,7 +33786,7 @@ _02249DD6:
_02249DEC:
cmp r4, #0
bne _02249DF4
- bl ErrorHandling
+ bl GF_AssertFail
_02249DF4:
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -33846,7 +33846,7 @@ _02249E40:
_02249E52:
cmp r4, #0
bne _02249E5A
- bl ErrorHandling
+ bl GF_AssertFail
_02249E5A:
add r0, r4, #0
pop {r4, pc}
@@ -34087,10 +34087,10 @@ _0224A000:
ldr r0, [r4, #0x18]
mov r1, #1
lsl r2, r2, #0x10
- bl FUN_020BC02C
+ bl NNSi_G3dModifyPolygonAttrMask
ldr r0, [r4, #0x18]
ldr r1, [r4, #0xc]
- bl FUN_020BBA34
+ bl NNS_G3dMdlSetMdlAlphaAll
ldr r0, [r4, #0x14]
add r1, sp, #0x30
add r2, sp, #0
@@ -34240,7 +34240,7 @@ _0224A124:
mov r0, #5
pop {r3, pc}
_0224A128:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
@@ -34683,7 +34683,7 @@ MOD06_0224A478: ; 0x0224A478
sub r1, r1, #1
str r1, [r0]
bpl _0224A486
- bl ErrorHandling
+ bl GF_AssertFail
_0224A486:
pop {r3, pc}
@@ -35048,13 +35048,13 @@ MOD06_0224A710: ; 0x0224A710
add r0, r4, #4
ldr r1, [r2, #0x18]
ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4]
ldr r3, [r5, #0x14]
ldr r1, [r3, #0x18]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x10]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #0x14]
add r0, r4, #0
add r0, #0x18
@@ -35063,7 +35063,7 @@ MOD06_0224A710: ; 0x0224A710
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
ldr r0, [r5, #0x18]
bl FUN_02058448
str r0, [r5, #4]
@@ -35108,7 +35108,7 @@ MOD06_0224A7C8: ; 0x0224A7C8
ldr r4, [r1, #0x1c]
ldr r1, [r4]
add r0, r4, #4
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
add r0, r4, #0
bl MOD05_021E4C00
pop {r4, pc}
@@ -35970,7 +35970,7 @@ MOD06_0224AE3C: ; 0x0224AE3C
sub r1, r1, #1
str r1, [r0]
bpl _0224AE4A
- bl ErrorHandling
+ bl GF_AssertFail
_0224AE4A:
pop {r3, pc}
@@ -36429,13 +36429,13 @@ MOD06_0224B188: ; 0x0224B188
add r0, r4, #4
ldr r1, [r2, #0x18]
ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4]
ldr r3, [r5, #8]
ldr r1, [r3, #0x18]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x10]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #8]
add r0, r4, #0
add r0, #0x18
@@ -36444,7 +36444,7 @@ MOD06_0224B188: ; 0x0224B188
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r6, #0
add r1, sp, #0
bl FUN_0206477C
@@ -36464,7 +36464,7 @@ MOD06_0224B200: ; 0x0224B200
ldr r4, [r1]
ldr r1, [r4]
add r0, r4, #4
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
add r0, r4, #0
bl MOD05_021E4C00
pop {r4, pc}
@@ -36635,13 +36635,13 @@ MOD06_0224B324: ; 0x0224B324
add r0, r4, #4
ldr r1, [r2, #0x18]
ldr r2, [r2, #0xc]
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4]
ldr r3, [r5, #8]
ldr r1, [r3, #0x18]
ldr r2, [r3, #0xc]
ldr r3, [r3, #0x10]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #8]
add r0, r4, #0
add r0, #0x18
@@ -36650,7 +36650,7 @@ MOD06_0224B324: ; 0x0224B324
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r6, #0
add r1, sp, #0
bl FUN_0206477C
@@ -36670,7 +36670,7 @@ MOD06_0224B39C: ; 0x0224B39C
ldr r4, [r1]
ldr r1, [r4]
add r0, r4, #4
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
add r0, r4, #0
bl MOD05_021E4C00
pop {r4, pc}
@@ -38573,7 +38573,7 @@ MOD06_0224C27C: ; 0x0224C27C
add sp, #0x20
pop {r4, r5, r6, pc}
_0224C2E8:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x20
pop {r4, r5, r6, pc}
.align 2, 0
@@ -38617,14 +38617,14 @@ _0224C328:
bl MOD05_021F4BD0
str r0, [sp, #0x18]
ldr r0, [r6]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
add r7, r0, r1
ldr r0, [sp, #0x18]
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -38651,7 +38651,7 @@ _0224C328:
bl FUN_0204A9F0
cmp r0, #0
bne _0224C390
- bl ErrorHandling
+ bl GF_AssertFail
_0224C390:
ldr r0, [sp, #0x1c]
bl MOD05_021E7EC8
@@ -38774,7 +38774,7 @@ _0224C476:
mov r2, #0
bl MOD05_021DA4EC
ldr r0, _0224C51C ; =0x0000048E
- bl PlayBGM
+ bl PlaySound
ldrb r0, [r4, #0xf]
add r0, r0, #1
strb r0, [r4, #0xf]
@@ -38865,7 +38865,7 @@ MOD06_0224C520: ; 0x0224C520
bl FUN_0204640C
pop {r4, r5, r6, pc}
_0224C552:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
.align 2, 0
_0224C558: .word 0x000001F2
@@ -38901,7 +38901,7 @@ _0224C590:
ldr r1, [r5, #0x2c]
bl MOD05_021F4BD0
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r2, sp, #0x18
mov r3, #0
@@ -38913,7 +38913,7 @@ _0224C590:
bl FUN_0204A9F0
cmp r0, #0
bne _0224C5BA
- bl ErrorHandling
+ bl GF_AssertFail
_0224C5BA:
ldr r0, [sp, #0x18]
bl MOD05_021E7EC8
@@ -38949,7 +38949,7 @@ _0224C5EE:
_0224C5FC:
cmp r1, #0
bne _0224C604
- bl ErrorHandling
+ bl GF_AssertFail
_0224C604:
ldrb r2, [r4, #1]
ldr r0, [r5, #0x50]
@@ -39050,7 +39050,7 @@ MOD06_0224C678: ; 0x0224C678
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_0224C6DA:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -39670,7 +39670,7 @@ MOD06_0224CB90: ; 0x0224CB90
bl AllocFromHeapAtEnd
add r4, r0, #0
bne _0224CBA0
- bl ErrorHandling
+ bl GF_AssertFail
_0224CBA0:
add r0, r4, #0
mov r1, #0
@@ -39722,7 +39722,7 @@ _0224CBF2:
lsr r5, r0, #0x10
cmp r5, #0x10
blo _0224CC02
- bl ErrorHandling
+ bl GF_AssertFail
_0224CC02:
lsl r0, r5, #2
ldr r0, [r4, r0]
@@ -39753,7 +39753,7 @@ MOD06_0224CC24: ; 0x0224CC24
ldr r0, _0224CC5C ; =0x0000FFFF
cmp r1, r0
bne _0224CC40
- bl ErrorHandling
+ bl GF_AssertFail
_0224CC40:
mov r0, #0x6a
mov r1, #8
@@ -39780,7 +39780,7 @@ MOD06_0224CC60: ; 0x0224CC60
lsr r4, r0, #0x10
cmp r4, #2
blo _0224CC76
- bl ErrorHandling
+ bl GF_AssertFail
_0224CC76:
cmp r4, #0
bne _0224CC80
@@ -39853,7 +39853,7 @@ _0224CCEA:
str r0, [sp, #0x10]
cmp r0, r1
blt _0224CD0C
- bl ErrorHandling
+ bl GF_AssertFail
_0224CD0C:
lsr r2, r4, #0x1f
lsl r1, r4, #0x1e
@@ -40892,7 +40892,7 @@ MOD06_0224D46C: ; 0x0224D46C
bl FUN_0200CCA4
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x64
mov r1, #0xb
bl String_ctor
@@ -41135,7 +41135,7 @@ _0224D6FE:
sub r0, r4, r0
pop {r4, r5, r6, pc}
_0224D702:
- bl ErrorHandling
+ bl GF_AssertFail
add r0, r4, #0
pop {r4, r5, r6, pc}
.align 2, 0
@@ -41794,7 +41794,7 @@ MOD06_0224DC5C: ; 0x0224DC5C
str r3, [r5, #8]
add r0, r2, #0
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #4]
mov r0, #0x13
str r0, [sp]
@@ -41813,7 +41813,7 @@ MOD06_0224DC5C: ; 0x0224DC5C
bl FUN_02019064
ldr r0, [r5, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #4]
mov r1, #0
mov r2, #1
@@ -41855,11 +41855,11 @@ MOD06_0224DCD8: ; 0x0224DCD8
add r6, r2, #0
cmp r0, #0
beq _0224DCEC
- bl ErrorHandling
+ bl GF_AssertFail
_0224DCEC:
ldr r0, [r5, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r1, r6, #0
bl StringDup
@@ -42039,7 +42039,7 @@ MOD06_0224DE60: ; 0x0224DE60
beq _0224DED2
add r0, r3, #0
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r6, #4]
mov r0, #0xb
str r0, [sp]
@@ -42077,7 +42077,7 @@ _0224DEA8:
str r0, [r6, #0xc]
ldr r0, [r6, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #1
str r0, [r6]
_0224DED2:
@@ -42148,7 +42148,7 @@ MOD06_0224DF1C: ; 0x0224DF1C
bl BufferIntegerAsString
ldr r0, [r5, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r7, #0
add r6, r5, #0
add r4, r7, #0
@@ -42214,7 +42214,7 @@ _0224DFC0:
add r2, #0x14
str r0, [r5, r2]
ldr r0, [sp, #0x14]
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #4]
mov r0, #1
str r0, [sp]
@@ -42332,7 +42332,7 @@ _0224E084:
mov r1, #0
ldr r0, _0224E16C ; =MOD6_022523A0
add r2, r1, #0
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #8]
ldr r0, [r5, #4]
mov r1, #0
@@ -42445,7 +42445,7 @@ _0224E1C0:
mov r1, #0
ldr r0, [r6, #8]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r6, #4]
bl FUN_02019570
ldr r0, [r6, #4]
@@ -42463,7 +42463,7 @@ MOD06_0224E1E4: ; 0x0224E1E4
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #8]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #0
add r4, r0, #0
mvn r1, r1
@@ -42471,7 +42471,7 @@ MOD06_0224E1E4: ; 0x0224E1E4
bne _0224E22A
ldr r0, [r5, #8]
add r1, sp, #0
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
mov r2, #0x4b
add r0, sp, #0
lsl r2, r2, #2
@@ -42685,7 +42685,7 @@ MOD06_0224E39C: ; 0x0224E39C
ldr r0, [r4, #8]
add r1, sp, #0
mov r2, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, sp, #0
ldrh r0, [r0]
cmp r0, #0
@@ -42916,7 +42916,7 @@ MOD06_0224E520: ; 0x0224E520
bl Bag_TakeItem
cmp r0, #1
beq _0224E550
- bl ErrorHandling
+ bl GF_AssertFail
_0224E550:
pop {r4, r5, r6, pc}
.align 2, 0
@@ -42972,7 +42972,7 @@ MOD06_0224E554: ; 0x0224E554
add sp, #0x20
pop {r4, r5, r6, pc}
_0224E5C0:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x20
pop {r4, r5, r6, pc}
.align 2, 0
@@ -43012,7 +43012,7 @@ _0224E604:
ldr r1, [r6, #0x2c]
bl MOD05_021F4BD0
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -43336,7 +43336,7 @@ _0224E8A4:
add r5, r5, #1
b _0224E8AC
_0224E8A8:
- bl ErrorHandling
+ bl GF_AssertFail
_0224E8AC:
mov r3, #2
lsl r1, r5, #0x10
@@ -43392,7 +43392,7 @@ _0224E90C:
add r5, r5, #1
b _0224E914
_0224E910:
- bl ErrorHandling
+ bl GF_AssertFail
_0224E914:
mov r3, #2
lsl r1, r5, #0x10
@@ -44042,7 +44042,7 @@ MOD06_0224EDB0: ; 0x0224EDB0
add r5, r3, #0
cmp r0, #0
beq _0224EDC8
- bl ErrorHandling
+ bl GF_AssertFail
_0224EDC8:
add r0, r6, #0
add r1, sp, #0
@@ -44265,7 +44265,7 @@ _0224EF70:
add r1, #0xcc
cmp r2, #0x10
blt _0224EF44
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, pc}
.align 2, 0
@@ -44316,7 +44316,7 @@ _0224EFCC:
add r1, r4, #4
mov r2, #0
mov r3, #4
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r6, r7]
add r4, r4, #1
add r6, r6, #4
diff --git a/arm9/modules/06/include/module_06.h b/arm9/modules/06/include/module_06.h
new file mode 100644
index 00000000..d9915f00
--- /dev/null
+++ b/arm9/modules/06/include/module_06.h
@@ -0,0 +1,14 @@
+#ifndef POKEDIAMOND_MODULE_06_H
+#define POKEDIAMOND_MODULE_06_H
+
+enum MartType
+{
+ MART_ITEMS = 0,
+ MART_GOODS,
+ MART_SEALS,
+ MART_DECORATIONS = MART_GOODS,
+};
+
+void MOD06_0223D3D0(struct UnkStruct_0204639C *, struct UnkSavStruct80 *, const u16 *, enum MartType, u32);
+
+#endif //POKEDIAMOND_MODULE_06_H
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 3cef2d24..80472fdf 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -2010,7 +2010,7 @@ MOD07_02212E90: ; 0x02212E90
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0x6c
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2022,7 +2022,7 @@ MOD07_02212E90: ; 0x02212E90
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0x6c
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2034,7 +2034,7 @@ MOD07_02212E90: ; 0x02212E90
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0x6c
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2046,7 +2046,7 @@ MOD07_02212E90: ; 0x02212E90
str r0, [sp, #0xc]
ldr r2, [r4, #0xc]
mov r0, #0x6c
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
ldr r0, [r4]
@@ -2055,7 +2055,7 @@ MOD07_02212E90: ; 0x02212E90
add r3, r2, #0
str r0, [sp, #4]
mov r0, #0x6c
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0
ldr r0, [r4, #8]
add r2, r1, #0
@@ -3155,7 +3155,7 @@ _0221380C: .word 0x00000B58
thumb_func_start MOD07_02213810
MOD07_02213810: ; 0x02213810
push {r4, lr}
- ldr r3, _02213830 ; =UNK_021064B8
+ ldr r3, _02213830 ; =NNS_GfdDefaultFuncAllocTexVram
mov r2, #0
ldr r3, [r3]
blx r3
@@ -3163,18 +3163,18 @@ MOD07_02213810: ; 0x02213810
bl FUN_0201327C
cmp r4, #0
bne _02213828
- bl ErrorHandling
+ bl GF_AssertFail
_02213828:
lsl r0, r4, #0x10
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02213830: .word UNK_021064B8
+_02213830: .word NNS_GfdDefaultFuncAllocTexVram
thumb_func_start MOD07_02213834
MOD07_02213834: ; 0x02213834
push {r4, lr}
- ldr r3, _02213854 ; =UNK_021064C0
+ ldr r3, _02213854 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r2, #1
ldr r3, [r3]
blx r3
@@ -3182,13 +3182,13 @@ MOD07_02213834: ; 0x02213834
bl FUN_020132BC
cmp r4, #0
bne _0221384C
- bl ErrorHandling
+ bl GF_AssertFail
_0221384C:
lsl r0, r4, #0x10
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02213854: .word UNK_021064C0
+_02213854: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD07_02213858
MOD07_02213858: ; 0x02213858
@@ -3299,7 +3299,7 @@ MOD07_02213924: ; 0x02213924
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
mov r0, #0x14
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3311,7 +3311,7 @@ MOD07_02213924: ; 0x02213924
str r0, [sp, #0xc]
ldr r2, [r5, #0xc]
mov r0, #0x14
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r2, [r5]
mov r0, #0x14
ldr r2, [r2, #0x24]
@@ -3319,7 +3319,7 @@ MOD07_02213924: ; 0x02213924
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x10
add r4, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r2, [sp, #0x10]
mov r0, #3
ldr r1, [r2, #0xc]
@@ -4858,7 +4858,7 @@ _0221459E:
mov r1, #0xa
mov r2, #0
mov r3, #2
- bl FUN_020196F4
+ bl FillWindowPixelRect
lsl r0, r5, #0x10
lsr r0, r0, #0x10
str r0, [sp]
@@ -4868,7 +4868,7 @@ _0221459E:
mov r1, #9
mov r2, #0
mov r3, #3
- bl FUN_020196F4
+ bl FillWindowPixelRect
lsl r0, r5, #0x10
lsr r0, r0, #0x10
str r0, [sp]
@@ -4878,7 +4878,7 @@ _0221459E:
mov r1, #0xa
mov r2, #0
mov r3, #5
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
@@ -4900,19 +4900,19 @@ MOD07_02214600: ; 0x02214600
mov r1, #0
str r2, [sp, #0xc]
str r3, [sp, #0x10]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, r4
add r0, #0x10
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, r4
add r0, #0x20
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, r4
add r0, #0x30
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x28]
ldr r1, [sp, #8]
str r0, [sp]
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index b6af83a9..a02c3f48 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -110,7 +110,7 @@ _02211F06:
strh r0, [r1]
b _02211F18
_02211F14:
- bl ErrorHandling
+ bl GF_AssertFail
_02211F18:
ldr r2, [sp, #0x10]
add r0, r5, #0
@@ -144,7 +144,7 @@ _02211F40:
strh r0, [r1]
b _02211F52
_02211F4E:
- bl ErrorHandling
+ bl GF_AssertFail
_02211F52:
add r0, r4, #0
bl FUN_0200CAB4
@@ -162,7 +162,7 @@ MOD08_02211F5C: ; 0x02211F5C
bne _02211F78
cmp r4, #0
bne _02211F74
- bl ErrorHandling
+ bl GF_AssertFail
_02211F74:
mov r0, #0
pop {r3, r4, r5, pc}
@@ -187,7 +187,7 @@ _02211F78:
cmp r0, #0
bne _02211FAC
bne _02211FA8
- bl ErrorHandling
+ bl GF_AssertFail
_02211FA8:
mov r0, #0
pop {r3, r4, r5, pc}
@@ -235,7 +235,7 @@ MOD08_02211FF0: ; 0x02211FF0
add r4, r1, #0
cmp r5, #0
bne _02211FFE
- bl ErrorHandling
+ bl GF_AssertFail
_02211FFE:
str r4, [r5, #8]
pop {r3, r4, r5, pc}
@@ -246,7 +246,7 @@ MOD08_02212004: ; 0x02212004
push {r4, lr}
add r4, r0, #0
bne _0221200E
- bl ErrorHandling
+ bl GF_AssertFail
_0221200E:
ldr r0, [r4, #8]
pop {r4, pc}
@@ -257,7 +257,7 @@ MOD08_02212014: ; 0x02212014
push {r4, lr}
add r4, r0, #0
bne _0221201E
- bl ErrorHandling
+ bl GF_AssertFail
_0221201E:
ldr r0, [r4]
pop {r4, pc}
@@ -412,7 +412,7 @@ _02212096:
ldr r0, [r0]
cmp r0, #0
bne _02212148
- bl ErrorHandling
+ bl GF_AssertFail
_02212148:
ldr r0, [sp, #4]
mov r5, #0
@@ -605,7 +605,7 @@ _022122A6:
cmp r0, #0
bne _022122C6
bne _022122C0
- bl ErrorHandling
+ bl GF_AssertFail
_022122C0:
add sp, #0x3c
mov r0, #0
@@ -737,7 +737,7 @@ MOD08_022123B0: ; 0x022123B0
cmp r0, #0
bne _022123C2
bne _022123BE
- bl ErrorHandling
+ bl GF_AssertFail
_022123BE:
mov r0, #0
pop {r3, pc}
@@ -891,7 +891,7 @@ MOD08_02212498: ; 0x02212498
add r4, r0, #0
cmp r5, #0xa
blt _022124A6
- bl ErrorHandling
+ bl GF_AssertFail
_022124A6:
lsl r0, r5, #2
add r0, r4, r0
@@ -906,18 +906,18 @@ MOD08_022124B0: ; 0x022124B0
add r5, r0, #0
cmp r4, #0xa
blt _022124BE
- bl ErrorHandling
+ bl GF_AssertFail
_022124BE:
cmp r5, #0
bne _022124C6
- bl ErrorHandling
+ bl GF_AssertFail
_022124C6:
add r5, #0xdc
lsl r4, r4, #2
ldr r0, [r5, r4]
cmp r0, #0
bne _022124D4
- bl ErrorHandling
+ bl GF_AssertFail
_022124D4:
ldr r0, [r5, r4]
pop {r3, r4, r5, pc}
@@ -929,11 +929,11 @@ MOD08_022124D8: ; 0x022124D8
add r5, r0, #0
cmp r4, #5
blt _022124E6
- bl ErrorHandling
+ bl GF_AssertFail
_022124E6:
cmp r5, #0
bne _022124EE
- bl ErrorHandling
+ bl GF_AssertFail
_022124EE:
mov r0, #0x4f
lsl r0, r0, #2
@@ -942,7 +942,7 @@ _022124EE:
ldr r0, [r5, r4]
cmp r0, #0
bne _02212500
- bl ErrorHandling
+ bl GF_AssertFail
_02212500:
ldr r0, [r5, r4]
pop {r3, r4, r5, pc}
@@ -952,7 +952,7 @@ MOD08_02212504: ; 0x02212504
push {r4, lr}
add r4, r0, #0
bne _0221250E
- bl ErrorHandling
+ bl GF_AssertFail
_0221250E:
mov r0, #0x4e
lsl r0, r0, #2
@@ -985,7 +985,7 @@ MOD08_0221252C: ; 0x0221252C
bl AllocFromHeap
add r4, r0, #0
bne _02212544
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
_02212544:
@@ -1494,7 +1494,7 @@ _022128A4:
str r1, [r0, #4]
pop {r3, r4, r5, r6, r7, pc}
_022128B8:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -2079,7 +2079,7 @@ _02212D04:
ldr r4, [r1, r0]
cmp r4, #0xff
bne _02212D44
- bl ErrorHandling
+ bl GF_AssertFail
_02212D44:
sub r0, r4, #1
add sp, #0x90
@@ -2122,7 +2122,7 @@ _02212D5C:
ldr r4, [r1, r0]
cmp r4, #0xff
bne _02212D9C
- bl ErrorHandling
+ bl GF_AssertFail
_02212D9C:
add r0, r4, #0
add sp, #0x90
@@ -2369,7 +2369,7 @@ MOD08_02212F58: ; 0x02212F58
ldr r0, [r0, #0x1c]
cmp r0, #0
beq _02212F7C
- bl ErrorHandling
+ bl GF_AssertFail
_02212F7C:
ldr r0, [r5, #0x18]
mov r2, #0
@@ -2413,7 +2413,7 @@ MOD08_02212FAC: ; 0x02212FAC
ldr r0, [r0, #0x1c]
cmp r0, #0
beq _02212FD2
- bl ErrorHandling
+ bl GF_AssertFail
_02212FD2:
ldr r0, [r5, #0x18]
mov r1, #0x64
@@ -3198,7 +3198,7 @@ _02213500:
mov r0, #7
add r1, r7, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
cmp r4, #1
bne _022135AC
ldr r0, [r5]
@@ -3660,7 +3660,7 @@ _02213926:
ldr r0, [r6, r5]
cmp r0, #0
beq _0221393A
- bl ErrorHandling
+ bl GF_AssertFail
_0221393A:
mov r0, #0x15
str r7, [r6, r5]
@@ -4144,7 +4144,7 @@ MOD08_02213C94: ; 0x02213C94
ldr r2, [r2]
mov r0, #7
add r3, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [sp, #0x10]
mov r1, #1
bl MOD08_022156AC
@@ -4198,7 +4198,7 @@ _02213D18:
ldr r2, [r5]
mov r0, #7
add r3, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -4271,7 +4271,7 @@ MOD08_02213DA8: ; 0x02213DA8
bl AllocFromHeap
add r4, r0, #0
bne _02213DC0
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
_02213DC0:
@@ -4640,7 +4640,7 @@ _02214078:
add r2, #0xc4
ldr r2, [r2]
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0x66
lsl r2, r2, #2
add r1, r2, #0
@@ -4681,7 +4681,7 @@ _022140CC:
add r2, #0xc4
ldr r2, [r2]
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldrb r0, [r4, #5]
add r0, r0, #1
strb r0, [r4, #5]
@@ -5016,7 +5016,7 @@ _0221436A:
add r2, #0xc4
ldr r2, [r2]
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0x66
lsl r2, r2, #2
add r1, r2, #0
@@ -5057,7 +5057,7 @@ _022143BE:
add r2, #0xc4
ldr r2, [r2]
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #3
mov r1, #1
bl FUN_0201797C
@@ -5230,7 +5230,7 @@ MOD08_02214524: ; 0x02214524
push {r4, lr}
add r4, r0, #0
bne _0221452E
- bl ErrorHandling
+ bl GF_AssertFail
_0221452E:
mov r0, #6
lsl r0, r0, #6
@@ -5608,7 +5608,7 @@ _022147E4:
ldr r1, [r5, r1]
ldr r2, [r2]
add r3, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
b _0221482A
_02214822:
add r0, r5, #0
@@ -5630,7 +5630,7 @@ _0221482A:
add r5, #0xc4
ldr r2, [r5]
add r3, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
@@ -5932,7 +5932,7 @@ MOD08_02214A4C: ; 0x02214A4C
ldr r2, [r2]
mov r0, #7
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r4, #0
mov r1, #1
bl MOD08_022156AC
@@ -5943,7 +5943,7 @@ MOD08_02214A4C: ; 0x02214A4C
add r3, r2, #0
str r0, [sp, #4]
mov r0, #7
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r4, #0
mov r1, #2
bl MOD08_022156AC
@@ -5959,7 +5959,7 @@ MOD08_02214A4C: ; 0x02214A4C
ldr r2, [r5]
mov r0, #7
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -6523,7 +6523,7 @@ MOD08_02214ED4: ; 0x02214ED4
ldr r0, [r6, r4]
cmp r0, #0
beq _02214EFC
- bl ErrorHandling
+ bl GF_AssertFail
_02214EFC:
add r0, r5, #0
add r0, #0xc0
@@ -6535,7 +6535,7 @@ _02214EFC:
ldr r0, [r6, r4]
cmp r0, #0
bne _02214F16
- bl ErrorHandling
+ bl GF_AssertFail
_02214F16:
add r0, r5, #0
add r0, #0xc0
@@ -6953,7 +6953,7 @@ _0221521A:
ldr r0, [r5, r4]
cmp r0, #0
beq _0221524E
- bl ErrorHandling
+ bl GF_AssertFail
_0221524E:
str r6, [r5, r4]
add sp, #0x34
@@ -7009,10 +7009,10 @@ _022152A4: .word FUN_0200C644
thumb_func_start MOD08_022152A8
MOD08_022152A8: ; 0x022152A8
- ldr r3, _022152AC ; =ErrorHandling
+ ldr r3, _022152AC ; =GF_AssertFail
bx r3
.align 2, 0
-_022152AC: .word ErrorHandling
+_022152AC: .word GF_AssertFail
thumb_func_start MOD08_022152B0
MOD08_022152B0: ; 0x022152B0
@@ -7234,7 +7234,7 @@ MOD08_02215434: ; 0x02215434
beq _02215456
cmp r5, r2
beq _02215452
- bl ErrorHandling
+ bl GF_AssertFail
_02215452:
mov r0, #0
pop {r3, r4, r5, pc}
@@ -7964,7 +7964,7 @@ MOD08_02215988: ; 0x02215988
push {r4, lr}
add r4, r0, #0
bne _02215992
- bl ErrorHandling
+ bl GF_AssertFail
_02215992:
ldr r0, [r4, #4]
add r0, r4, r0
@@ -8063,7 +8063,7 @@ MOD08_02215A44: ; 0x02215A44
cmp r0, #0
ble _02215A62
bl FUN_020222AC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
_02215A62:
bl FUN_02013388
_02215A66:
@@ -8072,7 +8072,7 @@ _02215A66:
thumb_func_start MOD08_02215A68
MOD08_02215A68: ; 0x02215A68
push {r4, lr}
- ldr r3, _02215A80 ; =UNK_021064B8
+ ldr r3, _02215A80 ; =NNS_GfdDefaultFuncAllocTexVram
mov r2, #0
ldr r3, [r3]
blx r3
@@ -8082,12 +8082,12 @@ MOD08_02215A68: ; 0x02215A68
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02215A80: .word UNK_021064B8
+_02215A80: .word NNS_GfdDefaultFuncAllocTexVram
thumb_func_start MOD08_02215A84
MOD08_02215A84: ; 0x02215A84
push {r4, lr}
- ldr r3, _02215A9C ; =UNK_021064C0
+ ldr r3, _02215A9C ; =NNS_GfdDefaultFuncAllocPlttVram
mov r2, #0
ldr r3, [r3]
blx r3
@@ -8097,7 +8097,7 @@ MOD08_02215A84: ; 0x02215A84
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02215A9C: .word UNK_021064C0
+_02215A9C: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD08_02215AA0
MOD08_02215AA0: ; 0x02215AA0
@@ -12531,7 +12531,7 @@ _02217BE8:
ldrsh r0, [r1, r0]
pop {r3, r4, r5, r6, r7, pc}
_02217BF8:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -12724,7 +12724,7 @@ MOD08_02217D44: ; 0x02217D44
str r3, [sp]
cmp r5, #0
bne _02217D56
- bl ErrorHandling
+ bl GF_AssertFail
_02217D56:
cmp r4, r7
bls _02217D62
@@ -12764,7 +12764,7 @@ MOD08_02217D98: ; 0x02217D98
push {r4, lr}
add r4, r0, #0
bne _02217DA2
- bl ErrorHandling
+ bl GF_AssertFail
_02217DA2:
ldr r0, [r4, #4]
cmp r0, #0
@@ -12792,7 +12792,7 @@ _02217DA2:
ldr r2, [r4, #0xc]
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _02217E2C ; =UNK_020FFA38
+ ldr r0, _02217E2C ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -12813,7 +12813,7 @@ _02217DA2:
lsl r0, r0, #1
add r0, r0, #1
lsl r1, r0, #1
- ldr r0, _02217E2C ; =UNK_020FFA38
+ ldr r0, _02217E2C ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -12834,7 +12834,7 @@ _02217E26:
mov r0, #0
pop {r4, pc}
nop
-_02217E2C: .word UNK_020FFA38
+_02217E2C: .word FX_SinCosTable_
thumb_func_start MOD08_02217E30
MOD08_02217E30: ; 0x02217E30
@@ -12890,7 +12890,7 @@ MOD08_02217E80: ; 0x02217E80
str r2, [sp]
cmp r5, #0
bne _02217E94
- bl ErrorHandling
+ bl GF_AssertFail
_02217E94:
strh r4, [r5]
strh r6, [r5, #2]
@@ -12924,7 +12924,7 @@ MOD08_02217ECC: ; 0x02217ECC
push {r4, lr}
add r4, r0, #0
bne _02217ED6
- bl ErrorHandling
+ bl GF_AssertFail
_02217ED6:
ldr r0, [r4, #4]
cmp r0, #0
@@ -13037,11 +13037,11 @@ MOD08_02217F9C: ; 0x02217F9C
add r4, r1, #0
cmp r5, #0
bne _02217FAA
- bl ErrorHandling
+ bl GF_AssertFail
_02217FAA:
cmp r4, #0
bne _02217FB2
- bl ErrorHandling
+ bl GF_AssertFail
_02217FB2:
add r0, r5, #0
bl MOD08_02217ECC
@@ -13097,7 +13097,7 @@ MOD08_02218008: ; 0x02218008
add r4, r3, #0
cmp r5, #0
bne _0221801A
- bl ErrorHandling
+ bl GF_AssertFail
_0221801A:
str r6, [r5]
lsl r0, r6, #0xc
@@ -13119,7 +13119,7 @@ MOD08_02218030: ; 0x02218030
add r4, r3, #0
cmp r5, #0
bne _02218042
- bl ErrorHandling
+ bl GF_AssertFail
_02218042:
str r6, [r5]
lsl r6, r6, #0xc
@@ -13137,7 +13137,7 @@ MOD08_02218058: ; 0x02218058
push {r4, lr}
add r4, r0, #0
bne _02218062
- bl ErrorHandling
+ bl GF_AssertFail
_02218062:
ldr r0, [r4, #4]
cmp r0, #0
@@ -13161,7 +13161,7 @@ MOD08_02218080: ; 0x02218080
push {r4, lr}
add r4, r0, #0
bne _0221808A
- bl ErrorHandling
+ bl GF_AssertFail
_0221808A:
ldr r0, [r4, #4]
cmp r0, #0
@@ -13201,7 +13201,7 @@ MOD08_022180C4: ; 0x022180C4
push {r4, lr}
add r4, r0, #0
bne _022180CE
- bl ErrorHandling
+ bl GF_AssertFail
_022180CE:
ldr r0, [r4, #4]
cmp r0, #0
@@ -13221,7 +13221,7 @@ _022180CE:
lsl r0, r0, #1
add r0, r0, #1
lsl r1, r0, #1
- ldr r0, _0221811C ; =UNK_020FFA38
+ ldr r0, _0221811C ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -13242,7 +13242,7 @@ _02218116:
mov r0, #0
pop {r4, pc}
nop
-_0221811C: .word UNK_020FFA38
+_0221811C: .word FX_SinCosTable_
thumb_func_start MOD08_02218120
MOD08_02218120: ; 0x02218120
@@ -13253,7 +13253,7 @@ MOD08_02218120: ; 0x02218120
add r7, r3, #0
cmp r4, #0
bne _02218132
- bl ErrorHandling
+ bl GF_AssertFail
_02218132:
ldr r0, [sp, #0x18]
add r1, r6, #0
@@ -13289,7 +13289,7 @@ MOD08_02218170: ; 0x02218170
push {r4, lr}
add r4, r0, #0
bne _0221817A
- bl ErrorHandling
+ bl GF_AssertFail
_0221817A:
ldr r0, [r4, #4]
cmp r0, #0
@@ -13325,7 +13325,7 @@ MOD08_022181A8: ; 0x022181A8
str r3, [sp]
cmp r5, #0
bne _022181BA
- bl ErrorHandling
+ bl GF_AssertFail
_022181BA:
ldr r0, [sp, #0x20]
add r1, sp, #8
@@ -13380,7 +13380,7 @@ MOD08_02218224: ; 0x02218224
push {r4, lr}
add r4, r0, #0
bne _0221822E
- bl ErrorHandling
+ bl GF_AssertFail
_0221822E:
ldr r0, [r4, #4]
cmp r0, #0
@@ -13602,7 +13602,7 @@ MOD08_022183C0: ; 0x022183C0
add r7, r3, #0
cmp r5, #0
bne _022183D2
- bl ErrorHandling
+ bl GF_AssertFail
_022183D2:
str r7, [r5, #4]
ldr r0, [sp, #0x18]
@@ -13625,7 +13625,7 @@ MOD08_022183F0: ; 0x022183F0
push {r4, lr}
add r4, r0, #0
bne _022183FA
- bl ErrorHandling
+ bl GF_AssertFail
_022183FA:
ldr r0, [r4, #0xc]
cmp r0, #0
@@ -14094,7 +14094,7 @@ MOD08_02218740: ; 0x02218740
add r7, r3, #0
cmp r5, #0
bne _02218752
- bl ErrorHandling
+ bl GF_AssertFail
_02218752:
mov r0, #1
str r0, [r5, #8]
@@ -14122,7 +14122,7 @@ MOD08_02218780: ; 0x02218780
push {r4, lr}
add r4, r0, #0
bne _0221878A
- bl ErrorHandling
+ bl GF_AssertFail
_0221878A:
ldr r0, [r4, #4]
cmp r0, #0
@@ -14142,7 +14142,7 @@ MOD08_022187A4: ; 0x022187A4
push {r4, lr}
add r4, r0, #0
bne _022187AE
- bl ErrorHandling
+ bl GF_AssertFail
_022187AE:
mov r0, #0
str r0, [r4, #8]
@@ -14199,7 +14199,7 @@ MOD08_022187F4: ; 0x022187F4
bl memset
cmp r4, #0
bne _02218816
- bl ErrorHandling
+ bl GF_AssertFail
_02218816:
mov r2, #0x32
add r1, r4, #0
@@ -14211,7 +14211,7 @@ _02218816:
str r0, [r4, #0x1c]
cmp r0, #0
bne _02218830
- bl ErrorHandling
+ bl GF_AssertFail
_02218830:
mov r0, #0x62
lsl r0, r0, #4
@@ -14245,7 +14245,7 @@ MOD08_02218870: ; 0x02218870
push {r4, lr}
add r4, r0, #0
bne _0221887A
- bl ErrorHandling
+ bl GF_AssertFail
_0221887A:
add r0, r4, #0
bl MOD08_02218780
@@ -14264,7 +14264,7 @@ MOD08_02218894: ; 0x02218894
push {r4, lr}
add r4, r0, #0
bne _0221889E
- bl ErrorHandling
+ bl GF_AssertFail
_0221889E:
ldr r0, [r4, #0x1c]
bl FUN_02012988
@@ -14276,7 +14276,7 @@ MOD08_022188A8: ; 0x022188A8
push {r4, lr}
add r4, r0, #0
bne _022188B2
- bl ErrorHandling
+ bl GF_AssertFail
_022188B2:
add r0, r4, #0
bl MOD08_022187A4
@@ -14315,7 +14315,7 @@ MOD08_022188DC: ; 0x022188DC
bl AllocFromHeap
add r4, r0, #0
bne _022188F8
- bl ErrorHandling
+ bl GF_AssertFail
_022188F8:
add r0, r4, #0
mov r1, #0
@@ -14359,7 +14359,7 @@ MOD08_0221894C: ; 0x0221894C
push {r4, lr}
add r4, r0, #0
bne _02218956
- bl ErrorHandling
+ bl GF_AssertFail
_02218956:
add r0, r4, #0
bl MOD08_02218780
@@ -14378,7 +14378,7 @@ MOD08_02218970: ; 0x02218970
push {r4, lr}
add r4, r0, #0
bne _0221897A
- bl ErrorHandling
+ bl GF_AssertFail
_0221897A:
ldr r0, [r4, #0x1c]
bl FUN_02012B20
@@ -14390,7 +14390,7 @@ MOD08_02218984: ; 0x02218984
push {r4, lr}
add r4, r0, #0
bne _0221898E
- bl ErrorHandling
+ bl GF_AssertFail
_0221898E:
add r0, r4, #0
bl MOD08_022187A4
@@ -14606,7 +14606,7 @@ MOD08_02218AF8: ; 0x02218AF8
push {r4, lr}
add r4, r0, #0
bne _02218B02
- bl ErrorHandling
+ bl GF_AssertFail
_02218B02:
ldr r0, [r4]
pop {r4, pc}
@@ -14617,7 +14617,7 @@ MOD08_02218B08: ; 0x02218B08
push {r4, lr}
add r4, r0, #0
bne _02218B12
- bl ErrorHandling
+ bl GF_AssertFail
_02218B12:
ldr r0, [r4, #4]
bl FUN_0200CAB4
@@ -14636,7 +14636,7 @@ MOD08_02218B20: ; 0x02218B20
bl AllocFromHeap
add r4, r0, #0
bne _02218B38
- bl ErrorHandling
+ bl GF_AssertFail
_02218B38:
str r5, [r4, #0x18]
str r6, [r4, #8]
@@ -15003,7 +15003,7 @@ MOD08_02218DCC: ; 0x02218DCC
bl AllocFromHeap
add r4, r0, #0
bne _02218DEA
- bl ErrorHandling
+ bl GF_AssertFail
_02218DEA:
mov r0, #0
strb r0, [r4]
@@ -15585,7 +15585,7 @@ _02219228:
mov r0, #7
add r1, r6, #0
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r7, #0
mov r1, #1
bl MOD08_022156AC
@@ -15639,7 +15639,7 @@ _022192BC:
mov r0, #7
add r1, r6, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0xa
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x30]
@@ -15989,7 +15989,7 @@ _02219550:
mov r0, #7
add r1, r6, #0
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r7, #0
mov r1, #1
bl MOD08_022156AC
@@ -16043,7 +16043,7 @@ _022195EA:
mov r0, #7
add r1, r6, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0xa
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x30]
@@ -16348,7 +16348,7 @@ _02219886:
str r0, [r4, #0x28]
b _022198A4
_022198A0:
- bl ErrorHandling
+ bl GF_AssertFail
_022198A4:
ldr r0, [r4, #0x28]
mov r1, #0
@@ -16667,7 +16667,7 @@ _02219B18:
lsl r6, r6, #8
b _02219B22
_02219B1E:
- bl ErrorHandling
+ bl GF_AssertFail
_02219B22:
add r0, r5, #0
mov r1, #1
@@ -17003,7 +17003,7 @@ _02219D98:
str r0, [r6, #4]
b _02219DA8
_02219DA4:
- bl ErrorHandling
+ bl GF_AssertFail
_02219DA8:
ldr r0, [r6, #4]
cmp r0, #0
@@ -18152,7 +18152,7 @@ _0221A6CA:
add r6, r0, #0
b _0221A6EA
_0221A6E6:
- bl ErrorHandling
+ bl GF_AssertFail
_0221A6EA:
cmp r6, #0xff
bne _0221A6F6
@@ -18353,7 +18353,7 @@ _0221A866:
add r6, r0, #0
b _0221A886
_0221A882:
- bl ErrorHandling
+ bl GF_AssertFail
_0221A886:
cmp r6, #0xff
bne _0221A892
@@ -19226,7 +19226,7 @@ _0221AFC0:
add r6, r0, #0
b _0221AFE0
_0221AFDC:
- bl ErrorHandling
+ bl GF_AssertFail
_0221AFE0:
cmp r6, #0xff
bne _0221AFEC
@@ -19478,7 +19478,7 @@ _0221B1DA:
str r0, [sp, #8]
b _0221B1F0
_0221B1EC:
- bl ErrorHandling
+ bl GF_AssertFail
_0221B1F0:
add r2, r5, #0
ldr r1, [sp, #8]
@@ -19599,7 +19599,7 @@ _0221B2D8:
str r0, [sp, #8]
b _0221B2EE
_0221B2EA:
- bl ErrorHandling
+ bl GF_AssertFail
_0221B2EE:
add r2, r4, #0
ldr r1, [sp, #8]
@@ -19727,7 +19727,7 @@ _0221B3DA:
add r6, r0, #0
b _0221B3F0
_0221B3EC:
- bl ErrorHandling
+ bl GF_AssertFail
_0221B3F0:
add r0, r5, #0
add r1, r6, #0
@@ -20004,7 +20004,7 @@ _0221B622:
add r7, r0, #0
b _0221B638
_0221B634:
- bl ErrorHandling
+ bl GF_AssertFail
_0221B638:
add r0, r5, #0
mov r1, #1
@@ -20139,7 +20139,7 @@ _0221B744:
add r4, r0, #0
b _0221B758
_0221B754:
- bl ErrorHandling
+ bl GF_AssertFail
_0221B758:
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -20834,7 +20834,7 @@ _0221BCEE:
ldr r0, [r4, #0x38]
cmp r0, #0
bne _0221BCF8
- bl ErrorHandling
+ bl GF_AssertFail
_0221BCF8:
pop {r3, r4, r5, pc}
nop
@@ -21182,7 +21182,7 @@ _0221BFBE:
ldr r0, [r4, #0x38]
cmp r0, #0
bne _0221BFCA
- bl ErrorHandling
+ bl GF_AssertFail
_0221BFCA:
ldr r1, [r4, #0x14]
add r0, r5, #0
@@ -23309,7 +23309,7 @@ MOD08_0221D0EC: ; 0x0221D0EC
bl AllocFromHeap
add r4, r0, #0
bne _0221D10A
- bl ErrorHandling
+ bl GF_AssertFail
_0221D10A:
mov r0, #0
strb r0, [r4, #4]
@@ -28315,7 +28315,7 @@ MOD08_0221FA44: ; 0x0221FA44
bl AllocFromHeap
add r4, r0, #0
bne _0221FA62
- bl ErrorHandling
+ bl GF_AssertFail
_0221FA62:
mov r0, #0
strb r0, [r4, #4]
@@ -28769,7 +28769,7 @@ MOD08_0221FDE4: ; 0x0221FDE4
bl AllocFromHeap
add r4, r0, #0
bne _0221FE02
- bl ErrorHandling
+ bl GF_AssertFail
_0221FE02:
mov r0, #0
strb r0, [r4, #7]
@@ -29234,7 +29234,7 @@ MOD08_02220180: ; 0x02220180
bl AllocFromHeap
add r4, r0, #0
bne _0222019E
- bl ErrorHandling
+ bl GF_AssertFail
_0222019E:
mov r0, #0
strb r0, [r4, #1]
@@ -36026,7 +36026,7 @@ _02223A38:
add sp, #8
pop {r3, pc}
_02223A50:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #8
pop {r3, pc}
@@ -36292,7 +36292,7 @@ _02223C50:
add sp, #8
pop {r3, pc}
_02223C6A:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #8
pop {r3, pc}
.align 2, 0
@@ -38351,7 +38351,7 @@ _02224CA6:
mul r0, r1
asr r0, r0, #4
lsl r0, r0, #2
- ldr r1, _02224D70 ; =UNK_020FFA38
+ ldr r1, _02224D70 ; =FX_SinCosTable_
str r0, [sp, #0x18]
add r1, r1, r0
mov r0, #2
@@ -38371,7 +38371,7 @@ _02224CA6:
lsl r0, r1, #4
asr r6, r0, #0x10
mov r2, #3
- ldr r1, _02224D70 ; =UNK_020FFA38
+ ldr r1, _02224D70 ; =FX_SinCosTable_
ldr r0, [sp, #0x18]
lsl r2, r2, #0x10
ldrsh r0, [r1, r0]
@@ -38437,7 +38437,7 @@ _02224D50:
pop {r3, r4, r5, r6, r7, pc}
nop
_02224D6C: .word 0x00001555
-_02224D70: .word UNK_020FFA38
+_02224D70: .word FX_SinCosTable_
_02224D74: .word 0x00000000
_02224D78: .word MOD08_02224AF4
@@ -39693,7 +39693,7 @@ _022257C6:
lsr r0, r0, #0x10
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _0222586C ; =UNK_020FFA38
+ ldr r0, _0222586C ; =FX_SinCosTable_
ldr r3, [r6, #0x14]
ldrsh r0, [r0, r1]
lsl r2, r2, #0xc
@@ -39762,7 +39762,7 @@ _02225852:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
-_0222586C: .word UNK_020FFA38
+_0222586C: .word FX_SinCosTable_
_02225870: .word 0x00000132
_02225874: .word 0x00000000
_02225878: .word 0x00003FFF
@@ -40033,7 +40033,7 @@ MOD08_02225A70: ; 0x02225A70
lsr r0, r0, #0x10
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _02225B30 ; =UNK_020FFA38
+ ldr r0, _02225B30 ; =FX_SinCosTable_
lsl r2, r2, #0xc
ldrsh r0, [r0, r1]
mov r3, #0
@@ -40096,7 +40096,7 @@ _02225B2A:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
-_02225B30: .word UNK_020FFA38
+_02225B30: .word FX_SinCosTable_
_02225B34: .word 0x00000000
_02225B38: .word 0x45800000
@@ -40407,7 +40407,7 @@ _02225D8C:
lsr r0, r0, #0x10
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _02225E0C ; =UNK_020FFA38
+ ldr r0, _02225E0C ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -40459,7 +40459,7 @@ _02225E02:
pop {r4, r5, r6, r7, pc}
nop
_02225E08: .word 0x00000199
-_02225E0C: .word UNK_020FFA38
+_02225E0C: .word FX_SinCosTable_
_02225E10: .word 0x00000000
thumb_func_start MOD08_02225E14
@@ -42742,7 +42742,7 @@ MOD08_02227068: ; 0x02227068
add r3, r4, #0
ldr r1, [r1, r2]
ldr r2, [r5, #0x2c]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -42774,7 +42774,7 @@ MOD08_02227068: ; 0x02227068
add r3, r4, #0
ldr r1, [r1, r2]
ldr r2, [r5, #0x2c]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r4, r5, r6, pc}
nop
@@ -43300,7 +43300,7 @@ _02227514:
add r4, r4, #1
cmp r4, #4
blt _022274D0
- bl ErrorHandling
+ bl GF_AssertFail
add r0, r5, #0
_02227520:
pop {r4, r5, r6, pc}
@@ -43343,7 +43343,7 @@ _02227556:
mov r0, #4
pop {r3, pc}
_0222755A:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.align 2, 0
@@ -43450,7 +43450,7 @@ _02227616:
mov r5, #7
b _0222761E
_0222761A:
- bl ErrorHandling
+ bl GF_AssertFail
_0222761E:
mov r0, #0x12
lsl r0, r0, #4
@@ -44755,7 +44755,7 @@ MOD08_02228064: ; 0x02228064
add r5, r1, #0
cmp r4, #0
bne _02228072
- bl ErrorHandling
+ bl GF_AssertFail
_02228072:
add r0, r4, #0
bl MOD08_02212014
@@ -44763,7 +44763,7 @@ _02228072:
bl AllocFromHeap
add r4, r0, #0
bne _02228086
- bl ErrorHandling
+ bl GF_AssertFail
_02228086:
add r0, r4, #0
mov r1, #0
@@ -44777,7 +44777,7 @@ MOD08_02228094: ; 0x02228094
push {r4, lr}
add r4, r0, #0
bne _0222809E
- bl ErrorHandling
+ bl GF_AssertFail
_0222809E:
add r0, r4, #0
bl FreeToHeap
@@ -44989,7 +44989,7 @@ MOD08_022281F4: ; 0x022281F4
bl AllocFromHeap
cmp r0, #0
bne _0222820A
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, pc}
_0222820A:
@@ -45047,7 +45047,7 @@ MOD08_02228244: ; 0x02228244
ldr r0, [r0]
cmp r0, #0xd
blt _02228272
- bl ErrorHandling
+ bl GF_AssertFail
_02228272:
add r0, r4, #0
add r0, #0x9c
@@ -45146,7 +45146,7 @@ _022282F8:
ldr r0, [r0, #0x14]
cmp r0, #0
beq _02228332
- bl ErrorHandling
+ bl GF_AssertFail
_02228332:
add r0, r4, #0
add r0, #0x8c
@@ -45165,7 +45165,7 @@ _02228332:
ldr r0, [r0, #0x14]
cmp r0, #0
bne _0222835A
- bl ErrorHandling
+ bl GF_AssertFail
_0222835A:
ldr r0, [r6]
add r0, r0, #1
@@ -45215,7 +45215,7 @@ _02228384:
ldr r0, [r0, #0x14]
cmp r0, #0
beq _022283BE
- bl ErrorHandling
+ bl GF_AssertFail
_022283BE:
add r0, r4, #0
add r0, #0x8c
@@ -45234,7 +45234,7 @@ _022283BE:
ldr r0, [r0, #0x14]
cmp r0, #0
bne _022283E6
- bl ErrorHandling
+ bl GF_AssertFail
_022283E6:
ldr r0, [r6]
add r0, r0, #1
@@ -45284,7 +45284,7 @@ _02228410:
ldr r0, [r0, #0x14]
cmp r0, #0
beq _0222844A
- bl ErrorHandling
+ bl GF_AssertFail
_0222844A:
add r0, r4, #0
add r0, #0x8c
@@ -45303,7 +45303,7 @@ _0222844A:
ldr r0, [r0, #0x14]
cmp r0, #0
bne _02228472
- bl ErrorHandling
+ bl GF_AssertFail
_02228472:
ldr r0, [r6]
add r0, r0, #1
@@ -45353,7 +45353,7 @@ _0222849C:
ldr r0, [r0, #0x14]
cmp r0, #0
beq _022284D6
- bl ErrorHandling
+ bl GF_AssertFail
_022284D6:
add r0, r4, #0
add r0, #0x8c
@@ -45372,7 +45372,7 @@ _022284D6:
ldr r0, [r0, #0x14]
cmp r0, #0
bne _022284FE
- bl ErrorHandling
+ bl GF_AssertFail
_022284FE:
ldr r0, [r6]
add r0, r0, #1
@@ -45485,7 +45485,7 @@ MOD08_022285BC: ; 0x022285BC
mov r7, #0
cmp r0, #9
ble _022285CE
- bl ErrorHandling
+ bl GF_AssertFail
_022285CE:
ldr r0, [r6, #0x10]
mov r4, #0
@@ -45612,7 +45612,7 @@ _022286AC:
bl AllocFromHeap
add r4, r0, #0
bne _022286BC
- bl ErrorHandling
+ bl GF_AssertFail
_022286BC:
str r7, [r4]
ldr r0, [r6, #4]
@@ -45629,7 +45629,7 @@ _022286BC:
str r0, [r4, #0x14]
cmp r0, #0
bne _022286DE
- bl ErrorHandling
+ bl GF_AssertFail
_022286DE:
ldr r0, [r4, #0x14]
bl MOD08_0222A078
@@ -45856,7 +45856,7 @@ MOD08_02228880: ; 0x02228880
bl AllocFromHeap
add r4, r0, #0
bne _02228894
- bl ErrorHandling
+ bl GF_AssertFail
_02228894:
ldmia r5!, {r0, r1}
add r2, r4, #0
@@ -46681,7 +46681,7 @@ _02228E64:
ldr r0, [r5, #0x18]
cmp r0, #3
blt _02228E6E
- bl ErrorHandling
+ bl GF_AssertFail
_02228E6E:
ldr r0, [r5, #8]
add r0, r0, #1
@@ -48093,7 +48093,7 @@ MOD08_02229918: ; 0x02229918
bl MI_CpuFill8
cmp r4, #0
bne _02229936
- bl ErrorHandling
+ bl GF_AssertFail
_02229936:
add r3, r4, #0
add r3, #0x90
@@ -48184,7 +48184,7 @@ MOD08_022299E8: ; 0x022299E8
push {r4, lr}
add r4, r0, #0
bne _022299F2
- bl ErrorHandling
+ bl GF_AssertFail
_022299F2:
ldr r0, [r4, #0x1c]
cmp r0, #0
@@ -48200,7 +48200,7 @@ MOD08_02229A00: ; 0x02229A00
push {r4, lr}
add r4, r0, #0
bne _02229A0A
- bl ErrorHandling
+ bl GF_AssertFail
_02229A0A:
ldr r0, [r4, #0x28]
cmp r0, #0
@@ -48233,7 +48233,7 @@ MOD08_02229A2C: ; 0x02229A2C
push {r4, lr}
add r4, r0, #0
bne _02229A36
- bl ErrorHandling
+ bl GF_AssertFail
_02229A36:
add r0, r4, #0
add r0, #0xac
@@ -48276,7 +48276,7 @@ MOD08_02229A80: ; 0x02229A80
push {r4, lr}
add r4, r0, #0
bne _02229A8A
- bl ErrorHandling
+ bl GF_AssertFail
_02229A8A:
add r4, #0x98
ldr r0, [r4]
@@ -49118,7 +49118,7 @@ MOD08_0222A0D4: ; 0x0222A0D4
bl AllocFromHeap
add r4, r0, #0
bne _0222A0EC
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, r5, r6, pc}
_0222A0EC:
@@ -49172,7 +49172,7 @@ _0222A138:
_0222A140:
cmp r4, #0
bne _0222A148
- bl ErrorHandling
+ bl GF_AssertFail
_0222A148:
add r0, r4, #0
pop {r4, r5, r6, pc}
@@ -49234,7 +49234,7 @@ MOD08_0222A1A0: ; 0x0222A1A0
bl AllocFromHeap
add r4, r0, #0
bne _0222A1B8
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, r5, r6, pc}
_0222A1B8:
@@ -49346,7 +49346,7 @@ _0222A26C:
sub r0, r5, #5
cmp r0, #0x16
blo _0222A284
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x58
mov r0, #0
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 55a90a71..003e2dc8 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -2177,7 +2177,7 @@ MOD09_02212F8C: ; 0x02212F8C
mov r0, #0x48
mov r1, #0x16
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r2, [r5]
mov r0, #0x48
ldr r2, [r2, #0xc]
@@ -2185,7 +2185,7 @@ MOD09_02212F8C: ; 0x02212F8C
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x10
add r4, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r1, [sp, #0x10]
add r0, r5, #0
add r1, #0xc
@@ -2199,7 +2199,7 @@ MOD09_02212F8C: ; 0x02212F8C
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x10
add r4, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r1, [sp, #0x10]
add r0, r5, #0
add r1, #0xc
@@ -2279,7 +2279,7 @@ MOD09_02212F8C: ; 0x02212F8C
ldr r2, [r5, r2]
mov r0, #0x26
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r4, #0
bl FUN_0200CD64
add r2, r0, #0
@@ -3409,7 +3409,7 @@ _02213976:
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0xc
add r7, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -3922,7 +3922,7 @@ _02213D74:
ldr r0, [r4]
ldrb r1, [r4, r1]
ldr r0, [r0, #0xc]
- bl FUN_02018FF4
+ bl AllocWindows
ldr r1, _02213DDC ; =0x00002070
mov r5, #0
str r0, [r4, r1]
@@ -4150,7 +4150,7 @@ _02213F22:
bl NewString_ReadMsgData
add r6, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x28]
mov r0, #0
add r1, r6, #0
@@ -4196,7 +4196,7 @@ _02213FA6:
bl NewString_ReadMsgData
add r6, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x2c]
mov r0, #0
add r1, r6, #0
@@ -4419,7 +4419,7 @@ _0221415E:
add r0, r0, r5
lsr r1, r1, #0x18
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [sp, #0x14]
add r3, r6, #2
str r0, [sp]
@@ -4432,7 +4432,7 @@ _0221415E:
add r0, r0, r5
add r1, r7, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x10]
str r0, [sp]
@@ -4447,7 +4447,7 @@ _0221415E:
add r0, r0, r5
lsr r1, r1, #0x18
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _022141D4 ; =0x00002070
ldr r0, [r4, r0]
add r0, r0, r5
@@ -4623,7 +4623,7 @@ MOD09_022142FC: ; 0x022142FC
cmp r0, #2
bne _02214360
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r5, r0, #0
add r0, sp, #0x20
ldrh r0, [r0, #0x10]
@@ -4718,7 +4718,7 @@ MOD09_022143F8: ; 0x022143F8
ldr r0, _02214450 ; =0x00002050
mov r1, #0xf
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02214454 ; =0x00001FA8
add r1, r5, #0
ldr r0, [r4, r0]
@@ -4766,7 +4766,7 @@ MOD09_0221445C: ; 0x0221445C
bl FUN_02002E14
add r6, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r3, r0, #0
mov r0, #6
str r0, [sp]
@@ -4944,7 +4944,7 @@ _022145F4:
ldr r0, [r5, r0]
lsl r4, r6, #4
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r6, r0, #0
mov r0, #0
ldr r1, [sp, #0x10]
@@ -5070,7 +5070,7 @@ MOD09_02214694: ; 0x02214694
ldr r0, _02214780 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5179,7 +5179,7 @@ MOD09_02214790: ; 0x02214790
ldr r0, _0221487C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5289,7 +5289,7 @@ MOD09_0221488C: ; 0x0221488C
ldr r0, _0221497C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5401,7 +5401,7 @@ MOD09_0221498C: ; 0x0221498C
ldr r0, [r4, r0]
lsl r5, r5, #4
add r0, r0, r5
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5513,7 +5513,7 @@ MOD09_02214A8C: ; 0x02214A8C
ldr r0, [r4, r0]
lsl r5, r5, #4
add r0, r0, r5
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5602,7 +5602,7 @@ MOD09_02214B8C: ; 0x02214B8C
ldr r0, _02214D14 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r1, r0, #3
ldr r0, [sp, #0x14]
ldr r2, [sp, #0x10]
@@ -5843,7 +5843,7 @@ MOD09_02214DE8: ; 0x02214DE8
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -5893,7 +5893,7 @@ _02214E42:
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -5979,7 +5979,7 @@ MOD09_02214F18: ; 0x02214F18
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -6029,7 +6029,7 @@ _02214F72:
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -6166,7 +6166,7 @@ MOD09_022150C8: ; 0x022150C8
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r1, r0, r6
lsr r0, r1, #0x1f
@@ -6275,7 +6275,7 @@ MOD09_022151A8: ; 0x022151A8
bl FUN_02002E14
str r0, [sp, #0x1c]
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r1, r0, #3
ldr r0, [sp, #0x1c]
ldr r2, [sp, #0x18]
@@ -6461,7 +6461,7 @@ _02215362:
_02215368:
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _022153A8 ; =0x00001FA8
mov r1, #0x3c
ldr r0, [r4, r0]
@@ -6673,7 +6673,7 @@ MOD09_022154FC: ; 0x022154FC
mov r1, #0
lsr r2, r2, #0x10
mov r3, #0x18
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _022155C4 ; =0x00001FA8
mov r1, #0x2c
ldr r0, [r5, r0]
@@ -6748,7 +6748,7 @@ _022155EE:
ldr r0, [sp, #8]
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrh r0, [r6, #8]
cmp r0, #0
beq _0221563E
@@ -6828,7 +6828,7 @@ MOD09_0221567C: ; 0x0221567C
add r0, r0, r4
mov r2, #0x38
mov r3, #0x20
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r2, #0x40
str r2, [sp]
mov r0, #8
@@ -6838,7 +6838,7 @@ MOD09_0221567C: ; 0x0221567C
ldr r0, [r5, r0]
mov r3, #0x18
add r0, r0, r4
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #0x20
str r0, [sp]
add r0, r5, #0
@@ -6884,22 +6884,22 @@ MOD09_022156FC: ; 0x022156FC
ldr r0, _02215780 ; =0x00002070
mov r1, #0
ldr r0, [r4, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215780 ; =0x00002070
mov r1, #0
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215780 ; =0x00002070
mov r1, #0
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215780 ; =0x00002070
mov r1, #0
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r4]
add r0, r4, #0
ldrb r1, [r1, #0x11]
@@ -7030,7 +7030,7 @@ _02215830:
mov r4, #8
_02215840:
ldr r0, [sp, #0x18]
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r6
sub r0, r0, r7
@@ -7122,7 +7122,7 @@ MOD09_022158EC: ; 0x022158EC
lsl r0, r6, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #1
lsl r0, r0, #4
str r0, [sp, #0x18]
@@ -7131,7 +7131,7 @@ MOD09_022158EC: ; 0x022158EC
ldr r0, [sp, #0x18]
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #2
lsl r0, r0, #4
str r0, [sp, #0x14]
@@ -7140,7 +7140,7 @@ MOD09_022158EC: ; 0x022158EC
ldr r0, [sp, #0x14]
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #3
lsl r0, r0, #4
str r0, [sp, #0x10]
@@ -7149,7 +7149,7 @@ MOD09_022158EC: ; 0x022158EC
ldr r0, [sp, #0x10]
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #4
lsl r0, r0, #4
str r0, [sp, #0xc]
@@ -7158,12 +7158,12 @@ MOD09_022158EC: ; 0x022158EC
ldr r0, [sp, #0xc]
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215A20 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0
str r2, [sp]
str r2, [sp, #4]
@@ -7269,63 +7269,63 @@ MOD09_02215A2C: ; 0x02215A2C
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
mov r0, #5
lsl r0, r0, #6
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0xe0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0xf0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
mov r0, #1
lsl r0, r0, #8
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
mov r0, #0x11
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
mov r0, #0x12
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0xd0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
mov r0, #0x15
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
lsl r0, r4, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #0
@@ -7333,7 +7333,7 @@ MOD09_02215A2C: ; 0x02215A2C
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #0
@@ -7341,7 +7341,7 @@ MOD09_02215A2C: ; 0x02215A2C
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #0
@@ -7349,28 +7349,28 @@ MOD09_02215A2C: ; 0x02215A2C
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #5
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #6
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #7
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #0
@@ -7378,7 +7378,7 @@ MOD09_02215A2C: ; 0x02215A2C
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #0
@@ -7386,35 +7386,35 @@ MOD09_02215A2C: ; 0x02215A2C
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #4
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #1
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #2
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215C40 ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #3
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0
str r2, [sp]
str r2, [sp, #4]
@@ -7502,68 +7502,68 @@ MOD09_02215C44: ; 0x02215C44
mul r4, r1
add r0, #0x60
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x70
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x80
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x90
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0xa0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #1
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
ldr r1, [r5, r0]
lsl r0, r4, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #2
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #3
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #5
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215D9C ; =0x00002070
ldr r1, [r5, r0]
add r0, r4, #4
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5]
add r2, r5, #0
ldrb r3, [r0, #0x11]
@@ -7652,32 +7652,32 @@ MOD09_02215DA8: ; 0x02215DA8
ldr r0, _02215EC4 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215EC4 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215EC4 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215EC4 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215EC4 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02215EC4 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -7785,62 +7785,62 @@ MOD09_02215ED0: ; 0x02215ED0
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x60
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x70
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x90
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0xa0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x80
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216090 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0xb0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -7983,27 +7983,27 @@ MOD09_0221609C: ; 0x0221609C
ldr r0, _02216184 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216184 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216184 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216184 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216184 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -8112,37 +8112,37 @@ MOD09_022161B0: ; 0x022161B0
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02216304 ; =0x00002070
mov r1, #0
ldr r0, [r5, r0]
add r0, #0x60
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -8275,7 +8275,7 @@ MOD09_02216314: ; 0x02216314
ldr r0, _02216338 ; =0x00002060
mov r1, #0xf
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl MOD09_0221633C
pop {r4, pc}
@@ -11816,7 +11816,7 @@ _0221803C:
lsl r1, r1, #4
add r0, r0, r1
add r1, r7, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r1, _022180B0 ; =0x00002070
ldr r0, [r5, r1]
add r1, r1, #5
@@ -11839,7 +11839,7 @@ _02218072:
add r0, r1, r0
ldr r2, [sp]
add r1, r7, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r0, _022180B0 ; =0x00002070
ldr r1, [r5, r0]
ldrb r0, [r6, r4]
@@ -13991,7 +13991,7 @@ MOD09_022191C0: ; 0x022191C0
str r0, [sp, #0xc]
ldr r2, [r5, #4]
mov r0, #0x4d
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -14002,7 +14002,7 @@ MOD09_022191C0: ; 0x022191C0
str r0, [sp, #0xc]
ldr r2, [r5, #4]
mov r0, #0x4d
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r2, [r5]
mov r0, #0x4d
ldr r2, [r2, #0xc]
@@ -14010,7 +14010,7 @@ MOD09_022191C0: ; 0x022191C0
bl AllocAndReadWholeNarcMemberByIdPair
add r1, sp, #0x10
add r4, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r1, [sp, #0x10]
add r0, r5, #0
add r1, #0xc
@@ -14059,7 +14059,7 @@ MOD09_022191C0: ; 0x022191C0
str r0, [sp, #0xc]
ldr r2, [r5, #4]
mov r0, #0x26
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r4, #0
bl FUN_0200CD64
add r2, r0, #0
@@ -14355,7 +14355,7 @@ _022194C6:
add r1, #0x30
ldrb r1, [r1]
ldr r0, [r0, #0xc]
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #0x2c]
add r0, r5, #0
add r0, #0x30
@@ -14450,7 +14450,7 @@ MOD09_02219560: ; 0x02219560
bl FUN_02002E14
add r7, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsr r3, r0, #1
@@ -14486,7 +14486,7 @@ _022195C4:
ldr r0, [r5, #0x2c]
add r1, r7, #0
add r0, r0, r4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r4, #0x10
cmp r6, #5
@@ -14588,7 +14588,7 @@ MOD09_02219694: ; 0x02219694
add r0, r4, r6
mov r1, #0
str r2, [sp, #0x10]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02219730 ; =0x0000114D
lsl r7, r7, #2
ldrb r1, [r5, r0]
@@ -14626,7 +14626,7 @@ MOD09_02219694: ; 0x02219694
bl FUN_02002E14
add r7, r0, #0
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsr r3, r0, #1
@@ -14664,7 +14664,7 @@ MOD09_02219738: ; 0x02219738
add r0, r4, r7
mov r1, #0
str r2, [sp, #0x10]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _022197C4 ; =0x0000114D
lsl r6, r6, #2
ldrb r1, [r5, r0]
@@ -14827,7 +14827,7 @@ MOD09_02219884: ; 0x02219884
lsl r0, r0, #4
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x10]
mov r1, #0x1c
ldr r4, [r5, #0x2c]
@@ -14841,7 +14841,7 @@ MOD09_02219884: ; 0x02219884
mov r0, #0x19
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsr r6, r0, #1
@@ -14962,7 +14962,7 @@ MOD09_022199B4: ; 0x022199B4
lsl r0, r0, #6
add r0, r1, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02219A6C ; =0x0000114D
ldrb r0, [r4, r0]
cmp r0, #3
@@ -15089,7 +15089,7 @@ MOD09_02219A8C: ; 0x02219A8C
bl StringExpandPlaceholders
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -15170,7 +15170,7 @@ _02219B6C:
ldr r0, [r5, #0x2c]
add r1, r7, #0
add r0, r0, r4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r4, #0x10
cmp r6, #4
@@ -15230,7 +15230,7 @@ MOD09_02219BE0: ; 0x02219BE0
add r0, r4, #0
add r0, #0x1c
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl MOD09_02219C08
pop {r4, pc}
@@ -16913,7 +16913,7 @@ _0221A93C:
ldr r1, [sp]
add r2, r7, #0
mov r3, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldrb r0, [r4, r5]
ldr r1, [r6, #0x2c]
lsl r0, r0, #4
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index 32981b60..2a6bb196 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -527,7 +527,7 @@ _0222D99A:
mov r0, #7
add r1, r1, #3
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r5, #0
bl MOD11_02230C68
add r2, r0, #0
@@ -581,7 +581,7 @@ _0222D99A:
mov r0, #7
mov r1, #2
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
lsl r0, r0, #0x1a
ldr r2, [r0]
@@ -633,7 +633,7 @@ _0222D99A:
bl FUN_02019064
ldr r0, [r5, #8]
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #8]
mov r1, #0
mov r2, #1
@@ -746,7 +746,7 @@ MOD11_0222DB50: ; 0x0222DB50
str r0, [r4, #4]
mov r0, #5
mov r1, #3
- bl FUN_02018FF4
+ bl AllocWindows
mov r7, #0x73
str r0, [r4, #8]
mov r6, #0
@@ -795,7 +795,7 @@ _0222DC42:
bl FUN_02019064
ldr r0, [r4, #8]
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #8]
mov r1, #0
mov r2, #1
@@ -1547,7 +1547,7 @@ _0222E2F0:
add r1, r1, #3
add r2, r4, #0
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r5, #0
bl MOD11_02230C68
add r6, r0, #0
@@ -1601,7 +1601,7 @@ _0222E2F0:
mov r1, #2
add r2, r4, #0
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
lsl r0, r0, #0x1a
ldr r2, [r0]
@@ -1898,7 +1898,7 @@ _0222E532:
ldr r0, [r0, r1]
cmp r0, #0
bne _0222E67E
- bl ErrorHandling
+ bl GF_AssertFail
_0222E67E:
ldr r5, [sp, #4]
mov r0, #0
@@ -3061,14 +3061,14 @@ _0222EFD8: .word FUN_020223BC
thumb_func_start MOD11_0222EFDC
MOD11_0222EFDC: ; 0x0222EFDC
push {r3, r4, r5, lr}
- ldr r3, _0222F014 ; =UNK_021064B8
+ ldr r3, _0222F014 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _0222F018 ; =UNK_021064C0
+ ldr r3, _0222F018 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0
add r4, r0, #0
ldr r3, [r3]
@@ -3078,17 +3078,17 @@ MOD11_0222EFDC: ; 0x0222EFDC
add r5, r0, #0
cmp r4, #0
bne _0222F004
- bl ErrorHandling
+ bl GF_AssertFail
_0222F004:
cmp r5, #0
bne _0222F00C
- bl ErrorHandling
+ bl GF_AssertFail
_0222F00C:
bl FUN_02012CC8
pop {r3, r4, r5, pc}
nop
-_0222F014: .word UNK_021064B8
-_0222F018: .word UNK_021064C0
+_0222F014: .word NNS_GfdDefaultFuncAllocTexVram
+_0222F018: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD11_0222F01C
MOD11_0222F01C: ; 0x0222F01C
diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s
index 62996375..451daa87 100644
--- a/arm9/modules/11/asm/module_11_thumb2.s
+++ b/arm9/modules/11/asm/module_11_thumb2.s
@@ -45,7 +45,7 @@ MOD11_0222F29C: ; 0x0222F29C
str r0, [r5, #4]
mov r0, #5
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #8]
add r0, r5, #0
bl FUN_0206BFF0
@@ -186,7 +186,7 @@ _0222F30E:
bl FUN_02019064
ldr r0, [r5, #8]
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #8]
mov r1, #0
mov r2, #1
@@ -2073,7 +2073,7 @@ _02230250:
ldr r0, [r6, #0x44]
cmp r4, r0
blt _0223025A
- bl ErrorHandling
+ bl GF_AssertFail
_0223025A:
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -3553,7 +3553,7 @@ MOD11_02230DE0: ; 0x02230DE0
ldr r0, [r4, #0x30]
cmp r0, #0
bne _02230DEE
- bl ErrorHandling
+ bl GF_AssertFail
_02230DEE:
ldr r1, [r4, #0x30]
add r0, r4, #0
@@ -4278,7 +4278,7 @@ MOD11_022312DC: ; 0x022312DC
add r4, r0, #0
cmp r5, #4
blt _022312EA
- bl ErrorHandling
+ bl GF_AssertFail
_022312EA:
lsl r0, r5, #4
ldr r0, [r4, r0]
@@ -4292,7 +4292,7 @@ MOD11_022312F0: ; 0x022312F0
add r6, r2, #0
cmp r4, #4
blt _02231300
- bl ErrorHandling
+ bl GF_AssertFail
_02231300:
lsl r0, r4, #4
add r0, r5, r0
@@ -4307,7 +4307,7 @@ MOD11_02231308: ; 0x02231308
add r6, r2, #0
cmp r4, #4
blt _02231318
- bl ErrorHandling
+ bl GF_AssertFail
_02231318:
lsl r0, r4, #4
add r0, r5, r0
@@ -4322,7 +4322,7 @@ MOD11_02231320: ; 0x02231320
add r6, r2, #0
cmp r4, #4
blt _02231330
- bl ErrorHandling
+ bl GF_AssertFail
_02231330:
lsl r0, r4, #4
add r0, r5, r0
@@ -4559,7 +4559,7 @@ MOD11_022314B0: ; 0x022314B0
add r5, r0, #0
cmp r4, #0xf
blo _022314BE
- bl ErrorHandling
+ bl GF_AssertFail
_022314BE:
ldr r1, _022314D0 ; =0x000023FB
mov r0, #0xe0
@@ -4854,7 +4854,7 @@ _022316CC:
add r4, r0, #0
add r0, r6, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
ldr r0, [sp, #0x28]
str r3, [sp]
@@ -4892,7 +4892,7 @@ _02231708:
add r4, r0, #0
add r0, r6, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
ldr r0, [sp, #0x28]
str r3, [sp]
@@ -4917,7 +4917,7 @@ _0223174C:
bl GetTrainerMessageByIdPair
add r0, r6, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
ldr r0, [sp, #0x28]
str r3, [sp]
@@ -4962,7 +4962,7 @@ MOD11_0223178C: ; 0x0223178C
bl MOD11_022321EC
add r0, r7, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
ldr r0, _022317DC ; =MOD11_0223220C
@@ -5000,7 +5000,7 @@ MOD11_022317E0: ; 0x022317E0
beq _02231814
add r0, r4, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
_02231814:
ldr r1, [sp, #0x28]
mov r0, #2
@@ -5292,7 +5292,7 @@ _02231A22:
strh r0, [r4, #2]
pop {r4, r5, r6, pc}
_02231A46:
- bl ErrorHandling
+ bl GF_AssertFail
_02231A4A:
pop {r4, r5, r6, pc}
@@ -6036,7 +6036,7 @@ _02232086:
bl MOD11_022320C8
pop {r3, r4, r5, pc}
_022320C2:
- bl ErrorHandling
+ bl GF_AssertFail
_022320C6:
pop {r3, r4, r5, pc}
@@ -6258,7 +6258,7 @@ _02232234:
b _02232252
_0223223C:
ldr r0, _02232258 ; =0x00000484
- bl PlayBGM
+ bl PlaySound
b _02232252
_02232244:
ldr r0, _0223225C ; =0x000005E6
@@ -6266,7 +6266,7 @@ _02232244:
b _02232252
_0223224C:
ldr r0, _02232260 ; =0x00000483
- bl PlayBGM
+ bl PlaySound
_02232252:
add r0, r4, #0
pop {r4, pc}
@@ -9941,7 +9941,7 @@ _02233F10:
str r0, [r4]
b _02233F42
_02233F1A:
- bl ErrorHandling
+ bl GF_AssertFail
b _02233F42
_02233F20:
ldr r0, [r4]
@@ -9962,7 +9962,7 @@ _02233F36:
str r0, [r4]
b _02233F42
_02233F3E:
- bl ErrorHandling
+ bl GF_AssertFail
_02233F42:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -10847,7 +10847,7 @@ _0223461C:
str r0, [sp, #0xc]
b _02234648
_02234626:
- bl ErrorHandling
+ bl GF_AssertFail
b _02234648
_0223462C:
sub r0, r0, r4
@@ -10865,7 +10865,7 @@ _0223463E:
str r0, [sp, #0xc]
b _02234648
_02234644:
- bl ErrorHandling
+ bl GF_AssertFail
_02234648:
cmp r6, #0x1a
bne _0223465E
@@ -11207,7 +11207,7 @@ _022348E8:
str r0, [r4]
b _022348F6
_022348F2:
- bl ErrorHandling
+ bl GF_AssertFail
_022348F6:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -11368,7 +11368,7 @@ _02234A18:
str r0, [sp, #0xc]
b _02234A26
_02234A22:
- bl ErrorHandling
+ bl GF_AssertFail
_02234A26:
cmp r5, #0x11
beq _02234A56
@@ -20606,7 +20606,7 @@ _02239324:
ldr r0, [sp, #0xc]
cmp r0, #0xa
blt _0223932E
- bl ErrorHandling
+ bl GF_AssertFail
_0223932E:
bl LCRandom
mov r1, #0x64
@@ -21264,7 +21264,7 @@ _02239872:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0223987E:
- bl ErrorHandling
+ bl GF_AssertFail
_02239882:
ldr r0, _022398B0 ; =0x00002D90
add r1, r5, r6
@@ -21323,7 +21323,7 @@ _022398E6:
_022398F0:
cmp r4, #0
bne _022398F8
- bl ErrorHandling
+ bl GF_AssertFail
_022398F8:
bl LCRandom
mov r1, #0x64
@@ -23862,7 +23862,7 @@ _0223AC50:
bl FUN_02019064
add r0, r5, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
mov r1, #0
mov r2, #1
@@ -23987,7 +23987,7 @@ _0223ADBA:
mov r2, #0x50
mov r3, #0
add r7, r0, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
str r1, [sp, #0x4c]
add r5, sp, #0xb0
@@ -28099,7 +28099,7 @@ _0223CF5C:
add r0, r6, #0
bl String_dtor
add r0, sp, #0x68
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -36327,7 +36327,7 @@ _02240F28:
ldr r0, [r4, r0]
cmp r0, #0
blt _02240F4A
- bl ErrorHandling
+ bl GF_AssertFail
_02240F4A:
ldr r1, [r4, #0x64]
add r0, r5, #0
@@ -40690,7 +40690,7 @@ MOD11_022431DC: ; 0x022431DC
lsl r1, r1, #6
cmp r0, r1
blo _022431F8
- bl ErrorHandling
+ bl GF_AssertFail
_022431F8:
add r0, r5, #0
add r0, #0xac
@@ -40723,14 +40723,14 @@ MOD11_0224321C: ; 0x0224321C
lsl r1, r1, #6
cmp r0, r1
blo _02243238
- bl ErrorHandling
+ bl GF_AssertFail
_02243238:
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
cmp r0, #4
blt _02243246
- bl ErrorHandling
+ bl GF_AssertFail
_02243246:
add r1, r5, #0
add r1, #0xb8
@@ -40861,7 +40861,7 @@ _0224332C:
_02243334:
cmp r3, #0x10
blt _0224333C
- bl ErrorHandling
+ bl GF_AssertFail
_0224333C:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -40874,7 +40874,7 @@ MOD11_02243340: ; 0x02243340
str r2, [sp]
add r4, r3, #0
bne _02243350
- bl ErrorHandling
+ bl GF_AssertFail
_02243350:
ldr r0, [sp]
lsl r6, r5, #6
@@ -40904,7 +40904,7 @@ _02243376:
_0224337E:
cmp r2, #0x10
blt _02243386
- bl ErrorHandling
+ bl GF_AssertFail
_02243386:
pop {r3, r4, r5, r6, r7, pc}
@@ -41520,7 +41520,7 @@ _0224378A:
bl MOD11_02243420
pop {r4, r5, r6, pc}
_02243794:
- bl ErrorHandling
+ bl GF_AssertFail
_02243798:
mov r0, #0
pop {r4, r5, r6, pc}
@@ -41821,7 +41821,7 @@ _022439A8:
strb r1, [r0]
pop {r4, r5, r6, pc}
_022439B4:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
_022439BA:
ldrb r0, [r3]
@@ -42357,7 +42357,7 @@ _02243D94:
bl MOD11_0224379C
pop {r4, r5, r6, pc}
_02243D9E:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
.align 2, 0
_02243DA4: .word 0xF7FFFFFF
@@ -42968,7 +42968,7 @@ _022441E8:
str r0, [r4, #0x28]
pop {r4, r5, r6, pc}
_02244200:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
nop
_02244208: .word 0xFFFFFC1F
@@ -44124,7 +44124,7 @@ _02244AEA:
_02244AF4:
cmp r6, #0
bne _02244AFC
- bl ErrorHandling
+ bl GF_AssertFail
_02244AFC:
bl LCRandom
mov r1, #0x64
@@ -44193,7 +44193,7 @@ _02244B72:
_02244B7C:
cmp r7, #0
bne _02244B84
- bl ErrorHandling
+ bl GF_AssertFail
_02244B84:
bl LCRandom
mov r1, #0x64
@@ -57811,7 +57811,7 @@ MOD11_0224B310: ; 0x0224B310
cmp r0, #1
beq _0224B334
bhi _0224B334
- bl ErrorHandling
+ bl GF_AssertFail
_0224B334:
add r0, sp, #0x90
ldrb r0, [r0, #0x1c]
@@ -58063,7 +58063,7 @@ _0224B558:
ldr r0, [r5, r0]
cmp r0, #0xa
bge _0224B564
- bl ErrorHandling
+ bl GF_AssertFail
_0224B564:
ldr r0, _0224B75C ; =0x00002158
mov r1, #0xa
@@ -60136,7 +60136,7 @@ _0224C51E:
ldr r0, [r1, r0]
pop {r4, pc}
_0224C528:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, pc}
.align 2, 0
@@ -60219,7 +60219,7 @@ _0224C5C2:
strb r4, [r1, r0]
pop {r3, r4, r5, pc}
_0224C5CA:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
.align 2, 0
_0224C5D0: .word 0xFFFF8FFF
@@ -60275,7 +60275,7 @@ _0224C628:
_0224C62E:
cmp r4, #0x91
blo _0224C636
- bl ErrorHandling
+ bl GF_AssertFail
_0224C636:
ldr r0, _0224C644 ; =MOD11_0225E4C8
lsl r1, r4, #2
@@ -60450,7 +60450,7 @@ _0224C756:
ldrb r4, [r1, r0]
b _0224C76A
_0224C766:
- bl ErrorHandling
+ bl GF_AssertFail
_0224C76A:
mov r0, #0xc0
mul r0, r6
@@ -62294,7 +62294,7 @@ MOD11_0224D518: ; 0x0224D518
bl MOD11_0222FF6C
add r6, r0, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0
bl FUN_02019548
mov r1, #0x65
@@ -64173,7 +64173,7 @@ MOD11_0224E410: ; 0x0224E410
add r5, r2, #0
cmp r0, #0
bne _0224E422
- bl ErrorHandling
+ bl GF_AssertFail
_0224E422:
add r4, r6, #0
add r4, #0x28
@@ -64241,7 +64241,7 @@ MOD11_0224E49C: ; 0x0224E49C
add r5, r2, #0
cmp r0, #0
bne _0224E4AE
- bl ErrorHandling
+ bl GF_AssertFail
_0224E4AE:
add r4, r6, #0
add r4, #0x28
@@ -64552,7 +64552,7 @@ MOD11_0224E6FC: ; 0x0224E6FC
add r4, r2, #0
cmp r0, #0
bne _0224E70E
- bl ErrorHandling
+ bl GF_AssertFail
_0224E70E:
ldrb r1, [r4, #1]
add r0, r5, #0
@@ -69424,7 +69424,7 @@ _02250EB6:
bl MOD11_02258820
b _02250EC8
_02250EC4:
- bl ErrorHandling
+ bl GF_AssertFail
_02250EC8:
add r0, r6, #0
bl MOD11_02258E30
@@ -69807,7 +69807,7 @@ _022511FA:
bl FUN_02033590
cmp r0, #0
beq _02251206
- bl ErrorHandling
+ bl GF_AssertFail
_02251206:
ldrb r1, [r6, #0x1d]
ldr r0, [r6]
@@ -70085,7 +70085,7 @@ MOD11_02251420: ; 0x02251420
add r4, r0, #1
cmp r4, #5
blt _02251442
- bl ErrorHandling
+ bl GF_AssertFail
_02251442:
ldrb r1, [r5, #0xd]
ldr r0, [r5]
@@ -71657,7 +71657,7 @@ _022520D2:
bl MOD11_0222FF6C
add r6, r0, #0
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0
bl FUN_02019548
ldr r0, [r4]
@@ -72340,7 +72340,7 @@ _02252664:
bl MOD11_02258820
b _02252676
_02252672:
- bl ErrorHandling
+ bl GF_AssertFail
_02252676:
mov r0, #2
add sp, #0x2c
@@ -74388,7 +74388,7 @@ MOD11_022536D4: ; 0x022536D4
ldr r0, [r0]
cmp r0, #0
beq _022536EE
- bl ErrorHandling
+ bl GF_AssertFail
_022536EE:
ldrb r2, [r4, #0xd]
ldr r0, [r4]
@@ -74423,7 +74423,7 @@ MOD11_02253720: ; 0x02253720
ldr r0, [r0]
cmp r0, #0
bne _02253734
- bl ErrorHandling
+ bl GF_AssertFail
_02253734:
ldr r0, [r4, #4]
add r0, #0x8c
@@ -81452,7 +81452,7 @@ MOD11_02256D70: ; 0x02256D70
add r4, r2, #0
cmp r0, #0
bne _02256D82
- bl ErrorHandling
+ bl GF_AssertFail
_02256D82:
add r0, r5, #0
add r0, #0x25
@@ -82159,7 +82159,7 @@ MOD11_022572C8: ; 0x022572C8
add r7, r2, #0
cmp r0, #0
bne _022572DA
- bl ErrorHandling
+ bl GF_AssertFail
_022572DA:
add r0, r5, #0
add r0, #0x25
@@ -82211,12 +82211,12 @@ MOD11_02257334: ; 0x02257334
add r5, r1, #0
cmp r4, #0
bne _02257342
- bl ErrorHandling
+ bl GF_AssertFail
_02257342:
ldr r0, [r4, #4]
cmp r0, #0
bne _0225734C
- bl ErrorHandling
+ bl GF_AssertFail
_0225734C:
add r0, r4, #0
add r0, #0x4f
@@ -83788,7 +83788,7 @@ _02257FB4:
mov r0, #5
pop {r3, pc}
_02257FB8:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
@@ -83834,7 +83834,7 @@ _02257FFA:
ldr r0, _02258020 ; =MOD11_0225EBB8
pop {r3, pc}
_02257FFE:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
nop
@@ -83873,7 +83873,7 @@ _0225804A:
mov r0, #0
pop {r3, pc}
_0225804E:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
nop
@@ -84339,7 +84339,7 @@ MOD11_022583D8: ; 0x022583D8
strb r7, [r5, #9]
cmp r7, #0xc
blt _022583FE
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
strb r0, [r5, #9]
_022583FE:
@@ -84494,7 +84494,7 @@ _02258512:
mov r0, #7
mov r2, #1
add r3, sp, #0x18
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r5, r0, #0
lsl r0, r4, #2
add r0, r6, r0
@@ -84597,7 +84597,7 @@ _022585DE:
mov r1, #0xca
add r2, sp, #0x14
mov r3, #5
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
ldr r0, [sp, #0x14]
ldr r1, [r6, #0x60]
@@ -84696,7 +84696,7 @@ MOD11_022586BC: ; 0x022586BC
mov r1, #0x11
add r2, r5, #0
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r2, _02258790 ; =0x00004E2D
add r0, r6, #0
add r1, r4, #0
@@ -84986,7 +84986,7 @@ MOD11_02258958: ; 0x02258958
cmp r0, #0
beq _02258974
_02258970:
- bl ErrorHandling
+ bl GF_AssertFail
_02258974:
ldr r0, [sp, #0x14]
ldr r0, [r0]
@@ -85108,7 +85108,7 @@ _02258A12:
ldr r0, [r0, #4]
cmp r0, #0
beq _02258A82
- bl ErrorHandling
+ bl GF_AssertFail
_02258A82:
ldr r0, _02258AFC ; =MOD11_02258BE0
ldr r1, [sp, #0x14]
@@ -85179,7 +85179,7 @@ MOD11_02258B10: ; 0x02258B10
cmp r0, #0
bne _02258B28
_02258B24:
- bl ErrorHandling
+ bl GF_AssertFail
_02258B28:
ldr r0, [r6]
bl MOD11_02230078
@@ -85519,7 +85519,7 @@ MOD11_02258DD0: ; 0x02258DD0
cmp r0, #0
bne _02258DE8
_02258DE4:
- bl ErrorHandling
+ bl GF_AssertFail
_02258DE8:
ldr r7, _02258E28 ; =0x000005D4
mov r6, #0
@@ -85569,7 +85569,7 @@ MOD11_02258E30: ; 0x02258E30
cmp r0, #0
bne _02258E48
_02258E44:
- bl ErrorHandling
+ bl GF_AssertFail
_02258E48:
ldr r7, _02258E70 ; =0x000005D4
mov r4, #0
@@ -85602,7 +85602,7 @@ MOD11_02258E74: ; 0x02258E74
sub r0, r6, #1
cmp r1, r0
bne _02258E88
- bl ErrorHandling
+ bl GF_AssertFail
_02258E88:
ldr r0, _02258F4C ; =0x0000069F
ldr r3, _02258F50 ; =MOD11_0225FAAC
@@ -85625,7 +85625,7 @@ _02258EA8:
ldr r0, [r4, #0x18]
cmp r0, #0
bne _02258EB2
- bl ErrorHandling
+ bl GF_AssertFail
_02258EB2:
ldr r0, [r5]
bl MOD11_0222FF74
@@ -85833,7 +85833,7 @@ _02259020:
mov r0, #0xb
pop {r3, pc}
_02259024:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
@@ -86090,7 +86090,7 @@ MOD11_0225916C: ; 0x0225916C
bl FUN_02015F34
cmp r0, #1
beq _02259232
- bl ErrorHandling
+ bl GF_AssertFail
_02259232:
ldr r0, _0225926C ; =MOD11_0225B538
add r1, r4, #0
@@ -86503,7 +86503,7 @@ MOD11_022595C8: ; 0x022595C8
add r6, r5, #0
add r6, #0x18
bne _022595D8
- bl ErrorHandling
+ bl GF_AssertFail
_022595D8:
ldrb r1, [r6, #0x10]
ldr r0, _02259854 ; =0x0000069E
@@ -88010,7 +88010,7 @@ _0225A286:
ldr r0, [r1, r0]
cmp r0, #0
beq _0225A296
- bl ErrorHandling
+ bl GF_AssertFail
_0225A296:
lsl r0, r5, #2
add r1, r4, r0
@@ -88018,7 +88018,7 @@ _0225A296:
ldr r0, [r1, r0]
cmp r0, #0
beq _0225A2A6
- bl ErrorHandling
+ bl GF_AssertFail
_0225A2A6:
cmp r6, #5
bhi _0225A2CE
@@ -88045,7 +88045,7 @@ _0225A2CA:
ldr r6, _0225A3E0 ; =0x00004E42
b _0225A2D8
_0225A2CE:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x50
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -88255,7 +88255,7 @@ MOD11_0225A458: ; 0x0225A458
ldr r4, [sp, #0xa8]
cmp r0, #0
beq _0225A472
- bl ErrorHandling
+ bl GF_AssertFail
_0225A472:
ldr r0, [r7]
bl MOD11_02230080
@@ -88280,7 +88280,7 @@ _0225A49C:
cmp r4, #0
bne _0225A4DA
add r0, sp, #0x3c
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -88713,7 +88713,7 @@ _0225A7CE:
ldr r0, [sp, #0x40]
mov r2, #1
add r3, sp, #0x4c
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0x44]
ldr r0, [sp, #0x4c]
ldr r1, [sp, #0x1c]
@@ -88914,7 +88914,7 @@ MOD11_0225A968: ; 0x0225A968
bl FUN_02019178
_0225A994:
add r0, r4, #0
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [r5]
bl MOD11_0222FF68
mov r1, #0
@@ -88981,7 +88981,7 @@ _0225AA14:
ldr r0, [r1, r0]
cmp r0, #0
beq _0225AA24
- bl ErrorHandling
+ bl GF_AssertFail
_0225AA24:
ldr r0, [sp, #4]
lsl r1, r4, #1
@@ -89425,7 +89425,7 @@ MOD11_0225AD80: ; 0x0225AD80
ldr r0, [r4, #8]
cmp r0, #0
beq _0225AD90
- bl ErrorHandling
+ bl GF_AssertFail
_0225AD90:
mov r0, #0x6b
lsl r0, r0, #4
@@ -92883,7 +92883,7 @@ MOD11_0225C784: ; 0x0225C784
ldrb r0, [r4, r0]
cmp r0, #2
blo _0225C7B0
- bl ErrorHandling
+ bl GF_AssertFail
_0225C7B0:
ldr r1, _0225C7E4 ; =0x000006FC
add r0, r4, #0
@@ -93175,7 +93175,7 @@ MOD11_0225C9F0: ; 0x0225C9F0
ldr r0, [r4, #4]
cmp r0, #0
beq _0225C9FE
- bl ErrorHandling
+ bl GF_AssertFail
_0225C9FE:
add r0, r4, #0
bl FreeToHeap
@@ -93264,7 +93264,7 @@ MOD11_0225CA90: ; 0x0225CA90
add r7, r2, #0
cmp r6, #0
bne _0225CAA0
- bl ErrorHandling
+ bl GF_AssertFail
_0225CAA0:
add r0, r6, #0
add r1, r4, #0
@@ -93347,7 +93347,7 @@ MOD11_0225CB10: ; 0x0225CB10
_0225CB2A:
cmp r1, #0
bne _0225CB32
- bl ErrorHandling
+ bl GF_AssertFail
_0225CB32:
add r0, r5, #0
mov r1, #0
@@ -93508,7 +93508,7 @@ MOD11_0225CC68: ; 0x0225CC68
cmp r0, #0
beq _0225CC7E
_0225CC7A:
- bl ErrorHandling
+ bl GF_AssertFail
_0225CC7E:
mov r0, #0
strb r0, [r5, #0x1a]
@@ -93682,7 +93682,7 @@ MOD11_0225CDB0: ; 0x0225CDB0
_0225CDCC:
cmp r1, #0
bne _0225CDD4
- bl ErrorHandling
+ bl GF_AssertFail
_0225CDD4:
add r0, r5, #0
mov r1, #0
@@ -94193,7 +94193,7 @@ MOD11_0225D1A8: ; 0x0225D1A8
cmp r0, #0
beq _0225D1C2
_0225D1BE:
- bl ErrorHandling
+ bl GF_AssertFail
_0225D1C2:
add r0, r5, #0
mov r1, #0
diff --git a/arm9/modules/11/src/module_11_sinit.c b/arm9/modules/11/src/module_11_sinit.c
index 977c4fde..8bf5f6f6 100644
--- a/arm9/modules/11/src/module_11_sinit.c
+++ b/arm9/modules/11/src/module_11_sinit.c
@@ -1,8 +1,9 @@
#include "global.h"
#include "poke_overlay.h"
#include "FS_overlay.h"
+#include "unk_02031734.h"
+
-extern u32 FUN_02033590(void);
FS_EXTERN_OVERLAY(MODULE_16);
THUMB_FUNC static void MOD11_0222F284(void)
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index f717789a..effb333a 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -744,14 +744,14 @@ MOD12_0222DC80: ; 0x0222DC80
thumb_func_start MOD12_0222DCAC
MOD12_0222DCAC: ; 0x0222DCAC
push {r3, r4, r5, lr}
- ldr r3, _0222DCE4 ; =UNK_021064B8
+ ldr r3, _0222DCE4 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _0222DCE8 ; =UNK_021064C0
+ ldr r3, _0222DCE8 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0
add r4, r0, #0
ldr r3, [r3]
@@ -761,17 +761,17 @@ MOD12_0222DCAC: ; 0x0222DCAC
add r5, r0, #0
cmp r4, #0
bne _0222DCD4
- bl ErrorHandling
+ bl GF_AssertFail
_0222DCD4:
cmp r5, #0
bne _0222DCDC
- bl ErrorHandling
+ bl GF_AssertFail
_0222DCDC:
bl FUN_02012CC8
pop {r3, r4, r5, pc}
nop
-_0222DCE4: .word UNK_021064B8
-_0222DCE8: .word UNK_021064C0
+_0222DCE4: .word NNS_GfdDefaultFuncAllocTexVram
+_0222DCE8: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD12_0222DCEC
MOD12_0222DCEC: ; 0x0222DCEC
@@ -780,7 +780,7 @@ MOD12_0222DCEC: ; 0x0222DCEC
ldr r0, [r4]
cmp r0, #0
bne _0222DCFA
- bl ErrorHandling
+ bl GF_AssertFail
_0222DCFA:
ldr r1, _0222DD1C ; =0x00000172
mov r0, #0
@@ -1054,7 +1054,7 @@ MOD12_0222DF30: ; 0x0222DF30
mov r0, #0x2d
mov r1, #3
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1066,7 +1066,7 @@ MOD12_0222DF30: ; 0x0222DF30
mov r0, #0x2d
mov r1, #5
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
add r1, r0, #0
bl FUN_020178BC
@@ -1117,7 +1117,7 @@ MOD12_0222DFC4: ; 0x0222DFC4
ldr r2, [r5, #0x30]
mov r0, #0x2d
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1129,7 +1129,7 @@ MOD12_0222DFC4: ; 0x0222DFC4
mov r0, #0x2d
mov r1, #2
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1140,7 +1140,7 @@ MOD12_0222DFC4: ; 0x0222DFC4
ldr r2, [r5, #0x30]
mov r0, #0x2d
mov r1, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1151,7 +1151,7 @@ MOD12_0222DFC4: ; 0x0222DFC4
ldr r2, [r5, #0x30]
mov r0, #0x2d
mov r1, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
add r0, r5, #0
add r2, r1, #0
@@ -3999,14 +3999,14 @@ MOD12_0222F6B4: ; 0x0222F6B4
thumb_func_start MOD12_0222F6E0
MOD12_0222F6E0: ; 0x0222F6E0
push {r3, r4, r5, lr}
- ldr r3, _0222F718 ; =UNK_021064B8
+ ldr r3, _0222F718 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _0222F71C ; =UNK_021064C0
+ ldr r3, _0222F71C ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0
add r4, r0, #0
ldr r3, [r3]
@@ -4016,17 +4016,17 @@ MOD12_0222F6E0: ; 0x0222F6E0
add r5, r0, #0
cmp r4, #0
bne _0222F708
- bl ErrorHandling
+ bl GF_AssertFail
_0222F708:
cmp r5, #0
bne _0222F710
- bl ErrorHandling
+ bl GF_AssertFail
_0222F710:
bl FUN_02012CC8
pop {r3, r4, r5, pc}
nop
-_0222F718: .word UNK_021064B8
-_0222F71C: .word UNK_021064C0
+_0222F718: .word NNS_GfdDefaultFuncAllocTexVram
+_0222F71C: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD12_0222F720
MOD12_0222F720: ; 0x0222F720
@@ -4035,7 +4035,7 @@ MOD12_0222F720: ; 0x0222F720
ldr r0, [r4]
cmp r0, #0
bne _0222F72E
- bl ErrorHandling
+ bl GF_AssertFail
_0222F72E:
mov r3, #0
mov r0, #3
@@ -4185,7 +4185,7 @@ MOD12_0222F834: ; 0x0222F834
ldr r2, [r5, #0x30]
mov r0, #0x2d
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4197,7 +4197,7 @@ MOD12_0222F834: ; 0x0222F834
mov r0, #0x2d
mov r1, #0x15
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0x30]
mov r1, #1
bl FUN_02018744
@@ -4260,7 +4260,7 @@ MOD12_0222F834: ; 0x0222F834
mov r0, #0x2d
mov r1, #0x17
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4272,7 +4272,7 @@ MOD12_0222F834: ; 0x0222F834
mov r0, #0x2d
mov r1, #0x14
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -4310,7 +4310,7 @@ MOD12_0222F938: ; 0x0222F938
mov r0, #0x2d
mov r1, #0x12
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4322,7 +4322,7 @@ MOD12_0222F938: ; 0x0222F938
mov r0, #0x2d
mov r1, #0x13
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
str r0, [sp]
mov r0, #0
@@ -5408,7 +5408,7 @@ MOD12_0223023C: ; 0x0223023C
bl FUN_020133C8
cmp r0, #0
beq _02230254
- bl ErrorHandling
+ bl GF_AssertFail
_02230254:
add r0, r4, #0
bl MOD12_02230A40
@@ -5945,7 +5945,7 @@ MOD12_022306F8: ; 0x022306F8
ldr r0, [r5]
cmp r0, #0
bne _02230706
- bl ErrorHandling
+ bl GF_AssertFail
_02230706:
mov r4, #0xad
lsl r4, r4, #4
@@ -6184,7 +6184,7 @@ MOD12_022308F0: ; 0x022308F0
mov r0, #0x2d
mov r1, #0xd
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6196,7 +6196,7 @@ MOD12_022308F0: ; 0x022308F0
mov r0, #0x2d
mov r1, #0xe
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6292,7 +6292,7 @@ MOD12_022309D8: ; 0x022309D8
ldr r0, [r4, #0xc]
cmp r0, #0
beq _022309E8
- bl ErrorHandling
+ bl GF_AssertFail
_022309E8:
mov r1, #0x12
mov r0, #0x17
@@ -6350,7 +6350,7 @@ MOD12_02230A40: ; 0x02230A40
thumb_func_start MOD12_02230A60
MOD12_02230A60: ; 0x02230A60
push {r4, lr}
- ldr r3, _02230A78 ; =UNK_021064B8
+ ldr r3, _02230A78 ; =NNS_GfdDefaultFuncAllocTexVram
mov r2, #0
ldr r3, [r3]
blx r3
@@ -6360,12 +6360,12 @@ MOD12_02230A60: ; 0x02230A60
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02230A78: .word UNK_021064B8
+_02230A78: .word NNS_GfdDefaultFuncAllocTexVram
thumb_func_start MOD12_02230A7C
MOD12_02230A7C: ; 0x02230A7C
push {r4, lr}
- ldr r3, _02230A94 ; =UNK_021064C0
+ ldr r3, _02230A94 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r2, #0
ldr r3, [r3]
blx r3
@@ -6375,7 +6375,7 @@ MOD12_02230A7C: ; 0x02230A7C
lsr r0, r0, #0xd
pop {r4, pc}
nop
-_02230A94: .word UNK_021064C0
+_02230A94: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD12_02230A98
MOD12_02230A98: ; 0x02230A98
@@ -7568,7 +7568,7 @@ MOD12_02231380: ; 0x02231380
add r6, r6, #1
_022313B0:
add r0, sp, #0x34
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -7947,7 +7947,7 @@ _022316A6:
mov r6, #0x69
b _022316B2
_022316AA:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
_022316B2:
@@ -8241,7 +8241,7 @@ MOD12_022318DC: ; 0x022318DC
ldr r0, [r4]
cmp r0, #0
bne _022318EA
- bl ErrorHandling
+ bl GF_AssertFail
_022318EA:
ldr r0, [r4]
bl FUN_0200CAB4
@@ -8440,7 +8440,7 @@ _02231A4C:
mov r0, #0x2d
mov r2, #1
add r3, sp, #0xc
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r6, r0, #0
lsl r0, r5, #2
add r0, r4, r0
@@ -8679,7 +8679,7 @@ _02231C40:
mov r0, #0x2d
mov r2, #1
add r3, r7, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
mov r1, #0xb6
lsl r1, r1, #2
str r0, [r7, r1]
@@ -8711,7 +8711,7 @@ MOD12_02231C80: ; 0x02231C80
sub r0, r6, #1
cmp r1, r0
bne _02231C96
- bl ErrorHandling
+ bl GF_AssertFail
_02231C96:
mov r0, #0x2e
lsl r0, r0, #4
@@ -8730,7 +8730,7 @@ _02231CB0:
ldr r0, [r4, #0x18]
cmp r0, #0
bne _02231CBA
- bl ErrorHandling
+ bl GF_AssertFail
_02231CBA:
ldr r0, [r4, #0x14]
bl FUN_02020988
@@ -9148,7 +9148,7 @@ _02231FC0:
ldrb r0, [r6, r0]
cmp r0, #0xff
beq _02232000
- bl ErrorHandling
+ bl GF_AssertFail
_02232000:
ldr r0, _022320A0 ; =0x000002E1
strb r4, [r6, r0]
@@ -9181,7 +9181,7 @@ _02232030:
str r0, [sp, #0x1c]
cmp r0, #6
ble _02232040
- bl ErrorHandling
+ bl GF_AssertFail
_02232040:
mov r0, #0x18
mul r0, r4
@@ -9201,7 +9201,7 @@ _02232054:
ldr r0, [r1, r0]
cmp r0, #0
beq _02232066
- bl ErrorHandling
+ bl GF_AssertFail
_02232066:
ldr r0, [sp, #0x20]
ldr r3, _022320BC ; =MOD12_02244E50
@@ -9516,7 +9516,7 @@ MOD12_022322C0: ; 0x022322C0
ldr r4, [sp, #0xa8]
cmp r0, #0
beq _022322DA
- bl ErrorHandling
+ bl GF_AssertFail
_022322DA:
ldr r1, [r7, #4]
cmp r4, #0
@@ -9540,7 +9540,7 @@ _022322FE:
cmp r4, #0
bne _0223233C
add r0, sp, #0x3c
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -9759,7 +9759,7 @@ _0223249A:
ldr r0, [r1, r0]
cmp r0, #0
beq _022324AC
- bl ErrorHandling
+ bl GF_AssertFail
_022324AC:
lsl r0, r4, #1
ldrh r0, [r7, r0]
@@ -9989,7 +9989,7 @@ MOD12_02232654: ; 0x02232654
ldr r0, [r4, #0x10]
cmp r0, #0
beq _02232664
- bl ErrorHandling
+ bl GF_AssertFail
_02232664:
mov r0, #0xb9
lsl r0, r0, #2
@@ -10516,7 +10516,7 @@ MOD12_02232A68: ; 0x02232A68
ldr r0, [r4, #0x14]
cmp r0, #0
beq _02232A78
- bl ErrorHandling
+ bl GF_AssertFail
_02232A78:
mov r0, #0xc1
lsl r0, r0, #2
@@ -10928,7 +10928,7 @@ MOD12_02232D7C: ; 0x02232D7C
bl FUN_02019178
_02232DA8:
add r0, r4, #0
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -12081,7 +12081,7 @@ MOD12_0223361C: ; 0x0223361C
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _0223362A
- bl ErrorHandling
+ bl GF_AssertFail
_0223362A:
ldr r0, [r4, #4]
bl FUN_0200CAB4
@@ -12174,7 +12174,7 @@ MOD12_022336AC: ; 0x022336AC
ldr r0, [r0, #0x58]
cmp r0, #0
bne _022336D4
- bl ErrorHandling
+ bl GF_AssertFail
_022336D4:
add r2, r5, #0
add r2, #0x58
@@ -12256,7 +12256,7 @@ _02233772:
ldr r0, [r7, #0x58]
cmp r0, #0
beq _0223377C
- bl ErrorHandling
+ bl GF_AssertFail
_0223377C:
mov r1, #0x32
mov r0, #0x15
@@ -12322,7 +12322,7 @@ _022337E6:
ldr r0, [r0]
cmp r0, #0
beq _0223380C
- bl ErrorHandling
+ bl GF_AssertFail
_0223380C:
mov r1, #0x32
mov r0, #0x15
@@ -12802,7 +12802,7 @@ MOD12_02233BBC: ; 0x02233BBC
ldr r0, [r4, r0]
cmp r0, #0
bne _02233BCE
- bl ErrorHandling
+ bl GF_AssertFail
_02233BCE:
mov r0, #0x5f
lsl r0, r0, #2
@@ -12826,7 +12826,7 @@ MOD12_02233BE4: ; 0x02233BE4
add r5, r2, #0
cmp r0, #0
bne _02233BFA
- bl ErrorHandling
+ bl GF_AssertFail
_02233BFA:
ldr r1, _02233C60 ; =MOD12_02245200
lsl r2, r6, #2
@@ -12893,7 +12893,7 @@ MOD12_02233C74: ; 0x02233C74
ldr r0, [r4, r0]
cmp r0, #0
bne _02233C86
- bl ErrorHandling
+ bl GF_AssertFail
_02233C86:
mov r0, #0x5f
lsl r0, r0, #2
@@ -13217,7 +13217,7 @@ MOD12_02233EEC: ; 0x02233EEC
add r4, r1, #0
cmp r0, #0
beq _02233F00
- bl ErrorHandling
+ bl GF_AssertFail
_02233F00:
mov r0, #1
str r0, [sp]
@@ -14137,7 +14137,7 @@ MOD12_02234628: ; 0x02234628
str r0, [sp, #4]
cmp r0, #5
ble _02234644
- bl ErrorHandling
+ bl GF_AssertFail
_02234644:
ldr r0, [sp]
mov r1, #0x14
@@ -14681,7 +14681,7 @@ MOD12_02234A60: ; 0x02234A60
blt _02234A78
cmp r5, #0
bne _02234A78
- bl ErrorHandling
+ bl GF_AssertFail
_02234A78:
cmp r7, #0x1c
bls _02234A7E
@@ -15213,7 +15213,7 @@ _02234ECC:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_02234EF2:
- bl ErrorHandling
+ bl GF_AssertFail
_02234EF6:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -15225,7 +15225,7 @@ MOD12_02234EFC: ; 0x02234EFC
add r4, r0, #0
add r0, #0x34
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, #0x34
add r0, r4, #0
bl CopyWindowToVram
@@ -15275,7 +15275,7 @@ _02234F42:
add r0, r5, #0
add r0, #0x34
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -15317,7 +15317,7 @@ MOD12_02234FB0: ; 0x02234FB0
add r6, r3, #0
cmp r5, #0x2f
blo _02234FC4
- bl ErrorHandling
+ bl GF_AssertFail
_02234FC4:
ldr r0, _02234FE4 ; =MOD12_0224540C + 3
lsl r3, r5, #2
@@ -15734,11 +15734,11 @@ _022352D6:
ldr r4, [r0, r1]
cmp r4, #0
bge _022352E4
- bl ErrorHandling
+ bl GF_AssertFail
_022352E4:
cmp r4, #0x7f
ble _022352EC
- bl ErrorHandling
+ bl GF_AssertFail
_022352EC:
add r0, r4, #0
pop {r4, pc}
@@ -15831,7 +15831,7 @@ _02235382:
mov r0, #0x2d
ldr r2, [r2, #0x30]
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldrb r0, [r4, #8]
add sp, #0x10
add r0, r0, #1
@@ -24466,13 +24466,13 @@ _02239404:
ldrh r0, [r0]
cmp r0, #0
bne _02239428
- bl ErrorHandling
+ bl GF_AssertFail
_02239428:
ldr r0, [sp, #0x58]
ldrb r0, [r0]
cmp r0, #3
blo _02239434
- bl ErrorHandling
+ bl GF_AssertFail
_02239434:
add sp, #0x44
pop {r4, r5, r6, r7, pc}
@@ -25164,7 +25164,7 @@ MOD12_02239838: ; 0x02239838
ldr r0, [r0, #0x48]
cmp r0, #0
beq _02239872
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_02239858:
bl FUN_02007534
@@ -25390,7 +25390,7 @@ MOD12_02239A10: ; 0x02239A10
add r4, r1, #0
cmp r0, #0
beq _02239A22
- bl ErrorHandling
+ bl GF_AssertFail
_02239A22:
mov r1, #0x30
ldr r2, [r5]
@@ -25442,7 +25442,7 @@ MOD12_02239A6C: ; 0x02239A6C
beq _02239A82
cmp r6, #0
bne _02239A82
- bl ErrorHandling
+ bl GF_AssertFail
_02239A82:
cmp r4, #0
beq _02239ACC
@@ -25477,7 +25477,7 @@ _02239A82:
add sp, #8
pop {r4, r5, r6, pc}
_02239AC8:
- bl ErrorHandling
+ bl GF_AssertFail
_02239ACC:
add sp, #8
pop {r4, r5, r6, pc}
@@ -25518,7 +25518,7 @@ _02239AF4:
add r0, r5, #0
add r0, #0x34
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -25547,7 +25547,7 @@ MOD12_02239B48: ; 0x02239B48
add r4, r2, #0
cmp r5, #0xf
blo _02239B5A
- bl ErrorHandling
+ bl GF_AssertFail
_02239B5A:
str r4, [sp]
ldr r2, _02239B74 ; =MOD12_02245F48
@@ -25820,7 +25820,7 @@ _02239C90:
ldr r2, [r6, #0x30]
mov r0, #0x2d
mov r1, #0x14
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, _02239D84 ; =MOD12_02239D8C
ldr r2, _02239D88 ; =0x00007530
add r1, r4, #0
@@ -27277,7 +27277,7 @@ _0223A886:
ldr r0, [r0, #0x24]
cmp r0, #0
bne _0223A892
- bl ErrorHandling
+ bl GF_AssertFail
_0223A892:
ldr r0, [r4]
mov r1, #0
@@ -27863,7 +27863,7 @@ _0223AD20:
ldr r0, [r0, #0x24]
cmp r0, #0
bne _0223AD2C
- bl ErrorHandling
+ bl GF_AssertFail
_0223AD2C:
ldrb r0, [r4, #0xf]
add r0, r0, #1
@@ -28948,7 +28948,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #9
mov r2, #1
add r3, sp, #0xc
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
add r5, r0, #0
ldr r0, [sp, #0xc]
add r1, r4, #0
@@ -28966,7 +28966,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #0x11
mov r2, #1
add r3, sp, #0xc
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
add r5, r0, #0
ldr r0, [sp, #0xc]
add r1, r4, #0
@@ -28984,7 +28984,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #0xf
mov r2, #1
add r3, sp, #0xc
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
add r5, r0, #0
ldr r0, [sp, #0xc]
add r1, r4, #0
@@ -29002,7 +29002,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #7
mov r2, #1
add r3, sp, #8
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r1, r4, #0
add r5, r0, #0
ldr r0, [sp, #8]
@@ -29020,7 +29020,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #8
mov r2, #1
add r3, sp, #8
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r1, r4, #0
add r5, r0, #0
ldr r0, [sp, #8]
@@ -29038,7 +29038,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #0x10
mov r2, #1
add r3, sp, #8
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r1, r4, #0
add r5, r0, #0
ldr r0, [sp, #8]
@@ -29056,7 +29056,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #0x1b
mov r2, #1
add r3, sp, #8
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r1, r4, #0
add r5, r0, #0
ldr r0, [sp, #8]
@@ -29305,7 +29305,7 @@ MOD12_0223B878: ; 0x0223B878
sub r0, #0x97
cmp r1, r0
bne _0223B88A
- bl ErrorHandling
+ bl GF_AssertFail
_0223B88A:
mov r0, #0x96
ldrsb r1, [r5, r0]
@@ -29323,7 +29323,7 @@ _0223B8A2:
ldr r0, [r4, #0x18]
cmp r0, #0
bne _0223B8AC
- bl ErrorHandling
+ bl GF_AssertFail
_0223B8AC:
ldr r0, [r4, #0x14]
bl FUN_02020988
@@ -29881,7 +29881,7 @@ MOD12_0223BCD8: ; 0x0223BCD8
ldr r4, [sp, #0x9c]
cmp r0, #0
beq _0223BCF0
- bl ErrorHandling
+ bl GF_AssertFail
_0223BCF0:
ldr r0, [sp, #0x18]
mov r2, #0
@@ -29905,7 +29905,7 @@ _0223BCF0:
add r6, r6, #1
_0223BD1C:
add r0, sp, #0x38
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -30080,7 +30080,7 @@ MOD12_0223BE64: ; 0x0223BE64
ldr r0, [r4, #0xc]
cmp r0, #0
beq _0223BE74
- bl ErrorHandling
+ bl GF_AssertFail
_0223BE74:
add r0, r4, #0
add r0, #0x98
@@ -30605,7 +30605,7 @@ _0223C252:
ldr r0, [r0]
cmp r0, #0
beq _0223C262
- bl ErrorHandling
+ bl GF_AssertFail
_0223C262:
add r4, r4, #1
_0223C264:
@@ -31107,7 +31107,7 @@ _0223C618:
add r2, r2, #4
cmp r0, #0x44
blt _0223C602
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
add sp, #0x34
pop {r4, r5, r6, r7, pc}
@@ -33052,7 +33052,7 @@ _0223D532:
mvn r4, r4
cmp r0, r4
bne _0223D540
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
_0223D540:
strb r3, [r1, r0]
@@ -33295,7 +33295,7 @@ _0223D6DA:
add r7, r0, #0
b _0223D70C
_0223D708:
- bl ErrorHandling
+ bl GF_AssertFail
_0223D70C:
cmp r7, #1
bne _0223D750
@@ -33988,7 +33988,7 @@ MOD12_0223DC28: ; 0x0223DC28
str r2, [sp]
cmp r0, #0
beq _0223DC46
- bl ErrorHandling
+ bl GF_AssertFail
_0223DC46:
ldr r0, _0223DCB0 ; =0x0000106C
mov r2, #0x28
@@ -34173,7 +34173,7 @@ _0223DD92:
strb r0, [r2, r3]
pop {r3, r4, r5, pc}
_0223DDA4:
- bl ErrorHandling
+ bl GF_AssertFail
_0223DDA8:
pop {r3, r4, r5, pc}
nop
@@ -34549,7 +34549,7 @@ MOD12_0223E068: ; 0x0223E068
beq _0223E07E
cmp r5, #0
bne _0223E07E
- bl ErrorHandling
+ bl GF_AssertFail
_0223E07E:
cmp r6, #6
bls _0223E084
@@ -34722,7 +34722,7 @@ _0223E16A:
add sp, #8
pop {r4, r5, r6, pc}
_0223E1E4:
- bl ErrorHandling
+ bl GF_AssertFail
_0223E1E8:
add sp, #8
pop {r4, r5, r6, pc}
@@ -34767,7 +34767,7 @@ _0223E210:
add r0, r5, #0
add r0, #0x78
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -34799,7 +34799,7 @@ MOD12_0223E274: ; 0x0223E274
add r6, r2, #0
cmp r4, #8
blo _0223E286
- bl ErrorHandling
+ bl GF_AssertFail
_0223E286:
lsl r3, r4, #2
ldr r2, _0223E2A0 ; =MOD12_02246224
@@ -34891,7 +34891,7 @@ MOD12_0223E32C: ; 0x0223E32C
ldr r0, [r5, r0]
cmp r0, #0
beq _0223E33E
- bl ErrorHandling
+ bl GF_AssertFail
_0223E33E:
mov r0, #0x17
mov r1, #0x10
@@ -35065,7 +35065,7 @@ MOD12_0223E488: ; 0x0223E488
add r7, r2, #0
cmp r4, #8
blo _0223E49A
- bl ErrorHandling
+ bl GF_AssertFail
_0223E49A:
ldr r0, _0223E51C ; =0x00001BF1
ldrb r0, [r5, r0]
@@ -35104,7 +35104,7 @@ _0223E49A:
add r0, r5, #0
add r0, #0x88
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -35570,7 +35570,7 @@ MOD12_0223E868: ; 0x0223E868
ldr r0, [r4, r0]
cmp r0, #0
beq _0223E87A
- bl ErrorHandling
+ bl GF_AssertFail
_0223E87A:
mov r0, #0x81
lsl r0, r0, #2
@@ -35613,7 +35613,7 @@ MOD12_0223E8B4: ; 0x0223E8B4
ldr r0, [r4, #4]
cmp r0, #0
bne _0223E8C8
- bl ErrorHandling
+ bl GF_AssertFail
_0223E8C8:
cmp r5, #0
bne _0223E8D0
@@ -35753,7 +35753,7 @@ MOD12_0223E9C4: ; 0x0223E9C4
add r6, r2, #0
cmp r5, #0x21
blo _0223E9D6
- bl ErrorHandling
+ bl GF_AssertFail
_0223E9D6:
ldr r0, _0223EA3C ; =MOD12_0224637C
lsl r1, r5, #2
@@ -38064,7 +38064,7 @@ _0223FBA6:
mov r0, #4
pop {r3, pc}
_0223FBAA:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.align 2, 0
@@ -38099,7 +38099,7 @@ _0223FBDC:
mov r0, #3
pop {r3, pc}
_0223FBE0:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
@@ -39925,7 +39925,7 @@ MOD12_022409CC: ; 0x022409CC
add r4, r0, #0
cmp r5, #4
blo _022409DA
- bl ErrorHandling
+ bl GF_AssertFail
_022409DA:
ldr r0, _02240A0C ; =MOD12_022464C0
cmp r4, #3
@@ -39967,7 +39967,7 @@ MOD12_02240A10: ; 0x02240A10
add r4, r3, #0
cmp r7, #4
blo _02240A22
- bl ErrorHandling
+ bl GF_AssertFail
_02240A22:
mov r0, #0
mvn r0, r0
@@ -40469,7 +40469,7 @@ MOD12_02240DC4: ; 0x02240DC4
add r4, r0, #0
cmp r4, #5
blo _02240DD0
- bl ErrorHandling
+ bl GF_AssertFail
_02240DD0:
ldr r0, _02240DD8 ; =MOD12_022464D0
lsl r1, r4, #2
@@ -40494,7 +40494,7 @@ MOD12_02240DE4: ; 0x02240DE4
add r4, r0, #0
cmp r4, #5
blo _02240DF0
- bl ErrorHandling
+ bl GF_AssertFail
_02240DF0:
ldr r0, _02240DF8 ; =MOD12_022464C8
ldrb r0, [r0, r4]
@@ -40660,7 +40660,7 @@ _02240F14:
add r4, r4, #1
cmp r4, #0x20
blt _02240F00
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
@@ -40695,7 +40695,7 @@ MOD12_02240F3C: ; 0x02240F3C
str r3, [sp]
cmp r4, r0
bls _02240F5A
- bl ErrorHandling
+ bl GF_AssertFail
_02240F5A:
add r0, r5, #0
mov r2, #2
@@ -40750,7 +40750,7 @@ MOD12_02240FB0: ; 0x02240FB0
str r3, [sp]
cmp r7, r0
bls _02240FCC
- bl ErrorHandling
+ bl GF_AssertFail
_02240FCC:
add r0, r5, #0
mov r2, #2
@@ -40840,7 +40840,7 @@ _02241066:
ldrh r0, [r5, #4]
cmp r4, r0
blt _02241070
- bl ErrorHandling
+ bl GF_AssertFail
_02241070:
add r0, r5, #0
add r1, r6, #0
@@ -42062,14 +42062,14 @@ _02241B08: .word 0x00000133
thumb_func_start MOD12_02241B0C
MOD12_02241B0C: ; 0x02241B0C
push {r3, r4, r5, lr}
- ldr r3, _02241B44 ; =UNK_021064B8
+ ldr r3, _02241B44 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _02241B48 ; =UNK_021064C0
+ ldr r3, _02241B48 ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0
add r4, r0, #0
ldr r3, [r3]
@@ -42079,17 +42079,17 @@ MOD12_02241B0C: ; 0x02241B0C
add r5, r0, #0
cmp r4, #0
bne _02241B34
- bl ErrorHandling
+ bl GF_AssertFail
_02241B34:
cmp r5, #0
bne _02241B3C
- bl ErrorHandling
+ bl GF_AssertFail
_02241B3C:
bl FUN_02012CC8
pop {r3, r4, r5, pc}
nop
-_02241B44: .word UNK_021064B8
-_02241B48: .word UNK_021064C0
+_02241B44: .word NNS_GfdDefaultFuncAllocTexVram
+_02241B48: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_start MOD12_02241B4C
MOD12_02241B4C: ; 0x02241B4C
@@ -42098,7 +42098,7 @@ MOD12_02241B4C: ; 0x02241B4C
ldr r0, [r4]
cmp r0, #0
bne _02241B5A
- bl ErrorHandling
+ bl GF_AssertFail
_02241B5A:
mov r1, #0xf3
mov r5, #0
@@ -42170,7 +42170,7 @@ MOD12_02241BA0: ; 0x02241BA0
mov r0, #0x2d
mov r1, #0x12
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -42182,7 +42182,7 @@ MOD12_02241BA0: ; 0x02241BA0
mov r0, #0x2d
mov r1, #0x13
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
str r0, [sp]
mov r0, #0
@@ -42233,7 +42233,7 @@ _02241C1E:
_02241C2C:
cmp r5, #4
bne _02241C34
- bl ErrorHandling
+ bl GF_AssertFail
_02241C34:
ldr r0, _02241CE8 ; =0x00000438
ldr r1, _02241CEC ; =0x00000439
@@ -43323,7 +43323,7 @@ _02242462:
ldr r0, [r0]
cmp r0, #0
beq _0224247A
- bl ErrorHandling
+ bl GF_AssertFail
_0224247A:
mov r1, #0x32
mov r0, #0x18
@@ -43404,7 +43404,7 @@ MOD12_02242500: ; 0x02242500
beq _02242516
cmp r5, #0
bne _02242516
- bl ErrorHandling
+ bl GF_AssertFail
_02242516:
cmp r6, #3
bhi _022425EC
@@ -43509,7 +43509,7 @@ _02242596:
add sp, #8
pop {r4, r5, r6, pc}
_022425EC:
- bl ErrorHandling
+ bl GF_AssertFail
_022425F0:
add sp, #8
pop {r4, r5, r6, pc}
@@ -43554,7 +43554,7 @@ _02242618:
add r0, r5, #0
add r0, #0x34
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
str r4, [sp, #4]
@@ -43586,7 +43586,7 @@ MOD12_02242678: ; 0x02242678
add r6, r2, #0
cmp r4, #7
blo _0224268A
- bl ErrorHandling
+ bl GF_AssertFail
_0224268A:
lsl r3, r4, #2
ldr r2, _022426A4 ; =MOD12_0224664C
@@ -43630,7 +43630,7 @@ MOD12_022426BC: ; 0x022426BC
mov r0, #0x2d
mov r1, #0x16
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -43642,7 +43642,7 @@ MOD12_022426BC: ; 0x022426BC
mov r0, #0x2d
mov r1, #0x15
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0x30]
mov r1, #1
bl FUN_02018744
@@ -43789,7 +43789,7 @@ MOD12_02242804: ; 0x02242804
mov r0, #0x2d
mov r1, #0x1a
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -43800,7 +43800,7 @@ MOD12_02242804: ; 0x02242804
ldr r2, [r6, #0x30]
mov r0, #0x2d
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -43812,7 +43812,7 @@ MOD12_02242804: ; 0x02242804
mov r0, #0x2d
mov r1, #0x19
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r6, #0x30]
mov r1, #1
bl FUN_02018744
@@ -43894,13 +43894,13 @@ _022428E6:
str r0, [sp, #0x14]
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #5
lsl r0, r0, #4
str r0, [sp, #0x18]
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
str r0, [sp]
mov r0, #0
@@ -44869,7 +44869,7 @@ _022430EC:
add r4, r2, r0
b _02243114
_0224310C:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_02243114:
@@ -44901,7 +44901,7 @@ _02243144:
ldr r0, [sp, #0xc]
cmp r0, #0xc
ble _0224314E
- bl ErrorHandling
+ bl GF_AssertFail
_0224314E:
mov r0, #0
str r0, [sp, #8]
@@ -45562,7 +45562,7 @@ _02243628:
str r0, [r4]
b _02243638
_02243630:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x34
pop {r4, r5, r6, r7, pc}
_02243638:
@@ -47014,7 +47014,7 @@ _022440EE:
ldr r0, [r4]
mov r1, #0xff
add r0, #0x34
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
add r0, #0x34
bl CopyWindowToVram
@@ -47498,7 +47498,7 @@ _022444C4:
blt _022444C4
b _022444D8
_022444D4:
- bl ErrorHandling
+ bl GF_AssertFail
_022444D8:
ldr r0, _022444F0 ; =MOD12_022444F8
ldr r2, _022444F4 ; =0x00007530
@@ -47817,7 +47817,7 @@ MOD12_0224473C: ; 0x0224473C
mov r0, #0x5a
add r1, r1, #3
str r2, [sp]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
pop {r3, pc}
.align 2, 0
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
index 0e89d90f..5aee0b46 100644
--- a/arm9/modules/13/asm/module_13_arm2.s
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -25937,27 +25937,27 @@ _022341D8: .word 0x0000A001
arm_func_start MOD13_022341DC
MOD13_022341DC: ; 0x022341DC
- ldr ip, _022341E4 ; =FUN_020C01A0
+ ldr ip, _022341E4 ; =NNS_SndMain
bx ip
.align 2, 0
-_022341E4: .word FUN_020C01A0
+_022341E4: .word NNS_SndMain
arm_func_start MOD13_022341E8
MOD13_022341E8: ; 0x022341E8
ldr r0, _02234200 ; =0x02243154
- ldr ip, _02234204 ; =FUN_020C10A4
+ ldr ip, _02234204 ; =NNS_SndPlayerStopSeq
ldr r0, [r0]
mov r1, #0
add r0, r0, #0x90
bx ip
.align 2, 0
_02234200: .word MOD13_02243154
-_02234204: .word FUN_020C10A4
+_02234204: .word NNS_SndPlayerStopSeq
arm_func_start MOD13_02234208
MOD13_02234208: ; 0x02234208
ldr r2, _02234224 ; =0x02243154
- ldr ip, _02234228 ; =FUN_020C0EA4
+ ldr ip, _02234228 ; =NNS_SndPlayerSetTrackPitch
ldr r3, [r2]
mov r2, r1
mov r1, r0
@@ -25965,32 +25965,32 @@ MOD13_02234208: ; 0x02234208
bx ip
.align 2, 0
_02234224: .word MOD13_02243154
-_02234228: .word FUN_020C0EA4
+_02234228: .word NNS_SndPlayerSetTrackPitch
arm_func_start MOD13_0223422C
MOD13_0223422C: ; 0x0223422C
ldr r2, _02234244 ; =0x02243154
mov r1, r0
ldr r0, [r2]
- ldr ip, _02234248 ; =FUN_020C0F40
+ ldr ip, _02234248 ; =NNS_SndPlayerSetVolume
add r0, r0, #0x90
bx ip
.align 2, 0
_02234244: .word MOD13_02243154
-_02234248: .word FUN_020C0F40
+_02234248: .word NNS_SndPlayerSetVolume
arm_func_start MOD13_0223424C
MOD13_0223424C: ; 0x0223424C
ldr r1, _02234268 ; =0x02243154
mov r2, r0
ldr r0, [r1]
- ldr ip, _0223426C ; =FUN_020C3888
+ ldr ip, _0223426C ; =NNS_SndArcPlayerStartSeqArc
mov r1, #0
add r0, r0, #0x90
bx ip
.align 2, 0
_02234268: .word MOD13_02243154
-_0223426C: .word FUN_020C3888
+_0223426C: .word NNS_SndArcPlayerStartSeqArc
arm_func_start MOD13_02234270
MOD13_02234270: ; 0x02234270
@@ -26024,17 +26024,17 @@ MOD13_022342A0: ; 0x022342A0
ldr r1, _0223432C ; =0x02243154
ldr r1, [r1]
str r0, [r1, #0x94]
- bl SDAT_Init
+ bl NNS_SndInit
ldr r0, _0223432C ; =0x02243154
ldr r0, [r0]
ldr r1, [r0, #0x94]
- bl FUN_020C2444
+ bl NNS_SndArcInitOnMemory
mov r0, #0
- bl FUN_020C39CC
+ bl NNS_SndArcPlayerSetup
ldr r0, _0223432C ; =0x02243154
ldr r0, [r0]
add r0, r0, #0x90
- bl FUN_020C0F80
+ bl NNS_SndHandleInit
mov r0, #0
ldr r1, _02234334 ; =MOD13_022341DC
mov r2, r0
@@ -33219,7 +33219,7 @@ MOD13_0223A440: ; 0x0223A440
str r1, [sp, #0xc]
ldrb r1, [r4, #0x36]
ldrb r2, [r4, #0x37]
- bl FUN_020B5E50
+ bl NNS_G2dArrangeOBJ1D
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -33245,7 +33245,7 @@ MOD13_0223A4F0: ; 0x0223A4F0
str lr, [sp, #8]
add r0, r0, #0x20
str ip, [sp, #0xc]
- bl FUN_020B7168
+ bl NNSi_G2dTextCanvasDrawTextRect
add sp, sp, #0x14
ldmia sp!, {pc}
@@ -33271,14 +33271,14 @@ _0223A564:
ldr r0, [r0]
add r5, r0, r4
mov r0, r5
- bl FUN_020B5CE4
+ bl NNS_G2dFontFindGlyphIndex
mov r1, r0
ldr r0, _0223A5EC ; =0x0000FFFF
cmp r1, r0
ldreq r0, [r5]
ldreqh r1, [r0, #2]
mov r0, r5
- bl FUN_020B5C88
+ bl NNS_G2dFontGetCharWidthsFromIndex
ldrh r1, [r5, #8]
ldrh r2, [r7]
ldr r3, [sp, #8]
@@ -33319,7 +33319,7 @@ MOD13_0223A5F0: ; 0x0223A5F0
mla r1, ip, r3, lr
mov r3, r2
mov r2, r4
- bl FUN_020B63CC
+ bl NNS_G2dCharCanvasDrawChar
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
@@ -33334,7 +33334,7 @@ MOD13_0223A634: ; 0x0223A634
str lr, [sp]
add r0, r0, #0x20
str ip, [sp, #4]
- bl FUN_020B7218
+ bl NNSi_G2dTextCanvasDrawText
add sp, sp, #0xc
ldmia sp!, {pc}
@@ -33504,7 +33504,7 @@ _0223A88C:
mov r0, r6
mov r2, r4
mov r3, r5
- bl FUN_020B6388
+ bl NNS_G2dCharCanvasInitForBG
ldr r1, _0223A954 ; =0x022431A4
mov r0, #0xc
ldr r2, [r1]
@@ -33533,7 +33533,7 @@ _0223A8E0:
str r7, [sp, #8]
mov r4, #0xf
str r4, [sp, #0xc]
- bl FUN_020B6240
+ bl NNS_G2dMapScrToCharText
mov r0, r6
mov r1, #0
bl MOD13_0223A4D8
@@ -33601,7 +33601,7 @@ MOD13_0223A9A4: ; 0x0223A9A4
mov r0, r6
strh r1, [r4, #0x34]
mov r1, r5
- bl FUN_020B6180
+ bl NNSi_G2dCalcRequiredOBJ
ldr r1, [sp, #0x20]
cmp r7, #1
str r0, [r1]
@@ -33614,7 +33614,7 @@ MOD13_0223A9A4: ; 0x0223A9A4
mov r2, r6
mov r3, r5
add r1, ip, r7, lsl #7
- bl FUN_020B62F8
+ bl NNS_G2dCharCanvasInitForOBJ1D
ldr r2, [r4, #0x18]
mov r0, r4
mov r1, #0
@@ -33694,7 +33694,7 @@ _0223AB20:
add r0, r2, r8, lsl #2
ldr r1, [r0, #0x78c]
add r0, r2, r7
- bl FUN_020B5D3C
+ bl NNS_G2dFontInitUTF16
add r8, r8, #1
cmp r8, #2
add r7, r7, #0xc
@@ -34004,7 +34004,7 @@ MOD13_0223AF48: ; 0x0223AF48
ldr r0, _0223AF8C ; =0x022431A8
mov r1, r5
ldr r0, [r0]
- bl FUN_020ADDF0
+ bl NNS_FndFreeToExpHeap
mov r0, r4
bl OS_EnableIrqMask
add sp, sp, #4
@@ -34026,7 +34026,7 @@ MOD13_0223AF90: ; 0x0223AF90
ldmeqia sp!, {r4, r5, pc}
ldr r0, _0223AFDC ; =0x022431A8
ldr r0, [r0]
- bl FUN_020ADDF0
+ bl NNS_FndFreeToExpHeap
mov r0, r4
bl OS_EnableIrqMask
mov r0, #0
@@ -34060,7 +34060,7 @@ MOD13_0223B004: ; 0x0223B004
ldr r0, [r1]
mov r1, r6
mov r2, r5
- bl tempName_NNS_FndAllocFromExpHeapEx
+ bl NNS_FndAllocFromExpHeapEx
movs r5, r0
bne _0223B03C
bl OS_Terminate
@@ -34078,7 +34078,7 @@ MOD13_0223B050: ; 0x0223B050
sub sp, sp, #4
ldr r0, _0223B078 ; =0x022431A8
ldr r0, [r0]
- bl thunk_FUN_020adc8c
+ bl NNS_FndDestroyExpHeap
ldr r0, _0223B078 ; =0x022431A8
mov r1, #0
str r1, [r0]
@@ -34097,7 +34097,7 @@ MOD13_0223B07C: ; 0x0223B07C
mov r0, r4
mov r1, #0x40000
mov r2, #0
- bl tempName_NNS_FndCreateExpHeapEx
+ bl NNS_FndCreateExpHeapEx
ldr r1, _0223B0B8 ; =0x022431A8
cmp r0, #0
str r0, [r1]
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index 37a18d6d..bdfed5b1 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -101,7 +101,7 @@ _021D759E:
blx r1
pop {r4, pc}
_021D75AA:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #1
pop {r4, pc}
nop
@@ -122,8 +122,8 @@ StoragePC_Overlay_Teardown: ; 0x021D75B8
mov r0, #0x47
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02029EF8
- bl FUN_02029F08
+ bl Sav2_Chatot_get
+ bl Chatot_invalidate
_021D75DE:
mov r0, #0x45
lsl r0, r0, #2
@@ -3418,7 +3418,7 @@ _021D90B0:
str r0, [r5]
pop {r3, r4, r5, pc}
_021D90F2:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #1
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -7587,7 +7587,7 @@ MOD14_021DB220: ; 0x021DB220
ldr r0, [r5, r0]
cmp r0, #0
bne _021DB2C8
- bl ErrorHandling
+ bl GF_AssertFail
_021DB2C8:
mov r0, #0x69
lsl r0, r0, #2
@@ -8399,7 +8399,7 @@ _021DB8B6:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DB8C6:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -10519,7 +10519,7 @@ _021DC79C:
mov r1, #0x10
orr r1, r2
str r1, [r0]
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r2, #0x80
@@ -10547,7 +10547,7 @@ _021DC79C:
mov r0, #0x51
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0xa
str r0, [sp]
mov r0, #0x51
@@ -10558,7 +10558,7 @@ _021DC79C:
mov r1, #0x1a
add r2, r5, #0
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #0
mov r1, #0xa
bl FUN_02002C84
@@ -10765,7 +10765,7 @@ MOD14_021DCA0C: ; 0x021DCA0C
bl MOD14_021DDEF4
bl G3X_ResetMtxStack
bl G3X_ResetMtxStack_2
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
mov r0, #0x56
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -10910,7 +10910,7 @@ _021DCB3A:
str r0, [r1, #8]
pop {r3, r4, r5, r6, r7, pc}
_021DCB78:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021DCB7E:
add r4, r4, #1
@@ -10919,7 +10919,7 @@ _021DCB7E:
blo _021DCB3A
pop {r3, r4, r5, r6, r7, pc}
_021DCB88:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
nop
_021DCB90: .word MOD14_021E63D0
@@ -12965,7 +12965,7 @@ MOD14_021DDB50: ; 0x021DDB50
ldr r2, [r5, r2]
mov r0, #0x12
mov r1, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -12996,7 +12996,7 @@ MOD14_021DDB50: ; 0x021DDB50
ldr r2, [r5, r2]
mov r0, #0x12
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0xe0
str r0, [sp]
mov r0, #0xa
@@ -13005,7 +13005,7 @@ MOD14_021DDB50: ; 0x021DDB50
mov r0, #0x12
mov r1, #5
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r4, #0
bl MOD14_021DC3C4
cmp r0, #4
@@ -13022,7 +13022,7 @@ MOD14_021DDB50: ; 0x021DDB50
ldr r2, [r5, r2]
mov r0, #0x12
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
_021DDBF2:
mov r0, #0x43
lsl r0, r0, #4
@@ -13079,7 +13079,7 @@ _021DDC74: .word 0x0000B22C
thumb_func_start MOD14_021DDC78
MOD14_021DDC78: ; 0x021DDC78
push {r3, lr}
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
mov r0, #1
add r1, r0, #0
@@ -13475,7 +13475,7 @@ MOD14_021DDF30: ; 0x021DDF30
add r6, r2, #0
cmp r0, #0x20
blo _021DDF44
- bl ErrorHandling
+ bl GF_AssertFail
_021DDF44:
ldr r2, _021DDF60 ; =MOD14_021E6A0C
mov r1, #0xc
@@ -13736,7 +13736,7 @@ MOD14_021DE138: ; 0x021DE138
ldrb r1, [r1, r2]
add r2, sp, #8
mov r3, #0xa
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [sp, #4]
cmp r0, #0
beq _021DE1C0
@@ -13810,17 +13810,17 @@ MOD14_021DE1D0: ; 0x021DE1D0
ldr r1, _021DE26C ; =MOD14_021E65AD
ldrb r1, [r1, r3]
mov r3, #0xa
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0x10]
cmp r0, #0
beq _021DE268
add r1, sp, #0x14
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
beq _021DE262
mov r0, #0xa
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r4, r0, #0
beq _021DE250
ldr r0, _021DE270 ; =0x00005984
@@ -13890,12 +13890,12 @@ MOD14_021DE278: ; 0x021DE278
ldr r1, _021DE2E0 ; =MOD14_021E65AC
ldrb r1, [r1, r3]
mov r3, #0xa
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #4]
cmp r0, #0
beq _021DE2DC
add r1, sp, #8
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r0, _021DE2E4 ; =0x00005984
mov r1, #3
ldr r0, [r5, r0]
@@ -15753,7 +15753,7 @@ MOD14_021DF07C: ; 0x021DF07C
mov r0, #0x12
mov r1, #0xd
add r3, #0x1c
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5, #0x14]
mov r0, #0xa
add r3, r5, #0
@@ -15762,7 +15762,7 @@ MOD14_021DF07C: ; 0x021DF07C
mov r1, #0xe
mov r2, #1
add r3, #0x20
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r5, #0x18]
ldr r0, [r5, #0x14]
cmp r0, #0
@@ -15793,7 +15793,7 @@ MOD14_021DF144: ; 0x021DF144
sub sp, #0x38
add r4, r0, #0
add r0, #0x24
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -15806,7 +15806,7 @@ MOD14_021DF144: ; 0x021DF144
str r0, [sp, #0x10]
mov r0, #0x12
mov r1, #0xc
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
ldr r0, _021DF310 ; =0x00000785
ldrb r0, [r4, r0]
cmp r0, #1
@@ -18635,7 +18635,7 @@ MOD14_021E078C: ; 0x021E078C
add r4, r1, #0
add r6, r2, #0
str r3, [sp, #8]
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
bl FUN_0206B888
add r1, r0, #0
mov r0, #0xa
@@ -18645,21 +18645,21 @@ MOD14_021E078C: ; 0x021E078C
mov r0, #0x13
mov r2, #1
mov r3, #0x40
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
bl FUN_0206B888
add r1, r0, #0
mov r0, #0x13
add r2, sp, #0x14
mov r3, #0xa
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [sp, #0xc]
cmp r0, #0
beq _021E0818
add r0, sp, #0x18
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
ldr r0, [sp, #0xc]
add r1, sp, #0x10
- bl FUN_020B00F0
+ bl NNS_G2dGetUnpackedPaletteCompressInfo
ldr r2, [sp, #0x14]
add r7, r0, #0
ldr r0, [r2, #0xc]
@@ -18678,14 +18678,14 @@ MOD14_021E078C: ; 0x021E078C
ldr r1, [sp, #0x10]
mov r2, #0xc0
mov r3, #1
- bl FUN_020B10E8
+ bl NNS_G2dLoadPaletteEx
b _021E0812
_021E0806:
ldr r0, [sp, #0x14]
mov r1, #0xc0
mov r2, #1
add r3, sp, #0x18
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
_021E0812:
ldr r0, [sp, #0xc]
bl FreeToHeap
@@ -18697,7 +18697,7 @@ _021E0818:
mov r1, #0x15
mov r2, #1
add r3, #0x10
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5, #8]
mov r0, #0xa
str r0, [sp]
@@ -18705,7 +18705,7 @@ _021E0818:
mov r1, #0x16
mov r2, #1
add r3, r5, #4
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r5]
mov r0, #0xa
add r3, r5, #0
@@ -18714,7 +18714,7 @@ _021E0818:
mov r1, #0x17
mov r2, #1
add r3, #0x1c
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5, #0x14]
mov r0, #0xa
add r3, r5, #0
@@ -18723,7 +18723,7 @@ _021E0818:
mov r1, #0x18
mov r2, #1
add r3, #0x20
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r5, #0x18]
mov r0, #0x13
mov r1, #0xa
@@ -18805,7 +18805,7 @@ MOD14_021E08E4: ; 0x021E08E4
_021E08F4:
add r0, r5, #4
str r6, [r5]
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, r4, #0
add r5, #0x34
sub r4, r4, #1
@@ -18913,7 +18913,7 @@ MOD14_021E0940: ; 0x021E0940
bl GetBoxMonData
strh r0, [r4, #0x2e]
add r0, r4, #4
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, r5, #0
add r0, #0x4c
str r0, [sp]
@@ -18926,7 +18926,7 @@ MOD14_021E0940: ; 0x021E0940
add r0, r5, #0
add r0, #0x4c
add r1, sp, #0x1c
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -18942,7 +18942,7 @@ MOD14_021E0940: ; 0x021E0940
ldr r1, [sp, #0x60]
ldr r0, [sp, #0x1c]
lsl r1, r1, #5
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
add r0, r4, #4
str r0, [sp, #0x20]
ldr r0, [sp, #0x5c]
@@ -18957,7 +18957,7 @@ MOD14_021E0940: ; 0x021E0940
str r0, [r4]
cmp r0, #0
bne _021E0A36
- bl ErrorHandling
+ bl GF_AssertFail
_021E0A36:
ldrh r1, [r4, #0x2c]
ldr r0, [r4]
@@ -19031,10 +19031,10 @@ MOD14_021E0A60: ; 0x021E0A60
bl GetBoxMonData
strh r0, [r4, #0x2e]
add r0, r4, #4
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
ldr r0, [sp, #0x58]
add r1, sp, #0x18
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -19050,7 +19050,7 @@ MOD14_021E0A60: ; 0x021E0A60
ldr r1, [sp, #0x6c]
ldr r0, [sp, #0x18]
lsl r1, r1, #5
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
add r0, r4, #4
str r0, [sp, #0x1c]
ldr r0, [sp, #0x68]
@@ -19065,7 +19065,7 @@ MOD14_021E0A60: ; 0x021E0A60
str r0, [r4]
cmp r0, #0
bne _021E0B28
- bl ErrorHandling
+ bl GF_AssertFail
_021E0B28:
ldrh r1, [r4, #0x2c]
ldr r0, [r4]
@@ -19160,7 +19160,7 @@ MOD14_021E0BBC: ; 0x021E0BBC
cmp r0, #0
beq _021E0C18
add r0, r4, #4
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, r5, #0
add r0, #0x4c
str r0, [sp]
@@ -19173,7 +19173,7 @@ MOD14_021E0BBC: ; 0x021E0BBC
add r5, #0x4c
add r0, r5, #0
add r1, sp, #4
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -19188,7 +19188,7 @@ MOD14_021E0BBC: ; 0x021E0BBC
str r1, [r0, #0x10]
ldr r0, [sp, #4]
lsl r1, r6, #5
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
ldr r0, [r4]
add r1, r4, #4
bl FUN_02020334
@@ -19277,7 +19277,7 @@ MOD14_021E0C7C: ; 0x021E0C7C
mov r0, #0x12
mov r2, #1
add r3, #0x10
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r4, #8]
mov r0, #0xa
add r3, r4, #0
@@ -19286,7 +19286,7 @@ MOD14_021E0C7C: ; 0x021E0C7C
mov r1, #0xb
mov r2, #1
add r3, #0x14
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r4, #0xc]
ldr r0, [r4, #8]
cmp r0, #0
@@ -19309,7 +19309,7 @@ MOD14_021E0CCC: ; 0x021E0CCC
sub sp, #0x38
add r4, r0, #0
add r0, #0x18
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
mov r0, #0x9d
str r3, [sp]
@@ -19324,7 +19324,7 @@ MOD14_021E0CCC: ; 0x021E0CCC
str r0, [sp, #0x10]
mov r0, #0x12
mov r1, #9
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
ldr r0, [r4, #0x44]
bl MOD14_021DDD48
add r2, r0, #0
@@ -19450,7 +19450,7 @@ _021E0DAC:
mov r1, #0x10
mov r2, #1
add r3, #0x2c
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5, #0x28]
mov r0, #0
str r0, [r5, #0x30]
@@ -19472,7 +19472,7 @@ _021E0DAC:
add r0, r4, #0
mov r2, #1
add r3, #0x38
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
mov r1, #0
str r0, [r5, #0x34]
add r2, r5, #0
@@ -19634,7 +19634,7 @@ MOD14_021E0F40: ; 0x021E0F40
beq _021E0FA0
mov r0, #0xa
mov r1, #4
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #4]
cmp r0, #0
beq _021E0F94
@@ -19696,7 +19696,7 @@ MOD14_021E0FA8: ; 0x021E0FA8
ldr r0, [sp, #0x1c]
mov r2, #1
lsl r3, r3, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
mov r6, #0x5e
str r0, [sp, #0x14]
@@ -19705,7 +19705,7 @@ MOD14_021E0FA8: ; 0x021E0FA8
add r4, r5, #0
_021E0FE0:
add r0, sp, #0x44
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r0, #0
str r0, [sp]
mov r0, #1
@@ -19720,7 +19720,7 @@ _021E0FE0:
ldr r1, [sp, #0x18]
mov r2, #1
mov r3, #0
- bl FUN_02006B38
+ bl GfGfxLoader_SetObjCntFlagsAndLoadImageMapping
ldr r0, [r5, #0x14]
bl MOD14_021DDD48
add r2, r0, #0
@@ -19744,7 +19744,7 @@ _021E0FE0:
str r0, [r4, #0x3c]
cmp r0, #0
bne _021E103E
- bl ErrorHandling
+ bl GF_AssertFail
_021E103E:
ldr r0, [r4, #0x3c]
mov r1, #0
@@ -19758,7 +19758,7 @@ _021E103E:
cmp r0, #2
blo _021E0FE0
add r0, sp, #0x44
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
mov r0, #0xb9
str r3, [sp]
@@ -19772,7 +19772,7 @@ _021E103E:
str r0, [sp, #0x10]
mov r0, #0x12
mov r1, #0xf
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
ldr r0, [r5, #0x14]
bl MOD14_021DDD48
add r2, r0, #0
@@ -19829,7 +19829,7 @@ _021E10D8:
str r0, [r5, #0x4c]
pop {r3, r4, r5, pc}
_021E10EA:
- bl ErrorHandling
+ bl GF_AssertFail
_021E10EE:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -19965,7 +19965,7 @@ _021E11CE:
add r0, #0x30
mov r2, #4
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r0, [r5, #4]
add r0, #0x30
bl FUN_02019548
@@ -20058,7 +20058,7 @@ MOD14_021E1284: ; 0x021E1284
ldr r4, [r0, #4]
add r4, #0x30
add r0, r4, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrh r2, [r5, #2]
ldr r1, [r5, #8]
add r0, r4, #0
@@ -20131,7 +20131,7 @@ _021E12EC:
str r0, [sp, #8]
add r0, r6, #0
lsl r3, r3, #0xa
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
ldr r0, [r4, #0x3c]
bl FUN_0202011C
add r6, r0, #0
@@ -20180,7 +20180,7 @@ _021E12EC:
str r0, [sp, #8]
add r0, r6, #0
lsl r3, r3, #8
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #9
ldr r1, [sp, #0x10]
lsl r0, r0, #0xe
@@ -20233,19 +20233,19 @@ MOD14_021E13F0: ; 0x021E13F0
beq _021E144E
ldr r0, [r4, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0xf
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0xf
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x10]
bl MOD14_021DC408
cmp r0, #0
@@ -20276,19 +20276,19 @@ MOD14_021E1450: ; 0x021E1450
beq _021E14CC
ldr r0, [r4, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0xf
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0xf
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x24]
cmp r0, #0
beq _021E148E
@@ -20334,19 +20334,19 @@ MOD14_021E14D0: ; 0x021E14D0
beq _021E153A
ldr r0, [r4, #4]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0xf
add r0, #0x10
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0xf
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
mov r1, #0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x24]
cmp r0, #0
beq _021E150E
@@ -20615,7 +20615,7 @@ MOD14_021E1704: ; 0x021E1704
ldr r0, [r5, #4]
mov r1, #0
add r0, #0x30
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrb r0, [r4, #0xf]
cmp r0, #0
bne _021E1742
@@ -20679,7 +20679,7 @@ MOD14_021E1750: ; 0x021E1750
mov r1, #0x19
mov r2, #1
add r3, #0x28
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [r4, #0x24]
cmp r0, #0
beq _021E17B6
@@ -20751,7 +20751,7 @@ MOD14_021E1818: ; 0x021E1818
add r6, r0, #0
mov r0, #0xa
mov r1, #2
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r6, #0x18]
cmp r0, #0
beq _021E1848
@@ -20781,7 +20781,7 @@ _021E1848:
ldr r2, [r6]
mov r0, #0x26
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
mov r0, #0xa
@@ -20790,7 +20790,7 @@ _021E1848:
mov r1, #0x18
mov r2, #0
mov r3, #0xe0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r6, #0x20]
ldr r2, _021E1898 ; =0x00000209
lsl r0, r0, #0x18
@@ -20828,7 +20828,7 @@ MOD14_021E189C: ; 0x021E189C
bl MOD14_021E1908
ldr r0, [r5, #0x18]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x10]
ldr r2, [r5, #0x30]
add r1, r4, #0
@@ -20976,7 +20976,7 @@ _021E19E8:
str r0, [sp, #0x14]
add r0, #0x10
str r0, [sp, #0x14]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x10]
mov r6, #0
add r0, #0x21
@@ -21087,7 +21087,7 @@ _021E1AA0:
ldr r1, [r1, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_02019684
+ bl BlitBitmapRect
add sp, #0x1c
pop {r4, r5, pc}
.align 2, 0
@@ -21221,7 +21221,7 @@ MOD14_021E1B9C: ; 0x021E1B9C
mov r1, #0xf
mov r2, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r6, #0x20
ldrb r2, [r6]
add r0, r4, #0
@@ -21443,12 +21443,12 @@ MOD14_021E1D38: ; 0x021E1D38
mov r0, #0x12
mov r1, #4
add r3, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x12
mov r1, #0x1b
add r2, sp, #0x14
mov r3, #0xa
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
ldr r0, [sp, #0x14]
add r1, r5, #0
@@ -21462,7 +21462,7 @@ MOD14_021E1D38: ; 0x021E1D38
mov r1, #0x14
add r2, sp, #0x14
mov r3, #0xa
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
ldr r0, [sp, #0x14]
mov r1, #0x49
@@ -21522,7 +21522,7 @@ _021E1DBC:
mov r1, #0x11
mov r2, #1
add r3, #0x18
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [r5, #0x14]
mov r0, #0xa
str r0, [sp]
@@ -21531,7 +21531,7 @@ _021E1DBC:
add r1, r0, #0
mov r2, #1
add r3, #0x20
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5, #0x1c]
mov r0, #0xa
add r3, r5, #0
@@ -21540,7 +21540,7 @@ _021E1DBC:
mov r1, #2
mov r2, #1
add r3, #0x38
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r5, #0x34]
mov r0, #0xa
add r3, r5, #0
@@ -21549,7 +21549,7 @@ _021E1DBC:
mov r1, #3
mov r2, #1
add r3, #0x30
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r5, #0x2c]
mov r0, #2
mov r1, #0xd
@@ -21631,7 +21631,7 @@ MOD14_021E1EEC: ; 0x021E1EEC
add r7, r0, #0
mov r0, #0xa
mov r1, #3
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r7, #0x10]
cmp r0, #0
beq _021E1F1A
@@ -21925,7 +21925,7 @@ _021E211E:
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x48]
lsl r1, r1, #5
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
add sp, #0x34
pop {r4, r5, r6, r7, pc}
_021E2132:
@@ -22053,7 +22053,7 @@ MOD14_021E21E4: ; 0x021E21E4
pop {r4, r5, r6, pc}
_021E2214:
add r0, sp, #4
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, sp, #4
str r0, [sp]
add r0, r5, #0
@@ -22100,7 +22100,7 @@ MOD14_021E223C: ; 0x021E223C
mov r5, #0x20
_021E227C:
add r0, sp, #0x1c
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, sp, #0x1c
str r0, [sp]
ldr r2, [sp, #8]
@@ -22123,7 +22123,7 @@ _021E227C:
str r0, [r4, #0x48]
cmp r0, #0
bne _021E22B6
- bl ErrorHandling
+ bl GF_AssertFail
_021E22B6:
ldr r0, [r4, #0x48]
mov r1, #0
@@ -22259,7 +22259,7 @@ MOD14_021E2394: ; 0x021E2394
add r6, r0, #0
add r0, r4, #0
mov r1, #7
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -22288,7 +22288,7 @@ MOD14_021E23F8: ; 0x021E23F8
ldr r4, [r0, #0x10]
mov r1, #7
add r0, r4, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl FUN_02019548
pop {r4, pc}
@@ -22303,7 +22303,7 @@ MOD14_021E240C: ; 0x021E240C
str r0, [sp, #0xc]
add r0, #0x10
str r0, [sp, #0xc]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r7, #0
bl MOD14_021E2188
mov r6, #0
@@ -22345,7 +22345,7 @@ MOD14_021E2464: ; 0x021E2464
mov r1, #4
add r4, #0x10
add r0, r4, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl FUN_02019548
pop {r4, pc}
@@ -22698,7 +22698,7 @@ MOD14_021E26E4: ; 0x021E26E4
ldr r0, [r5, #0x10]
mov r1, #4
add r0, #0x20
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021E279C ; =0x00004BF8
add r1, r6, #0
ldr r0, [r5, r2]
@@ -22987,7 +22987,7 @@ MOD14_021E2940: ; 0x021E2940
add r0, sp, #0x30
bl MOD14_021DDDB4
add r0, sp, #0xc
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
lsl r0, r4, #0x10
lsr r0, r0, #0x10
mov r1, #1
@@ -22998,7 +22998,7 @@ MOD14_021E2940: ; 0x021E2940
mov r0, #0x10
mov r2, #0
add r3, sp, #8
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
add r6, r0, #0
mov r0, #1
lsl r0, r0, #0x1a
@@ -23012,7 +23012,7 @@ MOD14_021E2940: ; 0x021E2940
mov r1, #0xbe
ldr r0, [sp, #8]
lsl r1, r1, #8
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
lsl r0, r4, #0x10
lsr r0, r0, #0x10
mov r1, #2
@@ -23025,7 +23025,7 @@ MOD14_021E2940: ; 0x021E2940
mov r0, #0x10
mov r2, #1
mov r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #1
@@ -23141,7 +23141,7 @@ _021E2A74:
mov r1, #6
mov r2, #1
add r3, #0x18
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r5, #0x14]
cmp r0, #0
beq _021E2AB6
@@ -24045,7 +24045,7 @@ MOD14_021E3158: ; 0x021E3158
add r5, r0, #0
cmp r4, #6
blo _021E3166
- bl ErrorHandling
+ bl GF_AssertFail
_021E3166:
mov r0, #0x34
add r5, #0x3c
@@ -24602,7 +24602,7 @@ MOD14_021E355C: ; 0x021E355C
mov r0, #0x12
mov r1, #0x67
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -24614,7 +24614,7 @@ MOD14_021E355C: ; 0x021E355C
mov r0, #0x12
mov r1, #0x64
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -24626,7 +24626,7 @@ MOD14_021E355C: ; 0x021E355C
mov r0, #0x12
mov r1, #0x65
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -24638,7 +24638,7 @@ MOD14_021E355C: ; 0x021E355C
mov r0, #0x12
mov r1, #0x66
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
ldr r0, [r4, #8]
@@ -24684,7 +24684,7 @@ MOD14_021E355C: ; 0x021E355C
add r0, r4, #0
add r0, #0x88
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x88
bl CopyWindowToVram
@@ -24698,7 +24698,7 @@ MOD14_021E355C: ; 0x021E355C
mov r1, #0x68
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r4, #0
bl MOD14_021E3664
_021E365C:
@@ -24714,7 +24714,7 @@ MOD14_021E3664: ; 0x021E3664
add r4, r0, #0
bl MOD14_021E36FC
add r0, sp, #0x14
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -24727,7 +24727,7 @@ MOD14_021E3664: ; 0x021E3664
mov r0, #0x12
mov r1, #0x72
mov r2, #1
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
add r0, r4, #0
add r0, #0xa4
ldr r0, [r0]
@@ -24790,7 +24790,7 @@ MOD14_021E36FC: ; 0x021E36FC
mov r1, #0x73
mov r2, #1
add r3, #0x9c
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
add r1, r4, #0
add r1, #0x98
str r0, [r1]
@@ -24801,7 +24801,7 @@ MOD14_021E36FC: ; 0x021E36FC
mov r1, #0x74
mov r2, #1
add r3, #0xa4
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
add r1, r4, #0
add r1, #0xa0
str r0, [r1]
@@ -24812,7 +24812,7 @@ MOD14_021E36FC: ; 0x021E36FC
mov r1, #0x76
mov r2, #1
add r3, #0xac
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
add r1, r4, #0
add r1, #0xa8
str r0, [r1]
@@ -24823,13 +24823,13 @@ MOD14_021E36FC: ; 0x021E36FC
mov r1, #0x77
mov r2, #1
add r3, #0xb4
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
add r1, r4, #0
add r1, #0xb0
str r0, [r1]
add r0, r4, #0
add r0, #0x18
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0xa
str r0, [sp]
add r4, #0x18
@@ -24838,7 +24838,7 @@ MOD14_021E36FC: ; 0x021E36FC
mov r2, #2
mov r3, #0
str r4, [sp, #4]
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
add sp, #8
pop {r4, pc}
.align 2, 0
@@ -25553,7 +25553,7 @@ _021E3CB2:
str r0, [sp, #0x10]
_021E3CC2:
add r0, sp, #0x14
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, sp, #0x14
str r0, [sp]
add r0, r7, #0
@@ -25586,7 +25586,7 @@ _021E3CC2:
str r0, [r5, #0x54]
cmp r0, #0
bne _021E3D14
- bl ErrorHandling
+ bl GF_AssertFail
_021E3D14:
sub r4, r4, #1
bpl _021E3D1A
@@ -25752,7 +25752,7 @@ MOD14_021E3E1C: ; 0x021E3E1C
bl MOD14_021DC484
str r0, [sp, #0x14]
add r0, sp, #0x18
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -25767,7 +25767,7 @@ MOD14_021E3E1C: ; 0x021E3E1C
mov r0, #0x12
mov r1, #0x75
mov r2, #1
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
add r7, r5, #0
mov r6, #0
add r4, r5, #0
@@ -25799,7 +25799,7 @@ _021E3E58:
str r0, [r4, #0x34]
cmp r0, #0
bne _021E3E94
- bl ErrorHandling
+ bl GF_AssertFail
_021E3E94:
ldr r1, [sp, #0x14]
add r0, r6, #0
@@ -26004,7 +26004,7 @@ MOD14_021E4010: ; 0x021E4010
ldrb r0, [r4, r0]
cmp r0, #0
bne _021E4022
- bl ErrorHandling
+ bl GF_AssertFail
_021E4022:
ldr r0, _021E4034 ; =0x000001CB
ldrb r1, [r4, r0]
@@ -26026,7 +26026,7 @@ MOD14_021E4038: ; 0x021E4038
ldr r4, [sp, #0x20]
cmp r7, #0
bne _021E404C
- bl ErrorHandling
+ bl GF_AssertFail
_021E404C:
cmp r4, #0
beq _021E4052
@@ -27058,7 +27058,7 @@ _021E47AE:
ldrh r3, [r5, #2]
add r0, r7, #0
mov r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #2
ldrsh r0, [r5, r0]
mov r1, #0
@@ -27182,7 +27182,7 @@ MOD14_021E4890: ; 0x021E4890
mov r0, #0x10
mov r2, #0
add r3, sp, #0xc
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #8]
cmp r0, #0
beq _021E4950
@@ -27198,12 +27198,12 @@ MOD14_021E4890: ; 0x021E4890
add r5, r6, #0
_021E48EA:
add r0, sp, #0x10
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
ldr r0, [sp, #0xc]
ldr r1, [r4]
mov r2, #1
add r3, sp, #0x10
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
mov r0, #0
str r0, [sp]
mov r0, #1
@@ -27406,7 +27406,7 @@ _021E4A54:
str r0, [sp, #8]
ldr r3, [r3, r4]
mov r0, #0x10
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
lsl r0, r7, #0x10
lsr r0, r0, #0x10
mov r1, #2
@@ -27421,7 +27421,7 @@ _021E4A54:
mov r0, #0x10
mov r2, #1
lsl r3, r3, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r1, [sp, #0xc]
add r5, #0x1c
lsl r4, r6, #2
@@ -27537,7 +27537,7 @@ MOD14_021E4B58: ; 0x021E4B58
str r0, [sp, #8]
ldr r3, [r3, r6]
mov r0, #0x10
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
lsl r0, r7, #0x10
lsr r0, r0, #0x10
mov r1, #2
@@ -27552,7 +27552,7 @@ MOD14_021E4B58: ; 0x021E4B58
mov r0, #0x10
mov r2, #1
lsl r3, r3, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r1, [sp, #0xc]
add r5, #0x1c
lsl r4, r4, #2
@@ -28191,7 +28191,7 @@ _021E5064:
mov r1, #7
mov r2, #1
add r3, r4, r3
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
mov r3, #0x37
lsl r3, r3, #4
str r0, [r4, r3]
@@ -28202,7 +28202,7 @@ _021E5064:
mov r1, #8
mov r2, #1
add r3, r4, r3
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
mov r1, #0xdd
lsl r1, r1, #2
str r0, [r4, r1]
@@ -28277,7 +28277,7 @@ MOD14_021E5128: ; 0x021E5128
mov r0, #0x12
mov r1, #0x6c
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -28289,7 +28289,7 @@ MOD14_021E5128: ; 0x021E5128
mov r0, #0x12
mov r1, #0x69
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -28301,7 +28301,7 @@ MOD14_021E5128: ; 0x021E5128
mov r0, #0x12
mov r1, #0x6a
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -28313,7 +28313,7 @@ MOD14_021E5128: ; 0x021E5128
mov r0, #0x12
mov r1, #0x6b
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x80
str r0, [sp]
mov r0, #0xa
@@ -28322,7 +28322,7 @@ MOD14_021E5128: ; 0x021E5128
mov r1, #0x6d
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
bl FUN_0206B888
mov r3, #0x80
add r1, r0, #0
@@ -28331,7 +28331,7 @@ MOD14_021E5128: ; 0x021E5128
str r0, [sp, #4]
mov r0, #0x13
mov r2, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #4
mov r1, #0x20
mov r2, #0
@@ -28653,11 +28653,11 @@ _021E541E:
add r0, r7, #0
add r0, #0x78
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r7, #0
add r0, #0x88
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, r7, #0
mov r5, #0
add r4, #0x78
@@ -28797,7 +28797,7 @@ _021E554C:
bl FUN_02019270
add r0, r5, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r7, #8
cmp r6, #2
@@ -28983,7 +28983,7 @@ _021E56B4:
bl FUN_02019270
add r0, r5, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r7, #8
cmp r6, #2
@@ -29032,7 +29032,7 @@ MOD14_021E5718: ; 0x021E5718
add r7, #0x98
add r0, r7, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #8]
bl MOD14_021DC560
cmp r0, #0
@@ -29116,7 +29116,7 @@ MOD14_021E57CC: ; 0x021E57CC
add r4, #0x98
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl FUN_02019548
pop {r4, pc}
@@ -29156,7 +29156,7 @@ _021E581A:
str r0, [sp, #0x14]
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x18]
cmp r0, #1
bne _021E5836
@@ -29299,7 +29299,7 @@ _021E593E:
str r0, [sp, #0x18]
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x1c]
cmp r0, #1
bne _021E595A
@@ -29404,7 +29404,7 @@ MOD14_021E5A08: ; 0x021E5A08
mov r1, #0x6f
mov r2, #1
add r3, #0x60
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r7, #0x5c]
mov r0, #0xa
add r3, r7, #0
@@ -29413,7 +29413,7 @@ MOD14_021E5A08: ; 0x021E5A08
mov r1, #0x70
mov r2, #1
add r3, #0x68
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r7, #0x64]
mov r0, #0x60
str r0, [sp]
@@ -29423,9 +29423,9 @@ MOD14_021E5A08: ; 0x021E5A08
mov r1, #0x71
mov r2, #5
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, sp, #0x48
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -29438,7 +29438,7 @@ MOD14_021E5A08: ; 0x021E5A08
mov r0, #0x12
mov r1, #0x6e
mov r2, #1
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
str r0, [sp, #0x20]
ldr r0, [r7, #4]
bl MOD14_021DDD48
@@ -29583,11 +29583,11 @@ _021E5BA0:
add r0, r0, r6
str r0, [r4, #0x18]
add r0, sp, #0x34
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
ldr r2, [r4, #0x18]
add r0, sp, #0x34
mov r1, #2
- bl FUN_020B1A1C
+ bl NNS_G2dSetImageLocation
ldr r0, _021E5BFC ; =0x04001000
mov r2, #0
ldr r1, [r0]
@@ -29711,7 +29711,7 @@ MOD14_021E5C68: ; 0x021E5C68
add r0, r5, #0
add r0, #0xe8
add r1, sp, #4
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #4]
mov r1, #2
ldr r0, [r0, #0x14]
@@ -29753,7 +29753,7 @@ MOD14_021E5CFC: ; 0x021E5CFC
add r4, r1, r0
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #8]
bl MOD14_021DC3F0
cmp r0, #0
@@ -30126,7 +30126,7 @@ _021E601A:
strb r0, [r4]
pop {r4, r5, r6, pc}
_021E6032:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
thumb_func_start MOD14_021E6038
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index 560be120..97282c02 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -2592,7 +2592,7 @@ MOD15_021D87F8: ; 0x021D87F8
bl FUN_02015F1C
str r5, [r4, #0x18]
str r6, [r4, #0x1c]
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -2745,7 +2745,7 @@ _021D8944:
blt _021D8928
pop {r4, r5, r6, pc}
_021D894E:
- bl ErrorHandling
+ bl GF_AssertFail
_021D8952:
pop {r4, r5, r6, pc}
.align 2, 0
@@ -2925,19 +2925,19 @@ MOD15_021D8AB4: ; 0x021D8AB4
mov r0, #0x66
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0x6b
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0x15
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r0, #0x5d
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -2951,7 +2951,7 @@ MOD15_021D8AB4: ; 0x021D8AB4
str r0, [sp, #0x10]
mov r0, #0x4c
mov r1, #9
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x23
str r0, [sp]
mov r0, #0x66
@@ -2962,7 +2962,7 @@ MOD15_021D8AB4: ; 0x021D8AB4
mov r1, #0xa
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r1, #7
mov r0, #0x23
lsl r3, r1, #6
@@ -2970,7 +2970,7 @@ MOD15_021D8AB4: ; 0x021D8AB4
mov r0, #0x4c
mov r2, #1
add r3, r4, r3
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
mov r3, #0x1d
lsl r3, r3, #4
str r0, [r4, r3]
@@ -2981,7 +2981,7 @@ MOD15_021D8AB4: ; 0x021D8AB4
mov r1, #8
mov r2, #1
add r3, r4, r3
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
mov r1, #0x76
lsl r1, r1, #2
str r0, [r4, r1]
@@ -4345,7 +4345,7 @@ MOD15_021D95E8: ; 0x021D95E8
bl NewMsgDataFromNarc
str r0, [r4, #0x48]
mov r0, #0x23
- bl FUN_02013690
+ bl ListMenuCursorNew
str r0, [r4, #0x50]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -4359,7 +4359,7 @@ MOD15_021D9634: ; 0x021D9634
ldr r0, [r4, #0x50]
cmp r0, #0
beq _021D9642
- bl FUN_020136C0
+ bl DestroyListMenuCursorObj
_021D9642:
ldr r0, [r4, #0x3c]
cmp r0, #0
@@ -4419,7 +4419,7 @@ MOD15_021D9694: ; 0x021D9694
mov r0, #0x4c
add r2, r6, #0
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -4429,7 +4429,7 @@ MOD15_021D9694: ; 0x021D9694
str r0, [sp, #0xc]
mov r0, #0x4c
add r2, r6, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
lsr r4, r0, #5
mov r0, #1
str r0, [sp]
@@ -4495,7 +4495,7 @@ MOD15_021D9694: ; 0x021D9694
mov r0, #0x26
add r2, r6, #0
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r4, #0
add r0, #0xc2
str r0, [r5, #0x60]
@@ -4508,7 +4508,7 @@ MOD15_021D9694: ; 0x021D9694
mov r1, #0x18
mov r2, #0
lsl r3, r3, #6
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r5, #4]
bl MOD15_021D87E0
lsl r0, r0, #0x18
@@ -4565,12 +4565,12 @@ MOD15_021D97E4: ; 0x021D97E4
mov r0, #0x4c
mov r1, #6
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x4c
mov r1, #6
add r2, sp, #8
mov r3, #0x23
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
ldr r0, [sp, #8]
add r1, r5, #0
@@ -4749,7 +4749,7 @@ MOD15_021D9964: ; 0x021D9964
add r0, r4, #0
add r0, #0xc
mov r1, #0xd
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #4]
bl MOD15_021D86E4
cmp r0, #0
@@ -5135,7 +5135,7 @@ MOD15_021D9C30: ; 0x021D9C30
ldrh r3, [r3, #2]
add r0, r4, #0
mov r1, #0xe
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #0xc
pop {r3, r4, pc}
@@ -5194,7 +5194,7 @@ MOD15_021D9CB4: ; 0x021D9CB4
add r5, r1, #0
add r0, #0x1c
mov r1, #9
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r5, #3
bhi _021D9DB0
add r0, r5, r5
@@ -5462,7 +5462,7 @@ MOD15_021D9ECC: ; 0x021D9ECC
add r4, r1, #0
add r0, #0x2c
mov r1, #9
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x48]
ldr r2, [r5, #0x4c]
mov r1, #9
@@ -5509,7 +5509,7 @@ MOD15_021D9ECC: ; 0x021D9ECC
add r1, #0x2c
mov r2, #0
lsl r3, r4, #4
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
add r5, #0x2c
add r0, r5, #0
bl CopyWindowToVram
@@ -5533,13 +5533,13 @@ MOD15_021D9F58: ; 0x021D9F58
add r0, #0x2c
mov r1, #9
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [r5, #0x50]
add r5, #0x2c
add r1, r5, #0
mov r2, #0
lsl r3, r4, #4
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
add sp, #8
pop {r3, r4, r5, pc}
@@ -5605,7 +5605,7 @@ MOD15_021D9FD4: ; 0x021D9FD4
mov r1, #4
add r2, r4, #0
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -5617,7 +5617,7 @@ MOD15_021D9FD4: ; 0x021D9FD4
mov r1, #5
add r2, r4, #0
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r1, _021DA03C ; =0x021DBA00
add r0, r4, #0
mov r2, #0
@@ -5650,7 +5650,7 @@ MOD15_021DA044: ; 0x021DA044
bl FUN_02019270
add r0, sp, #0x10
mov r1, #0xe
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, _021DA0B0 ; =0x00000183
mov r0, #0x1a
add r2, r4, #0
@@ -5863,7 +5863,7 @@ MOD15_021DA1D0: ; 0x021DA1D0
mov r0, #0x4c
mov r1, #2
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -5874,7 +5874,7 @@ MOD15_021DA1D0: ; 0x021DA1D0
mov r0, #0x4c
mov r1, #3
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r2, r0, #0
add r0, r5, #0
add r1, r4, #0
@@ -5998,7 +5998,7 @@ _021DA310:
ldr r0, _021DA3B0 ; =0x000003EE
cmp r6, r0
blo _021DA31A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA31A:
ldr r0, [sp, #0x24]
lsl r3, r7, #0x18
@@ -6021,7 +6021,7 @@ _021DA31A:
bl FUN_02019064
add r0, sp, #0x28
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
add r1, r5, #0
add r2, r0, #0
@@ -6077,7 +6077,7 @@ MOD15_021DA3B4: ; 0x021DA3B4
str r2, [sp, #0x14]
cmp r0, r1
blo _021DA3CC
- bl ErrorHandling
+ bl GF_AssertFail
_021DA3CC:
mov r0, #0xa
str r0, [sp]
@@ -6102,7 +6102,7 @@ _021DA3CC:
add r4, r0, #0
add r0, sp, #0x20
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
bl MOD15_021DB770
add r7, r0, #0
ldr r5, _021DA474 ; =0x00000000
@@ -6191,7 +6191,7 @@ _021DA4B6:
lsl r0, r0, #4
cmp r5, r0
blo _021DA4C2
- bl ErrorHandling
+ bl GF_AssertFail
_021DA4C2:
ldrh r0, [r4, #2]
add r1, r6, #0
@@ -6215,7 +6215,7 @@ _021DA4C2:
bl FUN_02019064
add r0, r6, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
mov r0, #0xff
@@ -6769,7 +6769,7 @@ MOD15_021DA8E8: ; 0x021DA8E8
add r0, r5, #0
add r0, #0x10
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x10
bl FUN_02019270
@@ -6853,7 +6853,7 @@ MOD15_021DA9D4: ; 0x021DA9D4
add r6, r0, #0
add r0, #0x10
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0
bl MOD15_021DAD78
ldr r0, [r6, #4]
@@ -7291,7 +7291,7 @@ _021DAD1A:
add r0, r5, #0
add r2, r1, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #8
pop {r3, r4, r5, pc}
_021DAD3E:
@@ -7308,7 +7308,7 @@ _021DAD3E:
add r0, #0x10
add r2, r1, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0xd0
str r0, [sp]
@@ -7319,7 +7319,7 @@ _021DAD3E:
add r0, r5, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #8
pop {r3, r4, r5, pc}
@@ -7378,7 +7378,7 @@ _021DADD4:
add r0, r5, #0
add r0, #0x20
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -7416,7 +7416,7 @@ _021DADD4:
ldr r1, [r5, #0x2c]
add r0, #0x10
add r3, r2, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r1, #0x60
lsl r2, r7, #0x10
lsl r3, r6, #0x10
@@ -7436,7 +7436,7 @@ _021DADD4:
ldr r1, [r5, #0x2c]
add r0, #0x10
lsr r3, r3, #0x10
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -7494,7 +7494,7 @@ MOD15_021DAEB4: ; 0x021DAEB4
mov r1, #0x15
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -7506,7 +7506,7 @@ MOD15_021DAEB4: ; 0x021DAEB4
mov r0, #0x4c
mov r1, #0xb
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0
bl MOD15_021DAFAC
add r0, r4, #0
@@ -7613,7 +7613,7 @@ _021DAFB8:
mov r0, #0x4c
mov r2, #1
add r3, sp, #4
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r7, r0, #0
beq _021DAFE6
ldr r0, [sp, #4]
@@ -7675,12 +7675,12 @@ MOD15_021DAFF8: ; 0x021DAFF8
mov r1, #0x14
mov r2, #1
add r3, sp, #0xc
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #8]
cmp r0, #0
beq _021DB0D4
add r0, sp, #0x10
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [r5, #0xc]
add r1, sp, #0xc
str r0, [sp, #0x10]
@@ -7801,9 +7801,9 @@ MOD15_021DB154: ; 0x021DB154
sub sp, #0x4c
add r4, r0, #0
add r0, sp, #0x38
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
add r0, sp, #0x14
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r0, #0x23
str r0, [sp]
add r0, sp, #0x38
@@ -7812,7 +7812,7 @@ MOD15_021DB154: ; 0x021DB154
mov r1, #0x19
mov r2, #2
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -7825,7 +7825,7 @@ MOD15_021DB154: ; 0x021DB154
mov r0, #0x4c
mov r1, #0x18
mov r2, #1
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
add r0, r4, #0
add r0, #0x1c
mov r1, #0x4c
@@ -7906,7 +7906,7 @@ MOD15_021DB224: ; 0x021DB224
add r0, r4, #0
mov r2, #1
add r3, r5, #4
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5]
mov r0, #0x23
add r3, r5, #0
@@ -7915,7 +7915,7 @@ MOD15_021DB224: ; 0x021DB224
add r1, r6, #0
mov r2, #1
add r3, #0xc
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r5, #8]
add sp, #4
pop {r3, r4, r5, r6, pc}
@@ -8609,7 +8609,7 @@ MOD15_021DB774: ; 0x021DB774
add r5, r1, #0
cmp r4, #0x1b
blo _021DB782
- bl ErrorHandling
+ bl GF_AssertFail
_021DB782:
mov r1, #0xa
ldr r2, _021DB794 ; =0x021DBA4C
@@ -8630,7 +8630,7 @@ MOD15_021DB798: ; 0x021DB798
add r6, r2, #0
cmp r5, #0x1b
blo _021DB7A8
- bl ErrorHandling
+ bl GF_AssertFail
_021DB7A8:
mov r0, #0xa
add r1, r5, #0
@@ -8652,7 +8652,7 @@ MOD15_021DB7C4: ; 0x021DB7C4
add r4, r0, #0
cmp r4, #0x1b
blo _021DB7D0
- bl ErrorHandling
+ bl GF_AssertFail
_021DB7D0:
mov r0, #0xa
add r1, r4, #0
@@ -8669,7 +8669,7 @@ MOD15_021DB7E0: ; 0x021DB7E0
add r4, r0, #0
cmp r4, #0x1b
blo _021DB7EC
- bl ErrorHandling
+ bl GF_AssertFail
_021DB7EC:
mov r0, #0xa
add r1, r4, #0
@@ -8686,7 +8686,7 @@ MOD15_021DB7FC: ; 0x021DB7FC
add r4, r0, #0
cmp r4, #0x1b
blo _021DB808
- bl ErrorHandling
+ bl GF_AssertFail
_021DB808:
mov r0, #0xa
add r1, r4, #0
@@ -8703,7 +8703,7 @@ MOD15_021DB818: ; 0x021DB818
add r4, r0, #0
cmp r4, #0x1b
blo _021DB824
- bl ErrorHandling
+ bl GF_AssertFail
_021DB824:
mov r0, #0xa
add r1, r4, #0
@@ -8720,7 +8720,7 @@ MOD15_021DB834: ; 0x021DB834
add r4, r0, #0
cmp r4, #0x1b
blo _021DB840
- bl ErrorHandling
+ bl GF_AssertFail
_021DB840:
mov r0, #0xa
add r1, r4, #0
@@ -8737,7 +8737,7 @@ MOD15_021DB850: ; 0x021DB850
add r4, r0, #0
cmp r4, #0x1b
blo _021DB85C
- bl ErrorHandling
+ bl GF_AssertFail
_021DB85C:
mov r0, #0xa
add r1, r4, #0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 26ae4fbf..e9eedca1 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -23,7 +23,7 @@ MOD16_021D74E0: ; 0x021D74E0
bl OverlayManager_CreateAndGetData
add r4, r0, #0
bne _021D750E
- bl ErrorHandling
+ bl GF_AssertFail
_021D750E:
mov r0, #0
strb r0, [r4]
@@ -45,7 +45,7 @@ _021D750E:
bl FUN_0201CC24
cmp r0, #1
beq _021D7546
- bl ErrorHandling
+ bl GF_AssertFail
_021D7546:
mov r0, #0x25
bl MOD16_021D79FC
@@ -161,7 +161,7 @@ MOD16_021D7614: ; 0x021D7614
bl FUN_0201CD04
cmp r0, #1
beq _021D7630
- bl ErrorHandling
+ bl GF_AssertFail
_021D7630:
bl MOD16_021D7A10
bl FUN_0201C29C
@@ -245,7 +245,7 @@ MOD16_021D76AC: ; 0x021D76AC
bl AllocFromHeap
add r4, r0, #0
bne _021D76C2
- bl ErrorHandling
+ bl GF_AssertFail
_021D76C2:
ldr r2, _021D77D0 ; =0x00001D10
add r0, r4, #0
@@ -391,7 +391,7 @@ MOD16_021D7804: ; 0x021D7804
push {r4, lr}
add r4, r0, #0
bne _021D780E
- bl ErrorHandling
+ bl GF_AssertFail
_021D780E:
add r0, r4, #0
add r0, #0xc
@@ -638,7 +638,7 @@ MOD16_021D7A38: ; 0x021D7A38
push {r4, lr}
add r4, r0, #0
bne _021D7A42
- bl ErrorHandling
+ bl GF_AssertFail
_021D7A42:
mov r0, #0x1d
lsl r0, r0, #8
@@ -652,7 +652,7 @@ MOD16_021D7A4C: ; 0x021D7A4C
push {r4, lr}
add r4, r0, #0
bne _021D7A56
- bl ErrorHandling
+ bl GF_AssertFail
_021D7A56:
ldr r0, _021D7A5C ; =0x00001D04
ldr r0, [r4, r0]
@@ -666,7 +666,7 @@ MOD16_021D7A60: ; 0x021D7A60
push {r4, lr}
add r4, r0, #0
bne _021D7A6A
- bl ErrorHandling
+ bl GF_AssertFail
_021D7A6A:
ldr r0, _021D7A70 ; =0x00001D08
ldr r0, [r4, r0]
@@ -680,7 +680,7 @@ MOD16_021D7A74: ; 0x021D7A74
push {r4, lr}
add r4, r0, #0
bne _021D7A7E
- bl ErrorHandling
+ bl GF_AssertFail
_021D7A7E:
ldr r0, _021D7A84 ; =0x00001D0C
ldr r0, [r4, r0]
@@ -694,7 +694,7 @@ MOD16_021D7A88: ; 0x021D7A88
push {r4, lr}
add r4, r0, #0
bne _021D7A92
- bl ErrorHandling
+ bl GF_AssertFail
_021D7A92:
ldr r0, _021D7A98 ; =0x00001A0C
ldr r0, [r4, r0]
@@ -708,7 +708,7 @@ MOD16_021D7A9C: ; 0x021D7A9C
push {r4, lr}
add r4, r0, #0
bne _021D7AA6
- bl ErrorHandling
+ bl GF_AssertFail
_021D7AA6:
ldr r0, _021D7AAC ; =0x00001A10
ldr r0, [r4, r0]
@@ -722,7 +722,7 @@ MOD16_021D7AB0: ; 0x021D7AB0
push {r4, lr}
add r4, r0, #0
bne _021D7ABA
- bl ErrorHandling
+ bl GF_AssertFail
_021D7ABA:
ldr r0, _021D7AC0 ; =0x00001A14
ldr r0, [r4, r0]
@@ -736,7 +736,7 @@ MOD16_021D7AC4: ; 0x021D7AC4
push {r4, lr}
add r4, r0, #0
bne _021D7ACE
- bl ErrorHandling
+ bl GF_AssertFail
_021D7ACE:
ldr r0, _021D7AD4 ; =0x00001A18
ldr r0, [r4, r0]
@@ -750,7 +750,7 @@ MOD16_021D7AD8: ; 0x021D7AD8
push {r4, lr}
add r4, r0, #0
bne _021D7AE2
- bl ErrorHandling
+ bl GF_AssertFail
_021D7AE2:
ldr r0, _021D7AE8 ; =0x000019FC
add r0, r4, r0
@@ -764,7 +764,7 @@ MOD16_021D7AEC: ; 0x021D7AEC
push {r4, lr}
add r4, r0, #0
bne _021D7AF6
- bl ErrorHandling
+ bl GF_AssertFail
_021D7AF6:
mov r0, #0x1a
lsl r0, r0, #8
@@ -778,7 +778,7 @@ MOD16_021D7B00: ; 0x021D7B00
push {r4, lr}
add r4, r0, #0
bne _021D7B0A
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B0A:
ldr r0, _021D7B10 ; =0x00001A04
add r0, r4, r0
@@ -792,7 +792,7 @@ MOD16_021D7B14: ; 0x021D7B14
push {r4, lr}
add r4, r0, #0
bne _021D7B1E
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B1E:
ldr r0, _021D7B24 ; =0x00001A08
add r0, r4, r0
@@ -806,7 +806,7 @@ MOD16_021D7B28: ; 0x021D7B28
push {r4, lr}
add r4, r0, #0
bne _021D7B32
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B32:
add r0, r4, #0
pop {r4, pc}
@@ -818,7 +818,7 @@ MOD16_021D7B38: ; 0x021D7B38
push {r4, lr}
add r4, r0, #0
bne _021D7B42
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B42:
add r4, #0xc
add r0, r4, #0
@@ -830,7 +830,7 @@ MOD16_021D7B48: ; 0x021D7B48
push {r4, lr}
add r4, r0, #0
bne _021D7B52
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B52:
ldr r0, _021D7B58 ; =0x0000177C
add r0, r4, r0
@@ -846,7 +846,7 @@ MOD16_021D7B5C: ; 0x021D7B5C
add r5, r0, #0
cmp r4, #0xa
blt _021D7B6A
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B6A:
ldr r0, _021D7B78 ; =0x00001A30
add r1, r5, r0
@@ -865,7 +865,7 @@ MOD16_021D7B7C: ; 0x021D7B7C
add r5, r0, #0
cmp r4, #8
blt _021D7B8A
- bl ErrorHandling
+ bl GF_AssertFail
_021D7B8A:
mov r0, #0x6f
lsl r0, r0, #6
@@ -1265,7 +1265,7 @@ MOD16_021D7E68: ; 0x021D7E68
add r7, r0, #0
cmp r7, #0
bgt _021D7E82
- bl ErrorHandling
+ bl GF_AssertFail
_021D7E82:
add r0, r4, #0
mov r1, #0xf
@@ -1820,7 +1820,7 @@ MOD16_021D8298: ; 0x021D8298
ldr r0, [r6, r0]
cmp r0, #0
bne _021D82B0
- bl ErrorHandling
+ bl GF_AssertFail
_021D82B0:
ldr r0, _021D83D8 ; =0x00001A0C
ldr r0, [r6, r0]
@@ -1829,7 +1829,7 @@ _021D82B0:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D82C4
- bl ErrorHandling
+ bl GF_AssertFail
_021D82C4:
ldr r0, _021D83DC ; =0x00001A10
ldr r0, [r6, r0]
@@ -1838,7 +1838,7 @@ _021D82C4:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D82D8
- bl ErrorHandling
+ bl GF_AssertFail
_021D82D8:
ldr r0, _021D83E0 ; =0x00001A14
ldr r0, [r6, r0]
@@ -1847,7 +1847,7 @@ _021D82D8:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D82EC
- bl ErrorHandling
+ bl GF_AssertFail
_021D82EC:
ldr r0, _021D83E4 ; =0x00001A18
ldr r0, [r6, r0]
@@ -1857,7 +1857,7 @@ _021D82EC:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D8302
- bl ErrorHandling
+ bl GF_AssertFail
_021D8302:
mov r0, #0x1d
lsl r0, r0, #8
@@ -1867,7 +1867,7 @@ _021D8302:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D8318
- bl ErrorHandling
+ bl GF_AssertFail
_021D8318:
ldr r0, _021D83E8 ; =0x00001D04
ldr r0, [r6, r0]
@@ -1876,7 +1876,7 @@ _021D8318:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D832C
- bl ErrorHandling
+ bl GF_AssertFail
_021D832C:
ldr r0, _021D83EC ; =0x00001D08
ldr r0, [r6, r0]
@@ -1885,7 +1885,7 @@ _021D832C:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D8340
- bl ErrorHandling
+ bl GF_AssertFail
_021D8340:
ldr r0, _021D83F0 ; =0x00001D0C
ldr r0, [r6, r0]
@@ -1996,7 +1996,7 @@ MOD16_021D8424: ; 0x021D8424
push {r4, r5, lr}
sub sp, #0x24
add r4, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -2053,7 +2053,7 @@ _021D849C: .word 0x000019FC
thumb_func_start MOD16_021D84A0
MOD16_021D84A0: ; 0x021D84A0
push {r3, lr}
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _021D8500 ; =0x04000060
ldr r2, _021D8504 ; =0xFFFFCFFD
@@ -2089,11 +2089,11 @@ MOD16_021D84A0: ; 0x021D84A0
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
pop {r3, pc}
.align 2, 0
_021D8500: .word 0x04000060
@@ -2106,8 +2106,8 @@ _021D8510: .word 0xBFFF0000
thumb_func_start MOD16_021D8514
MOD16_021D8514: ; 0x021D8514
push {r3, lr}
- bl FUN_020AEAF4
- bl FUN_020AEC60
+ bl NNS_GfdResetFrmTexVramState
+ bl NNS_GfdResetFrmPlttVramState
pop {r3, pc}
thumb_func_end MOD16_021D8514
@@ -2313,7 +2313,7 @@ MOD16_021D86B4: ; 0x021D86B4
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_0201FDEC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2534,7 +2534,7 @@ MOD16_021D8838: ; 0x021D8838
ldr r0, [r4, r0]
cmp r0, #0
bne _021D884A
- bl ErrorHandling
+ bl GF_AssertFail
_021D884A:
mov r0, #0x6d
lsl r0, r0, #2
@@ -2552,7 +2552,7 @@ MOD16_021D8854: ; 0x021D8854
ldr r0, [r4, r0]
cmp r0, #0
bne _021D8866
- bl ErrorHandling
+ bl GF_AssertFail
_021D8866:
mov r0, #0x6e
lsl r0, r0, #2
@@ -2624,7 +2624,7 @@ MOD16_021D88D4: ; 0x021D88D4
add r4, r0, #0
cmp r5, #3
ble _021D88E2
- bl ErrorHandling
+ bl GF_AssertFail
_021D88E2:
lsl r0, r5, #2
add r1, r4, r0
@@ -3182,7 +3182,7 @@ MOD16_021D8CB4: ; 0x021D8CB4
add r7, r0, #0
beq _021D8CF6
add r1, sp, #4
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
beq _021D8CF0
cmp r4, #0
@@ -3220,7 +3220,7 @@ MOD16_021D8CFC: ; 0x021D8CFC
add r7, r0, #0
beq _021D8D42
add r1, sp, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r0, #0
beq _021D8D3C
cmp r4, #0
@@ -3258,7 +3258,7 @@ MOD16_021D8D48: ; 0x021D8D48
add r4, r0, #0
beq _021D8D6A
add r1, r5, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
cmp r0, #0
bne _021D8D6A
add r0, r4, #0
@@ -3280,7 +3280,7 @@ MOD16_021D8D70: ; 0x021D8D70
add r4, r0, #0
beq _021D8D92
add r1, r5, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r0, #0
bne _021D8D92
add r0, r4, #0
@@ -3302,7 +3302,7 @@ MOD16_021D8D98: ; 0x021D8D98
add r4, r0, #0
beq _021D8DBA
add r1, r5, #0
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
bne _021D8DBA
add r0, r4, #0
@@ -3518,7 +3518,7 @@ MOD16_021D8F60: ; 0x021D8F60
bl FUN_02019064
add r0, r4, #4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #4
bl CopyWindowToVram
add sp, #0x14
@@ -3545,14 +3545,14 @@ MOD16_021D8F9C: ; 0x021D8F9C
mov r1, #0x55
lsl r1, r1, #2
str r0, [r5, r1]
- ldr r3, _021D9030 ; =UNK_021064B8
+ ldr r3, _021D9030 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _021D9034 ; =UNK_021064C0
+ ldr r3, _021D9034 ; =NNS_GfdDefaultFuncAllocPlttVram
add r4, r0, #0
ldr r3, [r3]
mov r0, #0x80
@@ -3607,8 +3607,8 @@ _021D9004:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
-_021D9030: .word UNK_021064B8
-_021D9034: .word UNK_021064C0
+_021D9030: .word NNS_GfdDefaultFuncAllocTexVram
+_021D9034: .word NNS_GfdDefaultFuncAllocPlttVram
_021D9038: .word 0x7FFF0000
_021D903C: .word 0xFFFF0000
_021D9040: .word MOD16_021FF490
@@ -4618,7 +4618,7 @@ _021D97EE:
bl MOD16_021D9CB0
cmp r0, #0
bne _021D980C
- bl ErrorHandling
+ bl GF_AssertFail
_021D980C:
ldr r1, [r4, #0x1c]
add r0, r5, #0
@@ -4728,7 +4728,7 @@ MOD16_021D98EC: ; 0x021D98EC
add r5, r0, #0
cmp r4, #0x1c
blt _021D98FA
- bl ErrorHandling
+ bl GF_AssertFail
_021D98FA:
ldr r0, [r5]
add r1, r4, #0
@@ -4743,7 +4743,7 @@ MOD16_021D9904: ; 0x021D9904
add r5, r0, #0
cmp r4, #2
blt _021D9912
- bl ErrorHandling
+ bl GF_AssertFail
_021D9912:
ldr r0, [r5]
add r1, r4, #0
@@ -4758,7 +4758,7 @@ MOD16_021D991C: ; 0x021D991C
add r5, r0, #0
cmp r4, #2
blt _021D992A
- bl ErrorHandling
+ bl GF_AssertFail
_021D992A:
ldr r0, [r5]
add r1, r4, #0
@@ -4773,7 +4773,7 @@ MOD16_021D9934: ; 0x021D9934
add r5, r0, #0
cmp r4, #3
blt _021D9942
- bl ErrorHandling
+ bl GF_AssertFail
_021D9942:
ldr r0, [r5]
add r1, r4, #0
@@ -4788,7 +4788,7 @@ MOD16_021D994C: ; 0x021D994C
add r5, r0, #0
cmp r4, #3
blt _021D995A
- bl ErrorHandling
+ bl GF_AssertFail
_021D995A:
ldr r0, [r5]
add r1, r4, #0
@@ -5012,7 +5012,7 @@ MOD16_021D9A90: ; 0x021D9A90
bl AllocFromHeapAtEnd
add r6, r0, #0
bne _021D9AAE
- bl ErrorHandling
+ bl GF_AssertFail
_021D9AAE:
ldr r2, _021D9CA8 ; =0x000003DA
add r0, r6, #0
@@ -5025,7 +5025,7 @@ _021D9AAE:
bl AllocFromHeapAtEnd
add r4, r0, #0
bne _021D9ACC
- bl ErrorHandling
+ bl GF_AssertFail
_021D9ACC:
ldr r2, _021D9CA8 ; =0x000003DA
add r0, r4, #0
@@ -6017,7 +6017,7 @@ MOD16_021DA184: ; 0x021DA184
add r4, r2, #0
cmp r5, #0x2f
blt _021DA196
- bl ErrorHandling
+ bl GF_AssertFail
_021DA196:
mov r2, #0
add r5, #0xb
@@ -6027,7 +6027,7 @@ _021DA196:
mov r0, #0x4b
add r1, r5, #0
add r3, r6, #0
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
ldr r1, [sp, #8]
lsr r1, r1, #1
str r1, [r4]
@@ -6095,7 +6095,7 @@ _021DA216:
add r6, r0, #0
b _021DA226
_021DA222:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA226:
cmp r6, #0
beq _021DA24E
@@ -6214,7 +6214,7 @@ _021DA2FA:
add r4, r0, #0
b _021DA30A
_021DA306:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA30A:
cmp r4, #0
beq _021DA332
@@ -6389,7 +6389,7 @@ _021DA44E:
add r4, r0, #0
b _021DA45E
_021DA45A:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA45E:
cmp r4, #0
beq _021DA486
@@ -6543,7 +6543,7 @@ _021DA578:
add r4, r0, #0
b _021DA588
_021DA584:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA588:
cmp r4, #0
beq _021DA5B0
@@ -6618,7 +6618,7 @@ MOD16_021DA5FC: ; 0x021DA5FC
bl AllocFromHeap
add r4, r0, #0
bne _021DA60E
- bl ErrorHandling
+ bl GF_AssertFail
_021DA60E:
add r0, r4, #0
mov r1, #0
@@ -6639,17 +6639,17 @@ MOD16_021DA624: ; 0x021DA624
add r4, r1, #0
cmp r5, #0
bne _021DA632
- bl ErrorHandling
+ bl GF_AssertFail
_021DA632:
cmp r4, #0
bne _021DA63A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA63A:
add r0, r5, #0
bl MOD16_021DA7C4
cmp r0, #0
bne _021DA648
- bl ErrorHandling
+ bl GF_AssertFail
_021DA648:
ldr r0, [r4]
str r0, [r5]
@@ -6694,7 +6694,7 @@ MOD16_021DA694: ; 0x021DA694
push {r4, lr}
add r4, r0, #0
bne _021DA69E
- bl ErrorHandling
+ bl GF_AssertFail
_021DA69E:
ldr r0, [r4, #8]
cmp r0, #5
@@ -6757,7 +6757,7 @@ _021DA70E:
mov r0, #1
pop {r4, pc}
_021DA712:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA716:
mov r0, #0
pop {r4, pc}
@@ -6770,7 +6770,7 @@ MOD16_021DA71C: ; 0x021DA71C
sub sp, #4
add r4, r0, #0
bne _021DA728
- bl ErrorHandling
+ bl GF_AssertFail
_021DA728:
ldr r0, [r4, #8]
cmp r0, #5
@@ -6838,7 +6838,7 @@ _021DA7A0:
mov r0, #1
pop {r3, r4, pc}
_021DA7A6:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA7AA:
mov r0, #0
add sp, #4
@@ -6856,7 +6856,7 @@ MOD16_021DA7B4: ; 0x021DA7B4
push {r4, lr}
add r4, r0, #0
bne _021DA7BE
- bl ErrorHandling
+ bl GF_AssertFail
_021DA7BE:
mov r0, #1
str r0, [r4, #0x18]
@@ -6868,7 +6868,7 @@ MOD16_021DA7C4: ; 0x021DA7C4
push {r4, lr}
add r4, r0, #0
bne _021DA7CE
- bl ErrorHandling
+ bl GF_AssertFail
_021DA7CE:
ldr r0, [r4, #8]
cmp r0, #5
@@ -6885,7 +6885,7 @@ MOD16_021DA7DC: ; 0x021DA7DC
push {r4, lr}
add r4, r0, #0
bne _021DA7E6
- bl ErrorHandling
+ bl GF_AssertFail
_021DA7E6:
ldr r0, [r4, #8]
cmp r0, #2
@@ -6923,11 +6923,11 @@ MOD16_021DA808: ; 0x021DA808
add r6, r2, #0
cmp r5, #0
bne _021DA818
- bl ErrorHandling
+ bl GF_AssertFail
_021DA818:
cmp r4, #0
bne _021DA820
- bl ErrorHandling
+ bl GF_AssertFail
_021DA820:
add r0, r4, #0
add r1, r6, #0
@@ -6944,16 +6944,16 @@ MOD16_021DA828: ; 0x021DA828
add r7, r3, #0
cmp r5, #0
bne _021DA83A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA83A:
cmp r4, #0
bne _021DA842
- bl ErrorHandling
+ bl GF_AssertFail
_021DA842:
ldr r0, [sp, #0x18]
cmp r0, #0
bne _021DA84C
- bl ErrorHandling
+ bl GF_AssertFail
_021DA84C:
ldr r3, [sp, #0x18]
add r0, r6, #0
@@ -6970,7 +6970,7 @@ MOD16_021DA858: ; 0x021DA858
bl AllocFromHeap
add r4, r0, #0
bne _021DA868
- bl ErrorHandling
+ bl GF_AssertFail
_021DA868:
mov r0, #0
strb r0, [r4]
@@ -6998,7 +6998,7 @@ MOD16_021DA888: ; 0x021DA888
add r6, r2, #0
cmp r5, #0
bne _021DA898
- bl ErrorHandling
+ bl GF_AssertFail
_021DA898:
str r4, [r5]
str r6, [r5, #4]
@@ -7013,7 +7013,7 @@ MOD16_021DA8A0: ; 0x021DA8A0
add r5, r1, #0
cmp r4, #0
bne _021DA8AE
- bl ErrorHandling
+ bl GF_AssertFail
_021DA8AE:
add r0, r4, #0
bl MOD16_021DA908
@@ -7052,7 +7052,7 @@ MOD16_021DA8F0: ; 0x021DA8F0
push {r4, lr}
add r4, r0, #0
bne _021DA8FA
- bl ErrorHandling
+ bl GF_AssertFail
_021DA8FA:
ldr r0, [r4, #8]
cmp r0, #0
@@ -7091,7 +7091,7 @@ _021DA928:
ldr r0, [r5]
cmp r0, #0
bne _021DA932
- bl ErrorHandling
+ bl GF_AssertFail
_021DA932:
ldr r0, [r5]
ldr r1, [r0, r4]
@@ -7175,7 +7175,7 @@ _021DA9AE:
mov r0, #1
pop {r4, pc}
_021DA9BC:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA9C0:
mov r0, #0
pop {r4, pc}
@@ -7245,7 +7245,7 @@ _021DAA3A:
add sp, #0x10
pop {r3, r4, r5, pc}
_021DAA44:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAA48:
mov r0, #0
add sp, #0x10
@@ -7397,7 +7397,7 @@ _021DAB5E:
mov r0, #1
pop {r3, r4, r5, pc}
_021DAB68:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAB6C:
mov r0, #0
add sp, #0x10
@@ -7511,7 +7511,7 @@ _021DAC2E:
mov r0, #1
pop {r3, r4, r5, pc}
_021DAC38:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAC3C:
mov r0, #0
add sp, #8
@@ -7557,7 +7557,7 @@ MOD16_021DAC7C: ; 0x021DAC7C
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021DAC8A
- bl ErrorHandling
+ bl GF_AssertFail
_021DAC8A:
ldr r0, [r4, #0x10]
bl FreeToHeap
@@ -7579,7 +7579,7 @@ MOD16_021DAC98: ; 0x021DAC98
bl AllocFromHeap
add r4, r0, #0
bne _021DACB2
- bl ErrorHandling
+ bl GF_AssertFail
_021DACB2:
add r0, r4, #0
mov r1, #0
@@ -7638,7 +7638,7 @@ MOD16_021DAD20: ; 0x021DAD20
bl AllocFromHeap
add r4, r0, #0
bne _021DAD3A
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD3A:
add r2, r4, #0
mov r1, #0x14
@@ -7681,7 +7681,7 @@ MOD16_021DAD78: ; 0x021DAD78
bl AllocFromHeap
add r4, r0, #0
bne _021DAD92
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD92:
add r0, r4, #0
mov r1, #0
@@ -7745,7 +7745,7 @@ MOD16_021DAE0C: ; 0x021DAE0C
bl AllocFromHeap
add r4, r0, #0
bne _021DAE26
- bl ErrorHandling
+ bl GF_AssertFail
_021DAE26:
add r0, r4, #0
mov r1, #0
@@ -7805,7 +7805,7 @@ MOD16_021DAE94: ; 0x021DAE94
bl AllocFromHeap
add r4, r0, #0
bne _021DAEB0
- bl ErrorHandling
+ bl GF_AssertFail
_021DAEB0:
add r0, r6, #0
mov r1, #0
@@ -7835,7 +7835,7 @@ MOD16_021DAED4: ; 0x021DAED4
bl AllocFromHeap
add r4, r0, #0
bne _021DAEEE
- bl ErrorHandling
+ bl GF_AssertFail
_021DAEEE:
add r2, r4, #0
mov r1, #0x18
@@ -7883,7 +7883,7 @@ MOD16_021DAF38: ; 0x021DAF38
bl AllocFromHeap
add r4, r0, #0
bne _021DAF52
- bl ErrorHandling
+ bl GF_AssertFail
_021DAF52:
add r2, r4, #0
mov r1, #0x18
@@ -7931,7 +7931,7 @@ MOD16_021DAF9C: ; 0x021DAF9C
bl AllocFromHeap
add r4, r0, #0
bne _021DAFB6
- bl ErrorHandling
+ bl GF_AssertFail
_021DAFB6:
add r2, r4, #0
mov r1, #0x18
@@ -7979,7 +7979,7 @@ MOD16_021DB000: ; 0x021DB000
bl AllocFromHeap
add r4, r0, #0
bne _021DB01A
- bl ErrorHandling
+ bl GF_AssertFail
_021DB01A:
mov r0, #0
strb r0, [r4]
@@ -8022,7 +8022,7 @@ MOD16_021DB058: ; 0x021DB058
bl AllocFromHeap
add r4, r0, #0
bne _021DB072
- bl ErrorHandling
+ bl GF_AssertFail
_021DB072:
mov r0, #0
strb r0, [r4]
@@ -8065,7 +8065,7 @@ MOD16_021DB0B0: ; 0x021DB0B0
bl AllocFromHeap
add r4, r0, #0
bne _021DB0CA
- bl ErrorHandling
+ bl GF_AssertFail
_021DB0CA:
add r2, r4, #0
mov r1, #0x18
@@ -8113,7 +8113,7 @@ MOD16_021DB114: ; 0x021DB114
bl AllocFromHeap
add r4, r0, #0
bne _021DB12E
- bl ErrorHandling
+ bl GF_AssertFail
_021DB12E:
mov r0, #0
strb r0, [r4]
@@ -8156,7 +8156,7 @@ MOD16_021DB16C: ; 0x021DB16C
bl AllocFromHeap
add r4, r0, #0
bne _021DB186
- bl ErrorHandling
+ bl GF_AssertFail
_021DB186:
add r2, r4, #0
mov r1, #0x18
@@ -8204,7 +8204,7 @@ MOD16_021DB1D0: ; 0x021DB1D0
bl AllocFromHeap
add r4, r0, #0
bne _021DB1EA
- bl ErrorHandling
+ bl GF_AssertFail
_021DB1EA:
mov r0, #0
strb r0, [r4]
@@ -8244,7 +8244,7 @@ MOD16_021DB228: ; 0x021DB228
bl AllocFromHeap
add r4, r0, #0
bne _021DB23C
- bl ErrorHandling
+ bl GF_AssertFail
_021DB23C:
add r2, r4, #0
mov r1, #0x18
@@ -8265,7 +8265,7 @@ _021DB242:
str r0, [r4, #0xc]
cmp r0, #0
bne _021DB268
- bl ErrorHandling
+ bl GF_AssertFail
_021DB268:
ldr r2, [r5, #8]
ldr r0, [r4, #0xc]
@@ -8289,7 +8289,7 @@ MOD16_021DB288: ; 0x021DB288
push {r4, lr}
add r4, r0, #0
bne _021DB292
- bl ErrorHandling
+ bl GF_AssertFail
_021DB292:
add r0, r4, #0
bl MOD16_021DB358
@@ -8335,7 +8335,7 @@ MOD16_021DB2D4: ; 0x021DB2D4
bl MOD16_021DB460
add r4, r0, #0
bne _021DB2EA
- bl ErrorHandling
+ bl GF_AssertFail
_021DB2EA:
ldr r2, [r5, #0x20]
add r0, r6, #0
@@ -8433,9 +8433,9 @@ MOD16_021DB388: ; 0x021DB388
add r4, r1, #0
mov r1, #1
add r6, r2, #0
- bl FUN_02018FF4
+ bl AllocWindows
add r7, r0, #0
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8473,7 +8473,7 @@ MOD16_021DB3C8: ; 0x021DB3C8
bl NewMsgDataFromNarc
add r5, r0, #0
bne _021DB3E4
- bl ErrorHandling
+ bl GF_AssertFail
_021DB3E4:
add r0, r5, #0
add r1, r4, #0
@@ -8649,7 +8649,7 @@ _021DB4FC:
cmp r4, r0
blt _021DB50A
_021DB506:
- bl ErrorHandling
+ bl GF_AssertFail
_021DB50A:
str r4, [r5, #0xc]
pop {r3, r4, r5, pc}
@@ -8660,7 +8660,7 @@ _021DB50E:
cmp r4, r0
blt _021DB51C
_021DB518:
- bl ErrorHandling
+ bl GF_AssertFail
_021DB51C:
str r4, [r5, #0x10]
pop {r3, r4, r5, pc}
@@ -8805,7 +8805,7 @@ MOD16_021DB5EC: ; 0x021DB5EC
beq _021DB602
cmp r4, #1
beq _021DB602
- bl ErrorHandling
+ bl GF_AssertFail
_021DB602:
ldr r0, [r5, #0xc]
mov r1, #0x1c
@@ -8852,7 +8852,7 @@ MOD16_021DB63C: ; 0x021DB63C
beq _021DB652
cmp r4, #1
beq _021DB652
- bl ErrorHandling
+ bl GF_AssertFail
_021DB652:
ldr r0, [r5, #0x10]
mov r1, #0x1c
@@ -9139,7 +9139,7 @@ MOD16_021DB7F4: ; 0x021DB7F4
str r0, [sp, #0x10]
str r0, [sp, #0x14]
ldr r0, [sp, #0x18]
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
_021DB848:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
@@ -9655,7 +9655,7 @@ _021DBBA0:
mov r4, #0x2f
b _021DBBA8
_021DBBA4:
- bl ErrorHandling
+ bl GF_AssertFail
_021DBBA8:
add r0, r4, #0
pop {r4, pc}
@@ -9767,7 +9767,7 @@ MOD16_021DBC48: ; 0x021DBC48
bne _021DBC74
cmp r4, #1
blt _021DBC6C
- bl ErrorHandling
+ bl GF_AssertFail
_021DBC6C:
add r0, r5, r4
str r0, [sp, #4]
@@ -9781,7 +9781,7 @@ _021DBC6C:
_021DBC74:
cmp r4, #1
blt _021DBC7C
- bl ErrorHandling
+ bl GF_AssertFail
_021DBC7C:
ldr r0, [sp, #4]
ldr r1, [sp, #0xc]
@@ -9851,7 +9851,7 @@ MOD16_021DBCE0: ; 0x021DBCE0
str r0, [r5]
cmp r0, #6
blt _021DBCFA
- bl ErrorHandling
+ bl GF_AssertFail
_021DBCFA:
add r0, r7, #0
bl GetMeisterSpeciesIdx
@@ -9859,7 +9859,7 @@ _021DBCFA:
ldr r5, [r5]
cmp r5, #6
blt _021DBD0C
- bl ErrorHandling
+ bl GF_AssertFail
_021DBD0C:
cmp r5, #1
bne _021DBD12
@@ -9878,7 +9878,7 @@ _021DBD22:
_021DBD24:
cmp r0, #0
bne _021DBD2C
- bl ErrorHandling
+ bl GF_AssertFail
_021DBD2C:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -9944,12 +9944,12 @@ _021DBD82:
add r0, sp, #8
str r0, [sp, #4]
.ifdef DIAMOND
- mov r0, #0x8b
+ mov r0, #0x8b ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_DIAMOND
.else
- mov r0, #0x8c
+ mov r0, #0x8c ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_PEARL
.endif
add r1, r5, r1
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
str r0, [r4]
ldr r0, [sp, #8]
lsr r0, r0, #2
@@ -9972,12 +9972,12 @@ MOD16_021DBDC0: ; 0x021DBDC0
push {r4, lr}
add r4, r0, #0
bne _021DBDCA
- bl ErrorHandling
+ bl GF_AssertFail
_021DBDCA:
ldr r0, [r4]
cmp r0, #0
bne _021DBDD4
- bl ErrorHandling
+ bl GF_AssertFail
_021DBDD4:
ldr r0, [r4]
bl FreeToHeap
@@ -9999,12 +9999,12 @@ MOD16_021DBDE4: ; 0x021DBDE4
add r0, sp, #8
str r0, [sp, #4]
.ifdef DIAMOND
- mov r0, #0x8b
+ mov r0, #0x8b ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_DIAMOND
.else
- mov r0, #0x8c
+ mov r0, #0x8c ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_PEARL
.endif
add r2, r1, #0
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
cmp r4, #0
beq _021DBE06
ldr r1, [sp, #8]
@@ -10027,12 +10027,12 @@ MOD16_021DBE0C: ; 0x021DBE0C
add r0, sp, #8
str r0, [sp, #4]
.ifdef DIAMOND
- mov r0, #0x8b
+ mov r0, #0x8b ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_DIAMOND
.else
- mov r0, #0x8c
+ mov r0, #0x8c ; NARC_APPLICATION_ZUKANLIST_ZKN_DATA_ZUKAN_ENC_PEARL
.endif
mov r1, #2
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
add r5, r0, #0
cmp r4, #0
beq _021DBE34
@@ -10059,7 +10059,7 @@ MOD16_021DBE3C: ; 0x021DBE3C
add r0, r1, r0
cmp r0, r2
blt _021DBE54
- bl ErrorHandling
+ bl GF_AssertFail
_021DBE54:
ldrb r1, [r4]
ldrb r0, [r4, #2]
@@ -10067,7 +10067,7 @@ _021DBE54:
ldr r0, [sp, #4]
cmp r1, r0
blt _021DBE64
- bl ErrorHandling
+ bl GF_AssertFail
_021DBE64:
ldrb r7, [r4, #1]
ldrb r0, [r4, #3]
@@ -10154,7 +10154,7 @@ _021DBEF2:
ldr r0, [r0, r7]
cmp r0, #0
bne _021DBF00
- bl ErrorHandling
+ bl GF_AssertFail
_021DBF00:
mov r1, #0
cmp r4, #0
@@ -10282,13 +10282,13 @@ _021DBFE0:
ldr r0, [r0, r6]
cmp r0, #0
bne _021DBFEC
- bl ErrorHandling
+ bl GF_AssertFail
_021DBFEC:
ldr r1, [sp, #0x10]
ldr r0, [sp, #0x14]
cmp r1, r0
blt _021DBFF8
- bl ErrorHandling
+ bl GF_AssertFail
_021DBFF8:
mov r1, #0
cmp r4, #0
@@ -10442,7 +10442,7 @@ MOD16_021DC10C: ; 0x021DC10C
bl AllocFromHeap
add r4, r0, #0
bne _021DC11E
- bl ErrorHandling
+ bl GF_AssertFail
_021DC11E:
add r0, r4, #0
mov r1, #0
@@ -10469,7 +10469,7 @@ MOD16_021DC148: ; 0x021DC148
push {r4, lr}
add r4, r0, #0
bne _021DC152
- bl ErrorHandling
+ bl GF_AssertFail
_021DC152:
add r0, r4, #0
bl FreeToHeap
@@ -10485,7 +10485,7 @@ MOD16_021DC15C: ; 0x021DC15C
bl AllocFromHeap
add r4, r0, #0
bne _021DC16E
- bl ErrorHandling
+ bl GF_AssertFail
_021DC16E:
mov r0, #0
strb r0, [r4]
@@ -10504,7 +10504,7 @@ MOD16_021DC184: ; 0x021DC184
push {r4, lr}
add r4, r0, #0
bne _021DC18E
- bl ErrorHandling
+ bl GF_AssertFail
_021DC18E:
add r0, r4, #0
bl FreeToHeap
@@ -10562,7 +10562,7 @@ MOD16_021DC1F8: ; 0x021DC1F8
push {r4, lr}
add r4, r0, #0
bne _021DC202
- bl ErrorHandling
+ bl GF_AssertFail
_021DC202:
add r0, r4, #0
bl MOD16_021DAC7C
@@ -10600,7 +10600,7 @@ MOD16_021DC234: ; 0x021DC234
str r0, [r5, #8]
cmp r0, #0
bne _021DC24C
- bl ErrorHandling
+ bl GF_AssertFail
_021DC24C:
ldr r0, [r5, #8]
mov r1, #0
@@ -10698,7 +10698,7 @@ _021DC2E8:
bl AllocFromHeap
add r7, r0, #0
bne _021DC2FA
- bl ErrorHandling
+ bl GF_AssertFail
_021DC2FA:
str r7, [r4, #8]
add r0, r7, #0
@@ -10782,7 +10782,7 @@ _021DC388:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DC39C:
- bl ErrorHandling
+ bl GF_AssertFail
_021DC3A0:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -10933,7 +10933,7 @@ _021DC4C2:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DC4C6:
- bl ErrorHandling
+ bl GF_AssertFail
_021DC4CA:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -12746,7 +12746,7 @@ MOD16_021DD2F4: ; 0x021DD2F4
str r0, [sp]
cmp r0, #0
bne _021DD312
- bl ErrorHandling
+ bl GF_AssertFail
_021DD312:
mov r0, #0x15
lsl r0, r0, #4
@@ -13350,7 +13350,7 @@ _021DD77E:
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5]
mov r1, #1
ldr r0, [r0]
@@ -13505,7 +13505,7 @@ _021DD8A8:
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5]
mov r1, #1
ldr r0, [r0]
@@ -14019,7 +14019,7 @@ MOD16_021DDCA4: ; 0x021DDCA4
bl AllocFromHeap
add r4, r0, #0
bne _021DDCB8
- bl ErrorHandling
+ bl GF_AssertFail
_021DDCB8:
add r0, r4, #0
mov r1, #0
@@ -14055,7 +14055,7 @@ MOD16_021DDCEC: ; 0x021DDCEC
bl AllocFromHeap
add r4, r0, #0
bne _021DDCFE
- bl ErrorHandling
+ bl GF_AssertFail
_021DDCFE:
mov r0, #0
strb r0, [r4]
@@ -14083,7 +14083,7 @@ MOD16_021DDD14: ; 0x021DDD14
bl AllocFromHeap
add r4, r0, #0
bne _021DDD34
- bl ErrorHandling
+ bl GF_AssertFail
_021DDD34:
add r0, r4, #0
mov r1, #0
@@ -14104,7 +14104,7 @@ MOD16_021DDD50: ; 0x021DDD50
push {r4, lr}
add r4, r0, #0
bne _021DDD5A
- bl ErrorHandling
+ bl GF_AssertFail
_021DDD5A:
add r0, r4, #0
bl FreeToHeap
@@ -14117,7 +14117,7 @@ MOD16_021DDD64: ; 0x021DDD64
push {r4, lr}
add r4, r0, #0
bne _021DDD6E
- bl ErrorHandling
+ bl GF_AssertFail
_021DDD6E:
add r0, r4, #0
bl FreeToHeap
@@ -14130,7 +14130,7 @@ MOD16_021DDD78: ; 0x021DDD78
push {r4, lr}
add r4, r0, #0
bne _021DDD82
- bl ErrorHandling
+ bl GF_AssertFail
_021DDD82:
add r0, r4, #0
bl MOD16_021DAC7C
@@ -14156,7 +14156,7 @@ MOD16_021DDD94: ; 0x021DDD94
str r0, [r5, #8]
cmp r0, #0
bne _021DDDAC
- bl ErrorHandling
+ bl GF_AssertFail
_021DDDAC:
ldr r0, [r5, #8]
mov r1, #0
@@ -14266,7 +14266,7 @@ _021DDE60:
str r0, [r4, #8]
cmp r0, #0
bne _021DDE72
- bl ErrorHandling
+ bl GF_AssertFail
_021DDE72:
ldr r0, [r4, #8]
mov r1, #0
@@ -15179,7 +15179,7 @@ MOD16_021DE594: ; 0x021DE594
ldr r4, [r1]
cmp r0, #0
bne _021DE5AA
- bl ErrorHandling
+ bl GF_AssertFail
_021DE5AA:
mov r0, #0x51
lsl r0, r0, #2
@@ -15981,7 +15981,7 @@ MOD16_021DEBA4: ; 0x021DEBA4
ldr r4, [r0]
cmp r5, #4
blt _021DEBB2
- bl ErrorHandling
+ bl GF_AssertFail
_021DEBB2:
str r5, [r4, #0xc]
pop {r3, r4, r5, pc}
@@ -16003,7 +16003,7 @@ MOD16_021DEBC0: ; 0x021DEBC0
ldr r4, [r0]
cmp r5, #6
blt _021DEBCE
- bl ErrorHandling
+ bl GF_AssertFail
_021DEBCE:
str r5, [r4, #0x10]
pop {r3, r4, r5, pc}
@@ -16025,7 +16025,7 @@ MOD16_021DEBDC: ; 0x021DEBDC
ldr r4, [r0]
cmp r5, #0xa
blt _021DEBEA
- bl ErrorHandling
+ bl GF_AssertFail
_021DEBEA:
str r5, [r4, #0x14]
pop {r3, r4, r5, pc}
@@ -16048,7 +16048,7 @@ MOD16_021DEBF8: ; 0x021DEBF8
ldr r4, [r0]
cmp r5, #0x12
blt _021DEC08
- bl ErrorHandling
+ bl GF_AssertFail
_021DEC08:
cmp r6, #0
bne _021DEC10
@@ -16079,7 +16079,7 @@ MOD16_021DEC24: ; 0x021DEC24
ldr r4, [r0]
cmp r5, #0xf
blt _021DEC32
- bl ErrorHandling
+ bl GF_AssertFail
_021DEC32:
str r5, [r4, #0x20]
pop {r3, r4, r5, pc}
@@ -16136,7 +16136,7 @@ MOD16_021DEC64: ; 0x021DEC64
bl AllocFromHeap
add r4, r0, #0
bne _021DEC76
- bl ErrorHandling
+ bl GF_AssertFail
_021DEC76:
add r0, r4, #0
mov r1, #0
@@ -16165,7 +16165,7 @@ MOD16_021DECA0: ; 0x021DECA0
bl AllocFromHeap
add r4, r0, #0
bne _021DECB2
- bl ErrorHandling
+ bl GF_AssertFail
_021DECB2:
mov r0, #0
strb r0, [r4]
@@ -16193,7 +16193,7 @@ MOD16_021DECC8: ; 0x021DECC8
bl AllocFromHeap
add r4, r0, #0
bne _021DECE8
- bl ErrorHandling
+ bl GF_AssertFail
_021DECE8:
add r0, r4, #0
mov r1, #0
@@ -16214,7 +16214,7 @@ MOD16_021DED04: ; 0x021DED04
push {r4, lr}
add r4, r0, #0
bne _021DED0E
- bl ErrorHandling
+ bl GF_AssertFail
_021DED0E:
add r0, r4, #0
bl FreeToHeap
@@ -16227,7 +16227,7 @@ MOD16_021DED18: ; 0x021DED18
push {r4, lr}
add r4, r0, #0
bne _021DED22
- bl ErrorHandling
+ bl GF_AssertFail
_021DED22:
add r0, r4, #0
bl FreeToHeap
@@ -16240,7 +16240,7 @@ MOD16_021DED2C: ; 0x021DED2C
push {r4, lr}
add r4, r0, #0
bne _021DED36
- bl ErrorHandling
+ bl GF_AssertFail
_021DED36:
add r0, r4, #0
bl MOD16_021DAC7C
@@ -16265,7 +16265,7 @@ MOD16_021DED48: ; 0x021DED48
bl AllocFromHeap
add r6, r0, #0
bne _021DED5E
- bl ErrorHandling
+ bl GF_AssertFail
_021DED5E:
mov r0, #0
strb r0, [r6]
@@ -16435,7 +16435,7 @@ _021DEE84:
str r0, [r5]
b _021DEE9A
_021DEE96:
- bl ErrorHandling
+ bl GF_AssertFail
_021DEE9A:
mov r0, #0
add sp, #0x14
@@ -16653,7 +16653,7 @@ MOD16_021DEFF8: ; 0x021DEFF8
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5]
mov r1, #7
add r0, r0, #4
@@ -16737,7 +16737,7 @@ MOD16_021DF0BC: ; 0x021DF0BC
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
@@ -17058,7 +17058,7 @@ MOD16_021DF350: ; 0x021DF350
mov r1, #0
mov r2, #0x18
mov r3, #8
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r6, #3
bhi _021DF394
add r0, r6, r6
@@ -17135,7 +17135,7 @@ MOD16_021DF3E4: ; 0x021DF3E4
mov r1, #0
mov r2, #0x18
mov r3, #8
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #0x5d
add r1, r5, #0
bl MOD16_021D8270
@@ -17387,7 +17387,7 @@ MOD16_021DF5D0: ; 0x021DF5D0
mov r1, #0
mov r2, #0x58
mov r3, #0x34
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r5, #0x51
add r0, r5, #0
add r1, r6, #0
@@ -17433,7 +17433,7 @@ MOD16_021DF630: ; 0x021DF630
mov r1, #0
mov r2, #0x58
mov r3, #0x4d
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r6, #9
bhi _021DF698
add r0, r6, r6
@@ -17529,7 +17529,7 @@ MOD16_021DF6D8: ; 0x021DF6D8
mov r1, #0
mov r2, #0x58
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r6, #0x11
bhi _021DF774
add r0, r6, r6
@@ -17852,7 +17852,7 @@ _021DF92E:
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
add r0, r0, #4
bl FUN_02019220
@@ -17883,7 +17883,7 @@ MOD16_021DF970: ; 0x021DF970
add r4, r1, #0
add r0, r5, #4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x5e
add r1, r4, #0
bl MOD16_021D8270
@@ -17928,7 +17928,7 @@ MOD16_021DF9C0: ; 0x021DF9C0
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r4]
add r0, r5, #0
add r2, r6, #0
@@ -18023,7 +18023,7 @@ MOD16_021DFAA0: ; 0x021DFAA0
bl AllocFromHeap
add r4, r0, #0
bne _021DFAB2
- bl ErrorHandling
+ bl GF_AssertFail
_021DFAB2:
add r2, r4, #0
mov r1, #0x10
@@ -18059,7 +18059,7 @@ MOD16_021DFAE8: ; 0x021DFAE8
bl AllocFromHeap
add r4, r0, #0
bne _021DFAFA
- bl ErrorHandling
+ bl GF_AssertFail
_021DFAFA:
mov r0, #0
strb r0, [r4]
@@ -18092,7 +18092,7 @@ MOD16_021DFB24: ; 0x021DFB24
push {r4, lr}
add r4, r0, #0
bne _021DFB2E
- bl ErrorHandling
+ bl GF_AssertFail
_021DFB2E:
add r0, r4, #0
bl FreeToHeap
@@ -18105,7 +18105,7 @@ MOD16_021DFB38: ; 0x021DFB38
push {r4, lr}
add r4, r0, #0
bne _021DFB42
- bl ErrorHandling
+ bl GF_AssertFail
_021DFB42:
add r0, r4, #0
bl FreeToHeap
@@ -18135,7 +18135,7 @@ MOD16_021DFB54: ; 0x021DFB54
bl AllocFromHeap
add r4, r0, #0
bne _021DFB6A
- bl ErrorHandling
+ bl GF_AssertFail
_021DFB6A:
add r0, r4, #0
mov r1, #0
@@ -22376,7 +22376,7 @@ _021E195A:
mov r4, #4
b _021E1962
_021E195E:
- bl ErrorHandling
+ bl GF_AssertFail
_021E1962:
ldr r0, [r5, #0x18]
mov r1, #4
@@ -25366,7 +25366,7 @@ MOD16_021E2F38: ; 0x021E2F38
ldr r4, [r0]
cmp r5, #3
blt _021E2F46
- bl ErrorHandling
+ bl GF_AssertFail
_021E2F46:
str r5, [r4, #4]
pop {r3, r4, r5, pc}
@@ -25405,7 +25405,7 @@ MOD16_021E2F64: ; 0x021E2F64
bl AllocFromHeap
add r4, r0, #0
bne _021E2F76
- bl ErrorHandling
+ bl GF_AssertFail
_021E2F76:
mov r0, #0
strb r0, [r4]
@@ -25440,7 +25440,7 @@ MOD16_021E2FA8: ; 0x021E2FA8
bl AllocFromHeap
add r4, r0, #0
bne _021E2FBA
- bl ErrorHandling
+ bl GF_AssertFail
_021E2FBA:
add r2, r4, #0
mov r1, #0x14
@@ -25462,7 +25462,7 @@ MOD16_021E2FD4: ; 0x021E2FD4
push {r4, lr}
add r4, r0, #0
bne _021E2FDE
- bl ErrorHandling
+ bl GF_AssertFail
_021E2FDE:
add r0, r4, #0
bl FreeToHeap
@@ -25475,7 +25475,7 @@ MOD16_021E2FE8: ; 0x021E2FE8
push {r4, lr}
add r4, r0, #0
bne _021E2FF2
- bl ErrorHandling
+ bl GF_AssertFail
_021E2FF2:
add r0, r4, #0
bl FreeToHeap
@@ -25499,7 +25499,7 @@ MOD16_021E3000: ; 0x021E3000
bl AllocFromHeap
add r4, r0, #0
bne _021E3016
- bl ErrorHandling
+ bl GF_AssertFail
_021E3016:
add r0, r4, #0
mov r1, #0
@@ -26488,7 +26488,7 @@ MOD16_021E37E8: ; 0x021E37E8
ldr r7, [r4]
cmp r0, #0
bne _021E3800
- bl ErrorHandling
+ bl GF_AssertFail
_021E3800:
mov r0, #0x51
ldr r1, [r4]
@@ -26946,7 +26946,7 @@ MOD16_021E3B70: ; 0x021E3B70
add r6, r2, #0
add r0, r0, #4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
str r6, [sp]
ldr r3, _021E3BBC ; =0x000007F8
ldr r0, [r4]
@@ -26985,7 +26985,7 @@ MOD16_021E3BC8: ; 0x021E3BC8
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
@@ -27335,7 +27335,7 @@ MOD16_021E3E6C: ; 0x021E3E6C
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #2
lsl r0, r0, #0xa
ldr r3, [r5, r0]
@@ -27541,7 +27541,7 @@ _021E3FFA:
str r0, [sp]
b _021E4008
_021E4004:
- bl ErrorHandling
+ bl GF_AssertFail
_021E4008:
add r0, r5, #0
ldr r2, [sp, #4]
@@ -27894,7 +27894,7 @@ MOD16_021E42AC: ; 0x021E42AC
bl AllocFromHeap
add r4, r0, #0
bne _021E42BE
- bl ErrorHandling
+ bl GF_AssertFail
_021E42BE:
mov r0, #0
strb r0, [r4]
@@ -27925,7 +27925,7 @@ MOD16_021E42E8: ; 0x021E42E8
bl AllocFromHeap
add r4, r0, #0
bne _021E42FA
- bl ErrorHandling
+ bl GF_AssertFail
_021E42FA:
mov r0, #0
strb r0, [r4]
@@ -27950,7 +27950,7 @@ MOD16_021E4314: ; 0x021E4314
push {r4, lr}
add r4, r0, #0
bne _021E431E
- bl ErrorHandling
+ bl GF_AssertFail
_021E431E:
add r0, r4, #0
bl FreeToHeap
@@ -27963,7 +27963,7 @@ MOD16_021E4328: ; 0x021E4328
push {r4, lr}
add r4, r0, #0
bne _021E4332
- bl ErrorHandling
+ bl GF_AssertFail
_021E4332:
add r0, r4, #0
bl FreeToHeap
@@ -27993,7 +27993,7 @@ MOD16_021E4344: ; 0x021E4344
bl AllocFromHeap
add r4, r0, #0
bne _021E435A
- bl ErrorHandling
+ bl GF_AssertFail
_021E435A:
add r0, r4, #0
mov r1, #0
@@ -28963,7 +28963,7 @@ _021E4A6C:
bl FUN_0201C2C8
cmp r0, #0
bne _021E4A86
- bl ErrorHandling
+ bl GF_AssertFail
_021E4A86:
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD16_021E49B8
@@ -29023,7 +29023,7 @@ _021E4ACE:
lsr r0, r0, #0x10
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _021E4B10 ; =UNK_020FFA38
+ ldr r0, _021E4B10 ; =FX_SinCosTable_
mov r2, #3
ldrsh r0, [r0, r1]
lsl r2, r2, #0x10
@@ -29044,7 +29044,7 @@ _021E4ACE:
pop {r3, pc}
.align 2, 0
_021E4B0C: .word 0x00007FFF
-_021E4B10: .word UNK_020FFA38
+_021E4B10: .word FX_SinCosTable_
thumb_func_end MOD16_021E4AC0
thumb_func_start MOD16_021E4B14
@@ -29157,7 +29157,7 @@ MOD16_021E4BCC: ; 0x021E4BCC
bl AllocFromHeap
add r4, r0, #0
bne _021E4BDE
- bl ErrorHandling
+ bl GF_AssertFail
_021E4BDE:
add r0, r4, #0
mov r1, #0
@@ -29186,7 +29186,7 @@ MOD16_021E4C08: ; 0x021E4C08
bl AllocFromHeap
add r4, r0, #0
bne _021E4C1A
- bl ErrorHandling
+ bl GF_AssertFail
_021E4C1A:
mov r0, #0
strb r0, [r4]
@@ -29205,7 +29205,7 @@ MOD16_021E4C30: ; 0x021E4C30
push {r4, lr}
add r4, r0, #0
bne _021E4C3A
- bl ErrorHandling
+ bl GF_AssertFail
_021E4C3A:
add r0, r4, #0
bl FreeToHeap
@@ -29218,7 +29218,7 @@ MOD16_021E4C44: ; 0x021E4C44
push {r4, lr}
add r4, r0, #0
bne _021E4C4E
- bl ErrorHandling
+ bl GF_AssertFail
_021E4C4E:
add r0, r4, #0
bl FreeToHeap
@@ -29593,7 +29593,7 @@ MOD16_021E4EE4: ; 0x021E4EE4
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r1, r4, #0
bl MOD16_021E5224
@@ -31367,7 +31367,7 @@ MOD16_021E5C88: ; 0x021E5C88
bl AllocFromHeap
add r4, r0, #0
bne _021E5C9A
- bl ErrorHandling
+ bl GF_AssertFail
_021E5C9A:
add r2, r4, #0
mov r1, #0x18
@@ -31400,7 +31400,7 @@ MOD16_021E5CC8: ; 0x021E5CC8
bl AllocFromHeap
add r4, r0, #0
bne _021E5CDA
- bl ErrorHandling
+ bl GF_AssertFail
_021E5CDA:
mov r0, #0
strb r0, [r4]
@@ -31427,7 +31427,7 @@ MOD16_021E5D00: ; 0x021E5D00
push {r4, lr}
add r4, r0, #0
bne _021E5D0A
- bl ErrorHandling
+ bl GF_AssertFail
_021E5D0A:
add r0, r4, #0
bl FreeToHeap
@@ -31440,7 +31440,7 @@ MOD16_021E5D14: ; 0x021E5D14
push {r4, lr}
add r4, r0, #0
bne _021E5D1E
- bl ErrorHandling
+ bl GF_AssertFail
_021E5D1E:
add r0, r4, #0
bl FreeToHeap
@@ -31676,7 +31676,7 @@ _021E5E94:
str r0, [r4]
b _021E5EC4
_021E5EC0:
- bl ErrorHandling
+ bl GF_AssertFail
_021E5EC4:
add r0, r6, #0
bl MOD16_021E6E44
@@ -31940,7 +31940,7 @@ MOD16_021E60A8: ; 0x021E60A8
ldr r4, [sp, #0x2c]
cmp r5, #2
ble _021E60C0
- bl ErrorHandling
+ bl GF_AssertFail
_021E60C0:
ldr r0, [sp, #0x28]
cmp r0, #9
@@ -32033,7 +32033,7 @@ _021E615E:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_021E6172:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -32809,7 +32809,7 @@ _021E6718:
mvn r0, r0
cmp r4, r0
bne _021E673C
- bl ErrorHandling
+ bl GF_AssertFail
_021E673C:
cmp r4, #0
bne _021E6744
@@ -32871,7 +32871,7 @@ _021E6784:
mvn r1, r1
cmp r0, r1
bne _021E67AA
- bl ErrorHandling
+ bl GF_AssertFail
_021E67AA:
add r0, r4, #1
add r1, sp, #0x18
@@ -32902,7 +32902,7 @@ _021E67C4:
mvn r1, r1
cmp r0, r1
bne _021E67EA
- bl ErrorHandling
+ bl GF_AssertFail
_021E67EA:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
@@ -32947,7 +32947,7 @@ _021E681A:
mvn r1, r1
cmp r0, r1
bne _021E683C
- bl ErrorHandling
+ bl GF_AssertFail
_021E683C:
add r0, r4, #1
add r1, sp, #0x10
@@ -32976,7 +32976,7 @@ _021E6856:
mvn r1, r1
cmp r0, r1
bne _021E6878
- bl ErrorHandling
+ bl GF_AssertFail
_021E6878:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -33020,7 +33020,7 @@ _021E68A6:
mvn r1, r1
cmp r0, r1
bne _021E68C8
- bl ErrorHandling
+ bl GF_AssertFail
_021E68C8:
add r0, r4, #1
add r1, sp, #0x10
@@ -33049,7 +33049,7 @@ _021E68E2:
mvn r1, r1
cmp r0, r1
bne _021E6904
- bl ErrorHandling
+ bl GF_AssertFail
_021E6904:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -33093,7 +33093,7 @@ _021E6932:
mvn r1, r1
cmp r0, r1
bne _021E6954
- bl ErrorHandling
+ bl GF_AssertFail
_021E6954:
add r0, r4, #1
add r1, sp, #0x10
@@ -33122,7 +33122,7 @@ _021E696E:
mvn r1, r1
cmp r0, r1
bne _021E6990
- bl ErrorHandling
+ bl GF_AssertFail
_021E6990:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -33166,7 +33166,7 @@ _021E69BE:
mvn r1, r1
cmp r0, r1
bne _021E69E0
- bl ErrorHandling
+ bl GF_AssertFail
_021E69E0:
add r0, r4, #1
add r1, sp, #0x10
@@ -33195,7 +33195,7 @@ _021E69FA:
mvn r1, r1
cmp r0, r1
bne _021E6A1C
- bl ErrorHandling
+ bl GF_AssertFail
_021E6A1C:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -33239,7 +33239,7 @@ _021E6A4A:
mvn r1, r1
cmp r0, r1
bne _021E6A6C
- bl ErrorHandling
+ bl GF_AssertFail
_021E6A6C:
add r0, r4, #1
add r1, sp, #0x10
@@ -33268,7 +33268,7 @@ _021E6A86:
mvn r1, r1
cmp r0, r1
bne _021E6AA8
- bl ErrorHandling
+ bl GF_AssertFail
_021E6AA8:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -33310,7 +33310,7 @@ _021E6AD6:
bl MOD16_021D822C
cmp r0, #0xf
bne _021E6AF4
- bl ErrorHandling
+ bl GF_AssertFail
_021E6AF4:
add r0, r4, #1
add r1, sp, #0x10
@@ -33337,7 +33337,7 @@ _021E6B0E:
bl MOD16_021D822C
cmp r0, #0xf
bne _021E6B2C
- bl ErrorHandling
+ bl GF_AssertFail
_021E6B2C:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -33468,7 +33468,7 @@ MOD16_021E6C04: ; 0x021E6C04
ldr r5, [r6]
cmp r0, #0
bne _021E6C20
- bl ErrorHandling
+ bl GF_AssertFail
_021E6C20:
ldr r1, [sp, #8]
ldr r2, [sp, #0x58]
@@ -33553,7 +33553,7 @@ MOD16_021E6CB4: ; 0x021E6CB4
mvn r0, r0
cmp r5, r0
bne _021E6CD8
- bl ErrorHandling
+ bl GF_AssertFail
_021E6CD8:
cmp r5, #0
beq _021E6CE2
@@ -33567,7 +33567,7 @@ _021E6CE6:
mov r4, #0xe
b _021E6CEE
_021E6CEA:
- bl ErrorHandling
+ bl GF_AssertFail
_021E6CEE:
add r0, r4, #0
pop {r4, r5, r6, pc}
@@ -33688,7 +33688,7 @@ _021E6D80:
mov r5, #0x58
b _021E6D8E
_021E6D8A:
- bl ErrorHandling
+ bl GF_AssertFail
_021E6D8E:
str r4, [r6]
str r5, [r7]
@@ -33933,7 +33933,7 @@ MOD16_021E6F18: ; 0x021E6F18
bl AllocFromHeap
add r4, r0, #0
bne _021E6F2A
- bl ErrorHandling
+ bl GF_AssertFail
_021E6F2A:
add r0, r4, #0
mov r1, #0
@@ -33962,7 +33962,7 @@ MOD16_021E6F54: ; 0x021E6F54
bl AllocFromHeap
add r4, r0, #0
bne _021E6F66
- bl ErrorHandling
+ bl GF_AssertFail
_021E6F66:
mov r0, #0
strb r0, [r4]
@@ -33981,7 +33981,7 @@ MOD16_021E6F7C: ; 0x021E6F7C
push {r4, lr}
add r4, r0, #0
bne _021E6F86
- bl ErrorHandling
+ bl GF_AssertFail
_021E6F86:
add r0, r4, #0
bl FreeToHeap
@@ -33994,7 +33994,7 @@ MOD16_021E6F90: ; 0x021E6F90
push {r4, lr}
add r4, r0, #0
bne _021E6F9A
- bl ErrorHandling
+ bl GF_AssertFail
_021E6F9A:
add r0, r4, #0
bl FreeToHeap
@@ -34307,7 +34307,7 @@ MOD16_021E71A8: ; 0x021E71A8
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r1, r4, #0
bl MOD16_021E753C
@@ -34471,7 +34471,7 @@ MOD16_021E72E4: ; 0x021E72E4
cmp r0, #2
beq _021E731E
mov r7, #0
- bl ErrorHandling
+ bl GF_AssertFail
_021E731E:
ldr r0, [r4, #0x18]
bl MOD16_021E7A70
@@ -35467,7 +35467,7 @@ _021E7AA6:
mov r4, #0x1a
b _021E7AAE
_021E7AAA:
- bl ErrorHandling
+ bl GF_AssertFail
_021E7AAE:
add r0, r4, #0
pop {r4, pc}
@@ -35605,7 +35605,7 @@ MOD16_021E7BB0: ; 0x021E7BB0
bl AllocFromHeap
add r4, r0, #0
bne _021E7BC2
- bl ErrorHandling
+ bl GF_AssertFail
_021E7BC2:
add r2, r4, #0
mov r1, #0x18
@@ -35651,7 +35651,7 @@ MOD16_021E7C10: ; 0x021E7C10
bl AllocFromHeap
add r4, r0, #0
bne _021E7C22
- bl ErrorHandling
+ bl GF_AssertFail
_021E7C22:
mov r0, #0
strb r0, [r4]
@@ -35679,7 +35679,7 @@ MOD16_021E7C38: ; 0x021E7C38
bl AllocFromHeap
add r4, r0, #0
bne _021E7C58
- bl ErrorHandling
+ bl GF_AssertFail
_021E7C58:
add r0, r4, #0
mov r1, #0
@@ -35712,7 +35712,7 @@ MOD16_021E7C90: ; 0x021E7C90
push {r4, lr}
add r4, r0, #0
bne _021E7C9A
- bl ErrorHandling
+ bl GF_AssertFail
_021E7C9A:
add r0, r4, #0
bl FreeToHeap
@@ -35725,7 +35725,7 @@ MOD16_021E7CA4: ; 0x021E7CA4
push {r4, lr}
add r4, r0, #0
bne _021E7CAE
- bl ErrorHandling
+ bl GF_AssertFail
_021E7CAE:
add r0, r4, #0
bl FreeToHeap
@@ -35738,7 +35738,7 @@ MOD16_021E7CB8: ; 0x021E7CB8
push {r4, lr}
add r4, r0, #0
bne _021E7CC2
- bl ErrorHandling
+ bl GF_AssertFail
_021E7CC2:
add r0, r4, #0
bl MOD16_021DAC7C
@@ -37007,7 +37007,7 @@ MOD16_021E868C: ; 0x021E868C
ldr r4, [r1]
cmp r0, #0
bne _021E86A0
- bl ErrorHandling
+ bl GF_AssertFail
_021E86A0:
mov r0, #0x51
lsl r0, r0, #2
@@ -37367,7 +37367,7 @@ _021E8934:
bl FUN_0201C2C8
cmp r0, #0
bne _021E895C
- bl ErrorHandling
+ bl GF_AssertFail
_021E895C:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -37714,7 +37714,7 @@ MOD16_021E8BB8: ; 0x021E8BB8
cmp r4, #8
blt _021E8BCC
_021E8BC8:
- bl ErrorHandling
+ bl GF_AssertFail
_021E8BCC:
sub r0, r4, #2
lsl r1, r0, #2
@@ -37806,7 +37806,7 @@ MOD16_021E8C70: ; 0x021E8C70
bl AllocFromHeap
add r4, r0, #0
bne _021E8C82
- bl ErrorHandling
+ bl GF_AssertFail
_021E8C82:
add r0, r4, #0
mov r1, #0
@@ -37865,7 +37865,7 @@ MOD16_021E8CF4: ; 0x021E8CF4
bl AllocFromHeap
add r4, r0, #0
bne _021E8D06
- bl ErrorHandling
+ bl GF_AssertFail
_021E8D06:
mov r0, #0
strb r0, [r4]
@@ -37893,7 +37893,7 @@ MOD16_021E8D1C: ; 0x021E8D1C
bl AllocFromHeap
add r4, r0, #0
bne _021E8D3C
- bl ErrorHandling
+ bl GF_AssertFail
_021E8D3C:
add r0, r4, #0
mov r1, #0
@@ -37957,7 +37957,7 @@ MOD16_021E8DBC: ; 0x021E8DBC
push {r4, lr}
add r4, r0, #0
bne _021E8DC6
- bl ErrorHandling
+ bl GF_AssertFail
_021E8DC6:
add r0, r4, #0
bl FreeToHeap
@@ -37970,7 +37970,7 @@ MOD16_021E8DD0: ; 0x021E8DD0
push {r4, lr}
add r4, r0, #0
bne _021E8DDA
- bl ErrorHandling
+ bl GF_AssertFail
_021E8DDA:
add r0, r4, #0
bl FreeToHeap
@@ -37983,7 +37983,7 @@ MOD16_021E8DE4: ; 0x021E8DE4
push {r4, lr}
add r4, r0, #0
bne _021E8DEE
- bl ErrorHandling
+ bl GF_AssertFail
_021E8DEE:
add r0, r4, #0
bl MOD16_021DAC7C
@@ -38147,7 +38147,7 @@ _021E8F0E:
mov r0, #1
pop {r4, r5, r6, r7, pc}
_021E8F1A:
- bl ErrorHandling
+ bl GF_AssertFail
_021E8F1E:
mov r0, #0
add sp, #0x14
@@ -38276,7 +38276,7 @@ _021E9002:
mov r0, #1
pop {r4, r5, pc}
_021E9008:
- bl ErrorHandling
+ bl GF_AssertFail
_021E900C:
mov r0, #0
add sp, #0x14
@@ -38525,7 +38525,7 @@ _021E91D0:
str r0, [sp, #4]
b _021E91DA
_021E91D6:
- bl ErrorHandling
+ bl GF_AssertFail
_021E91DA:
ldr r0, [sp]
cmp r0, #4
@@ -38612,7 +38612,7 @@ _021E927E:
bl MOD16_021EA25C
b _021E928E
_021E928A:
- bl ErrorHandling
+ bl GF_AssertFail
_021E928E:
ldr r0, [sp, #4]
add sp, #8
@@ -39050,7 +39050,7 @@ MOD16_021E95D0: ; 0x021E95D0
bl AllocFromHeap
add r4, r0, #0
bne _021E95E2
- bl ErrorHandling
+ bl GF_AssertFail
_021E95E2:
add r0, r4, #0
mov r1, #0
@@ -39079,7 +39079,7 @@ MOD16_021E960C: ; 0x021E960C
bl AllocFromHeap
add r4, r0, #0
bne _021E961E
- bl ErrorHandling
+ bl GF_AssertFail
_021E961E:
mov r0, #0
strb r0, [r4]
@@ -39104,7 +39104,7 @@ MOD16_021E9638: ; 0x021E9638
push {r4, lr}
add r4, r0, #0
bne _021E9642
- bl ErrorHandling
+ bl GF_AssertFail
_021E9642:
add r0, r4, #0
bl FreeToHeap
@@ -39117,7 +39117,7 @@ MOD16_021E964C: ; 0x021E964C
push {r4, lr}
add r4, r0, #0
bne _021E9656
- bl ErrorHandling
+ bl GF_AssertFail
_021E9656:
add r0, r4, #0
bl FreeToHeap
@@ -39593,7 +39593,7 @@ _021E99AE:
str r0, [r4, #0x1c]
pop {r4, pc}
_021E99BA:
- bl ErrorHandling
+ bl GF_AssertFail
_021E99BE:
pop {r4, pc}
thumb_func_end MOD16_021E9940
@@ -40777,7 +40777,7 @@ MOD16_021EA274: ; 0x021EA274
bl AllocFromHeap
add r4, r0, #0
bne _021EA286
- bl ErrorHandling
+ bl GF_AssertFail
_021EA286:
add r2, r4, #0
mov r1, #0x10
@@ -40813,7 +40813,7 @@ MOD16_021EA2BC: ; 0x021EA2BC
bl AllocFromHeap
add r4, r0, #0
bne _021EA2CE
- bl ErrorHandling
+ bl GF_AssertFail
_021EA2CE:
add r2, r4, #0
mov r1, #0x14
@@ -40835,7 +40835,7 @@ MOD16_021EA2E8: ; 0x021EA2E8
push {r4, lr}
add r4, r0, #0
bne _021EA2F2
- bl ErrorHandling
+ bl GF_AssertFail
_021EA2F2:
add r0, r4, #0
bl FreeToHeap
@@ -40848,7 +40848,7 @@ MOD16_021EA2FC: ; 0x021EA2FC
push {r4, lr}
add r4, r0, #0
bne _021EA306
- bl ErrorHandling
+ bl GF_AssertFail
_021EA306:
add r0, r4, #0
bl FreeToHeap
@@ -40875,7 +40875,7 @@ MOD16_021EA314: ; 0x021EA314
bl AllocFromHeap
add r4, r0, #0
bne _021EA332
- bl ErrorHandling
+ bl GF_AssertFail
_021EA332:
add r2, r4, #0
mov r1, #0x18
@@ -41593,7 +41593,7 @@ MOD16_021EA858: ; 0x021EA858
add r2, r1, #0
add r0, r0, #4
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
@@ -41901,7 +41901,7 @@ MOD16_021EAAA4: ; 0x021EAAA4
mov r1, #0
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r1, [sp, #0x38]
ldr r0, [sp, #0xc]
mov r6, #0
@@ -42016,7 +42016,7 @@ _021EABA2:
mov r1, #6
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
str r5, [r4]
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -42049,7 +42049,7 @@ MOD16_021EABC4: ; 0x021EABC4
mov r1, #0
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r5, r6
bge _021EAC18
_021EABFE:
@@ -42482,7 +42482,7 @@ MOD16_021EAF18: ; 0x021EAF18
bl AllocFromHeap
add r4, r0, #0
bne _021EAF2A
- bl ErrorHandling
+ bl GF_AssertFail
_021EAF2A:
add r2, r4, #0
mov r1, #0x10
@@ -42515,7 +42515,7 @@ MOD16_021EAF58: ; 0x021EAF58
bl AllocFromHeap
add r4, r0, #0
bne _021EAF6A
- bl ErrorHandling
+ bl GF_AssertFail
_021EAF6A:
mov r0, #0
strb r0, [r4]
@@ -42540,7 +42540,7 @@ MOD16_021EAF84: ; 0x021EAF84
push {r4, lr}
add r4, r0, #0
bne _021EAF8E
- bl ErrorHandling
+ bl GF_AssertFail
_021EAF8E:
add r0, r4, #0
bl FreeToHeap
@@ -42553,7 +42553,7 @@ MOD16_021EAF98: ; 0x021EAF98
push {r4, lr}
add r4, r0, #0
bne _021EAFA2
- bl ErrorHandling
+ bl GF_AssertFail
_021EAFA2:
add r0, r4, #0
bl FreeToHeap
@@ -45063,7 +45063,7 @@ MOD16_021EC274: ; 0x021EC274
bl AllocFromHeap
add r4, r0, #0
bne _021EC286
- bl ErrorHandling
+ bl GF_AssertFail
_021EC286:
mov r0, #0
strb r0, [r4]
@@ -45101,7 +45101,7 @@ MOD16_021EC2C0: ; 0x021EC2C0
bl AllocFromHeap
add r4, r0, #0
bne _021EC2D2
- bl ErrorHandling
+ bl GF_AssertFail
_021EC2D2:
mov r0, #0
strb r0, [r4]
@@ -45126,7 +45126,7 @@ MOD16_021EC2EC: ; 0x021EC2EC
push {r4, lr}
add r4, r0, #0
bne _021EC2F6
- bl ErrorHandling
+ bl GF_AssertFail
_021EC2F6:
add r0, r4, #0
bl FreeToHeap
@@ -45139,7 +45139,7 @@ MOD16_021EC300: ; 0x021EC300
push {r4, lr}
add r4, r0, #0
bne _021EC30A
- bl ErrorHandling
+ bl GF_AssertFail
_021EC30A:
add r0, r4, #0
bl FreeToHeap
@@ -45168,7 +45168,7 @@ MOD16_021EC31C: ; 0x021EC31C
bl AllocFromHeap
add r4, r0, #0
bne _021EC330
- bl ErrorHandling
+ bl GF_AssertFail
_021EC330:
mov r0, #0
strb r0, [r4]
@@ -45513,7 +45513,7 @@ MOD16_021EC574: ; 0x021EC574
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
@@ -46227,7 +46227,7 @@ MOD16_021ECB54: ; 0x021ECB54
bl AllocFromHeap
add r4, r0, #0
bne _021ECB66
- bl ErrorHandling
+ bl GF_AssertFail
_021ECB66:
add r2, r4, #0
mov r1, #0x10
@@ -46262,7 +46262,7 @@ MOD16_021ECB98: ; 0x021ECB98
bl AllocFromHeap
add r4, r0, #0
bne _021ECBAA
- bl ErrorHandling
+ bl GF_AssertFail
_021ECBAA:
mov r0, #0
strb r0, [r4]
@@ -46290,7 +46290,7 @@ MOD16_021ECBC0: ; 0x021ECBC0
bl AllocFromHeap
add r4, r0, #0
bne _021ECBE0
- bl ErrorHandling
+ bl GF_AssertFail
_021ECBE0:
add r0, r4, #0
mov r1, #0
@@ -46316,7 +46316,7 @@ MOD16_021ECC08: ; 0x021ECC08
push {r4, lr}
add r4, r0, #0
bne _021ECC12
- bl ErrorHandling
+ bl GF_AssertFail
_021ECC12:
add r0, r4, #0
bl FreeToHeap
@@ -46329,7 +46329,7 @@ MOD16_021ECC1C: ; 0x021ECC1C
push {r4, lr}
add r4, r0, #0
bne _021ECC26
- bl ErrorHandling
+ bl GF_AssertFail
_021ECC26:
add r0, r4, #0
bl FreeToHeap
@@ -46342,7 +46342,7 @@ MOD16_021ECC30: ; 0x021ECC30
push {r4, lr}
add r4, r0, #0
bne _021ECC3A
- bl ErrorHandling
+ bl GF_AssertFail
_021ECC3A:
add r0, r4, #0
bl MOD16_021DAC7C
@@ -47231,7 +47231,7 @@ MOD16_021ED2B4: ; 0x021ED2B4
ldr r4, [r1]
cmp r0, #0
bne _021ED2C8
- bl ErrorHandling
+ bl GF_AssertFail
_021ED2C8:
mov r0, #0x51
lsl r0, r0, #2
@@ -47425,7 +47425,7 @@ _021ED430:
bl FUN_0201C2C8
cmp r0, #0
bne _021ED458
- bl ErrorHandling
+ bl GF_AssertFail
_021ED458:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -47642,7 +47642,7 @@ MOD16_021ED5C8: ; 0x021ED5C8
bl AllocFromHeap
add r4, r0, #0
bne _021ED5DA
- bl ErrorHandling
+ bl GF_AssertFail
_021ED5DA:
mov r0, #0
strb r0, [r4]
@@ -47674,7 +47674,7 @@ MOD16_021ED604: ; 0x021ED604
bl AllocFromHeap
add r4, r0, #0
bne _021ED618
- bl ErrorHandling
+ bl GF_AssertFail
_021ED618:
add r0, r4, #0
mov r1, #0
@@ -47702,7 +47702,7 @@ MOD16_021ED648: ; 0x021ED648
push {r4, lr}
add r4, r0, #0
bne _021ED652
- bl ErrorHandling
+ bl GF_AssertFail
_021ED652:
add r0, r4, #0
bl FreeToHeap
@@ -47715,7 +47715,7 @@ MOD16_021ED65C: ; 0x021ED65C
push {r4, lr}
add r4, r0, #0
bne _021ED666
- bl ErrorHandling
+ bl GF_AssertFail
_021ED666:
add r0, r4, #0
bl MOD16_021EE0F0
@@ -47743,7 +47743,7 @@ MOD16_021ED680: ; 0x021ED680
bl AllocFromHeap
add r4, r0, #0
bne _021ED696
- bl ErrorHandling
+ bl GF_AssertFail
_021ED696:
mov r0, #0
strb r0, [r4]
@@ -48265,7 +48265,7 @@ MOD16_021EDA3C: ; 0x021EDA3C
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
@@ -48398,7 +48398,7 @@ MOD16_021EDAE4: ; 0x021EDAE4
bl FUN_02009D68
cmp r0, #0
bne _021EDB82
- bl ErrorHandling
+ bl GF_AssertFail
_021EDB82:
add r0, r4, #0
mov r1, #0x60
@@ -49298,7 +49298,7 @@ MOD16_021EE2A4: ; 0x021EE2A4
lsl r4, r0, #1
add r0, r4, #1
lsl r1, r0, #1
- ldr r0, _021EE354 ; =UNK_020FFA38
+ ldr r0, _021EE354 ; =FX_SinCosTable_
mov r3, #0
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -49312,7 +49312,7 @@ MOD16_021EE2A4: ; 0x021EE2A4
lsr r5, r2, #0xc
orr r5, r0
mov r2, #0xe
- ldr r0, _021EE354 ; =UNK_020FFA38
+ ldr r0, _021EE354 ; =FX_SinCosTable_
lsl r1, r4, #1
ldrsh r0, [r0, r1]
lsl r2, r2, #0xe
@@ -49364,7 +49364,7 @@ MOD16_021EE2A4: ; 0x021EE2A4
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_021EE354: .word UNK_020FFA38
+_021EE354: .word FX_SinCosTable_
thumb_func_end MOD16_021EE2A4
thumb_func_start MOD16_021EE358
@@ -49737,7 +49737,7 @@ MOD16_021EE5D0: ; 0x021EE5D0
bl FUN_02003974
ldr r0, [sp, #4]
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r2, r5, #0
add r2, #0xbc
add r1, r0, #0
@@ -49762,7 +49762,7 @@ MOD16_021EE5D0: ; 0x021EE5D0
bl FUN_02003974
ldr r0, [sp, #8]
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r5, #0xc0
add r1, r0, #0
ldr r2, [r5]
@@ -49837,7 +49837,7 @@ MOD16_021EE6CC: ; 0x021EE6CC
bl AllocFromHeap
add r4, r0, #0
bne _021EE6DE
- bl ErrorHandling
+ bl GF_AssertFail
_021EE6DE:
add r2, r4, #0
mov r1, #0x10
@@ -49873,7 +49873,7 @@ MOD16_021EE714: ; 0x021EE714
bl AllocFromHeap
add r4, r0, #0
bne _021EE726
- bl ErrorHandling
+ bl GF_AssertFail
_021EE726:
mov r0, #0
strb r0, [r4]
@@ -49898,7 +49898,7 @@ MOD16_021EE740: ; 0x021EE740
push {r4, lr}
add r4, r0, #0
bne _021EE74A
- bl ErrorHandling
+ bl GF_AssertFail
_021EE74A:
add r0, r4, #0
bl FreeToHeap
@@ -49911,7 +49911,7 @@ MOD16_021EE754: ; 0x021EE754
push {r4, lr}
add r4, r0, #0
bne _021EE75E
- bl ErrorHandling
+ bl GF_AssertFail
_021EE75E:
add r0, r4, #0
bl FreeToHeap
@@ -50697,7 +50697,7 @@ MOD16_021EED04: ; 0x021EED04
ldr r4, [r1]
cmp r0, #0
bne _021EED18
- bl ErrorHandling
+ bl GF_AssertFail
_021EED18:
mov r0, #0x51
lsl r0, r0, #2
@@ -50853,7 +50853,7 @@ _021EEE2C:
bl FUN_0201C2C8
cmp r0, #0
bne _021EEE54
- bl ErrorHandling
+ bl GF_AssertFail
_021EEE54:
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -51457,7 +51457,7 @@ MOD16_021EF318: ; 0x021EF318
add r5, r0, #0
add r0, r1, #0
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r4, r0, #0
mov r3, #0
str r3, [sp]
@@ -51473,7 +51473,7 @@ MOD16_021EF318: ; 0x021EF318
bl FUN_02019064
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl CopyWindowToVram
add r0, r4, #0
@@ -51809,7 +51809,7 @@ MOD16_021EF598: ; 0x021EF598
str r0, [r5]
cmp r0, #0
bne _021EF5DA
- bl ErrorHandling
+ bl GF_AssertFail
_021EF5DA:
add sp, #0x44
pop {r3, r4, r5, r6, pc}
@@ -51856,7 +51856,7 @@ MOD16_021EF5EC: ; 0x021EF5EC
str r0, [r5]
cmp r0, #0
bne _021EF62E
- bl ErrorHandling
+ bl GF_AssertFail
_021EF62E:
ldr r0, [r5]
mov r1, #0x11
@@ -52059,7 +52059,7 @@ MOD16_021EF790: ; 0x021EF790
mov r1, #6
add r3, r2, #0
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -52070,13 +52070,13 @@ MOD16_021EF790: ; 0x021EF790
mov r1, #0x21
add r2, r5, #0
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
str r4, [sp]
mov r0, #0x45
mov r1, #0x32
mov r2, #1
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x10]
mov r3, #0
str r3, [sp]
@@ -52100,7 +52100,7 @@ MOD16_021EF790: ; 0x021EF790
mov r1, #0x33
mov r2, #1
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x10]
mov r1, #3
str r1, [sp]
@@ -52124,7 +52124,7 @@ MOD16_021EF790: ; 0x021EF790
mov r1, #0x34
mov r2, #1
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r6, r0, #0
ldr r2, [sp, #0x10]
mov r0, #8
@@ -52149,7 +52149,7 @@ MOD16_021EF790: ; 0x021EF790
mov r1, #0x36
mov r2, #1
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r4, r0, #0
ldr r2, [sp, #0x10]
mov r0, #0x10
@@ -52192,13 +52192,13 @@ MOD16_021EF8A8: ; 0x021EF8A8
mov r1, #0x21
add r2, r4, #0
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
str r5, [sp]
mov r0, #0x45
mov r1, #0x39
mov r2, #1
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x10]
mov r3, #0
str r3, [sp]
@@ -52280,7 +52280,7 @@ _021EF958:
bl FUN_020056AC
cmp r0, #0
bne _021EF976
- bl ErrorHandling
+ bl GF_AssertFail
_021EF976:
mov r0, #0x6e
lsl r0, r0, #2
@@ -52520,7 +52520,7 @@ MOD16_021EFB20: ; 0x021EFB20
mov r1, #0x17
add r2, #8
add r3, r5, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
b _021EFB48
_021EFB3A:
add r2, r4, #0
@@ -52528,7 +52528,7 @@ _021EFB3A:
mov r1, #0x18
add r2, #8
add r3, r5, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
_021EFB48:
add r2, r4, #0
str r0, [r4]
@@ -52536,7 +52536,7 @@ _021EFB48:
mov r1, #0x1a
add r2, #0xc
add r3, r5, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [r4, #4]
mov r1, #0
str r1, [r4, #0x10]
@@ -54602,7 +54602,7 @@ _021F0AEC:
str r0, [r4, r1]
pop {r3, r4, r5, pc}
_021F0B0C:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
nop
_021F0B14: .word 0x000003CF
@@ -58151,7 +58151,7 @@ _021F266A:
str r0, [r1]
pop {r4, r5, r6, pc}
_021F2688:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
nop
_021F2690: .word 0x000003CF
@@ -58355,11 +58355,11 @@ MOD16_021F2808: ; 0x021F2808
add r6, r0, #0
cmp r4, #1
bne _021F282C
- bl ErrorHandling
+ bl GF_AssertFail
_021F282C:
cmp r4, #0
bne _021F2834
- bl ErrorHandling
+ bl GF_AssertFail
_021F2834:
lsl r1, r4, #0x18
add r0, r5, #0
@@ -58394,11 +58394,11 @@ MOD16_021F2858: ; 0x021F2858
add r6, r0, #0
cmp r4, #1
bne _021F287C
- bl ErrorHandling
+ bl GF_AssertFail
_021F287C:
cmp r4, #0
bne _021F2884
- bl ErrorHandling
+ bl GF_AssertFail
_021F2884:
lsl r1, r4, #0x18
add r0, r5, #0
@@ -58962,7 +58962,7 @@ MOD16_021F2C8C: ; 0x021F2C8C
ldrb r0, [r4, r0]
cmp r0, #8
bls _021F2CBC
- bl ErrorHandling
+ bl GF_AssertFail
_021F2CBC:
pop {r3, r4, r5, pc}
nop
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 82398e6b..955741b3 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -46,7 +46,7 @@ MOD17_021D7520: ; 0x021D7520
bl MOD17_021D76E0
add r4, r0, #0
bne _021D7532
- bl ErrorHandling
+ bl GF_AssertFail
_021D7532:
ldr r0, [r5, #0x18]
str r0, [r4]
@@ -508,7 +508,7 @@ MOD17_021D786C: ; 0x021D786C
push {r4, lr}
add r4, r0, #0
bl FUN_020222AC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r4, #0x1c]
cmp r0, #0
beq _021D7884
@@ -768,7 +768,7 @@ MOD17_021D7A2C: ; 0x021D7A2C
lsl r5, r5, #2
add r0, r6, #0
add r1, r1, r5
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [r4, #0x30]
ldr r0, [r0, r5]
pop {r4, r5, r6, pc}
@@ -1046,7 +1046,7 @@ MOD17_021D7C28: ; 0x021D7C28
add r6, r2, #0
ldr r7, [sp, #0x18]
str r1, [r0]
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r1, _021D7CB0 ; =0x04000470
lsl r0, r4, #0xc
str r0, [r1]
@@ -1055,7 +1055,7 @@ MOD17_021D7C28: ; 0x021D7C28
mov r0, #0
str r0, [r1]
ldr r0, [sp]
- ldr r1, _021D7CB4 ; =UNK_020FFA38
+ ldr r1, _021D7CB4 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r0, r2, #1
@@ -1101,7 +1101,7 @@ _021D7CA0:
nop
_021D7CAC: .word 0x04000454
_021D7CB0: .word 0x04000470
-_021D7CB4: .word UNK_020FFA38
+_021D7CB4: .word FX_SinCosTable_
_021D7CB8: .word 0x0400046C
_021D7CBC: .word 0x04000448
thumb_func_end MOD17_021D7C28
@@ -1173,7 +1173,7 @@ _021D7D24: .word MOD17_021DE32C
thumb_func_start MOD17_021D7D28
MOD17_021D7D28: ; 0x021D7D28
push {r3, lr}
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
mov r0, #1
add r1, r0, #0
@@ -1218,11 +1218,11 @@ MOD17_021D7D28: ; 0x021D7D28
str r0, [r2]
str r1, [r2, #0x40]
mov r1, #1
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
pop {r3, pc}
.align 2, 0
_021D7D9C: .word 0x04000008
@@ -1253,7 +1253,7 @@ MOD17_021D7DB0: ; 0x021D7DB0
mov r0, #0x10
orr r0, r1
str r0, [r2]
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
bl GX_DisableEngineALayers
bl GX_DisableEngineBLayers
mov r0, #0x1f
@@ -1272,8 +1272,8 @@ _021D7DFC: .word 0xFFCFFFEF
thumb_func_start MOD17_021D7E00
MOD17_021D7E00: ; 0x021D7E00
push {r3, lr}
- bl FUN_020AEAF4
- bl FUN_020AEC60
+ bl NNS_GfdResetFrmTexVramState
+ bl NNS_GfdResetFrmPlttVramState
pop {r3, pc}
thumb_func_end MOD17_021D7E00
@@ -1282,7 +1282,7 @@ MOD17_021D7E0C: ; 0x021D7E0C
push {r3, lr}
bl GX_DisableEngineALayers
bl GX_DisableEngineBLayers
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
pop {r3, pc}
thumb_func_end MOD17_021D7E0C
@@ -1357,7 +1357,7 @@ _021D7E8E:
ldr r0, [r5, #8]
cmp r1, r0
blt _021D7E9A
- bl ErrorHandling
+ bl GF_AssertFail
_021D7E9A:
ldr r0, [r4, #4]
cmp r0, #0
@@ -1412,7 +1412,7 @@ _021D7EEE:
ldr r0, [r5, #0x14]
cmp r1, r0
blt _021D7EFA
- bl ErrorHandling
+ bl GF_AssertFail
_021D7EFA:
ldr r0, [r4, #4]
cmp r0, #0
@@ -1658,7 +1658,7 @@ MOD17_021D80CC: ; 0x021D80CC
bl FUN_0201E00C
bl FUN_0201D168
bl FUN_0201E0BC
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7c
@@ -1752,11 +1752,11 @@ _021D81AC:
add r1, r4, #1
mov r2, #0
mov r3, #0xe
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #4]
cmp r0, #0
bne _021D81C6
- bl ErrorHandling
+ bl GF_AssertFail
_021D81C6:
ldr r1, [sp, #4]
add r0, r7, #0
@@ -1778,7 +1778,7 @@ _021D81C6:
mov r0, #0x19
add r2, r1, #0
mov r3, #0xe
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r4, r0, #0
ldr r0, [r6, #0x14]
add r1, r4, #0
@@ -1787,7 +1787,7 @@ _021D81C6:
ldr r1, [r6, #8]
add r0, r4, #0
add r1, r1, #4
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r1, [r7]
ldr r0, [r6, #8]
str r1, [r0]
@@ -1816,7 +1816,7 @@ _021D822A:
add r1, #0xce
mov r2, #0
mov r3, #0xe
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r2, r4, #0
add r1, r0, #0
add r2, #0x64
@@ -1837,7 +1837,7 @@ _021D822A:
str r0, [sp]
ldr r1, [sp, #8]
mov r0, #0x19
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [sp, #0xc]
ldr r0, [r5, #0x14]
ldr r1, [sp, #0xc]
@@ -1851,13 +1851,13 @@ _021D822A:
ldr r0, [sp, #0xc]
add r1, r1, r6
add r1, r1, #4
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r0, [r5, #8]
add r0, r0, r6
ldr r0, [r0, #4]
cmp r0, #0
bne _021D8298
- bl ErrorHandling
+ bl GF_AssertFail
_021D8298:
ldr r1, [r7]
ldr r0, [r5, #8]
@@ -1887,7 +1887,7 @@ MOD17_021D82B8: ; 0x021D82B8
mov r0, #0x19
mov r1, #0xeb
str r2, [sp]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x28]
add sp, #4
pop {r3, r4, pc}
@@ -1914,13 +1914,13 @@ MOD17_021D82E4: ; 0x021D82E4
add r6, r3, #0
bl FUN_02006D98
str r0, [r5, #0x20]
- ldr r3, _021D833C ; =UNK_021064B8
+ ldr r3, _021D833C ; =NNS_GfdDefaultFuncAllocTexVram
mov r1, #0
ldr r3, [r3]
add r0, r4, #0
add r2, r1, #0
blx r3
- ldr r3, _021D8340 ; =UNK_021064C0
+ ldr r3, _021D8340 ; =NNS_GfdDefaultFuncAllocPlttVram
add r4, r0, #0
ldr r3, [r3]
add r0, r6, #0
@@ -1948,8 +1948,8 @@ MOD17_021D82E4: ; 0x021D82E4
str r0, [r5, #0x24]
pop {r4, r5, r6, pc}
nop
-_021D833C: .word UNK_021064B8
-_021D8340: .word UNK_021064C0
+_021D833C: .word NNS_GfdDefaultFuncAllocTexVram
+_021D8340: .word NNS_GfdDefaultFuncAllocPlttVram
_021D8344: .word 0x7FFF0000
_021D8348: .word 0xFFFF0000
thumb_func_end MOD17_021D82E4
@@ -2123,7 +2123,7 @@ MOD17_021D83E4: ; 0x021D83E4
str r0, [r5, r1]
mov r0, #0xd
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
ldr r2, _021D84EC ; =0x000006A8
mov r1, #0
str r0, [r5, r2]
@@ -2506,7 +2506,7 @@ _021D8780:
bl FUN_0201CD04
cmp r0, #1
beq _021D87F0
- bl ErrorHandling
+ bl GF_AssertFail
_021D87F0:
add r0, r6, #0
bl OverlayManager_FreeData
@@ -2663,7 +2663,7 @@ _021D88F8:
str r0, [r4, r1]
mov r0, #0xd
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
ldr r1, _021D8994 ; =0x000006A8
mov r2, #0
str r0, [r4, r1]
@@ -3114,7 +3114,7 @@ MOD17_021D8C9C: ; 0x021D8C9C
bl FUN_0201CD04
cmp r0, #1
beq _021D8D30
- bl ErrorHandling
+ bl GF_AssertFail
_021D8D30:
add r0, r5, #0
bl OverlayManager_FreeData
@@ -3905,7 +3905,7 @@ _021D9312:
bl MOD17_021DA870
cmp r0, #0
bne _021D932A
- bl ErrorHandling
+ bl GF_AssertFail
_021D932A:
ldr r0, [r4, #0xc]
add sp, #4
@@ -4201,7 +4201,7 @@ _021D955E:
bl MOD17_021DA870
cmp r0, #0
bne _021D9576
- bl ErrorHandling
+ bl GF_AssertFail
_021D9576:
ldr r0, [r4, #0xc]
add sp, #4
@@ -4691,7 +4691,7 @@ MOD17_021D9918: ; 0x021D9918
ldr r0, _021D99D4 ; =0x000006A8
mov r1, #0xf
ldr r0, [r5, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -4753,7 +4753,7 @@ MOD17_021D99E0: ; 0x021D99E0
add r4, r1, #0
ldr r0, [r5, r0]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021D9A5C ; =0x00000151
mov r0, #0
mov r1, #0x1a
@@ -4813,12 +4813,12 @@ MOD17_021D9A68: ; 0x021D9A68
add r4, r1, #0
cmp r0, #0
beq _021D9A7E
- bl ErrorHandling
+ bl GF_AssertFail
_021D9A7E:
ldr r0, _021D9B08 ; =0x000006A8
mov r1, #0xf
ldr r0, [r5, r0]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021D9B0C ; =0x00000151
mov r0, #0
mov r1, #0x1a
@@ -5061,7 +5061,7 @@ _021D9C2E:
mov r4, #0x14
b _021D9C36
_021D9C32:
- bl ErrorHandling
+ bl GF_AssertFail
_021D9C36:
add r0, r4, #0
pop {r4, pc}
@@ -5167,7 +5167,7 @@ MOD17_021D9CE0: ; 0x021D9CE0
add r6, r2, #0
cmp r4, #0
bne _021D9CF0
- bl ErrorHandling
+ bl GF_AssertFail
_021D9CF0:
add r0, r5, #0
add r0, #0xa8
@@ -5252,7 +5252,7 @@ MOD17_021D9D70: ; 0x021D9D70
add r4, r0, #0
cmp r5, #0x15
blo _021D9D7E
- bl ErrorHandling
+ bl GF_AssertFail
_021D9D7E:
lsl r0, r5, #3
ldr r0, [r4, r0]
@@ -5266,7 +5266,7 @@ MOD17_021D9D84: ; 0x021D9D84
add r4, r0, #0
cmp r5, #0x15
blo _021D9D92
- bl ErrorHandling
+ bl GF_AssertFail
_021D9D92:
lsl r0, r5, #3
add r0, r4, r0
@@ -5762,7 +5762,7 @@ MOD17_021DA0E8: ; 0x021DA0E8
sub r0, r0, #1
str r0, [r4, #0x24]
bpl _021DA0FE
- bl ErrorHandling
+ bl GF_AssertFail
_021DA0FE:
pop {r4, pc}
thumb_func_end MOD17_021DA0E8
@@ -6674,7 +6674,7 @@ _021DA73E:
str r1, [sp, #0x44]
b _021DA750
_021DA74C:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA750:
ldr r0, [sp, #0xc]
ldr r1, [r5, #0x48]
@@ -6687,12 +6687,12 @@ _021DA750:
ldr r1, [r2, r1]
str r1, [sp, #0x34]
bne _021DA76A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA76A:
ldr r0, [sp, #0x34]
cmp r0, #0
bne _021DA774
- bl ErrorHandling
+ bl GF_AssertFail
_021DA774:
ldr r2, [r5, #4]
add r0, r6, #0
@@ -7122,7 +7122,7 @@ MOD17_021DAA6C: ; 0x021DAA6C
push {r4, lr}
add r4, r0, #0
bne _021DAA76
- bl ErrorHandling
+ bl GF_AssertFail
_021DAA76:
ldr r0, [r4]
pop {r4, pc}
@@ -7137,7 +7137,7 @@ MOD17_021DAA7C: ; 0x021DAA7C
add r4, r1, #0
cmp r5, #0
bne _021DAA8C
- bl ErrorHandling
+ bl GF_AssertFail
_021DAA8C:
mov r0, #0xc
mul r0, r4
@@ -7499,7 +7499,7 @@ MOD17_021DACA4: ; 0x021DACA4
str r0, [r4, #0x28]
cmp r0, #0
bne _021DAD04
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD04:
ldr r3, [r4, #0x2c]
mov r2, #0xc
@@ -7689,7 +7689,7 @@ _021DAE40:
add sp, #4
pop {r3, r4, r5, r6, pc}
_021DAE74:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAE78:
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x2c]
@@ -7932,7 +7932,7 @@ MOD17_021DAFF4: ; 0x021DAFF4
add r4, r0, #0
cmp r5, #0x64
blo _021DB002
- bl ErrorHandling
+ bl GF_AssertFail
_021DB002:
lsl r0, r5, #2
ldr r0, [r4, r0]
@@ -8180,7 +8180,7 @@ MOD17_021DB1D0: ; 0x021DB1D0
ldr r0, [r0, #4]
cmp r0, #1
beq _021DB1E6
- bl ErrorHandling
+ bl GF_AssertFail
_021DB1E6:
ldr r0, [r4, #0x10]
mov r2, #0x1c
@@ -8536,7 +8536,7 @@ MOD17_021DB4AC: ; 0x021DB4AC
ldr r0, [r0, #4]
cmp r0, #1
beq _021DB4C0
- bl ErrorHandling
+ bl GF_AssertFail
_021DB4C0:
ldr r0, [r4, #0x10]
ldr r5, [r0]
@@ -8834,7 +8834,7 @@ MOD17_021DB6D8: ; 0x021DB6D8
ldrh r0, [r1]
ldrh r1, [r1, #2]
mov r3, #0xe
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r1, r0, #0
add r0, r4, #0
mov r2, #0x76
@@ -8913,10 +8913,10 @@ MOD17_021DB700: ; 0x021DB700
ldrh r0, [r6]
ldrh r1, [r6, #2]
ldr r3, [sp, #0x30]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r1, sp, #0x10
add r6, r0, #0
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0x10]
ldr r0, [r0, #0x14]
bl FUN_02008A74
@@ -9277,7 +9277,7 @@ MOD17_021DB9F4: ; 0x021DB9F4
str r0, [r5]
cmp r0, #0
bne _021DBA0E
- bl ErrorHandling
+ bl GF_AssertFail
_021DBA0E:
ldr r0, [r5]
mov r1, #0
@@ -9309,12 +9309,12 @@ MOD17_021DBA30: ; 0x021DBA30
add r7, r2, #0
cmp r0, #0
bne _021DBA42
- bl ErrorHandling
+ bl GF_AssertFail
_021DBA42:
ldr r0, [r5, #4]
cmp r0, #0
bne _021DBA4C
- bl ErrorHandling
+ bl GF_AssertFail
_021DBA4C:
ldr r2, [r5, #4]
mov r4, #0
@@ -9332,7 +9332,7 @@ _021DBA56:
_021DBA64:
cmp r2, r4
bgt _021DBA6C
- bl ErrorHandling
+ bl GF_AssertFail
_021DBA6C:
ldr r0, [r5]
lsl r1, r4, #4
@@ -9813,7 +9813,7 @@ _021DBDAA:
ldr r0, [r5]
add r3, sp, #0x14
ldr r0, [r0, #4]
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r3, [r5]
add r4, r0, #0
ldr r0, [r3, #0x18]
@@ -9850,7 +9850,7 @@ MOD17_021DBDE8: ; 0x021DBDE8
ldr r0, [r1, #4]
ldr r1, [r1, #8]
add r3, sp, #0x14
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r3, [r5]
add r4, r0, #0
ldr r0, [r3, #0x18]
@@ -10023,7 +10023,7 @@ _021DBF2A:
ldr r0, [r5, #4]
ldr r1, [r5, #0x10]
add r3, sp, #0x24
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x24]
str r0, [sp, #0x20]
ldrh r0, [r2]
@@ -10206,7 +10206,7 @@ _021DC0A0:
add r0, r7, #0
mov r2, #0
add r3, r4, #4
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [r4, #8]
str r5, [r4]
ldr r0, [sp, #0x20]
@@ -10245,7 +10245,7 @@ _021DC0EE:
ldr r3, [sp, #0x1c]
add r0, r7, #0
add r2, r4, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [r4, #4]
str r5, [r4, #8]
ldr r0, [sp, #0x18]
@@ -10332,18 +10332,18 @@ MOD17_021DC1A0: ; 0x021DC1A0
add r4, r1, #0
cmp r5, #0
bne _021DC1AE
- bl ErrorHandling
+ bl GF_AssertFail
_021DC1AE:
cmp r4, #0
bne _021DC1B6
- bl ErrorHandling
+ bl GF_AssertFail
_021DC1B6:
ldr r0, [r4]
bl FUN_0201FE94
str r0, [r5]
cmp r0, #0
bne _021DC1C6
- bl ErrorHandling
+ bl GF_AssertFail
_021DC1C6:
ldr r0, [r4, #0xc]
str r0, [r5, #4]
@@ -10496,7 +10496,7 @@ MOD17_021DC2C0: ; 0x021DC2C0
add r7, r3, #0
cmp r5, #0
bne _021DC2D2
- bl ErrorHandling
+ bl GF_AssertFail
_021DC2D2:
str r7, [r5, #4]
str r6, [r5, #8]
@@ -10756,7 +10756,7 @@ MOD17_021DC4CC: ; 0x021DC4CC
ldr r0, [r4, #0x68]
cmp r0, #0
bne _021DC4DA
- bl ErrorHandling
+ bl GF_AssertFail
_021DC4DA:
ldr r0, [r4, #0x68]
bl FUN_02022144
@@ -10819,7 +10819,7 @@ MOD17_021DC538: ; 0x021DC538
add r7, r3, #0
cmp r5, #0
bne _021DC54A
- bl ErrorHandling
+ bl GF_AssertFail
_021DC54A:
cmp r4, #4
bge _021DC55E
@@ -10921,7 +10921,7 @@ _021DC5E6:
bl MOD17_021DC264
pop {r4, r5, r6, pc}
_021DC618:
- bl ErrorHandling
+ bl GF_AssertFail
_021DC61C:
pop {r4, r5, r6, pc}
nop
@@ -11061,7 +11061,7 @@ MOD17_021DC698: ; 0x021DC698
bl FUN_0201D568
cmp r0, #0
bne _021DC736
- bl ErrorHandling
+ bl GF_AssertFail
_021DC736:
ldr r0, [r5, #0x18]
add r1, sp, #0x80
@@ -11257,7 +11257,7 @@ MOD17_021DC880: ; 0x021DC880
bl NewMsgDataFromNarc
add r6, r0, #0
bne _021DC898
- bl ErrorHandling
+ bl GF_AssertFail
_021DC898:
add r0, r6, #0
add r1, r4, #0
@@ -11265,9 +11265,9 @@ _021DC898:
add r7, r0, #0
mov r0, #0xe
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r4, r0, #0
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
@@ -11436,7 +11436,7 @@ _021DC9CC:
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -11622,7 +11622,7 @@ MOD17_021DCB48: ; 0x021DCB48
add r7, r3, #0
tst r0, r1
bne _021DCB64
- bl ErrorHandling
+ bl GF_AssertFail
_021DCB64:
mov r0, #0
str r0, [sp]
@@ -11653,7 +11653,7 @@ MOD17_021DCB80: ; 0x021DCB80
add r7, r3, #0
tst r0, r1
bne _021DCB9C
- bl ErrorHandling
+ bl GF_AssertFail
_021DCB9C:
mov r0, #0
str r0, [sp]
@@ -11789,9 +11789,9 @@ MOD17_021DCC68: ; 0x021DCC68
mov r0, #0xe
mov r1, #1
add r4, r2, #0
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5]
- bl FUN_0201901C
+ bl InitWindow
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -11817,7 +11817,7 @@ MOD17_021DCC68: ; 0x021DCC68
bl FUN_02019064
ldr r0, [r5]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x34]
cmp r0, #0
beq _021DCCCC
@@ -11860,7 +11860,7 @@ MOD17_021DCCEC: ; 0x021DCCEC
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x28]
add r1, r4, #0
str r0, [sp]
@@ -11896,7 +11896,7 @@ MOD17_021DCD34: ; 0x021DCD34
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x28]
add r1, r4, #0
str r0, [sp]
@@ -11936,7 +11936,7 @@ MOD17_021DCD80: ; 0x021DCD80
bl NewMsgDataFromNarc
add r5, r0, #0
bne _021DCD98
- bl ErrorHandling
+ bl GF_AssertFail
_021DCD98:
add r0, r5, #0
add r1, r4, #0
@@ -11978,7 +11978,7 @@ MOD17_021DCDD4: ; 0x021DCDD4
str r3, [sp, #0x10]
cmp r0, #0
beq _021DCDEC
- bl ErrorHandling
+ bl GF_AssertFail
_021DCDEC:
mov r0, #0
add r1, r5, #0
@@ -11987,7 +11987,7 @@ _021DCDEC:
bl NewMsgDataFromNarc
add r5, r0, #0
bne _021DCE00
- bl ErrorHandling
+ bl GF_AssertFail
_021DCE00:
ldr r1, [sp, #0x10]
add r0, r5, #0
@@ -12396,7 +12396,7 @@ _021DD0D0:
bl MOD17_021DCC68
ldr r0, [r7, #0x18]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
mov r3, #4
@@ -12522,7 +12522,7 @@ _021DD21A:
str r0, [sp, #4]
cmp r0, #0xa
ble _021DD22C
- bl ErrorHandling
+ bl GF_AssertFail
_021DD22C:
ldr r0, [r5, #0x10]
ldr r1, [sp, #4]
@@ -13716,7 +13716,7 @@ _021DDAC6:
mov r0, #0x19
add r1, r5, #1
mov r2, #0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r7, r0, #0
ldr r0, [r4, #0x10]
add r1, r7, #0
@@ -13727,7 +13727,7 @@ _021DDAC6:
add r1, r1, r5
add r0, r7, #0
add r1, r1, #4
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #4]
ldr r1, [r0]
ldr r0, [r4]
@@ -13749,7 +13749,7 @@ _021DDB1E:
ldr r3, [sp, #0xc]
mov r0, #0x19
add r2, r1, #0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r5, r0, #0
ldr r0, [r4, #0x14]
add r1, r5, #0
@@ -13758,7 +13758,7 @@ _021DDB1E:
ldr r1, [r4, #8]
add r0, r5, #0
add r1, r1, #4
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r0, [sp, #4]
ldr r1, [r0]
ldr r0, [r4, #8]
@@ -13875,7 +13875,7 @@ MOD17_021DDC30: ; 0x021DDC30
bl OverlayManager_GetData
add r5, r0, #0
bl FUN_020222AC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r5, #0x10]
bl MOD17_021DD518
mov r0, #0
@@ -14023,7 +14023,7 @@ MOD17_021DDD54: ; 0x021DDD54
mov r1, #0x7e
mov r2, #0
mov r3, #0x60
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -14034,7 +14034,7 @@ MOD17_021DDD54: ; 0x021DDD54
mov r0, #0x19
mov r1, #0x7d
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5, #0xc]
cmp r0, #0
bne _021DDD92
@@ -14050,7 +14050,7 @@ _021DDD96:
mov r0, #0x19
mov r2, #0
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x10]
mov r3, #0
str r3, [sp]
@@ -14106,7 +14106,7 @@ MOD17_021DDDFC: ; 0x021DDDFC
add r1, r0, #0
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -14118,7 +14118,7 @@ MOD17_021DDDFC: ; 0x021DDDFC
mov r0, #0xc
mov r1, #0xb
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -14130,7 +14130,7 @@ MOD17_021DDDFC: ; 0x021DDDFC
mov r0, #0xc
mov r1, #0xa
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -14242,7 +14242,7 @@ MOD17_021DDF1C: ; 0x021DDF1C
add r4, r0, #0
mov r0, #0xe
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
mov r1, #0x19
lsl r1, r1, #4
str r0, [r4, r1]
@@ -14313,7 +14313,7 @@ MOD17_021DDFAC: ; 0x021DDFAC
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0xc]
cmp r0, #0
bne _021DDFCA
@@ -14344,7 +14344,7 @@ MOD17_021DDFDC: ; 0x021DDFDC
str r0, [sp, #0x10]
cmp r0, #0
bne _021DDFF8
- bl ErrorHandling
+ bl GF_AssertFail
_021DDFF8:
mov r0, #0xd
bl ScrStrBufs_new
@@ -14522,7 +14522,7 @@ MOD17_021DE0F4: ; 0x021DE0F4
str r0, [sp, #0x10]
cmp r0, #0
bne _021DE1A0
- bl ErrorHandling
+ bl GF_AssertFail
_021DE1A0:
ldr r0, [sp, #0x10]
mov r1, #0x2b
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index d0f6db33..9b2fdf67 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -1788,7 +1788,7 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r0, #0x34
mov r1, #1
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -1798,7 +1798,7 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r0, #0x34
add r2, r4, #0
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -1809,7 +1809,7 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r0, #0x34
mov r1, #2
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0x80
str r3, [sp]
mov r0, #0x1d
@@ -1818,7 +1818,7 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r1, #0x34
mov r2, #0
add r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r4, #0
add r1, r6, #0
add r2, r5, #0
@@ -1861,7 +1861,7 @@ MOD18_0223A4D8: ; 0x0223A4D8
mov r1, #9
ldr r2, [r2, #4]
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, _0223A55C ; =0x02251380
ldr r0, [r0]
ldr r0, [r0, #4]
@@ -2500,7 +2500,7 @@ _0223AA5C:
mov r1, #0x34
mov r2, #0
add r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #2
str r0, [sp]
mov r0, #4
@@ -2808,7 +2808,7 @@ _0223AD00:
add r5, #0xc
cmp r1, #8
blt _0223ACB6
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -3116,7 +3116,7 @@ _0223AF18:
cmp r4, #0x55
blo _0223AF04
_0223AF20:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, r5, r6, pc}
.align 2, 0
@@ -3495,7 +3495,7 @@ _0223B1FC:
mov r0, #0x37
mov r2, #0
lsl r3, r3, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
b _0223B248
_0223B218:
ldr r5, [sp, #0x18]
@@ -3505,7 +3505,7 @@ _0223B218:
mov r0, #0x37
add r2, r5, r4
mov r3, #0x1d
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
ldr r1, [sp, #0x18]
add r1, r1, r4
str r0, [r1, #0x18]
@@ -3533,7 +3533,7 @@ _0223B248:
ldrh r1, [r1, #0x10]
mov r0, #0x37
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
str r0, [sp, #0x20]
ldr r0, [sp, #0x30]
str r0, [sp, #0x24]
@@ -5780,7 +5780,7 @@ MOD18_0223C37C: ; 0x0223C37C
ldr r1, [r0]
ldr r0, _0223C56C ; =0x000009EB
strb r2, [r1, r0]
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7c
@@ -6327,7 +6327,7 @@ MOD18_0223C7D4: ; 0x0223C7D4
ldr r0, [r1, r0]
cmp r0, #0
beq _0223C7E6
- bl ErrorHandling
+ bl GF_AssertFail
_0223C7E6:
ldr r0, _0223C834 ; =0x02251380
ldr r1, [r0]
@@ -6335,7 +6335,7 @@ _0223C7E6:
ldr r0, [r1, r0]
cmp r0, #0
beq _0223C7F6
- bl ErrorHandling
+ bl GF_AssertFail
_0223C7F6:
mov r1, #0x5e
mov r0, #0xb
@@ -7102,7 +7102,7 @@ MOD18_0223CD74: ; 0x0223CD74
add r4, r0, #0
cmp r4, #0x64
blt _0223CD9E
- bl ErrorHandling
+ bl GF_AssertFail
_0223CD9E:
mov r5, #0x63
cmp r4, #0x63
@@ -7552,7 +7552,7 @@ _0223D106:
mvn r0, r0
cmp r1, r0
bne _0223D112
- bl ErrorHandling
+ bl GF_AssertFail
_0223D112:
cmp r4, #0x63
bge _0223D132
@@ -7602,7 +7602,7 @@ MOD18_0223D14C: ; 0x0223D14C
bl MOD18_0223CE14
add r5, r0, #0
bne _0223D178
- bl ErrorHandling
+ bl GF_AssertFail
_0223D178:
add r0, r4, #0
add r1, r5, #0
@@ -7830,7 +7830,7 @@ MOD18_0223D30C: ; 0x0223D30C
ldr r0, [r1, r0]
cmp r0, #0
beq _0223D31E
- bl ErrorHandling
+ bl GF_AssertFail
_0223D31E:
ldr r0, _0223D364 ; =0x02251384
ldr r1, [r0]
@@ -7839,7 +7839,7 @@ _0223D31E:
ldr r0, [r1, r0]
cmp r0, #0
beq _0223D330
- bl ErrorHandling
+ bl GF_AssertFail
_0223D330:
mov r0, #0xb
mov r1, #4
@@ -8073,7 +8073,7 @@ MOD18_0223D414: ; 0x0223D414
mov r1, #0x34
mov r2, #0
add r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #2
str r0, [sp]
mov r0, #4
@@ -10255,7 +10255,7 @@ _0223E5DE:
add r2, #8
cmp r6, #0x14
blt _0223E5BC
- bl ErrorHandling
+ bl GF_AssertFail
_0223E5EA:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -10464,7 +10464,7 @@ _0223E746:
ldr r0, [r1, r0]
cmp r0, #0x64
ble _0223E764
- bl ErrorHandling
+ bl GF_AssertFail
_0223E764:
mov r0, #0
pop {r3, r4, r5, pc}
@@ -12184,7 +12184,7 @@ MOD18_0223F428: ; 0x0223F428
bne _0223F49E
cmp r4, #0x60
beq _0223F456
- bl ErrorHandling
+ bl GF_AssertFail
_0223F456:
mov r0, #0
add r4, r0, #0
@@ -12402,7 +12402,7 @@ MOD18_0223F5CC: ; 0x0223F5CC
lsr r0, r0, #0x1c
cmp r0, #8
blo _0223F5DE
- bl ErrorHandling
+ bl GF_AssertFail
_0223F5DE:
ldrb r3, [r4, #7]
lsl r0, r3, #0x19
@@ -12543,7 +12543,7 @@ _0223F714:
add r1, r1, #6
cmp r3, #0xc0
blt _0223F706
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.align 2, 0
@@ -14057,7 +14057,7 @@ MOD18_02240210: ; 0x02240210
ldr r0, [r1, r0]
cmp r0, #0
beq _0224023E
- bl ErrorHandling
+ bl GF_AssertFail
_0224023E:
ldr r0, _02240268 ; =0x022513A0
mov r2, #0x64
@@ -14679,7 +14679,7 @@ _022406A4:
mov r0, #0x32
mov r1, #9
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add sp, #0x1c
add r0, r0, #1
@@ -14694,7 +14694,7 @@ _022406D8:
mov r0, #0x32
mov r1, #0xa
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r4]
add sp, #0x1c
add r0, r0, #1
@@ -14725,7 +14725,7 @@ _022406F6:
mov r0, #0x32
mov r1, #8
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
b _02240774
_0224072E:
ldr r1, _0224088C ; =0x022500A8
@@ -14760,7 +14760,7 @@ _0224072E:
ldr r2, [r4, #0x10]
mov r0, #0x32
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
_02240774:
mov r0, #0
mov r1, #3
@@ -17178,7 +17178,7 @@ _02241A30:
lsl r2, r2, #0xa
asr r0, r0, #4
lsl r6, r0, #1
- ldr r0, _02241AAC ; =UNK_020FFA38
+ ldr r0, _02241AAC ; =FX_SinCosTable_
lsl r1, r6, #1
ldrsh r0, [r0, r1]
mov r3, #0
@@ -17194,7 +17194,7 @@ _02241A30:
orr r4, r0
add r0, r6, #1
lsl r1, r0, #1
- ldr r0, _02241AAC ; =UNK_020FFA38
+ ldr r0, _02241AAC ; =FX_SinCosTable_
mov r2, #0xa
ldrsh r0, [r0, r1]
lsl r2, r2, #0xa
@@ -17233,7 +17233,7 @@ _02241AA8:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_02241AAC: .word UNK_020FFA38
+_02241AAC: .word FX_SinCosTable_
_02241AB0: .word MOD18_022513A0
thumb_func_end MOD18_02241A04
@@ -17478,7 +17478,7 @@ _02241C70:
ldr r2, [sp]
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _02241D34 ; =UNK_020FFA38
+ ldr r0, _02241D34 ; =FX_SinCosTable_
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
@@ -17504,7 +17504,7 @@ _02241C70:
lsl r0, r0, #1
add r0, r0, #1
lsl r1, r0, #1
- ldr r0, _02241D34 ; =UNK_020FFA38
+ ldr r0, _02241D34 ; =FX_SinCosTable_
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
bl _ll_mul
@@ -17561,7 +17561,7 @@ _02241D24: .word MOD18_02241AB4
_02241D28: .word MOD18_022513A0
_02241D2C: .word 0x00000B3B
_02241D30: .word 0x00000000
-_02241D34: .word UNK_020FFA38
+_02241D34: .word FX_SinCosTable_
thumb_func_end MOD18_02241AD0
thumb_func_start MOD18_02241D38
@@ -18343,7 +18343,7 @@ MOD18_02242320: ; 0x02242320
ldrh r0, [r2, r1]
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _022423AC ; =UNK_020FFA38
+ ldr r0, _022423AC ; =FX_SinCosTable_
ldrsh r1, [r0, r1]
mov r0, #1
lsl r0, r0, #0xc
@@ -18373,7 +18373,7 @@ _022423A4:
pop {r4, r5, pc}
.align 2, 0
_022423A8: .word MOD18_022513A0
-_022423AC: .word UNK_020FFA38
+_022423AC: .word FX_SinCosTable_
thumb_func_end MOD18_02242320
thumb_func_start MOD18_022423B0
@@ -18529,7 +18529,7 @@ _022424D4:
ldrh r0, [r4, #0x1c]
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _02242594 ; =UNK_020FFA38
+ ldr r0, _02242594 ; =FX_SinCosTable_
ldrsh r1, [r0, r1]
ldr r0, [r5, #0x48]
sub r0, r0, r1
@@ -18538,7 +18538,7 @@ _022424D4:
ldr r0, [r5, #0x44]
asr r1, r1, #4
lsl r2, r1, #2
- ldr r1, _02242594 ; =UNK_020FFA38
+ ldr r1, _02242594 ; =FX_SinCosTable_
add r2, r1, r2
mov r1, #2
ldrsh r1, [r2, r1]
@@ -18616,7 +18616,7 @@ _02242584: .word 0x00000000
_02242588: .word MOD18_022500C0
_0224258C: .word 0x00000626
_02242590: .word MOD18_022513A0
-_02242594: .word UNK_020FFA38
+_02242594: .word FX_SinCosTable_
_02242598: .word 0x0000FFFF
thumb_func_end MOD18_022423B0
@@ -21387,7 +21387,7 @@ _02243B16:
str r0, [sp, #0x24]
add r0, sp, #0x1c
add r1, sp, #0x18
- bl FUN_020BB408
+ bl NNS_G3dWorldPosToScrPos
ldr r0, [sp, #0x18]
lsl r0, r0, #0xc
str r0, [sp, #0x1c]
@@ -22033,18 +22033,18 @@ MOD18_02244028: ; 0x02244028
ldr r1, [sp, #0x30]
strb r1, [r0, #0x1e]
ldr r0, [sp, #8]
- bl FUN_02013690
+ bl ListMenuCursorNew
ldr r1, [sp, #0xc]
str r0, [r1, #0x10]
ldr r1, _022440C0 ; =0x0008090F
- bl FUN_020136E0
+ bl ListMenuCursorSetColor
ldr r1, [sp, #8]
ldr r0, [sp, #0xc]
strb r1, [r0, #0x1d]
ldr r1, [sp, #0xc]
ldrh r0, [r5, #0x10]
ldrb r1, [r1, #0x1d]
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r7, r0, #0
ldrh r0, [r5, #0x10]
mov r6, #0
@@ -22055,7 +22055,7 @@ _02244084:
ldr r1, [r5]
add r0, r7, #0
add r1, r1, r4
- bl ListMenu_CopyItem
+ bl ListMenuItems_CopyItem
ldrh r0, [r5, #0x10]
add r6, r6, #1
add r4, #8
@@ -22075,7 +22075,7 @@ _0224409E:
ldr r2, [sp, #4]
ldr r3, [sp, #8]
add r0, r5, #0
- bl FUN_020010A8
+ bl ListMenuInit
ldr r1, [sp, #0xc]
str r0, [r1, #0xc]
add r0, r1, #0
@@ -22099,7 +22099,7 @@ MOD18_022440C4: ; 0x022440C4
lsr r6, r0, #0x10
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_02001470
+ bl ListMenuGetTemplateField
lsl r0, r0, #0x10
lsr r1, r0, #0x10
ldrh r0, [r4, #0x18]
@@ -22118,29 +22118,29 @@ _022440F0:
bhi _0224413A
ldr r0, [r4, #0xc]
mov r1, #7
- bl FUN_02001470
+ bl ListMenuGetTemplateField
str r0, [sp]
ldr r0, [r4, #0xc]
mov r1, #9
- bl FUN_02001470
+ bl ListMenuGetTemplateField
lsl r0, r0, #0x18
lsr r7, r0, #0x18
ldr r0, [r4, #0xc]
mov r1, #8
- bl FUN_02001470
+ bl ListMenuGetTemplateField
str r0, [sp, #4]
sub r0, r6, r5
add r5, r7, #0
mul r5, r0
ldr r0, [r4, #0xc]
mov r1, #0x12
- bl FUN_02001470
+ bl ListMenuGetTemplateField
ldr r3, [sp, #4]
add r1, r0, #0
ldr r0, [r4, #0x10]
ldr r2, [sp]
add r3, r5, r3
- bl FUN_020136F8
+ bl ListMenuUpdateCursorObj
_0224413A:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -22159,13 +22159,13 @@ MOD18_02244140: ; 0x02244140
beq _0224418A
ldr r0, [sp, #4]
mov r1, #2
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r7, r0, #0
add r1, sp, #0xc
ldr r0, [sp, #4]
add r1, #2
add r2, sp, #0xc
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
ldrb r0, [r5, #0x1c]
cmp r0, #0
bne _0224416E
@@ -22216,7 +22216,7 @@ _022441BA:
blx r3
ldrb r1, [r5, #0x1d]
add r0, r7, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r4, #0
add r6, r4, #0
str r0, [sp]
@@ -22234,7 +22234,7 @@ _022441DE:
lsl r1, r4, #3
ldr r0, [sp]
add r1, r2, r1
- bl ListMenu_CopyItem
+ bl ListMenuItems_CopyItem
_022441EA:
add r0, sp, #0xc
ldrh r1, [r0, #2]
@@ -22250,7 +22250,7 @@ _022441EA:
add r1, r2, r1
lsl r1, r1, #3
add r1, r3, r1
- bl ListMenu_CopyItem
+ bl ListMenuItems_CopyItem
_0224420A:
add r6, r6, #1
cmp r6, r7
@@ -22312,11 +22312,11 @@ _02244268:
ldr r1, [sp]
str r0, [r5, #8]
ldr r0, [sp, #4]
- bl FUN_02001658
+ bl ListMenuGetItemStr
mov r0, #0
strb r0, [r5, #0x1c]
ldr r0, [sp, #4]
- bl FUN_02001328
+ bl RedrawListMenu
mov r0, #0
add sp, #0x10
mvn r0, r0
@@ -22355,13 +22355,13 @@ _022442B2:
pop {r3, r4, r5, r6, r7, pc}
_022442CA:
ldr r0, [sp, #4]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r1, r5, #0
ldr r0, [sp, #4]
add r1, #0x20
ldrh r6, [r5, #0x20]
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldrh r0, [r5, #0x20]
cmp r6, r0
beq _022442EA
@@ -22397,12 +22397,12 @@ MOD18_02244318: ; 0x02244318
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r4]
cmp r0, #0
beq _02244334
ldr r0, [r4, #0x10]
- bl FUN_020136C0
+ bl DestroyListMenuCursorObj
ldr r0, [r4, #8]
bl FreeToHeap
_02244334:
@@ -23148,7 +23148,7 @@ MOD18_0224486C: ; 0x0224486C
mov r0, #0x1c
add r3, r1, #0
str r2, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0
mov r0, #5
str r1, [sp]
@@ -23160,7 +23160,7 @@ MOD18_0224486C: ; 0x0224486C
mov r1, #1
add r2, r5, #0
str r3, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #6
str r1, [sp]
@@ -23172,7 +23172,7 @@ MOD18_0224486C: ; 0x0224486C
mov r1, #2
add r2, r5, #0
str r3, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #4
mov r1, #0
bl FUN_02054590
@@ -23187,7 +23187,7 @@ MOD18_0224486C: ; 0x0224486C
bl FUN_020545B8
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x80
str r3, [sp]
mov r2, #4
@@ -23195,7 +23195,7 @@ MOD18_0224486C: ; 0x0224486C
mov r1, #0x34
add r3, #0xc0
str r2, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #1
bl FUN_0200E394
add sp, #0x64
@@ -23388,7 +23388,7 @@ _02244AF8:
ldr r0, [sp, #0xc]
mov r2, #2
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r0, [sp, #0xc]
bl CopyWindowToVram
ldr r0, [r5]
@@ -23521,7 +23521,7 @@ _02244BEC:
_02244BFA:
cmp r4, #2
blt _02244C02
- bl ErrorHandling
+ bl GF_AssertFail
_02244C02:
cmp r4, #0
bne _02244C14
@@ -23720,7 +23720,7 @@ MOD18_02244D40: ; 0x02244D40
add r5, r0, #0
cmp r4, #8
blt _02244D4E
- bl ErrorHandling
+ bl GF_AssertFail
_02244D4E:
mov r0, #0xc
add r5, #0x18
@@ -23978,7 +23978,7 @@ _02244EE0:
bl FUN_0202595C
cmp r0, #0x94
beq _02244EEC
- bl ErrorHandling
+ bl GF_AssertFail
_02244EEC:
ldr r0, _02245000 ; =0x022513EC
ldr r2, _02245004 ; =0x000013E8
@@ -24736,7 +24736,7 @@ MOD18_022454BC: ; 0x022454BC
bl FUN_02031190
cmp r0, #0
beq _022454D4
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
_022454D4:
ldrb r0, [r4, #1]
@@ -25463,7 +25463,7 @@ MOD18_02245A50: ; 0x02245A50
ldr r0, [r0]
cmp r0, #2
beq _02245A9A
- bl ErrorHandling
+ bl GF_AssertFail
_02245A9A:
mov r0, #2
str r0, [r4, #0x14]
@@ -25548,21 +25548,21 @@ MOD18_02245B1C: ; 0x02245B1C
add r5, r0, #0
ldr r1, [sp, #0x30]
mov r0, #2
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r4, r0, #0
add r1, r5, #0
mov r2, #0x26
mov r3, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r4, #0
add r1, r5, #0
mov r2, #0x27
mov r3, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, [sp, #0x30]
mov r1, #1
str r4, [sp, #0x10]
- bl FUN_02018FF4
+ bl AllocWindows
add r1, r0, #0
str r1, [sp, #0x14]
mov r0, #0
@@ -26171,7 +26171,7 @@ _02246020:
ldrb r5, [r6]
cmp r5, #0x11
blt _02246034
- bl ErrorHandling
+ bl GF_AssertFail
_02246034:
ldr r0, _022460EC ; =0x022513EC
mov r2, #0x96
@@ -26973,7 +26973,7 @@ _02246668:
mov r1, #0x34
mov r2, #0
add r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #2
str r0, [sp]
mov r0, #4
@@ -29117,7 +29117,7 @@ _02247774:
cmp r4, #0
bne _022477A6
_022477A2:
- bl ErrorHandling
+ bl GF_AssertFail
_022477A6:
add r0, r7, #0
bl FUN_02059BF4
@@ -29532,7 +29532,7 @@ MOD18_02247AA8: ; 0x02247AA8
add r5, r0, #0
mov r0, #4
add r1, r0, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x1c]
mov r3, #1
str r3, [sp]
@@ -29569,7 +29569,7 @@ _02247AFA:
ldr r2, [r4]
ldr r3, [r4, #4]
add r1, r7, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, #4
@@ -29593,7 +29593,7 @@ _02247AFA:
strh r1, [r5, #0x3a]
add r0, sp, #0x14
add r2, r1, #0
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x20]
add r5, #0xc
add r0, r5, #0
@@ -29658,7 +29658,7 @@ MOD18_02247BB8: ; 0x02247BB8
add r5, r0, #0
mov r0, #4
add r1, r0, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x1c]
mov r3, #1
str r3, [sp]
@@ -29714,7 +29714,7 @@ _02247C2C:
ldr r0, [r5, #0x1c]
add r1, r6, #0
add r3, r2, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _02247C40
_02247C3E:
sub r4, r4, #1
@@ -29745,7 +29745,7 @@ _02247C40:
strh r1, [r5, #0x3a]
add r2, r1, #0
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x20]
add r5, #0xc
add r0, r5, #0
@@ -29766,7 +29766,7 @@ MOD18_02247C98: ; 0x02247C98
add r5, r1, #0
add r6, r0, #0
ldr r0, [r5, #0x20]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r0, r5, #0
bl MOD18_02248FEC
@@ -29831,7 +29831,7 @@ MOD18_02247D1C: ; 0x02247D1C
add r5, r0, #0
mov r0, #4
add r1, r0, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x1c]
mov r3, #1
str r3, [sp]
@@ -29871,7 +29871,7 @@ _02247D6C:
lsl r2, r2, #2
add r2, r4, r2
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, #4
blt _02247D6C
@@ -29898,7 +29898,7 @@ _02247D6C:
strh r1, [r5, #0x3a]
add r2, r1, #0
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x20]
add r5, #0xc
add r0, r5, #0
@@ -29919,7 +29919,7 @@ MOD18_02247DD8: ; 0x02247DD8
add r5, r1, #0
add r6, r0, #0
ldr r0, [r5, #0x20]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r0, r5, #0
bl MOD18_02248FEC
@@ -30102,7 +30102,7 @@ MOD18_02247F5C: ; 0x02247F5C
add r5, r1, #0
add r6, r0, #0
ldr r0, [r5, #0x20]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r0, r5, #0
bl MOD18_02248FEC
@@ -30159,7 +30159,7 @@ MOD18_02247FC0: ; 0x02247FC0
mov r1, #0
ldr r0, [r4, #0x20]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #0
add r0, #0xc
bl FUN_02019570
@@ -30167,7 +30167,7 @@ MOD18_02247FC0: ; 0x02247FC0
add r0, #0xc
bl FUN_02019178
ldr r0, [r4, #0x1c]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
str r0, [r4, #0x1c]
_02247FF8:
@@ -31135,7 +31135,7 @@ MOD18_02248784: ; 0x02248784
mov r1, #0
ldr r0, [r4, #0x1c]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #0
add r0, #8
bl FUN_02019570
@@ -31143,7 +31143,7 @@ MOD18_02248784: ; 0x02248784
add r0, #8
bl FUN_02019178
ldr r0, [r4, #0x18]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
str r0, [r4, #0x18]
_022487BC:
@@ -31202,7 +31202,7 @@ MOD18_02248820: ; 0x02248820
add r5, r0, #0
mov r0, #5
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x18]
mov r3, #1
add r1, r5, #0
@@ -31242,7 +31242,7 @@ _02248870:
lsl r2, r2, #2
add r2, r4, r2
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, #4
blt _02248870
@@ -31250,7 +31250,7 @@ _02248870:
add r1, r6, #0
mov r2, #0x30
mov r3, #0x33
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #0
bl DestroyMsgData
ldr r4, _022488EC ; =0x02250528
@@ -31278,7 +31278,7 @@ _02248870:
strh r1, [r5, #0x36]
add r2, r1, #0
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x1c]
add r5, #8
add r0, r5, #0
@@ -31298,13 +31298,13 @@ MOD18_022488F0: ; 0x022488F0
add r5, r1, #0
add r7, r0, #0
ldr r0, [r5, #0x1c]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r1, r5, #0
ldr r0, [r5, #0x1c]
add r1, #0x36
ldrh r6, [r5, #0x36]
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldrh r0, [r5, #0x36]
cmp r6, r0
beq _02248916
@@ -31922,7 +31922,7 @@ MOD18_02248DF8: ; 0x02248DF8
add r6, r2, #0
cmp r0, #0
beq _02248E0C
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
_02248E0C:
mov r0, #0x21
@@ -32001,7 +32001,7 @@ MOD18_02248E84: ; 0x02248E84
beq _02248EAE
cmp r5, #2
beq _02248EA4
- bl ErrorHandling
+ bl GF_AssertFail
_02248EA4:
ldr r0, _02248EB0 ; =0x022513F0
ldrb r1, [r4, #1]
@@ -32029,13 +32029,13 @@ MOD18_02248EB4: ; 0x02248EB4
beq _02248EEA
cmp r5, #2
beq _02248ED4
- bl ErrorHandling
+ bl GF_AssertFail
_02248ED4:
ldr r0, _02248EEC ; =0x022513F0
ldr r0, [r0, #4]
cmp r0, #0
bne _02248EE0
- bl ErrorHandling
+ bl GF_AssertFail
_02248EE0:
ldr r0, _02248EEC ; =0x022513F0
ldrb r1, [r4, #1]
@@ -32078,7 +32078,7 @@ MOD18_02248F00: ; 0x02248F00
ldr r0, [r0]
cmp r0, #0
bne _02248F1E
- bl ErrorHandling
+ bl GF_AssertFail
_02248F1E:
add r0, r4, #0
add r0, #0x34
@@ -32213,7 +32213,7 @@ MOD18_02248FEC: ; 0x02248FEC
ldr r0, [r5, #0x20]
add r1, #0x3a
ldrh r4, [r5, #0x3a]
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldrh r0, [r5, #0x3a]
cmp r4, r0
beq _02249008
@@ -32703,7 +32703,7 @@ MOD18_022493A4: ; 0x022493A4
ldrb r1, [r1, #5]
cmp r1, r0
beq _022493B4
- bl ErrorHandling
+ bl GF_AssertFail
_022493B4:
ldr r0, _022493C4 ; =0x022513F8
ldr r1, [r0]
@@ -32796,7 +32796,7 @@ MOD18_02249450: ; 0x02249450
add r4, r1, #0
cmp r5, #0xb
blt _0224945E
- bl ErrorHandling
+ bl GF_AssertFail
_0224945E:
cmp r5, #6
blt _02249464
@@ -32823,7 +32823,7 @@ MOD18_02249480: ; 0x02249480
add r4, r0, #0
cmp r4, #0x3c
blt _0224948C
- bl ErrorHandling
+ bl GF_AssertFail
_0224948C:
ldr r0, _0224949C ; =0x022513F8
add r1, r4, #0
@@ -32943,7 +32943,7 @@ MOD18_02249564: ; 0x02249564
bl MOD18_02249544
mov r0, #7
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r0, #1
str r0, [sp]
@@ -32985,7 +32985,7 @@ _022495BA:
ldr r0, [r5, #0x40]
ldr r2, [r4, #4]
add r1, r7, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r7, #0
bl String_dtor
b _022495EE
@@ -32994,7 +32994,7 @@ _022495E2:
ldr r1, [sp, #0x14]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_022495EE:
add r6, r6, #1
add r4, #8
@@ -33377,7 +33377,7 @@ _02249902:
beq _02249916
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0
str r0, [r4, #0x48]
b _02249936
@@ -33413,7 +33413,7 @@ _02249936:
add r0, #0x10
bl FUN_02019178
ldr r0, [r4, #0x40]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0
bl MOD18_0224CBAC
_02249968:
@@ -33456,7 +33456,7 @@ _02249998:
_022499A2:
add r0, r6, #0
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x44]
lsl r0, r7, #0x18
lsr r0, r0, #0x18
@@ -33498,7 +33498,7 @@ _022499FA:
ldr r1, [sp, #0x14]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r7, r7, #1
add r4, #8
cmp r7, r6
@@ -33530,7 +33530,7 @@ _02249A0E:
add r2, r1, #0
mov r3, #4
str r5, [sp, #0x3c]
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x50]
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
@@ -33552,14 +33552,14 @@ MOD18_02249A64: ; 0x02249A64
beq _02249A8C
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r1, r4, #0
add r1, #0x24
ldrb r1, [r1]
ldr r0, [r4, #0x20]
bl FUN_0201AC68
ldr r0, [r4, #0x44]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
str r0, [r4, #0x50]
_02249A8C:
@@ -33623,7 +33623,7 @@ MOD18_02249AF4: ; 0x02249AF4
push {r4, lr}
add r4, r1, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r2, #0x81
add r1, r0, #0
lsl r2, r2, #2
@@ -33727,10 +33727,10 @@ MOD18_02249BA8: ; 0x02249BA8
bl MOD18_0223D678
ldr r1, _02249CB0 ; =0x0000023B
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -33767,7 +33767,7 @@ _02249C18:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, r6
blt _02249C18
@@ -33777,7 +33777,7 @@ _02249C30:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
sub r3, #0x24
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r3, _02249CBC ; =0x02250598
add r2, sp, #0x1c
ldmia r3!, {r0, r1}
@@ -33853,7 +33853,7 @@ MOD18_02249CC8: ; 0x02249CC8
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -33862,7 +33862,7 @@ MOD18_02249CC8: ; 0x02249CC8
ldr r0, [r5, #0x4c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0
add r2, r0, #0
ldrh r1, [r1, #2]
@@ -33957,14 +33957,14 @@ MOD18_02249DB8: ; 0x02249DB8
push {r4, r5, r6, lr}
add r5, r1, #0
ldr r0, [r5, #0x50]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #0x93
add r4, r0, #0
lsl r1, r1, #2
ldrh r6, [r5, r1]
ldr r0, [r5, #0x50]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
mov r0, #0x93
lsl r0, r0, #2
ldrh r0, [r5, r0]
@@ -34060,7 +34060,7 @@ MOD18_02249E98: ; 0x02249E98
ldrb r1, [r1, #5]
cmp r1, r0
beq _02249EA8
- bl ErrorHandling
+ bl GF_AssertFail
_02249EA8:
ldr r0, _02249EB8 ; =0x022513F8
ldr r1, [r0]
@@ -34077,7 +34077,7 @@ MOD18_02249EBC: ; 0x02249EBC
push {r4, lr}
add r4, r1, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r2, #0x81
add r1, r0, #0
lsl r2, r2, #2
@@ -34194,10 +34194,10 @@ MOD18_02249F8C: ; 0x02249F8C
bl MOD18_0223D678
ldr r1, _0224A0D4 ; =0x00000239
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -34259,7 +34259,7 @@ _0224A002:
ldr r0, [r5, #0x40]
ldr r1, [r5, #0x68]
add r2, r4, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r4, r4, #1
cmp r4, r6
blt _0224A002
@@ -34269,7 +34269,7 @@ _0224A058:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
sub r3, #0x3e
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r3, _0224A0E0 ; =0x02250598
add r2, sp, #0x20
ldmia r3!, {r0, r1}
@@ -34343,7 +34343,7 @@ MOD18_0224A0EC: ; 0x0224A0EC
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -34352,7 +34352,7 @@ MOD18_0224A0EC: ; 0x0224A0EC
ldr r0, [r5, #0x4c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0
add r2, r0, #0
ldrh r1, [r1, #2]
@@ -34434,14 +34434,14 @@ MOD18_0224A1C0: ; 0x0224A1C0
push {r4, r5, r6, lr}
add r5, r1, #0
ldr r0, [r5, #0x50]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #0x93
add r4, r0, #0
lsl r1, r1, #2
ldrh r6, [r5, r1]
ldr r0, [r5, #0x50]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
mov r0, #0x93
lsl r0, r0, #2
ldrh r0, [r5, r0]
@@ -34542,7 +34542,7 @@ MOD18_0224A2B4: ; 0x0224A2B4
push {r4, lr}
add r4, r1, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r2, #0x81
add r1, r0, #0
lsl r2, r2, #2
@@ -34643,10 +34643,10 @@ MOD18_0224A360: ; 0x0224A360
bl MOD18_0223D678
ldr r1, _0224A464 ; =0x00000239
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -34683,7 +34683,7 @@ _0224A3D0:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, r6
blt _0224A3D0
@@ -34693,7 +34693,7 @@ _0224A3E8:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
sub r3, #0x3e
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r3, _0224A470 ; =0x02250598
add r2, sp, #0x1c
ldmia r3!, {r0, r1}
@@ -34767,7 +34767,7 @@ MOD18_0224A47C: ; 0x0224A47C
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -34776,7 +34776,7 @@ MOD18_0224A47C: ; 0x0224A47C
ldr r0, [r5, #0x4c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0
add r2, r0, #0
ldrh r1, [r1, #2]
@@ -34858,14 +34858,14 @@ MOD18_0224A550: ; 0x0224A550
push {r4, r5, r6, lr}
add r5, r1, #0
ldr r0, [r5, #0x50]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #0x93
add r4, r0, #0
lsl r1, r1, #2
ldrh r6, [r5, r1]
ldr r0, [r5, #0x50]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
mov r0, #0x93
lsl r0, r0, #2
ldrh r0, [r5, r0]
@@ -35399,7 +35399,7 @@ MOD18_0224A9B4: ; 0x0224A9B4
push {r4, lr}
add r4, r1, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r2, #0x81
add r1, r0, #0
lsl r2, r2, #2
@@ -35431,7 +35431,7 @@ MOD18_0224A9EC: ; 0x0224A9EC
add r4, r1, #0
mov r1, #0x13
add r5, r0, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
ldr r0, [r0, #0xc]
bl ScriptEnvironment_GetSav2Ptr
bl FUN_02026CC4
@@ -35443,14 +35443,14 @@ MOD18_0224A9EC: ; 0x0224A9EC
mov r1, #1
mov r2, #0xf
mov r3, #2
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, r4, r5, pc}
_0224AA1A:
mov r1, #2
add r0, r5, #0
mov r2, #0xf
add r3, r1, #0
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, r4, r5, pc}
thumb_func_end MOD18_0224A9EC
@@ -35581,10 +35581,10 @@ MOD18_0224AB08: ; 0x0224AB08
bl MOD18_0223D678
ldr r1, _0224AC0C ; =0x00000237
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
add r0, r6, #1
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -35621,7 +35621,7 @@ _0224AB78:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, r6
blt _0224AB78
@@ -35630,7 +35630,7 @@ _0224AB90:
ldr r0, [r5, #0x40]
ldr r1, [sp, #0x18]
sub r3, r2, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r3, _0224AC18 ; =0x02250598
add r2, sp, #0x1c
ldmia r3!, {r0, r1}
@@ -35706,7 +35706,7 @@ MOD18_0224AC24: ; 0x0224AC24
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -35715,7 +35715,7 @@ MOD18_0224AC24: ; 0x0224AC24
ldr r0, [r5, #0x4c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0
add r2, r0, #0
ldrh r1, [r1, #2]
@@ -35800,14 +35800,14 @@ MOD18_0224AD04: ; 0x0224AD04
push {r4, r5, r6, lr}
add r5, r1, #0
ldr r0, [r5, #0x50]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #0x93
add r4, r0, #0
lsl r1, r1, #2
ldrh r6, [r5, r1]
ldr r0, [r5, #0x50]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
mov r0, #0x93
lsl r0, r0, #2
ldrh r0, [r5, r0]
@@ -36444,7 +36444,7 @@ MOD18_0224B204: ; 0x0224B204
push {r4, lr}
add r4, r1, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r0, #1
mvn r0, r0
cmp r4, r0
@@ -36464,7 +36464,7 @@ MOD18_0224B228: ; 0x0224B228
push {r4, lr}
add r4, r1, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
mov r0, #1
mvn r0, r0
cmp r4, r0
@@ -36486,13 +36486,13 @@ MOD18_0224B250: ; 0x0224B250
push {r3, r4, r5, lr}
add r4, r1, #0
ldr r0, [r4, #0x48]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r5, r0, #0
add r1, sp, #0
ldr r0, [r4, #0x48]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -36627,7 +36627,7 @@ _0224B374:
bl MOD18_022498EC
ldr r0, [sp, #0x18]
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
str r2, [sp]
@@ -36675,13 +36675,13 @@ _0224B3D4:
add r1, r7, #0
add r2, r6, #5
mvn r3, r3
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _0224B3F4
_0224B3EA:
add r1, r7, #0
add r2, r6, r4
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_0224B3F4:
ldr r0, [sp, #0x18]
add r4, r4, #1
@@ -36727,7 +36727,7 @@ _0224B42C:
lsr r1, r1, #0x10
lsr r2, r2, #0x10
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x48]
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
@@ -36750,7 +36750,7 @@ MOD18_0224B464: ; 0x0224B464
bl MOD18_022498EC
ldr r0, [sp, #0x1c]
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -36796,13 +36796,13 @@ _0224B4D0:
add r1, r7, #0
add r2, r6, r4
mvn r3, r3
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _0224B4F0
_0224B4E6:
add r1, r7, #0
add r2, r6, r4
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_0224B4F0:
ldr r0, [sp, #0x1c]
add r4, r4, #1
@@ -36848,7 +36848,7 @@ _0224B528:
lsr r1, r1, #0x10
lsr r2, r2, #0x10
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x48]
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
@@ -36862,13 +36862,13 @@ MOD18_0224B560: ; 0x0224B560
push {r3, r4, r5, lr}
add r5, r1, #0
ldr r0, [r5, #0x48]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r1, sp, #0
ldr r0, [r5, #0x48]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -36964,7 +36964,7 @@ MOD18_0224B614: ; 0x0224B614
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -36973,7 +36973,7 @@ MOD18_0224B614: ; 0x0224B614
ldr r0, [r5, #0x4c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0
add r2, r0, #0
ldrh r1, [r1, #2]
@@ -37057,7 +37057,7 @@ MOD18_0224B6E0: ; 0x0224B6E0
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -37066,7 +37066,7 @@ MOD18_0224B6E0: ; 0x0224B6E0
ldr r0, [r5, #0x4c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r1, sp, #0
add r2, r0, #0
ldrh r1, [r1, #2]
@@ -37823,7 +37823,7 @@ MOD18_0224BD54: ; 0x0224BD54
mov r1, #0x91
lsl r1, r1, #2
mov r2, #1
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
ldr r0, _0224BDE4 ; =0x00000246
mov r1, #0
strb r1, [r4, r0]
@@ -38067,7 +38067,7 @@ MOD18_0224BF84: ; 0x0224BF84
ldr r0, [r5, #0x48]
ldrh r4, [r5, r1]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldr r0, _0224BFA4 ; =0x0000024A
ldrh r0, [r5, r0]
cmp r4, r0
@@ -38462,7 +38462,7 @@ _0224C288:
bl MOD18_022498EC
add r0, r4, #0
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -38502,14 +38502,14 @@ _0224C288:
ldr r0, [r5, #0x40]
mov r2, #0xd
mov r3, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
bl MOD18_0223D658
bl MOD18_0224DBB4
add r1, r0, #0
ldr r0, [r5, #0x40]
mov r2, #0xe
mov r3, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
bl MOD18_0223D658
bl MOD18_0224DBB4
mov r2, #0xf
@@ -38517,7 +38517,7 @@ _0224C288:
add r3, r2, #0
ldr r0, [r5, #0x40]
sub r3, #0x11
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _0224C396
_0224C31E:
cmp r0, #0
@@ -38532,14 +38532,14 @@ _0224C31E:
ldr r0, [r5, #0x40]
mov r2, #0x10
mov r3, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
bl MOD18_0223D658
bl MOD18_0224DBB4
add r1, r0, #0
ldr r0, [r5, #0x40]
mov r2, #0x11
mov r3, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
bl MOD18_0223D658
bl MOD18_0224DBB4
mov r2, #0x12
@@ -38547,7 +38547,7 @@ _0224C31E:
add r3, r2, #0
ldr r0, [r5, #0x40]
sub r3, #0x14
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _0224C396
_0224C36C:
bl MOD18_0223D658
@@ -38556,7 +38556,7 @@ _0224C36C:
ldr r0, [r5, #0x40]
mov r2, #0x1c
mov r3, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
bl MOD18_0223D658
bl MOD18_0224DBB4
mov r2, #0x16
@@ -38564,7 +38564,7 @@ _0224C36C:
add r3, r2, #0
ldr r0, [r5, #0x40]
sub r3, #0x18
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_0224C396:
bl MOD18_0224DAD8
add r1, sp, #0x14
@@ -38606,7 +38606,7 @@ _0224C396:
lsr r1, r1, #0x10
lsr r2, r2, #0x10
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x48]
mov r0, #0x8b
lsl r0, r0, #2
@@ -38632,17 +38632,17 @@ MOD18_0224C418: ; 0x0224C418
mov r1, #0x13
add r7, r0, #0
add r6, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
cmp r6, #0
beq _0224C434
add r0, r7, #0
- bl FUN_02001B80
+ bl ListMenuCopyToVram
_0224C434:
add r0, r4, #0
add r0, #0x20
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
bl MOD18_0223D658
bl MOD18_0224DBB4
ldr r1, _0224C504 ; =0x00000247
@@ -38746,7 +38746,7 @@ MOD18_0224C510: ; 0x0224C510
mov r1, #0x13
str r0, [sp, #0xc]
str r2, [sp, #0x10]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
ldr r0, [r4, #0xc]
bl ScriptEnvironment_GetSav2Ptr
@@ -38756,12 +38756,12 @@ MOD18_0224C510: ; 0x0224C510
add r0, #0x20
mov r1, #0xf
mov r5, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x10]
cmp r0, #0
beq _0224C546
ldr r0, [sp, #0xc]
- bl FUN_02001B80
+ bl ListMenuCopyToVram
_0224C546:
mov r0, #1
mvn r0, r0
@@ -39086,7 +39086,7 @@ MOD18_0224C7D4: ; 0x0224C7D4
bl MOD18_022498EC
mov r0, #6
mov r1, #4
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x40]
mov r2, #3
add r1, r5, #0
@@ -39123,7 +39123,7 @@ MOD18_0224C7D4: ; 0x0224C7D4
bl MOD18_0223D678
ldr r1, _0224C938 ; =0x0000023B
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
b _0224C876
_0224C83C:
cmp r0, #0
@@ -39137,7 +39137,7 @@ _0224C83C:
bl MOD18_0223D678
ldr r1, _0224C93C ; =0x00000237
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
b _0224C876
_0224C85C:
mov r0, #0
@@ -39149,7 +39149,7 @@ _0224C85C:
bl MOD18_0223D678
ldr r1, _0224C940 ; =0x00000239
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
_0224C876:
mov r7, #0x21
mov r4, #0
@@ -39160,7 +39160,7 @@ _0224C87C:
ldr r0, [r5, #0x40]
add r1, r6, #0
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, #5
blt _0224C87C
@@ -39168,7 +39168,7 @@ _0224C87C:
ldr r0, [r5, #0x40]
add r1, r6, #0
sub r3, r2, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #0
bl DestroyMsgData
bl MOD18_0224DAD8
@@ -39228,7 +39228,7 @@ _0224C87C:
lsr r1, r1, #0x10
lsr r2, r2, #0x10
mov r3, #4
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x48]
add r5, #0x10
add r0, r5, #0
@@ -39394,7 +39394,7 @@ MOD18_0224CA58: ; 0x0224CA58
bl MOD18_0223D658
ldr r1, _0224CA90 ; =0x00000241
mov r2, #1
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
bl MOD18_0223D658
add r4, r0, #0
bl FUN_02031190
@@ -39490,7 +39490,7 @@ _0224CB1A:
add r0, r4, #0
add r0, #0x20
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, #0x20
add r0, r4, #0
bl CopyWindowToVram
@@ -39531,7 +39531,7 @@ MOD18_0224CB34: ; 0x0224CB34
add r0, r5, #0
add r0, #0x30
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x30
bl CopyWindowToVram
@@ -39599,7 +39599,7 @@ _0224CBF0:
add r5, r5, #6
cmp r3, #0x14
blt _0224CBD6
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
@@ -39680,13 +39680,13 @@ _0224CC7E:
pop {r4, r5, r6, pc}
_0224CC8E:
ldr r0, [r4, #0x48]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r5, r0, #0
add r1, sp, #4
ldr r0, [r4, #0x48]
add r1, #2
add r2, sp, #4
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #4
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -39696,7 +39696,7 @@ _0224CC8E:
ldr r0, [r4, #0x48]
ldrh r6, [r4, r1]
add r1, r4, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldr r0, _0224CF54 ; =0x0000024A
ldrh r0, [r4, r0]
cmp r6, r0
@@ -39771,13 +39771,13 @@ _0224CD32:
pop {r4, r5, r6, pc}
_0224CD48:
ldr r0, [r4, #0x48]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r5, r0, #0
add r1, sp, #4
ldr r0, [r4, #0x48]
add r1, #2
add r2, sp, #4
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
mov r0, #0x92
lsl r0, r0, #2
ldrb r0, [r4, r0]
@@ -39792,7 +39792,7 @@ _0224CD48:
ldr r0, [r4, #0x48]
ldrh r6, [r4, r1]
add r1, r4, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldr r0, _0224CF54 ; =0x0000024A
ldrh r0, [r4, r0]
cmp r6, r0
@@ -39916,7 +39916,7 @@ _0224CE68:
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #4
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #4
ldrh r1, [r2]
ldrh r2, [r2, #2]
@@ -40138,7 +40138,7 @@ _0224D046:
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #4
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
mov r0, #0x92
lsl r0, r0, #2
ldrb r0, [r4, r0]
@@ -40827,7 +40827,7 @@ MOD18_0224D5CC: ; 0x0224D5CC
add r0, r4, #0
add r0, #8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x30]
cmp r0, #0
beq _0224D644
@@ -41024,17 +41024,17 @@ MOD18_0224D79C: ; 0x0224D79C
cmp r5, #0x20
ldr r4, [r0, r1]
bge _0224D7B4
- bl ErrorHandling
+ bl GF_AssertFail
_0224D7B4:
cmp r5, #0x2d
ble _0224D7BC
- bl ErrorHandling
+ bl GF_AssertFail
_0224D7BC:
bl FUN_0204F7E4
bl MOD18_0223D658
ldr r1, _0224D80C ; =0x00000245
mov r2, #1
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
mov r0, #4
bl FUN_02025964
add r6, r0, #0
@@ -41332,7 +41332,7 @@ MOD18_0224DA00: ; 0x0224DA00
add r0, r5, #0
add r0, #8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
ldr r3, _0224DAA0 ; =0x022513FC
str r6, [sp]
@@ -41435,7 +41435,7 @@ _0224DB08:
add r0, r4, #0
str r7, [r4, #0x18]
add r0, #8
- bl FUN_0201901C
+ bl InitWindow
ldr r1, [r4, #0x40]
mov r0, #1
bic r1, r0
@@ -41468,8 +41468,9 @@ MOD18_0224DB5C: ; 0x0224DB5C
pop {r4, pc}
thumb_func_end MOD18_0224DB5C
- thumb_func_start MOD18_0224DB80
-MOD18_0224DB80: ; 0x0224DB80
+ thumb_func_start MOD18_LoadMsgBank
+MOD18_LoadMsgBank: ; 0x0224DB80
+ ; void MOD18_LoadMsgBank(struct MOD18Work * work, s32 bank, u32 async)
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0x2c]
@@ -41488,11 +41489,11 @@ MOD18_0224DB80: ; 0x0224DB80
str r0, [r5, #0x24]
cmp r0, #0
bne _0224DBAC
- bl ErrorHandling
+ bl GF_AssertFail
_0224DBAC:
pop {r4, r5, r6, pc}
.align 2, 0
- thumb_func_end MOD18_0224DB80
+ thumb_func_end MOD18_LoadMsgBank
thumb_func_start MOD18_0224DBB0
MOD18_0224DBB0: ; 0x0224DBB0
@@ -41590,7 +41591,7 @@ _0224DC4C:
add r0, r5, #0
add r0, #8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
ldr r2, _0224DCB0 ; =0x000001E2
add r0, #8
@@ -42286,7 +42287,7 @@ MOD18_0224E0CC: ; 0x0224E0CC
add r5, r0, #0
mov r0, #4
add r1, r0, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x24]
mov r2, #3
str r2, [sp]
@@ -42345,7 +42346,7 @@ MOD18_0224E0CC: ; 0x0224E0CC
add r0, r5, #0
add r0, #0x14
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r7, #0
mov r1, #0
bl NewString_ReadMsgData
@@ -42369,7 +42370,7 @@ _0224E186:
ldr r2, [r4]
add r1, r7, #0
add r3, r6, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, r4, #4
cmp r6, #4
@@ -42402,7 +42403,7 @@ _0224E186:
ldr r2, [r5, #0x34]
ldrh r1, [r1]
ldrh r2, [r2]
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x28]
add r0, r5, #4
bl CopyWindowToVram
@@ -42429,7 +42430,7 @@ MOD18_0224E210: ; 0x0224E210
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, [r5, #0x28]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r0, r5, #0
bl MOD18_0224E73C
@@ -42483,7 +42484,7 @@ MOD18_0224E26C: ; 0x0224E26C
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x30]
ldr r2, [r4, #0x34]
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #4
mov r1, #1
bl FUN_0200CCF8
@@ -42496,7 +42497,7 @@ MOD18_0224E26C: ; 0x0224E26C
add r0, #0x14
bl FUN_02019178
ldr r0, [r4, #0x24]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
pop {r4, pc}
.align 2, 0
thumb_func_end MOD18_0224E26C
@@ -42512,13 +42513,13 @@ MOD18_0224E2B4: ; 0x0224E2B4
add r1, r2, #0
mov r2, #0xf
mov r3, #2
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, pc}
_0224E2CC:
mov r1, #2
mov r2, #0xf
add r3, r1, #0
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
pop {r3, pc}
thumb_func_end MOD18_0224E2B4
@@ -42639,16 +42640,16 @@ _0224E384:
ldr r0, [r0, #0xc]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
ldr r0, [r5, #0x2c]
mov r1, #2
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r7, r0, #0
ldr r0, [r5, #0x2c]
mov r1, #3
ldr r0, [r0, #0xc]
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r3, r0, #0
add r1, sp, #0
lsl r2, r7, #0x10
@@ -42692,11 +42693,11 @@ MOD18_0224E3F0: ; 0x0224E3F0
add r4, r1, #0
add r5, r0, #0
mov r1, #0x13
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r6, r0, #0
add r0, r5, #0
mov r1, #2
- bl FUN_02001470
+ bl ListMenuGetTemplateField
lsr r1, r4, #1
sub r0, r0, #1
cmp r1, r0
@@ -42741,7 +42742,7 @@ _0224E454:
ldr r0, [sp, #0x20]
mov r1, #4
add r0, r0, #1
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5, #0x28]
mov r2, #3
str r2, [sp]
@@ -42804,7 +42805,7 @@ _0224E454:
add r0, r5, #0
add r0, #0x18
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x24]
mov r1, #9
bl NewString_ReadMsgData
@@ -42899,7 +42900,7 @@ _0224E5B4:
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r3, r6, r3
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, [sp, #0x20]
add r4, r4, #1
add r6, r6, #2
@@ -42911,13 +42912,13 @@ _0224E5CE:
ldr r1, [sp, #0x18]
ldr r2, _0224E694 ; =0x00000115
add r3, r3, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, [sp, #0x18]
bl DestroyMsgData
bl MOD18_0223D678
ldr r1, _0224E68C ; =0x00000237
mov r2, #0
- bl MOD18_0224DB80
+ bl MOD18_LoadMsgBank
ldr r4, _0224E698 ; =0x022507D0
add r3, sp, #0x30
add r2, r3, #0
@@ -43025,7 +43026,7 @@ MOD18_0224E6A8: ; 0x0224E6A8
add r0, #0x18
bl FUN_02019178
ldr r0, [r4, #0x28]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, [r4, #4]
bl FUN_0205EBEC
pop {r4, pc}
@@ -43078,7 +43079,7 @@ MOD18_0224E73C: ; 0x0224E73C
add r1, r5, #0
ldr r0, [r5, #0x28]
add r1, #0x40
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r5, #0x40
ldrh r0, [r5]
cmp r4, r0
@@ -43100,7 +43101,7 @@ MOD18_0224E764: ; 0x0224E764
add r7, r2, #0
cmp r5, #0
bne _0224E776
- bl ErrorHandling
+ bl GF_AssertFail
_0224E776:
add r4, r7, #0
add r4, #0x3c
@@ -43178,7 +43179,7 @@ MOD18_0224E7F4: ; 0x0224E7F4
ldr r0, [r0, #0x5c]
cmp r0, #0
bne _0224E80A
- bl ErrorHandling
+ bl GF_AssertFail
_0224E80A:
add r2, r5, r4
add r2, #0x60
@@ -43592,7 +43593,7 @@ _0224EB6C:
str r0, [r4, #4]
b _0224EDBA
_0224EB82:
- bl ErrorHandling
+ bl GF_AssertFail
b _0224EDBA
_0224EB88:
ldr r0, _0224EDC4 ; =0x000004DC
@@ -44132,14 +44133,14 @@ _0224EFD6:
ldr r0, [r0, #0x64]
cmp r0, #0x20
blt _0224EFEA
- bl ErrorHandling
+ bl GF_AssertFail
_0224EFEA:
ldr r0, _0224F14C ; =0x000004FC
ldr r0, [r4, r0]
ldr r0, [r0, #0x68]
cmp r0, #0x20
blt _0224EFF8
- bl ErrorHandling
+ bl GF_AssertFail
_0224EFF8:
ldr r0, _0224F14C ; =0x000004FC
add r2, r4, #0
@@ -44210,7 +44211,7 @@ _0224F06E:
ldrb r0, [r4, r0]
cmp r0, #0
bne _0224F08A
- bl ErrorHandling
+ bl GF_AssertFail
_0224F08A:
ldr r0, _0224F158 ; =0x00000522
ldrb r1, [r4, r0]
@@ -44241,7 +44242,7 @@ _0224F09E:
ldrb r0, [r4, r0]
cmp r0, #0
bne _0224F0CE
- bl ErrorHandling
+ bl GF_AssertFail
_0224F0CE:
ldr r0, _0224F160 ; =0x00000521
ldrb r1, [r4, r0]
@@ -44317,7 +44318,7 @@ _0224F164:
ldrb r0, [r4, r0]
sub r5, r1, r0
bpl _0224F172
- bl ErrorHandling
+ bl GF_AssertFail
_0224F172:
cmp r5, #0
bne _0224F184
@@ -44679,14 +44680,14 @@ _0224F442:
ldr r0, [r0, #0x64]
cmp r0, #0x20
blt _0224F456
- bl ErrorHandling
+ bl GF_AssertFail
_0224F456:
ldr r0, _0224F51C ; =0x000004FC
ldr r0, [r5, r0]
ldr r0, [r0, #0x68]
cmp r0, #0x20
blt _0224F464
- bl ErrorHandling
+ bl GF_AssertFail
_0224F464:
ldr r0, _0224F51C ; =0x000004FC
add r2, r5, #0
@@ -45216,7 +45217,7 @@ _0224F880:
add r4, #0x24
cmp r2, #0x20
blt _0224F858
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, pc}
thumb_func_end MOD18_0224F850
@@ -45229,7 +45230,7 @@ MOD18_0224F890: ; 0x0224F890
add r4, r2, #0
cmp r7, #0x20
blt _0224F8A0
- bl ErrorHandling
+ bl GF_AssertFail
_0224F8A0:
mov r0, #0x24
add r6, r7, #0
@@ -45237,7 +45238,7 @@ _0224F8A0:
ldr r0, [r4, r6]
cmp r0, #0
beq _0224F8B0
- bl ErrorHandling
+ bl GF_AssertFail
_0224F8B0:
mov r0, #1
str r0, [r4, r6]
@@ -45262,11 +45263,11 @@ MOD18_0224F8CC: ; 0x0224F8CC
add r4, r1, #0
cmp r5, #0x20
blt _0224F8DA
- bl ErrorHandling
+ bl GF_AssertFail
_0224F8DA:
cmp r5, #0
bne _0224F8E2
- bl ErrorHandling
+ bl GF_AssertFail
_0224F8E2:
mov r0, #0x24
add r6, r5, #0
@@ -45274,7 +45275,7 @@ _0224F8E2:
ldr r0, [r4, r6]
cmp r0, #0
bne _0224F8F2
- bl ErrorHandling
+ bl GF_AssertFail
_0224F8F2:
mov r1, #0
add r0, r4, r6
@@ -45555,7 +45556,7 @@ MOD18_0224FAEC: ; 0x0224FAEC
add r5, r0, #0
add r4, r1, #0
bne _0224FAF8
- bl ErrorHandling
+ bl GF_AssertFail
_0224FAF8:
ldr r0, [r5, #0x2c]
add r1, r4, #0
@@ -45577,7 +45578,7 @@ MOD18_0224FB04: ; 0x0224FB04
ldr r0, [r0, #0x5c]
cmp r0, #0
bne _0224FB1E
- bl ErrorHandling
+ bl GF_AssertFail
_0224FB1E:
add r0, r5, #0
add r0, #0x60
@@ -45625,7 +45626,7 @@ MOD18_0224FB64: ; 0x0224FB64
ldr r0, [r0, #0x5c]
cmp r0, #0
bne _0224FB7A
- bl ErrorHandling
+ bl GF_AssertFail
_0224FB7A:
mov r0, #5
lsl r0, r0, #8
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
index 91c756c6..8f3a28ce 100644
--- a/arm9/modules/19/asm/module_19.s
+++ b/arm9/modules/19/asm/module_19.s
@@ -42,7 +42,7 @@ MOD19_02252440: ; 0x02252440
mov r1, #0xa
add r2, r4, #0
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -54,7 +54,7 @@ MOD19_02252440: ; 0x02252440
mov r1, #0xb
add r2, r4, #0
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #8
@@ -63,7 +63,7 @@ MOD19_02252440: ; 0x02252440
add r1, r0, #0
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r2, _022524E0 ; =0x04001000
ldr r0, _022524EC ; =0xFFFF1FFF
ldr r1, [r2]
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index 67f4c29a..a77f95fc 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -226,7 +226,7 @@ _022525B2:
pop {r3, r4, r5, pc}
_022525C0:
beq _022525C6
- bl ErrorHandling
+ bl GF_AssertFail
_022525C6:
ldr r0, [r4, #0x34]
mov r1, #0
@@ -629,7 +629,7 @@ LoadPoketchApp: ; 0x022528B0
cmp r4, #0x19
blo _022528C0
_022528BC:
- bl ErrorHandling
+ bl GF_AssertFail
_022528C0:
mov r0, #0
ldr r1, [r5, #0x14]
@@ -688,7 +688,7 @@ MOD20_02252918: ; 0x02252918
ldrb r0, [r4, #2]
cmp r0, #0
beq _02252926
- bl ErrorHandling
+ bl GF_AssertFail
_02252926:
add r0, r4, #0
ldr r2, [r4, #0x4c]
@@ -723,7 +723,7 @@ MOD20_0225294C: ; 0x0225294C
ldrb r0, [r4, #2]
cmp r0, #2
beq _0225295A
- bl ErrorHandling
+ bl GF_AssertFail
_0225295A:
ldr r0, [r4, #0x24]
ldr r1, [r4, #0x40]
@@ -767,7 +767,7 @@ MOD20_0225298C: ; 0x0225298C
ldrb r0, [r4, #2]
cmp r0, #1
beq _0225299A
- bl ErrorHandling
+ bl GF_AssertFail
_0225299A:
mov r0, #2
strb r0, [r4, #2]
@@ -781,7 +781,7 @@ MOD20_022529A0: ; 0x022529A0
ldrb r0, [r4, #2]
cmp r0, #3
beq _022529AE
- bl ErrorHandling
+ bl GF_AssertFail
_022529AE:
mov r0, #0
strb r0, [r4, #2]
@@ -1223,7 +1223,7 @@ MOD20_02252C5C: ; 0x02252C5C
lsl r0, r0, #4
str r7, [r4, r0]
ldr r0, [r4, r0]
- bl FUN_020B0888
+ bl NNS_G2dResetOamManagerBuffer
mov r0, #0x15
lsl r0, r0, #4
ldr r0, [r4, r0]
@@ -1331,7 +1331,7 @@ MOD20_02252D44: ; 0x02252D44
mov r1, #0
add r2, sp, #0
mov r3, #7
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
beq _02252D7A
ldr r0, [sp]
@@ -1591,7 +1591,7 @@ MOD20_02252ED0: ; 0x02252ED0
ldr r2, [r4, r2]
mov r1, #0xe
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1604,7 +1604,7 @@ MOD20_02252ED0: ; 0x02252ED0
ldr r2, [r4, r2]
mov r1, #0xf
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -1621,7 +1621,7 @@ MOD20_02252ED0: ; 0x02252ED0
mov r1, #0xd
mov r2, #4
lsl r3, r3, #5
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r3, #0
str r3, [sp]
mov r0, #0x20
@@ -2232,7 +2232,7 @@ MOD20_02253430: ; 0x02253430
str r0, [sp, #8]
mov r0, #0xc
mov r1, #2
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0x60
str r0, [sp]
mov r0, #7
@@ -2241,7 +2241,7 @@ MOD20_02253430: ; 0x02253430
mov r0, #0xc
mov r2, #5
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r5, #0
mov r1, #0xf
bl MOD20_022534D4
@@ -2587,7 +2587,7 @@ MOD20_02253714: ; 0x02253714
ldr r0, _02253750 ; =0x12345678
cmp r1, r0
beq _02253726
- bl ErrorHandling
+ bl GF_AssertFail
_02253726:
ldr r6, [r5]
mov r2, #0
@@ -2625,7 +2625,7 @@ MOD20_02253754: ; 0x02253754
ldr r0, _02253790 ; =0x12345678
cmp r1, r0
beq _02253766
- bl ErrorHandling
+ bl GF_AssertFail
_02253766:
ldr r3, [r5]
mov r2, #0
@@ -2648,7 +2648,7 @@ _02253782:
cmp r2, r3
blo _02253770
_0225378A:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
.align 2, 0
_02253790: .word 0x12345678
@@ -2781,7 +2781,7 @@ _02253866:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_02253870:
- bl ErrorHandling
+ bl GF_AssertFail
b _02253880
_02253876:
add r3, #0xc
@@ -2790,7 +2790,7 @@ _02253876:
cmp r2, r1
bne _022537FA
_02253880:
- bl ErrorHandling
+ bl GF_AssertFail
_02253884:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -2994,7 +2994,7 @@ MOD20_022539C4: ; 0x022539C4
mov r0, #0x13
add r2, sp, #0
mov r3, #8
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
beq _02253A02
ldr r0, [sp]
@@ -3062,7 +3062,7 @@ _02253A4E:
bl NARC_ReadFromMember
add r0, r7, #0
add r1, sp, #0x20
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0x20]
add r1, r5, #0
ldr r0, [r0, #0x14]
@@ -3239,7 +3239,7 @@ MOD20_02253BA4: ; 0x02253BA4
str r7, [r4]
str r5, [r4, #0x18]
add r0, r7, #0
- bl FUN_020B0830
+ bl NNS_G2dGetOamManagerOamCapacity
strh r0, [r4, #0x10]
ldrh r1, [r4, #0x10]
add r0, r5, #0
@@ -3279,23 +3279,23 @@ _02253C0E:
cmp r1, #0
beq _02253C22
add r0, r5, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_02253C22:
ldr r1, [r4, #0xc]
cmp r1, #0
beq _02253C2E
add r0, r5, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_02253C2E:
ldr r1, [r4, #4]
cmp r1, #0
beq _02253C3A
add r0, r5, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_02253C3A:
add r0, r5, #0
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
_02253C42:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -3354,7 +3354,7 @@ _02253C96:
mov r1, #2
add r0, #8
lsl r1, r1, #0xc
- bl FUN_020B1EC4
+ bl NNS_G2dTickCellAnimation
add r0, r4, #0
add r0, #0x86
ldrb r0, [r0]
@@ -3391,7 +3391,7 @@ _02253CAE:
ldr r2, [r4, #0x34]
add r0, r5, #0
lsr r1, r1, #0x10
- bl FUN_020B1AF8
+ bl NNS_G2dMakeCellToOams
b _02253D86
_02253CEE:
ldr r0, [r4, #0x6c]
@@ -3404,7 +3404,7 @@ _02253CEE:
add r0, #0x8c
ldrh r2, [r6, #0x10]
ldrh r0, [r0]
- ldr r1, _02253E58 ; =UNK_020FFA38
+ ldr r1, _02253E58 ; =FX_SinCosTable_
add r0, r2, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
@@ -3425,7 +3425,7 @@ _02253D20:
beq _02253D3E
asr r0, r0, #4
lsl r3, r0, #2
- ldr r1, _02253E58 ; =UNK_020FFA38
+ ldr r1, _02253E58 ; =FX_SinCosTable_
ldr r0, [r4, #0x6c]
add r2, r1, r3
ldrsh r1, [r1, r3]
@@ -3452,7 +3452,7 @@ _02253D62:
ldr r0, [sp, #0xc]
ldr r1, [r4, #0x6c]
ldr r0, [r0]
- bl FUN_020B0BB0
+ bl NNS_G2dEntryOamManagerAffine
add r1, sp, #0x18
str r1, [sp]
str r0, [sp, #4]
@@ -3464,7 +3464,7 @@ _02253D62:
ldr r3, [r4, #0x6c]
add r0, r5, #0
lsr r1, r1, #0x10
- bl FUN_020B1AF8
+ bl NNS_G2dMakeCellToOams
_02253D86:
ldr r1, [sp, #0x10]
sub r1, r1, r0
@@ -3569,12 +3569,12 @@ _02253E38:
lsl r2, r2, #0xd
ldr r0, [r0]
lsr r2, r2, #0x10
- bl FUN_020B0D58
+ bl NNS_G2dEntryOamManagerOam
_02253E52:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
-_02253E58: .word UNK_020FFA38
+_02253E58: .word FX_SinCosTable_
_02253E5C: .word 0xDFFFFFFF
_02253E60: .word 0xFFFFF3FF
_02253E64: .word 0xFFFF0FFF
@@ -3607,12 +3607,12 @@ MOD20_02253E74: ; 0x02253E74
ldr r0, [r6, #0xc]
str r0, [r4, #4]
ldrh r1, [r5, #8]
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
add r1, r0, #0
add r0, r4, #0
ldr r2, [r4]
add r0, #8
- bl FUN_020B1F80
+ bl NNS_G2dInitCellAnimation
ldr r1, [r5]
ldr r0, [r5, #4]
str r1, [r4, #0x64]
@@ -3686,12 +3686,12 @@ MOD20_02253F28: ; 0x02253F28
lsl r1, r1, #0x10
ldr r0, [r4, #4]
lsr r1, r1, #0x10
- bl FUN_020AFC04
+ bl NNS_G2dGetAnimSequenceByIdx
add r1, r0, #0
add r0, r4, #0
ldr r2, [r4]
add r0, #8
- bl FUN_020B1F80
+ bl NNS_G2dInitCellAnimation
pop {r4, pc}
thumb_func_end MOD20_02253F28
@@ -3805,12 +3805,12 @@ MOD20_02253FBC: ; 0x02253FBC
str r4, [r5, #0x10]
add r0, r6, #0
add r2, r4, #0
- bl FUN_02006C88
+ bl GfGfxLoader_UncompressFromNarc
str r0, [r5]
add r0, r6, #0
add r1, r7, #0
add r2, r4, #0
- bl FUN_02006C88
+ bl GfGfxLoader_UncompressFromNarc
str r0, [r5, #4]
ldr r0, [r5]
cmp r0, #0
@@ -3820,7 +3820,7 @@ MOD20_02253FBC: ; 0x02253FBC
beq _0225400E
add r1, r5, #0
add r1, #8
- bl FUN_020AFEB8
+ bl NNS_G2dGetUnpackedCellBank
cmp r0, #0
bne _02253FFC
mov r0, #0
@@ -3829,7 +3829,7 @@ _02253FFC:
ldr r0, [r5, #4]
add r5, #0xc
add r1, r5, #0
- bl thunk_FUN_020afda0
+ bl NNS_G2dGetUnpackedMCAnimBank
cmp r0, #0
bne _0225400E
mov r0, #0
@@ -3848,7 +3848,7 @@ MOD20_02254014: ; 0x02254014
cmp r1, #0
beq _02254028
ldr r0, [r4, #0x10]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4]
_02254028:
@@ -3856,7 +3856,7 @@ _02254028:
cmp r1, #0
beq _02254038
ldr r0, [r4, #0x10]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0
str r0, [r4, #4]
_02254038:
@@ -4035,7 +4035,7 @@ MOD20_02254130: ; 0x02254130
str r3, [sp, #4]
ldr r5, [sp, #0x20]
bne _02254144
- bl ErrorHandling
+ bl GF_AssertFail
_02254144:
add r0, r5, #0
mov r1, #0x18
@@ -4072,7 +4072,7 @@ _02254176:
_02254188:
add r0, r5, #0
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r4, #0
_02254192:
add r0, r4, #0
@@ -4085,14 +4085,14 @@ MOD20_02254198: ; 0x02254198
push {r4, lr}
add r4, r0, #0
bne _022541A2
- bl ErrorHandling
+ bl GF_AssertFail
_022541A2:
ldr r0, [r4, #8]
ldr r1, [r4, #0x14]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, [r4, #8]
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
thumb_func_end MOD20_02254198
@@ -4481,11 +4481,11 @@ MOD20_02254420: ; 0x02254420
add r7, r3, #0
cmp r5, #0x1e
blo _02254432
- bl ErrorHandling
+ bl GF_AssertFail
_02254432:
cmp r4, #0x21
blo _0225443A
- bl ErrorHandling
+ bl GF_AssertFail
_0225443A:
cmp r5, #0x1e
blo _02254440
@@ -4517,7 +4517,7 @@ MOD20_02254460: ; 0x02254460
add r6, r2, #0
cmp r5, #4
blo _02254470
- bl ErrorHandling
+ bl GF_AssertFail
_02254470:
ldr r0, _02254480 ; =MOD20_02254724
lsl r1, r5, #3
diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c
index a9a7599d..1c91afde 100644
--- a/arm9/modules/21/src/mod21_02254854.c
+++ b/arm9/modules/21/src/mod21_02254854.c
@@ -29,7 +29,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param
UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854));
if (alloced != NULL)
{
- if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1))
+ if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, struct TextPrinter *))MOD21_02254930, (struct TextPrinter *)alloced, 1))
{
*param0 = alloced;
return TRUE;
diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c
index 1dcbe4b8..040ebdaa 100644
--- a/arm9/modules/21/src/mod21_02254A6C.c
+++ b/arm9/modules/21/src/mod21_02254A6C.c
@@ -5,7 +5,7 @@
extern void MOD20_022536F4(u32 *param0, u32 param1);
extern u32 MOD20_02252D34(void);
-extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4);
+extern void *GfGfxLoader_GetScrnData(u32 param0, u32 param1, u32 param2, void *param3, u32 param4);
extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6);
UnkOverlayStruct1 const MOD21_02254DAC[] = {
@@ -26,8 +26,8 @@ u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x
0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3);
-extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
-extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
+extern void GfGfxLoader_LoadCharData(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
+extern void GfGfxLoader_LoadScrnData(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
extern void MOD20_02252D7C(u32 param0, u32 param1);
extern void FUN_02017CD0(u32 param0, u32 param1);
extern void FUN_020178A0(u32 param0, u32 param1);
@@ -45,7 +45,7 @@ THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1)
MOD20_022536F4(strct->Unk08, 8);
strct->Unk00 = param1;
strct->Unk04 = MOD20_02252D34();
- void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8);
+ void *res = GfGfxLoader_GetScrnData(12, 0x19, 1, &sp4, 8);
if (res == 0)
{
FreeToHeap(strct);
@@ -105,8 +105,8 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1)
#pragma unused (param0)
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0);
- FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8);
- FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8);
+ GfGfxLoader_LoadCharData(12, 23, strct->Unk04, 6, 0, 0, 1, 8);
+ GfGfxLoader_LoadScrnData(12, 24, strct->Unk04, 6, 0, 0, 1, 8);
MOD20_02252D7C(0, 0);
MOD21_02254C5C(strct);
FUN_02017CD0(strct->Unk04, 6);
diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s
index e58e406b..bf11e9db 100644
--- a/arm9/modules/22/asm/module_22.s
+++ b/arm9/modules/22/asm/module_22.s
@@ -1164,7 +1164,7 @@ MOD22_02255098: ; 0x02255098
mov r0, #0xc
mov r1, #0x15
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1176,7 +1176,7 @@ MOD22_02255098: ; 0x02255098
mov r0, #0xc
mov r1, #0x14
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -1245,7 +1245,7 @@ MOD22_0225516C: ; 0x0225516C
str r0, [sp, #8]
mov r0, #0xc
mov r1, #2
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0
str r0, [sp]
mov r2, #1
@@ -1256,7 +1256,7 @@ MOD22_0225516C: ; 0x0225516C
mov r0, #0xc
mov r1, #0x16
lsl r3, r3, #8
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #1
add sp, #0xc
pop {pc}
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s
index 5550c76b..9f052087 100644
--- a/arm9/modules/23/asm/module_23.s
+++ b/arm9/modules/23/asm/module_23.s
@@ -1165,7 +1165,7 @@ MOD23_02255088: ; 0x02255088
mov r0, #0xc
mov r1, #0x10
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1177,7 +1177,7 @@ MOD23_02255088: ; 0x02255088
mov r0, #0xc
mov r1, #0x11
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r5, #0
bl MOD23_02255124
mov r0, #0
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
index 2888f12d..cdf4b770 100644
--- a/arm9/modules/24/asm/module_24.s
+++ b/arm9/modules/24/asm/module_24.s
@@ -624,7 +624,7 @@ MOD24_02254CA0: ; 0x02254CA0
bl FUN_02016B90
cmp r0, #0
bne _02254CC0
- bl ErrorHandling
+ bl GF_AssertFail
_02254CC0:
add r0, r4, #0
add r0, #8
@@ -634,7 +634,7 @@ _02254CC0:
bl FUN_02016B90
cmp r0, #0
bne _02254CD8
- bl ErrorHandling
+ bl GF_AssertFail
_02254CD8:
str r6, [r4]
bl MOD20_02252D34
@@ -645,7 +645,7 @@ _02254CD8:
bl FUN_02016B90
cmp r0, #0
bne _02254CF4
- bl ErrorHandling
+ bl GF_AssertFail
_02254CF4:
str r4, [r5]
mov r0, #1
@@ -662,7 +662,7 @@ MOD24_02254D00: ; 0x02254D00
add r4, r0, #0
mov r0, #8
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r4, #0x70]
add r1, r0, #0
beq _02254D3C
@@ -681,7 +681,7 @@ MOD24_02254D00: ; 0x02254D00
bne _02254D38
ldr r0, [r4, #0x70]
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
_02254D38:
mov r0, #1
pop {r4, pc}
@@ -702,7 +702,7 @@ MOD24_02254D48: ; 0x02254D48
bl FUN_02016B90
cmp r0, #0
bne _02254D5C
- bl ErrorHandling
+ bl GF_AssertFail
_02254D5C:
ldr r2, [r4, #0x70]
cmp r2, #0
@@ -786,7 +786,7 @@ MOD24_02254DDC: ; 0x02254DDC
bl FUN_02016B90
cmp r0, #0
bne _02254DF0
- bl ErrorHandling
+ bl GF_AssertFail
_02254DF0:
add r0, r4, #0
bl MOD20_022538A0
@@ -805,7 +805,7 @@ _02254DF0:
bl FUN_02016B90
cmp r0, #0
bne _02254E1E
- bl ErrorHandling
+ bl GF_AssertFail
_02254E1E:
mov r0, #0
str r0, [sp]
@@ -818,7 +818,7 @@ _02254E1E:
mov r0, #0xc
mov r1, #0x1e
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -830,7 +830,7 @@ _02254E1E:
mov r0, #0xc
mov r1, #0x1f
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -838,7 +838,7 @@ _02254E1E:
bl FUN_02016B90
cmp r0, #0
bne _02254E68
- bl ErrorHandling
+ bl GF_AssertFail
_02254E68:
add r0, r5, #0
bl MOD24_02254D00
@@ -848,7 +848,7 @@ _02254E68:
bl FUN_02016B90
cmp r0, #0
bne _02254E82
- bl ErrorHandling
+ bl GF_AssertFail
_02254E82:
add r0, r5, #0
bl MOD24_02255078
@@ -856,7 +856,7 @@ _02254E82:
bl FUN_02016B90
cmp r0, #0
bne _02254E96
- bl ErrorHandling
+ bl GF_AssertFail
_02254E96:
ldr r0, [r5, #4]
mov r1, #7
@@ -880,7 +880,7 @@ _02254E96:
bl FUN_02016B90
cmp r0, #0
bne _02254ECC
- bl ErrorHandling
+ bl GF_AssertFail
_02254ECC:
add sp, #0x14
pop {r4, r5, pc}
@@ -987,7 +987,7 @@ _02254F80:
mov r1, #4
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
asr r1, r5, #3
mov r2, #0x14
asr r0, r6, #3
@@ -1048,7 +1048,7 @@ _02254FF2:
mov r1, #1
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [r7, #0x70]
mov r2, #0x20
ldr r1, [r0, #0xc]
@@ -1110,7 +1110,7 @@ MOD24_02255078: ; 0x02255078
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x20
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s
index 481c98c2..5e70bbbe 100644
--- a/arm9/modules/25/asm/module_25.s
+++ b/arm9/modules/25/asm/module_25.s
@@ -440,7 +440,7 @@ MOD25_02254B34: ; 0x02254B34
mov r0, #0xc
mov r1, #0x17
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -452,7 +452,7 @@ MOD25_02254B34: ; 0x02254B34
mov r0, #0xc
mov r1, #0x1a
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -587,7 +587,7 @@ MOD25_02254C74: ; 0x02254C74
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x1d
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s
index 9fa91fb4..25e4a4b6 100644
--- a/arm9/modules/27/asm/module_27.s
+++ b/arm9/modules/27/asm/module_27.s
@@ -389,7 +389,7 @@ MOD27_02254AF0: ; 0x02254AF0
add r7, r6, #0
_02254B36:
add r0, r4, #0
- bl FUN_0201901C
+ bl InitWindow
add r0, r5, #0
add r0, #0x9c
str r7, [r0]
@@ -528,7 +528,7 @@ MOD27_02254C08: ; 0x02254C08
mov r0, #0xc
mov r1, #0x6a
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
lsr r5, r0, #5
str r3, [sp]
@@ -608,7 +608,7 @@ MOD27_02254CC8: ; 0x02254CC8
add r4, #0x3c
_02254CE8:
add r0, r4, #0
- bl FUN_0201901C
+ bl InitWindow
ldrh r0, [r5, #2]
add r1, r4, #0
mov r2, #6
@@ -834,7 +834,7 @@ MOD27_02254EAC: ; 0x02254EAC
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r4, #0
beq _02254EE0
lsl r0, r4, #0x10
@@ -846,7 +846,7 @@ MOD27_02254EAC: ; 0x02254EAC
add r0, r5, #0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
_02254EE0:
add r0, r5, #0
bl FUN_02019548
@@ -898,7 +898,7 @@ MOD27_02254F18: ; 0x02254F18
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x6d
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r4, #0
add r0, sp, #0x18
strb r4, [r0, #0xa]
@@ -1015,7 +1015,7 @@ _02254FFC:
bl NARC_ReadFromMember
ldr r0, [sp, #0x18]
add r1, sp, #0x20
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0x20]
mov r1, #2
ldr r0, [r0, #0x14]
diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s
index 618309d1..04176ba5 100644
--- a/arm9/modules/28/asm/module_28.s
+++ b/arm9/modules/28/asm/module_28.s
@@ -559,7 +559,7 @@ MOD28_02254C18: ; 0x02254C18
mov r0, #0xc
mov r1, #7
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -623,7 +623,7 @@ MOD28_02254CB4: ; 0x02254CB4
mov r0, #0xc
mov r1, #0x23
lsl r3, r0, #9
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0x13
mov r1, #8
bl NARC_ctor
@@ -670,7 +670,7 @@ _02254D24:
bl NARC_AllocAndReadWholeMember
add r1, sp, #0x2c
str r0, [sp, #0x20]
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, [sp, #0x2c]
mov r1, #1
ldr r0, [r0, #0x14]
@@ -744,7 +744,7 @@ _02254D24:
bl MOD20_02253F9C
b _02254DE0
_02254DDC:
- bl ErrorHandling
+ bl GF_AssertFail
_02254DE0:
ldrh r0, [r4, #8]
mov r1, #0x1c ; BASE_FLIP
diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s
index 723e8449..9fb45a65 100644
--- a/arm9/modules/29/asm/module_29.s
+++ b/arm9/modules/29/asm/module_29.s
@@ -539,7 +539,7 @@ MOD29_02254C08: ; 0x02254C08
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x2a
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
add r2, r6, #0
ldr r0, [r6, #0x30]
ldr r1, _02254C7C ; =MOD29_022550C0
@@ -684,7 +684,7 @@ MOD29_02254D10: ; 0x02254D10
mov r0, #0xc
mov r1, #0x27
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -696,7 +696,7 @@ MOD29_02254D10: ; 0x02254D10
mov r0, #0xc
mov r1, #0x26
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s
index aa55cd5b..5daf123f 100644
--- a/arm9/modules/30/asm/module_30.s
+++ b/arm9/modules/30/asm/module_30.s
@@ -376,7 +376,7 @@ MOD30_02254AE0: ; 0x02254AE0
str r0, [sp, #8]
mov r0, #0xc
mov r1, #2
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0
str r0, [sp]
mov r2, #1
@@ -387,7 +387,7 @@ MOD30_02254AE0: ; 0x02254AE0
mov r0, #0xc
mov r1, #0x2f
lsl r3, r3, #8
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
@@ -548,7 +548,7 @@ MOD30_02254C18: ; 0x02254C18
mov r0, #0xc
mov r1, #0x2c
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -560,7 +560,7 @@ MOD30_02254C18: ; 0x02254C18
mov r0, #0xc
mov r1, #0x2b
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
index 7dcd4e3a..5e45ce23 100644
--- a/arm9/modules/31/asm/module_31.s
+++ b/arm9/modules/31/asm/module_31.s
@@ -366,7 +366,7 @@ MOD31_02254AD4: ; 0x02254AD4
str r0, [sp, #8]
mov r0, #0xc
mov r1, #2
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0
str r0, [sp]
mov r2, #1
@@ -377,7 +377,7 @@ MOD31_02254AD4: ; 0x02254AD4
mov r0, #0xc
mov r1, #0x34
lsl r3, r3, #8
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
@@ -538,7 +538,7 @@ MOD31_02254C0C: ; 0x02254C0C
mov r0, #0xc
mov r1, #0x31
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -550,7 +550,7 @@ MOD31_02254C0C: ; 0x02254C0C
mov r0, #0xc
mov r1, #0x30
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s
index 5b40a737..c928dd1a 100644
--- a/arm9/modules/32/asm/module_32.s
+++ b/arm9/modules/32/asm/module_32.s
@@ -349,7 +349,7 @@ MOD32_02254A9C: ; 0x02254A9C
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x68
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r5, #0
@@ -465,7 +465,7 @@ MOD32_02254B58: ; 0x02254B58
mov r0, #0xc
mov r1, #0x65
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -477,7 +477,7 @@ MOD32_02254B58: ; 0x02254B58
mov r0, #0xc
mov r1, #0x64
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s
index 6db0efdf..55ccf203 100644
--- a/arm9/modules/33/asm/module_33.s
+++ b/arm9/modules/33/asm/module_33.s
@@ -313,7 +313,7 @@ MOD33_02254A38: ; 0x02254A38
ldr r2, [r5, #4]
mov r0, #0xc
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -333,7 +333,7 @@ MOD33_02254A38: ; 0x02254A38
mov r1, #9
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r5, #4]
mov r1, #0xc
mov r2, #6
diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s
index 84100418..ddc4f587 100644
--- a/arm9/modules/34/asm/module_34.s
+++ b/arm9/modules/34/asm/module_34.s
@@ -407,7 +407,7 @@ MOD34_02254AE8: ; 0x02254AE8
mov r0, #0xc
mov r1, #0x3b
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -419,7 +419,7 @@ MOD34_02254AE8: ; 0x02254AE8
mov r0, #0xc
mov r1, #0x3a
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
index 45cab8d3..f73ad3ff 100644
--- a/arm9/modules/35/asm/module_35.s
+++ b/arm9/modules/35/asm/module_35.s
@@ -431,7 +431,7 @@ MOD35_02254B54: ; 0x02254B54
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x54
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r1, #0x14
bl _u32_div_f
ldr r1, [sp, #0xc]
@@ -609,7 +609,7 @@ MOD35_02254C98: ; 0x02254C98
mov r0, #0xc
mov r1, #0x51
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -621,7 +621,7 @@ MOD35_02254C98: ; 0x02254C98
mov r0, #0xc
mov r1, #0x50
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
index fcd3cbc9..0149e180 100644
--- a/arm9/modules/36/asm/module_36.s
+++ b/arm9/modules/36/asm/module_36.s
@@ -868,7 +868,7 @@ MOD36_02254E8C: ; 0x02254E8C
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x59
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
@@ -984,7 +984,7 @@ MOD36_02254F5C: ; 0x02254F5C
bl FUN_02016B90
cmp r0, #0
bne _02254F70
- bl ErrorHandling
+ bl GF_AssertFail
_02254F70:
add r0, r5, #0
bl MOD20_022538A0
@@ -1003,7 +1003,7 @@ _02254F70:
bl FUN_02016B90
cmp r0, #0
bne _02254F9E
- bl ErrorHandling
+ bl GF_AssertFail
_02254F9E:
mov r0, #0
str r0, [sp]
@@ -1016,7 +1016,7 @@ _02254F9E:
mov r0, #0xc
mov r1, #0x56
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r6, r0, #0
mov r0, #0
str r0, [sp]
@@ -1029,7 +1029,7 @@ _02254F9E:
mov r0, #0xc
mov r1, #0x55
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -1037,7 +1037,7 @@ _02254F9E:
bl FUN_02016B90
cmp r0, #0
bne _02254FEA
- bl ErrorHandling
+ bl GF_AssertFail
_02254FEA:
add r0, r4, #0
lsr r1, r6, #5
@@ -1064,7 +1064,7 @@ _02254FEA:
bl FUN_02016B90
cmp r0, #0
bne _02255028
- bl ErrorHandling
+ bl GF_AssertFail
_02255028:
add sp, #0x14
pop {r3, r4, r5, r6, pc}
@@ -1108,7 +1108,7 @@ MOD36_0225503C: ; 0x0225503C
add r0, r4, #0
add r0, #0x48
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
_02255082:
add r0, r4, #0
add r0, #0x48
@@ -1205,7 +1205,7 @@ MOD36_0225510C: ; 0x0225510C
mov r1, #1
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r1, [r4, #0x54]
lsl r0, r5, #5
add r0, r1, r0
@@ -1298,7 +1298,7 @@ MOD36_022551E0: ; 0x022551E0
add r0, r4, #0
add r0, #0x48
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, #0x48
add r0, r4, #0
bl FUN_02019548
diff --git a/arm9/modules/37/asm/module_37.s b/arm9/modules/37/asm/module_37.s
index 3c7f412c..c2f1439a 100644
--- a/arm9/modules/37/asm/module_37.s
+++ b/arm9/modules/37/asm/module_37.s
@@ -341,7 +341,7 @@ MOD37_02254AA0: ; 0x02254AA0
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x39
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r4, #0
@@ -471,7 +471,7 @@ MOD37_02254B70: ; 0x02254B70
mov r0, #0xc
mov r1, #0x36
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -483,7 +483,7 @@ MOD37_02254B70: ; 0x02254B70
mov r0, #0xc
mov r1, #0x35
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s
index e1d888d4..ee5980ec 100644
--- a/arm9/modules/38/asm/module_38.s
+++ b/arm9/modules/38/asm/module_38.s
@@ -559,7 +559,7 @@ MOD38_02254C38: ; 0x02254C38
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x40
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r6, #0
@@ -753,7 +753,7 @@ MOD38_02254D84: ; 0x02254D84
mov r0, #0xc
mov r1, #0x3d
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r4, r0, #0
mov r0, #0
str r0, [sp]
@@ -766,7 +766,7 @@ MOD38_02254D84: ; 0x02254D84
mov r0, #0xc
mov r1, #0x3c
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -1046,7 +1046,7 @@ MOD38_0225500C: ; 0x0225500C
add r0, r4, #0
mov r1, #4
add r6, r2, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r6, #0x12
bne _02255036
add r0, r5, #0
@@ -1106,7 +1106,7 @@ MOD38_02255084: ; 0x02255084
add r0, r4, #0
mov r1, #4
add r6, r2, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r2, r5, #0
add r0, #0xb8
diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s
index a850e16a..da3f83f4 100644
--- a/arm9/modules/39/asm/module_39.s
+++ b/arm9/modules/39/asm/module_39.s
@@ -586,7 +586,7 @@ MOD39_02254C6C: ; 0x02254C6C
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x4a
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r1, #0x14
bl _u32_div_f
ldr r1, [sp, #0xc]
@@ -800,7 +800,7 @@ MOD39_02254DF4: ; 0x02254DF4
mov r0, #0xc
mov r1, #0x47
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -812,7 +812,7 @@ MOD39_02254DF4: ; 0x02254DF4
mov r0, #0xc
mov r1, #0x46
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s
index 713e9ec7..13c9a94f 100644
--- a/arm9/modules/40/asm/module_40.s
+++ b/arm9/modules/40/asm/module_40.s
@@ -759,7 +759,7 @@ MOD40_02254DBC: ; 0x02254DBC
str r0, [sp, #8]
mov r0, #0xc
mov r1, #2
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0
str r0, [sp]
mov r2, #1
@@ -770,7 +770,7 @@ MOD40_02254DBC: ; 0x02254DBC
mov r0, #0xc
mov r1, #0x4f
lsl r3, r3, #8
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r5, #0
@@ -1050,7 +1050,7 @@ MOD40_02254FE8: ; 0x02254FE8
mov r0, #0xc
mov r1, #0x4c
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1062,7 +1062,7 @@ MOD40_02254FE8: ; 0x02254FE8
mov r0, #0xc
mov r1, #0x4b
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s
index 637c100f..4d1afb06 100644
--- a/arm9/modules/41/asm/module_41.s
+++ b/arm9/modules/41/asm/module_41.s
@@ -1382,7 +1382,7 @@ MOD41_022552A0: ; 0x022552A0
str r0, [sp, #8]
mov r0, #0xc
mov r1, #2
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #0
str r0, [sp]
mov r2, #1
@@ -1393,7 +1393,7 @@ MOD41_022552A0: ; 0x022552A0
mov r0, #0xc
mov r1, #0x5e
lsl r3, r3, #8
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
@@ -1573,7 +1573,7 @@ MOD41_022553F4: ; 0x022553F4
mov r0, #0xc
mov r1, #0x5b
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1585,7 +1585,7 @@ MOD41_022553F4: ; 0x022553F4
mov r0, #0xc
mov r1, #0x5a
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
index 5bbfa2ba..03136570 100644
--- a/arm9/modules/42/asm/module_42.s
+++ b/arm9/modules/42/asm/module_42.s
@@ -659,7 +659,7 @@ MOD42_02254D04: ; 0x02254D04
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x78
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r5, #0
@@ -965,7 +965,7 @@ MOD42_02254F3C: ; 0x02254F3C
mov r0, #0xc
mov r1, #0x75
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -977,7 +977,7 @@ MOD42_02254F3C: ; 0x02254F3C
mov r0, #0xc
mov r1, #0x73
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s
index 89b23259..ce3da4bb 100644
--- a/arm9/modules/43/asm/module_43.s
+++ b/arm9/modules/43/asm/module_43.s
@@ -573,7 +573,7 @@ MOD43_02254C28: ; 0x02254C28
mov r0, #0xc
mov r1, #0x75
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r4, r0, #0
mov r0, #0
str r0, [sp]
@@ -586,7 +586,7 @@ MOD43_02254C28: ; 0x02254C28
mov r0, #0xc
mov r1, #0x74
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -654,7 +654,7 @@ MOD43_02254CD0: ; 0x02254CD0
bl FUN_02019064
add r0, sp, #0x14
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -843,7 +843,7 @@ MOD43_02254E78: ; 0x02254E78
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x78
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
mov r0, #0x4e
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s
index bf007af4..19726565 100644
--- a/arm9/modules/44/asm/module_44.s
+++ b/arm9/modules/44/asm/module_44.s
@@ -334,7 +334,7 @@ MOD44_02254A90: ; 0x02254A90
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x45
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r5, #0
@@ -468,7 +468,7 @@ MOD44_02254B64: ; 0x02254B64
mov r0, #0xc
mov r1, #0x42
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -480,7 +480,7 @@ MOD44_02254B64: ; 0x02254B64
mov r0, #0xc
mov r1, #0x41
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s
index d8d9bf36..95cf3fbc 100644
--- a/arm9/modules/45/asm/module_45.s
+++ b/arm9/modules/45/asm/module_45.s
@@ -505,7 +505,7 @@ MOD45_02254BE0: ; 0x02254BE0
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x72
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r5, #0
@@ -660,7 +660,7 @@ MOD45_02254CCC: ; 0x02254CCC
mov r0, #0xc
mov r1, #0x6f
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -766,7 +766,7 @@ MOD45_02254DDC: ; 0x02254DDC
mov r0, #0xc
mov r1, #0x6e
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r6, #4]
mov r4, #0
cmp r0, #0
diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s
index 9e4c3dc5..66418468 100644
--- a/arm9/modules/46/asm/module_46.s
+++ b/arm9/modules/46/asm/module_46.s
@@ -313,7 +313,7 @@ MOD46_02254A38: ; 0x02254A38
ldr r2, [r5, #4]
mov r0, #0xc
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -333,7 +333,7 @@ MOD46_02254A38: ; 0x02254A38
mov r1, #9
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r5, #4]
mov r1, #0x1a
mov r2, #6
diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s
index abb1ea34..3cd1bb32 100644
--- a/arm9/modules/47/asm/module_47.s
+++ b/arm9/modules/47/asm/module_47.s
@@ -749,7 +749,7 @@ MOD47_02254D8C: ; 0x02254D8C
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x63
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r6, #0
@@ -889,7 +889,7 @@ MOD47_02254E74: ; 0x02254E74
mov r0, #0xc
mov r1, #0x60
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r4, r0, #0
mov r0, #0
str r0, [sp]
@@ -902,7 +902,7 @@ MOD47_02254E74: ; 0x02254E74
mov r0, #0xc
mov r1, #0x5f
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -1162,7 +1162,7 @@ MOD47_022550FC: ; 0x022550FC
add r4, r0, #0
add r0, #0x20
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x58]
ldr r2, [r4, #0x5c]
mov r1, #0
@@ -1225,7 +1225,7 @@ MOD47_02255184: ; 0x02255184
add r4, r0, #0
add r0, #0x20
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x58]
ldr r2, [r4, #0x5c]
mov r1, #1
@@ -1265,7 +1265,7 @@ MOD47_022551D8: ; 0x022551D8
add r4, r0, #0
add r0, #0x20
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x58]
ldr r2, [r4, #0x5c]
mov r1, #2
@@ -1322,7 +1322,7 @@ MOD47_02255250: ; 0x02255250
add r4, r0, #0
add r0, #0x20
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x58]
ldr r2, [r4, #0x5c]
mov r1, #2
@@ -1386,7 +1386,7 @@ MOD47_022552D8: ; 0x022552D8
add r7, r1, #0
add r0, #0x20
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x58]
ldr r2, [r5, #0x5c]
mov r1, #5
diff --git a/arm9/modules/48/asm/module_48.s b/arm9/modules/48/asm/module_48.s
index ed66d753..8dfd4e0a 100644
--- a/arm9/modules/48/asm/module_48.s
+++ b/arm9/modules/48/asm/module_48.s
@@ -438,7 +438,7 @@ MOD48_02254B30: ; 0x02254B30
mov r0, #0xc
mov r1, #0x7a
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -450,7 +450,7 @@ MOD48_02254B30: ; 0x02254B30
mov r0, #0xc
mov r1, #0x79
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -679,7 +679,7 @@ MOD48_02254D2C: ; 0x02254D2C
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x7d
- bl FUN_02006A34
+ bl GfGfxLoader_LoadWholePalette
add r1, r4, #0
lsr r0, r0, #5
add r1, #0xac
diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s
index bce289da..1de7ea96 100644
--- a/arm9/modules/49/asm/module_49.s
+++ b/arm9/modules/49/asm/module_49.s
@@ -421,7 +421,7 @@ MOD49_02254AD4: ; 0x02254AD4
bl FUN_02019064
add r0, sp, #0x1c
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, sp, #0x1c
bl FUN_02019270
ldr r1, _02254BD4 ; =0x00000197
diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/module_50.s
index f91ae977..5d80d9b6 100644
--- a/arm9/modules/50/asm/module_50.s
+++ b/arm9/modules/50/asm/module_50.s
@@ -322,7 +322,7 @@ MOD50_02254A48: ; 0x02254A48
ldr r2, [r5, #4]
mov r0, #0xc
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -342,7 +342,7 @@ MOD50_02254A48: ; 0x02254A48
mov r1, #9
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r1, [r5]
ldr r0, [r5, #4]
ldr r1, [r1]
diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s
index 60bdd016..4642f8c1 100644
--- a/arm9/modules/51/asm/module_51.s
+++ b/arm9/modules/51/asm/module_51.s
@@ -120,7 +120,7 @@ MOD51_022548F0: ; 0x022548F0
mov r1, #3
mov r2, #1
add r3, #0x24
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r4, #0x20]
add sp, #4
pop {r3, r4, pc}
@@ -165,7 +165,7 @@ _02254960:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl CopyWindowToVram
ldr r0, [sp, #0x18]
@@ -193,7 +193,7 @@ _02254960:
add r0, r5, #0
add r0, #0x10
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x10
bl CopyWindowToVram
@@ -221,7 +221,7 @@ _02254960:
add r0, r5, #0
add r0, #0x20
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x20
bl CopyWindowToVram
@@ -477,7 +477,7 @@ MOD51_02254B54: ; 0x02254B54
mov r0, #0x4a
add r3, r1, #0
str r2, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #5
@@ -491,7 +491,7 @@ MOD51_02254B54: ; 0x02254B54
mov r1, #2
add r2, r4, #0
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -504,7 +504,7 @@ MOD51_02254B54: ; 0x02254B54
add r2, r4, #0
mov r3, #7
str r1, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #4
mov r1, #0
bl FUN_02054590
@@ -792,20 +792,20 @@ MOD51_02254E48: ; 0x02254E48
add r7, r5, r0
add r0, r7, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x76
lsl r0, r0, #2
add r0, r5, r0
str r0, [sp, #0x1c]
add r0, r0, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x7a
lsl r0, r0, #2
add r5, r5, r0
add r0, r5, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #2
str r0, [sp]
mov r0, #0xff
diff --git a/arm9/modules/52/include/module_52.h b/arm9/modules/52/include/module_52.h
index 4c47a82d..d997f1a6 100644
--- a/arm9/modules/52/include/module_52.h
+++ b/arm9/modules/52/include/module_52.h
@@ -13,30 +13,24 @@
#include "unk_02024E64.h"
#include "unk_020286F8.h"
-const u8 MOD52_021D76F8[];
+extern const struct Unk21DBE18 MOD52_021D76E8;
+extern const struct Unk21DBE18 MOD52_021D76D8;
+extern const struct Unk21DBE18 MOD52_021D76C8;
-THUMB_FUNC int MOD52_021D74E0();
-THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0);
-THUMB_FUNC int MOD52_021D750C();
+BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2);
+BOOL MOD52_021D74F8(struct UnkStruct_02006234 *param0, u32 *unused);
+BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2);
-THUMB_FUNC int MOD52_021D7528();
-THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0);
-THUMB_FUNC int MOD52_021D7560();
+BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2);
+BOOL MOD52_021D7540(struct UnkStruct_02006234 *param0, u32 *unused);
+BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2);
-THUMB_FUNC int MOD52_021D757C();
-THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0);
-THUMB_FUNC int MOD52_021D75E8();
+BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2);
+BOOL MOD52_021D7594(struct UnkStruct_02006234 *param0, u32 *unused);
+BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2);
-THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid);
-THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2);
-THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2);
-
-struct MOD52_Struct
-{
- int (*func1)(void);
- int (*func2)(struct UnkStruct_02006234 *param0);
- int (*func3)(void);
- u32 terminator;
-};
+void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid);
+void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2);
+void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2);
#endif // POKEDIAMOND_MODULE_52_H \ No newline at end of file
diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c
index 1f74c77f..41f2706a 100644
--- a/arm9/modules/52/src/module_52.c
+++ b/arm9/modules/52/src/module_52.c
@@ -1,28 +1,173 @@
#include "module_52.h"
#include "heap.h"
#include "unk_0205FA2C.h"
+#include "unk_02015E30.h"
extern struct Unk21DBE18 UNK_020FD144;
extern struct Unk21DBE18 UNK_020F2B7C;
extern struct Unk21DBE18 UNK_020F2B8C;
-extern void FUN_02015E3C(struct IGT *igt);
extern int FUN_02053678(u32 random, u32 gender, u32 param2);
-extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u8 param2[], u32 param3);
+extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u16 param2[], u32 param3);
extern void FUN_020377E0(struct SaveBlock2 *sav2);
extern void FUN_0205ECD4(struct ScriptState *script_state);
-THUMB_FUNC int MOD52_021D74E0()
+const struct Unk21DBE18 MOD52_021D76E8 = {
+ MOD52_021D74E0,
+ MOD52_021D74F8,
+ MOD52_021D750C,
+ 0xFFFFFFFF,
+};
+
+const struct Unk21DBE18 MOD52_021D76D8 = {
+ MOD52_021D7528,
+ MOD52_021D7540,
+ MOD52_021D7560,
+ 0xFFFFFFFF,
+};
+
+const struct Unk21DBE18 MOD52_021D76C8 = {
+ MOD52_021D757C,
+ MOD52_021D7594,
+ MOD52_021D75E8,
+ 0xFFFFFFFF,
+};
+
+const u16 MOD52_021D76F8[] = {
+ ITEM_ORAN_BERRY, 1,
+ ITEM_CHERI_BERRY, 1,
+ ITEM_CHESTO_BERRY, 1,
+ ITEM_PECHA_BERRY, 1,
+ ITEM_ORAN_BERRY, 1,
+ ITEM_PECHA_BERRY, 1,
+ ITEM_RAZZ_BERRY, 2,
+ ITEM_BLUK_BERRY, 2,
+ ITEM_CHERI_BERRY, 1,
+ ITEM_ORAN_BERRY, 2,
+ ITEM_SITRUS_BERRY, 1,
+ ITEM_WEPEAR_BERRY, 2,
+ ITEM_WEPEAR_BERRY, 2,
+ ITEM_KELPSY_BERRY, 1,
+ ITEM_CHERI_BERRY, 1,
+ ITEM_PECHA_BERRY, 1,
+ ITEM_ORAN_BERRY, 1,
+ ITEM_ORAN_BERRY, 1,
+ ITEM_RAWST_BERRY, 1,
+ ITEM_RAWST_BERRY, 1,
+ ITEM_RAZZ_BERRY, 1,
+ ITEM_RAZZ_BERRY, 1,
+ ITEM_CHERI_BERRY, 1,
+ ITEM_ORAN_BERRY, 1,
+ ITEM_ORAN_BERRY, 1,
+ ITEM_BLUK_BERRY, 1,
+ ITEM_NANAB_BERRY, 2,
+ ITEM_RAZZ_BERRY, 2,
+ ITEM_BLUK_BERRY, 2,
+ ITEM_PINAP_BERRY, 2,
+ ITEM_LEPPA_BERRY, 1,
+ ITEM_CHESTO_BERRY, 1,
+ ITEM_RAZZ_BERRY, 1,
+ ITEM_RAZZ_BERRY, 1,
+ ITEM_PERSIM_BERRY, 1,
+ ITEM_NANAB_BERRY, 1,
+ ITEM_NANAB_BERRY, 1,
+ ITEM_FIGY_BERRY, 1,
+ ITEM_ASPEAR_BERRY, 1,
+ ITEM_ASPEAR_BERRY, 1,
+ ITEM_RAZZ_BERRY, 1,
+ ITEM_PINAP_BERRY, 1,
+ ITEM_SITRUS_BERRY, 1,
+ ITEM_CHESTO_BERRY, 1,
+ ITEM_WIKI_BERRY, 1,
+ ITEM_AGUAV_BERRY, 1,
+ ITEM_PECHA_BERRY, 1,
+ ITEM_ASPEAR_BERRY, 1,
+ ITEM_IAPAPA_BERRY, 1,
+ ITEM_GREPA_BERRY, 1,
+ ITEM_SITRUS_BERRY, 1,
+ ITEM_ASPEAR_BERRY, 1,
+ ITEM_TAMATO_BERRY, 1,
+ ITEM_LUM_BERRY, 1,
+ ITEM_PECHA_BERRY, 1,
+ ITEM_PINAP_BERRY, 1,
+ ITEM_PINAP_BERRY, 1,
+ ITEM_PINAP_BERRY, 1,
+ ITEM_PERSIM_BERRY, 1,
+ ITEM_PERSIM_BERRY, 1,
+ ITEM_NANAB_BERRY, 1,
+ ITEM_NANAB_BERRY, 1,
+ ITEM_AGUAV_BERRY, 1,
+ ITEM_IAPAPA_BERRY, 1,
+ ITEM_RAWST_BERRY, 1,
+ ITEM_RAWST_BERRY, 1,
+ ITEM_CHERI_BERRY, 1,
+ ITEM_SITRUS_BERRY, 1,
+ ITEM_CHESTO_BERRY, 1,
+ ITEM_POMEG_BERRY, 1,
+ ITEM_PECHA_BERRY, 2,
+ ITEM_BLUK_BERRY, 2,
+ ITEM_WIKI_BERRY, 1,
+ ITEM_MAGO_BERRY, 1,
+ ITEM_RAWST_BERRY, 1,
+ ITEM_PERSIM_BERRY, 1,
+ ITEM_FIGY_BERRY, 1,
+ ITEM_PINAP_BERRY, 2,
+ ITEM_LEPPA_BERRY, 1,
+ ITEM_PECHA_BERRY, 1,
+ ITEM_MAGO_BERRY, 1,
+ ITEM_HONDEW_BERRY, 1,
+ ITEM_WIKI_BERRY, 2,
+ ITEM_MAGO_BERRY, 2,
+ ITEM_AGUAV_BERRY, 2,
+ ITEM_QUALOT_BERRY, 1,
+ ITEM_SITRUS_BERRY, 2,
+ ITEM_BLUK_BERRY, 3,
+ ITEM_NANAB_BERRY, 3,
+ ITEM_WEPEAR_BERRY, 3,
+ ITEM_POMEG_BERRY, 1,
+ ITEM_POMEG_BERRY, 1,
+ ITEM_HONDEW_BERRY, 2,
+ ITEM_HONDEW_BERRY, 2,
+ ITEM_KELPSY_BERRY, 1,
+ ITEM_KELPSY_BERRY, 1,
+ ITEM_TAMATO_BERRY, 1,
+ ITEM_TAMATO_BERRY, 1,
+ ITEM_QUALOT_BERRY, 1,
+ ITEM_QUALOT_BERRY, 1,
+ ITEM_POMEG_BERRY, 1,
+ ITEM_POMEG_BERRY, 1,
+ ITEM_HONDEW_BERRY, 1,
+ ITEM_HONDEW_BERRY, 1,
+ ITEM_TAMATO_BERRY, 1,
+ ITEM_TAMATO_BERRY, 1,
+ ITEM_GREPA_BERRY, 1,
+ ITEM_GREPA_BERRY, 1,
+ ITEM_QUALOT_BERRY, 1,
+ ITEM_QUALOT_BERRY, 1,
+ ITEM_LUM_BERRY, 1,
+ ITEM_LEPPA_BERRY, 1,
+ ITEM_QUALOT_BERRY, 2,
+ ITEM_GREPA_BERRY, 2,
+ ITEM_KELPSY_BERRY, 2,
+ ITEM_KELPSY_BERRY, 2,
+ ITEM_GREPA_BERRY, 1,
+ ITEM_GREPA_BERRY, 1,
+};
+
+THUMB_FUNC BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
+#pragma unused(arg1)
+#pragma unused(arg2)
FUN_0201681C(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
}
-THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0)
+THUMB_FUNC BOOL MOD52_021D74F8(struct UnkStruct_02006234 *param0, u32 *unused)
{
+#pragma unused(unused)
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
MOD52_021D769C(0x4d, sav2);
@@ -30,24 +175,29 @@ THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0)
return 1;
}
-THUMB_FUNC int MOD52_021D750C()
+THUMB_FUNC BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
+#pragma unused(arg1)
+#pragma unused(arg2)
FUN_020168D0(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144);
return 1;
}
-THUMB_FUNC int MOD52_021D7528()
+THUMB_FUNC BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
+#pragma unused(arg1)
+#pragma unused(arg2)
FUN_0201681C(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
}
-THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0)
+THUMB_FUNC BOOL MOD52_021D7540(struct UnkStruct_02006234 *param0, u32 *unused)
{
+#pragma unused(unused)
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
MOD52_021D7604(0x4d, sav2, 1);
@@ -57,24 +207,29 @@ THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0)
return 1;
}
-THUMB_FUNC int MOD52_021D7560()
+THUMB_FUNC BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
+#pragma unused(arg1)
+#pragma unused(arg2)
FUN_020168D0(0x4d);
RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C);
return 1;
}
-THUMB_FUNC int MOD52_021D757C()
+THUMB_FUNC BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
+#pragma unused(arg1)
+#pragma unused(arg2)
FUN_0201681C(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
}
-THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0)
+THUMB_FUNC BOOL MOD52_021D7594(struct UnkStruct_02006234 *param0, u32 *unused)
{
+#pragma unused(unused)
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2);
@@ -93,8 +248,10 @@ THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0)
return 1;
}
-THUMB_FUNC int MOD52_021D75E8()
+THUMB_FUNC BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
+#pragma unused(arg1)
+#pragma unused(arg2)
FUN_020168D0(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C);
@@ -124,7 +281,7 @@ THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_tr
PlayerProfile_SetAvatar(player_data, (u8)avatar);
- FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, 0x76);
+ FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, NELEMS(MOD52_021D76F8) / 2);
}
THUMB_FUNC void MOD52_021D7688(u32 unused, struct SaveBlock2 *sav2)
@@ -149,499 +306,3 @@ THUMB_FUNC void MOD52_021D769C(u32 unused, struct SaveBlock2 *sav2)
PlayerProfile_SetMoney(player_data, 3000);
FUN_0205ECD4(SavArray_Flags_get(sav2));
}
-
-const struct MOD52_Struct MOD52_021D76C8 = {
- MOD52_021D757C,
- MOD52_021D7594,
- MOD52_021D75E8,
- 0xFFFFFFFF,
-};
-
-const struct MOD52_Struct MOD52_021D76D8 = {
- MOD52_021D7528,
- MOD52_021D7540,
- MOD52_021D7560,
- 0xFFFFFFFF,
-};
-
-const struct MOD52_Struct MOD52_021D76E8 = {
- MOD52_021D74E0,
- MOD52_021D74F8,
- MOD52_021D750C,
- 0xFFFFFFFF,
-};
-
-const u8 MOD52_021D76F8[] = {
- 0x9B,
- 0x00,
- 0x01,
- 0x00,
- 0x95,
- 0x00,
- 0x01,
- 0x00,
- 0x96,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x01,
- 0x00,
- 0x9B,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x01,
- 0x00,
- 0xA4,
- 0x00,
- 0x02,
- 0x00,
- 0xA5,
- 0x00,
- 0x02,
- 0x00,
- 0x95,
- 0x00,
- 0x01,
- 0x00,
- 0x9B,
- 0x00,
- 0x02,
- 0x00,
- 0x9E,
- 0x00,
- 0x01,
- 0x00,
- 0xA7,
- 0x00,
- 0x02,
- 0x00,
- 0xA7,
- 0x00,
- 0x02,
- 0x00,
- 0xAA,
- 0x00,
- 0x01,
- 0x00,
- 0x95,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x01,
- 0x00,
- 0x9B,
- 0x00,
- 0x01,
- 0x00,
- 0x9B,
- 0x00,
- 0x01,
- 0x00,
- 0x98,
- 0x00,
- 0x01,
- 0x00,
- 0x98,
- 0x00,
- 0x01,
- 0x00,
- 0xA4,
- 0x00,
- 0x01,
- 0x00,
- 0xA4,
- 0x00,
- 0x01,
- 0x00,
- 0x95,
- 0x00,
- 0x01,
- 0x00,
- 0x9B,
- 0x00,
- 0x01,
- 0x00,
- 0x9B,
- 0x00,
- 0x01,
- 0x00,
- 0xA5,
- 0x00,
- 0x01,
- 0x00,
- 0xA6,
- 0x00,
- 0x02,
- 0x00,
- 0xA4,
- 0x00,
- 0x02,
- 0x00,
- 0xA5,
- 0x00,
- 0x02,
- 0x00,
- 0xA8,
- 0x00,
- 0x02,
- 0x00,
- 0x9A,
- 0x00,
- 0x01,
- 0x00,
- 0x96,
- 0x00,
- 0x01,
- 0x00,
- 0xA4,
- 0x00,
- 0x01,
- 0x00,
- 0xA4,
- 0x00,
- 0x01,
- 0x00,
- 0x9C,
- 0x00,
- 0x01,
- 0x00,
- 0xA6,
- 0x00,
- 0x01,
- 0x00,
- 0xA6,
- 0x00,
- 0x01,
- 0x00,
- 0x9F,
- 0x00,
- 0x01,
- 0x00,
- 0x99,
- 0x00,
- 0x01,
- 0x00,
- 0x99,
- 0x00,
- 0x01,
- 0x00,
- 0xA4,
- 0x00,
- 0x01,
- 0x00,
- 0xA8,
- 0x00,
- 0x01,
- 0x00,
- 0x9E,
- 0x00,
- 0x01,
- 0x00,
- 0x96,
- 0x00,
- 0x01,
- 0x00,
- 0xA0,
- 0x00,
- 0x01,
- 0x00,
- 0xA2,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x01,
- 0x00,
- 0x99,
- 0x00,
- 0x01,
- 0x00,
- 0xA3,
- 0x00,
- 0x01,
- 0x00,
- 0xAD,
- 0x00,
- 0x01,
- 0x00,
- 0x9E,
- 0x00,
- 0x01,
- 0x00,
- 0x99,
- 0x00,
- 0x01,
- 0x00,
- 0xAE,
- 0x00,
- 0x01,
- 0x00,
- 0x9D,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x01,
- 0x00,
- 0xA8,
- 0x00,
- 0x01,
- 0x00,
- 0xA8,
- 0x00,
- 0x01,
- 0x00,
- 0xA8,
- 0x00,
- 0x01,
- 0x00,
- 0x9C,
- 0x00,
- 0x01,
- 0x00,
- 0x9C,
- 0x00,
- 0x01,
- 0x00,
- 0xA6,
- 0x00,
- 0x01,
- 0x00,
- 0xA6,
- 0x00,
- 0x01,
- 0x00,
- 0xA2,
- 0x00,
- 0x01,
- 0x00,
- 0xA3,
- 0x00,
- 0x01,
- 0x00,
- 0x98,
- 0x00,
- 0x01,
- 0x00,
- 0x98,
- 0x00,
- 0x01,
- 0x00,
- 0x95,
- 0x00,
- 0x01,
- 0x00,
- 0x9E,
- 0x00,
- 0x01,
- 0x00,
- 0x96,
- 0x00,
- 0x01,
- 0x00,
- 0xA9,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x02,
- 0x00,
- 0xA5,
- 0x00,
- 0x02,
- 0x00,
- 0xA0,
- 0x00,
- 0x01,
- 0x00,
- 0xA1,
- 0x00,
- 0x01,
- 0x00,
- 0x98,
- 0x00,
- 0x01,
- 0x00,
- 0x9C,
- 0x00,
- 0x01,
- 0x00,
- 0x9F,
- 0x00,
- 0x01,
- 0x00,
- 0xA8,
- 0x00,
- 0x02,
- 0x00,
- 0x9A,
- 0x00,
- 0x01,
- 0x00,
- 0x97,
- 0x00,
- 0x01,
- 0x00,
- 0xA1,
- 0x00,
- 0x01,
- 0x00,
- 0xAC,
- 0x00,
- 0x01,
- 0x00,
- 0xA0,
- 0x00,
- 0x02,
- 0x00,
- 0xA1,
- 0x00,
- 0x02,
- 0x00,
- 0xA2,
- 0x00,
- 0x02,
- 0x00,
- 0xAB,
- 0x00,
- 0x01,
- 0x00,
- 0x9E,
- 0x00,
- 0x02,
- 0x00,
- 0xA5,
- 0x00,
- 0x03,
- 0x00,
- 0xA6,
- 0x00,
- 0x03,
- 0x00,
- 0xA7,
- 0x00,
- 0x03,
- 0x00,
- 0xA9,
- 0x00,
- 0x01,
- 0x00,
- 0xA9,
- 0x00,
- 0x01,
- 0x00,
- 0xAC,
- 0x00,
- 0x02,
- 0x00,
- 0xAC,
- 0x00,
- 0x02,
- 0x00,
- 0xAA,
- 0x00,
- 0x01,
- 0x00,
- 0xAA,
- 0x00,
- 0x01,
- 0x00,
- 0xAE,
- 0x00,
- 0x01,
- 0x00,
- 0xAE,
- 0x00,
- 0x01,
- 0x00,
- 0xAB,
- 0x00,
- 0x01,
- 0x00,
- 0xAB,
- 0x00,
- 0x01,
- 0x00,
- 0xA9,
- 0x00,
- 0x01,
- 0x00,
- 0xA9,
- 0x00,
- 0x01,
- 0x00,
- 0xAC,
- 0x00,
- 0x01,
- 0x00,
- 0xAC,
- 0x00,
- 0x01,
- 0x00,
- 0xAE,
- 0x00,
- 0x01,
- 0x00,
- 0xAE,
- 0x00,
- 0x01,
- 0x00,
- 0xAD,
- 0x00,
- 0x01,
- 0x00,
- 0xAD,
- 0x00,
- 0x01,
- 0x00,
- 0xAB,
- 0x00,
- 0x01,
- 0x00,
- 0xAB,
- 0x00,
- 0x01,
- 0x00,
- 0x9D,
- 0x00,
- 0x01,
- 0x00,
- 0x9A,
- 0x00,
- 0x01,
- 0x00,
- 0xAB,
- 0x00,
- 0x02,
- 0x00,
- 0xAD,
- 0x00,
- 0x02,
- 0x00,
- 0xAA,
- 0x00,
- 0x02,
- 0x00,
- 0xAA,
- 0x00,
- 0x02,
- 0x00,
- 0xAD,
- 0x00,
- 0x01,
- 0x00,
- 0xAD,
- 0x00,
- 0x01,
- 0x00,
-}; \ No newline at end of file
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
index b4fd4d80..d070f979 100644
--- a/arm9/modules/53/asm/module_53.s
+++ b/arm9/modules/53/asm/module_53.s
@@ -768,7 +768,7 @@ MOD53_021D7B60: ; 0x021D7B60
mov r0, #0x4e
add r2, r1, #0
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x40
str r0, [sp]
mov r0, #0x27
@@ -777,7 +777,7 @@ MOD53_021D7B60: ; 0x021D7B60
mov r1, #1
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -801,7 +801,7 @@ MOD53_021D7B60: ; 0x021D7B60
mov r0, #0x4e
add r2, r4, #0
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -815,7 +815,7 @@ MOD53_021D7B60: ; 0x021D7B60
mov r1, #4
add r2, r4, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -829,7 +829,7 @@ MOD53_021D7B60: ; 0x021D7B60
mov r1, #3
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -843,7 +843,7 @@ MOD53_021D7B60: ; 0x021D7B60
mov r0, #0x4e
add r2, r4, #0
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #8]
ldr r0, [r0, #8]
bl Options_GetFrame
@@ -898,7 +898,7 @@ MOD53_021D7C84: ; 0x021D7C84
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -1325,7 +1325,7 @@ MOD53_021D7FDC: ; 0x021D7FDC
lsl r0, r0, #2
add r0, r7, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #2
str r0, [sp]
mov r0, #0x1e
@@ -1346,7 +1346,7 @@ MOD53_021D7FDC: ; 0x021D7FDC
lsl r0, r0, #2
add r0, r7, r0
mov r1, #2
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x15
str r0, [sp]
mov r0, #6
@@ -1368,7 +1368,7 @@ MOD53_021D7FDC: ; 0x021D7FDC
lsl r0, r0, #2
add r0, r7, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r7, #0x28]
mov r0, #1
mov r2, #0
@@ -1415,7 +1415,7 @@ _021D80A8:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x14]
add r6, #0x14
add r0, r0, #1
@@ -1981,7 +1981,7 @@ MOD53_021D852C: ; 0x021D852C
bl MOD53_021D941C
cmp r0, #0
bne _021D8568
- bl ErrorHandling
+ bl GF_AssertFail
_021D8568:
add r0, r5, #0
mov r1, #6
@@ -2372,7 +2372,7 @@ MOD53_021D8860: ; 0x021D8860
bl MOD53_021D941C
cmp r0, #0
bne _021D889C
- bl ErrorHandling
+ bl GF_AssertFail
_021D889C:
add r0, r5, #0
mov r1, #0xe
@@ -2915,7 +2915,7 @@ _021D8C9C:
mov r1, ip
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD53_021D8C58
@@ -3429,7 +3429,7 @@ _021D906C:
add r0, r4, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r6, r6, #1
add r4, #0x10
cmp r6, #5
@@ -3633,7 +3633,7 @@ MOD53_021D91C8: ; 0x021D91C8
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xb6
lsl r0, r0, #2
add r0, r5, r0
@@ -3870,7 +3870,7 @@ _021D9374:
_021D93C0:
cmp r0, #0
bne _021D93C8
- bl ErrorHandling
+ bl GF_AssertFail
_021D93C8:
mov r0, #1
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index 904d1c7f..b11b96cf 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -612,7 +612,7 @@ _021D79A6:
mov r1, #1
add r2, #0x1c
mov r3, #0x33
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [r7, #0x18]
mov r1, #0x32
ldr r0, _021D7A30 ; =0x00004A44
@@ -694,7 +694,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
mov r0, #0x56
add r2, r1, #0
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r0, #0x33
@@ -703,7 +703,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
add r1, r0, #0
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -725,7 +725,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
mov r1, #0xa
add r2, r4, #0
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -737,7 +737,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
mov r1, #0xb
add r2, r4, #0
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -750,7 +750,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
mov r0, #0x56
mov r1, #2
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -763,7 +763,7 @@ MOD54_021D7AA0: ; 0x021D7AA0
mov r0, #0x56
mov r1, #3
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #8]
ldr r0, [r0, #8]
bl Options_GetFrame
@@ -819,7 +819,7 @@ MOD54_021D7BBC: ; 0x021D7BBC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -1081,7 +1081,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -1103,7 +1103,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #1
str r0, [sp]
mov r0, #0x1a
@@ -1148,7 +1148,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xa6
lsl r0, r0, #2
ldr r2, _021D7E94 ; =0x00010300
@@ -1176,7 +1176,7 @@ MOD54_021D7E98: ; 0x021D7E98
add r6, r0, #0
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #1
str r1, [sp]
mov r0, #0x41
@@ -1848,7 +1848,7 @@ _021D83DE:
strb r0, [r5, r1]
b _021D83FC
_021D83F8:
- bl ErrorHandling
+ bl GF_AssertFail
_021D83FC:
mov r0, #0x32
mov r1, #0
@@ -2688,7 +2688,7 @@ _021D8A5A:
str r4, [r5, r0]
pop {r3, r4, r5, r6, pc}
_021D8A64:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #4
pop {r3, r4, r5, r6, pc}
_021D8A6C:
@@ -2787,7 +2787,7 @@ MOD54_021D8AF8: ; 0x021D8AF8
_021D8B18:
add r0, r6, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r7, [sp, #0x14]
mov r0, #0
str r0, [sp, #0x20]
@@ -3013,7 +3013,7 @@ MOD54_021D8C90: ; 0x021D8C90
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xba
lsl r0, r0, #2
add r0, r5, r0
@@ -3131,7 +3131,7 @@ _021D8D90:
ldr r0, [r6, r0]
cmp r0, #0
bne _021D8D9E
- bl ErrorHandling
+ bl GF_AssertFail
_021D8D9E:
mov r0, #0xd9
lsl r0, r0, #2
@@ -3240,7 +3240,7 @@ MOD54_021D8E64: ; 0x021D8E64
mov r1, #8
add r2, r4, r2
mov r3, #0x33
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
mov r2, #0xcd
lsl r2, r2, #2
str r0, [r4, r2]
@@ -3249,7 +3249,7 @@ MOD54_021D8E64: ; 0x021D8E64
mov r1, #7
add r2, r4, r2
mov r3, #0x33
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
mov r3, #0xce
lsl r3, r3, #2
str r0, [r4, r3]
@@ -3260,7 +3260,7 @@ MOD54_021D8E64: ; 0x021D8E64
mov r1, #0x20
mov r2, #1
add r3, r4, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
mov r1, #0xc9
lsl r1, r1, #2
str r0, [r4, r1]
@@ -3271,7 +3271,7 @@ MOD54_021D8E64: ; 0x021D8E64
mov r1, #9
mov r2, #1
add r3, r4, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
mov r1, #0xca
lsl r1, r1, #2
str r0, [r4, r1]
@@ -3583,7 +3583,7 @@ MOD54_021D90E0: ; 0x021D90E0
cmp r5, #5
ble _021D90F2
_021D90EE:
- bl ErrorHandling
+ bl GF_AssertFail
_021D90F2:
add r2, r5, #1
cmp r2, #5
@@ -3786,7 +3786,7 @@ MOD54_021D9238: ; 0x021D9238
bl MOD54_021D91AC
cmp r4, r0
beq _021D925E
- bl ErrorHandling
+ bl GF_AssertFail
_021D925E:
mov r2, #0x63
lsl r2, r2, #2
@@ -3816,7 +3816,7 @@ MOD54_021D9274: ; 0x021D9274
bl MOD54_021D91B4
cmp r4, r0
beq _021D929A
- bl ErrorHandling
+ bl GF_AssertFail
_021D929A:
add r6, #0xc
add r0, r5, #0
@@ -3844,7 +3844,7 @@ MOD54_021D92AC: ; 0x021D92AC
bl MOD54_021D91BC
cmp r4, r0
beq _021D92D2
- bl ErrorHandling
+ bl GF_AssertFail
_021D92D2:
add r6, #0xcc
add r0, r5, #0
@@ -4260,7 +4260,7 @@ _021D9580:
add r7, r0, #0
cmp r6, r4
bhi _021D959C
- bl ErrorHandling
+ bl GF_AssertFail
_021D959C:
ldr r1, [sp, #4]
add r0, r7, #0
@@ -4317,7 +4317,7 @@ _021D95F8:
str r0, [sp, #0x14]
cmp r1, r0
bhi _021D960C
- bl ErrorHandling
+ bl GF_AssertFail
_021D960C:
mov r6, #0
ldr r4, [sp, #4]
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index 0d96ce13..b9f3c277 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -726,7 +726,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r0, #0x59
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r3, #0
str r3, [sp]
mov r0, #0x34
@@ -734,7 +734,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r0, #0x59
mov r1, #3
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -762,7 +762,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r0, #0x59
mov r1, #2
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -772,7 +772,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r0, #0x59
mov r1, #8
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -783,7 +783,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r0, #0x59
mov r1, #4
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -794,7 +794,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r1, #0xa
add r2, r4, #0
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -805,7 +805,7 @@ MOD55_021D7AE0: ; 0x021D7AE0
mov r1, #0xb
add r2, r4, #0
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #8]
bl Sav2_PlayerData_GetOptionsAddr
bl Options_GetFrame
@@ -865,7 +865,7 @@ MOD55_021D7C20: ; 0x021D7C20
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -1238,7 +1238,7 @@ _021D7F02:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r2, r5, #0
add r2, #0xc0
ldr r0, [r5, #0x10]
@@ -1305,7 +1305,7 @@ _021D7F86:
bl FUN_02019064
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r6, #2
bne _021D7FF4
ldr r0, [r5, #8]
@@ -2618,7 +2618,7 @@ _021D89AE:
add r7, r0, #0
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #1
str r0, [sp]
mov r0, #0xff
@@ -2723,7 +2723,7 @@ MOD55_021D8A7C: ; 0x021D8A7C
ldr r2, [r5, #4]
mov r0, #0x59
mov r1, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -2733,7 +2733,7 @@ MOD55_021D8A7C: ; 0x021D8A7C
ldr r2, [r5, #4]
mov r0, #0x59
mov r1, #8
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2744,7 +2744,7 @@ MOD55_021D8A7C: ; 0x021D8A7C
mov r0, #0x59
mov r1, #5
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
@@ -2775,7 +2775,7 @@ _021D8AEE:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r2, r5, #0
add r2, #0xc0
ldr r0, [r5, #0x10]
@@ -2834,7 +2834,7 @@ _021D8B6C:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r2, r5, #0
add r2, #0xd0
ldr r0, [r5, #0x10]
@@ -2917,7 +2917,7 @@ _021D8C02:
bl FUN_02019064
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl FUN_02019220
add r6, r6, #1
@@ -3213,7 +3213,7 @@ MOD55_021D8E6C: ; 0x021D8E6C
stmia r2!, {r0, r1}
add r0, r7, #0
mov r1, #0x34
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r4, _021D8FD0 ; =0x021DA3D8
str r0, [r5, #0x14]
mov r6, #0
@@ -3222,7 +3222,7 @@ _021D8EB6:
ldr r1, [r5, #0x10]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, #4
@@ -3241,7 +3241,7 @@ _021D8ECC:
stmia r2!, {r0, r1}
add r0, r7, #0
mov r1, #0x34
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r4, _021D8FD8 ; =0x021DA438
str r0, [r5, #0x14]
mov r6, #0
@@ -3250,7 +3250,7 @@ _021D8EEE:
ldr r1, [r5, #0x10]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, #4
@@ -3306,7 +3306,7 @@ _021D8F1A:
add r0, sp, #0x1c
add r2, r1, #0
mov r3, #0x34
- bl FUN_020010A8
+ bl ListMenuInit
mov r1, #0xea
lsl r1, r1, #2
str r0, [r5, r1]
@@ -3374,7 +3374,7 @@ _021D9002:
mov r0, #0xea
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
ldr r1, _021D90D0 ; =0x00000418
add r4, r0, #0
add r0, r1, #0
@@ -3382,7 +3382,7 @@ _021D9002:
ldrh r7, [r5, r1]
ldr r0, [r5, r0]
add r1, r5, r1
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
ldr r0, _021D90D0 ; =0x00000418
ldrh r0, [r5, r0]
cmp r7, r0
@@ -3458,9 +3458,9 @@ _021D9098:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r5, #0x14]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r6, #0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -3573,7 +3573,7 @@ MOD55_021D9184: ; 0x021D9184
mov r0, #0x59
mov r1, #7
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
@@ -3605,7 +3605,7 @@ _021D91D6:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #8]
bl Sav2_PlayerData_GetProfileAddr
add r2, r0, #0
@@ -3677,7 +3677,7 @@ _021D9278:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
mov r0, #0
eor r1, r4
@@ -3781,7 +3781,7 @@ _021D9338:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r1, r5, #0
add r1, #0xbc
mov r0, #0
@@ -4013,7 +4013,7 @@ _021D9570: .word MOD55_021DA314
thumb_func_start MOD55_021D9574
MOD55_021D9574: ; 0x021D9574
push {r3, lr}
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
mov r0, #1
add r1, r0, #0
@@ -4110,7 +4110,7 @@ _021D9618:
mov r0, #0x59
mov r1, #2
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4121,7 +4121,7 @@ _021D9618:
mov r0, #0x59
mov r1, #8
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4132,7 +4132,7 @@ _021D9618:
mov r0, #0x59
mov r1, #6
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xe6
lsl r0, r0, #2
add r0, r4, r0
@@ -4164,7 +4164,7 @@ _021D969A:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x34
bl PlayerProfile_new
str r0, [sp, #0x20]
@@ -4243,7 +4243,7 @@ _021D974E:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0xc]
ldr r2, [sp, #0x20]
mov r1, #0
@@ -4382,7 +4382,7 @@ _021D987C:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r2, r4, #0
add r2, #0xc4
ldr r0, [r4, #0x10]
@@ -4807,7 +4807,7 @@ MOD55_021D9C50: ; 0x021D9C50
add r4, r1, #0
bl G3X_ResetMtxStack
bl G3X_ResetMtxStack_2
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
add r0, r5, #0
add r0, #0xdc
ldr r0, [r0]
@@ -4862,7 +4862,7 @@ MOD55_021D9CC4: ; 0x021D9CC4
add r4, r1, #0
bl G3X_ResetMtxStack
bl G3X_ResetMtxStack_2
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
add r0, r5, #0
add r0, #0xdc
ldr r0, [r0]
@@ -4910,7 +4910,7 @@ _021D9D16:
mov r0, #0x59
mov r1, #0xa
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4921,7 +4921,7 @@ _021D9D16:
mov r0, #0x59
mov r1, #0xb
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #3
str r0, [sp]
mov r1, #1
@@ -4961,7 +4961,7 @@ MOD55_021D9D88: ; 0x021D9D88
ldr r2, [r6, #4]
mov r0, #0x59
mov r1, #8
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4972,7 +4972,7 @@ MOD55_021D9D88: ; 0x021D9D88
mov r0, #0x59
mov r1, #4
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r7, #0x29
mov r4, #0
add r5, r6, #0
@@ -5397,7 +5397,7 @@ _021DA0D0:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xce
lsl r0, r0, #2
ldr r2, _021DA158 ; =0x000001E2
@@ -5478,7 +5478,7 @@ _021DA17C:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xce
lsl r0, r0, #2
ldr r2, _021DA210 ; =0x000001E2
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index d1046c7b..531194c6 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -950,7 +950,7 @@ MOD56_0221257C: ; 0x0221257C
mov r0, #0x5c
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r3, #0
str r3, [sp]
mov r0, #0x36
@@ -958,7 +958,7 @@ MOD56_0221257C: ; 0x0221257C
mov r0, #0x5c
mov r1, #3
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -978,7 +978,7 @@ MOD56_0221257C: ; 0x0221257C
mov r0, #0x5c
mov r1, #2
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -988,7 +988,7 @@ MOD56_0221257C: ; 0x0221257C
mov r0, #0x5c
mov r1, #4
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -999,7 +999,7 @@ MOD56_0221257C: ; 0x0221257C
mov r1, #9
add r2, r4, #0
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1010,7 +1010,7 @@ MOD56_0221257C: ; 0x0221257C
mov r1, #0xa
add r2, r4, #0
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r5, #0xc4
ldr r0, [r5]
bl Sav2_PlayerData_GetOptionsAddr
@@ -1085,7 +1085,7 @@ MOD56_022126E0: ; 0x022126E0
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -1342,7 +1342,7 @@ _022128CE:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
mov r2, #0x16
add r0, #0xcc
@@ -1450,14 +1450,14 @@ _022129D8:
beq _022129EA
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
_022129EA:
add r0, r4, #0
add r0, #0xb0
ldr r0, [r0]
cmp r0, #0
beq _02212A00
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0
mov r1, #0
add r0, #0xb0
@@ -2464,7 +2464,7 @@ MOD56_02213194: ; 0x02213194
ldr r2, [r2]
mov r0, #0x5c
mov r1, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r6, #0
add r0, #0xb0
ldr r0, [r0]
@@ -2479,7 +2479,7 @@ MOD56_02213194: ; 0x02213194
mov r1, #0
ldr r0, [r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r6, #0
mov r1, #0
add r0, #0xb4
@@ -2487,7 +2487,7 @@ MOD56_02213194: ; 0x02213194
add r0, r6, #0
add r0, #0xb0
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r6, #0
mov r1, #0
add r0, #0xb0
@@ -2786,7 +2786,7 @@ _0221344C:
lsl r0, r0, #2
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -3021,7 +3021,7 @@ MOD56_02213624: ; 0x02213624
add r5, r1, #0
mov r1, #0x13
add r7, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
ldr r6, _02213750 ; =0x00010200
cmp r5, #0x20
@@ -3462,7 +3462,7 @@ _02213944:
ldr r0, [r0]
ldr r1, [r5, r7]
sub r2, r2, #1
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r6, r6, #1
_0221395C:
add r4, r4, #1
@@ -3476,7 +3476,7 @@ _0221395C:
ldr r1, [r1]
mov r2, #0x1b
mov r3, #0x20
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r5, #0
add r0, #0xb0
add r5, #0xcc
@@ -3485,7 +3485,7 @@ _0221395C:
ldr r0, [r0]
ldr r1, [r5]
sub r3, #0x30
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -3498,7 +3498,7 @@ MOD56_02213990: ; 0x02213990
add r5, r0, #0
mov r0, #0x22
mov r1, #0x36
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0xb0
str r0, [r1]
@@ -3567,7 +3567,7 @@ _022139D0:
add r2, r1, #0
mov r3, #0x36
str r5, [sp, #0x30]
- bl FUN_020010A8
+ bl ListMenuInit
add r5, #0xb4
str r0, [r5]
add sp, #0x34
@@ -3644,7 +3644,7 @@ MOD56_02213A94: ; 0x02213A94
ldr r2, [r2]
mov r0, #0x5c
mov r1, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
@@ -3675,7 +3675,7 @@ _02213AF0:
mov r1, #0
ldr r0, [r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r5, #0
mov r1, #0
add r0, #0xb4
@@ -3683,7 +3683,7 @@ _02213AF0:
add r0, r5, #0
add r0, #0xb0
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0
mov r1, #0
add r0, #0xb0
@@ -3712,7 +3712,7 @@ _02213B2C:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
mov r2, #0x16
add r0, #0xcc
@@ -3808,13 +3808,13 @@ _02213C24:
add r0, r5, #0
add r0, #0xb0
ldr r0, [r0]
- bl ListMenu_DestroyMenuStrings
+ bl ListMenuItems_DestroyMenuStrings
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0]
mov r1, #2
add r2, r4, #2
- bl FUN_02001538
+ bl ListMenuSetTemplateField
cmp r4, #3
ble _02213C50
add r0, r5, #0
@@ -3822,7 +3822,7 @@ _02213C24:
ldr r0, [r0]
mov r1, #3
mov r2, #5
- bl FUN_02001538
+ bl ListMenuSetTemplateField
b _02213C5E
_02213C50:
add r0, r5, #0
@@ -3830,7 +3830,7 @@ _02213C50:
ldr r0, [r0]
mov r1, #3
add r2, r4, #2
- bl FUN_02001538
+ bl ListMenuSetTemplateField
_02213C5E:
add r0, r5, #0
bl MOD56_02213938
@@ -3840,7 +3840,7 @@ _02213C5E:
ldr r0, [r0]
add r1, #2
add r2, sp, #0xc
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
cmp r4, #3
blt _02213C84
add r0, sp, #0xc
@@ -3860,11 +3860,11 @@ _02213C84:
ldrh r2, [r3, #2]
ldrh r3, [r3]
ldr r0, [r0]
- bl FUN_020013C8
+ bl ListMenuTestInput
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0]
- bl FUN_02001328
+ bl RedrawListMenu
str r4, [r5, #8]
_02213CA8:
add r0, r5, #0
@@ -3873,7 +3873,7 @@ _02213CA8:
ldr r0, [r0]
add r1, #2
add r2, sp, #0xc
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, sp, #0xc
ldr r1, [r5, #8]
ldrh r3, [r0]
@@ -3913,11 +3913,11 @@ _02213CF0:
str r1, [sp, #8]
add r0, #0xb4
ldr r0, [r0]
- bl FUN_020013C8
+ bl ListMenuTestInput
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0]
- bl FUN_02001328
+ bl RedrawListMenu
_02213D0C:
add r1, sp, #0xc
ldrh r1, [r1, #2]
@@ -4099,7 +4099,7 @@ _02213E5C:
mov r1, #0
ldr r0, [r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r5, #0
mov r1, #0
add r0, #0xb4
@@ -4107,7 +4107,7 @@ _02213E5C:
add r0, r5, #0
add r0, #0xb0
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0
mov r1, #0
add r0, #0xb0
@@ -4139,7 +4139,7 @@ _02213ECE:
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
_02213EE8:
mov r0, #1
@@ -5059,7 +5059,7 @@ MOD56_022145D4: ; 0x022145D4
stmia r2!, {r0, r1}
mov r0, #4
mov r1, #0x36
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0xb8
ldr r4, _022146C4 ; =0x02216480
@@ -5074,7 +5074,7 @@ _02214602:
ldr r1, [r1]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, #4
@@ -5134,7 +5134,7 @@ _02214642:
add r0, sp, #0x14
mov r1, #0
mov r3, #0x36
- bl FUN_020010A8
+ bl ListMenuInit
add r1, r5, #0
add r1, #0xbc
str r0, [r1]
@@ -5180,7 +5180,7 @@ _022146EE:
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r0, r5, #0
bl MOD56_02213BF4
@@ -5257,11 +5257,11 @@ _0221476E:
ldr r0, [r0]
mov r1, #0
add r2, r5, r2
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r5, #0
add r0, #0xb8
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0
add r1, r4, #0
bl MOD56_02214808
@@ -5298,10 +5298,10 @@ _022147CE:
ldr r0, [r0]
mov r1, #0
add r2, r5, r2
- bl FUN_02001300
+ bl DestroyListMenu
add r5, #0xb8
ldr r0, [r5]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r6, #0
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -5338,7 +5338,7 @@ _02214820:
stmia r2!, {r0, r1}
add r0, r7, #0
mov r1, #0x36
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0xb8
mov r6, #0
@@ -5354,7 +5354,7 @@ _0221484C:
ldr r1, [r1]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, r7
@@ -5425,7 +5425,7 @@ _0221488C:
ldrh r2, [r2, r3]
mov r1, #0
mov r3, #0x36
- bl FUN_020010A8
+ bl ListMenuInit
add r1, r5, #0
add r1, #0xbc
str r0, [r1]
@@ -5463,7 +5463,7 @@ _0221493C:
add r0, r5, #0
add r0, #0xbc
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
add r0, r5, #0
bl MOD56_02213BF4
@@ -5521,10 +5521,10 @@ _02214994:
lsl r3, r3, #1
mov r1, #0
add r2, r2, r3
- bl FUN_02001300
+ bl DestroyListMenu
add r5, #0xb8
ldr r0, [r5]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r6, #0
pop {r4, r5, r6, pc}
nop
@@ -5554,7 +5554,7 @@ MOD56_022149D8: ; 0x022149D8
add r0, #0xb4
ldr r0, [r0]
add r1, sp, #0x28
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, sp, #0x28
ldrh r0, [r0]
add r0, r5, r0
@@ -5585,7 +5585,7 @@ MOD56_022149D8: ; 0x022149D8
lsr r0, r0, #0x10
str r0, [sp, #0x1c]
mov r0, #3
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0xb8
str r0, [r1]
@@ -5630,7 +5630,7 @@ _02214A7E:
ldr r1, [r1]
ldr r3, [r4, #4]
mov r2, #0x1a
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _02214ADC
_02214A9E:
ldrh r0, [r7, #0x16]
@@ -5652,7 +5652,7 @@ _02214AB2:
ldr r1, [r1]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _02214ADC
_02214AC8:
add r0, r5, #0
@@ -5663,7 +5663,7 @@ _02214AC8:
ldr r1, [r1]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_02214ADC:
ldr r0, [sp, #0x24]
add r4, #8
@@ -5717,7 +5717,7 @@ _02214ADC:
add r0, sp, #0x2c
add r2, r1, #0
mov r3, #0x36
- bl FUN_020010A8
+ bl ListMenuInit
add r1, r5, #0
add r1, #0xbc
str r0, [r1]
@@ -5837,7 +5837,7 @@ _02214C1E:
add r0, r4, #0
add r0, #0xbc
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r5, r0, #0
add r0, r4, #0
bl MOD56_02213BF4
@@ -5878,7 +5878,7 @@ _02214C66:
add r0, #0xb4
ldr r0, [r0]
add r1, sp, #0xc
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, sp, #0xc
ldrh r0, [r0]
add r0, r4, r0
@@ -6074,10 +6074,10 @@ _02214DEC:
mov r1, #0
ldr r0, [r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
add r4, #0xb8
ldr r0, [r4]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, [sp]
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
@@ -6929,7 +6929,7 @@ MOD56_0221547C: ; 0x0221547C
ldr r2, [r2]
mov r0, #0x5c
mov r1, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xf3
mov r1, #0
lsl r0, r0, #2
@@ -6964,7 +6964,7 @@ MOD56_022154BC: ; 0x022154BC
mov r0, #0x5c
mov r1, #6
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xcb
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -7019,12 +7019,12 @@ _02215532:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0]
add r1, sp, #0x14
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, sp, #0x14
ldrh r0, [r0]
add r0, r5, r0
@@ -7564,12 +7564,12 @@ MOD56_022159B0: ; 0x022159B0
ldr r2, [r2]
mov r0, #0x5c
mov r1, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
mov r2, #0x16
add r0, #0xcc
@@ -8272,7 +8272,7 @@ _02215F82:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xcf
lsl r0, r0, #2
ldr r2, _02215FF0 ; =0x000001E2
@@ -8388,7 +8388,7 @@ _02216048:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xdb
lsl r0, r0, #2
ldr r2, _022160E0 ; =0x000001D9
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index 39e977cc..481488f8 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -667,7 +667,7 @@ _021D7A56:
mov r1, #0
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7AC4
_021D7A66:
@@ -675,7 +675,7 @@ _021D7A66:
mov r1, #1
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7AC4
_021D7A76:
@@ -683,7 +683,7 @@ _021D7A76:
mov r1, #2
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7AC4
_021D7A86:
@@ -691,7 +691,7 @@ _021D7A86:
mov r1, #3
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7AC4
_021D7A96:
@@ -699,7 +699,7 @@ _021D7A96:
mov r1, #4
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7AC4
_021D7AA6:
@@ -707,7 +707,7 @@ _021D7AA6:
mov r1, #5
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7AC4
_021D7AB6:
@@ -715,7 +715,7 @@ _021D7AB6:
mov r1, #6
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
_021D7AC4:
ldr r0, [sp]
@@ -754,7 +754,7 @@ _021D7B02:
mov r1, #7
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7B30
_021D7B12:
@@ -762,7 +762,7 @@ _021D7B12:
mov r1, #8
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
b _021D7B30
_021D7B22:
@@ -770,7 +770,7 @@ _021D7B22:
mov r1, #9
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
_021D7B30:
ldr r0, [sp]
@@ -802,7 +802,7 @@ MOD57_021D7B5C: ; 0x021D7B5C
mov r1, #0x29
add r2, sp, #0
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r6, r0, #0
ldr r0, [sp]
lsl r4, r4, #5
@@ -952,7 +952,7 @@ MOD57_021D7CA4: ; 0x021D7CA4
mov r1, #0
add r2, sp, #0x14
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r5, r0, #0
ldr r0, [sp, #0x14]
mov r1, #2
@@ -979,7 +979,7 @@ MOD57_021D7CA4: ; 0x021D7CA4
mov r1, #0xa
add r2, sp, #0x10
mov r3, #0x19
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r5, r0, #0
ldr r0, [sp, #0x10]
mov r1, #2
@@ -1010,22 +1010,22 @@ MOD57_021D7CA4: ; 0x021D7CA4
mov r1, #0x1b
mov r3, #0x19
str r2, [sp]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
ldr r1, _021D7ECC ; =0x000030B8
str r0, [r4, r1]
ldr r0, [r4, r1]
cmp r0, #0
bne _021D7D4C
- bl ErrorHandling
+ bl GF_AssertFail
_021D7D4C:
ldr r1, _021D7ECC ; =0x000030B8
ldr r0, [r4, r1]
add r1, r1, #4
add r1, r4, r1
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
bne _021D7D60
- bl ErrorHandling
+ bl GF_AssertFail
_021D7D60:
add r0, r4, #0
add r0, #0xb4
@@ -1041,7 +1041,7 @@ _021D7D60:
mov r1, #0x23
mov r2, #0
add r3, r4, r3
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r1, _021D7ED4 ; =0x000032F8
str r0, [r4, r1]
b _021D7DF2
@@ -1052,7 +1052,7 @@ _021D7D86:
mov r1, #0x24
mov r2, #0
add r3, r4, r3
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r1, _021D7ED4 ; =0x000032F8
str r0, [r4, r1]
b _021D7DF2
@@ -1064,22 +1064,22 @@ _021D7D9C:
mov r0, #0x33
mov r3, #0x19
str r2, [sp]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
ldr r1, _021D7ECC ; =0x000030B8
str r0, [r4, r1]
ldr r0, [r4, r1]
cmp r0, #0
bne _021D7DBC
- bl ErrorHandling
+ bl GF_AssertFail
_021D7DBC:
ldr r1, _021D7ECC ; =0x000030B8
ldr r0, [r4, r1]
add r1, r1, #4
add r1, r4, r1
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
bne _021D7DD0
- bl ErrorHandling
+ bl GF_AssertFail
_021D7DD0:
ldr r3, _021D7ED0 ; =0x000032FC
mov r0, #0x19
@@ -1088,7 +1088,7 @@ _021D7DD0:
mov r1, #0x2a
mov r2, #0
add r3, r4, r3
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r1, _021D7ED4 ; =0x000032F8
str r0, [r4, r1]
add r0, r4, #0
@@ -1109,7 +1109,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x17
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1120,7 +1120,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x1e
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1131,7 +1131,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x18
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1142,7 +1142,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x20
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1152,7 +1152,7 @@ _021D7DF2:
ldr r2, [r4]
mov r0, #0x33
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1163,7 +1163,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x21
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1174,7 +1174,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x1a
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1185,7 +1185,7 @@ _021D7DF2:
mov r0, #0x33
mov r1, #0x22
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0
add r0, #0xb4
ldr r0, [r0]
@@ -1327,7 +1327,7 @@ _021D7FB0:
mov r0, #0x33
mov r1, #0x1f
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #4
add r1, r5, #0
mov r2, #6
@@ -1359,7 +1359,7 @@ _021D8006:
mov r0, #0x33
mov r1, #0x1e
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #4
mov r1, #7
mov r2, #0xa
@@ -2000,7 +2000,7 @@ MOD57_021D84AC: ; 0x021D84AC
add r6, r0, #0
cmp r7, r6
bls _021D850C
- bl ErrorHandling
+ bl GF_AssertFail
_021D850C:
cmp r7, r6
bhs _021D8578
@@ -2292,7 +2292,7 @@ _021D8732:
mov r0, #4
pop {r3, pc}
_021D873A:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.align 2, 0
@@ -2689,7 +2689,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r2, r1, #0
add r3, r1, #0
add r7, r0, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0x88
str r0, [sp]
@@ -2699,7 +2699,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r0, #0x10
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0x88
str r0, [sp]
@@ -2709,7 +2709,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r0, #0x20
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0x88
str r0, [sp]
@@ -2719,7 +2719,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r0, #0x30
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0x88
str r0, [sp]
@@ -2729,7 +2729,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r0, #0x40
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0xe0
str r0, [sp]
@@ -2739,7 +2739,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r0, #0x50
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0xe0
str r0, [sp]
@@ -2749,7 +2749,7 @@ MOD57_021D89F0: ; 0x021D89F0
add r0, #0x60
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _021D8CEC ; =0x0000022D
mov r0, #0
mov r1, #0x1a
@@ -3042,7 +3042,7 @@ MOD57_021D8CF8: ; 0x021D8CF8
add r0, #0x70
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0xe0
str r0, [sp]
@@ -3052,7 +3052,7 @@ MOD57_021D8CF8: ; 0x021D8CF8
add r0, #0x80
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0xe0
str r0, [sp]
@@ -3062,7 +3062,7 @@ MOD57_021D8CF8: ; 0x021D8CF8
add r0, #0x90
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #0xe0
str r0, [sp]
@@ -3072,7 +3072,7 @@ MOD57_021D8CF8: ; 0x021D8CF8
add r0, #0xa0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _021D8FAC ; =0x0000022D
mov r0, #0
mov r1, #0x1a
@@ -3442,7 +3442,7 @@ MOD57_021D905C: ; 0x021D905C
ldr r0, [r5, #0x18]
cmp r0, #0
bne _021D906E
- bl ErrorHandling
+ bl GF_AssertFail
_021D906E:
ldr r0, [r5, #0x18]
bl GetIGTHours
@@ -3455,7 +3455,7 @@ _021D906E:
add r0, #0x50
mov r2, #0xb8
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r2, _021D913C ; =0x0000022D
mov r0, #0
mov r1, #0x1a
@@ -3558,7 +3558,7 @@ _021D9164:
mov r1, #0
mov r2, #0xcd
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r4, #0
bl CopyWindowToVram
add sp, #0x10
@@ -3573,7 +3573,7 @@ MOD57_021D9184: ; 0x021D9184
sub sp, #0x3c
add r7, r0, #0
bl MOD57_021D9578
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -3709,17 +3709,17 @@ _021D9290:
beq _021D92CA
ldr r1, [sp, #0x18]
add r1, r1, r6
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r0, #0
bne _021D92CE
mov r0, #0x1e
lsl r0, r0, #4
ldr r0, [r5, r0]
bl FreeToHeap
- bl ErrorHandling
+ bl GF_AssertFail
b _021D92CE
_021D92CA:
- bl ErrorHandling
+ bl GF_AssertFail
_021D92CE:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -4011,11 +4011,11 @@ MOD57_021D951C: ; 0x021D951C
add r6, r2, #0
cmp r4, #8
blo _021D952E
- bl ErrorHandling
+ bl GF_AssertFail
_021D952E:
cmp r6, #3
bls _021D9536
- bl ErrorHandling
+ bl GF_AssertFail
_021D9536:
lsl r7, r4, #2
mov r0, #0x57
@@ -4024,7 +4024,7 @@ _021D9536:
ldr r0, [r1, r0]
bl FUN_02020354
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
str r0, [sp]
lsl r0, r4, #5
str r0, [sp, #4]
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
index 93c1c39d..eb13ddb7 100644
--- a/arm9/modules/58/asm/module_58.s
+++ b/arm9/modules/58/asm/module_58.s
@@ -580,7 +580,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r0, #0x5f
add r2, r1, #0
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x40
str r0, [sp]
mov r0, #0x27
@@ -589,7 +589,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r1, #2
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -618,7 +618,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r1, #3
add r2, r4, #0
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -632,7 +632,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r1, #5
add r2, r4, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -646,7 +646,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r1, #4
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -660,7 +660,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r1, #6
add r2, r4, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0xc]
bl Options_GetFrame
lsl r0, r0, #0x18
@@ -715,7 +715,7 @@ MOD58_021DA044: ; 0x021DA044
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -1077,7 +1077,7 @@ MOD58_021DA30C: ; 0x021DA30C
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #9
str r0, [sp]
mov r0, #0x18
@@ -1097,7 +1097,7 @@ MOD58_021DA30C: ; 0x021DA30C
lsl r0, r0, #2
add r0, r5, r0
mov r1, #2
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x15
str r0, [sp]
mov r0, #8
@@ -1118,7 +1118,7 @@ MOD58_021DA30C: ; 0x021DA30C
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _021DA4BC ; =0x000E0702
mov r2, #1
str r0, [sp]
@@ -1189,7 +1189,7 @@ _021DA3C2:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r3, #0xe0
@@ -1234,7 +1234,7 @@ _021DA46A:
bl FUN_02019064
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x14]
add r7, #0x14
add r0, r0, #1
@@ -1646,7 +1646,7 @@ _021DA7A4:
lsl r0, r0, #2
add r0, r5, r0
mov r1, #2
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xb1
lsl r0, r0, #2
add r0, r5, r0
@@ -1780,7 +1780,7 @@ _021DA888:
mov r1, ip
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD58_021DA844
@@ -2217,7 +2217,7 @@ MOD58_021DAB94: ; 0x021DAB94
lsl r0, r0, #2
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xb5
lsl r0, r0, #2
add r0, r5, r0
@@ -2306,7 +2306,7 @@ _021DAC62:
lsl r0, r0, #0xa
cmp r7, r0
blt _021DAC6E
- bl ErrorHandling
+ bl GF_AssertFail
_021DAC6E:
mov r0, #6
add r6, r6, #1
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index c86d2c94..5604bf3c 100644
--- a/arm9/modules/59/asm/mod59_021D74E0_asm.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -883,7 +883,7 @@ _021D7C5E:
add r0, #0x1c
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r5, #0
ldr r2, _021D7D60 ; =0x000003E2
add r0, #0x1c
@@ -1051,7 +1051,7 @@ _021D7DC4:
bl FUN_02019150
ldr r1, [r5]
add r0, r6, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r7, #0
str r0, [r5, #0x44]
cmp r6, #0
@@ -1061,7 +1061,7 @@ _021D7DDE:
ldr r1, [r5, #0x4c]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r7, r7, #1
add r4, #8
cmp r7, r6
@@ -1096,7 +1096,7 @@ _021D7DF2:
lsl r3, r3, #0x18
add r2, r1, #0
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r5, #0x40]
ldr r0, [sp, #0x10]
ldr r2, _021D7EC4 ; =0x000003D9
@@ -1111,7 +1111,7 @@ _021D7DF2:
b _021D7E96
_021D7E4C:
ldr r0, [r5, #0x40]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
mov r1, #0
mvn r1, r1
str r0, [r5, #0x48]
@@ -1133,9 +1133,9 @@ _021D7E66:
mov r1, #0
ldr r0, [r5, #0x40]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, [r5, #0x44]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _021D7EC8 ; =0x000005DC
bl FUN_020054C8
mov r0, #0
@@ -1234,7 +1234,7 @@ _021D7EFA:
add r0, #0x1c
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r1, r5, #0
str r1, [sp]
ldr r0, _021D8048 ; =0x00010200
@@ -1273,7 +1273,7 @@ _021D7F7C:
add r0, #0x1c
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r1, r5, #0
str r1, [sp]
ldr r0, _021D804C ; =0x000F0200
@@ -1367,7 +1367,7 @@ MOD59_021D8058: ; 0x021D8058
str r0, [sp, #0xc]
ldr r2, [r5, #0x18]
mov r0, #0x7d
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
ldr r3, [r5]
mov r1, #0x20
@@ -1383,7 +1383,7 @@ MOD59_021D8058: ; 0x021D8058
ldr r2, [r5, #0x18]
mov r0, #0x7d
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, _021D80F8 ; =gGameVersion
ldrb r0, [r0]
cmp r0, #0xa
@@ -1402,7 +1402,7 @@ _021D80AA:
str r0, [sp, #4]
mov r0, #0x7d
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0xa0
str r0, [sp]
ldr r0, [r5]
@@ -1411,7 +1411,7 @@ _021D80AA:
mov r0, #0x7d
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r5, #0
bl MOD59_021D80FC
add r0, r5, #0
@@ -1460,7 +1460,7 @@ MOD59_021D80FC: ; 0x021D80FC
ldr r2, [r3, #0x18]
mov r0, #0x7d
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
_021D8138:
add sp, #0x24
pop {r4, r5, pc}
@@ -1500,7 +1500,7 @@ _021D814C:
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
ldr r0, [r4]
@@ -1514,7 +1514,7 @@ _021D814C:
add r1, sp, #0x14
ldr r1, [r1, r2]
mov r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1525,7 +1525,7 @@ _021D814C:
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0
mov r1, #1
mov r2, #7
@@ -1550,7 +1550,7 @@ _021D81BE:
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
ldr r0, [r4]
@@ -1565,7 +1565,7 @@ _021D81BE:
ldr r1, [r1, r2]
mov r2, #0
add r3, #0x83
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1576,7 +1576,7 @@ _021D81BE:
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0
mov r1, #2
mov r2, #8
@@ -1618,7 +1618,7 @@ MOD59_021D8234: ; 0x021D8234
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0
add r0, #0x8b
ldrb r0, [r0]
@@ -1813,7 +1813,7 @@ MOD59_021D83F8: ; 0x021D83F8
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r4, #0
mov r1, #6
mov r2, #9
@@ -1826,7 +1826,7 @@ MOD59_021D83F8: ; 0x021D83F8
mov r0, #0x7d
mov r2, #4
mov r3, #0xe0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r3, [r4]
mov r0, #6
mov r1, #0x20
@@ -1843,7 +1843,7 @@ MOD59_021D83F8: ; 0x021D83F8
ldr r2, [r4, #0x18]
mov r0, #0x7d
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -2007,7 +2007,7 @@ _021D8546:
lsl r1, r1, #2
ldr r1, [r2, r1]
ldr r2, [r4, #0x18]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x30
pop {r3, r4, r5, pc}
_021D858E:
@@ -2070,7 +2070,7 @@ _021D85C2:
lsl r1, r1, #2
ldr r1, [r2, r1]
ldr r2, [r4, #0x18]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x30
pop {r3, r4, r5, pc}
nop
@@ -2167,7 +2167,7 @@ _021D8698:
ldr r2, [r3, #0x18]
mov r0, #0x7d
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
_021D86AE:
add r0, r4, #0
add sp, #0x40
@@ -3374,7 +3374,7 @@ _021D90A2:
str r0, [sp, #0xc]
ldr r2, [r4, #0x18]
mov r0, #0x7d
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s
index 6d2d6e6b..2925c404 100644
--- a/arm9/modules/59/asm/mod59_021D9868.s
+++ b/arm9/modules/59/asm/mod59_021D9868.s
@@ -289,7 +289,7 @@ _021D9A2C:
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0x88
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -299,7 +299,7 @@ _021D9A2C:
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0x88
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r5, _021D9BC4 ; =0x021DA064
add r3, sp, #0x2c
ldmia r5!, {r0, r1}
@@ -325,7 +325,7 @@ _021D9A2C:
ldr r2, [r4, #4]
mov r0, #0x88
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -336,7 +336,7 @@ _021D9A2C:
ldr r2, [r4, #4]
mov r0, #0x88
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r5, _021D9BC8 ; =0x021DA0B8
add r3, sp, #0x10
ldmia r5!, {r0, r1}
@@ -361,7 +361,7 @@ _021D9A2C:
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0x88
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -372,7 +372,7 @@ _021D9A2C:
ldr r2, [r4, #4]
mov r0, #0x88
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
ldr r0, [r4]
@@ -380,7 +380,7 @@ _021D9A2C:
str r0, [sp, #4]
mov r0, #0x88
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r2, [r4]
mov r0, #0
mov r1, #0x20
@@ -536,7 +536,7 @@ _021D9C9A:
add r0, #0x10
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r5, #0
add r1, r6, #0
add r2, r0, #0
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index 418fa446..8c6d04fc 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -403,7 +403,7 @@ MOD60_021D77D4: ; 0x021D77D4
str r0, [r4, #0x10]
_021D7804:
bl FUN_0200BC30
- bl FUN_020AEEB8
+ bl NNS_GfdDoVramTransfer
ldr r0, [r4, #0x14]
bl FUN_0201AB60
ldr r3, _021D782C ; =0x027E0000
@@ -688,7 +688,7 @@ MOD60_021D7A40: ; 0x021D7A40
bl NARC_ReadWholeMember
add r0, r6, #0
add r1, sp, #0x20
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r3, [sp, #0x20]
mov r1, #0
str r1, [sp]
@@ -719,7 +719,7 @@ MOD60_021D7A40: ; 0x021D7A40
bl NARC_ReadWholeMember
add r0, r6, #0
add r1, sp, #0x1c
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r1, [sp, #0x1c]
mov r0, #0
ldr r1, [r1, #0xc]
@@ -748,7 +748,7 @@ MOD60_021D7A40: ; 0x021D7A40
add r1, r5, #0
ldr r0, [r5, #0x24]
add r1, #0x28
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
add r0, r4, #0
bl NARC_dtor
mov r3, #0
@@ -922,15 +922,15 @@ MOD60_021D7BA4: ; 0x021D7BA4
add r0, r4, #0
add r0, #0x2c
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x3c
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x4c
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x4c
bl FUN_020192B8
@@ -980,7 +980,7 @@ _021D7CF0:
bl FUN_02019570
add r0, r5, r4
add r1, r7, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, r4
bl FUN_020192B8
add r0, r5, r4
@@ -1209,7 +1209,7 @@ MOD60_021D7EA4: ; 0x021D7EA4
mov r1, #0xff
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [sp, #0x14]
cmp r0, #5
bne _021D7F26
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index 3afc1e03..ed9e0e05 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -305,7 +305,7 @@ _021D7702:
add r0, r5, #0
add r0, #0x94
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r5]
mov r0, #0x4c
bl String_ctor
@@ -432,7 +432,7 @@ _021D77F2:
add r0, r5, #0
add r0, #0x94
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r5]
mov r0, #0x4c
bl String_ctor
@@ -737,7 +737,7 @@ _021D7A7A:
beq _021D7A88
bl FUN_0200BC30
_021D7A88:
- bl FUN_020AEEB8
+ bl NNS_GfdDoVramTransfer
ldr r0, [r4, #0x18]
bl FUN_0201AB60
ldr r3, _021D7AA0 ; =0x027E0000
@@ -1087,7 +1087,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
bl NARC_ReadWholeMember
add r0, r7, #0
add r1, sp, #0x28
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r3, [sp, #0x28]
mov r0, #0
str r0, [sp]
@@ -1119,7 +1119,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
bl NARC_ReadWholeMember
add r0, r4, #0
add r1, sp, #0x24
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r2, [sp, #0x24]
mov r0, #4
ldr r1, [r2, #0xc]
@@ -1253,7 +1253,7 @@ _021D7E00:
add r1, r5, #0
ldr r0, [r5, #0x34]
add r1, #0x3c
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
mov r0, #0x4f
mov r1, #0x24
bl GetNarcMemberSizeByIdPair
@@ -1268,7 +1268,7 @@ _021D7E00:
add r1, r5, #0
ldr r0, [r5, #0x38]
add r1, #0x40
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
add r0, r6, #0
bl NARC_dtor
mov r3, #0
@@ -1484,7 +1484,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
_021D80BE:
add r0, r5, #0
add r1, r6, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r4, #5
bge _021D80D0
add r0, r5, #0
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
index d65fb117..26b7d486 100644
--- a/arm9/modules/62/asm/module_62.s
+++ b/arm9/modules/62/asm/module_62.s
@@ -550,7 +550,7 @@ MOD62_0222D9A0: ; 0x0222D9A0
ldr r1, [r2, r1]
cmp r1, #1
bne _0222D9CC
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x34
mov r0, #0
pop {r4, r5, r6, r7, pc}
@@ -690,7 +690,7 @@ _0222DADA:
str r0, [r4]
b _0222DAE6
_0222DAE2:
- bl ErrorHandling
+ bl GF_AssertFail
_0222DAE6:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -1152,7 +1152,7 @@ MOD62_0222DE00: ; 0x0222DE00
bl NewString_ReadMsgData
str r0, [sp, #0x18]
add r0, sp, #0x1c
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1815,14 +1815,14 @@ _0222E35C: .word 0x04000580
thumb_func_start MOD62_0222E360
MOD62_0222E360: ; 0x0222E360
push {r3, r4, r5, lr}
- ldr r3, _0222E398 ; =UNK_021064B8
+ ldr r3, _0222E398 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _0222E39C ; =UNK_021064C0
+ ldr r3, _0222E39C ; =NNS_GfdDefaultFuncAllocPlttVram
mov r1, #0
add r4, r0, #0
ldr r3, [r3]
@@ -1832,17 +1832,17 @@ MOD62_0222E360: ; 0x0222E360
add r5, r0, #0
cmp r4, #0
bne _0222E388
- bl ErrorHandling
+ bl GF_AssertFail
_0222E388:
cmp r5, #0
bne _0222E390
- bl ErrorHandling
+ bl GF_AssertFail
_0222E390:
bl FUN_02012CC8
pop {r3, r4, r5, pc}
nop
-_0222E398: .word UNK_021064B8
-_0222E39C: .word UNK_021064C0
+_0222E398: .word NNS_GfdDefaultFuncAllocTexVram
+_0222E39C: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_end MOD62_0222E360
thumb_func_start MOD62_0222E3A0
@@ -1853,7 +1853,7 @@ MOD62_0222E3A0: ; 0x0222E3A0
cmp r0, #0
ble _0222E3B6
bl FUN_020222AC
- bl FUN_020B02C8
+ bl NNS_G2dSetupSoftwareSpriteCamera
_0222E3B6:
bl FUN_02013388
mov r0, #1
@@ -1936,7 +1936,7 @@ _0222E442:
add r0, r4, r0
asr r7, r0, #1
ldr r0, [sp, #0x18]
- bl FUN_0201901C
+ bl InitWindow
lsl r0, r5, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -1957,7 +1957,7 @@ _0222E442:
bl FUN_02019064
add r0, r7, #0
mov r1, #0x35
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r2, #0x67
ldr r1, [sp, #0x1c]
lsl r2, r2, #2
@@ -1990,7 +1990,7 @@ _0222E49A:
ldr r0, [r1, r0]
ldr r2, [r2, #4]
add r1, r4, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r4, #0
bl String_dtor
add r6, r6, #1
@@ -2454,7 +2454,7 @@ MOD62_0222E7E8: ; 0x0222E7E8
bl FUN_0200BBF0
cmp r0, #0
bne _0222E852
- bl ErrorHandling
+ bl GF_AssertFail
_0222E852:
ldr r0, [r4, #8]
ldr r1, [r4, #0xc]
@@ -2462,7 +2462,7 @@ _0222E852:
bl FUN_0200BF60
cmp r0, #0
bne _0222E864
- bl ErrorHandling
+ bl GF_AssertFail
_0222E864:
add sp, #0x4c
pop {r3, r4, r5, r6, pc}
@@ -3251,7 +3251,7 @@ MOD62_0222EE78: ; 0x0222EE78
cmp r5, r1
bne _0222EE96
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl CopyWindowToVram
add sp, #0xc
@@ -3268,7 +3268,7 @@ _0222EE96:
add r5, r0, #0
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -3298,7 +3298,7 @@ MOD62_0222EEE0: ; 0x0222EEE0
add r0, r5, #0
add r4, r2, #0
add r6, r3, #0
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [sp, #0x28]
lsl r2, r4, #0x18
lsl r0, r0, #0x18
@@ -3331,7 +3331,7 @@ MOD62_0222EEE0: ; 0x0222EEE0
bl FUN_0200D0BC
add r0, r5, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x14
@@ -3347,7 +3347,7 @@ MOD62_0222EF44: ; 0x0222EF44
add r0, r5, #0
add r4, r2, #0
add r6, r3, #0
- bl FUN_0201901C
+ bl InitWindow
ldr r0, [sp, #0x28]
lsl r2, r4, #0x18
lsl r0, r0, #0x18
@@ -3377,7 +3377,7 @@ MOD62_0222EF44: ; 0x0222EF44
bl FUN_02019064
add r0, r5, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl CopyWindowToVram
add sp, #0x14
@@ -3552,14 +3552,14 @@ _0222F0E2:
bne _0222F0FE
add r0, r5, #0
mov r1, #0xee
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl CopyWindowToVram
b _0222F152
_0222F0FE:
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x64
mov r1, #0x35
bl String_ctor
@@ -3621,7 +3621,7 @@ MOD62_0222F168: ; 0x0222F168
bne _0222F194
add r0, r5, r4
mov r1, #0xee
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, r4
bl CopyWindowToVram
add sp, #0x14
@@ -3629,7 +3629,7 @@ MOD62_0222F168: ; 0x0222F168
_0222F194:
add r0, r5, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x64
mov r1, #0x35
bl String_ctor
@@ -3693,7 +3693,7 @@ MOD62_0222F208: ; 0x0222F208
cmp r5, r1
bne _0222F226
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl CopyWindowToVram
add sp, #0xc
@@ -3710,7 +3710,7 @@ _0222F226:
add r5, r0, #0
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -3801,7 +3801,7 @@ MOD62_0222F2C8: ; 0x0222F2C8
ldr r2, [r2]
add r1, #0xb1
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3816,7 +3816,7 @@ MOD62_0222F2C8: ; 0x0222F2C8
ldr r2, [r2]
add r1, #0xc1
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
mov r0, #0x40
@@ -3844,7 +3844,7 @@ MOD62_0222F2C8: ; 0x0222F2C8
ldr r2, [r2]
add r1, #0xb2
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3858,7 +3858,7 @@ MOD62_0222F2C8: ; 0x0222F2C8
ldr r2, [r4]
add r1, #0xc2
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r4, pc}
thumb_func_end MOD62_0222F2C8
@@ -3882,7 +3882,7 @@ MOD62_0222F36C: ; 0x0222F36C
ldr r2, [r2]
add r1, #0xb0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3897,7 +3897,7 @@ MOD62_0222F36C: ; 0x0222F36C
ldr r2, [r2]
add r1, #0xc0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
str r0, [sp]
mov r0, #0x40
@@ -3935,7 +3935,7 @@ MOD62_0222F3D4: ; 0x0222F3D4
ldr r2, [r2]
add r1, #0xb0
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3950,7 +3950,7 @@ MOD62_0222F3D4: ; 0x0222F3D4
ldr r2, [r2]
add r1, #0xbf
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
str r0, [sp]
mov r0, #0x40
@@ -4612,7 +4612,7 @@ MOD62_0222F904: ; 0x0222F904
mov r0, #0x67
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r4, #0xfc
add r0, r4, #0
bl FUN_02019178
@@ -5166,7 +5166,7 @@ _0222FD9A:
bl FUN_0200C61C
pop {r3, pc}
_0222FDA2:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, pc}
thumb_func_end MOD62_0222FD70
@@ -5540,7 +5540,7 @@ _02230074:
bl FUN_020054C8
pop {r4, r5, r6, pc}
_022300A4:
- bl ErrorHandling
+ bl GF_AssertFail
_022300A8:
pop {r4, r5, r6, pc}
nop
diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s
index a323b642..ea96bf3b 100644
--- a/arm9/modules/63/asm/mod63_021D74E0.s
+++ b/arm9/modules/63/asm/mod63_021D74E0.s
@@ -519,24 +519,24 @@ MOD63_021D78BC: ; 0x021D78BC
bl FUN_0201B234
ldr r0, [r5, #0x60]
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
add r4, r0, #0
add r0, r5, #0
ldr r2, [r5, #0x58]
add r0, #0x68
add r1, r4, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r5, #0x64]
ldr r0, [r5, #0x5c]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
add r3, r0, #0
ldr r0, [r5, #0x64]
ldr r2, [r5, #0x58]
add r1, r4, #0
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r5, #0x64]
add r0, r5, #4
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r4, r5, #0
add r6, sp, #0xc
mov r3, #0
@@ -579,7 +579,7 @@ MOD63_021D7970: ; 0x021D7970
add r4, r0, #0
ldr r1, [r4, #0x64]
add r0, #0x68
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
ldr r0, [r4, #0x60]
bl FreeToHeap
ldr r0, [r4, #0x5c]
@@ -1006,10 +1006,10 @@ _021D7C52:
ldrsh r2, [r5, r2]
ldrsh r3, [r5, r3]
mov r0, #0
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
ldr r1, _021D7D68 ; =0x00007FFF
mov r0, #0
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
ldr r3, _021D7D6C ; =0x0000010E
mov r0, #1
add r2, r3, #2
@@ -1017,10 +1017,10 @@ _021D7C52:
add r3, r3, #4
ldrsh r2, [r5, r2]
ldrsh r3, [r5, r3]
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
ldr r1, _021D7D68 ; =0x00007FFF
mov r0, #1
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
ldr r2, _021D7D60 ; =0x04000060
ldr r0, _021D7D64 ; =0xFFFFCFFF
ldrh r1, [r2]
@@ -1770,7 +1770,7 @@ _021D8272:
str r1, [r0]
ldr r1, _021D835C ; =0x00007FFF
mov r0, #1
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
add r0, r5, #0
add r1, r4, #0
add r0, #0xa8
@@ -1880,7 +1880,7 @@ MOD63_021D83A8: ; 0x021D83A8
add r2, r5, #0
add r3, r1, #0
str r4, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1890,7 +1890,7 @@ MOD63_021D83A8: ; 0x021D83A8
add r2, r5, #0
mov r3, #3
str r4, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1900,7 +1900,7 @@ MOD63_021D83A8: ; 0x021D83A8
add r2, r5, #0
mov r3, #7
str r4, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1910,7 +1910,7 @@ MOD63_021D83A8: ; 0x021D83A8
add r2, r5, #0
mov r3, #3
str r4, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, _021D85C8 ; =gGameVersion
ldrb r7, [r0]
cmp r7, #0xa ; VERSION_DIAMOND
@@ -1929,14 +1929,14 @@ _021D8420:
mov r0, #0x30
mov r2, #4
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r2, #0
str r2, [sp]
ldr r1, [sp, #0x18]
mov r0, #0x30
add r3, r2, #0
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
cmp r7, #0xa
bne _021D8448
mov r1, #1
@@ -1954,7 +1954,7 @@ _021D844C:
add r2, r5, #0
mov r3, #6
str r4, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r3, #1
@@ -1963,7 +1963,7 @@ _021D844C:
mov r2, #6
lsl r3, r3, #0xe
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -1972,7 +1972,7 @@ _021D844C:
add r2, r5, #0
mov r3, #6
str r4, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1982,7 +1982,7 @@ _021D844C:
add r2, r5, #0
mov r3, #5
str r4, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r1, #0x10
@@ -1990,7 +1990,7 @@ _021D844C:
mov r2, #6
lsl r3, r1, #9
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2000,7 +2000,7 @@ _021D844C:
add r2, r5, #0
mov r3, #5
str r4, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2010,7 +2010,7 @@ _021D844C:
add r2, r5, #0
mov r3, #1
str r4, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2020,7 +2020,7 @@ _021D844C:
add r2, r5, #0
mov r3, #1
str r4, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x60
str r0, [sp]
mov r0, #0x30
@@ -2028,7 +2028,7 @@ _021D844C:
mov r2, #0
mov r3, #0x20
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
add r1, r0, #0
bl FUN_02017FE4
@@ -2064,7 +2064,7 @@ _021D844C:
add r0, #0xac
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add r0, r7, #0
mov r1, #0
add r2, r4, #0
@@ -2150,7 +2150,7 @@ _021D85FE:
add r2, r7, #0
mov r3, #5
str r5, [sp, #0xc]
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #0x80
@@ -2158,7 +2158,7 @@ _021D85FE:
mov r2, #6
lsl r3, r0, #6
str r5, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2168,7 +2168,7 @@ _021D85FE:
add r2, r7, #0
mov r3, #5
str r5, [sp, #0xc]
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
_021D863A:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
@@ -2260,7 +2260,7 @@ _021D86B2:
lsl r1, r1, #0x10
mov r0, #1
lsr r1, r1, #0x10
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
pop {r4, pc}
.align 2, 0
_021D86DC: .word 0x00000116
diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s
index e501157b..6f6f8f75 100644
--- a/arm9/modules/63/asm/mod63_021D8890.s
+++ b/arm9/modules/63/asm/mod63_021D8890.s
@@ -417,14 +417,14 @@ MOD63_021D8BD8: ; 0x021D8BD8
add r3, r1, #0
bl FUN_02022318
str r0, [r4, #0x10]
- ldr r3, _021D8C18 ; =UNK_021064B8
+ ldr r3, _021D8C18 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #2
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _021D8C1C ; =UNK_021064C0
+ ldr r3, _021D8C1C ; =NNS_GfdDefaultFuncAllocPlttVram
mov r0, #0x80
ldr r3, [r3]
mov r1, #0
@@ -434,8 +434,8 @@ MOD63_021D8BD8: ; 0x021D8BD8
pop {r4, pc}
nop
_021D8C14: .word MOD63_021D8C20
-_021D8C18: .word UNK_021064B8
-_021D8C1C: .word UNK_021064C0
+_021D8C18: .word NNS_GfdDefaultFuncAllocTexVram
+_021D8C1C: .word NNS_GfdDefaultFuncAllocPlttVram
thumb_func_end MOD63_021D8BD8
thumb_func_start MOD63_021D8C20
@@ -708,7 +708,7 @@ _021D8E36:
mov r0, #1
pop {r3, r4, r5, pc}
_021D8E42:
- bl ErrorHandling
+ bl GF_AssertFail
_021D8E46:
ldr r0, [r5, #8]
cmp r0, #0
@@ -849,7 +849,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x13
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -860,7 +860,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x13
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -871,7 +871,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x14
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -882,7 +882,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x15
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x4c
@@ -890,7 +890,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x12
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r3, #0
str r3, [sp]
mov r0, #0x4c
@@ -898,7 +898,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x12
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -909,7 +909,7 @@ MOD63_021D8F38: ; 0x021D8F38
ldr r2, [r4, #0xc]
mov r0, #0x80
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -920,7 +920,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #2
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x20
str r0, [sp]
@@ -929,7 +929,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
add r2, r1, #0
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -940,7 +940,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x16
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -951,7 +951,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x16
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -962,7 +962,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x48
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -973,7 +973,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r0, #0x80
mov r1, #0x49
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x4c
@@ -982,7 +982,7 @@ MOD63_021D8F38: ; 0x021D8F38
mov r1, #0x47
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #4
mov r1, #0
bl GX_EngineAToggleLayers
@@ -1227,7 +1227,7 @@ _021D9286:
ldr r0, [r4, #8]
cmp r0, #0
bne _021D9296
- bl ErrorHandling
+ bl GF_AssertFail
_021D9296:
ldr r0, [r4, #0x28]
bl FUN_0200CAB4
@@ -1565,11 +1565,11 @@ _021D950C:
asr r1, r1, #0x10
asr r2, r2, #0x10
asr r3, r3, #0x10
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
lsl r1, r4, #1
ldrh r1, [r7, r1]
add r0, r4, #0
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -1578,11 +1578,11 @@ _021D950C:
ldr r0, _021D9594 ; =0x00004210
ldr r1, _021D9598 ; =0x0000318A
mov r2, #0
- bl FUN_020B83E0
+ bl NNS_G3dGlbMaterialColorDiffAmb
ldr r0, _021D959C ; =0x00004A52
ldr r1, _021D95A0 ; =0x000039CE
mov r2, #0
- bl FUN_020B83BC
+ bl NNS_G3dGlbMaterialColorSpecEmi
mov r0, #0x1f
str r0, [sp]
mov r0, #2
@@ -1592,7 +1592,7 @@ _021D950C:
mov r0, #0xd
mov r2, #2
add r3, r1, #0
- bl FUN_020B8390
+ bl NNS_G3dGlbPolygonAttr
ldr r0, _021D95A4 ; =MOD63_021D8CB0
add r1, r5, #0
bl Main_SetVBlankIntrCB
@@ -1767,15 +1767,15 @@ _021D96C6:
beq _021D96F4
ldr r1, [sp, #0x14]
add r1, r1, r7
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r0, #0
bne _021D96F8
ldr r0, [r6, #0x2c]
bl FreeToHeap
- bl ErrorHandling
+ bl GF_AssertFail
b _021D96F8
_021D96F4:
- bl ErrorHandling
+ bl GF_AssertFail
_021D96F8:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -1794,7 +1794,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0x1c
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1805,7 +1805,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0x1a
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
ldr r0, [r5, #0x2c]
@@ -1822,7 +1822,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0x11
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1833,7 +1833,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0xf
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #1
lsl r0, r0, #8
str r0, [sp]
@@ -1843,7 +1843,7 @@ _021D96F8:
mov r1, #0x10
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1854,7 +1854,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0x1b
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1865,7 +1865,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0x19
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1876,7 +1876,7 @@ _021D96F8:
mov r0, #0x80
mov r1, #0x18
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0x10]
bl MOD63_021DA6E8
ldr r0, [r5, #0x10]
@@ -1912,18 +1912,18 @@ MOD63_021D9810: ; 0x021D9810
mov r2, #0x4c
bl AllocAndReadWholeNarcMemberByIdPair
str r0, [r5, #0x3c]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r5, #0x40]
bl FUN_0201B3C4
cmp r0, #0
bne _021D9834
- bl ErrorHandling
+ bl GF_AssertFail
_021D9834:
ldr r0, [r5, #0x40]
ldr r0, [r0, #0x14]
cmp r0, #0
bne _021D9840
- bl ErrorHandling
+ bl GF_AssertFail
_021D9840:
ldr r2, [r5, #0x40]
ldr r0, [r5, #0x3c]
@@ -1960,54 +1960,54 @@ _021D9862:
bl FUN_0201B3A8
cmp r0, #0
bne _021D9890
- bl ErrorHandling
+ bl GF_AssertFail
_021D9890:
add r0, r5, r6
add r0, #0x9c
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrb r0, [r0, #9]
cmp r0, #1
beq _021D98A4
- bl ErrorHandling
+ bl GF_AssertFail
_021D98A4:
add r0, r5, r6
add r0, #0x9c
ldr r0, [r0]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
add r4, r0, r1
bne _021D98BC
- bl ErrorHandling
+ bl GF_AssertFail
_021D98BC:
ldr r0, [sp, #0x10]
add r1, r4, #0
add r0, r0, r6
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
add r0, r4, #0
mov r1, #0
mov r2, #0x40
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
add r0, r4, #0
mov r1, #0
mov r2, #0x80
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
mov r2, #2
add r0, r4, #0
mov r1, #0
lsl r2, r2, #8
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
mov r2, #1
add r0, r4, #0
mov r1, #0
lsl r2, r2, #0xa
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
add r0, r4, #0
mov r1, #0
mov r2, #0xf
- bl FUN_020BC02C
+ bl NNSi_G3dModifyPolygonAttrMask
add r0, r7, #1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
@@ -3038,15 +3038,15 @@ MOD63_021DA158: ; 0x021DA158
beq _021DA18E
add r1, r4, #0
add r1, #0x14
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
cmp r0, #0
bne _021DA192
ldr r0, [r4, #0x14]
bl FreeToHeap
- bl ErrorHandling
+ bl GF_AssertFail
b _021DA192
_021DA18E:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA192:
add r0, r5, #0
bl NARC_dtor
@@ -3072,7 +3072,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x36
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3083,7 +3083,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x3b
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3094,7 +3094,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x38
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3105,7 +3105,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x3d
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3116,7 +3116,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x39
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3127,7 +3127,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x3e
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -3137,7 +3137,7 @@ _021DA192:
ldr r2, [r4, #0xc]
mov r0, #0x80
mov r1, #0x3a
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -3147,7 +3147,7 @@ _021DA192:
ldr r2, [r4, #0xc]
mov r0, #0x80
mov r1, #0x3f
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3158,7 +3158,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x37
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3169,7 +3169,7 @@ _021DA192:
mov r0, #0x80
mov r1, #0x3c
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0xe
mov r1, #1
bl GX_EngineAToggleLayers
diff --git a/arm9/modules/63/asm/mod63_021DA640.s b/arm9/modules/63/asm/mod63_021DA640.s
index 6095d832..5bcdfbd2 100644
--- a/arm9/modules/63/asm/mod63_021DA640.s
+++ b/arm9/modules/63/asm/mod63_021DA640.s
@@ -108,7 +108,7 @@ MOD63_021DA6E8: ; 0x021DA6E8
orr r0, r1
str r0, [r2]
bl MOD63_021DA640
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -876,7 +876,7 @@ MOD63_021DAD18: ; 0x021DAD18
add r6, r2, #0
bl FUN_02020354
mov r1, #1
- bl FUN_020B19C4
+ bl NNS_G2dGetImagePaletteLocation
add r7, r0, #0
cmp r6, #0
bne _021DAD44
diff --git a/arm9/modules/63/asm/mod63_021DAE5C.s b/arm9/modules/63/asm/mod63_021DAE5C.s
index 52b453e2..efa1a033 100644
--- a/arm9/modules/63/asm/mod63_021DAE5C.s
+++ b/arm9/modules/63/asm/mod63_021DAE5C.s
@@ -165,7 +165,7 @@ MOD63_021DAF80: ; 0x021DAF80
add r4, r1, #0
cmp r4, r0
blt _021DAF90
- bl ErrorHandling
+ bl GF_AssertFail
_021DAF90:
mov r0, #0xc
ldr r1, [r5, #4]
@@ -239,7 +239,7 @@ MOD63_021DAFEC: ; 0x021DAFEC
orr r0, r1
str r0, [r3]
bl MOD63_021DAE5C
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -603,7 +603,7 @@ _021DB2E6:
lsr r4, r1, #0x18
cmp r4, #0xa
blo _021DB2CE
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r4, pc}
thumb_func_end MOD63_021DB2C8
diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c
index 6f9e7036..84461fe1 100644
--- a/arm9/modules/63/src/mod63_021DB450.c
+++ b/arm9/modules/63/src/mod63_021DB450.c
@@ -5,8 +5,8 @@
#include "mod63_021DB450.h"
//todo resolve to static code
-extern u32 (*UNK_021064B8)(u32 param0, u32 param1, u32 param2);
-extern u32 (*UNK_021064C0)(u32 param0, u32 param1, u32 param2);
+extern u32 (*NNS_GfdDefaultFuncAllocTexVram)(u32 param0, u32 param1, u32 param2);
+extern u32 (*NNS_GfdDefaultFuncAllocPlttVram)(u32 param0, u32 param1, u32 param2);
extern void FUN_0201327C(u32 param0);
extern void FUN_020132BC(u32 param0);
@@ -29,7 +29,7 @@ extern void FUN_020072E8(struct UnkStruct63_021DB450 *);
extern void FUN_020081C4(struct UnkStruct63_021DB450 *);
extern void FUN_020222AC(void);
-extern void FUN_020B02C8(void);
+extern void NNS_G2dSetupSoftwareSpriteCamera(void);
extern u32 FUN_02006ED4(struct UnkStruct63_021DB450 *);
extern void FUN_020222B4(u32, u32);
@@ -50,7 +50,7 @@ const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3];
THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1)
{
- u32 res0 = (UNK_021064B8)(param0, param1, 0);
+ u32 res0 = (NNS_GfdDefaultFuncAllocTexVram)(param0, param1, 0);
FUN_0201327C(res0);
GF_ASSERT(res0);
return (u32)((u16)res0 * 8);
@@ -58,7 +58,7 @@ THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1)
THUMB_FUNC u32 MOD63_021DB474(u32 param0, u32 param1)
{
- u32 res0 = (UNK_021064C0)(param0, param1, 1);
+ u32 res0 = (NNS_GfdDefaultFuncAllocPlttVram)(param0, param1, 1);
GF_ASSERT(res0);
FUN_020132BC(res0);
return (u32)((u16)res0 * 8);
@@ -114,7 +114,7 @@ THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB450 *param0)
return;
}
FUN_020222AC();
- FUN_020B02C8();
+ NNS_G2dSetupSoftwareSpriteCamera();
(void)FUN_02006ED4(param0->field_00);
MOD63_021DB934();
FUN_020222B4(1, 0);
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
index 0ade6b6c..7a70bf1f 100644
--- a/arm9/modules/64/asm/module_64.s
+++ b/arm9/modules/64/asm/module_64.s
@@ -19,7 +19,7 @@ MOD64_021D74E0: ; 0x021D74E0
bl OverlayManager_CreateAndGetData
add r5, r0, #0
bne _021D7504
- bl ErrorHandling
+ bl GF_AssertFail
_021D7504:
ldr r2, _021D7630 ; =0x000006B4
add r0, r5, #0
@@ -54,7 +54,7 @@ _021D7504:
bl FUN_0201CC24
cmp r0, #1
beq _021D755E
- bl ErrorHandling
+ bl GF_AssertFail
_021D755E:
add r0, r5, #0
mov r1, #0x2f
@@ -254,7 +254,7 @@ MOD64_021D76F4: ; 0x021D76F4
bl FUN_0201CD04
cmp r0, #1
beq _021D7726
- bl ErrorHandling
+ bl GF_AssertFail
_021D7726:
mov r0, #0x65
lsl r0, r0, #4
@@ -416,7 +416,7 @@ MOD64_021D785C: ; 0x021D785C
push {r4, r5, lr}
sub sp, #0x24
add r4, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -456,7 +456,7 @@ MOD64_021D78B4: ; 0x021D78B4
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _021D7940 ; =0x04000060
ldr r1, _021D7944 ; =0xFFFFCFFD
@@ -511,11 +511,11 @@ _021D7900:
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
add sp, #4
pop {r3, r4, pc}
.align 2, 0
@@ -533,8 +533,8 @@ _021D7960: .word 0xBFFF0000
thumb_func_start MOD64_021D7964
MOD64_021D7964: ; 0x021D7964
push {r3, lr}
- bl FUN_020AEAF4
- bl FUN_020AEC60
+ bl NNS_GfdResetFrmTexVramState
+ bl NNS_GfdResetFrmPlttVramState
pop {r3, pc}
thumb_func_end MOD64_021D7964
@@ -653,14 +653,14 @@ MOD64_021D7A54: ; 0x021D7A54
add r5, r0, #0
add r0, r4, #0
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r1, r5, #0
add r1, #0x98
str r0, [r1]
add r0, r5, #0
add r0, #0x98
ldr r0, [r0]
- bl FUN_0201901C
+ bl InitWindow
mov r0, #0x13
str r0, [sp]
mov r0, #0x17
@@ -683,7 +683,7 @@ MOD64_021D7A54: ; 0x021D7A54
add r0, #0x98
ldr r0, [r0]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _021D7AE8 ; =0x000006A8
mov r1, #1
ldr r0, [r5, r0]
@@ -704,7 +704,7 @@ MOD64_021D7A54: ; 0x021D7A54
mov r2, #0
mov r3, #0x40
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r5, #0x98
mov r1, #0
mov r2, #2
@@ -741,13 +741,13 @@ MOD64_021D7B04: ; 0x021D7B04
mov r1, #2
lsl r1, r1, #8
str r0, [r5, r1]
- ldr r3, _021D7BA4 ; =UNK_021064B8
+ ldr r3, _021D7BA4 ; =NNS_GfdDefaultFuncAllocTexVram
lsl r0, r1, #6
mov r1, #0
ldr r3, [r3]
add r2, r1, #0
blx r3
- ldr r3, _021D7BA8 ; =UNK_021064C0
+ ldr r3, _021D7BA8 ; =NNS_GfdDefaultFuncAllocPlttVram
add r4, r0, #0
ldr r3, [r3]
mov r0, #0x80
@@ -808,8 +808,8 @@ _021D7B8E:
blt _021D7B8E
pop {r3, r4, r5, r6, r7, pc}
nop
-_021D7BA4: .word UNK_021064B8
-_021D7BA8: .word UNK_021064C0
+_021D7BA4: .word NNS_GfdDefaultFuncAllocTexVram
+_021D7BA8: .word NNS_GfdDefaultFuncAllocPlttVram
_021D7BAC: .word 0x7FFF0000
_021D7BB0: .word 0xFFFF0000
thumb_func_end MOD64_021D7B04
@@ -1057,9 +1057,9 @@ MOD64_021D7D7C: ; 0x021D7D7C
add r4, r0, #0
str r2, [sp]
mov r0, #0x52
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x54]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
str r0, [r4, #0x58]
ldrh r1, [r0, #0xe]
add r1, r0, r1
@@ -1067,7 +1067,7 @@ MOD64_021D7D7C: ; 0x021D7D7C
add r0, r0, r1
str r0, [r4, #0x5c]
ldr r0, [r4, #0x54]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r4, #0x60]
bl FUN_0201B3C4
ldr r0, [r4, #0x54]
@@ -1075,7 +1075,7 @@ MOD64_021D7D7C: ; 0x021D7D7C
bl FUN_0201B3A8
ldr r1, [r4, #0x5c]
add r0, r4, #0
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
add sp, #4
pop {r3, r4, pc}
thumb_func_end MOD64_021D7D7C
@@ -1091,23 +1091,23 @@ MOD64_021D7DC0: ; 0x021D7DC0
str r2, [sp]
mov r0, #0x52
add r3, r6, #0
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, #0x64]
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
str r0, [r4, #0x68]
ldr r1, [r4, #0x68]
ldr r2, [r4, #0x5c]
add r0, r5, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4, #0x6c]
ldr r1, [r4, #0x68]
ldr r2, [r4, #0x5c]
ldr r3, [r4, #0x60]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
ldr r1, [r4, #0x6c]
add r0, r4, #0
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add sp, #4
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -1128,7 +1128,7 @@ _021D7E14:
beq _021D7E28
ldr r1, [r5, #0x6c]
add r0, r4, #0
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
ldr r0, [r5, #0x64]
bl FreeToHeap
_021D7E28:
@@ -1149,7 +1149,7 @@ MOD64_021D7E34: ; 0x021D7E34
add r0, r4, #0
add r0, #0x90
ldrh r0, [r0]
- ldr r3, _021D7ECC ; =UNK_020FFA38
+ ldr r3, _021D7ECC ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1166,7 +1166,7 @@ MOD64_021D7E34: ; 0x021D7E34
add r0, r4, #0
add r0, #0x92
ldrh r0, [r0]
- ldr r3, _021D7ECC ; =UNK_020FFA38
+ ldr r3, _021D7ECC ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1183,7 +1183,7 @@ MOD64_021D7E34: ; 0x021D7E34
add r0, r4, #0
add r0, #0x94
ldrh r0, [r0]
- ldr r3, _021D7ECC ; =UNK_020FFA38
+ ldr r3, _021D7ECC ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1211,7 +1211,7 @@ _021D7EC8:
add sp, #0x48
pop {r4, pc}
.align 2, 0
-_021D7ECC: .word UNK_020FFA38
+_021D7ECC: .word FX_SinCosTable_
thumb_func_end MOD64_021D7E34
thumb_func_start MOD64_021D7ED0
@@ -1442,18 +1442,18 @@ MOD64_021D8058: ; 0x021D8058
ldr r2, _021D809C ; =0xFFFFF000
add r1, r0, #0
add r3, r0, #0
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
ldr r1, _021D80A0 ; =0x00007FFF
mov r0, #0
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
ldr r0, _021D80A0 ; =0x00007FFF
mov r2, #0
add r1, r0, #0
- bl FUN_020B83E0
+ bl NNS_G3dGlbMaterialColorDiffAmb
ldr r0, _021D80A0 ; =0x00007FFF
mov r2, #0
add r1, r0, #0
- bl FUN_020B83BC
+ bl NNS_G3dGlbMaterialColorSpecEmi
mov r0, #0x26
lsl r0, r0, #4
mov r4, #0
@@ -1634,9 +1634,9 @@ MOD64_021D81D8: ; 0x021D81D8
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
- bl FUN_020BB394
- bl FUN_020B02C8
+ bl NNS_G3dGeBufferOP_N
+ bl NNS_G3dGeFlushBuffer
+ bl NNS_G2dSetupSoftwareSpriteCamera
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
@@ -1648,11 +1648,11 @@ MOD64_021D81D8: ; 0x021D81D8
mov r0, #0x12
add r1, sp, #4
str r2, [sp, #4]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
bl FUN_0201EBA4
add r0, r4, #0
bl MOD64_021D8058
@@ -1660,7 +1660,7 @@ MOD64_021D81D8: ; 0x021D81D8
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r0, #0
add r1, r0, #0
bl FUN_020222B4
@@ -2310,7 +2310,7 @@ MOD64_021D86DC: ; 0x021D86DC
bl NewMsgDataFromNarc
add r4, r0, #0
bne _021D86F8
- bl ErrorHandling
+ bl GF_AssertFail
_021D86F8:
add r0, r4, #0
add r1, r6, #0
@@ -2318,7 +2318,7 @@ _021D86F8:
add r6, r0, #0
add r0, r5, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
ldr r0, [sp, #0x2c]
str r3, [sp]
@@ -2358,7 +2358,7 @@ MOD64_021D8744: ; 0x021D8744
str r3, [sp, #0x10]
cmp r0, #0
beq _021D875C
- bl ErrorHandling
+ bl GF_AssertFail
_021D875C:
mov r0, #0
mov r1, #0x1a
@@ -2367,7 +2367,7 @@ _021D875C:
bl NewMsgDataFromNarc
add r6, r0, #0
bne _021D8770
- bl ErrorHandling
+ bl GF_AssertFail
_021D8770:
ldr r1, [sp, #0x10]
add r0, r6, #0
@@ -2375,7 +2375,7 @@ _021D8770:
str r0, [r4]
add r0, r5, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
ldr r0, [sp, #0x2c]
str r3, [sp]
@@ -2510,7 +2510,7 @@ MOD64_021D8864: ; 0x021D8864
add r6, r2, #0
cmp r0, #0
beq _021D8876
- bl ErrorHandling
+ bl GF_AssertFail
_021D8876:
ldr r1, _021D88B8 ; =0xFFFFEAAB
ldr r2, _021D88BC ; =0xFFFFDC72
@@ -2795,7 +2795,7 @@ MOD64_021D8A90: ; 0x021D8A90
lsr r0, r0, #0x10
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _021D8ADC ; =UNK_020FFA38
+ ldr r0, _021D8ADC ; =FX_SinCosTable_
ldr r2, [r4, #4]
ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
@@ -2818,7 +2818,7 @@ MOD64_021D8A90: ; 0x021D8A90
pop {r4, pc}
nop
_021D8AD8: .word 0x0000FFFF
-_021D8ADC: .word UNK_020FFA38
+_021D8ADC: .word FX_SinCosTable_
thumb_func_end MOD64_021D8A90
thumb_func_start MOD64_021D8AE0
@@ -2828,7 +2828,7 @@ MOD64_021D8AE0: ; 0x021D8AE0
ldr r0, [r4, #0x28]
cmp r0, #0
beq _021D8AEE
- bl ErrorHandling
+ bl GF_AssertFail
_021D8AEE:
add r0, r4, #0
mov r1, #2
@@ -2920,14 +2920,14 @@ MOD64_021D8B70: ; 0x021D8B70
mov r2, #0
add r3, #0x14
str r6, [sp]
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
add r2, r5, #0
str r0, [r5, #0xc]
mov r0, #0x52
mov r1, #0xf
add r2, #0x18
add r3, r6, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [r5, #0x10]
ldr r0, _021D8C04 ; =0x0000064C
ldr r0, [r4, r0]
@@ -3016,7 +3016,7 @@ MOD64_021D8C3C: ; 0x021D8C3C
str r3, [sp]
cmp r0, #0
beq _021D8C50
- bl ErrorHandling
+ bl GF_AssertFail
_021D8C50:
ldr r4, [sp, #0x24]
add r0, r5, #0
@@ -3057,7 +3057,7 @@ MOD64_021D8C94: ; 0x021D8C94
ldr r0, [r4, #0x54]
cmp r0, #0
beq _021D8CA2
- bl ErrorHandling
+ bl GF_AssertFail
_021D8CA2:
mov r0, #1
mvn r0, r0
@@ -3240,7 +3240,7 @@ MOD64_021D8DDC: ; 0x021D8DDC
str r3, [sp]
cmp r0, #0
beq _021D8DF0
- bl ErrorHandling
+ bl GF_AssertFail
_021D8DF0:
ldr r4, [sp, #0x28]
ldr r2, [sp]
@@ -3281,7 +3281,7 @@ MOD64_021D8E34: ; 0x021D8E34
ldr r0, [r4, #0x3c]
cmp r0, #0
beq _021D8E42
- bl ErrorHandling
+ bl GF_AssertFail
_021D8E42:
mov r0, #1
mvn r0, r0
@@ -3386,21 +3386,21 @@ MOD64_021D8EF4: ; 0x021D8EF4
mov r1, #0x11
mov r2, #0
mov r3, #0xa0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r5, [sp, #0x14]
mov r4, #0
mov r6, #1
_021D8F16:
ldr r0, [sp, #0x18]
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
add r0, r5, #0
add r0, #0x9c
ldr r0, [r0]
- bl FUN_0201901C
+ bl InitWindow
cmp r4, #0
beq _021D8F3C
cmp r4, #1
@@ -3501,7 +3501,7 @@ MOD64_021D8FD0: ; 0x021D8FD0
bl NewMsgDataFromNarc
add r4, r0, #0
bne _021D8FEC
- bl ErrorHandling
+ bl GF_AssertFail
_021D8FEC:
add r0, r4, #0
add r1, r6, #0
@@ -3511,7 +3511,7 @@ _021D8FEC:
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -3567,7 +3567,7 @@ _021D905C:
ldr r0, _021D9070 ; =0x00000189
pop {r3, pc}
_021D9060:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.align 2, 0
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index 229a9214..e9e1ed78 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -335,7 +335,7 @@ _021D7762:
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
b _021D7796
_021D7784:
@@ -425,7 +425,7 @@ MOD65_021D7818: ; 0x021D7818
add r5, r0, #0
add r0, #0xc8
ldr r0, [r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
ldr r0, _021D78A4 ; =gMain
ldr r1, [r0, #0x48]
@@ -998,7 +998,7 @@ _021D7C68:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r7, r7, #1
add r4, #8
add r5, #0x10
@@ -1404,7 +1404,7 @@ _021D7FCA:
add r0, r5, r0
mov r1, #0xff
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #1
bl FUN_02002B60
mov r0, #0
@@ -1542,7 +1542,7 @@ MOD65_021D80C8: ; 0x021D80C8
strb r0, [r5, #0x1c]
ldrb r0, [r5, #0x1c]
ldr r1, [r5]
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0xcc
str r0, [r1]
@@ -1585,7 +1585,7 @@ _021D80EE:
ldrb r2, [r6, #5]
ldr r0, [r0]
ldr r1, [r5, #0x34]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
cmp r4, #0xff
bne _021D80EE
_021D8142:
@@ -1594,7 +1594,7 @@ _021D8142:
ldr r0, [r0]
ldr r1, [r5, #0x38]
mov r2, #0xff
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r1, r5, #0
ldr r0, _021D8210 ; =0x021DA2E0
add r1, #0x84
@@ -1684,7 +1684,7 @@ _021D81C0:
ldrh r2, [r2]
add r0, #0x84
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
add r1, r5, #0
add r1, #0xc4
str r0, [r1]
@@ -1711,7 +1711,7 @@ MOD65_021D8214: ; 0x021D8214
add r0, #0xe8
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r4, #0
beq _021D823E
add r0, r5, #0
@@ -1725,11 +1725,11 @@ _021D823E:
ldr r0, [r0]
add r1, #0x80
add r2, #0x82
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r5, #0
add r0, #0xcc
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0
add r0, #0x80
ldrh r1, [r0]
@@ -1792,7 +1792,7 @@ _021D82A2:
mov r1, #1
mov r2, #2
mov r3, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
b _021D8392
_021D82D2:
mov r0, #0x1e
@@ -1812,7 +1812,7 @@ _021D82D2:
mov r1, #0
mov r2, #4
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #1
strh r0, [r4, #0x14]
b _021D8392
@@ -1834,7 +1834,7 @@ _021D8302:
mov r1, #1
mov r2, #2
mov r3, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #0
strh r0, [r4, #0x14]
b _021D8392
@@ -1856,7 +1856,7 @@ _021D8330:
mov r1, #0
mov r2, #2
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #1
strh r0, [r4, #0x14]
b _021D8392
@@ -1881,7 +1881,7 @@ _021D835E:
mov r1, #0
mov r2, #2
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #0
strh r0, [r4, #0x14]
_021D8392:
@@ -1953,7 +1953,7 @@ _021D83D2:
mov r1, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldrb r1, [r4, #0x1b]
cmp r1, #5
bne _021D8434
@@ -2057,11 +2057,11 @@ _021D84E0: .word 0x00000001
thumb_func_start MOD65_021D84E4
MOD65_021D84E4: ; 0x021D84E4
- ldr r3, _021D84EC ; =FUN_02001470
+ ldr r3, _021D84EC ; =ListMenuGetTemplateField
mov r1, #0x13
bx r3
nop
-_021D84EC: .word FUN_02001470
+_021D84EC: .word ListMenuGetTemplateField
thumb_func_end MOD65_021D84E4
thumb_func_start MOD65_021D84F0
@@ -2072,7 +2072,7 @@ MOD65_021D84F0: ; 0x021D84F0
mov r1, #0x13
add r7, r0, #0
add r6, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
cmp r6, #0
bne _021D850C
@@ -2083,7 +2083,7 @@ _021D850C:
add r0, r7, #0
add r1, #2
add r2, sp, #0x10
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r2, sp, #0x10
ldrh r2, [r2]
mov r0, #7
@@ -2140,7 +2140,7 @@ _021D8578:
add r0, #0xf8
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
cmp r5, #0xff
bne _021D85B4
add r0, r4, #0
@@ -2223,7 +2223,7 @@ MOD65_021D8634: ; 0x021D8634
add r5, r0, #0
ldr r1, [r5]
mov r0, #3
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
add r1, r5, #0
add r1, #0xd0
str r0, [r1]
@@ -2235,7 +2235,7 @@ _021D8648:
ldr r1, [r5, #0x2c]
add r2, r4, #1
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -2276,7 +2276,7 @@ _021D8648:
add r0, #0xa4
add r2, r1, #0
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
add r5, #0xc8
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -2304,11 +2304,11 @@ MOD65_021D86BC: ; 0x021D86BC
ldr r0, [r0]
add r1, sp, #0
add r2, #2
- bl FUN_02001300
+ bl DestroyListMenu
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0
mov r1, #0
add r0, #0xc8
@@ -3269,7 +3269,7 @@ MOD65_021D8E68: ; 0x021D8E68
add r0, r4, #0
add r0, #0x6c
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x10]
mov r1, #1
ldrb r0, [r0, #0xb]
@@ -3842,7 +3842,7 @@ MOD65_021D92C4: ; 0x021D92C4
add r0, r4, #0
add r0, #0x6c
mov r1, #0xff
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x20]
bl StringSetEmpty
mov r0, #1
@@ -5301,7 +5301,7 @@ MOD65_021D9E98: ; 0x021D9E98
mov r2, #0x1c
add r5, r0, #0
bl MI_CpuFill8
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_Init
bl G3X_InitMtxStack
ldr r0, _021D9F34 ; =0x04000060
@@ -5388,8 +5388,8 @@ MOD65_021D9F50: ; 0x021D9F50
mov r0, #2
str r0, [r2]
str r3, [r1]
- bl FUN_020B849C
- bl FUN_020B02C8
+ bl NNS_G3dGlbFlushP
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r4, #4]
bl FUN_02006ED4
ldr r0, _021D9F88 ; =0x04000540
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index e0b21bf2..c902cd22 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -138,7 +138,7 @@ MOD66_021D75C8: ; 0x021D75C8
beq _021D75DE
blx r1
_021D75DE:
- bl FUN_020AEEB8
+ bl NNS_GfdDoVramTransfer
add r0, r4, #0
bl MOD66_021D9220
ldr r0, [r4, #0x28]
@@ -1350,7 +1350,7 @@ _021D7F44:
bl FUN_0200D6F8
add r0, r7, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -1720,7 +1720,7 @@ MOD66_021D820C: ; 0x021D820C
bl StringSetEmpty
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, #0xa0
ldr r0, [r6]
cmp r0, #0
@@ -1801,7 +1801,7 @@ MOD66_021D82B8: ; 0x021D82B8
bne _021D82DC
add r0, r6, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0
bl CopyWindowToVram
add r0, r6, #0
@@ -1811,7 +1811,7 @@ MOD66_021D82B8: ; 0x021D82B8
_021D82DC:
add r0, r6, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrh r1, [r4, #8]
ldr r0, _021D8378 ; =0x0000FFFF
cmp r1, r0
@@ -2044,7 +2044,7 @@ MOD66_021D8494: ; 0x021D8494
cmp r5, #0
beq _021D84C6
add r0, r5, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl FUN_02019570
ldrb r1, [r4, #0x15]
@@ -2104,7 +2104,7 @@ MOD66_021D84C8: ; 0x021D84C8
sub r4, r1, r0
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -2212,23 +2212,23 @@ MOD66_021D8554: ; 0x021D8554
add r0, r4, #0
add r0, #0x28
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x38
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x48
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x58
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x68
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x28
bl CopyWindowToVram
@@ -4094,7 +4094,7 @@ MOD66_021D94A4: ; 0x021D94A4
bl FS_OpenFile
cmp r0, #0
bne _021D94C8
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x4c
mov r0, #0
pop {r4, r5, r6, r7, pc}
@@ -4105,7 +4105,7 @@ _021D94C8:
bl FS_ReadFile
cmp r0, #0
bge _021D94DA
- bl ErrorHandling
+ bl GF_AssertFail
_021D94DA:
add r0, r4, #0
mov r1, #8
diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s
index 4982fa30..60bd02b5 100644
--- a/arm9/modules/67/asm/module_67.s
+++ b/arm9/modules/67/asm/module_67.s
@@ -327,7 +327,7 @@ MOD67_021D777C: ; 0x021D777C
bl FUN_020178A0
mov r0, #0x2a
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.align 2, 0
thumb_func_end MOD67_021D777C
@@ -351,7 +351,7 @@ MOD67_021D77B0: ; 0x021D77B0
ldr r2, [r4]
mov r0, #0x50
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -361,7 +361,7 @@ MOD67_021D77B0: ; 0x021D77B0
ldr r2, [r4]
mov r0, #0x50
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x2a
@@ -369,7 +369,7 @@ MOD67_021D77B0: ; 0x021D77B0
mov r0, #0x50
mov r1, #4
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
b _021D7844
_021D7802:
mov r0, #0
@@ -382,7 +382,7 @@ _021D7802:
mov r0, #0x50
mov r1, #3
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -393,7 +393,7 @@ _021D7802:
mov r0, #0x50
mov r1, #1
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x2a
@@ -401,7 +401,7 @@ _021D7802:
mov r0, #0x50
mov r1, #5
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
_021D7844:
ldr r0, [r4]
mov r1, #2
@@ -1122,10 +1122,10 @@ _021D7DAC:
_021D7DB4:
add r0, r6, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r1, r6, #0
add r2, r4, #0
diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s
index 5c2c1740..b2170444 100644
--- a/arm9/modules/68/asm/module_68.s
+++ b/arm9/modules/68/asm/module_68.s
@@ -320,7 +320,7 @@ MOD68_021D7774: ; 0x021D7774
bl FUN_020178A0
mov r0, #0x24
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.align 2, 0
thumb_func_end MOD68_021D7774
@@ -340,7 +340,7 @@ MOD68_021D77A4: ; 0x021D77A4
ldr r2, [r5]
mov r0, #0x35
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -350,7 +350,7 @@ MOD68_021D77A4: ; 0x021D77A4
ldr r2, [r5]
mov r0, #0x35
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -361,7 +361,7 @@ MOD68_021D77A4: ; 0x021D77A4
mov r0, #0x35
mov r1, #1
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x24
@@ -369,7 +369,7 @@ MOD68_021D77A4: ; 0x021D77A4
mov r0, #0x35
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x24
mov r1, #0x80
bl AllocFromHeap
@@ -527,7 +527,7 @@ MOD68_021D7904: ; 0x021D7904
bl FUN_02002E14
add r7, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r3, r0, #0
mov r1, #0
lsl r3, r3, #3
@@ -555,7 +555,7 @@ MOD68_021D7958: ; 0x021D7958
add r4, r0, #0
add r0, r4, #4
mov r1, #4
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
ldr r3, _021D7974 ; =0x00010204
add r0, r4, #0
@@ -572,7 +572,7 @@ MOD68_021D7978: ; 0x021D7978
add r4, r0, #0
add r0, #0x24
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r3, _021D7994 ; =0x000F0200
add r0, r4, #0
mov r1, #2
@@ -589,7 +589,7 @@ MOD68_021D7998: ; 0x021D7998
add r4, r0, #0
add r0, #0x34
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r3, _021D79B4 ; =0x000F0200
add r0, r4, #0
mov r1, #3
@@ -606,7 +606,7 @@ MOD68_021D79B8: ; 0x021D79B8
add r4, r0, #0
add r0, #0x44
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r3, _021D79D4 ; =0x000F0200
add r0, r4, #0
mov r1, #4
@@ -623,7 +623,7 @@ MOD68_021D79D8: ; 0x021D79D8
add r4, r0, #0
add r0, #0x54
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r3, _021D79F4 ; =0x000F0200
add r0, r4, #0
mov r1, #5
@@ -640,7 +640,7 @@ MOD68_021D79F8: ; 0x021D79F8
add r4, r0, #0
add r0, #0x64
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r3, _021D7A14 ; =0x000F0200
add r0, r4, #0
mov r1, #6
@@ -660,7 +660,7 @@ MOD68_021D7A18: ; 0x021D7A18
add r4, #0x14
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #5
str r0, [sp]
add r0, r5, #0
@@ -752,7 +752,7 @@ MOD68_021D7AE4: ; 0x021D7AE4
add r5, #0xb4
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -790,7 +790,7 @@ MOD68_021D7B34: ; 0x021D7B34
add r5, #0x94
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, #0xc4
ldr r0, [r4]
mov r1, #0xa
@@ -826,7 +826,7 @@ MOD68_021D7B80: ; 0x021D7B80
add r5, #0xa4
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x7f
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -871,7 +871,7 @@ MOD68_021D7BDC: ; 0x021D7BDC
add r5, #0x74
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, #0xc4
ldr r0, [r4]
mov r1, #8
@@ -907,7 +907,7 @@ MOD68_021D7C28: ; 0x021D7C28
add r6, #0x84
add r0, r6, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x7f
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -1286,7 +1286,7 @@ MOD68_021D7EEC: ; 0x021D7EEC
str r0, [sp, #0xc]
ldr r2, [r4]
mov r0, #0x35
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x7e
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -1300,7 +1300,7 @@ MOD68_021D7EEC: ; 0x021D7EEC
mov r0, #0x35
mov r2, #0
mov r3, #0x60
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 33fafb4f..58d0b4f8 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -533,7 +533,7 @@ _0222DA0E:
ldr r2, [r4, #0x10]
mov r0, #0x69
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -686,7 +686,7 @@ MOD69_0222DB2C: ; 0x0222DB2C
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, _0222DB98 ; =0x00001B38
ldr r0, [r4, r0]
bl MOD69_0222F11C
@@ -694,11 +694,11 @@ MOD69_0222DB2C: ; 0x0222DB2C
mov r0, #0x12
add r1, sp, #4
str r2, [sp, #4]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, _0222DB9C ; =0x00001B3C
ldr r0, [r4, r0]
bl MOD69_0222F63C
@@ -706,7 +706,7 @@ MOD69_0222DB2C: ; 0x0222DB2C
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, _0222DBA0 ; =0x04000540
mov r1, #1
str r1, [r0]
@@ -793,7 +793,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
add r0, r4, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
bl FUN_02019548
@@ -811,7 +811,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
ldr r2, [r4, #0x10]
mov r0, #0x69
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -822,7 +822,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
ldr r2, [r4, #0x10]
mov r0, #0x69
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x60
str r0, [sp]
mov r0, #0x3f
@@ -831,7 +831,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
mov r0, #0x69
mov r1, #4
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -843,7 +843,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
ldr r2, [r4, #0x10]
mov r0, #0x69
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4, #0x10]
mov r1, #1
bl FUN_02017CD0
@@ -921,7 +921,7 @@ MOD69_0222DD54: ; 0x0222DD54
push {r3, r4, lr}
sub sp, #4
add r4, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _0222DDE4 ; =0x04000060
ldr r2, _0222DDE8 ; =0xFFFFCFFD
@@ -957,11 +957,11 @@ MOD69_0222DD54: ; 0x0222DD54
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -1071,7 +1071,7 @@ MOD69_0222DE98: ; 0x0222DE98
push {r3, r4, lr}
sub sp, #0x1c
add r4, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -1095,7 +1095,7 @@ MOD69_0222DE98: ; 0x0222DE98
mov r1, #0x29
mov r2, #0
add r3, sp, #0x18
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
mov r1, #0x5b
lsl r1, r1, #2
str r0, [r4, r1]
@@ -1105,7 +1105,7 @@ MOD69_0222DE98: ; 0x0222DE98
mov r1, #0x2a
mov r2, #0
add r3, sp, #0x14
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
mov r1, #0x17
lsl r1, r1, #4
str r0, [r4, r1]
@@ -1156,13 +1156,13 @@ MOD69_0222DF0C: ; 0x0222DF0C
str r0, [sp]
mov r0, #0x1b
add r3, sp, #0x44
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0x28]
mov r0, #0x1b
mov r1, #0x27
add r2, sp, #0x40
mov r3, #0x3f
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [sp, #0x24]
mov r0, #0
str r0, [sp, #0x20]
@@ -1193,19 +1193,19 @@ _0222DF72:
str r0, [sp, #0x34]
_0222DF98:
add r0, sp, #0x5c
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, sp, #0x48
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
ldr r0, [sp, #0x44]
add r1, r7, #0
mov r2, #1
add r3, sp, #0x5c
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
ldr r0, [sp, #0x40]
add r1, r6, #0
mov r2, #1
add r3, sp, #0x48
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
ldr r0, [sp, #0x20]
add r0, r0, #1
str r0, [sp, #0x94]
@@ -1303,7 +1303,7 @@ _0222DF98:
ldrh r1, [r1, #4]
mov r2, #1
add r3, r6, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x81
lsl r1, r1, #2
ldr r1, [r5, r1]
@@ -1333,20 +1333,20 @@ _0222DF98:
b _0222DF98
_0222E0D4:
add r0, sp, #0x5c
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, sp, #0x48
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r1, #0x96
ldr r0, [sp, #0x44]
lsl r1, r1, #8
mov r2, #1
add r3, sp, #0x5c
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
ldr r0, [sp, #0x40]
mov r1, #0xc0
mov r2, #1
add r3, sp, #0x48
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
ldr r0, [sp, #0x14]
ldr r0, [r0, #0xc]
ldr r0, [r0]
@@ -1398,7 +1398,7 @@ _0222E10E:
ldrh r1, [r1, #4]
mov r2, #1
mov r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp, #0x94]
add r0, sp, #0x80
@@ -2169,7 +2169,7 @@ _0222E77E:
str r0, [r3]
add r0, r4, #0
add r0, #0x48
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0x19
add r0, r4, #0
lsl r3, r3, #8
@@ -2179,7 +2179,7 @@ _0222E77E:
add r0, #0x48
mov r1, #1
add r2, r2, r3
- bl FUN_020B1A1C
+ bl NNS_G2dSetImageLocation
ldr r0, _0222E7BC ; =MOD69_0222E7C0
add r1, r4, #0
mov r2, #0
@@ -2608,7 +2608,7 @@ _0222EAEA:
_0222EB16:
ldr r0, [r4, #0x10]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x10]
bl FUN_02019548
ldr r0, [r4, #0x28]
@@ -3795,10 +3795,10 @@ _0222F408:
mov r1, #1
bl G3B_LightVector
ldrh r0, [r4, #0x28]
- ldr r3, _0222F62C ; =UNK_020FFA38
+ ldr r3, _0222F62C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _0222F62C ; =UNK_020FFA38
+ ldr r0, _0222F62C ; =FX_SinCosTable_
add r2, r0, r1
ldrsh r1, [r3, r1]
mov r3, #2
@@ -3810,10 +3810,10 @@ _0222F408:
add r1, r5, #0
bl MTX_Concat44
ldrh r0, [r4, #0x2a]
- ldr r3, _0222F62C ; =UNK_020FFA38
+ ldr r3, _0222F62C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _0222F62C ; =UNK_020FFA38
+ ldr r0, _0222F62C ; =FX_SinCosTable_
add r2, r0, r1
ldrsh r1, [r3, r1]
mov r3, #2
@@ -3825,10 +3825,10 @@ _0222F408:
add r1, r5, #0
bl MTX_Concat44
ldrh r0, [r4, #0x2c]
- ldr r3, _0222F62C ; =UNK_020FFA38
+ ldr r3, _0222F62C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r1, r0, #2
- ldr r0, _0222F62C ; =UNK_020FFA38
+ ldr r0, _0222F62C ; =FX_SinCosTable_
add r2, r0, r1
ldrsh r1, [r3, r1]
mov r3, #2
@@ -3935,7 +3935,7 @@ _0222F5E2:
lsl r0, r0, #0xa
cmp r1, r0
blo _0222F608
- bl ErrorHandling
+ bl GF_AssertFail
_0222F608:
mov r0, #1
str r0, [r7, #4]
@@ -3950,7 +3950,7 @@ _0222F61C: .word 0x0000019A
_0222F620: .word 0x00002D6B
_0222F624: .word 0x00000FFF
_0222F628: .word 0xFFFFF001
-_0222F62C: .word UNK_020FFA38
+_0222F62C: .word FX_SinCosTable_
_0222F630: .word 0x00007FFF
_0222F634: .word 0x00008D1C
_0222F638: .word 0x0000151C
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s
index a0966fec..9db294af 100644
--- a/arm9/modules/70/asm/module_70.s
+++ b/arm9/modules/70/asm/module_70.s
@@ -407,7 +407,7 @@ MOD70_021D77CC: ; 0x021D77CC
mov r0, #0x3d
bl FUN_02016B94
str r0, [r4, #0x10]
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -831,7 +831,7 @@ MOD70_021D7AF4: ; 0x021D7AF4
ldr r2, [r5, #0x10]
mov r0, #0x65
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -842,7 +842,7 @@ MOD70_021D7AF4: ; 0x021D7AF4
ldr r2, [r5, #0x10]
mov r0, #0x65
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x40
str r0, [sp]
mov r0, #0x3d
@@ -851,7 +851,7 @@ MOD70_021D7AF4: ; 0x021D7AF4
mov r0, #0x65
mov r1, #2
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r2, #0
str r2, [sp]
mov r1, #1
@@ -1022,11 +1022,11 @@ MOD70_021D7CC0: ; 0x021D7CC0
add r4, r0, #0
add r0, #0x14
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x24
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
bl FUN_02019548
@@ -1102,7 +1102,7 @@ MOD70_021D7CE8: ; 0x021D7CE8
bl StringExpandPlaceholders
add r0, r6, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r2, #0xff
@@ -1136,7 +1136,7 @@ MOD70_021D7D98: ; 0x021D7D98
add r0, #0x24
mov r1, #0xf
str r0, [sp, #0xc]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x1c]
cmp r0, #0
beq _021D7DC8
@@ -1357,7 +1357,7 @@ MOD70_021D7F70: ; 0x021D7F70
mov r1, #0x29
mov r2, #0
add r3, sp, #8
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
mov r1, #0x5e
lsl r1, r1, #2
str r0, [r4, r1]
@@ -1367,7 +1367,7 @@ MOD70_021D7F70: ; 0x021D7F70
mov r1, #0x2a
mov r2, #0
add r3, sp, #4
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r4, r1]
@@ -1448,13 +1448,13 @@ MOD70_021D7FF8: ; 0x021D7FF8
add r2, r3, #0
mov r0, #0x1b
add r3, sp, #0x14
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0xc]
mov r0, #0x1b
mov r1, #0x27
add r2, sp, #0x10
mov r3, #0x3d
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
mov r4, #0
ldr r6, _021D80C4 ; =0x021D82AC
str r0, [sp, #8]
@@ -1462,19 +1462,19 @@ MOD70_021D7FF8: ; 0x021D7FF8
add r7, r4, #0
_021D8050:
add r0, sp, #0x2c
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, sp, #0x18
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
ldr r0, [sp, #0x14]
add r1, r4, #0
mov r2, #1
add r3, sp, #0x2c
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
ldr r0, [sp, #0x10]
add r1, r7, #0
mov r2, #1
add r3, sp, #0x18
- bl FUN_020B1240
+ bl NNS_G2dLoadPalette
ldr r0, [r6]
lsl r0, r0, #0xc
str r0, [sp, #0x58]
@@ -1605,7 +1605,7 @@ _021D80F4:
ldrh r1, [r1, #4]
ldr r3, [sp, #0x14]
mov r2, #1
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
cmp r4, r0
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index ac2559a6..303bee40 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -756,7 +756,7 @@ _0222DC0C:
mov r0, #0x13
mov r2, #0
add r3, r6, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
mov r1, #0x79
lsl r1, r1, #4
str r0, [r5, r1]
@@ -964,7 +964,7 @@ _0222DDD8:
lsr r5, r0, #0x10
cmp r5, #0x3c
blo _0222DDF8
- bl ErrorHandling
+ bl GF_AssertFail
_0222DDF8:
bl FUN_02031190
mov r1, #0x1f
@@ -1161,7 +1161,7 @@ _0222DF74:
b _0222E0E8
_0222DF80:
ldr r0, [r4, #4]
- bl FUN_02029EF8
+ bl Sav2_Chatot_get
bl MOD71_0222F528
ldr r0, [r4, #0x4c]
add r0, r0, #1
@@ -1750,7 +1750,7 @@ MOD71_0222E438: ; 0x0222E438
lsl r1, r1, #2
ldr r1, [r4, r1]
mov r0, #0x1a
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -1821,7 +1821,7 @@ MOD71_0222E4DC: ; 0x0222E4DC
ldrh r1, [r2, r1]
mov r2, #5
lsl r3, r3, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, _0222E548 ; =0x00002110
mov r1, #0
str r1, [r5, r0]
@@ -2220,11 +2220,11 @@ MOD71_0222E884: ; 0x0222E884
str r2, [sp]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r6, r0, #0
beq _0222E8D6
add r1, sp, #4
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
cmp r0, #0
beq _0222E8D0
ldr r0, [sp, #0x1c]
@@ -2291,7 +2291,7 @@ MOD71_0222E900: ; 0x0222E900
mov r0, #0x36
mov r2, #4
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0
mov r0, #0x12
lsl r0, r0, #4
@@ -2301,7 +2301,7 @@ MOD71_0222E900: ; 0x0222E900
mov r0, #0x36
add r2, r1, #0
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
add r1, r0, #0
bl FUN_02017FE4
@@ -2325,7 +2325,7 @@ MOD71_0222E900: ; 0x0222E900
mov r0, #0x36
add r2, r4, #0
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2353,7 +2353,7 @@ MOD71_0222E900: ; 0x0222E900
mov r1, #4
add r2, r4, #0
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
mov r1, #0x40
mov r2, #0x1a
@@ -2375,7 +2375,7 @@ MOD71_0222E900: ; 0x0222E900
mov r1, #2
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2389,7 +2389,7 @@ MOD71_0222E900: ; 0x0222E900
mov r0, #0x36
add r2, r4, #0
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2403,7 +2403,7 @@ MOD71_0222E900: ; 0x0222E900
mov r0, #0x36
add r2, r4, #0
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #4
mov r1, #0x40
mov r2, #0x1a
@@ -2449,7 +2449,7 @@ MOD71_0222EA68: ; 0x0222EA68
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7f
@@ -2628,7 +2628,7 @@ _0222EAA6:
mov r0, #0x13
mov r2, #1
add r3, #0xc0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD71_0222EA68
@@ -2700,7 +2700,7 @@ MOD71_0222EC5C: ; 0x0222EC5C
bl GetMonData
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x20]
ldr r2, [sp, #8]
str r0, [sp]
@@ -2910,7 +2910,7 @@ _0222EE14:
str r0, [sp, #0x30]
add r0, r6, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2985,7 +2985,7 @@ _0222EEA6:
lsr r7, r0, #0x10
add r0, r6, r4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x14
mov r1, #0x1a
bl String_ctor
@@ -3446,7 +3446,7 @@ MOD71_0222F264: ; 0x0222F264
cmp r0, r1
bne _0222F2AE
ldr r0, [r4, #4]
- bl FUN_02029EF8
+ bl Sav2_Chatot_get
mov r1, #0
mov r2, #0x64
add r3, r1, #0
@@ -3551,7 +3551,7 @@ MOD71_0222F350: ; 0x0222F350
add r4, r2, #0
cmp r5, #0xd
blt _0222F362
- bl ErrorHandling
+ bl GF_AssertFail
_0222F362:
ldr r1, _0222F3C8 ; =0x02231220
lsl r0, r5, #3
@@ -4313,7 +4313,7 @@ MOD71_0222F954: ; 0x0222F954
mov r0, #0xda
lsl r0, r0, #6
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
mov r0, #1
mvn r0, r0
@@ -4383,10 +4383,10 @@ _0222F9E4:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _0222FA34 ; =0x0000367C
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0
pop {r4, r5, r6, pc}
.align 2, 0
@@ -4412,7 +4412,7 @@ MOD71_0222FA38: ; 0x0222FA38
str r0, [sp]
add r0, r0, #1
mov r1, #0x1a
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _0222FAD0 ; =0x0000367C
str r0, [r5, r1]
mov r0, #0x64
@@ -4438,7 +4438,7 @@ _0222FA60:
add r1, r6, #0
ldr r0, [r5, r0]
add r2, r4, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
_0222FA8A:
add r4, r4, #1
cmp r4, #0x20
@@ -4450,7 +4450,7 @@ _0222FA8A:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0xd
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #0
bl String_dtor
ldr r2, _0222FAD0 ; =0x0000367C
@@ -4909,7 +4909,7 @@ MOD71_0222FDD8: ; 0x0222FDD8
bl MOD71_02230F40
mov r0, #3
mov r1, #0x1a
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _0222FED8 ; =0x0000065C
mov r2, #0x11
str r0, [r4, r1]
@@ -4918,7 +4918,7 @@ MOD71_0222FDD8: ; 0x0222FDD8
lsl r1, r1, #2
ldr r1, [r4, r1]
mov r3, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _0222FED8 ; =0x0000065C
mov r1, #0x61
lsl r1, r1, #2
@@ -4926,7 +4926,7 @@ MOD71_0222FDD8: ; 0x0222FDD8
ldr r1, [r4, r1]
mov r2, #0x12
mov r3, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _0222FED8 ; =0x0000065C
mov r1, #0x61
lsl r1, r1, #2
@@ -4934,7 +4934,7 @@ MOD71_0222FDD8: ; 0x0222FDD8
ldr r1, [r4, r1]
mov r2, #0x13
mov r3, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _0222FED8 ; =0x0000065C
ldr r1, [r4, r0]
str r1, [sp, #0x10]
@@ -5024,7 +5024,7 @@ _0222FF10:
bl FUN_02001C5C
ldr r0, _0223000C ; =0x0000065C
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r1, _02230010 ; =MOD71_0222F538
ldr r0, _02230014 ; =0x00002214
add sp, #0x10
@@ -5063,7 +5063,7 @@ _0222FF64:
bl FUN_02001C5C
ldr r0, _0223000C ; =0x0000065C
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r1, _0223001C ; =MOD71_02230020
ldr r0, _02230014 ; =0x00002214
str r1, [r4, r0]
@@ -5100,7 +5100,7 @@ _0222FFB4:
bl FUN_02001C5C
ldr r0, _0223000C ; =0x0000065C
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r1, _02230010 ; =MOD71_0222F538
ldr r0, _02230014 ; =0x00002214
str r1, [r4, r0]
@@ -6155,7 +6155,7 @@ MOD71_02230810: ; 0x02230810
bl MOD71_02230F40
mov r0, #2
mov r1, #0x1a
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02230900 ; =0x0000065C
mov r2, #0x11
str r0, [r4, r1]
@@ -6164,7 +6164,7 @@ MOD71_02230810: ; 0x02230810
lsl r1, r1, #2
ldr r1, [r4, r1]
mov r3, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02230900 ; =0x0000065C
mov r1, #0x61
lsl r1, r1, #2
@@ -6172,7 +6172,7 @@ MOD71_02230810: ; 0x02230810
ldr r1, [r4, r1]
mov r2, #0x13
mov r3, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02230900 ; =0x0000065C
ldr r1, [r4, r0]
sub r0, #0x94
@@ -6259,7 +6259,7 @@ _0223092E:
bl FUN_02001C5C
ldr r0, _022309E4 ; =0x0000065C
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add sp, #0x10
mov r0, #3
pop {r4, pc}
@@ -6295,7 +6295,7 @@ _02230982:
bl FUN_02001C5C
ldr r0, _022309E4 ; =0x0000065C
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r1, _022309DC ; =MOD71_0222F538
ldr r0, _022309E0 ; =0x00002214
str r1, [r4, r0]
@@ -6379,8 +6379,8 @@ _02230A40:
cmp r0, #0
bne _02230A98
ldr r0, [r5, #0x10]
- bl FUN_02029EF8
- bl FUN_02029F08
+ bl Sav2_Chatot_get
+ bl Chatot_invalidate
_02230A98:
ldr r0, [r5, #0x10]
add r1, r4, #0
@@ -6627,7 +6627,7 @@ MOD71_02230C48: ; 0x02230C48
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #1
add r1, r5, #0
str r2, [sp]
@@ -6646,7 +6646,7 @@ MOD71_02230C48: ; 0x02230C48
add r0, r5, #0
add r0, #0x10
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x15
str r0, [sp]
mov r0, #5
@@ -6666,7 +6666,7 @@ MOD71_02230C48: ; 0x02230C48
add r0, r5, #0
add r0, #0x60
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
bl Options_GetFrame
lsl r0, r0, #0x18
@@ -6706,7 +6706,7 @@ MOD71_02230C48: ; 0x02230C48
lsl r0, r0, #4
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x13
str r0, [sp]
mov r0, #0xe
@@ -6728,7 +6728,7 @@ MOD71_02230C48: ; 0x02230C48
lsl r0, r0, #4
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -6750,7 +6750,7 @@ MOD71_02230C48: ; 0x02230C48
lsl r0, r0, #4
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x11
str r0, [sp]
mov r0, #0xb
@@ -6771,7 +6771,7 @@ MOD71_02230C48: ; 0x02230C48
lsl r0, r0, #6
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x13
str r0, [sp]
mov r0, #0xb
@@ -6792,7 +6792,7 @@ MOD71_02230C48: ; 0x02230C48
lsl r0, r0, #4
add r0, r5, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r4, _02230E80 ; =0x022313F4
mov r7, #0
mov r6, #0x33
@@ -6824,7 +6824,7 @@ _02230DE2:
ldr r0, [sp, #0x18]
mov r1, #0
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r7, r7, #1
add r6, #0x10
add r4, r4, #4
@@ -6861,7 +6861,7 @@ _02230E2C:
bl FUN_02019064
add r0, r5, r7
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r4, #0xa
cmp r6, #8
@@ -6995,7 +6995,7 @@ _02230F6A:
_02230F76:
add r0, r5, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
ldr r0, _02230FAC ; =0x0001020F
@@ -7127,7 +7127,7 @@ MOD71_02231018: ; 0x02231018
mov r3, #0x1a
str r5, [sp, #0x14]
str r4, [sp, #0x20]
- bl FUN_020010A8
+ bl ListMenuInit
add sp, #0x34
pop {r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
index d5105d7e..7d9850cc 100644
--- a/arm9/modules/73/asm/module_73.s
+++ b/arm9/modules/73/asm/module_73.s
@@ -661,7 +661,7 @@ MOD73_021D79E8: ; 0x021D79E8
bl MOD73_021D90D0
cmp r0, #0
bne _021D7A3C
- bl ErrorHandling
+ bl GF_AssertFail
_021D7A3C:
ldr r0, [r4, #0xc]
pop {r4, pc}
@@ -869,7 +869,7 @@ _021D7BC6:
bl MOD73_021D90D0
cmp r0, #0
bne _021D7C0C
- bl ErrorHandling
+ bl GF_AssertFail
_021D7C0C:
add r0, r6, #0
bl FreeToHeap
@@ -902,14 +902,14 @@ _021D7C1A:
bl MOD73_021D90D0
cmp r0, #0
bne _021D7C54
- bl ErrorHandling
+ bl GF_AssertFail
_021D7C54:
ldr r0, [r4, #0xc]
add sp, #0xc
add r0, r0, #1
pop {r3, r4, r5, r6, pc}
_021D7C5C:
- bl ErrorHandling
+ bl GF_AssertFail
_021D7C60:
ldr r0, [r4, #0xc]
add sp, #0xc
@@ -1204,7 +1204,7 @@ _021D7EA8:
bl MOD73_021D90D0
cmp r0, #0
bne _021D7ECE
- bl ErrorHandling
+ bl GF_AssertFail
_021D7ECE:
ldr r0, [r4, #0xc]
add sp, #0xc
@@ -1255,14 +1255,14 @@ _021D7F0C:
bl MOD73_021D90D0
cmp r0, #0
bne _021D7F32
- bl ErrorHandling
+ bl GF_AssertFail
_021D7F32:
ldr r0, [r4, #0xc]
add sp, #0xc
add r0, r0, #1
pop {r3, r4, r5, r6, pc}
_021D7F3A:
- bl ErrorHandling
+ bl GF_AssertFail
_021D7F3E:
ldr r0, [r4, #0xc]
add sp, #0xc
@@ -2019,7 +2019,7 @@ MOD73_021D856C: ; 0x021D856C
ldr r0, [r4, r0]
cmp r0, #0
bne _021D857C
- bl ErrorHandling
+ bl GF_AssertFail
_021D857C:
ldr r0, _021D858C ; =0x0000152C
ldr r0, [r4, r0]
@@ -2366,9 +2366,9 @@ MOD73_021D8858: ; 0x021D8858
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
- bl FUN_020BB394
- bl FUN_020B02C8
+ bl NNS_G3dGeBufferOP_N
+ bl NNS_G3dGeFlushBuffer
+ bl NNS_G2dSetupSoftwareSpriteCamera
mov r0, #0xaf
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2380,7 +2380,7 @@ _021D8882:
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r0, #0
add r1, r0, #0
bl FUN_020222B4
@@ -2595,7 +2595,7 @@ MOD73_021D8A18: ; 0x021D8A18
push {r4, r5, lr}
sub sp, #0x24
add r4, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -2754,7 +2754,7 @@ _021D8B3A:
MOD73_021D8B4C: ; 0x021D8B4C
push {r3, r4, lr}
sub sp, #4
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _021D8BB8 ; =0x04000060
ldr r2, _021D8BBC ; =0xFFFFCFFD
@@ -2793,11 +2793,11 @@ MOD73_021D8B4C: ; 0x021D8B4C
str r0, [r2]
str r1, [r2, #0x40]
mov r1, #1
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #2
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
add sp, #4
pop {r3, r4, pc}
nop
@@ -2812,8 +2812,8 @@ _021D8BCC: .word 0xBFFF0000
thumb_func_start MOD73_021D8BD0
MOD73_021D8BD0: ; 0x021D8BD0
push {r3, lr}
- bl FUN_020AEAF4
- bl FUN_020AEC60
+ bl NNS_GfdResetFrmTexVramState
+ bl NNS_GfdResetFrmPlttVramState
pop {r3, pc}
thumb_func_end MOD73_021D8BD0
@@ -3622,7 +3622,7 @@ _021D91F2:
_021D91FA:
cmp r4, #0
bne _021D9202
- bl ErrorHandling
+ bl GF_AssertFail
_021D9202:
mov r0, #0x1a
lsl r0, r0, #4
@@ -3636,11 +3636,11 @@ _021D9202:
blx r0
cmp r0, r5
beq _021D921E
- bl ErrorHandling
+ bl GF_AssertFail
_021D921E:
cmp r5, #0x26
blt _021D9226
- bl ErrorHandling
+ bl GF_AssertFail
_021D9226:
sub r7, #0x16
str r7, [r4, #4]
@@ -3681,7 +3681,7 @@ MOD73_021D9258: ; 0x021D9258
mov r0, #0x7a
mov r2, #0
add r3, sp, #4
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
add r4, r0, #0
ldr r0, [sp, #4]
str r5, [sp, #8]
@@ -3705,7 +3705,7 @@ MOD73_021D9288: ; 0x021D9288
add r3, r2, #0
mov r0, #0x7a
add r2, sp, #0
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r4, r0, #0
ldr r0, [sp]
str r5, [sp, #4]
@@ -3865,7 +3865,7 @@ MOD73_021D9340: ; 0x021D9340
bl FUN_02009B78
cmp r0, #0
bne _021D93D0
- bl ErrorHandling
+ bl GF_AssertFail
_021D93D0:
ldr r0, [r4]
bl FUN_02009474
@@ -3873,7 +3873,7 @@ _021D93D0:
bl FUN_02009D68
cmp r0, #0
bne _021D93E4
- bl ErrorHandling
+ bl GF_AssertFail
_021D93E4:
ldr r0, [r4, #4]
bl FUN_02009474
@@ -3969,7 +3969,7 @@ MOD73_021D942C: ; 0x021D942C
bl FUN_02009B78
cmp r0, #0
bne _021D94AA
- bl ErrorHandling
+ bl GF_AssertFail
_021D94AA:
ldr r0, [r4]
bl FUN_02009474
@@ -4072,7 +4072,7 @@ MOD73_021D9540: ; 0x021D9540
bl FUN_0201FF84
add r4, r0, #0
bne _021D956E
- bl ErrorHandling
+ bl GF_AssertFail
_021D956E:
add r0, r4, #0
add sp, #0x20
@@ -4274,7 +4274,7 @@ MOD73_021D96C8: ; 0x021D96C8
ldr r0, [r4]
cmp r0, #0
beq _021D96D6
- bl ErrorHandling
+ bl GF_AssertFail
_021D96D6:
mov r2, #0x1f
add r0, r4, #0
@@ -4389,7 +4389,7 @@ MOD73_021D97A4: ; 0x021D97A4
str r1, [sp]
cmp r0, #1
beq _021D97B4
- bl ErrorHandling
+ bl GF_AssertFail
_021D97B4:
mov r0, #0x42
lsl r0, r0, #2
@@ -4430,7 +4430,7 @@ MOD73_021D97F0: ; 0x021D97F0
ldr r0, [r0, #4]
cmp r0, #0
beq _021D9800
- bl ErrorHandling
+ bl GF_AssertFail
_021D9800:
mov r0, #0
str r0, [sp, #0xc]
@@ -4668,7 +4668,7 @@ _021D99BE:
str r1, [r4, r0]
b _021D99E4
_021D99E0:
- bl ErrorHandling
+ bl GF_AssertFail
_021D99E4:
ldr r0, [sp]
add r4, r4, #4
@@ -4735,7 +4735,7 @@ MOD73_021D9A4C: ; 0x021D9A4C
ldr r0, [r4, #0x30]
cmp r0, #0
beq _021D9A5A
- bl ErrorHandling
+ bl GF_AssertFail
_021D9A5A:
add r0, r4, #0
mov r1, #0
@@ -4754,7 +4754,7 @@ MOD73_021D9A68: ; 0x021D9A68
add r6, r2, #0
cmp r0, #0
beq _021D9A7A
- bl ErrorHandling
+ bl GF_AssertFail
_021D9A7A:
add r0, r5, #0
add r1, r6, #0
@@ -4776,7 +4776,7 @@ MOD73_021D9A94: ; 0x021D9A94
ldr r0, [r4, #0x30]
cmp r0, #1
beq _021D9AA2
- bl ErrorHandling
+ bl GF_AssertFail
_021D9AA2:
add r0, r4, #0
bl MOD73_021D9C7C
@@ -4805,7 +4805,7 @@ MOD73_021D9AC8: ; 0x021D9AC8
add r4, r0, #0
ldr r0, [r4, #8]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r4, #0x18]
mov r2, #0
ldr r0, [r4, #8]
@@ -4947,11 +4947,11 @@ MOD73_021D9BE0: ; 0x021D9BE0
add r5, r0, #0
add r0, r4, #0
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #8]
add r0, r4, #0
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r5, #0xc]
mov r0, #0x13
str r0, [sp]
@@ -4984,10 +4984,10 @@ MOD73_021D9BE0: ; 0x021D9BE0
bl FUN_02019064
ldr r0, [r5, #8]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0xc]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r5, #0x10]
mov r1, #4
lsl r0, r0, #0x18
@@ -5042,7 +5042,7 @@ MOD73_021D9CA0: ; 0x021D9CA0
mov r1, #1
mov r2, #4
str r4, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -5051,7 +5051,7 @@ MOD73_021D9CA0: ; 0x021D9CA0
ldr r2, [r5, #4]
mov r0, #0x7a
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5, #0x14]
cmp r0, #1
bne _021D9CD6
@@ -5065,7 +5065,7 @@ _021D9CD8:
mov r0, #0x7a
mov r2, #0
add r3, #0x24
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r5, #0x20]
ldr r2, [r5, #0x24]
mov r3, #0
@@ -5104,7 +5104,7 @@ _021D9CD8:
mov r1, #4
mov r2, #0
add r3, #0x2c
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
str r0, [r5, #0x28]
ldr r0, [r5, #4]
mov r1, #5
@@ -5172,7 +5172,7 @@ MOD73_021D9DA0: ; 0x021D9DA0
ldr r0, [r4]
cmp r0, #0
beq _021D9DAE
- bl ErrorHandling
+ bl GF_AssertFail
_021D9DAE:
mov r0, #0
strb r0, [r4]
@@ -5229,7 +5229,7 @@ MOD73_021D9E08: ; 0x021D9E08
ldr r0, [r4]
cmp r0, #1
beq _021D9E16
- bl ErrorHandling
+ bl GF_AssertFail
_021D9E16:
ldr r0, [r4, #8]
bl FUN_0201FFC8
@@ -5309,7 +5309,7 @@ MOD73_021D9E8C: ; 0x021D9E8C
ldr r0, [r4, #0x74]
cmp r0, #0
beq _021D9E9A
- bl ErrorHandling
+ bl GF_AssertFail
_021D9E9A:
add r0, r4, #0
mov r1, #0
@@ -5329,7 +5329,7 @@ MOD73_021D9EA8: ; 0x021D9EA8
str r1, [sp, #0xc]
cmp r0, #0
beq _021D9EBC
- bl ErrorHandling
+ bl GF_AssertFail
_021D9EBC:
ldr r4, _021D9F5C ; =0x021DBDE4
ldr r5, [sp, #8]
@@ -5425,7 +5425,7 @@ MOD73_021D9F74: ; 0x021D9F74
ldr r0, [r6, #0x74]
cmp r0, #1
beq _021D9F82
- bl ErrorHandling
+ bl GF_AssertFail
_021D9F82:
mov r4, #0
add r5, r6, #0
@@ -5468,7 +5468,7 @@ MOD73_021D9FC0: ; 0x021D9FC0
add r6, r2, #0
cmp r4, #8
blo _021D9FD0
- bl ErrorHandling
+ bl GF_AssertFail
_021D9FD0:
lsl r0, r4, #2
add r0, r5, r0
@@ -5525,7 +5525,7 @@ MOD73_021DA01C: ; 0x021DA01C
add r6, r2, #0
cmp r4, #8
blo _021DA02C
- bl ErrorHandling
+ bl GF_AssertFail
_021DA02C:
lsl r0, r4, #2
add r0, r5, r0
@@ -5616,7 +5616,7 @@ _021DA0B2:
str r0, [r5, #0x6c]
pop {r3, r4, r5, r6, r7, pc}
_021DA0CE:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA0D2:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -5649,7 +5649,7 @@ MOD73_021DA0FC: ; 0x021DA0FC
ldr r0, [r4]
cmp r0, #0
beq _021DA10A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA10A:
add r0, r4, #0
mov r1, #0
@@ -5826,7 +5826,7 @@ MOD73_021DA234: ; 0x021DA234
ldr r0, [r4, #0x28]
cmp r0, #0
beq _021DA242
- bl ErrorHandling
+ bl GF_AssertFail
_021DA242:
add r0, r4, #0
bl MOD73_021DA4AC
@@ -5846,7 +5846,7 @@ MOD73_021DA254: ; 0x021DA254
add r6, r2, #0
cmp r0, #0
beq _021DA266
- bl ErrorHandling
+ bl GF_AssertFail
_021DA266:
add r0, r5, #0
add r1, r6, #0
@@ -5874,7 +5874,7 @@ MOD73_021DA290: ; 0x021DA290
ldr r0, [r4, #0x28]
cmp r0, #1
beq _021DA29E
- bl ErrorHandling
+ bl GF_AssertFail
_021DA29E:
add r0, r4, #0
bl MOD73_021DA354
@@ -5924,7 +5924,7 @@ MOD73_021DA2AC: ; 0x021DA2AC
_021DA2FA:
ldr r0, [sp, #0x14]
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r4, #8]
ldrh r0, [r5, #2]
mov r2, #2
@@ -5953,7 +5953,7 @@ _021DA2FA:
bl FUN_02019064
ldr r0, [r4, #8]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r4, r4, #4
add r5, #0xc
@@ -5997,7 +5997,7 @@ MOD73_021DA374: ; 0x021DA374
mov r2, #0
mov r3, #0x80
str r5, [sp, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6007,13 +6007,13 @@ MOD73_021DA374: ; 0x021DA374
mov r0, #0x7a
mov r1, #5
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
str r5, [sp]
mov r0, #0x7a
mov r1, #7
mov r2, #0
add r3, sp, #0x10
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
ldr r2, [sp, #0x10]
mov r3, #0
str r3, [sp]
@@ -6088,7 +6088,7 @@ MOD73_021DA434: ; 0x021DA434
add r4, r1, #0
cmp r0, #0
beq _021DA446
- bl ErrorHandling
+ bl GF_AssertFail
_021DA446:
mov r2, #1
ldr r0, _021DA494 ; =MOD73_021DA408
@@ -6099,7 +6099,7 @@ _021DA446:
mov r1, #0
str r1, [r5, #0x30]
ldr r0, [r5, #8]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
ldr r0, _021DA498 ; =0x0001020F
@@ -6173,7 +6173,7 @@ MOD73_021DA4D4: ; 0x021DA4D4
bl FUN_02018744
ldr r0, [r4, #0xc]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
ldr r0, _021DA54C ; =0x0001020F
@@ -6192,7 +6192,7 @@ MOD73_021DA4D4: ; 0x021DA4D4
bl FUN_0200CCA4
ldr r0, [r4, #0x10]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
ldr r0, _021DA54C ; =0x0001020F
@@ -6494,7 +6494,7 @@ MOD73_021DA770: ; 0x021DA770
ldr r0, [r4, #0x14]
add r6, r1, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r6, #6
bhi _021DA7EC
add r0, r6, r6
@@ -6597,7 +6597,7 @@ MOD73_021DA82C: ; 0x021DA82C
ldr r0, [r4]
cmp r0, #0
beq _021DA83A
- bl ErrorHandling
+ bl GF_AssertFail
_021DA83A:
ldr r2, _021DA848 ; =0x00000414
add r0, r4, #0
@@ -6709,7 +6709,7 @@ MOD73_021DA8BC: ; 0x021DA8BC
str r0, [sp, #0x60]
cmp r0, #0
bne _021DA900
- bl ErrorHandling
+ bl GF_AssertFail
_021DA900:
ldr r0, [sp, #0x60]
bl MOD73_021DAB30
@@ -6738,7 +6738,7 @@ _021DA906:
str r0, [sp, #0x6c]
asr r0, r0, #0x1f
lsl r3, r2, #1
- ldr r1, _021DAAA0 ; =UNK_020FFA38
+ ldr r1, _021DAAA0 ; =FX_SinCosTable_
str r0, [sp, #0x70]
ldr r0, [sp, #0xa8]
ldrsh r6, [r1, r3]
@@ -6904,7 +6904,7 @@ _021DA906:
pop {r3, r4, r5, r6, r7, pc}
nop
_021DAA9C: .word MOD73_021DBE7C
-_021DAAA0: .word UNK_020FFA38
+_021DAAA0: .word FX_SinCosTable_
_021DAAA4: .word 0x0000019A
thumb_func_end MOD73_021DA8BC
@@ -7001,7 +7001,7 @@ MOD73_021DAB30: ; 0x021DAB30
ldr r0, [r4, #0x78]
cmp r0, #0
bne _021DAB3E
- bl ErrorHandling
+ bl GF_AssertFail
_021DAB3E:
ldr r0, [r4, #0x78]
bl FUN_0201FFC8
@@ -7130,7 +7130,7 @@ _021DABFC:
lsl r4, r0, #1
add r0, r4, #1
lsl r1, r0, #1
- ldr r0, _021DAC98 ; =UNK_020FFA38
+ ldr r0, _021DAC98 ; =FX_SinCosTable_
add r2, r6, #0
ldrsh r0, [r0, r1]
add r3, r7, #0
@@ -7146,7 +7146,7 @@ _021DABFC:
lsr r0, r0, #0xc
orr r0, r1
str r0, [sp]
- ldr r0, _021DAC98 ; =UNK_020FFA38
+ ldr r0, _021DAC98 ; =FX_SinCosTable_
lsl r1, r4, #1
ldrsh r0, [r0, r1]
add r2, r6, #0
@@ -7177,7 +7177,7 @@ _021DAC94:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
-_021DAC98: .word UNK_020FFA38
+_021DAC98: .word FX_SinCosTable_
thumb_func_end MOD73_021DABD0
thumb_func_start MOD73_021DAC9C
@@ -7236,7 +7236,7 @@ MOD73_021DAC9C: ; 0x021DAC9C
str r0, [r5, #0x78]
cmp r0, #0
bne _021DAD14
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD14:
ldr r0, [r5, #0xc]
cmp r0, #0
@@ -7307,7 +7307,7 @@ MOD73_021DAD84: ; 0x021DAD84
ldr r0, [r4, #0x7c]
cmp r0, #0
beq _021DAD92
- bl ErrorHandling
+ bl GF_AssertFail
_021DAD92:
add r0, r4, #0
mov r1, #0
@@ -7327,7 +7327,7 @@ MOD73_021DADA0: ; 0x021DADA0
str r2, [sp, #0x18]
cmp r0, #0
beq _021DADB4
- bl ErrorHandling
+ bl GF_AssertFail
_021DADB4:
str r7, [r6]
mov r0, #2
@@ -7391,7 +7391,7 @@ MOD73_021DAE24: ; 0x021DAE24
ldr r0, [r6, #0x7c]
cmp r0, #1
beq _021DAE32
- bl ErrorHandling
+ bl GF_AssertFail
_021DAE32:
mov r4, #0
add r5, r6, #0
@@ -7444,7 +7444,7 @@ MOD73_021DAE7C: ; 0x021DAE7C
add r4, r0, #0
cmp r5, #4
blt _021DAE8A
- bl ErrorHandling
+ bl GF_AssertFail
_021DAE8A:
cmp r5, #2
beq _021DAE92
@@ -7472,7 +7472,7 @@ MOD73_021DAEAC: ; 0x021DAEAC
add r4, r0, #0
cmp r5, #4
blt _021DAEBA
- bl ErrorHandling
+ bl GF_AssertFail
_021DAEBA:
lsl r0, r5, #4
mov r1, #0
@@ -7491,7 +7491,7 @@ MOD73_021DAECC: ; 0x021DAECC
add r4, r0, #0
cmp r5, #4
blt _021DAEDA
- bl ErrorHandling
+ bl GF_AssertFail
_021DAEDA:
lsl r0, r5, #4
add r0, r4, r0
@@ -7609,7 +7609,7 @@ MOD73_021DAF88: ; 0x021DAF88
ldr r0, [r4]
cmp r0, #0
beq _021DAF96
- bl ErrorHandling
+ bl GF_AssertFail
_021DAF96:
ldr r2, _021DAFA4 ; =0x0000090C
add r0, r4, #0
@@ -7706,7 +7706,7 @@ MOD73_021DB020: ; 0x021DB020
asr r0, r0, #4
lsl r1, r0, #1
add r0, r1, #1
- ldr r7, _021DB124 ; =UNK_020FFA38
+ ldr r7, _021DB124 ; =FX_SinCosTable_
lsl r0, r0, #1
ldrsh r3, [r7, r0]
asr r6, r3, #0x1f
@@ -7819,7 +7819,7 @@ _021DB112:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
-_021DB124: .word UNK_020FFA38
+_021DB124: .word FX_SinCosTable_
_021DB128: .word 0x00000000
thumb_func_end MOD73_021DB020
@@ -8442,7 +8442,7 @@ MOD73_021DB56C: ; 0x021DB56C
add r4, r0, #0
cmp r5, #3
blt _021DB57A
- bl ErrorHandling
+ bl GF_AssertFail
_021DB57A:
str r5, [r4]
mov r0, #0
diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s
index 1fce128e..651527c1 100644
--- a/arm9/modules/74/asm/module_74.s
+++ b/arm9/modules/74/asm/module_74.s
@@ -341,7 +341,7 @@ MOD74_021D7784: ; 0x021D7784
push {r4, lr}
add r4, r0, #0
bl MOD74_021D82E8
- bl FUN_020AEEB8
+ bl NNS_GfdDoVramTransfer
ldr r0, [r4, #0x10]
bl FUN_0201AB60
ldr r3, _021D77A4 ; =0x027E0000
@@ -771,7 +771,7 @@ _021D7A9A:
bl FUN_02019150
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r7, r7, #1
add r4, #8
add r5, #0x10
@@ -790,7 +790,7 @@ _021D7AC0:
bl FUN_02019150
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r7, r7, #1
add r4, #8
add r5, #0x10
@@ -1343,7 +1343,7 @@ MOD74_021D7F44: ; 0x021D7F44
mov r1, #0
add r5, r2, #0
add r4, r3, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r4, #8
blo _021D7F8C
mov r0, #2
@@ -1637,7 +1637,7 @@ MOD74_021D818C: ; 0x021D818C
add r0, r4, #0
add r0, #0x8c
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #4
str r0, [sp]
mov r1, #0
@@ -1664,7 +1664,7 @@ MOD74_021D81E0: ; 0x021D81E0
add r4, r0, #0
add r0, #0x8c
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x8c
bl FUN_02019570
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index 1a9861c9..3500c458 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -759,7 +759,7 @@ MOD75_021E71BC: ; 0x021E71BC
bl FUN_020178A0
mov r0, #6
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.align 2, 0
thumb_func_end MOD75_021E71BC
@@ -785,7 +785,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #7
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -796,7 +796,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0xa
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -807,7 +807,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #9
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #6
@@ -815,7 +815,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #8
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r0, #6
@@ -824,7 +824,7 @@ MOD75_021E7214: ; 0x021E7214
mov r1, #0x12
mov r2, #0
lsl r3, r0, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x16
mov r0, #0
lsl r1, r1, #4
@@ -862,7 +862,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0xb
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0
str r3, [sp]
mov r0, #6
@@ -870,7 +870,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0xc
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -881,7 +881,7 @@ MOD75_021E7214: ; 0x021E7214
ldr r2, [r4]
add r1, r0, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -892,7 +892,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0x25
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -903,7 +903,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0x24
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -914,7 +914,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0xf
mov r3, #4
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0x40
str r3, [sp]
mov r0, #6
@@ -922,7 +922,7 @@ MOD75_021E7214: ; 0x021E7214
mov r0, #0xd
mov r1, #0xe
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -1233,7 +1233,7 @@ MOD75_021E7580: ; 0x021E7580
ldrb r0, [r0, r1]
mov r1, #6
add r0, r0, #3
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r1, #0x16
lsl r1, r1, #4
str r0, [r5, r1]
@@ -1243,7 +1243,7 @@ MOD75_021E7580: ; 0x021E7580
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x23
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldrb r3, [r4, #8]
cmp r3, #3
bne _021E764A
@@ -1280,7 +1280,7 @@ _021E75CE:
ldr r0, [r5, r0]
ldr r1, [r7, r1]
add r2, r6, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
ldr r0, [sp]
ldrb r1, [r4, #8]
add r0, r0, #4
@@ -1300,7 +1300,7 @@ _021E761A:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x22
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
mov r1, #0x16
lsl r1, r1, #4
ldr r0, [r5, r1]
@@ -1309,7 +1309,7 @@ _021E761A:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x23
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #3
add sp, #8
strb r0, [r4, #9]
@@ -1348,7 +1348,7 @@ _021E7658:
ldr r0, [r5, r0]
ldr r1, [r7, r1]
add r2, r6, #0
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
ldr r0, [sp, #4]
ldrb r3, [r4, #8]
add r0, r0, #4
@@ -1377,7 +1377,7 @@ _021E76A4:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x22
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _021E76E0
_021E76CC:
mov r1, #0x16
@@ -1388,7 +1388,7 @@ _021E76CC:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x2b
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_021E76E0:
mov r1, #0x16
lsl r1, r1, #4
@@ -1398,7 +1398,7 @@ _021E76E0:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x23
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #3
add sp, #8
strb r0, [r4, #9]
@@ -1412,7 +1412,7 @@ _021E76FC:
add r3, r2, #0
ldr r1, [r5, r1]
sub r3, #0x23
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #2
strb r0, [r4, #9]
add sp, #8
@@ -1606,7 +1606,7 @@ _021E784E:
add r1, r3, #0
add r0, sp, #0
mov r3, #6
- bl FUN_020010A8
+ bl ListMenuInit
mov r1, #0x57
lsl r1, r1, #2
str r0, [r4, r1]
@@ -1624,7 +1624,7 @@ MOD75_021E7870: ; 0x021E7870
add r7, r1, #0
mov r1, #0x13
add r4, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r5, r0, #0
cmp r4, #1
beq _021E78F8
@@ -1693,7 +1693,7 @@ _021E78F8:
add r0, r5, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #1
mvn r1, r1
cmp r7, r1
@@ -1751,7 +1751,7 @@ MOD75_021E797C: ; 0x021E797C
mov r1, #0x13
str r0, [sp]
add r7, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
add r0, #0xc4
ldr r0, [r0]
@@ -1773,14 +1773,14 @@ MOD75_021E797C: ; 0x021E797C
mov r1, #8
mov r2, #0
mov r3, #9
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
b _021E79C6
_021E79BA:
ldr r0, [sp]
mov r1, #1
mov r2, #0
mov r3, #2
- bl FUN_020013E8
+ bl ListMenuOverrideSetColors
_021E79C6:
ldrb r0, [r6, #8]
cmp r0, #7
@@ -1911,11 +1911,11 @@ MOD75_021E7AA4: ; 0x021E7AA4
add r3, #8
add r1, r1, r2
add r2, r3, r2
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #0x57
mov r1, #0
lsl r0, r0, #2
@@ -1959,7 +1959,7 @@ _021E7B12:
add r0, r4, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
bl FUN_02019570
@@ -2019,7 +2019,7 @@ MOD75_021E7B7C: ; 0x021E7B7C
ldr r0, [r5, r0]
add r1, r4, #6
add r2, r4, #4
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
ldr r0, _021E7CD8 ; =gMain
ldr r1, [r0, #0x48]
mov r0, #4
@@ -2038,7 +2038,7 @@ _021E7BC0:
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
mov r0, #0x57
lsl r0, r0, #2
@@ -2046,7 +2046,7 @@ _021E7BC0:
ldr r0, [r5, r0]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, sp, #0
ldrh r2, [r0]
ldrh r0, [r4, #4]
@@ -2085,7 +2085,7 @@ _021E7BFC:
lsl r1, r1, #0x10
ldr r0, [r5, r0]
lsr r1, r1, #0x10
- bl FUN_02001464
+ bl ListMenuGetValueByArrayId
add r6, r0, #0
mov r0, #0x49
mov r1, #1
@@ -2102,7 +2102,7 @@ _021E7C38:
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_0200145C
+ bl ListMenuGetUnk33
cmp r0, #1
bne _021E7C5E
add r0, r5, #0
@@ -2396,11 +2396,11 @@ MOD75_021E7E60: ; 0x021E7E60
bl MOD75_021E7AA4
add r0, r4, #4
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #4
bl FUN_02019220
add r0, r4, #0
@@ -2830,11 +2830,11 @@ _021E81D2:
add r3, #8
add r1, r1, r2
add r2, r3, r2
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
_021E8206:
add r0, r5, #0
add r0, #0xc4
@@ -3643,7 +3643,7 @@ MOD75_021E8808: ; 0x021E8808
add r1, r2, r1
lsl r1, r1, #0x10
lsr r1, r1, #0x10
- bl FUN_02001464
+ bl ListMenuGetValueByArrayId
mov r1, #1
mvn r1, r1
cmp r0, r1
@@ -3701,7 +3701,7 @@ MOD75_021E8864: ; 0x021E8864
lsl r0, r0, #2
ldrb r1, [r4, r1]
ldr r0, [r4, r0]
- bl FUN_02001464
+ bl ListMenuGetValueByArrayId
ldr r1, _021E88B8 ; =0x0000047C
str r0, [r4, r1]
add r0, r4, #0
@@ -3709,7 +3709,7 @@ MOD75_021E8864: ; 0x021E8864
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02001328
+ bl RedrawListMenu
add r0, r4, #0
bl MOD75_021E8AAC
pop {r4, pc}
@@ -3744,7 +3744,7 @@ _021E88D0:
ldr r0, [r5, r0]
add r1, r4, #6
add r2, r4, #4
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, r5, #0
bl MOD75_021E87B8
cmp r0, #1
@@ -3776,7 +3776,7 @@ _021E892E:
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
mov r0, #0x57
lsl r0, r0, #2
@@ -3784,7 +3784,7 @@ _021E892E:
ldr r0, [r5, r0]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
add r0, sp, #0
ldrh r2, [r0]
ldrh r0, [r4, #4]
@@ -3816,7 +3816,7 @@ _021E896A:
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_0200145C
+ bl ListMenuGetUnk33
cmp r0, #1
bne _021E899A
add r0, r5, #0
@@ -3900,7 +3900,7 @@ MOD75_021E89F0: ; 0x021E89F0
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0
bl MOD75_021E7580
_021E8A3C:
@@ -3928,7 +3928,7 @@ MOD75_021E8A48: ; 0x021E8A48
ldr r0, [r5, r0]
add r1, r4, #6
add r2, r4, #4
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x57
mov r1, #0
lsl r0, r0, #2
@@ -4455,7 +4455,7 @@ MOD75_021E8E1C: ; 0x021E8E1C
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
ldr r2, _021E8EA8 ; =0x000003D9
add r0, #0x64
@@ -4567,7 +4567,7 @@ _021E8F3A:
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
ldr r2, _021E8FB8 ; =0x000003D9
add r0, #0x64
@@ -4686,7 +4686,7 @@ _021E9046:
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
ldr r2, _021E91A8 ; =0x000003D9
add r0, #0x64
@@ -4726,7 +4726,7 @@ _021E908E:
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x46
mov r1, #0xfe
lsl r0, r0, #2
@@ -5022,11 +5022,11 @@ MOD75_021E92BC: ; 0x021E92BC
add r3, #8
add r1, r1, r2
add r2, r3, r2
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r4, #0
bl MOD75_021E7580
add r0, r4, #0
@@ -5102,7 +5102,7 @@ MOD75_021E9394: ; 0x021E9394
_021E93AA:
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
ldr r2, _021E942C ; =0x000003D9
add r0, #0x64
@@ -5473,7 +5473,7 @@ _021E967A:
add r0, r5, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl MOD75_021EB660
ldr r1, _021E9718 ; =0x00000426
@@ -5608,7 +5608,7 @@ MOD75_021E97A8: ; 0x021E97A8
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02001328
+ bl RedrawListMenu
add r0, r4, #0
bl MOD75_021EB344
add r0, r4, #0
@@ -5633,7 +5633,7 @@ MOD75_021E97E4: ; 0x021E97E4
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02001328
+ bl RedrawListMenu
add r0, r4, #0
bl MOD75_021EB344
add r0, r4, #0
@@ -5711,7 +5711,7 @@ _021E9872:
add r0, r5, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
ldr r2, _021E9928 ; =0x000003D9
add r0, #0x64
@@ -5864,7 +5864,7 @@ _021E99C6:
add r0, r5, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
ldr r2, _021E9B3C ; =0x000003D9
add r0, #0x64
@@ -6100,7 +6100,7 @@ _021E9BAC:
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -6195,7 +6195,7 @@ _021E9C80:
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -6405,7 +6405,7 @@ _021E9E2A:
add r0, r5, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl MOD75_021EB660
ldr r1, _021E9EDC ; =0x00000426
@@ -6654,7 +6654,7 @@ _021EA016:
add r0, r4, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
ldr r2, _021EA0C4 ; =0x000003D9
add r0, #0x64
@@ -7055,7 +7055,7 @@ MOD75_021EA328: ; 0x021EA328
ldrh r3, [r3]
ldr r0, [r4, r0]
mov r1, #0
- bl FUN_02001354
+ bl ListMenuTestInputInternal
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
@@ -7207,7 +7207,7 @@ MOD75_021EA444: ; 0x021EA444
ldrh r3, [r3]
ldr r0, [r4, r0]
mov r1, #0
- bl FUN_02001354
+ bl ListMenuTestInputInternal
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
@@ -7755,7 +7755,7 @@ MOD75_021EA8BC: ; 0x021EA8BC
add r4, r0, #0
add r0, #0x24
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r2, r4, #0
add r2, #0xc4
ldr r6, [r2]
@@ -7834,7 +7834,7 @@ MOD75_021EA950: ; 0x021EA950
bl NARC_AllocAndReadWholeMember
add r1, r5, #0
add r4, r0, #0
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end MOD75_021EA950
@@ -7898,13 +7898,13 @@ _021EA9A8:
ldr r1, [r1, #0x14]
add r0, #0x54
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add r5, #0x54
add r0, r5, #0
bl FUN_02019220
mov r0, #6
add r1, r7, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -7922,7 +7922,7 @@ MOD75_021EA9F8: ; 0x021EA9F8
add r0, r5, #0
add r0, #0x54
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _021EAAA0 ; =0x00000424
mov r4, #0
ldrb r0, [r5, r0]
@@ -7979,7 +7979,7 @@ _021EAA4C:
add r0, r6, #0
ldr r1, [r1, #0x14]
mov r3, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -7993,7 +7993,7 @@ _021EAA8C:
bl FUN_02019220
ldr r1, [sp, #0x18]
mov r0, #6
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -8587,7 +8587,7 @@ MOD75_021EAF54: ; 0x021EAF54
bl NARC_AllocAndReadWholeMember
add r1, r5, #0
add r4, r0, #0
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
add r0, r4, #0
pop {r3, r4, r5, pc}
thumb_func_end MOD75_021EAF54
@@ -8617,10 +8617,10 @@ MOD75_021EAF70: ; 0x021EAF70
add r0, r5, #4
ldr r1, [r1, #0x14]
mov r2, #0x28
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r0, #6
add r1, r6, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD75_021EAF70
@@ -8646,7 +8646,7 @@ MOD75_021EAFB0: ; 0x021EAFB0
add r0, r5, #4
add r2, r1, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
str r4, [sp]
mov r0, #0xff
@@ -8692,10 +8692,10 @@ MOD75_021EB004: ; 0x021EB004
add r0, r5, #4
ldr r1, [r1, #0x14]
add r3, r2, #0
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
mov r0, #6
add r1, r6, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -8881,7 +8881,7 @@ _021EB180:
_021EB1B0:
add r0, r7, #0
mov r1, #6
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r1, #0x55
lsl r1, r1, #2
mov r4, #0
@@ -8901,7 +8901,7 @@ _021EB1C4:
lsl r1, r1, #2
ldr r0, [r5, r0]
ldr r1, [r3, r1]
- bl ListMenu_AddItem
+ bl ListMenuItems_AddItem
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -8971,7 +8971,7 @@ _021EB22E:
add r0, r5, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r1, r5, #0
add r1, #0xc4
ldr r1, [r1]
@@ -9001,7 +9001,7 @@ _021EB298:
bl FUN_0200D0BC
add r0, r4, r6
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9112,14 +9112,14 @@ _021EB37A:
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
add r0, r5, #0
add r0, #0xb4
bl FUN_02019178
add r0, r5, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r1, r5, #0
add r1, #0xc4
ldr r1, [r1]
@@ -9144,7 +9144,7 @@ MOD75_021EB3D8: ; 0x021EB3D8
add r5, r0, #0
add r0, #0x14
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9214,7 +9214,7 @@ MOD75_021EB454: ; 0x021EB454
add r0, r5, #0
add r0, #0x34
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9280,7 +9280,7 @@ MOD75_021EB504: ; 0x021EB504
add r4, #0x94
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9365,7 +9365,7 @@ MOD75_021EB5B0: ; 0x021EB5B0
add r0, r5, #0
add r0, #0x64
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9543,7 +9543,7 @@ MOD75_021EB708: ; 0x021EB708
_021EB722:
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9654,7 +9654,7 @@ MOD75_021EB808: ; 0x021EB808
bne _021EB854
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021EB8E4 ; =0x000003F7
add r0, r4, #0
mov r1, #1
@@ -9686,7 +9686,7 @@ _021EB854:
mov r1, #0xf
mov r2, #0
str r3, [sp, #4]
- bl FUN_020196F4
+ bl FillWindowPixelRect
_021EB866:
mov r0, #0x45
lsl r0, r0, #2
@@ -9755,7 +9755,7 @@ MOD75_021EB8E8: ; 0x021EB8E8
add r4, #0xa4
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r2, _021EB9B0 ; =0x000003F7
add r0, r4, #0
mov r1, #1
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index 13ddf00c..fc6dc5bd 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -382,7 +382,7 @@ MOD76_021D77E4: ; 0x021D77E4
bl FUN_020178A0
mov r0, #0x43
add r1, r4, #0
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
pop {r4, pc}
.align 2, 0
thumb_func_end MOD76_021D77E4
@@ -402,7 +402,7 @@ MOD76_021D7814: ; 0x021D7814
mov r0, #0x71
mov r1, #0xa
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -413,7 +413,7 @@ MOD76_021D7814: ; 0x021D7814
mov r0, #0x71
mov r1, #0xb
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x43
@@ -421,7 +421,7 @@ MOD76_021D7814: ; 0x021D7814
mov r0, #0x71
mov r1, #0xc
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #7
mov r0, #0
lsl r1, r1, #6
@@ -467,7 +467,7 @@ _021D78A8:
bl FUN_02019150
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r6, r6, #1
add r4, #8
add r5, #0x10
@@ -478,7 +478,7 @@ _021D78A8:
add r0, r7, #0
add r0, #0xc8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r7, #0xc8
add r0, r7, #0
mov r1, #0
@@ -596,11 +596,11 @@ _021D799C:
ldr r0, [r5, r0]
add r1, #2
add r2, sp, #0
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
mov r0, #0x41
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
ldr r2, [r5]
mov r0, #0x41
@@ -609,7 +609,7 @@ _021D799C:
ldr r0, [r5, r0]
add r1, #0x12
add r2, #0x10
- bl FUN_02001448
+ bl ListMenuGetScrollAndRow
ldr r2, [r5]
add r1, sp, #0
ldrh r1, [r1, #2]
@@ -1021,7 +1021,7 @@ _021D7CE8:
add r1, #8
lsl r0, r4, #4
add r0, r1, r0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r0, r0, r6
@@ -1041,7 +1041,7 @@ _021D7D12:
add r1, #8
lsl r0, r4, #4
add r0, r1, r0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r1, r0, r6
@@ -1257,7 +1257,7 @@ MOD76_021D7ECC: ; 0x021D7ECC
strb r1, [r5, r0]
ldrb r0, [r5, r0]
mov r1, #0x43
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
mov r1, #0x42
lsl r1, r1, #2
str r0, [r5, r1]
@@ -1287,7 +1287,7 @@ _021D7F0E:
ldr r0, [r5, r0]
add r1, r7, #0
add r3, r2, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _021D7F42
_021D7F2A:
mov r0, #0x42
@@ -1299,7 +1299,7 @@ _021D7F2A:
ldr r0, [r5, r0]
ldr r1, [r1]
sub r3, #0x22
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _021D7F50
_021D7F42:
mov r0, #0x61
@@ -1340,7 +1340,7 @@ _021D7F50:
ldrh r1, [r3, #0x12]
ldrh r2, [r3, #0x10]
mov r3, #0x43
- bl FUN_020010A8
+ bl ListMenuInit
mov r1, #0x41
lsl r1, r1, #2
str r0, [r5, r1]
@@ -1365,11 +1365,11 @@ MOD76_021D7FAC: ; 0x021D7FAC
ldr r0, [r4, r0]
add r1, #0x12
add r2, #0x10
- bl FUN_02001300
+ bl DestroyListMenu
mov r0, #0x42
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
pop {r4, pc}
.align 2, 0
thumb_func_end MOD76_021D7FAC
@@ -1380,7 +1380,7 @@ MOD76_021D7FD0: ; 0x021D7FD0
add r5, r1, #0
mov r1, #0x13
add r6, r2, #0
- bl FUN_02001470
+ bl ListMenuGetTemplateField
add r4, r0, #0
cmp r6, #1
beq _021D7FE8
@@ -1418,19 +1418,19 @@ MOD76_021D800C: ; 0x021D800C
add r4, r1, #0
add r0, #0xa8
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x78
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x88
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x98
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x4b
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -1601,7 +1601,7 @@ MOD76_021D81AC: ; 0x021D81AC
add r4, r1, #0
add r0, #0xb8
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #1
mvn r1, r1
cmp r4, r1
@@ -2043,7 +2043,7 @@ MOD76_021D853C: ; 0x021D853C
add r5, r1, #0
add r0, #0xc8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
add r1, r5, #0
bl MOD76_021D8354
@@ -2105,7 +2105,7 @@ _021D85BE:
b _021D85D6
_021D85C6:
ldr r0, _021D85E0 ; =0x00000483
- bl PlayBGM
+ bl PlaySound
b _021D85D6
_021D85CE:
ldr r0, _021D85DC ; =0x000005E6
@@ -2169,7 +2169,7 @@ MOD76_021D862C: ; 0x021D862C
add r4, r0, #0
add r0, #0xc8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
mov r1, #0
bl MOD76_021D8354
@@ -2217,7 +2217,7 @@ MOD76_021D8688: ; 0x021D8688
add r4, r0, #0
add r0, #0xc8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
mov r1, #0
bl MOD76_021D8354
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
index a5eaa94b..6affcb88 100644
--- a/arm9/modules/77/asm/module_77.s
+++ b/arm9/modules/77/asm/module_77.s
@@ -242,7 +242,7 @@ _021D76D6:
_021D76FA:
ldr r0, _021D7988 ; =0x0000C054
ldr r0, [r4, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
sub r0, r7, #1
cmp r6, r0
@@ -358,7 +358,7 @@ _021D77A2:
_021D77DE:
ldr r0, _021D7988 ; =0x0000C054
ldr r0, [r4, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
sub r0, r7, #1
cmp r6, r0
@@ -438,7 +438,7 @@ _021D7838:
_021D7886:
ldr r0, _021D7988 ; =0x0000C054
ldr r0, [r4, r0]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
sub r0, r7, #1
cmp r6, r0
@@ -601,7 +601,7 @@ _021D79D0:
add r0, r4, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D7B7C ; =0x0000C034
ldr r2, _021D7B80 ; =0x000001D9
add r0, r4, r0
@@ -656,7 +656,7 @@ _021D7A4E:
add r0, r4, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D7B84 ; =0x0000C314
ldr r1, [r4, r0]
cmp r1, #0
@@ -897,7 +897,7 @@ MOD77_021D7C64: ; 0x021D7C64
mov r0, #0x66
ldr r3, [r3]
mov r1, #0x12
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
str r0, [sp, #0x18]
ldr r0, [sp, #0x20]
mov r1, #6
@@ -957,7 +957,7 @@ _021D7CE0:
mov r0, #0x66
ldr r3, [r3]
mov r2, #0
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
str r0, [sp, #0x14]
ldr r0, [sp, #0x1c]
mov r5, #1
@@ -1360,7 +1360,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #0x81
mov r1, #5
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x80
str r0, [sp]
ldr r0, [r5]
@@ -1369,7 +1369,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #0x81
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1381,7 +1381,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #0x81
ldr r2, [r5, r2]
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #8]
bl Options_GetFrame
lsl r0, r0, #0x18
@@ -1432,7 +1432,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
add r0, r5, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D8224 ; =0x0000C014
ldr r2, _021D8214 ; =0x000001E2
add r0, r5, r0
@@ -1468,7 +1468,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #0x81
mov r1, #5
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x80
str r0, [sp]
ldr r0, [r5]
@@ -1477,7 +1477,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #0x81
mov r1, #6
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1489,7 +1489,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #0x81
mov r1, #7
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
ldr r0, [r5]
@@ -1565,7 +1565,7 @@ MOD77_021D7FAC: ; 0x021D7FAC
add r0, r5, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D8244 ; =0x0000C060
mov r1, #0xc
ldr r0, [r5, r0]
@@ -1671,7 +1671,7 @@ _021D82B0:
mov r1, #0xf
add r2, r4, #0
add r3, r4, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r0, #1
ldr r1, [r5]
lsl r0, r0, #0xa
@@ -1767,7 +1767,7 @@ MOD77_021D8370: ; 0x021D8370
bl FUN_02019150
ldrh r0, [r6, #0x10]
ldr r1, [r5]
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _021D8404 ; =0x0000C058
mov r7, #0
str r0, [r5, r1]
@@ -1782,7 +1782,7 @@ _021D8398:
ldr r1, [r5, r1]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldrh r0, [r6, #0x10]
add r7, r7, #1
add r4, #8
@@ -1812,7 +1812,7 @@ _021D83B2:
lsl r3, r3, #0x18
add r2, r1, #0
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
ldr r1, _021D8410 ; =0x0000C054
ldr r2, _021D8414 ; =0x000001D9
str r0, [r5, r1]
@@ -1853,7 +1853,7 @@ MOD77_021D8418: ; 0x021D8418
str r0, [sp, #8]
ldr r1, [r5]
add r0, r6, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _021D84C8 ; =0x0000C058
mov r4, #0
str r0, [r5, r1]
@@ -1865,7 +1865,7 @@ _021D844E:
ldr r0, [r5, r0]
ldr r1, [sp, #8]
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, r6
blo _021D844E
@@ -1902,7 +1902,7 @@ _021D8462:
lsl r3, r3, #0x18
add r2, r1, #0
lsr r3, r3, #0x18
- bl FUN_020010A8
+ bl ListMenuInit
ldr r1, _021D84D0 ; =0x0000C054
ldr r2, _021D84D4 ; =0x000001D9
str r0, [r5, r1]
@@ -1937,10 +1937,10 @@ MOD77_021D84D8: ; 0x021D84D8
mov r1, #0
ldr r0, [r4, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _021D850C ; =0x0000C058
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
pop {r4, pc}
.align 2, 0
_021D8504: .word 0x0000C024
@@ -1978,7 +1978,7 @@ MOD77_021D8510: ; 0x021D8510
add r0, r5, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D85CC ; =0x0000C044
ldr r2, _021D85D0 ; =0x000001D9
add r0, r5, r0
@@ -2067,7 +2067,7 @@ MOD77_021D85E0: ; 0x021D85E0
add r0, r5, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D8690 ; =0x0000C044
ldr r2, _021D8694 ; =0x000001D9
add r0, r5, r0
@@ -2159,7 +2159,7 @@ MOD77_021D86B4: ; 0x021D86B4
add r0, r5, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, _021D8810 ; =0x0000C060
mov r1, #0xe
ldr r0, [r5, r0]
@@ -2245,7 +2245,7 @@ _021D8748:
add r0, r5, r0
mov r1, #0xf
add r3, r2, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
ldr r0, [r5]
add r2, r7, #0
str r0, [sp]
@@ -2554,7 +2554,7 @@ MOD77_021D89F4: ; 0x021D89F4
asr r1, r1, #0x10
asr r2, r2, #0x10
asr r3, r3, #0x10
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
pop {r4, pc}
nop
_021D8A28: .word 0x0000C2DC
@@ -2567,7 +2567,7 @@ MOD77_021D8A30: ; 0x021D8A30
sub sp, #0x24
add r4, r1, #0
ldr r1, [r4, #4]
- ldr r3, _021D8AA4 ; =UNK_020FFA38
+ ldr r3, _021D8AA4 ; =FX_SinCosTable_
lsl r1, r1, #0x10
lsr r1, r1, #0x10
asr r1, r1, #4
@@ -2580,7 +2580,7 @@ MOD77_021D8A30: ; 0x021D8A30
add r5, r0, #0
bl MTX_RotY33_
ldr r0, [r4]
- ldr r3, _021D8AA4 ; =UNK_020FFA38
+ ldr r3, _021D8AA4 ; =FX_SinCosTable_
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #4
@@ -2597,7 +2597,7 @@ MOD77_021D8A30: ; 0x021D8A30
add r2, r5, #0
bl MTX_Concat33
ldr r0, [r4, #8]
- ldr r3, _021D8AA4 ; =UNK_020FFA38
+ ldr r3, _021D8AA4 ; =FX_SinCosTable_
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #4
@@ -2616,7 +2616,7 @@ MOD77_021D8A30: ; 0x021D8A30
add sp, #0x24
pop {r4, r5, pc}
nop
-_021D8AA4: .word UNK_020FFA38
+_021D8AA4: .word FX_SinCosTable_
thumb_func_end MOD77_021D8A30
thumb_func_start MOD77_021D8AA8
@@ -2625,7 +2625,7 @@ MOD77_021D8AA8: ; 0x021D8AA8
sub sp, #0x24
add r4, r1, #0
ldr r1, [r4]
- ldr r3, _021D8B1C ; =UNK_020FFA38
+ ldr r3, _021D8B1C ; =FX_SinCosTable_
lsl r1, r1, #0x10
lsr r1, r1, #0x10
asr r1, r1, #4
@@ -2638,7 +2638,7 @@ MOD77_021D8AA8: ; 0x021D8AA8
add r5, r0, #0
bl MTX_RotY33_
ldr r0, [r4, #4]
- ldr r3, _021D8B1C ; =UNK_020FFA38
+ ldr r3, _021D8B1C ; =FX_SinCosTable_
neg r0, r0
lsl r0, r0, #0x10
lsr r0, r0, #0x10
@@ -2656,7 +2656,7 @@ MOD77_021D8AA8: ; 0x021D8AA8
add r2, r5, #0
bl MTX_Concat33
ldr r0, [r4, #8]
- ldr r3, _021D8B1C ; =UNK_020FFA38
+ ldr r3, _021D8B1C ; =FX_SinCosTable_
lsl r0, r0, #0x10
lsr r0, r0, #0x10
asr r0, r0, #4
@@ -2675,7 +2675,7 @@ MOD77_021D8AA8: ; 0x021D8AA8
add sp, #0x24
pop {r4, r5, pc}
.align 2, 0
-_021D8B1C: .word UNK_020FFA38
+_021D8B1C: .word FX_SinCosTable_
thumb_func_end MOD77_021D8AA8
thumb_func_start MOD77_021D8B20
diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s
index 5d9f4625..7fc7439a 100644
--- a/arm9/modules/78/asm/module_78.s
+++ b/arm9/modules/78/asm/module_78.s
@@ -66,13 +66,13 @@ _021D7558:
ldrsh r2, [r3, r7]
ldrsh r3, [r3, r6]
add r0, r4, #0
- bl FUN_020B8418
+ bl NNS_G3dGlbLightVector
ldr r2, [r5, #4]
lsl r1, r4, #1
add r1, r2, r1
ldrh r1, [r1, #0x18]
add r0, r4, #0
- bl FUN_020B8404
+ bl NNS_G3dGlbLightColor
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -82,12 +82,12 @@ _021D7558:
ldrh r0, [r2, #0x20]
ldrh r1, [r2, #0x22]
ldr r2, [r2, #0x28]
- bl FUN_020B83E0
+ bl NNS_G3dGlbMaterialColorDiffAmb
ldr r2, [r5, #4]
ldrh r0, [r2, #0x24]
ldrh r1, [r2, #0x26]
ldr r2, [r2, #0x2c]
- bl FUN_020B83BC
+ bl NNS_G3dGlbMaterialColorSpecEmi
ldr r3, [r5, #4]
ldr r0, [r3, #0x40]
str r0, [sp]
@@ -97,7 +97,7 @@ _021D7558:
ldr r1, [r3, #0x34]
ldr r2, [r3, #0x38]
ldr r3, [r3, #0x3c]
- bl FUN_020B8390
+ bl NNS_G3dGlbPolygonAttr
mov r0, #0
mov r1, #0x48
bl FUN_02079A70
@@ -243,7 +243,7 @@ _021D76C8:
add r1, #0x80
ldr r1, [r1]
add r0, r7, #0
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
ldr r0, [r5, #0x60]
bl FreeToHeap
add r0, r4, #1
@@ -358,26 +358,26 @@ MOD78_021D778C: ; 0x021D778C
add r2, #0x5c
bl FUN_0201B234
ldr r0, [r5, #0x5c]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [sp, #4]
ldr r0, [r5, #0x58]
mov r1, #0
mov r2, #0x40
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
ldr r0, [r5, #0x58]
mov r1, #0
mov r2, #0x80
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
mov r2, #2
ldr r0, [r5, #0x58]
mov r1, #0
lsl r2, r2, #8
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
mov r2, #1
ldr r0, [r5, #0x58]
mov r1, #0
lsl r2, r2, #0xa
- bl FUN_020BC094
+ bl NNSi_G3dModifyMatFlag
add r0, r5, #0
str r0, [sp, #8]
add r0, #0x70
@@ -402,12 +402,12 @@ _021D780E:
bl NARC_AllocAndReadWholeMember
str r0, [r4, #0x60]
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
add r7, r0, #0
ldr r0, [sp, #8]
ldr r2, [r5, #0x58]
add r1, r7, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
add r1, r4, #0
add r1, #0x80
str r0, [r1]
@@ -417,11 +417,11 @@ _021D780E:
ldr r2, [r5, #0x58]
ldr r3, [sp, #4]
add r1, r7, #0
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
add r4, #0x80
ldr r1, [r4]
add r0, r5, #4
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index f0b34ee0..83e02d71 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -1473,7 +1473,7 @@ _0222DFE4:
mov r1, #2
lsl r1, r1, #0x10
mov r2, #0
- bl tempName_NNS_FndCreateExpHeapEx
+ bl NNS_FndCreateExpHeapEx
str r0, [r4, #0x4c]
mov r0, #1
str r0, [r5]
@@ -1830,7 +1830,7 @@ MOD80_0222E3CC: ; 0x0222E3CC
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -2001,7 +2001,7 @@ _0222E414:
mov r0, #0x13
add r2, sp, #0x18
mov r3, #0x3e
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [sp, #0x14]
ldr r0, [sp, #0x18]
mov r1, #0x60
@@ -2269,7 +2269,7 @@ MOD80_0222E750: ; 0x0222E750
add r1, r5, #0
ldr r0, [r0]
add r2, r4, #0
- bl tempName_NNS_FndAllocFromExpHeapEx
+ bl NNS_FndAllocFromExpHeapEx
add r4, r0, #0
add r0, r6, #0
bl OS_RestoreInterrupts
@@ -2289,7 +2289,7 @@ MOD80_0222E778: ; 0x0222E778
ldr r0, _0222E798 ; =0x02237E24
add r1, r5, #0
ldr r0, [r0]
- bl FUN_020ADDF0
+ bl NNS_FndFreeToExpHeap
add r0, r4, #0
bl OS_RestoreInterrupts
_0222E794:
@@ -2797,7 +2797,7 @@ MOD80_0222EB6C: ; 0x0222EB6C
mov r0, #0x68
mov r1, #4
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -2836,7 +2836,7 @@ MOD80_0222EB6C: ; 0x0222EB6C
mov r0, #0x68
mov r1, #0xe
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2849,7 +2849,7 @@ MOD80_0222EB6C: ; 0x0222EB6C
mov r0, #0x68
mov r1, #0x1e
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2863,7 +2863,7 @@ MOD80_0222EB6C: ; 0x0222EB6C
mov r1, #0x1d
add r2, r4, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add r0, r5, #0
bl MOD80_0222F338
add sp, #0x10
@@ -2951,7 +2951,7 @@ MOD80_0222EC98: ; 0x0222EC98
ldr r0, _0222ED88 ; =0x00000EB8
mov r1, #0
add r0, r7, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #2
str r0, [sp]
mov r3, #0
@@ -2992,7 +2992,7 @@ _0222ECF2:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [sp, #0x14]
add r6, #0x1e
add r0, r0, #1
@@ -3019,7 +3019,7 @@ _0222ECF2:
ldr r0, _0222ED94 ; =0x00000E98
mov r1, #0xf
add r0, r7, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -3039,7 +3039,7 @@ _0222ECF2:
ldr r0, _0222ED98 ; =0x00000FB8
mov r1, #0xf
add r0, r7, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -3678,7 +3678,7 @@ MOD80_0222F250: ; 0x0222F250
ldr r0, _0222F2A0 ; =0x00000E98
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0222F2A0 ; =0x00000E98
mov r1, #0
add r0, r5, r0
@@ -3720,7 +3720,7 @@ MOD80_0222F2A8: ; 0x0222F2A8
ldr r0, _0222F2F8 ; =0x00000FB8
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0222F2F8 ; =0x00000FB8
mov r1, #0
add r0, r5, r0
@@ -3761,7 +3761,7 @@ MOD80_0222F300: ; 0x0222F300
add r6, r0, #0
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -3790,7 +3790,7 @@ MOD80_0222F338: ; 0x0222F338
mov r1, #5
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #0x2a
@@ -3804,7 +3804,7 @@ MOD80_0222F338: ; 0x0222F338
mov r1, #0xf
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -3818,7 +3818,7 @@ MOD80_0222F338: ; 0x0222F338
mov r1, #0x1f
add r2, r4, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r4, pc}
thumb_func_end MOD80_0222F338
@@ -4081,7 +4081,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
mov r0, #0x68
mov r1, #7
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #1
lsl r0, r0, #8
str r0, [sp]
@@ -4091,7 +4091,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
mov r1, #5
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -4130,7 +4130,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
mov r0, #0x68
mov r1, #0x11
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -4143,7 +4143,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
mov r0, #0x68
mov r1, #0x19
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #0x2a
@@ -4157,7 +4157,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
mov r1, #0xf
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -4171,7 +4171,7 @@ MOD80_0222F5A8: ; 0x0222F5A8
mov r1, #0x1f
add r2, r4, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -4250,7 +4250,7 @@ MOD80_0222F6EC: ; 0x0222F6EC
ldr r0, [sp, #0x14]
add r0, r0, r1
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xf
str r0, [sp]
mov r0, #0xa
@@ -4303,7 +4303,7 @@ _0222F754:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r4, #8]
ldr r0, [r4, #0xc]
add r7, r7, #1
@@ -4573,7 +4573,7 @@ MOD80_0222F96C: ; 0x0222F96C
bic r3, r1
mov r1, #0x3e
strb r3, [r2, #0xb]
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _0222F9FC ; =0x00000FC8
mov r2, #0x36
str r0, [r4, r1]
@@ -4581,14 +4581,14 @@ MOD80_0222F96C: ; 0x0222F96C
ldr r1, _0222FA00 ; =0x00000B34
mov r3, #1
ldr r1, [r4, r1]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _0222F9FC ; =0x00000FC8
ldr r1, _0222FA00 ; =0x00000B34
ldr r0, [r4, r0]
ldr r1, [r4, r1]
mov r2, #0x37
mov r3, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _0222F9FC ; =0x00000FC8
mov r2, #0x1f
ldr r1, [r4, r0]
@@ -4647,7 +4647,7 @@ _0222FA26:
bl FUN_02001C5C
ldr r0, _0222FADC ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _0222FAE0 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -4702,7 +4702,7 @@ _0222FAA4:
bl FUN_02001C5C
ldr r0, _0222FADC ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _0222FAE0 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -4805,7 +4805,7 @@ MOD80_0222FB3C: ; 0x0222FB3C
ldr r0, _0222FBB8 ; =0x00000E98
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _0222FBB8 ; =0x00000E98
mov r1, #0
add r0, r5, r0
@@ -4912,7 +4912,7 @@ MOD80_0222FBC0: ; 0x0222FBC0
_0222FC64:
add r0, r5, #0
add r1, r7, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, r4, #1
add r5, #0x10
cmp r4, #5
@@ -5100,7 +5100,7 @@ MOD80_0222FD88: ; 0x0222FD88
ldrh r1, [r1, #4]
mov r2, #1
lsl r3, r3, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r4, #0
bl FreeToHeap
add sp, #0x30
@@ -5419,7 +5419,7 @@ MOD80_02230054: ; 0x02230054
mov r0, #0x68
mov r1, #0x11
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x60
str r0, [sp]
mov r0, #0x3e
@@ -5428,7 +5428,7 @@ MOD80_02230054: ; 0x02230054
mov r0, #0x68
mov r1, #7
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD80_02230054
@@ -5506,7 +5506,7 @@ MOD80_02230128: ; 0x02230128
ldr r0, [sp, #0x14]
add r0, r0, r1
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xf
str r0, [sp]
mov r0, #0xa
@@ -5559,7 +5559,7 @@ _02230190:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, [r4, #8]
ldr r0, [r4, #0xc]
add r7, r7, #1
@@ -5890,7 +5890,7 @@ MOD80_0223043C: ; 0x0223043C
ldr r2, [r4, #4]
mov r0, #0x68
mov r1, #0x1b
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r2, _022304BC ; =0x00000B34
ldr r0, _022304C0 ; =0x00000F98
mov r3, #0xba
@@ -5922,7 +5922,7 @@ _0223048C:
ldr r2, [r4, #4]
mov r0, #0x68
mov r1, #0x1c
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r2, _022304C4 ; =0x00000B54
ldr r0, _022304C0 ; =0x00000F98
ldr r1, [r4, r2]
@@ -5983,7 +5983,7 @@ MOD80_022304F8: ; 0x022304F8
ldr r0, _02230548 ; =0x00000E98
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02230548 ; =0x00000E98
mov r1, #0
add r0, r5, r0
@@ -6061,7 +6061,7 @@ MOD80_022305A8: ; 0x022305A8
add r5, r0, #0
add r7, r2, #0
add r4, r3, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
str r0, [sp]
ldr r0, _02230610 ; =0x000F0200
@@ -6113,7 +6113,7 @@ MOD80_02230614: ; 0x02230614
mov r1, #0
add r6, r0, #0
add r4, r2, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
cmp r5, #0
beq _0223063A
mov r2, #0
@@ -6377,7 +6377,7 @@ MOD80_02230840: ; 0x02230840
mov r0, #0x68
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #1
lsl r0, r0, #8
str r0, [sp]
@@ -6387,7 +6387,7 @@ MOD80_02230840: ; 0x02230840
mov r1, #5
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -6426,7 +6426,7 @@ MOD80_02230840: ; 0x02230840
mov r0, #0x68
mov r1, #0xd
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -6439,7 +6439,7 @@ MOD80_02230840: ; 0x02230840
mov r0, #0x68
mov r1, #0x1a
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -6516,7 +6516,7 @@ MOD80_02230944: ; 0x02230944
ldr r0, [sp, #0x14]
add r0, r0, r1
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0
mov r3, #0xb5
ldr r0, _02230A70 ; =0x000F0D00
@@ -6551,7 +6551,7 @@ MOD80_02230944: ; 0x02230944
ldr r0, [sp, #0x14]
add r0, r0, r1
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r1, _02230A78 ; =0x00000F08
ldr r0, [sp, #0x14]
ldr r4, _02230A7C ; =0x0223719C
@@ -6582,7 +6582,7 @@ _022309D2:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r7, r7, #1
add r6, #0x16
add r4, r4, #4
@@ -6624,7 +6624,7 @@ _02230A20:
ldr r0, [sp, #0x18]
mov r1, #0
add r0, r0, r7
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r5, r5, #1
add r6, #0x10
add r4, r4, #4
@@ -7524,7 +7524,7 @@ MOD80_0223113C: ; 0x0223113C
ldr r0, _022311BC ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #5
str r0, [sp]
mov r0, #0xa
@@ -7543,7 +7543,7 @@ MOD80_0223113C: ; 0x0223113C
ldr r0, _022311C4 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
add sp, #0x14
pop {r3, r4, pc}
@@ -7626,10 +7626,10 @@ _02231240:
add r1, r2, #6
ldr r0, [r4, r0]
add r2, r2, #4
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _022312B8 ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _022312BC ; =0x000005DC
bl FUN_020054C8
mov r0, #6
@@ -7643,10 +7643,10 @@ _02231266:
add r1, r2, #6
ldr r0, [r4, r0]
add r2, r2, #4
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _022312B8 ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _022312C0 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -7747,10 +7747,10 @@ _02231342:
ldr r0, [r4, r0]
add r1, #0xa
add r2, #8
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02231468 ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _0223146C ; =0x00000EE8
mov r1, #0
add r0, r4, r0
@@ -7780,10 +7780,10 @@ _0223138C:
ldr r0, [r4, r0]
add r1, #0xa
add r2, #8
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02231468 ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02231474 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -7807,7 +7807,7 @@ _0223138C:
ldr r0, _0223147C ; =0x00000F18
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
ldr r0, _02231480 ; =0x00010200
@@ -7847,7 +7847,7 @@ _0223138C:
ldr r0, _02231488 ; =0x00000F38
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -7913,7 +7913,7 @@ MOD80_02231490: ; 0x02231490
ldr r0, _022314E8 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
add sp, #0x14
pop {r3, r4, pc}
@@ -7980,10 +7980,10 @@ _0223154A:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _022315F4 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _022315F8 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -8005,10 +8005,10 @@ _0223158E:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _022315F4 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _022315F8 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -8025,7 +8025,7 @@ _0223158E:
mov r1, #0
add r0, r5, r0
str r1, [r5, #0x2c]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -8089,7 +8089,7 @@ MOD80_02231614: ; 0x02231614
ldr r0, _0223166C ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
add sp, #0x14
pop {r3, r4, pc}
@@ -8153,10 +8153,10 @@ _022316D0:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02231770 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02231774 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -8178,10 +8178,10 @@ _0223170C:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02231770 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02231774 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -8199,7 +8199,7 @@ _0223170C:
mov r1, #0
add r0, r5, r0
str r1, [r5, #0x2c]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp]
ldr r0, _02231788 ; =0x00010200
@@ -8377,7 +8377,7 @@ MOD80_0223187C: ; 0x0223187C
ldr r0, _022318CC ; =0x00000E98
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _022318CC ; =0x00000E98
mov r1, #0
add r0, r5, r0
@@ -8789,7 +8789,7 @@ MOD80_02231BF4: ; 0x02231BF4
mov r0, #0x68
mov r1, #2
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #1
lsl r0, r0, #8
str r0, [sp]
@@ -8799,7 +8799,7 @@ MOD80_02231BF4: ; 0x02231BF4
mov r1, #5
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -8838,7 +8838,7 @@ MOD80_02231BF4: ; 0x02231BF4
mov r0, #0x68
mov r1, #0xc
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -8851,7 +8851,7 @@ MOD80_02231BF4: ; 0x02231BF4
mov r0, #0x68
mov r1, #0x18
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -8865,7 +8865,7 @@ MOD80_02231BF4: ; 0x02231BF4
mov r1, #0x1d
add r2, r4, #0
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD80_02231BF4
@@ -9121,7 +9121,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, _02231FDC ; =0x00000EB8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0
mov r1, #0xb5
ldr r0, _02231FE0 ; =0x000F0E00
@@ -9150,7 +9150,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, _02231FE4 ; =0x00000EC8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02231FE4 ; =0x00000EC8
add r0, r4, r0
bl CopyWindowToVram
@@ -9172,7 +9172,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, _02231FE8 ; =0x00000E98
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -9192,7 +9192,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, _02231FF0 ; =0x00000FB8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x15
str r0, [sp]
mov r0, #6
@@ -9212,7 +9212,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, _02231FF8 ; =0x00000EE8
mov r1, #6
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #1
ldr r0, _02231FFC ; =0x00010306
str r3, [sp]
@@ -9823,7 +9823,7 @@ MOD80_02232470: ; 0x02232470
bic r3, r1
mov r1, #0x3e
strb r3, [r2, #0xb]
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02232510 ; =0x00000FC8
mov r2, #0x5e
str r0, [r4, r1]
@@ -9831,21 +9831,21 @@ MOD80_02232470: ; 0x02232470
ldr r1, _02232514 ; =0x00000B34
mov r3, #1
ldr r1, [r4, r1]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02232510 ; =0x00000FC8
ldr r1, _02232514 ; =0x00000B34
ldr r0, [r4, r0]
ldr r1, [r4, r1]
mov r2, #0x5f
mov r3, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02232510 ; =0x00000FC8
ldr r1, _02232514 ; =0x00000B34
ldr r0, [r4, r0]
ldr r1, [r4, r1]
mov r2, #0x60
mov r3, #3
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02232510 ; =0x00000FC8
mov r2, #0x1f
ldr r1, [r4, r0]
@@ -9912,7 +9912,7 @@ _02232546:
bl FUN_02001C5C
ldr r0, _02232660 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02232664 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -9932,7 +9932,7 @@ _02232574:
bl FUN_02001C5C
ldr r0, _02232660 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02232664 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -10016,7 +10016,7 @@ _0223262E:
bl FUN_02001C5C
ldr r0, _02232660 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02232664 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -10063,7 +10063,7 @@ MOD80_02232670: ; 0x02232670
bic r3, r1
mov r1, #0x3e
strb r3, [r2, #0xb]
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02232710 ; =0x00000FC8
mov r2, #0x54
str r0, [r4, r1]
@@ -10071,21 +10071,21 @@ MOD80_02232670: ; 0x02232670
ldr r1, _02232714 ; =0x00000B34
mov r3, #1
ldr r1, [r4, r1]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02232710 ; =0x00000FC8
ldr r1, _02232714 ; =0x00000B34
ldr r0, [r4, r0]
ldr r1, [r4, r1]
mov r2, #0x55
mov r3, #2
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02232710 ; =0x00000FC8
ldr r1, _02232714 ; =0x00000B34
ldr r0, [r4, r0]
ldr r1, [r4, r1]
mov r2, #0x56
mov r3, #3
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
ldr r0, _02232710 ; =0x00000FC8
mov r2, #0x1f
ldr r1, [r4, r0]
@@ -10152,7 +10152,7 @@ _02232746:
bl FUN_02001C5C
ldr r0, _0223283C ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02232840 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -10172,7 +10172,7 @@ _02232774:
bl FUN_02001C5C
ldr r0, _0223283C ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02232840 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -10239,7 +10239,7 @@ _0223280A:
bl FUN_02001C5C
ldr r0, _0223283C ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02232840 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -10679,7 +10679,7 @@ _02232B62:
add r4, r5, r0
add r0, r4, #0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r4, #0
mov r1, #0
mov r2, #1
@@ -10717,7 +10717,7 @@ MOD80_02232BAC: ; 0x02232BAC
add r4, r0, #0
beq _02232BCE
add r1, r5, #0
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
bne _02232BCE
add r0, r4, #0
@@ -11146,7 +11146,7 @@ _02232F22:
ldr r0, _02232F9C ; =0x00000EC8
mov r1, #0
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #1
str r0, [sp]
ldr r0, _02232FA0 ; =0x00010200
@@ -11657,7 +11657,7 @@ MOD80_022332EC: ; 0x022332EC
ldr r0, _02233350 ; =0x00000E98
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02233350 ; =0x00000E98
mov r1, #0
add r0, r5, r0
@@ -11828,7 +11828,7 @@ MOD80_0223346C: ; 0x0223346C
mov r0, #0x68
mov r1, #1
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -11867,7 +11867,7 @@ MOD80_0223346C: ; 0x0223346C
mov r0, #0x68
mov r1, #0xb
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -11880,7 +11880,7 @@ MOD80_0223346C: ; 0x0223346C
mov r0, #0x68
mov r1, #0x17
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD80_0223346C
@@ -11908,7 +11908,7 @@ MOD80_02233500: ; 0x02233500
ldr r0, _022335CC ; =0x00000EB8
mov r1, #0
add r0, r7, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #0
mov r1, #0xb5
ldr r0, _022335D0 ; =0x000F0E00
@@ -11938,7 +11938,7 @@ MOD80_02233500: ; 0x02233500
ldr r0, _022335D4 ; =0x00000E98
mov r1, #0
add r0, r7, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0
str r0, [sp, #0x14]
ldr r0, _022335D8 ; =0x00000F08
@@ -11968,7 +11968,7 @@ _0223357E:
bl FUN_02019064
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
bl CopyWindowToVram
ldr r0, [sp, #0x14]
@@ -12158,7 +12158,7 @@ _02233714:
ldr r0, _02233778 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #5
str r0, [sp]
mov r0, #0xa
@@ -12177,7 +12177,7 @@ _02233714:
ldr r0, _02233780 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
str r0, [r4, #0x2c]
add sp, #0x14
@@ -12260,10 +12260,10 @@ _022337FA:
add r1, r2, #6
ldr r0, [r4, r0]
add r2, r2, #4
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _0223387C ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r0, #5
str r0, [r4, #0x2c]
ldr r0, _02233880 ; =0x000005DC
@@ -12277,10 +12277,10 @@ _02233820:
add r1, r2, #6
ldr r0, [r4, r0]
add r2, r2, #4
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _0223387C ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233884 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -12415,10 +12415,10 @@ _02233932:
ldr r0, [r4, r0]
add r1, #0xa
add r2, #8
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02233A50 ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233A54 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
@@ -12454,10 +12454,10 @@ _0223398C:
ldr r0, [r4, r0]
add r1, #0xa
add r2, #8
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02233A50 ; =0x00000FC8
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233A58 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -12577,7 +12577,7 @@ MOD80_02233A6C: ; 0x02233A6C
ldr r0, _02233AC4 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
add sp, #0x14
pop {r3, r4, pc}
@@ -12644,10 +12644,10 @@ _02233B26:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02233BD0 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233BD4 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -12669,10 +12669,10 @@ _02233B6A:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02233BD0 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233BD4 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -12752,7 +12752,7 @@ MOD80_02233BE8: ; 0x02233BE8
ldr r0, _02233C40 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #3
add sp, #0x14
pop {r3, r4, pc}
@@ -12816,10 +12816,10 @@ _02233CA4:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02233D70 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233D74 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -12856,10 +12856,10 @@ _02233CFA:
mov r1, #0
ldr r0, [r5, r0]
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02233D70 ; =0x00000FC8
ldr r0, [r5, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
ldr r0, _02233D74 ; =0x00000ED8
mov r1, #0
add r0, r5, r0
@@ -13235,7 +13235,7 @@ MOD80_02233FB4: ; 0x02233FB4
_02233FE0:
add r0, r5, #0
add r1, r7, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, r4, #1
add r5, #0x10
cmp r4, #3
@@ -13307,7 +13307,7 @@ MOD80_02234048: ; 0x02234048
_02234074:
add r0, r5, #0
add r1, r7, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, r4, #1
add r5, #0x10
cmp r4, #3
@@ -13416,7 +13416,7 @@ _0223415A:
_0223415E:
add r0, r5, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r4, r4, #1
add r5, #0x10
cmp r4, #3
@@ -13500,7 +13500,7 @@ MOD80_02234204: ; 0x02234204
str r0, [sp, #4]
mov r0, #0x4b
mov r1, #0xd
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
ldr r1, [sp, #8]
lsr r1, r1, #1
str r1, [r4]
@@ -13529,7 +13529,7 @@ MOD80_02234228: ; 0x02234228
mov r0, #0x4b
mov r1, #0xc
add r3, r5, #0
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
add r7, r0, #0
ldr r0, [sp, #8]
ldr r5, _02234284 ; =0x00000000
@@ -13680,7 +13680,7 @@ MOD80_02234370: ; 0x02234370
mov r1, #0x3e
str r2, [sp]
add r6, r3, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r5]
mov r4, #0
_02234388:
@@ -13689,7 +13689,7 @@ _02234388:
add r1, r6, #0
add r2, #0x68
add r3, r4, #1
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
cmp r4, #9
blt _02234388
@@ -13718,7 +13718,7 @@ _02234388:
ldrh r1, [r2, #6]
ldrh r2, [r2, #4]
mov r3, #0x3e
- bl FUN_020010A8
+ bl ListMenuInit
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -13791,7 +13791,7 @@ _0223444A:
_02234456:
add r0, r6, #1
mov r1, #0x3e
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, [sp]
str r0, [r1]
mov r0, #0
@@ -13816,7 +13816,7 @@ _02234472:
ldr r1, [sp, #4]
ldr r0, [r0]
add r3, r2, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
b _022344B6
_02234494:
ldrh r1, [r5]
@@ -13833,7 +13833,7 @@ _02234494:
ldr r1, [sp, #4]
ldr r0, [r0]
add r3, r2, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
_022344B6:
ldr r0, [sp, #0x10]
add r5, r5, #2
@@ -13848,7 +13848,7 @@ _022344C2:
ldr r0, [r0]
ldr r1, [sp, #8]
sub r3, #0x77
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r0, r6, #1
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
@@ -13867,7 +13867,7 @@ MOD80_022344DC: ; 0x022344DC
mov r1, #0xf
str r2, [sp, #0x10]
str r3, [sp, #0x14]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldrh r1, [r5, #6]
ldrh r0, [r5, #4]
ldr r2, [sp, #0x14]
@@ -13912,7 +13912,7 @@ MOD80_022344DC: ; 0x022344DC
ldrh r2, [r3, r2]
add r0, sp, #0x18
mov r3, #0x3e
- bl FUN_020010A8
+ bl ListMenuInit
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -13929,7 +13929,7 @@ MOD80_02234560: ; 0x02234560
mov r0, #4
mov r1, #0x3e
add r7, r2, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r5, _022345C8 ; =0x02237B64
str r0, [r6]
mov r4, #0
@@ -13938,7 +13938,7 @@ _02234578:
ldr r2, [r5]
ldr r3, [r5, #4]
add r1, r7, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
add r5, #8
cmp r4, #4
@@ -13968,7 +13968,7 @@ _02234578:
add r0, sp, #4
add r2, r1, #0
mov r3, #0x3e
- bl FUN_020010A8
+ bl ListMenuInit
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -13985,7 +13985,7 @@ MOD80_022345D0: ; 0x022345D0
mov r0, #0xd
mov r1, #0x3e
add r7, r2, #0
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r5, _02234638 ; =0x02237494
str r0, [r6]
mov r4, #0
@@ -13994,7 +13994,7 @@ _022345E8:
ldr r2, [r5]
add r1, r7, #0
add r3, r4, #0
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r4, r4, #1
add r5, #8
cmp r4, #0xd
@@ -14024,7 +14024,7 @@ _022345E8:
add r0, sp, #4
add r2, r1, #0
mov r3, #0x3e
- bl FUN_020010A8
+ bl ListMenuInit
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -14039,7 +14039,7 @@ MOD80_02234640: ; 0x02234640
add r4, r0, #0
cmp r5, #0xc
blt _0223464E
- bl ErrorHandling
+ bl GF_AssertFail
_0223464E:
ldr r0, _02234660 ; =0x02237498
lsl r1, r5, #3
@@ -14089,11 +14089,11 @@ MOD80_02234698: ; 0x02234698
sub sp, #4
add r5, r0, #0
add r4, r1, #0
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r6, r0, #0
add r0, r5, #0
add r1, sp, #0
- bl FUN_0200143C
+ bl ListMenuGetCurrentItemArrayId
add r0, sp, #0
ldrh r1, [r4]
ldrh r0, [r0]
@@ -14372,7 +14372,7 @@ MOD80_022348CC: ; 0x022348CC
mov r0, #0x68
add r2, r1, #0
add r3, r1, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -14449,7 +14449,7 @@ MOD80_02234958: ; 0x02234958
ldr r0, _02234990 ; =0x00000E98
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -14600,7 +14600,7 @@ _02234A8A:
str r0, [r4, #0x2c]
b _02234AA8
_02234AA4:
- bl ErrorHandling
+ bl GF_AssertFail
_02234AA8:
add r0, r4, #0
bl MOD80_0222E8BC
@@ -15866,7 +15866,7 @@ MOD80_022353B4: ; 0x022353B4
lsr r5, r0, #0x10
cmp r5, #0x3c
blo _022353E0
- bl ErrorHandling
+ bl GF_AssertFail
_022353E0:
ldr r0, _022353F0 ; =0x00000FDC
add r1, r5, #2
@@ -16126,8 +16126,8 @@ _02235590:
bne _022355DC
ldr r0, [r5]
ldr r0, [r0, #0x20]
- bl FUN_02029EF8
- bl FUN_02029F08
+ bl Sav2_Chatot_get
+ bl Chatot_invalidate
_022355DC:
cmp r6, #0
beq _022355EA
@@ -17002,7 +17002,7 @@ MOD80_02235C88: ; 0x02235C88
mov r1, #7
add r2, r4, r2
mov r3, #0x3e
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
ldr r3, _02235CCC ; =0x00000FF8
mov r1, #9
str r0, [r4, r3]
@@ -17012,7 +17012,7 @@ MOD80_02235C88: ; 0x02235C88
mov r0, #0x56
mov r2, #1
add r3, r4, r3
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
mov r1, #0xff
lsl r1, r1, #4
str r0, [r4, r1]
@@ -17695,7 +17695,7 @@ _02236208:
add r0, #0xd4
pop {r3, pc}
_02236210:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
thumb_func_end MOD80_022361E8
@@ -18003,7 +18003,7 @@ MOD80_02236488: ; 0x02236488
mov r0, #0x5c
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r3, #0
str r3, [sp]
mov r0, #0x3e
@@ -18011,7 +18011,7 @@ MOD80_02236488: ; 0x02236488
mov r0, #0x5c
mov r1, #3
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -18055,7 +18055,7 @@ MOD80_02236488: ; 0x02236488
mov r1, #2
add r2, r4, #0
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #6
str r1, [sp]
@@ -18068,7 +18068,7 @@ MOD80_02236488: ; 0x02236488
mov r1, #4
add r2, r4, #0
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x36
str r1, [sp]
@@ -18081,7 +18081,7 @@ MOD80_02236488: ; 0x02236488
mov r1, #9
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #6
str r1, [sp]
@@ -18094,7 +18094,7 @@ MOD80_02236488: ; 0x02236488
mov r1, #0xa
add r2, r4, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl FUN_02017FE4
@@ -18128,7 +18128,7 @@ MOD80_02236580: ; 0x02236580
ldr r0, _02236628 ; =0x00000EC8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #1
str r0, [sp]
mov r0, #0x18
@@ -18149,7 +18149,7 @@ MOD80_02236580: ; 0x02236580
ldr r0, _0223662C ; =0x00000EB8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #1
mov r1, #0xb5
ldr r0, _02236630 ; =0x000F0E00
@@ -18180,7 +18180,7 @@ MOD80_02236580: ; 0x02236580
ldr r0, _02236634 ; =0x00000E98
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -19051,7 +19051,7 @@ MOD80_02236C70: ; 0x02236C70
ldr r0, _02236CD8 ; =0x00000E98
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02236CD8 ; =0x00000E98
mov r1, #0
add r0, r5, r0
@@ -19206,7 +19206,7 @@ MOD80_02236D8C: ; 0x02236D8C
ldr r0, _02236DFC ; =0x00000EC8
mov r1, #0xf
add r0, r5, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02236DFC ; =0x00000EC8
mov r1, #1
add r0, r5, r0
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index 94767f70..c8b46eb9 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -106,7 +106,7 @@ _02237F0A:
lsl r1, r1, #2
str r0, [r4, r1]
_02237F22:
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #1
str r0, [sp]
mov r0, #0x7f
@@ -358,7 +358,7 @@ MOD81_02238118: ; 0x02238118
mov r1, #6
add r2, sp, #4
mov r3, #0x39
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
add r7, r0, #0
beq _02238152
mov r0, #0
@@ -1072,7 +1072,7 @@ _0223869C:
ldrh r0, [r1, #0x10]
ldrh r1, [r1, #0x14]
lsl r3, r3, #5
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x44
pop {r4, r5, r6, r7, pc}
nop
@@ -1106,7 +1106,7 @@ _022386DE:
mov r0, #7
mov r2, #0
add r3, sp, #0x1c
- bl FUN_02006BDC
+ bl GfGfxLoader_GetScrnData
add r7, r0, #0
beq _02238746
mov r0, #0xa
@@ -1169,7 +1169,7 @@ MOD81_0223874C: ; 0x0223874C
add r0, r4, #0
mov r2, #1
add r3, #8
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r5]
mov r0, #0x3a
add r3, r5, #0
@@ -1178,7 +1178,7 @@ MOD81_0223874C: ; 0x0223874C
add r1, r6, #0
mov r2, #1
add r3, #0xc
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r5, #4]
add sp, #4
pop {r3, r4, r5, r6, pc}
@@ -1388,7 +1388,7 @@ MOD81_02238898: ; 0x02238898
ldr r0, [r0]
cmp r0, #0x20
blt _022388A8
- bl ErrorHandling
+ bl GF_AssertFail
_022388A8:
ldr r0, _022388B8 ; =0x0223D3C0
ldr r2, [r0]
@@ -1479,7 +1479,7 @@ MOD81_02238940: ; 0x02238940
add r5, r0, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
bl FUN_0201EBA4
ldr r0, [r5, #0x1c]
mov r6, #0
@@ -1504,7 +1504,7 @@ _02238976:
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add sp, #4
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -1520,7 +1520,7 @@ MOD81_02238988: ; 0x02238988
add r0, r4, #0
add r0, #0x80
ldrh r0, [r0]
- ldr r3, _02238A34 ; =UNK_020FFA38
+ ldr r3, _02238A34 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1537,7 +1537,7 @@ MOD81_02238988: ; 0x02238988
add r0, r4, #0
add r0, #0x82
ldrh r0, [r0]
- ldr r3, _02238A34 ; =UNK_020FFA38
+ ldr r3, _02238A34 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1554,7 +1554,7 @@ MOD81_02238988: ; 0x02238988
add r0, r4, #0
add r0, #0x84
ldrh r0, [r0]
- ldr r3, _02238A34 ; =UNK_020FFA38
+ ldr r3, _02238A34 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1579,7 +1579,7 @@ MOD81_02238988: ; 0x02238988
add r2, r0, #0
add r3, r0, #0
str r0, [sp, #4]
- bl FUN_020B8390
+ bl NNS_G3dGlbPolygonAttr
_02238A20:
add r1, r4, #0
add r0, r4, #4
@@ -1591,7 +1591,7 @@ _02238A20:
add sp, #0x50
pop {r4, pc}
.align 2, 0
-_02238A34: .word UNK_020FFA38
+_02238A34: .word FX_SinCosTable_
thumb_func_end MOD81_02238988
thumb_func_start MOD81_02238A38
@@ -1657,7 +1657,7 @@ MOD81_02238A84: ; 0x02238A84
mov r2, #0
mov r3, #0x3a
add r5, r4, r6
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
str r0, [r4, r6]
ldr r1, [sp, #4]
add r0, r7, #0
@@ -1668,7 +1668,7 @@ MOD81_02238A84: ; 0x02238A84
ldr r0, [r4, r6]
cmp r0, #0
beq _02238B02
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
str r0, [r5, #0x58]
ldrh r1, [r0, #0xe]
add r1, r0, r1
@@ -1676,7 +1676,7 @@ MOD81_02238A84: ; 0x02238A84
add r0, r0, r1
str r0, [r5, #0x5c]
ldr r0, [r5]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r5, #0x60]
bl FUN_0201B3C4
ldr r0, [r5]
@@ -1684,7 +1684,7 @@ MOD81_02238A84: ; 0x02238A84
bl FUN_0201B3A8
ldr r1, [r5, #0x5c]
add r0, r5, #4
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
ldr r0, [sp, #0x20]
mov r1, #0x1f
str r0, [r5, #0x68]
@@ -1777,13 +1777,13 @@ MOD81_02238B5C: ; 0x02238B5C
mov r2, #0x1f
mov r1, #0
lsl r2, r2, #0x10
- bl FUN_020BC02C
+ bl NNSi_G3dModifyPolygonAttrMask
pop {r3, pc}
_02238B76:
mov r2, #0x1f
mov r1, #1
lsl r2, r2, #0x10
- bl FUN_020BC02C
+ bl NNSi_G3dModifyPolygonAttrMask
pop {r3, pc}
.align 2, 0
thumb_func_end MOD81_02238B5C
@@ -1806,7 +1806,7 @@ MOD81_02238B8C: ; 0x02238B8C
add r0, r4, #0
add r0, #0x80
ldrh r0, [r0]
- ldr r3, _02238C3C ; =UNK_020FFA38
+ ldr r3, _02238C3C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1823,7 +1823,7 @@ MOD81_02238B8C: ; 0x02238B8C
add r0, r4, #0
add r0, #0x82
ldrh r0, [r0]
- ldr r3, _02238C3C ; =UNK_020FFA38
+ ldr r3, _02238C3C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1840,7 +1840,7 @@ MOD81_02238B8C: ; 0x02238B8C
add r0, r4, #0
add r0, #0x84
ldrh r0, [r0]
- ldr r3, _02238C3C ; =UNK_020FFA38
+ ldr r3, _02238C3C ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1857,7 +1857,7 @@ MOD81_02238B8C: ; 0x02238B8C
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
bl FUN_0201EBA4
add r1, r4, #0
ldr r0, [r4, #0x5c]
@@ -1871,12 +1871,12 @@ MOD81_02238B8C: ; 0x02238B8C
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
add r0, r4, #0
add sp, #0x4c
pop {r3, r4, pc}
.align 2, 0
-_02238C3C: .word UNK_020FFA38
+_02238C3C: .word FX_SinCosTable_
thumb_func_end MOD81_02238B8C
thumb_func_start MOD81_02238C40
@@ -2123,9 +2123,9 @@ MOD81_02238DFC: ; 0x02238DFC
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
- bl FUN_020BB394
- bl FUN_020B02C8
+ bl NNS_G3dGeBufferOP_N
+ bl NNS_G3dGeFlushBuffer
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r4, #0xc]
bl FUN_020081C4
ldr r0, [r4, #0xc]
@@ -2134,7 +2134,7 @@ MOD81_02238DFC: ; 0x02238DFC
str r2, [sp]
mov r0, #0x12
add r1, sp, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x5c]
bl MOD81_02238940
mov r0, #0
@@ -2229,7 +2229,7 @@ MOD81_02238E44: ; 0x02238E44
add r0, r4, #0
add r0, #0x44
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x20
str r3, [sp]
mov r0, #0x3a
@@ -2237,7 +2237,7 @@ MOD81_02238E44: ; 0x02238E44
mov r0, #0xe
mov r1, #7
mov r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2249,7 +2249,7 @@ MOD81_02238E44: ; 0x02238E44
mov r0, #0x5d
mov r1, #0x16
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2261,7 +2261,7 @@ MOD81_02238E44: ; 0x02238E44
mov r0, #0x5d
mov r1, #0x15
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -2270,7 +2270,7 @@ MOD81_02238E44: ; 0x02238E44
mov r0, #0x5d
mov r1, #0x17
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2282,7 +2282,7 @@ MOD81_02238E44: ; 0x02238E44
mov r0, #0x5d
mov r1, #0x16
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2294,7 +2294,7 @@ MOD81_02238E44: ; 0x02238E44
mov r0, #0x5d
mov r1, #0x15
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -2303,7 +2303,7 @@ MOD81_02238E44: ; 0x02238E44
mov r1, #0x17
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r4, #0x40]
mov r1, #1
bl FUN_02017CD0
@@ -2527,7 +2527,7 @@ _0223918A:
add r0, r4, #0
add r0, #0x44
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -2694,7 +2694,7 @@ MOD81_022392D8: ; 0x022392D8
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _02239380 ; =0x04000060
ldr r2, _02239384 ; =0xFFFFCFFD
@@ -2730,19 +2730,19 @@ MOD81_022392D8: ; 0x022392D8
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
- ldr r3, _02239394 ; =UNK_021064B8
+ bl NNS_GfdInitFrmPlttVramManager
+ ldr r3, _02239394 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #1
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _02239398 ; =UNK_021064C0
+ ldr r3, _02239398 ; =NNS_GfdDefaultFuncAllocPlttVram
add r4, r0, #0
ldr r3, [r3]
mov r0, #0x80
@@ -2774,8 +2774,8 @@ _02239384: .word 0xFFFFCFFD
_02239388: .word 0x0000CFFB
_0223938C: .word 0x04000540
_02239390: .word 0xBFFF0000
-_02239394: .word UNK_021064B8
-_02239398: .word UNK_021064C0
+_02239394: .word NNS_GfdDefaultFuncAllocTexVram
+_02239398: .word NNS_GfdDefaultFuncAllocPlttVram
_0223939C: .word 0x7FFF0000
_022393A0: .word 0xFFFF0000
thumb_func_end MOD81_022392D8
@@ -2829,9 +2829,9 @@ MOD81_022393F4: ; 0x022393F4
mov r3, #8
bl MOD81_0223874C
add r0, sp, #0x5c
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
add r0, sp, #0x38
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -2843,7 +2843,7 @@ MOD81_022393F4: ; 0x022393F4
str r0, [sp, #0x10]
mov r0, #0x5d
mov r1, #9
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x3a
str r0, [sp]
add r0, sp, #0x5c
@@ -2852,7 +2852,7 @@ MOD81_022393F4: ; 0x022393F4
mov r1, #0xa
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #2
add r1, r4, #0
str r0, [sp]
@@ -3687,7 +3687,7 @@ MOD81_022399FC: ; 0x022399FC
ldr r2, [r2]
mov r0, #0x5d
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3701,7 +3701,7 @@ MOD81_022399FC: ; 0x022399FC
mov r0, #0x5d
mov r1, #2
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
str r1, [sp]
add r2, r4, #0
@@ -3714,7 +3714,7 @@ MOD81_022399FC: ; 0x022399FC
ldr r2, [r2]
mov r0, #0x5d
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -3727,7 +3727,7 @@ MOD81_022399FC: ; 0x022399FC
ldr r2, [r2]
mov r0, #0x5d
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
bl MOD81_02238828
add r5, r0, #0
@@ -3739,7 +3739,7 @@ MOD81_022399FC: ; 0x022399FC
mov r0, #0x5d
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -3748,7 +3748,7 @@ MOD81_022399FC: ; 0x022399FC
mov r1, #3
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, _02239C90 ; =0x0223D07C
lsl r1, r5, #1
ldrh r5, [r0, r1]
@@ -3762,7 +3762,7 @@ MOD81_022399FC: ; 0x022399FC
mov r1, #3
mov r2, #0
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0x20
str r0, [sp]
mov r0, #0x40
@@ -3773,7 +3773,7 @@ MOD81_022399FC: ; 0x022399FC
mov r1, #3
mov r2, #4
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3787,7 +3787,7 @@ MOD81_022399FC: ; 0x022399FC
mov r0, #0x5d
mov r1, #5
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3801,7 +3801,7 @@ MOD81_022399FC: ; 0x022399FC
mov r0, #0x5d
mov r1, #5
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3815,7 +3815,7 @@ MOD81_022399FC: ; 0x022399FC
mov r0, #0x5d
mov r1, #4
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3829,7 +3829,7 @@ MOD81_022399FC: ; 0x022399FC
mov r0, #0x5d
mov r1, #4
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x3a
mov r1, #0x60
bl AllocFromHeap
@@ -3962,7 +3962,7 @@ MOD81_02239CDC: ; 0x02239CDC
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _02239DBC ; =0x04000060
ldr r1, _02239DC0 ; =0xFFFFCFFD
@@ -4006,11 +4006,11 @@ MOD81_02239CDC: ; 0x02239CDC
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -4099,9 +4099,9 @@ MOD81_02239E00: ; 0x02239E00
mov r3, #0xc
bl MOD81_0223874C
add r0, sp, #0x60
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
add r0, sp, #0x3c
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -4113,7 +4113,7 @@ MOD81_02239E00: ; 0x02239E00
str r0, [sp, #0x10]
mov r0, #0x5d
mov r1, #0xd
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r3, #0
str r3, [sp]
mov r0, #2
@@ -4126,7 +4126,7 @@ MOD81_02239E00: ; 0x02239E00
mov r0, #0x5d
mov r1, #0xd
mov r2, #1
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x3a
str r0, [sp]
add r0, sp, #0x60
@@ -4135,7 +4135,7 @@ MOD81_02239E00: ; 0x02239E00
mov r1, #0xe
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #0x3a
str r0, [sp]
add r0, sp, #0x60
@@ -4144,7 +4144,7 @@ MOD81_02239E00: ; 0x02239E00
mov r1, #0xe
mov r2, #2
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #1
add r1, r7, #0
str r0, [sp]
@@ -5775,7 +5775,7 @@ _0223AAE8:
mov r0, #0x5d
add r1, r7, #0
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -5787,7 +5787,7 @@ _0223AAE8:
mov r0, #0x5d
add r1, r7, #0
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -5799,7 +5799,7 @@ _0223AAE8:
ldr r2, [r4, #0x24]
mov r0, #0x5d
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -5811,7 +5811,7 @@ _0223AAE8:
ldr r2, [r4, #0x24]
mov r0, #0x5d
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -5821,7 +5821,7 @@ _0223AAE8:
mov r0, #0x5d
add r1, r6, #0
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -5832,7 +5832,7 @@ _0223AAE8:
add r1, r6, #0
mov r2, #4
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r1, #3
add r3, r1, #0
ldr r0, [r4, #0x24]
@@ -5879,7 +5879,7 @@ MOD81_0223ABD8: ; 0x0223ABD8
push {r3, r4, lr}
sub sp, #0x24
add r4, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _0223ACAC ; =0x04000060
ldr r1, _0223ACB0 ; =0xFFFFCFFD
@@ -5923,11 +5923,11 @@ MOD81_0223ABD8: ; 0x0223ABD8
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -6006,9 +6006,9 @@ MOD81_0223ACE8: ; 0x0223ACE8
mov r3, #8
bl MOD81_0223874C
add r0, sp, #0x5c
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
add r0, sp, #0x38
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -6020,7 +6020,7 @@ MOD81_0223ACE8: ; 0x0223ACE8
str r0, [sp, #0x10]
mov r0, #0x5d
mov r1, #9
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x3a
str r0, [sp]
add r0, sp, #0x5c
@@ -6029,7 +6029,7 @@ MOD81_0223ACE8: ; 0x0223ACE8
mov r1, #0xa
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #0
add r1, r4, #0
str r0, [sp]
@@ -6769,7 +6769,7 @@ MOD81_0223B264: ; 0x0223B264
mov r0, #0x5d
mov r1, #0x13
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6781,7 +6781,7 @@ MOD81_0223B264: ; 0x0223B264
mov r0, #0x5d
mov r1, #0x13
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6793,7 +6793,7 @@ MOD81_0223B264: ; 0x0223B264
mov r0, #0x5d
mov r1, #0x12
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6805,7 +6805,7 @@ MOD81_0223B264: ; 0x0223B264
mov r0, #0x5d
mov r1, #0x12
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -6814,7 +6814,7 @@ MOD81_0223B264: ; 0x0223B264
mov r0, #0x5d
mov r1, #0x14
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -6823,7 +6823,7 @@ MOD81_0223B264: ; 0x0223B264
mov r1, #0x14
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0xc8
str r0, [sp]
mov r1, #1
@@ -7284,7 +7284,7 @@ _0223B6F0:
mov r0, #0x5d
add r1, r7, #0
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -7296,7 +7296,7 @@ _0223B6F0:
mov r0, #0x5d
add r1, r7, #0
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -7308,7 +7308,7 @@ _0223B6F0:
ldr r2, [r4, #0x24]
mov r0, #0x5d
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -7320,7 +7320,7 @@ _0223B6F0:
ldr r2, [r4, #0x24]
mov r0, #0x5d
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -7330,7 +7330,7 @@ _0223B6F0:
mov r0, #0x5d
add r1, r6, #0
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -7341,7 +7341,7 @@ _0223B6F0:
add r1, r6, #0
mov r2, #4
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r1, #3
ldr r0, [r4, #0x24]
add r2, r1, #0
@@ -7391,7 +7391,7 @@ MOD81_0223B7E8: ; 0x0223B7E8
push {r3, r4, lr}
sub sp, #0x24
add r4, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _0223B8C8 ; =0x04000060
ldr r1, _0223B8CC ; =0xFFFFCFFD
@@ -7435,11 +7435,11 @@ MOD81_0223B7E8: ; 0x0223B7E8
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -7525,9 +7525,9 @@ MOD81_0223B908: ; 0x0223B908
mov r3, #8
bl MOD81_0223874C
add r0, sp, #0x5c
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
add r0, sp, #0x38
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -7539,7 +7539,7 @@ MOD81_0223B908: ; 0x0223B908
str r0, [sp, #0x10]
mov r0, #0x5d
mov r1, #9
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x3a
str r0, [sp]
add r0, sp, #0x5c
@@ -7548,7 +7548,7 @@ MOD81_0223B908: ; 0x0223B908
mov r1, #0xa
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #1
add r1, r4, #0
str r0, [sp]
@@ -8417,7 +8417,7 @@ MOD81_0223BF74: ; 0x0223BF74
ldr r2, [r4, #0xc]
mov r0, #0x5d
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8429,7 +8429,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r0, #0x5d
mov r1, #2
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8440,7 +8440,7 @@ MOD81_0223BF74: ; 0x0223BF74
ldr r2, [r4, #0xc]
mov r0, #0x5d
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8451,7 +8451,7 @@ MOD81_0223BF74: ; 0x0223BF74
ldr r2, [r4, #0xc]
mov r0, #0x5d
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
bl MOD81_02238828
add r5, r0, #0
@@ -8463,7 +8463,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r0, #0x5d
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -8472,7 +8472,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r1, #3
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, _0223C1A0 ; =0x0223D280
lsl r1, r5, #1
ldrh r5, [r0, r1]
@@ -8486,7 +8486,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r1, #3
mov r2, #0
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0x20
str r0, [sp]
mov r0, #0x40
@@ -8497,7 +8497,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r1, #3
mov r2, #4
add r3, r5, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8509,7 +8509,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r0, #0x5d
mov r1, #5
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8521,7 +8521,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r0, #0x5d
mov r1, #5
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8533,7 +8533,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r0, #0x5d
mov r1, #4
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -8545,7 +8545,7 @@ MOD81_0223BF74: ; 0x0223BF74
mov r0, #0x5d
mov r1, #4
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x3a
mov r1, #0x60
bl AllocFromHeap
@@ -8643,7 +8643,7 @@ MOD81_0223C1DC: ; 0x0223C1DC
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _0223C2C0 ; =0x04000060
ldr r1, _0223C2C4 ; =0xFFFFCFFD
@@ -8687,11 +8687,11 @@ MOD81_0223C1DC: ; 0x0223C1DC
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -9177,9 +9177,9 @@ MOD81_0223C60C: ; 0x0223C60C
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
- bl FUN_020BB394
- bl FUN_020B02C8
+ bl NNS_G3dGeBufferOP_N
+ bl NNS_G3dGeFlushBuffer
+ bl NNS_G2dSetupSoftwareSpriteCamera
ldr r0, [r4, #0x10]
bl FUN_020081C4
ldr r0, [r4, #0x10]
@@ -9188,7 +9188,7 @@ MOD81_0223C60C: ; 0x0223C60C
str r2, [sp]
mov r0, #0x12
add r1, sp, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
ldr r0, [r4, #0x60]
cmp r0, #0
beq _0223C64A
@@ -9281,7 +9281,7 @@ MOD81_0223C658: ; 0x0223C658
add r0, r4, #0
add r0, #0x48
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0x20
str r3, [sp]
mov r0, #0x3a
@@ -9289,7 +9289,7 @@ MOD81_0223C658: ; 0x0223C658
mov r0, #0xe
mov r1, #7
mov r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
ldr r0, [r4, #0x44]
mov r1, #1
bl FUN_02017CD0
@@ -9304,7 +9304,7 @@ MOD81_0223C658: ; 0x0223C658
mov r0, #0x5d
mov r1, #0x16
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -9316,7 +9316,7 @@ MOD81_0223C658: ; 0x0223C658
mov r0, #0x5d
mov r1, #0x15
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x3a
@@ -9325,7 +9325,7 @@ MOD81_0223C658: ; 0x0223C658
mov r0, #0x5d
mov r1, #0x17
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add r0, r4, #0
bl MOD81_0223CAC4
mov r1, #0
@@ -9611,7 +9611,7 @@ _0223C982:
add r0, #0x48
bl CopyWindowToVram
ldr r0, _0223CA90 ; =0x00000484
- bl PlayBGM
+ bl PlaySound
mov r0, #0
str r0, [r4, #8]
mov r0, #1
@@ -9640,7 +9640,7 @@ _0223C9D0:
add r0, r4, #0
add r0, #0x48
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -9746,7 +9746,7 @@ MOD81_0223CAC4: ; 0x0223CAC4
push {r3, r4, r5, r6, lr}
sub sp, #4
add r5, r0, #0
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _0223CB6C ; =0x04000060
ldr r2, _0223CB70 ; =0xFFFFCFFD
@@ -9782,19 +9782,19 @@ MOD81_0223CAC4: ; 0x0223CAC4
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
- ldr r3, _0223CB80 ; =UNK_021064B8
+ bl NNS_GfdInitFrmPlttVramManager
+ ldr r3, _0223CB80 ; =NNS_GfdDefaultFuncAllocTexVram
mov r0, #1
mov r1, #0
ldr r3, [r3]
lsl r0, r0, #0xe
add r2, r1, #0
blx r3
- ldr r3, _0223CB84 ; =UNK_021064C0
+ ldr r3, _0223CB84 ; =NNS_GfdDefaultFuncAllocPlttVram
add r4, r0, #0
ldr r3, [r3]
mov r0, #0x80
@@ -9826,8 +9826,8 @@ _0223CB70: .word 0xFFFFCFFD
_0223CB74: .word 0x0000CFFB
_0223CB78: .word 0x04000540
_0223CB7C: .word 0xBFFF0000
-_0223CB80: .word UNK_021064B8
-_0223CB84: .word UNK_021064C0
+_0223CB80: .word NNS_GfdDefaultFuncAllocTexVram
+_0223CB84: .word NNS_GfdDefaultFuncAllocPlttVram
_0223CB88: .word 0x7FFF0000
_0223CB8C: .word 0xFFFF0000
thumb_func_end MOD81_0223CAC4
@@ -9881,9 +9881,9 @@ MOD81_0223CBE0: ; 0x0223CBE0
mov r3, #8
bl MOD81_0223874C
add r0, sp, #0x5c
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
add r0, sp, #0x38
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r3, #0
str r3, [sp]
mov r2, #1
@@ -9895,7 +9895,7 @@ MOD81_0223CBE0: ; 0x0223CBE0
str r0, [sp, #0x10]
mov r0, #0x5d
mov r1, #9
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x3a
str r0, [sp]
add r0, sp, #0x5c
@@ -9904,7 +9904,7 @@ MOD81_0223CBE0: ; 0x0223CBE0
mov r1, #0xa
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #2
add r1, r4, #0
str r0, [sp]
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index b9d0df31..f1a3e494 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -715,7 +715,7 @@ _0222DA48:
mov r1, #2
lsl r1, r1, #0x10
mov r2, #0
- bl tempName_NNS_FndCreateExpHeapEx
+ bl NNS_FndCreateExpHeapEx
str r0, [r4, #0x28]
mov r0, #1
str r0, [r5]
@@ -984,7 +984,7 @@ MOD82_0222DD54: ; 0x0222DD54
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -1256,7 +1256,7 @@ MOD82_0222DF74: ; 0x0222DF74
add r1, r5, #0
ldr r0, [r0, #4]
add r2, r4, #0
- bl tempName_NNS_FndAllocFromExpHeapEx
+ bl NNS_FndAllocFromExpHeapEx
add r4, r0, #0
add r0, r6, #0
bl OS_RestoreInterrupts
@@ -1276,7 +1276,7 @@ MOD82_0222DF9C: ; 0x0222DF9C
ldr r0, _0222DFBC ; =0x0222FC0C
add r1, r5, #0
ldr r0, [r0, #4]
- bl FUN_020ADDF0
+ bl NNS_FndFreeToExpHeap
add r0, r4, #0
bl OS_RestoreInterrupts
_0222DFB8:
@@ -1617,7 +1617,7 @@ MOD82_0222E264: ; 0x0222E264
mov r0, #0x5c
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r3, #0
str r3, [sp]
mov r0, #0x44
@@ -1625,7 +1625,7 @@ MOD82_0222E264: ; 0x0222E264
mov r0, #0x5c
mov r1, #3
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -1669,7 +1669,7 @@ MOD82_0222E264: ; 0x0222E264
mov r1, #2
add r2, r4, #0
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #6
str r1, [sp]
@@ -1682,7 +1682,7 @@ MOD82_0222E264: ; 0x0222E264
mov r1, #4
add r2, r4, #0
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r1, #0
mov r0, #0x36
str r1, [sp]
@@ -1695,7 +1695,7 @@ MOD82_0222E264: ; 0x0222E264
mov r1, #9
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r1, #0
mov r0, #6
str r1, [sp]
@@ -1708,7 +1708,7 @@ MOD82_0222E264: ; 0x0222E264
mov r1, #0xa
add r2, r4, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
bl FUN_02017FE4
@@ -1744,7 +1744,7 @@ MOD82_0222E35C: ; 0x0222E35C
lsl r0, r0, #6
add r0, r4, r0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xe
str r0, [sp]
mov r0, #4
@@ -1766,7 +1766,7 @@ MOD82_0222E35C: ; 0x0222E35C
lsl r0, r0, #4
add r0, r4, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0xe
str r0, [sp]
mov r0, #4
@@ -1788,7 +1788,7 @@ MOD82_0222E35C: ; 0x0222E35C
lsl r0, r0, #4
add r0, r4, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r2, #1
mov r1, #0xdb
lsl r1, r1, #4
@@ -1810,7 +1810,7 @@ MOD82_0222E35C: ; 0x0222E35C
lsl r0, r0, #4
add r0, r4, r0
mov r1, #6
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #1
ldr r0, _0222E46C ; =0x00010406
str r3, [sp]
@@ -1842,7 +1842,7 @@ MOD82_0222E35C: ; 0x0222E35C
lsl r0, r0, #6
add r0, r4, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -4037,7 +4037,7 @@ MOD82_0222F4D8: ; 0x0222F4D8
lsl r0, r0, #6
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x36
lsl r0, r0, #6
add r0, r5, r0
@@ -4132,7 +4132,7 @@ MOD82_0222F59C: ; 0x0222F59C
lsl r0, r0, #6
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x36
lsl r0, r0, #6
add r0, r5, r0
@@ -4258,7 +4258,7 @@ MOD82_0222F694: ; 0x0222F694
add r5, r0, #0
add r6, r2, #0
add r7, r3, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #1
str r0, [sp]
add r0, r4, #0
@@ -4375,7 +4375,7 @@ MOD82_0222F740: ; 0x0222F740
lsl r0, r0, #6
add r0, r5, r0
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r0, #0x37
lsl r0, r0, #6
add r0, r5, r0
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 7e36aa68..09c161b4 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -434,10 +434,10 @@ _0222D8B2:
bl FUN_0201AB18
add r7, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r5, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_0201AB10
+ bl GetWindowHeight
str r5, [sp]
str r0, [sp, #4]
mov r0, #0
@@ -792,7 +792,7 @@ MOD83_0222DBD0: ; 0x0222DBD0
mov r1, #0x29
mov r2, #0
mov r3, #0x80
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0xe
lsl r0, r0, #6
str r0, [sp]
@@ -807,7 +807,7 @@ MOD83_0222DBD0: ; 0x0222DBD0
mov r0, #0x74
mov r1, #0x28
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -901,14 +901,14 @@ MOD83_0222DCA0: ; 0x0222DCA0
add r5, r0, #0
mov r0, #0
mov r1, #2
- bl FUN_02002E4C
+ bl GetFontAttribute
add r2, r0, #0
mov r0, #0
add r1, r5, #0
bl FUN_02002E14
add r4, r0, #0
add r0, r6, #0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
add r4, #0x20
sub r3, r0, r4
@@ -1601,10 +1601,10 @@ _0222E206:
bl FUN_0201AB18
str r0, [sp, #0x14]
add r0, r5, #0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0
add r0, r5, #0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp]
str r0, [sp, #4]
mov r0, #0
@@ -1628,10 +1628,10 @@ _0222E256:
bl FUN_0201AB18
str r0, [sp, #0x1c]
add r0, r5, #0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0
add r0, r5, #0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp]
str r0, [sp, #4]
mov r0, #1
@@ -1707,7 +1707,7 @@ MOD83_0222E2E4: ; 0x0222E2E4
add r1, #0x5c
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_0201AB10
+ bl GetWindowHeight
add r0, r0, #2
lsl r3, r0, #3
mov r0, #0x42
@@ -1769,7 +1769,7 @@ _0222E362:
sub r0, r0, #1
lsl r4, r0, #3
add r0, r5, #0
- bl FUN_0201AB10
+ bl GetWindowHeight
cmp r7, r4
ble _0222E384
mov r0, #1
@@ -2581,7 +2581,7 @@ _0222E960:
add r3, r0, #0
add r2, r1, #0
add r3, #0x8c
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #5
@@ -2594,7 +2594,7 @@ _0222E960:
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0x74
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2607,7 +2607,7 @@ _0222E960:
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0x74
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -2645,7 +2645,7 @@ MOD83_0222EA88: ; 0x0222EA88
mov r0, #0x74
mov r1, #0
add r3, #0xfc
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #5
@@ -2658,7 +2658,7 @@ MOD83_0222EA88: ; 0x0222EA88
str r0, [sp, #0xc]
ldr r2, [r4, #4]
mov r0, #0x74
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -2672,7 +2672,7 @@ MOD83_0222EA88: ; 0x0222EA88
ldr r2, [r4, #4]
mov r0, #0x74
mov r3, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -2926,7 +2926,7 @@ MOD83_0222EC78: ; 0x0222EC78
add r1, #0xf8
str r0, [r1]
mov r1, #1
- bl FUN_02002E4C
+ bl GetFontAttribute
add r2, r0, #0
add r0, r5, #0
add r0, #0xf0
@@ -4538,7 +4538,7 @@ MOD83_0222F9DC: ; 0x0222F9DC
ldr r1, _0222F9F4 ; =MOD83_0223B884
mov r0, #0xf
ldr r1, [r1]
- bl FUN_02016A8C
+ bl FreeToHeapExplicit
ldr r0, _0222F9F4 ; =MOD83_0223B884
mov r1, #0
str r1, [r0]
@@ -4609,14 +4609,14 @@ MOD83_0222FA4C: ; 0x0222FA4C
ldr r0, [r7, #0x7c]
cmp r0, #0
beq _0222FA62
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
_0222FA62:
ldr r0, [r7, #0x78]
cmp r0, #0
beq _0222FA70
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
_0222FA70:
add r0, r7, #0
add r0, #0x18
@@ -5690,7 +5690,7 @@ MOD83_022302B4: ; 0x022302B4
mov r0, #0x74
mov r1, #0
add r3, #0xfc
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #5
@@ -5703,7 +5703,7 @@ MOD83_022302B4: ; 0x022302B4
mov r0, #0x74
add r2, r4, #0
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -5717,7 +5717,7 @@ MOD83_022302B4: ; 0x022302B4
mov r1, #2
add r2, r4, #0
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -5751,7 +5751,7 @@ MOD83_02230330: ; 0x02230330
add r3, r0, #0
add r2, r1, #0
add r3, #0x8c
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #5
@@ -5764,7 +5764,7 @@ MOD83_02230330: ; 0x02230330
mov r0, #0x74
add r2, r4, #0
add r3, r1, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -5777,7 +5777,7 @@ MOD83_02230330: ; 0x02230330
mov r0, #0x74
mov r1, #2
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -5812,11 +5812,11 @@ MOD83_022303B0: ; 0x022303B0
ldr r0, [r4, #0x7c]
cmp r0, #0
beq _022303CC
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
_022303CC:
add r0, r7, #0
mov r1, #0x56
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
str r0, [r4, #0x7c]
ldr r2, _0223045C ; =0x00000172
mov r0, #0
@@ -5832,7 +5832,7 @@ _022303EA:
ldr r1, [r4, #0x10]
ldr r2, [r5]
ldr r3, [r5, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r5, #8
cmp r6, r7
@@ -5863,13 +5863,13 @@ _022303FE:
beq _02230436
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
_02230436:
mov r1, #0
add r0, sp, #8
add r2, r1, #0
mov r3, #0x56
- bl FUN_020010A8
+ bl ListMenuInit
str r0, [r4, #0x78]
mov r0, #0
ldr r2, [sp, #0x40]
@@ -5990,10 +5990,10 @@ MOD83_0223050C: ; 0x0223050C
str r0, [r4, #0xc]
mov r0, #1
mov r1, #6
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0
add r0, r5, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r6, [r4, #0x14]
cmp r6, #0
bne _02230554
@@ -6056,10 +6056,10 @@ MOD83_022305A4: ; 0x022305A4
bl CopyU16ArrayToStringN
mov r0, #0
mov r1, #6
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0
add r0, r5, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -6092,7 +6092,7 @@ MOD83_02230604: ; 0x02230604
add r6, r2, #0
bl OverlayManager_GetData
ldr r0, [r0, #0x78]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
mov r0, #1
mvn r0, r0
@@ -8142,7 +8142,7 @@ MOD83_022316F0: ; 0x022316F0
str r3, [sp]
cmp r0, #0
beq _02231708
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
_02231708:
ldr r0, _02231798 ; =0x00002B68
ldr r0, [r5, r0]
@@ -8150,11 +8150,11 @@ _02231708:
beq _02231718
mov r1, #0
add r2, r1, #0
- bl FUN_02001300
+ bl DestroyListMenu
_02231718:
add r0, r7, #0
mov r1, #0x57
- bl ListMenu_ctor
+ bl ListMenuItems_ctor
ldr r1, _02231794 ; =0x00002B6C
ldr r2, _0223179C ; =0x00000172
str r0, [r5, r1]
@@ -8174,7 +8174,7 @@ _0223173A:
ldr r1, [r5, r1]
ldr r2, [r4]
ldr r3, [r4, #4]
- bl ListMenu_ItemFromMsgData
+ bl ListMenuItems_AppendFromMsgData
add r6, r6, #1
add r4, #8
cmp r6, r7
@@ -8205,7 +8205,7 @@ _02231752:
str r0, [sp, #0x10]
add r0, r2, #0
add r2, r1, #0
- bl FUN_020010A8
+ bl ListMenuInit
ldr r1, _02231798 ; =0x00002B68
str r0, [r5, r1]
add sp, #0x24
@@ -8235,10 +8235,10 @@ MOD83_022317A8: ; 0x022317A8
add r6, r0, #0
mov r0, #1
mov r1, #6
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0
add r0, r5, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r6, #0
add r1, r4, #0
add r2, r7, #0
@@ -8285,7 +8285,7 @@ MOD83_02231820: ; 0x02231820
mov r1, #0xb
mov r2, #0
lsl r3, r3, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0x20
str r0, [sp]
mov r0, #0x57
@@ -8295,7 +8295,7 @@ MOD83_02231820: ; 0x02231820
mov r1, #0x10
mov r2, #0
lsl r3, r3, #6
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #3
@@ -8308,7 +8308,7 @@ MOD83_02231820: ; 0x02231820
mov r0, #0x74
mov r1, #0x11
add r2, r4, #0
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
mov r0, #6
@@ -8321,7 +8321,7 @@ MOD83_02231820: ; 0x02231820
mov r0, #0x74
mov r1, #0x12
add r2, r4, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -8503,14 +8503,14 @@ MOD83_02231A00: ; 0x02231A00
add r4, r0, #0
ldr r0, _02231A40 ; =0x00002B6C
ldr r0, [r4, r0]
- bl ListMenu_dtor
+ bl ListMenuItems_dtor
mov r1, #0
ldr r0, _02231A40 ; =0x00002B6C
add r2, r1, #0
str r1, [r4, r0]
sub r0, r0, #4
ldr r0, [r4, r0]
- bl FUN_02001300
+ bl DestroyListMenu
ldr r0, _02231A44 ; =0x00002B68
mov r1, #0
str r1, [r4, r0]
@@ -9122,10 +9122,10 @@ _02231EBE:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_02002E4C
+ bl GetFontAttribute
add r1, r0, #0
add r0, r6, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x18]
ldr r3, [r4, #0x24]
str r0, [sp, #0x28]
@@ -9249,7 +9249,7 @@ _02231FD2:
add r0, r6, #0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x20]
cmp r0, #0
beq _02231FFE
@@ -9382,10 +9382,10 @@ MOD83_022320D8: ; 0x022320D8
add r6, r3, #0
ldr r3, [r5]
mov r0, #0x74
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r1, sp, #4
add r7, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r0, _02232114 ; =0x0000299C
ldr r2, [sp, #4]
lsl r1, r4, #0x18
@@ -9417,7 +9417,7 @@ MOD83_02232118: ; 0x02232118
mov r0, #0x74
mov r1, #3
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #3
@@ -9431,7 +9431,7 @@ MOD83_02232118: ; 0x02232118
ldr r2, [r5, r2]
mov r0, #0x74
mov r1, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
cmp r4, #0
beq _0223215E
cmp r4, #1
@@ -9451,7 +9451,7 @@ _0223215E:
ldr r2, [r5, r2]
mov r0, #0x74
mov r1, #4
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
b _0223219C
_0223217E:
mov r0, #0
@@ -9467,7 +9467,7 @@ _0223217E:
ldr r2, [r5, r2]
mov r0, #0x74
mov r1, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
_0223219C:
mov r0, #0x20
str r0, [sp]
@@ -9478,7 +9478,7 @@ _0223219C:
add r3, r0, #0
add r2, r1, #0
add r3, #0xec
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -9492,7 +9492,7 @@ _0223219C:
ldr r2, [r5, r2]
mov r0, #0x74
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #3
add r0, r5, #0
mov r1, #2
@@ -9529,7 +9529,7 @@ MOD83_02232208: ; 0x02232208
bl OverlayManager_GetData
ldr r1, _02232270 ; =0x00002B68
ldr r0, [r0, r1]
- bl FUN_02001204
+ bl ListMenu_ProcessInput
add r4, r0, #0
mov r0, #1
mvn r0, r0
@@ -9622,7 +9622,7 @@ _022322A8:
str r0, [sp, #4]
mov r0, #0x13
mov r3, #0x60
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
_022322DC:
mov r0, #0xb2
mov r6, #0
@@ -9673,7 +9673,7 @@ _02232312:
str r0, [sp]
mov r0, #0x13
add r3, sp, #0x18
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0x14]
ldr r0, [sp, #0x18]
mov r1, #2
@@ -10694,7 +10694,7 @@ _02232B94:
ldr r0, _02232D1C ; =0x00002AA8
mov r1, #0
add r0, r4, r0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _02232D1C ; =0x00002AA8
add r0, r4, r0
bl CopyWindowToVram
@@ -11088,7 +11088,7 @@ _02232E7E:
mov r5, #0
ldr r0, [sp, #0x10]
add r1, r5, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, #0
str r0, [sp, #0x14]
cmp r6, #0
@@ -11230,7 +11230,7 @@ MOD83_02232FE4: ; 0x02232FE4
str r0, [r5, r1]
add r0, r4, #0
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r3, #1
str r3, [sp]
ldr r0, _0223307C ; =0x000029A0
@@ -15511,7 +15511,7 @@ _02234F7A:
ldr r0, [r5]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_02019620
+ bl FillWindowPixelBuffer
_02234F8C:
mov r0, #0
ldr r1, [r5, #0x34]
@@ -15684,7 +15684,7 @@ MOD83_022350EC: ; 0x022350EC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -15800,7 +15800,7 @@ _02235132:
str r0, [sp, #4]
mov r0, #0x13
add r3, #0xff
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD83_022350EC
@@ -15971,7 +15971,7 @@ MOD83_022352FC: ; 0x022352FC
bl ReadWholeNarcMemberByIdPair
add r0, r4, #0
add r1, r7, #0
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
cmp r0, #0
bne _02235330
add r0, r4, #0
@@ -15994,7 +15994,7 @@ MOD83_02235334: ; 0x02235334
bl NARC_ReadWholeMember
add r0, r4, #0
add r1, r5, #0
- bl FUN_020B0030
+ bl NNS_G2dGetUnpackedBGCharacterData
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD83_02235334
@@ -17545,7 +17545,7 @@ _02235F48:
mov r0, #0x74
mov r1, #0x13
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
mov r0, #5
@@ -17559,7 +17559,7 @@ _02235F48:
mov r0, #0x74
mov r1, #0x16
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #2
mov r1, #0x4e
bl FUN_02002C50
@@ -17588,7 +17588,7 @@ MOD83_02235FBC: ; 0x02235FBC
mov r0, #0x74
mov r1, #0x14
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -17846,7 +17846,7 @@ _02236148:
mov r0, #0x74
mov r1, #0x15
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -18576,7 +18576,7 @@ MOD83_02236804: ; 0x02236804
bl CTRDG_IsPulledOut
cmp r0, #1
beq _02236822
- ldr r0, _02236B3C ; =gBacklightTop + 4
+ ldr r0, _02236B3C ; =UNK_02016FA4
ldr r0, [r0]
cmp r0, #0
beq _02236828
@@ -18966,7 +18966,7 @@ _02236B2E:
str r0, [r5]
b _02236D90
.align 2, 0
-_02236B3C: .word gBacklightTop + 4
+_02236B3C: .word UNK_02016FA4
_02236B40: .word 0x000004A8
_02236B44: .word 0x000004AC
_02236B48: .word 0x0000E880
@@ -23084,7 +23084,7 @@ MOD83_0223894C: ; 0x0223894C
add r1, #0x48
ldrb r1, [r1]
ldr r0, [r5, #0x10]
- bl FUN_02019620
+ bl FillWindowPixelBuffer
_02238976:
mov r0, #0
ldr r1, [r5, #0x4c]
@@ -23133,14 +23133,14 @@ _022389D0:
mov r1, #2
lsl r0, r0, #0x18
lsr r0, r0, #0x18
- bl FUN_02002E4C
+ bl GetFontAttribute
add r2, r0, #0
ldr r0, [r5, #0x40]
add r1, r4, #0
bl FUN_02002E14
add r7, r0, #0
ldr r0, [r5, #0x10]
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r3, r0, r7
ldr r0, [r5, #0x24]
@@ -23333,7 +23333,7 @@ MOD83_02238B4C: ; 0x02238B4C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
ldr r6, _02238BB4 ; =MOD83_0223BC30
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x7e
@@ -23956,7 +23956,7 @@ MOD83_02238F94: ; 0x02238F94
str r0, [sp, #4]
ldrh r0, [r4]
ldrh r1, [r4, #4]
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -24183,7 +24183,7 @@ MOD83_022391CC: ; 0x022391CC
mov r0, #0x74
mov r1, #0x1d
add r3, #0xfc
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #8
pop {r3, pc}
.align 2, 0
@@ -24213,17 +24213,17 @@ MOD83_022391EC: ; 0x022391EC
str r0, [sp, #0xc]
mov r0, #0x74
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r2, #1
ldr r3, _022392DC ; =MOD83_0223BC30
str r2, [sp]
ldr r3, [r3, #4]
mov r0, #0x74
mov r1, #0x1f
- bl UncompressFromNarc
+ bl GfGfxLoader_LoadFromNarc
add r1, sp, #0x14
str r0, [sp, #0x10]
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
ldr r2, [sp, #0x14]
mov r3, #6
add r0, r5, #0
diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s
index 53dfe036..a5838988 100644
--- a/arm9/modules/84/asm/module_84_thumb1.s
+++ b/arm9/modules/84/asm/module_84_thumb1.s
@@ -55,7 +55,7 @@ _021D7516:
str r0, [r4, #0x18]
mov r0, #0
str r0, [r4, #0x1c]
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -596,7 +596,7 @@ MOD84_021D7968: ; 0x021D7968
mov r0, #0x7f
mov r1, #0x42
add r3, r2, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r3, #0
str r3, [sp]
mov r0, #0x20
@@ -606,7 +606,7 @@ MOD84_021D7968: ; 0x021D7968
mov r0, #0x7f
mov r1, #0x42
mov r2, #4
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
ldr r2, _021D7A74 ; =0x04000050
mov r0, #0
add r3, r2, #0
@@ -727,7 +727,7 @@ MOD84_021D7AB8: ; 0x021D7AB8
thumb_func_start MOD84_021D7AC8
MOD84_021D7AC8: ; 0x021D7AC8
push {r3, lr}
- bl FUN_020BB7F4
+ bl NNS_G3dInit
bl G3X_InitMtxStack
ldr r0, _021D7B3C ; =0x04000060
ldr r2, _021D7B40 ; =0xFFFFCFFD
@@ -761,11 +761,11 @@ MOD84_021D7AC8: ; 0x021D7AC8
str r0, [r1, #0x40]
mov r0, #1
add r1, r0, #0
- bl FUN_020AEB70
+ bl NNS_GfdInitFrmTexVramManager
mov r0, #1
lsl r0, r0, #0xe
mov r1, #1
- bl FUN_020AEDF4
+ bl NNS_GfdInitFrmPlttVramManager
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -859,7 +859,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
mov r1, #1
mov r3, #0x4b
add r4, #0x38
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
str r0, [r5, #0x38]
ldr r1, [sp, #8]
bl DC_FlushRange
@@ -899,7 +899,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
add r0, #0x98
strh r1, [r0]
ldr r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
str r0, [r4, #0x5c]
ldrh r1, [r0, #0xe]
add r1, r0, r1
@@ -907,7 +907,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
add r0, r0, r1
str r0, [r4, #0x60]
ldr r0, [r4]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r4, #0x64]
bl FUN_0201B3C4
ldr r0, [r4]
@@ -916,7 +916,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
add r0, r4, #0
ldr r1, [r4, #0x60]
add r0, #8
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
mov r2, #0
str r2, [sp]
add r0, sp, #8
@@ -924,7 +924,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
mov r0, #0x7f
mov r1, #3
mov r3, #0x4b
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
str r0, [r4, #4]
cmp r0, #0
beq _021D7CCC
@@ -937,22 +937,22 @@ MOD84_021D7BC8: ; 0x021D7BC8
bl FUN_02016B20
ldr r0, [r4, #4]
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
add r5, r0, #0
add r0, r4, #0
ldr r2, [r4, #0x60]
add r0, #0x6c
add r1, r5, #0
- bl FUN_020BB8D0
+ bl NNS_G3dAllocAnmObj
str r0, [r4, #0x68]
ldr r2, [r4, #0x60]
ldr r3, [r4, #0x64]
add r1, r5, #0
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
add r0, r4, #0
ldr r1, [r4, #0x68]
add r0, #8
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r4, #0
mov r1, #0
add r0, #0x9c
@@ -981,7 +981,7 @@ MOD84_021D7CD4: ; 0x021D7CD4
add r0, r4, #0
ldr r1, [r4, #0x68]
add r0, #0x6c
- bl thunk_FUN_020ae84c
+ bl NNS_G3dFreeAnmObj
ldr r0, [r4, #4]
bl FreeToHeap
_021D7CF0:
@@ -1002,7 +1002,7 @@ MOD84_021D7CFC: ; 0x021D7CFC
mov r1, #0
mov r0, #0x11
add r2, r1, #0
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
bl FUN_0201EBA4
add r4, #0x38
add r0, sp, #0x28
@@ -1010,7 +1010,7 @@ MOD84_021D7CFC: ; 0x021D7CFC
add r0, r4, #0
add r0, #0x94
ldrh r0, [r0]
- ldr r3, _021D7DF0 ; =UNK_020FFA38
+ ldr r3, _021D7DF0 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1027,7 +1027,7 @@ MOD84_021D7CFC: ; 0x021D7CFC
add r0, r4, #0
add r0, #0x96
ldrh r0, [r0]
- ldr r3, _021D7DF0 ; =UNK_020FFA38
+ ldr r3, _021D7DF0 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1044,7 +1044,7 @@ MOD84_021D7CFC: ; 0x021D7CFC
add r0, r4, #0
add r0, #0x98
ldrh r0, [r0]
- ldr r3, _021D7DF0 ; =UNK_020FFA38
+ ldr r3, _021D7DF0 ; =FX_SinCosTable_
asr r0, r0, #4
lsl r2, r0, #1
lsl r1, r2, #1
@@ -1098,14 +1098,14 @@ _021D7DBA:
mov r0, #0x12
add r1, sp, #0
str r2, [sp]
- bl FUN_020BB1C0
+ bl NNS_G3dGeBufferOP_N
mov r0, #0
mov r1, #1
bl FUN_020222B4
add sp, #0x4c
pop {r3, r4, pc}
nop
-_021D7DF0: .word UNK_020FFA38
+_021D7DF0: .word FX_SinCosTable_
thumb_func_end MOD84_021D7CFC
thumb_func_start MOD84_021D7DF4
@@ -1129,7 +1129,7 @@ _021D7E08:
str r0, [sp, #4]
mov r0, #0x7f
mov r3, #0x4b
- bl FUN_02006D18
+ bl GfGfxLoader_LoadFromNarc_GetSizeOut
str r0, [r4]
cmp r0, #0
beq _021D7E9A
@@ -1168,7 +1168,7 @@ _021D7E08:
add r0, #0x98
strh r1, [r0]
ldr r0, [r4]
- bl FUN_020BC13C
+ bl NNS_G3dGetMdlSet
str r0, [r4, #0x5c]
ldrh r1, [r0, #0xe]
add r1, r0, r1
@@ -1176,7 +1176,7 @@ _021D7E08:
add r0, r0, r1
str r0, [r4, #0x60]
ldr r0, [r4]
- bl FUN_020BC0FC
+ bl NNS_G3dGetTex
str r0, [r4, #0x64]
bl FUN_0201B3C4
ldr r0, [r4]
@@ -1185,22 +1185,22 @@ _021D7E08:
add r0, r4, #0
ldr r1, [r4, #0x60]
add r0, #8
- bl FUN_020B80B4
+ bl NNS_G3dRenderObjInit
_021D7E9A:
ldr r0, [r4, #4]
cmp r0, #0
beq _021D7ED0
mov r1, #0
- bl FUN_020BC4C8
+ bl NNS_G3dGetAnmByIdx
add r1, r0, #0
ldr r0, [r4, #0x68]
ldr r2, [r4, #0x60]
ldr r3, [r4, #0x64]
- bl FUN_020B8110
+ bl NNS_G3dAnmObjInit
add r0, r4, #0
ldr r1, [r4, #0x68]
add r0, #8
- bl FUN_020B7EFC
+ bl NNS_G3dRenderObjAddAnmObj
add r0, r4, #0
mov r1, #0
add r0, #0x9c
@@ -1227,27 +1227,27 @@ MOD84_021D7EDC: ; 0x021D7EDC
mov r0, #0x82
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r0, #0x8b
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r0, #0x25
lsl r0, r0, #4
add r0, r5, r0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r0, #0x9d
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0xa2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0xa7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
ldr r0, [r5, #0x18]
ldr r0, [r0]
cmp r0, #1
@@ -1274,7 +1274,7 @@ _021D7F2C:
ldrh r1, [r1, r4]
mov r0, #0x7f
add r3, r2, #0
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x4b
ldr r1, _021D7F88 ; =0x021DA662
str r0, [sp]
@@ -1286,7 +1286,7 @@ _021D7F2C:
mov r0, #0x7f
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
ldr r1, _021D7F8C ; =0x021DA664
ldr r2, _021D7F90 ; =0x021DA666
ldrh r1, [r1, r4]
diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s
index 66e7a196..17f9316e 100644
--- a/arm9/modules/84/asm/module_84_thumb2.s
+++ b/arm9/modules/84/asm/module_84_thumb2.s
@@ -105,7 +105,7 @@ MOD84_021D81DC: ; 0x021D81DC
add r1, r6, #0
mov r2, #0
add r3, #8
- bl FUN_02006C30
+ bl GfGfxLoader_GetCellBank
str r0, [r4]
mov r0, #0x4b
add r3, r4, #0
@@ -114,7 +114,7 @@ MOD84_021D81DC: ; 0x021D81DC
add r1, r7, #0
mov r2, #0
add r3, #0xc
- bl FUN_02006C5C
+ bl GfGfxLoader_GetAnimBank
str r0, [r4, #4]
_021D8218:
add r0, r4, #0
@@ -559,7 +559,7 @@ MOD84_021D84F8: ; 0x021D84F8
str r0, [r4, #0x30]
mov r0, #0x4b
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r4, #0x24]
mov r3, #0
lsl r2, r5, #0x18
@@ -577,14 +577,14 @@ MOD84_021D84F8: ; 0x021D84F8
bl FUN_02019064
ldr r0, [r4, #0x24]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, [r4, #0x24]
bl FUN_02019270
ldr r0, [r4, #0x24]
bl CopyWindowToVram
mov r0, #0x4b
mov r1, #1
- bl FUN_02018FF4
+ bl AllocWindows
str r0, [r4, #0x28]
mov r3, #0
lsl r2, r5, #0x18
@@ -712,7 +712,7 @@ _021D864C:
ble _021D86D0
ldr r0, [r5, #0x28]
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -750,7 +750,7 @@ _021D864C:
ldr r0, [r5, #0x24]
ldr r1, [r1, #0xc]
lsr r3, r3, #0x10
- bl FUN_02019658
+ bl BlitBitmapRectToWindow
_021D86D0:
mov r1, #1
str r1, [r5, #0x18]
@@ -786,7 +786,7 @@ _021D86E0:
ldr r0, [r5, #0x24]
add r2, r1, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
b _021D8754
_021D8718:
add r1, r3, #0
@@ -803,7 +803,7 @@ _021D8718:
ldr r0, [r5, #0x24]
add r2, r1, #0
lsr r3, r3, #0x10
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #0
mov r0, #1
lsl r0, r0, #8
@@ -816,7 +816,7 @@ _021D8718:
ldr r0, [r5, #0x24]
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
_021D8754:
mov r0, #1
str r0, [r5, #0x18]
@@ -880,7 +880,7 @@ MOD84_021D87B0: ; 0x021D87B0
beq _021D87CE
ldr r0, [r5, #0x24]
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r4, _021D8814 ; =0x0001020F
b _021D87D0
_021D87CE:
@@ -940,7 +940,7 @@ MOD84_021D881C: ; 0x021D881C
ldr r3, [r4, #8]
mov r0, #0x7f
mov r1, #0x2a
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -951,7 +951,7 @@ MOD84_021D881C: ; 0x021D881C
ldr r3, [r4, #8]
mov r0, #0x7f
mov r1, #0x2b
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
mov r0, #0x4b
@@ -960,7 +960,7 @@ MOD84_021D881C: ; 0x021D881C
mov r0, #0x7f
mov r1, #0x2c
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -1137,7 +1137,7 @@ _021D899C:
mov r0, #0x7f
mov r1, #0x41
add r3, r2, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
mov r0, #0x80
str r0, [sp]
mov r0, #6
@@ -1149,7 +1149,7 @@ _021D899C:
mov r1, #0x41
mov r2, #4
mov r3, #0
- bl FUN_02006948
+ bl GfGfxLoader_GXLoadPalWithSrcOffset
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1165,7 +1165,7 @@ _021D89D8:
mov r0, #0x7f
mov r1, #4
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1176,7 +1176,7 @@ _021D89D8:
ldr r2, [r5, #4]
mov r0, #0x7f
add r3, r1, #0
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1192,7 +1192,7 @@ _021D8A10:
mov r0, #0x7f
mov r1, #5
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1208,7 +1208,7 @@ _021D8A30:
mov r0, #0x7f
mov r1, #7
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1420,7 +1420,7 @@ _021D8BB2:
mov r0, #0x7f
mov r1, #0x24
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1431,7 +1431,7 @@ _021D8BB2:
mov r0, #0x7f
mov r1, #0x22
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1447,7 +1447,7 @@ _021D8BEA:
mov r0, #0x7f
mov r1, #0x25
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1463,7 +1463,7 @@ _021D8C0A:
mov r0, #0x7f
mov r1, #0x23
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1762,7 +1762,7 @@ _021D8E4A:
mov r0, #0x7f
mov r1, #0x22
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1773,7 +1773,7 @@ _021D8E4A:
mov r0, #0x7f
mov r1, #0x22
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [sp, #0x14]
ldr r0, [r0]
add r1, r0, #1
@@ -1791,7 +1791,7 @@ _021D8E86:
mov r0, #0x7f
mov r1, #0x23
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [sp, #0x14]
ldr r0, [r0]
add r1, r0, #1
@@ -1809,7 +1809,7 @@ _021D8EAA:
mov r0, #0x7f
mov r1, #0x23
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [sp, #0x14]
ldr r0, [r0]
add r1, r0, #1
@@ -1836,10 +1836,10 @@ _021D8ECE:
_021D8EF2:
add r0, r4, #0
add r0, #0x10
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, r4, #0
add r0, #0x34
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r2, #0
str r2, [sp]
mov r0, #1
@@ -1853,7 +1853,7 @@ _021D8EF2:
mov r0, #0x7f
mov r1, #0x37
add r3, r2, #0
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x4b
str r0, [sp]
add r4, #0x34
@@ -1862,7 +1862,7 @@ _021D8EF2:
mov r2, #1
mov r3, #0
str r4, [sp, #4]
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
ldr r0, [sp, #0x14]
ldr r0, [r0]
add r1, r0, #1
@@ -1911,7 +1911,7 @@ _021D8F86:
mov r1, #0x28
mov r2, #0
add r3, sp, #0x20
- bl FUN_02006BB0
+ bl GfGfxLoader_GetCharData
str r0, [sp, #0x18]
cmp r0, #0
beq _021D8FC8
@@ -1922,12 +1922,12 @@ _021D8F86:
lsr r7, r5, #1
_021D8FA6:
add r0, r4, #0
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
ldr r0, [sp, #0x20]
add r1, r5, #0
mov r2, #1
add r3, r4, #0
- bl FUN_020B1768
+ bl NNS_G2dLoadImage1DMapping
add r6, r6, #1
add r4, #0x24
add r5, r5, r7
@@ -2579,7 +2579,7 @@ _021D94BA:
mov r0, #0x7f
mov r1, #0x26
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2590,7 +2590,7 @@ _021D94BA:
mov r0, #0x7f
mov r1, #0x22
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -2606,7 +2606,7 @@ _021D94F2:
mov r0, #0x7f
mov r1, #0x27
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -2622,7 +2622,7 @@ _021D9512:
mov r0, #0x7f
mov r1, #0x23
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -2861,7 +2861,7 @@ _021D96D4:
mov r0, #0x7f
mov r1, #0x10
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2872,7 +2872,7 @@ _021D96D4:
mov r0, #0x7f
mov r1, #0x12
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2883,7 +2883,7 @@ _021D96D4:
mov r0, #0x7f
mov r1, #0x11
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -2894,7 +2894,7 @@ _021D96D4:
mov r0, #0x7f
mov r1, #0x13
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [r4, #0x64]
ldr r0, [r5]
@@ -3049,7 +3049,7 @@ _021D986A:
mov r0, #0x7f
mov r1, #8
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3060,7 +3060,7 @@ _021D986A:
mov r0, #0x7f
mov r1, #0xa
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3076,7 +3076,7 @@ _021D98A2:
mov r0, #0x7f
mov r1, #9
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3092,7 +3092,7 @@ _021D98C2:
mov r0, #0x7f
mov r1, #0xb
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3108,7 +3108,7 @@ _021D98E2:
mov r0, #0x7f
mov r1, #0xc
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3119,7 +3119,7 @@ _021D98E2:
mov r0, #0x7f
mov r1, #0xe
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3135,7 +3135,7 @@ _021D991A:
mov r0, #0x7f
mov r1, #0xd
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3151,7 +3151,7 @@ _021D993A:
mov r0, #0x7f
mov r1, #0xf
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3164,7 +3164,7 @@ _021D995A:
str r0, [r4, #0x48]
add r0, r4, #0
add r0, #0x10
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
mov r2, #0
str r2, [sp]
mov r0, #1
@@ -3178,10 +3178,10 @@ _021D995A:
mov r0, #0x7f
mov r1, #0x3b
add r3, r2, #0
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
add r0, r4, #0
add r0, #0x34
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r0, #0x4b
str r0, [sp]
add r0, r4, #0
@@ -3191,7 +3191,7 @@ _021D995A:
mov r1, #0x3c
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #2
str r0, [sp]
add r2, r4, #0
@@ -3452,7 +3452,7 @@ _021D9B7A:
mov r0, #0x7f
mov r1, #0x28
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3463,7 +3463,7 @@ _021D9B7A:
mov r0, #0x7f
mov r1, #0x22
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -3479,7 +3479,7 @@ _021D9BB2:
mov r0, #0x7f
mov r1, #0x29
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -3495,7 +3495,7 @@ _021D9BD2:
mov r0, #0x7f
mov r1, #0x23
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -3560,7 +3560,7 @@ MOD84_021D9C1C: ; 0x021D9C1C
mov r1, #0x41
add r2, #0x5c
mov r3, #0x4b
- bl FUN_02006C08
+ bl GfGfxLoader_GetPlttData
str r0, [r4, #0x58]
cmp r0, #0
beq _021D9C76
@@ -3726,7 +3726,7 @@ _021D9D6A:
mov r0, #0x7f
mov r1, #0x1c
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3737,7 +3737,7 @@ _021D9D6A:
mov r0, #0x7f
mov r1, #0x18
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3748,7 +3748,7 @@ _021D9D6A:
mov r0, #0x7f
mov r1, #0x1d
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3759,7 +3759,7 @@ _021D9D6A:
mov r0, #0x7f
mov r1, #0x19
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
add r4, #0xec
str r0, [r4]
@@ -3823,7 +3823,7 @@ _021D9E3C:
mov r0, #0x7f
mov r1, #0x20
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3834,7 +3834,7 @@ _021D9E3C:
mov r0, #0x7f
mov r1, #0x1e
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3845,7 +3845,7 @@ _021D9E3C:
mov r0, #0x7f
mov r1, #0x21
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3856,7 +3856,7 @@ _021D9E3C:
mov r0, #0x7f
mov r1, #0x1f
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0
add r4, #0xec
str r0, [r4]
@@ -4003,7 +4003,7 @@ _021D9FBE:
mov r0, #0x7f
mov r1, #0x2a
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4014,7 +4014,7 @@ _021D9FBE:
mov r0, #0x7f
mov r1, #0x2b
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
mov r0, #0x4b
@@ -4023,7 +4023,7 @@ _021D9FBE:
mov r0, #0x7f
mov r1, #0x2c
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
add r4, #0xec
str r0, [r4]
@@ -4136,7 +4136,7 @@ _021DA0E2:
mov r0, #0x7f
mov r1, #0x16
mov r3, #2
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4147,7 +4147,7 @@ _021DA0E2:
mov r0, #0x7f
mov r1, #0x1a
mov r3, #6
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4163,7 +4163,7 @@ _021DA11A:
mov r0, #0x7f
mov r1, #0x17
mov r3, #2
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4179,7 +4179,7 @@ _021DA13A:
mov r0, #0x7f
mov r1, #0x1b
mov r3, #6
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4195,7 +4195,7 @@ _021DA15A:
mov r0, #0x7f
mov r1, #0x14
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4206,7 +4206,7 @@ _021DA15A:
mov r0, #0x7f
mov r1, #0x18
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4222,7 +4222,7 @@ _021DA192:
mov r0, #0x7f
mov r1, #0x15
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4238,7 +4238,7 @@ _021DA1B2:
mov r0, #0x7f
mov r1, #0x19
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4259,10 +4259,10 @@ _021DA1E2:
str r0, [r4, #0x54]
add r0, r4, #0
add r0, #0x1c
- bl FUN_020B1A24
+ bl NNS_G2dInitImageProxy
add r0, r4, #0
add r0, #0x40
- bl FUN_020B19DC
+ bl NNS_G2dInitImagePaletteProxy
mov r2, #0
str r2, [sp]
mov r0, #1
@@ -4276,7 +4276,7 @@ _021DA1E2:
mov r0, #0x7f
mov r1, #0x3f
add r3, r2, #0
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x4b
str r0, [sp]
add r4, #0x40
@@ -4285,7 +4285,7 @@ _021DA1E2:
mov r1, #0x40
mov r2, #1
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4304,7 +4304,7 @@ _021DA238:
mov r0, #0x7f
mov r1, #0x3f
add r3, r2, #0
- bl FUN_02006AE4
+ bl GfGfxLoader_LoadImageMapping
mov r0, #0x4b
str r0, [sp]
add r0, r4, #0
@@ -4314,7 +4314,7 @@ _021DA238:
mov r1, #0x40
mov r2, #2
mov r3, #0
- bl FUN_02006A8C
+ bl GfGfxLoader_PartiallyLoadPalette
mov r0, #2
str r0, [sp]
add r2, r4, #0
diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s
index adb49508..221d2f9d 100644
--- a/arm9/modules/85/asm/module_85.s
+++ b/arm9/modules/85/asm/module_85.s
@@ -570,7 +570,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, _021D7B1C ; =0x00000448
add r5, r0, #0
add r1, r4, r1
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r1, _021D7B1C ; =0x00000448
mov r2, #0x1a
ldr r1, [r4, r1]
@@ -588,7 +588,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, _021D7B20 ; =0x00000444
add r5, r0, #0
add r1, r4, r1
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, _021D7B20 ; =0x00000444
mov r1, #0
ldr r3, [r4, r0]
@@ -609,7 +609,7 @@ MOD85_021D797C: ; 0x021D797C
lsl r1, r1, #6
add r1, r4, r1
add r5, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
mov r0, #0x11
lsl r0, r0, #6
ldr r3, [r4, r0]
@@ -633,7 +633,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, _021D7B20 ; =0x00000444
add r5, r0, #0
add r1, r4, r1
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, _021D7B20 ; =0x00000444
mov r1, #0
ldr r3, [r4, r0]
@@ -654,7 +654,7 @@ MOD85_021D797C: ; 0x021D797C
lsl r1, r1, #6
add r1, r4, r1
add r5, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
mov r0, #0x11
lsl r0, r0, #6
ldr r3, [r4, r0]
@@ -678,7 +678,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, _021D7B1C ; =0x00000448
add r5, r0, #0
add r1, r4, r1
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r1, _021D7B1C ; =0x00000448
mov r2, #0x1a
ldr r1, [r4, r1]
@@ -696,7 +696,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, _021D7B20 ; =0x00000444
add r5, r0, #0
add r1, r4, r1
- bl FUN_020B0088
+ bl NNS_G2dGetUnpackedCharacterData
ldr r0, _021D7B20 ; =0x00000444
mov r1, #0
ldr r3, [r4, r0]
@@ -717,7 +717,7 @@ MOD85_021D797C: ; 0x021D797C
lsl r1, r1, #6
add r1, r4, r1
add r5, r0, #0
- bl FUN_020B0180
+ bl NNS_G2dGetUnpackedScreenData
mov r0, #0x11
lsl r0, r0, #6
ldr r3, [r4, r0]
@@ -847,7 +847,7 @@ MOD85_021D7BEC: ; 0x021D7BEC
add r0, r4, #0
add r0, #8
mov r1, #0xf
- bl FUN_02019620
+ bl FillWindowPixelBuffer
ldr r0, _021D7C40 ; =0x00000408
ldr r2, [r4, #0x18]
ldr r0, [r5, r0]
@@ -884,7 +884,7 @@ MOD85_021D7C44: ; 0x021D7C44
add r0, r5, r4
add r0, #8
mov r1, #0
- bl FUN_02019620
+ bl FillWindowPixelBuffer
add r0, r5, r4
add r0, #8
bl FUN_02019220
@@ -933,7 +933,7 @@ MOD85_021D7CB0: ; 0x021D7CB0
push {r3, r4, lr}
sub sp, #0x1c
add r4, r0, #0
- bl FUN_020B0FC0
+ bl NNS_G2dInitOamManagerModule
mov r0, #0
str r0, [sp]
mov r1, #0x80
@@ -1477,7 +1477,7 @@ MOD85_021D80F8: ; 0x021D80F8
bl AllocFromHeap
add r4, r0, #0
bne _021D810C
- bl ErrorHandling
+ bl GF_AssertFail
_021D810C:
add r0, r4, #0
mov r1, #0
@@ -1535,7 +1535,7 @@ _021D8168:
add r5, r0, #0
cmp r5, #0
bne _021D8172
- bl ErrorHandling
+ bl GF_AssertFail
_021D8172:
ldr r0, _021D8184 ; =0x00000438
add r1, r6, #0
@@ -2477,7 +2477,7 @@ MOD85_021D885C: ; 0x021D885C
ldr r0, [r4, #0x50]
cmp r0, #6
blt _021D886A
- bl ErrorHandling
+ bl GF_AssertFail
_021D886A:
mov r0, #0x19
str r0, [r4]
@@ -2493,7 +2493,7 @@ MOD85_021D8874: ; 0x021D8874
ldr r0, [r4, #0x50]
cmp r0, #6
blt _021D8882
- bl ErrorHandling
+ bl GF_AssertFail
_021D8882:
mov r0, #0x1c
str r0, [r4]
@@ -3175,7 +3175,7 @@ MOD85_021D8D88: ; 0x021D8D88
str r0, [r4, #0x10]
cmp r0, #1
bge _021D8D9A
- bl ErrorHandling
+ bl GF_AssertFail
_021D8D9A:
add r0, r4, #0
mov r1, #0
@@ -3715,7 +3715,7 @@ MOD85_021D91A4: ; 0x021D91A4
sub r0, r0, #1
str r0, [r4, #0x10]
beq _021D91B4
- bl ErrorHandling
+ bl GF_AssertFail
_021D91B4:
ldr r0, [r4, #0x2c]
cmp r0, #1
@@ -4226,7 +4226,7 @@ _021D950C:
bl MOD85_021D95B4
pop {r3, pc}
_021D9512:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, pc}
.align 2, 0
@@ -5579,7 +5579,7 @@ _021D9F0C:
add r5, r5, #1
cmp r5, #0x15
ble _021D9EFC
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
_021D9F18:
cmp r1, #0
@@ -5604,7 +5604,7 @@ _021D9F3A:
add r5, r5, #1
cmp r5, #0x15
ble _021D9F28
- bl ErrorHandling
+ bl GF_AssertFail
pop {r4, r5, r6, pc}
_021D9F46:
mov r5, #1
@@ -5621,7 +5621,7 @@ _021D9F5A:
add r5, r5, #1
cmp r5, #0x15
ble _021D9F48
- bl ErrorHandling
+ bl GF_AssertFail
b _021D9F84
_021D9F66:
mov r5, #1
@@ -5638,9 +5638,9 @@ _021D9F7A:
add r5, r5, #1
cmp r5, #0x15
ble _021D9F68
- bl ErrorHandling
+ bl GF_AssertFail
_021D9F84:
- bl ErrorHandling
+ bl GF_AssertFail
_021D9F88:
pop {r4, r5, r6, pc}
.align 2, 0
@@ -5678,7 +5678,7 @@ _021D9FC0:
add r5, r5, #1
cmp r5, #0x15
blt _021D9FAE
- bl ErrorHandling
+ bl GF_AssertFail
_021D9FCA:
ldr r0, [r6, #0x10]
cmp r0, #0
@@ -5703,7 +5703,7 @@ _021D9FEE:
add r5, r5, #1
cmp r5, #0x15
blt _021D9FDC
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021D9FFA:
mov r5, #0
@@ -5720,7 +5720,7 @@ _021DA00E:
add r5, r5, #1
cmp r5, #0x15
ble _021D9FFC
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, r6, r7, pc}
_021DA01A:
mov r5, #0
@@ -5737,9 +5737,9 @@ _021DA02E:
add r5, r5, #1
cmp r5, #0x15
ble _021DA01C
- bl ErrorHandling
+ bl GF_AssertFail
_021DA038:
- bl ErrorHandling
+ bl GF_AssertFail
_021DA03C:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6044,7 +6044,7 @@ _021DA238:
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021DA240:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -7075,7 +7075,7 @@ _021DA9EE:
ldr r0, _021DAA20 ; =0x021DFCC4
ldr r0, [r0, r1]
str r0, [r5, #0x18]
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -7158,7 +7158,7 @@ _021DAAA4:
mov r1, #1
lsl r0, r0, #2
str r1, [r6, r0]
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -7254,7 +7254,7 @@ _021DAB52:
str r1, [r4, r0]
pop {r3, r4, r5, pc}
_021DAB6A:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #2
ldr r1, [r4, #0x74]
lsl r0, r0, #8
@@ -7470,7 +7470,7 @@ _021DACF8:
add r2, #0x10
cmp r1, #9
blt _021DACC8
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
@@ -7686,7 +7686,7 @@ MOD85_021DAE70: ; 0x021DAE70
ldr r6, [r7, #0x48]
cmp r6, #0
bne _021DAE80
- bl ErrorHandling
+ bl GF_AssertFail
_021DAE80:
mov r4, #0
_021DAE82:
@@ -7713,7 +7713,7 @@ _021DAE9C:
str r0, [r5, #0x18]
b _021DAEB4
_021DAEB0:
- bl ErrorHandling
+ bl GF_AssertFail
_021DAEB4:
add r4, r4, #1
lsr r6, r6, #1
@@ -8587,7 +8587,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r6, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
ldr r0, [sp]
mov r1, #1
add r2, r4, #4
@@ -8627,7 +8627,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r6, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
add r2, r4, #0
ldr r0, [sp]
mov r1, #0
@@ -8641,7 +8641,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r6, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
add r2, r4, #0
ldr r0, [sp]
mov r1, #0
@@ -8655,7 +8655,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r6, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
add r2, r4, #0
ldr r0, [sp]
mov r1, #0
@@ -8669,7 +8669,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r6, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
mov r2, #0x51
lsl r2, r2, #2
ldr r0, [sp]
@@ -8684,7 +8684,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r6, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
mov r2, #0x59
lsl r2, r2, #2
ldr r0, [sp]
@@ -8705,7 +8705,7 @@ MOD85_021DB494: ; 0x021DB494
bl MOD85_021D8144
add r1, sp, #0
add r5, r0, #0
- bl FUN_020B0138
+ bl NNS_G2dGetUnpackedPaletteData
mov r2, #0x69
lsl r2, r2, #2
ldr r0, [sp]
@@ -9228,7 +9228,7 @@ MOD85_021DB95C: ; 0x021DB95C
ldr r0, [r4, r0]
cmp r0, #0
beq _021DB97A
- bl ErrorHandling
+ bl GF_AssertFail
_021DB97A:
str r4, [sp]
mov r0, #0x8f
@@ -10066,7 +10066,7 @@ MOD85_021DBF48: ; 0x021DBF48
beq _021DBF6A
cmp r4, #2
beq _021DBF62
- bl ErrorHandling
+ bl GF_AssertFail
_021DBF62:
ldr r1, [r5]
mov r0, #1
@@ -10106,7 +10106,7 @@ _021DBF92:
add r0, r2, #0
pop {r3, pc}
_021DBF9C:
- bl ErrorHandling
+ bl GF_AssertFail
mov r0, #4
pop {r3, pc}
thumb_func_end MOD85_021DBF70
@@ -10142,7 +10142,7 @@ _021DBFBE:
_021DBFCC:
cmp r4, #3
blt _021DBFD4
- bl ErrorHandling
+ bl GF_AssertFail
_021DBFD4:
lsl r0, r4, #2
add r0, r5, r0
@@ -10297,7 +10297,7 @@ MOD85_021DC0D8: ; 0x021DC0D8
ldr r5, [r0, #0x48]
cmp r4, #6
bne _021DC0E6
- bl ErrorHandling
+ bl GF_AssertFail
_021DC0E6:
ldr r3, _021DC104 ; =0x021DFCAC
lsl r2, r4, #2
@@ -11585,7 +11585,7 @@ MOD85_021DCA68: ; 0x021DCA68
ldr r4, [r6, #0x38]
cmp r5, #5
blt _021DCA78
- bl ErrorHandling
+ bl GF_AssertFail
_021DCA78:
mov r1, #2
mov r2, #0x45
@@ -11630,7 +11630,7 @@ _021DCA78:
bl FUN_0200CA60
cmp r0, #0
bne _021DCADC
- bl ErrorHandling
+ bl GF_AssertFail
_021DCADC:
ldr r0, _021DCAFC ; =MOD85_021DCB44
ldr r2, _021DCAF8 ; =0x00000101
@@ -11638,7 +11638,7 @@ _021DCADC:
bl FUN_0200CA98
cmp r0, #0
bne _021DCAEE
- bl ErrorHandling
+ bl GF_AssertFail
_021DCAEE:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -12012,7 +12012,7 @@ MOD85_021DCD50: ; 0x021DCD50
bl FUN_0200CA60
cmp r0, #0
bne _021DCDB8
- bl ErrorHandling
+ bl GF_AssertFail
_021DCDB8:
ldr r0, _021DCDD4 ; =MOD85_021DCD28
ldr r2, _021DCDD0 ; =0x00000101
@@ -12020,7 +12020,7 @@ _021DCDB8:
bl FUN_0200CA98
cmp r0, #0
bne _021DCDCA
- bl ErrorHandling
+ bl GF_AssertFail
_021DCDCA:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -12126,7 +12126,7 @@ MOD85_021DCE2C: ; 0x021DCE2C
bl FUN_0200CA60
cmp r0, #0
bne _021DCE9C
- bl ErrorHandling
+ bl GF_AssertFail
_021DCE9C:
ldr r0, _021DCEBC ; =MOD85_021DCE04
ldr r2, _021DCEB8 ; =0x00000101
@@ -12134,7 +12134,7 @@ _021DCE9C:
bl FUN_0200CA98
cmp r0, #0
bne _021DCEAE
- bl ErrorHandling
+ bl GF_AssertFail
_021DCEAE:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -12967,7 +12967,7 @@ MOD85_021DD4C4: ; 0x021DD4C4
bl FUN_0200CA60
cmp r0, #0
bne _021DD52C
- bl ErrorHandling
+ bl GF_AssertFail
_021DD52C:
ldr r0, _021DD548 ; =MOD85_021DD498
ldr r2, _021DD544 ; =0x00000101
@@ -12975,7 +12975,7 @@ _021DD52C:
bl FUN_0200CA98
cmp r0, #0
bne _021DD53E
- bl ErrorHandling
+ bl GF_AssertFail
_021DD53E:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -14780,7 +14780,7 @@ _021DE2BC:
ldr r0, [r4, #0x1c]
cmp r0, #5
blt _021DE2C6
- bl ErrorHandling
+ bl GF_AssertFail
_021DE2C6:
add r0, r4, #0
bl MOD85_021DE4F0
@@ -15154,7 +15154,7 @@ _021DE572:
bl FUN_0200CA60
cmp r0, #0
bne _021DE584
- bl ErrorHandling
+ bl GF_AssertFail
_021DE584:
ldr r0, _021DE5A0 ; =MOD85_021DE4C8
ldr r2, _021DE59C ; =0x00000101
@@ -15162,7 +15162,7 @@ _021DE584:
bl FUN_0200CA98
cmp r0, #0
bne _021DE596
- bl ErrorHandling
+ bl GF_AssertFail
_021DE596:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -15188,7 +15188,7 @@ MOD85_021DE5A4: ; 0x021DE5A4
bl AllocFromHeap
add r4, r0, #0
bne _021DE5C8
- bl ErrorHandling
+ bl GF_AssertFail
_021DE5C8:
ldr r0, [sp]
add r1, r4, #0
@@ -15558,7 +15558,7 @@ _021DE898:
cmp r1, r5
blo _021DE85E
_021DE8A0:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD85_021DE840
@@ -15589,7 +15589,7 @@ _021DE8CC:
cmp r4, r2
blo _021DE8BA
_021DE8D4:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD85_021DE8A8
@@ -15620,7 +15620,7 @@ _021DE900:
cmp r4, r2
blo _021DE8EE
_021DE908:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD85_021DE8DC
@@ -15679,7 +15679,7 @@ _021DE96C:
cmp r1, r5
blo _021DE92E
_021DE974:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD85_021DE910
@@ -15710,7 +15710,7 @@ _021DE9A0:
cmp r4, r2
blo _021DE98E
_021DE9A8:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD85_021DE97C
@@ -15741,7 +15741,7 @@ _021DE9D4:
cmp r4, r2
blo _021DE9C2
_021DE9DC:
- bl ErrorHandling
+ bl GF_AssertFail
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD85_021DE9B0
@@ -15798,7 +15798,7 @@ _021DEA3C:
cmp r1, r5
blo _021DEA02
_021DEA44:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD85_021DE9E4
@@ -15855,7 +15855,7 @@ _021DEAA4:
cmp r1, r5
blo _021DEA6A
_021DEAAC:
- bl ErrorHandling
+ bl GF_AssertFail
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD85_021DEA4C
@@ -16112,7 +16112,7 @@ _021DEC6C:
str r0, [r4, #4]
cmp r0, #0
bne _021DEC9A
- bl ErrorHandling
+ bl GF_AssertFail
_021DEC9A:
add sp, #0x70
pop {r3, r4, r5, r6, r7, pc}
diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s
index 08651acb..2bd7d12a 100644
--- a/arm9/modules/86/asm/module_86.s
+++ b/arm9/modules/86/asm/module_86.s
@@ -504,7 +504,7 @@ MOD86_021D78D4: ; 0x021D78D4
add r0, #0x14
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
mov r1, #4
add r0, sp, #8
strb r1, [r0]
@@ -523,7 +523,7 @@ MOD86_021D78D4: ; 0x021D78D4
add r0, r4, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020196F4
+ bl FillWindowPixelRect
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -629,7 +629,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #3
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -640,7 +640,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #3
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
ldr r0, [r5]
@@ -649,7 +649,7 @@ _021D7A06:
ldr r1, [sp, #0x14]
mov r0, #0x84
add r3, r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -660,7 +660,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #7
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -671,7 +671,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #7
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r0, #0x20
str r0, [sp]
ldr r0, [r5]
@@ -680,7 +680,7 @@ _021D7A06:
mov r0, #0x84
mov r2, #4
mov r3, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -691,7 +691,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #1
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -715,7 +715,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #1
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0x20
str r3, [sp]
ldr r0, [r5]
@@ -723,7 +723,7 @@ _021D7A06:
str r0, [sp, #4]
mov r0, #0x84
mov r2, #0
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -734,7 +734,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #5
- bl FUN_020068C8
+ bl GfGfxLoader_LoadScrnData
mov r0, #0x20
str r0, [sp]
mov r0, #0x18
@@ -759,7 +759,7 @@ _021D7A06:
ldr r2, [r5, #0x10]
mov r0, #0x84
mov r3, #5
- bl FUN_0200687C
+ bl GfGfxLoader_LoadCharData
mov r3, #0x20
str r3, [sp]
ldr r0, [r5]
@@ -767,7 +767,7 @@ _021D7A06:
str r0, [sp, #4]
mov r0, #0x84
mov r2, #4
- bl FUN_02006930
+ bl GfGfxLoader_GXLoadPal
mov r0, #0
ldr r3, [r5]
mov r1, #0x20
diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c
index ce188876..f0ac9472 100644
--- a/arm9/src/GX_layers.c
+++ b/arm9/src/GX_layers.c
@@ -1,4 +1,7 @@
#include "GX_layers.h"
+#include "GX_vramcnt.h"
+#include "gx.h"
+#include "main.h"
struct GX_LayerData layer_data;
diff --git a/arm9/src/WIFI_stubsmd5_dummy.c b/arm9/src/WIFI_stubsmd5_dummy.c
new file mode 100644
index 00000000..6de2edca
--- /dev/null
+++ b/arm9/src/WIFI_stubsmd5_dummy.c
@@ -0,0 +1,17 @@
+#include "function_target.h"
+#include "WIFI_stubsmd5_dummy.h"
+
+ARM_FUNC void MD5Final(u8 *digest, struct DGTHash1Context *context)
+{
+ DGT_Hash1GetDigest_R(digest, context);
+}
+
+ARM_FUNC void MD5Update(struct DGTHash1Context *context, u8 *input, u32 length)
+{
+ DGT_Hash1SetSource(context, input, length);
+}
+
+ARM_FUNC void MD5Init(struct DGTHash1Context *context)
+{
+ DGT_Hash1Reset(context);
+}
diff --git a/arm9/src/error_handling.c b/arm9/src/error_handling.c
index a01894f6..0b76ccff 100644
--- a/arm9/src/error_handling.c
+++ b/arm9/src/error_handling.c
@@ -1,10 +1,11 @@
#include "global.h"
#include "error_handling.h"
#include "error_message_reset.h"
+#include "unk_02031734.h"
-extern u32 FUN_02031810(void);
-THUMB_FUNC void ErrorHandling(void)
+
+THUMB_FUNC void GF_AssertFail(void)
{
if (FUN_02031810())
{
diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c
index 3a727924..28627d6b 100644
--- a/arm9/src/error_message_reset.c
+++ b/arm9/src/error_message_reset.c
@@ -1,36 +1,29 @@
#include "error_message_reset.h"
#include "GX_layers.h"
+#include "unk_02031734.h"
+#include "unk_0202F150.h"
+#include "unk_02016B94.h"
-const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 };
+
+
+const struct UnkStruct_02016B94_4 UNK_020FF49C = { 0, 3, 3, 0x1a, 0x12, 1, 0x23 };
const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 };
const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 };
-const u32 UNK_020FF4BC[7] = { 0x00, 0x00, 0x0800, 0x00, 0x06000001, 0x0100, 0x00 };
+const struct UnkStruct_02016B94_1 UNK_020FF4BC = { 0, 0, 0x800, 0, 1, 0, 0, 6, 0, 1, 0, 0, 0 };
const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 };
u32 sErrorMessagePrinterLock;
extern void FUN_0200E3A0(PMLCDTarget, int);
-extern u32 *FUN_02016B94(u32 param0);
-extern void FUN_02016BBC(const struct GraphicsModes *modes);
-extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3);
-extern void FUN_02018744(u32 *param0, u32 param1);
-extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+extern void FUN_0200CB00(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2);
-extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3);
-extern void FUN_02017FE4(u32 param0, u32 param1);
-extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2);
-extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16);
-extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3);
+extern void FUN_0200CCA4(struct Window *param0, u32 param1, u32 param2, u32 param3);
extern void FUN_0200E394(u32 param0);
extern void FUN_0200A274(u32 param0, u32 param1, u32 param2);
-extern BOOL FUN_02032DAC(void);
-extern BOOL FUN_0202FB80(void);
-extern BOOL FUN_02033678(void);
-extern void FUN_02019178(u32 *param0);
THUMB_FUNC void VBlankHandler()
{
@@ -42,8 +35,8 @@ THUMB_FUNC void VBlankHandler()
THUMB_FUNC void PrintErrorMessageAndReset()
{
- u32 *ptr;
- u32 buf[4];
+ struct UnkStruct_02016B94_2 *ptr;
+ struct Window buf;
if (sErrorMessagePrinterLock != 1)
{
@@ -82,7 +75,7 @@ THUMB_FUNC void PrintErrorMessageAndReset()
ptr = FUN_02016B94(0);
FUN_02016BBC(&UNK_020FF4AC);
- FUN_02016C18(ptr, 0, UNK_020FF4BC, 0);
+ FUN_02016C18(ptr, 0, &UNK_020FF4BC, 0);
FUN_02018744(ptr, 0);
FUN_0200CB00(ptr, 0, 503, 2, 0, 0);
@@ -96,13 +89,13 @@ THUMB_FUNC void PrintErrorMessageAndReset()
struct String *str = String_ctor(6 << 6, 0);
FUN_0201BD5C();
- FUN_02019150(ptr, buf, UNK_020FF49C);
- FUN_020196F4(buf, 15, 0, 0, 0xd0, 0x90);
- FUN_0200CCA4(buf, 0, 0x1f7, 2);
+ FUN_02019150(ptr, &buf, &UNK_020FF49C);
+ FillWindowPixelRect(&buf, 15, 0, 0, 0xd0, 0x90);
+ FUN_0200CCA4(&buf, 0, 0x1f7, 2);
ReadMsgDataIntoString(msg_data, 3, str);
- AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf
+ AddTextPrinterParameterized(&buf, 0, str, 0, 0, 0, NULL);
String_dtor(str);
GX_BothDispOn();
@@ -132,7 +125,7 @@ THUMB_FUNC void PrintErrorMessageAndReset()
FUN_0200E3A0(PM_LCD_TOP, 0x7FFF);
FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF);
- FUN_02019178(buf);
+ FUN_02019178(&buf);
DestroyMsgData(msg_data);
FreeToHeap(ptr);
diff --git a/arm9/src/filesystem.c b/arm9/src/filesystem.c
index 3775b0b8..ed82acb9 100644
--- a/arm9/src/filesystem.c
+++ b/arm9/src/filesystem.c
@@ -176,7 +176,7 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3
FS_ReadFile(&file, &chunk_size, 4);
FS_ReadFile(&file, &num_files, 2);
if (num_files <= file_idx)
- ErrorHandling();
+ GF_AssertFail();
chunk_starts[1] = chunk_starts[0] + chunk_size;
FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
@@ -191,7 +191,7 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3
else
chunk_size = size;
if (chunk_size == 0)
- ErrorHandling();
+ GF_AssertFail();
FS_ReadFile(&file, dest, (s32)chunk_size);
FS_CloseFile(&file);
}
@@ -217,7 +217,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f
FS_ReadFile(&file, &chunk_size, 4);
FS_ReadFile(&file, &num_files, 2);
if (num_files <= file_idx)
- ErrorHandling();
+ GF_AssertFail();
chunk_starts[1] = chunk_starts[0] + chunk_size;
FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
@@ -232,7 +232,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f
else
chunk_size = size;
if (chunk_size == 0)
- ErrorHandling();
+ GF_AssertFail();
switch (r4)
{
case 0:
@@ -297,7 +297,7 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx)
FS_ReadFile(&file, &chunk_size, 4);
FS_ReadFile(&file, &num_files, 2);
if (num_files <= file_idx)
- ErrorHandling();
+ GF_AssertFail();
chunk_starts[1] = chunk_starts[0] + chunk_size;
FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
@@ -309,7 +309,7 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx)
FS_SeekFile(&file, (s32)(chunk_starts[2] + 8 + file_start + 0), FS_SEEK_SET);
chunk_size = file_end - file_start;
if (chunk_size == 0)
- ErrorHandling();
+ GF_AssertFail();
// Bug: File is never closed
return chunk_size;
}
@@ -349,7 +349,7 @@ THUMB_FUNC void * NARC_AllocAndReadWholeMember(NARC * narc, u32 file_id, u32 hea
u32 file_end;
void * dest;
if (narc->num_files <= file_id)
- ErrorHandling();
+ GF_AssertFail();
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_ReadFile(&narc->file, &file_end, 4);
@@ -367,7 +367,7 @@ THUMB_FUNC void NARC_ReadWholeMember(NARC * narc, u32 file_id, void * dest)
u32 file_start;
u32 file_end;
if (narc->num_files <= file_id)
- ErrorHandling();
+ GF_AssertFail();
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_ReadFile(&narc->file, &file_end, 4);
@@ -380,7 +380,7 @@ THUMB_FUNC u32 NARC_GetMemberSize(NARC * narc, u32 file_id)
u32 file_start;
u32 file_end;
if (narc->num_files <= file_id)
- ErrorHandling();
+ GF_AssertFail();
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_ReadFile(&narc->file, &file_end, 4);
@@ -391,7 +391,7 @@ THUMB_FUNC void NARC_ReadFromMember(NARC * narc, u32 file_id, u32 pos, u32 size,
{
u32 file_start;
if (narc->num_files <= file_id)
- ErrorHandling();
+ GF_AssertFail();
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_SeekFile(&narc->file, (s32)(narc->gmif_start + 8 + file_start + pos), FS_SEEK_SET);
diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c
index a7508fab..64ea7a54 100644
--- a/arm9/src/game_init.c
+++ b/arm9/src/game_init.c
@@ -141,7 +141,7 @@ void FUN_02015FC8(void)
{
csum++;
}
- FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, (int)csum);
+ FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, csum);
}
void InitSystemForTheGame(void)
@@ -181,12 +181,12 @@ void InitSystemForTheGame(void)
void InitGraphicMemory(void)
{
GX_SetBankForLCDC(0x1FF);
- MIi_CpuClearFast(0, (void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE);
+ MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE);
GX_DisableBankForLCDC();
- MIi_CpuClearFast(0xC0, (void *)HW_OAM, HW_OAM_SIZE);
- MIi_CpuClearFast(0xC0, (void *)HW_DB_OAM, HW_DB_OAM_SIZE);
- MIi_CpuClearFast(0, (void *)HW_PLTT, HW_PLTT_SIZE);
- MIi_CpuClearFast(0, (void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
+ MI_CpuFillFast((void *)HW_OAM, 0xC0, HW_OAM_SIZE);
+ MI_CpuFillFast((void *)HW_DB_OAM, 0xC0, HW_DB_OAM_SIZE);
+ MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE);
+ MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
}
void * FUN_020161A4(u32 heap_id, const char * path)
@@ -203,7 +203,7 @@ void * FUN_020161A4(u32 heap_id, const char * path)
{
if (size != FS_ReadFile(&file, ret, (s32)size))
{
- FUN_02016A8C(heap_id, ret);
+ FreeToHeapExplicit(heap_id, ret);
ret = NULL;
}
}
@@ -344,8 +344,8 @@ void FUN_020163BC(void)
gMain.unk3C = 0;
gMain.unk40 = 0;
gMain.unk44 = 0;
- gMain.unk48 = 0;
- gMain.unk4C = 0;
+ gMain.newKeys = 0;
+ gMain.newAndRepeatedKeys = 0;
gMain.unk50 = 0;
gMain.unk54 = 8;
gMain.unk58 = 15;
@@ -387,9 +387,9 @@ void FUN_02016464(void)
TPData raw, calib;
if (PAD_DetectFold())
{
- gMain.unk48 = 0;
+ gMain.newKeys = 0;
gMain.unk44 = 0;
- gMain.unk4C = 0;
+ gMain.newAndRepeatedKeys = 0;
gMain.unk60 = 0;
gMain.unk62 = 0;
return;
@@ -409,9 +409,9 @@ void FUN_02016464(void)
gMain.unk50 = gMain.unk58;
}
gMain.unk38 = r0;
- gMain.unk48 = gMain.unk3C;
+ gMain.newKeys = gMain.unk3C;
gMain.unk44 = r0;
- gMain.unk4C = gMain.unk40;
+ gMain.newAndRepeatedKeys = gMain.unk40;
FUN_02016568();
if (gMain.unk64 == 0)
{
@@ -453,26 +453,26 @@ void FUN_02016568(void)
case 0: // Normal
break;
case 1: // Start = X
- if (gMain.unk48 & PAD_BUTTON_START)
- gMain.unk48 |= PAD_BUTTON_X;
+ if (gMain.newKeys & PAD_BUTTON_START)
+ gMain.newKeys |= PAD_BUTTON_X;
if (gMain.unk44 & PAD_BUTTON_START)
gMain.unk44 |= PAD_BUTTON_X;
- if (gMain.unk4C & PAD_BUTTON_START)
- gMain.unk4C |= PAD_BUTTON_X;
+ if (gMain.newAndRepeatedKeys & PAD_BUTTON_START)
+ gMain.newAndRepeatedKeys |= PAD_BUTTON_X;
break;
case 2: // Swap X and Y; unused in the retail game
{
u32 r1 = 0;
- if (gMain.unk48 & PAD_BUTTON_X)
+ if (gMain.newKeys & PAD_BUTTON_X)
{
r1 |= PAD_BUTTON_Y;
}
- if (gMain.unk48 & PAD_BUTTON_Y)
+ if (gMain.newKeys & PAD_BUTTON_Y)
{
r1 |= PAD_BUTTON_X;
}
- gMain.unk48 &= 0xF3FF;
- gMain.unk48 |= r1;
+ gMain.newKeys &= 0xF3FF;
+ gMain.newKeys |= r1;
}
{
u32 r1 = 0;
@@ -489,28 +489,28 @@ void FUN_02016568(void)
}
{
u32 r1 = 0;
- if (gMain.unk4C & PAD_BUTTON_X)
+ if (gMain.newAndRepeatedKeys & PAD_BUTTON_X)
{
r1 |= PAD_BUTTON_Y;
}
- if (gMain.unk4C & PAD_BUTTON_Y)
+ if (gMain.newAndRepeatedKeys & PAD_BUTTON_Y)
{
r1 |= PAD_BUTTON_X;
}
- gMain.unk4C &= 0xF3FF;
- gMain.unk4C |= r1;
+ gMain.newAndRepeatedKeys &= 0xF3FF;
+ gMain.newAndRepeatedKeys |= r1;
}
break;
case 3: // L = A
- if (gMain.unk48 & PAD_BUTTON_L)
- gMain.unk48 |= PAD_BUTTON_A;
+ if (gMain.newKeys & PAD_BUTTON_L)
+ gMain.newKeys |= PAD_BUTTON_A;
if (gMain.unk44 & PAD_BUTTON_L)
gMain.unk44 |= PAD_BUTTON_A;
- if (gMain.unk4C & PAD_BUTTON_L)
- gMain.unk4C |= PAD_BUTTON_A;
- gMain.unk48 &= 0xFCFF;
+ if (gMain.newAndRepeatedKeys & PAD_BUTTON_L)
+ gMain.newAndRepeatedKeys |= PAD_BUTTON_A;
+ gMain.newKeys &= 0xFCFF;
gMain.unk44 &= 0xFCFF;
- gMain.unk4C &= 0xFCFF;
+ gMain.newAndRepeatedKeys &= 0xFCFF;
}
}
diff --git a/arm9/src/gf_gfx_loader.c b/arm9/src/gf_gfx_loader.c
new file mode 100644
index 00000000..769c90d9
--- /dev/null
+++ b/arm9/src/gf_gfx_loader.c
@@ -0,0 +1,349 @@
+#include "global.h"
+#include "filesystem.h"
+#include "NNS_g2d.h"
+#include "gf_gfx_loader.h"
+
+THUMB_FUNC u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
+{
+ NNSG2dCharacterData * pCharData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedBGCharacterData(pFile, &pCharData))
+ {
+ if (szByte == 0)
+ szByte = pCharData->szByte;
+ FUN_02017E14(unkStruct02016B94_2, (u8)a3, pCharData->pRawData, szByte, a4);
+ }
+ FreeToHeap(pFile);
+ }
+ return szByte;
+}
+
+THUMB_FUNC void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
+{
+ NNSG2dScreenData * pScreenData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, isCompressed, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedScreenData(pFile, &pScreenData))
+ {
+ if (szByte == 0)
+ szByte = pScreenData->szByte;
+ if (FUN_0201886C(unkStruct02016B94_2, (u8)a3) != NULL)
+ FUN_02017DFC(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte);
+ FUN_02017CE8(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte, a4);
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 baseAddr, u32 szByte, u32 heap_id)
+{
+ GfGfxLoader_GXLoadPalWithSrcOffset(narcId, memberNo, whichRoutine, 0, baseAddr, szByte, heap_id);
+}
+
+THUMB_FUNC void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id)
+{
+ static void (*const load_funcs[])(void *, u32, u32) = {
+ GX_LoadBGPltt,
+ GX_LoadOBJPltt,
+ GX_LoadBGExtPltt,
+ GX_LoadOBJExtPltt,
+ GXS_LoadBGPltt,
+ GXS_LoadOBJPltt,
+ GXS_LoadBGExtPltt,
+ GXS_LoadOBJExtPltt
+ };
+ NNSG2dPaletteData * pPltData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, FALSE, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedPaletteData(pFile, &pPltData))
+ {
+ pPltData->pRawData = (void *)((u32)pPltData->pRawData + srcOffset);
+ if (szByte == 0)
+ szByte = pPltData->szByte - srcOffset;
+ DC_FlushRange(pPltData->pRawData, szByte);
+ switch (whichRoutine)
+ {
+ case 2:
+ GX_BeginLoadBGExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 6:
+ GXS_BeginLoadBGExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 3:
+ GX_BeginLoadOBJExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GX_EndLoadOBJExtPltt();
+ break;
+ case 7:
+ GXS_BeginLoadOBJExtPltt();
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ GXS_EndLoadOBJExtPltt();
+ break;
+ default:
+ load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ break;
+ }
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whichRoutine, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id)
+{
+ static void (*const load_funcs[])(void *, u32, u32) = {
+ GX_LoadOBJ,
+ GXS_LoadOBJ
+ };
+
+ NNSG2dCharacterData* pCharData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(pFile, &pCharData))
+ {
+ if (szByte == 0)
+ szByte = pCharData->szByte;
+ DC_FlushRange(pCharData->pRawData, szByte);
+ load_funcs[whichRoutine](pCharData->pRawData, baseAddr, szByte);
+ }
+ FreeToHeap(pFile);
+ }
+ return szByte;
+}
+
+THUMB_FUNC void GfGfxLoader_PartiallyLoadPalette(NarcId narcId, s32 memberId, NNS_G2D_VRAM_TYPE vramType, u32 baseAddr, u32 heap_id, NNSG2dImagePaletteProxy * pPltProxy)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, FALSE, heap_id, TRUE);
+ NNSG2dPaletteData* pPlttData;
+ NNSG2dPaletteCompressInfo* pCompressInfo;
+ if (pFile != NULL)
+ {
+ BOOL isCompressed = NNS_G2dGetUnpackedPaletteCompressInfo(pFile, &pCompressInfo);
+ if (NNS_G2dGetUnpackedPaletteData(pFile, &pPlttData))
+ {
+ if (isCompressed)
+ {
+ NNS_G2dLoadPaletteEx(pPlttData, pCompressInfo, baseAddr, vramType, pPltProxy);
+ }
+ else
+ {
+ NNS_G2dLoadPalette(pPlttData, baseAddr, vramType, pPltProxy);
+ }
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy)
+{
+ static void (*const load_funcs[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
+ NNS_G2dLoadImage1DMapping,
+ NNS_G2dLoadImage2DMapping
+ };
+
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ u32 retSize = 0;
+ NNSG2dCharacterData * pSrcData;
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(pFile, &pSrcData))
+ {
+ if (szByte != 0)
+ pSrcData->szByte = szByte;
+ load_funcs[whichRoutine](pSrcData, baseAddr, type, pImgProxy);
+ retSize = pSrcData->szByte;
+ }
+ FreeToHeap(pFile);
+ }
+ return retSize;
+}
+
+THUMB_FUNC void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy)
+{
+ static void (*const load_funcs[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
+ NNS_G2dLoadImage1DMapping,
+ NNS_G2dLoadImage2DMapping
+ };
+ NNSG2dCharacterData * pCharacterData;
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, TRUE);
+ if (pFile != NULL)
+ {
+ if (NNS_G2dGetUnpackedCharacterData(pFile, &pCharacterData))
+ {
+ if (szByte != 0)
+ pCharacterData->szByte = szByte;
+ switch (type)
+ {
+ case NNS_G2D_VRAM_TYPE_2DMAIN:
+ pCharacterData->mapingType = (GXOBJVRamModeChar)(reg_GX_DISPCNT & (REG_GX_DISPCNT_EXOBJ_CH_MASK | REG_GX_DISPCNT_OBJMAP_CH_MASK));
+ break;
+ case NNS_G2D_VRAM_TYPE_2DSUB:
+ pCharacterData->mapingType = (GXOBJVRamModeChar)(reg_GXS_DB_DISPCNT & (REG_GXS_DB_DISPCNT_EXOBJ_MASK | REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK));
+ break;
+ default:
+ ;
+ }
+ load_funcs[whichRoutine](pCharacterData, baseAddr, type, pImageProxy);
+ }
+ FreeToHeap(pFile);
+ }
+}
+
+THUMB_FUNC void * GfGfxLoader_GetCharData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCharacterData ** ppCharData, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedBGCharacterData(pFile, ppCharData))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetScrnData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dScreenData ** ppScrData, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedScreenData(pFile, ppScrData))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetPlttData(NarcId narcId, s32 memberId, NNSG2dPaletteData ** ppPltData, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, FALSE, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedPaletteData(pFile, ppPltData))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetCellBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCellDataBank ** ppCellBank, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedCellBank(pFile, ppCellBank))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_GetAnimBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dAnimBankData ** ppAnimBank, u32 heap_id)
+{
+ void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberId, isCompressed, heap_id, FALSE);
+ if (pFile != NULL)
+ {
+ if (!NNS_G2dGetUnpackedAnimBank(pFile, ppAnimBank))
+ {
+ FreeToHeap(pFile);
+ return NULL;
+ }
+ }
+ return pFile;
+}
+
+THUMB_FUNC void * GfGfxLoader_UncompressFromNarc(NarcId narcId, s32 memberId, u32 heap_id)
+{
+ return GfGfxLoader_LoadFromNarc(narcId, memberId, TRUE, heap_id, FALSE);
+}
+
+THUMB_FUNC void * GfGfxLoader_LoadFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd)
+{
+ void * dest;
+ void * dest2;
+ if (isCompressed || allocAtEnd == TRUE)
+ {
+ u32 size = GetNarcMemberSizeByIdPair(narcId, memberNo);
+ dest = AllocFromHeapAtEnd(heap_id, size);
+ }
+ else
+ {
+ u32 size = GetNarcMemberSizeByIdPair(narcId, memberNo);
+ dest = AllocFromHeap(heap_id, size);
+ }
+ if (dest != NULL)
+ {
+ ReadWholeNarcMemberByIdPair(dest, narcId, memberNo);
+ if (isCompressed)
+ {
+ if (allocAtEnd == FALSE)
+ {
+ dest2 = AllocFromHeap(heap_id, (*(u32 *)dest) >> 8);
+ }
+ else
+ {
+ dest2 = AllocFromHeapAtEnd(heap_id, (*(u32 *)dest) >> 8);
+ }
+ if (dest2 != NULL)
+ {
+ MI_UncompressLZ8(dest, dest2);
+ FreeToHeap(dest);
+ }
+ dest = dest2; // UB: if dest2 is NULL, dest is never freed
+ }
+ }
+ return dest;
+}
+
+THUMB_FUNC void * GfGfxLoader_LoadFromNarc_GetSizeOut(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd, u32 *size_p)
+{
+ void * dest;
+ void * dest2;
+ *size_p = GetNarcMemberSizeByIdPair(narcId, memberNo);
+ if (isCompressed || allocAtEnd == TRUE)
+ {
+ dest = AllocFromHeapAtEnd(heap_id, *size_p);
+ }
+ else
+ {
+ dest = AllocFromHeap(heap_id, *size_p);
+ }
+ if (dest != NULL)
+ {
+ ReadWholeNarcMemberByIdPair(dest, narcId, memberNo);
+ if (isCompressed)
+ {
+ *size_p = (*(u32 *)dest) >> 8;
+ if (allocAtEnd == FALSE)
+ {
+ dest2 = AllocFromHeap(heap_id, *size_p);
+ }
+ else
+ {
+ dest2 = AllocFromHeapAtEnd(heap_id, *size_p);
+ }
+ if (dest2 != NULL)
+ {
+ MI_UncompressLZ8(dest, dest2);
+ FreeToHeap(dest);
+ }
+ dest = dest2; // UB: if dest2 is NULL, dest is never freed
+ }
+ }
+ return dest;
+}
diff --git a/arm9/src/gf_rtc.c b/arm9/src/gf_rtc.c
new file mode 100644
index 00000000..02fa735f
--- /dev/null
+++ b/arm9/src/gf_rtc.c
@@ -0,0 +1,183 @@
+#include "global.h"
+#include "MI_memory.h"
+#include "gf_rtc.h"
+#include "RTC_convert.h"
+
+typedef struct GF_RTC_Work
+{
+ BOOL getDateTimeSuccess;
+ BOOL getDateTimeLock;
+ s32 getDateTimeSleep;
+ RTCResult getDateTimeErrorCode;
+ RTCDate date; // 10
+ RTCTime time; // 20
+ RTCDate date_async; // 2C
+ RTCTime time_async; // 3C
+} GF_RTC_Work;
+
+GF_RTC_Work sGFRTCWork;
+
+#define MAX_SECONDS (3155759999ll)
+
+void GF_RTC_GetDateTime(GF_RTC_Work * work);
+
+THUMB_FUNC void GF_InitRTCWork(void)
+{
+ RTC_Init();
+ __builtin__clear(&sGFRTCWork, sizeof(sGFRTCWork));
+ sGFRTCWork.getDateTimeSuccess = FALSE;
+ sGFRTCWork.getDateTimeLock = FALSE;
+ sGFRTCWork.getDateTimeSleep = 0;
+ GF_RTC_GetDateTime(&sGFRTCWork);
+}
+
+THUMB_FUNC void GF_RTC_UpdateOnFrame(void)
+{
+ if (!sGFRTCWork.getDateTimeLock)
+ {
+ if (++sGFRTCWork.getDateTimeSleep > 10)
+ {
+ sGFRTCWork.getDateTimeSleep = 0;
+ GF_RTC_GetDateTime(&sGFRTCWork);
+ }
+ }
+}
+
+THUMB_FUNC void GF_RTC_GetDateTime_Callback(RTCResult result, void * data)
+{
+ GF_RTC_Work * work = (GF_RTC_Work *)data;
+ work->getDateTimeErrorCode = result;
+ GF_ASSERT(result == RTC_RESULT_SUCCESS);
+ work->getDateTimeSuccess = TRUE;
+ work->date = work->date_async;
+ work->time = work->time_async;
+ work->getDateTimeLock = FALSE;
+}
+
+THUMB_FUNC void GF_RTC_GetDateTime(GF_RTC_Work * work)
+{
+ work->getDateTimeLock = TRUE;
+ RTCResult result = RTC_GetDateTimeAsync(&work->date_async, &work->time_async, GF_RTC_GetDateTime_Callback, work);
+ work->getDateTimeErrorCode = result;
+ GF_ASSERT(result == RTC_RESULT_SUCCESS);
+}
+
+THUMB_FUNC void GF_RTC_CopyDateTime(RTCDate * date, RTCTime * time)
+{
+ GF_ASSERT(sGFRTCWork.getDateTimeSuccess == TRUE);
+ *date = sGFRTCWork.date;
+ *time = sGFRTCWork.time;
+}
+
+THUMB_FUNC void GF_RTC_CopyTime(RTCTime * time)
+{
+ GF_ASSERT(sGFRTCWork.getDateTimeSuccess == TRUE);
+ *time = sGFRTCWork.time;
+}
+
+THUMB_FUNC void GF_RTC_CopyDate(RTCDate * date)
+{
+ GF_ASSERT(sGFRTCWork.getDateTimeSuccess == TRUE);
+ *date = sGFRTCWork.date;
+}
+
+THUMB_FUNC s32 GF_RTC_TimeToSec(void)
+{
+ RTCTime* time = &sGFRTCWork.time;
+ return 60 * time->minute + 3600 * time->hour + time->second;
+}
+
+THUMB_FUNC s64 GF_RTC_DateTimeToSec(void)
+{
+ return RTC_ConvertDateTimeToSecond(&sGFRTCWork.date, &sGFRTCWork.time);
+}
+
+static inline BOOL IsLeapYear(s32 year)
+{
+ return ((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0);
+}
+
+THUMB_FUNC s32 GF_RTC_GetDayOfYear(const RTCDate * date)
+{
+ RTCDate date_stack;
+ s32 days;
+ static const u16 sGF_DaysPerMonth[] = {
+ 0, // Jan
+ 31, // Feb
+ 59, // Mar
+ 90, // Apr
+ 120, // May
+ 151, // Jun
+ 181, // Jul
+ 212, // Aug
+ 243, // Sep
+ 273, // Oct
+ 304, // Nov
+ 334, // Dec
+ };
+
+ days = date->day;
+ days += sGF_DaysPerMonth[date->month - 1];
+ if (date->month >= RTC_MONTH_MARCH && IsLeapYear(date->year))
+ days++;
+ date_stack = *date;
+ date_stack.month = RTC_MONTH_JANUARY;
+ date_stack.day = 1;
+ RTC_ConvertDateToDay(&date_stack);
+ RTC_ConvertDateToDay(date);
+ return days;
+}
+
+enum RTC_TimeOfDay GF_RTC_GetTimeOfDay(void);
+enum RTC_TimeOfDay GF_RTC_GetTimeOfDayByHour(s32 hour);
+
+THUMB_FUNC BOOL IsNighttime(void)
+{
+ switch (GF_RTC_GetTimeOfDay())
+ {
+ case RTC_TIMEOFDAY_NITE:
+ case RTC_TIMEOFDAY_LATE:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+THUMB_FUNC enum RTC_TimeOfDay GF_RTC_GetTimeOfDay(void)
+{
+ RTCTime time;
+ GF_RTC_CopyTime(&time);
+ return GF_RTC_GetTimeOfDayByHour(time.hour);
+}
+
+THUMB_FUNC enum RTC_TimeOfDay GF_RTC_GetTimeOfDayByHour(s32 hour)
+{
+ static const u8 sTimeOfDayByHour[] = {
+ // 00:00 - 03:59
+ RTC_TIMEOFDAY_LATE, RTC_TIMEOFDAY_LATE, RTC_TIMEOFDAY_LATE, RTC_TIMEOFDAY_LATE,
+ // 04:00 - 09:59
+ RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN, RTC_TIMEOFDAY_MORN,
+ // 10:00 - 16:59
+ RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY, RTC_TIMEOFDAY_DAY,
+ // 17:00 - 19:59
+ RTC_TIMEOFDAY_EVE, RTC_TIMEOFDAY_EVE, RTC_TIMEOFDAY_EVE,
+ // 20:00 - 23:59
+ RTC_TIMEOFDAY_NITE, RTC_TIMEOFDAY_NITE, RTC_TIMEOFDAY_NITE, RTC_TIMEOFDAY_NITE,
+ };
+
+ GF_ASSERT(hour >= 0 && hour < 24);
+ return sTimeOfDayByHour[hour];
+}
+
+THUMB_FUNC s64 GF_RTC_TimeDelta(s64 first, s64 last)
+{
+ RTCDate maxDate = { 99, 12, 31, 0 };
+ RTCTime maxTime = { 23, 59, 59 };
+
+ s64 check = RTC_ConvertDateTimeToSecond(&maxDate, &maxTime);
+ GF_ASSERT(check == MAX_SECONDS);
+ if (first < last)
+ return last - first;
+ else
+ return last + (MAX_SECONDS - first);
+}
diff --git a/arm9/src/heap.c b/arm9/src/heap.c
index 84abc834..7f35fdcc 100644
--- a/arm9/src/heap.c
+++ b/arm9/src/heap.c
@@ -1,15 +1,16 @@
#include "heap.h"
#include "error_message_reset.h"
+#include "unk_02031734.h"
-extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2);
-extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2);
-extern void thunk_FUN_020adc8c();
-extern void FUN_020ADDF0(void *ptr1, void *ptr2);
-extern u32 FUN_02031810(void);
-extern u32 FUN_020ADDC8(void *param0);
-extern void FUN_020AE82C(u32 param0, void *param1, u32 param2);
-extern u32 FUN_020ADDC0(void *param0);
-extern void FUN_020ADE2C(void *ptr1, void *ptr2, u32 param2);
+
+extern void *NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2);
+extern void *NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2);
+extern void NNS_FndDestroyExpHeap();
+extern void NNS_FndFreeToExpHeap(void *ptr1, void *ptr2);
+extern u32 NNS_FndGetTotalFreeSizeForExpHeap(void *param0);
+extern void NNS_FndInitAllocatorForExpHeap(u32 param0, void *param1, u32 param2);
+extern u32 NNS_FndGetSizeForMBlockExpHeap(void *param0);
+extern void NNS_FndResizeForMBlockExpHeap(void *ptr1, void *ptr2, u32 param2);
struct UnkStruct_020166C8 UNK_021C4D28;
@@ -67,12 +68,12 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
if (ptr != 0)
{
- UNK_021C4D28.unk00[r7] = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0);
+ UNK_021C4D28.unk00[r7] = NNS_FndCreateExpHeapEx(ptr, param0[0], 0);
UNK_021C4D28.unk10[r7] = (u8)r7;
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
param0 += 2;
@@ -142,13 +143,13 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3)
void *ptr2 = UNK_021C4D28.unk00[ptr[param0]];
if (ptr2 != 0)
{
- void *ptr3 = tempName_NNS_FndAllocFromExpHeapEx(ptr2, param2, param3);
+ void *ptr3 = NNS_FndAllocFromExpHeapEx(ptr2, param2, param3);
if (ptr3 != 0)
{
param3 = FUN_020167F4();
if (param3 >= 0)
{
- UNK_021C4D28.unk00[param3] = tempName_NNS_FndCreateExpHeapEx(ptr3, param2, 0);
+ UNK_021C4D28.unk00[param3] = NNS_FndCreateExpHeapEx(ptr3, param2, 0);
if (UNK_021C4D28.unk00[param3] != 0)
@@ -161,27 +162,27 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3)
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
return 0;
}
@@ -192,18 +193,18 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id)
if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0)
{
- thunk_FUN_020adc8c();
+ NNS_FndDestroyExpHeap();
u8 index = UNK_021C4D28.unk10[heap_id];
void *ptr1 = UNK_021C4D28.unk04[index];
void *ptr2 = UNK_021C4D28.unk08[index];
if (ptr1 != 0 && ptr2 != 0)
{
- FUN_020ADDF0(ptr1, ptr2);
+ NNS_FndFreeToExpHeap(ptr1, ptr2);
}
else
{
- ErrorHandling();
+ GF_AssertFail();
}
UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] = 0;
@@ -220,7 +221,7 @@ THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3)
OSIntrMode intr_mode = OS_DisableInterrupts();
param1 += 16;
- u32 *ptr = (u32 *)tempName_NNS_FndAllocFromExpHeapEx(param0, param1, param2);
+ u32 *ptr = (u32 *)NNS_FndAllocFromExpHeapEx(param0, param1, param2);
OS_RestoreInterrupts(intr_mode);
if (ptr != 0)
@@ -300,15 +301,15 @@ void FreeToHeap(void *ptr)
UNK_021C4D28.unk0c[heap_id]--;
OSIntrMode intr_mode = OS_DisableInterrupts();
- FUN_020ADDF0(ptr2, ptr - 16);
+ NNS_FndFreeToExpHeap(ptr2, ptr - 16);
OS_RestoreInterrupts(intr_mode);
return;
}
- ErrorHandling();
+ GF_AssertFail();
}
-void FUN_02016A8C(u32 param0, void *param1)
+void FreeToHeapExplicit(u32 param0, void *param1)
{
GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
@@ -321,14 +322,14 @@ void FUN_02016A8C(u32 param0, void *param1)
u8 heap_id = (u8)((u32 *)param1)[-1];
GF_ASSERT (heap_id == param0);
- FUN_020ADDF0(ptr, param1 - 16);
+ NNS_FndFreeToExpHeap(ptr, param1 - 16);
GF_ASSERT (UNK_021C4D28.unk0c[param0]);
UNK_021C4D28.unk0c[param0]--;
return;
}
- ErrorHandling();
+ GF_AssertFail();
}
THUMB_FUNC u32 FUN_02016AF8(u32 param0)
@@ -336,10 +337,10 @@ THUMB_FUNC u32 FUN_02016AF8(u32 param0)
if (param0 < UNK_021C4D28.unk14)
{
u8 index = UNK_021C4D28.unk10[param0];
- return FUN_020ADDC8(UNK_021C4D28.unk00[index]);
+ return NNS_FndGetTotalFreeSizeForExpHeap(UNK_021C4D28.unk00[index]);
}
- ErrorHandling();
+ GF_AssertFail();
return 0;
}
@@ -349,11 +350,11 @@ THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2)
{
u8 index = UNK_021C4D28.unk10[param1];
- FUN_020AE82C(param0, UNK_021C4D28.unk00[index], param2);
+ NNS_FndInitAllocatorForExpHeap(param0, UNK_021C4D28.unk00[index], param2);
return;
}
- ErrorHandling();
+ GF_AssertFail();
}
THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1)
@@ -361,16 +362,16 @@ THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1)
GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
param1 += 16;
- if (FUN_020ADDC0(ptr - 16) >= param1)
+ if (NNS_FndGetSizeForMBlockExpHeap(ptr - 16) >= param1)
{
u8 heap_id = (u8)((u32 *)ptr)[-1];
u8 index = UNK_021C4D28.unk10[heap_id];
- FUN_020ADE2C(UNK_021C4D28.unk00[index], ptr - 16, param1);
+ NNS_FndResizeForMBlockExpHeap(UNK_021C4D28.unk00[index], ptr - 16, param1);
return;
}
- ErrorHandling();
+ GF_AssertFail();
}
THUMB_FUNC u32 FUN_02016B90(u32 param0)
diff --git a/arm9/src/itemtool.c b/arm9/src/itemtool.c
index 6b892d6d..9982ff40 100644
--- a/arm9/src/itemtool.c
+++ b/arm9/src/itemtool.c
@@ -778,7 +778,7 @@ u32 GetItemAttr(u16 item, u32 attr, u32 heap_id)
u32 ret;
struct ItemData * itemData = (struct ItemData *)LoadItemDataOrGfx(item, 0, heap_id);
ret = GetItemAttr_PreloadedItemData(itemData, attr);
- FUN_02016A8C(heap_id, itemData);
+ FreeToHeapExplicit(heap_id, itemData);
return ret;
}
diff --git a/arm9/src/list_menu.c b/arm9/src/list_menu.c
new file mode 100644
index 00000000..033d06f9
--- /dev/null
+++ b/arm9/src/list_menu.c
@@ -0,0 +1,572 @@
+#include "global.h"
+#include "heap.h"
+#include "main.h"
+#include "list_menu.h"
+#include "text.h"
+
+void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count);
+void ListMenuDrawCursor(struct ListMenu * list);
+BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown);
+void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit);
+
+static inline u32 MakeFontColor(u32 fgPal, u32 shdwPal, u32 bgPal)
+{
+ return (u32)(
+ ((u32)(fgPal << 24) >> 8)
+ | ((u32)(shdwPal << 24) >> 16)
+ | ((u32)(bgPal << 24) >> 24)
+ );
+}
+
+THUMB_FUNC struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id)
+{
+ struct ListMenu * list = AllocFromHeap(heap_id, sizeof(struct ListMenu));
+ list->template = *template;
+ list->cursor = ListMenuCursorNew(heap_id);
+ list->cursorPos = cursorPos;
+ list->itemsAbove = itemsAbove;
+ list->unk_30 = 0;
+ list->unk_31 = 0;
+ list->taskId = 0xFF;
+ list->unk_33 = 0;
+ list->heap_id = (u8)heap_id;
+ list->cursorPal = list->template.cursorPal;
+ list->fillValue = list->template.fillValue;
+ list->cursorShadowPal = list->template.cursorShadowPal;
+ list->lettersSpacing = list->template.lettersSpacing;
+ list->fontId = list->template.fontId;
+ list->overrideEnabled = FALSE;
+ if (list->template.totalItems < list->template.maxShowed)
+ list->template.maxShowed = list->template.totalItems;
+ ListMenuCursorSetColor(
+ list->cursor,
+// MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->fillValue)
+ (u32)(
+ ((u32)(list->template.cursorPal << 24) >> 8)
+ | ((u32)(list->template.cursorShadowPal << 24) >> 16)
+ | ((u32)(list->template.fillValue << 24) >> 24)
+ )
+ );
+ FillWindowPixelBuffer(list->template.window, list->template.fillValue);
+ ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, TRUE);
+ CopyWindowToVram(template->window);
+ return list;
+}
+
+THUMB_FUNC s32 ListMenu_ProcessInput(struct ListMenu * list)
+{
+ list->unk_33 = 0;
+
+ if (gMain.newKeys & REG_PAD_KEYINPUT_A_MASK) {
+ return list->template.items[list->cursorPos + list->itemsAbove].value;
+ }
+ else if (gMain.newKeys & REG_PAD_KEYINPUT_B_MASK) {
+ return LIST_CANCEL;
+ }
+ else if (gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_UP_MASK) {
+ if (!ListMenuChangeSelection(list, TRUE, 1, FALSE))
+ list->unk_33 = 1;
+ return LIST_NOTHING_CHOSEN;
+ }
+ else if (gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_DOWN_MASK) {
+ if (!ListMenuChangeSelection(list, TRUE, 1, TRUE))
+ list->unk_33 = 2;
+ return LIST_NOTHING_CHOSEN;
+ }
+ else
+ {
+ u16 rightButton, leftButton;
+ switch (list->template.scrollMultiple)
+ {
+ case LIST_NO_MULTIPLE_SCROLL:
+ default:
+ leftButton = FALSE;
+ rightButton = FALSE;
+ break;
+ case LIST_MULTIPLE_SCROLL_DPAD:
+ leftButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_LEFT_MASK);
+ rightButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_RIGHT_MASK);
+ break;
+ case LIST_MULTIPLE_SCROLL_L_R:
+ leftButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_L_MASK);
+ rightButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_R_MASK);
+ break;
+ }
+ if (leftButton)
+ {
+ if (!ListMenuChangeSelection(list, TRUE, (u8)list->template.maxShowed, FALSE))
+ list->unk_33 = 3;
+ return LIST_NOTHING_CHOSEN;
+ }
+ else if (rightButton)
+ {
+ if (!ListMenuChangeSelection(list, TRUE, (u8)list->template.maxShowed, TRUE))
+ list->unk_33 = 4;
+ return LIST_NOTHING_CHOSEN;
+ }
+ else
+ {
+ return LIST_NOTHING_CHOSEN;
+ }
+ }
+}
+
+THUMB_FUNC void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove)
+{
+ if (cursorPos != NULL)
+ *cursorPos = list->cursorPos;
+ if (itemsAbove != NULL)
+ *itemsAbove = list->itemsAbove;
+ DestroyListMenuCursorObj(list->cursor);
+ FreeToHeapExplicit(list->heap_id, list);
+}
+
+THUMB_FUNC void RedrawListMenu(struct ListMenu * list)
+{
+ FillWindowPixelBuffer(list->template.window, list->template.fillValue);
+ ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed);
+ ListMenuDrawCursor(list);
+ CopyWindowToVram(list->template.window);
+}
+
+THUMB_FUNC s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove)
+{
+ if (template != NULL)
+ list->template = *template;
+ list->cursorPos = cursorPos;
+ list->itemsAbove = itemsAbove;
+ list->unk_30 = 0;
+ list->unk_31 = 0;
+
+ if (input == REG_PAD_KEYINPUT_UP_MASK)
+ {
+ ListMenuChangeSelection(list, (u8)updateFlag, 1, FALSE);
+ }
+ else if (input == REG_PAD_KEYINPUT_DOWN_MASK)
+ {
+ ListMenuChangeSelection(list, (u8)updateFlag, 1, TRUE);
+ }
+ if (newCursorPos != NULL)
+ {
+ *newCursorPos = list->cursorPos;
+ }
+ if (newItemsAbove != NULL)
+ {
+ *newItemsAbove = list->itemsAbove;
+ }
+ return -1;
+}
+
+THUMB_FUNC s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove)
+{
+ return ListMenuTestInputInternal(list, template, cursorPos, itemsAbove, FALSE, input, newCursorPos, newItemsAbove);
+}
+
+THUMB_FUNC void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal)
+{
+ list->cursorPal = cursorPal;
+ list->fillValue = fillValue;
+ list->cursorShadowPal = cursorShadowPal;
+ list->overrideEnabled = TRUE;
+}
+
+THUMB_FUNC void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p)
+{
+ *index_p = (u16)(list->cursorPos + list->itemsAbove);
+}
+
+THUMB_FUNC void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p)
+{
+ if (cursorPos_p != NULL)
+ *cursorPos_p = list->cursorPos;
+ if (itemsAbove_p != NULL)
+ *itemsAbove_p = list->itemsAbove;
+}
+
+THUMB_FUNC u8 ListMenuGetUnk33(struct ListMenu * list)
+{
+ return list->unk_33;
+}
+
+THUMB_FUNC s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index)
+{
+ return list->template.items[index].value;
+}
+
+THUMB_FUNC s32 ListMenuGetTemplateField(struct ListMenu * list, u32 attr)
+{
+ switch (attr)
+ {
+ case 0:
+ return (s32)list->template.moveCursorFunc;
+ case 1:
+ return (s32)list->template.itemPrintFunc;
+ case 2:
+ return (s32)list->template.totalItems;
+ case 3:
+ return (s32)list->template.maxShowed;
+ case 4:
+ break;
+ case 5:
+ return (s32)list->template.header_X;
+ case 6:
+ return (s32)list->template.item_X;
+ case 7:
+ return (s32)list->template.cursor_X;
+ case 8:
+ return (s32)list->template.upText_Y;
+ case 9:
+ return GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding;
+ case 10:
+ return (s32)list->template.cursorPal;
+ case 11:
+ return (s32)list->template.fillValue;
+ case 12:
+ return (s32)list->template.cursorShadowPal;
+ case 13:
+ return (s32)list->template.lettersSpacing;
+ case 14:
+ return (s32)list->template.itemVerticalPadding;
+ case 15:
+ return (s32)list->template.scrollMultiple;
+ case 16:
+ return (s32)list->template.fontId;
+ case 17:
+ return (s32)list->template.cursorKind;
+ case 18:
+ return (s32)list->template.window;
+ case 19:
+ return (s32)list->template.unk_1C;
+ }
+
+ return -1;
+}
+
+THUMB_FUNC void ListMenuSetTemplateField(struct ListMenu * list, u32 attr, s32 value)
+{
+ switch (attr)
+ {
+ case 0:
+ list->template.moveCursorFunc = (LM_MoveCursorFunc_t)value;
+ break;
+ case 1:
+ list->template.itemPrintFunc = (LM_ItemPrintFunc_t)value;
+ break;
+ case 2:
+ list->template.totalItems = (u16)value;
+ break;
+ case 3:
+ list->template.maxShowed = (u16)value;
+ break;
+ case 4:
+ break;
+ case 5:
+ list->template.header_X = (u8)value;
+ break;
+ case 6:
+ list->template.item_X = (u8)value;
+ break;
+ case 7:
+ list->template.cursor_X = (u8)value;
+ break;
+ case 8:
+ list->template.upText_Y = (u8)value;
+ break;
+ case 9:
+ break;
+ case 10:
+ list->template.cursorPal = (u8)value;
+ break;
+ case 11:
+ list->template.fillValue = (u8)value;
+ break;
+ case 12:
+ list->template.cursorShadowPal = (u8)value;
+ break;
+ case 13:
+ list->template.lettersSpacing = (u8)value;
+ break;
+ case 14:
+ list->template.itemVerticalPadding = (u8)value;
+ break;
+ case 15:
+ list->template.scrollMultiple = (u8)value;
+ break;
+ case 16:
+ list->template.fontId = (u8)value;
+ break;
+ case 17:
+ list->template.cursorKind = (u8)value;
+ break;
+ case 18:
+ list->template.window = (struct Window *)value;
+ break;
+ case 19:
+ list->template.unk_1C = (u32)value;
+ break;
+ }
+}
+
+THUMB_FUNC void ListMenuGetItemStr(struct ListMenu * list, struct ListMenuItem * items)
+{
+ list->template.items = items;
+}
+
+THUMB_FUNC void ListMenuPrint(struct ListMenu * list, struct String * str, u8 x, u8 y)
+{
+ if (str != NULL)
+ {
+ if (list->overrideEnabled)
+ {
+ AddTextPrinterParameterized3(list->template.window, list->fontId, str, x, y, 0xFF, MakeFontColor(list->cursorPal, list->cursorShadowPal, list->fillValue), list->lettersSpacing, 0, NULL);
+ }
+ else
+ {
+ AddTextPrinterParameterized3(list->template.window, list->template.fontId, str, x, y, 0xFF, MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue), list->template.lettersSpacing, 0, NULL);
+ }
+ }
+}
+
+THUMB_FUNC void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count)
+{
+ s32 i;
+ u8 x, y;
+ u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding);
+
+ for (i = 0; i < count; i++)
+ {
+ if (list->template.items[startIndex].value != LIST_HEADER)
+ x = list->template.item_X;
+ else
+ x = list->template.header_X;
+ y = (u8)((yOffset + i) * yMultiplier + list->template.upText_Y);
+ if (list->template.itemPrintFunc != NULL)
+ list->template.itemPrintFunc(list, list->template.items[startIndex].value, y);
+ ListMenuPrint(list, list->template.items[startIndex].text, x, y);
+ startIndex++;
+ }
+}
+
+THUMB_FUNC void ListMenuDrawCursor(struct ListMenu * list)
+{
+ u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding);
+ u8 x = list->template.cursor_X;
+ u8 y = (u8)(list->itemsAbove * yMultiplier + list->template.upText_Y);
+ switch (list->template.cursorKind)
+ {
+ case 0:
+ ListMenuUpdateCursorObj(list->cursor, list->template.window, x, y);
+ break;
+ case 1:
+ case 2: // leftover
+ case 3: // leftover
+ break;
+ }
+}
+
+THUMB_FUNC void ListMenuErasePrintedCursor(struct ListMenu * list, u16 itemsAbove)
+{
+ switch (list->template.cursorKind)
+ {
+ case 0:
+ u8 yMultiplier = (u8)(GetFontAttribute(list->template.fontId, 1) + list->template.itemVerticalPadding);
+ u8 width = 8;
+ u8 height = 16;
+ FillWindowPixelRect(list->template.window,
+ list->template.fillValue,
+ list->template.cursor_X,
+ (u16)(itemsAbove * yMultiplier + list->template.upText_Y),
+ width,
+ height);
+ break;
+ case 1:
+ case 2: // leftover
+ case 3: // leftover
+ break;
+ }
+}
+
+THUMB_FUNC u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, u8 movingDown)
+{
+ u32 cursorPos;
+ u16 itemsAbove;
+ u16 newRow;
+
+ itemsAbove = list->itemsAbove;
+ cursorPos = list->cursorPos;
+
+ if (!movingDown)
+ {
+ if (list->template.maxShowed == 1)
+ newRow = 0;
+ else
+ newRow = (u16)(list->template.maxShowed - ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)) - 1);
+
+ if (cursorPos == 0)
+ {
+ while (itemsAbove != 0)
+ {
+ itemsAbove--;
+ if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER)
+ {
+ list->itemsAbove = itemsAbove;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ while (itemsAbove > newRow)
+ {
+ itemsAbove--;
+ if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER)
+ {
+ list->itemsAbove = itemsAbove;
+ return 1;
+ }
+ }
+ list->itemsAbove = newRow;
+ list->cursorPos = (u16)(cursorPos - 1);
+ }
+ }
+ else
+ {
+ if (list->template.maxShowed == 1)
+ newRow = 0;
+ else
+ newRow = (u16)((list->template.maxShowed / 2) + (list->template.maxShowed % 2));
+
+ if (cursorPos == list->template.totalItems - list->template.maxShowed)
+ {
+ while (itemsAbove < list->template.maxShowed - 1)
+ {
+ itemsAbove++;
+ if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER)
+ {
+ list->itemsAbove = itemsAbove;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ while (itemsAbove < newRow)
+ {
+ itemsAbove++;
+ if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER)
+ {
+ list->itemsAbove = itemsAbove;
+ return 1;
+ }
+ }
+ list->itemsAbove = newRow;
+ list->cursorPos = (u16)(cursorPos + 1);
+ }
+ }
+ return 2;
+}
+
+THUMB_FUNC void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown)
+{
+ if (count >= list->template.maxShowed)
+ {
+ FillWindowPixelBuffer(list->template.window, list->template.fillValue);
+ ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed);
+ }
+ else
+ {
+ u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding);
+
+ if (!movingDown)
+ {
+ u16 y, width, height;
+
+ ScrollWindow(list->template.window, 1, (u8)(count * yMultiplier), (u8)((list->template.fillValue << 4) | list->template.fillValue));
+ ListMenuPrintEntries(list, list->cursorPos, 0, count);
+
+ y = (u16)((list->template.maxShowed * yMultiplier) + list->template.upText_Y);
+ width = GetWindowWidth(list->template.window);
+ height = GetWindowHeight(list->template.window);
+ FillWindowPixelRect(list->template.window,
+ list->template.fillValue,
+ 0, y, (u16)(width * 8), (u16)(height * 8 - y));
+ }
+ else
+ {
+ u32 width;
+
+ ScrollWindow(list->template.window, 0, (u8)(count * yMultiplier), (u8)((list->template.fillValue << 4) | list->template.fillValue));
+ ListMenuPrintEntries(list, (u16)(list->cursorPos + (list->template.maxShowed - count)), (u16)(list->template.maxShowed - count), count);
+
+ width = GetWindowWidth(list->template.window);
+ FillWindowPixelRect(list->template.window,
+ list->template.fillValue,
+ 0, 0, (u16)(width * 8), list->template.upText_Y);
+ }
+ }
+}
+
+THUMB_FUNC BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown)
+{
+ u16 oldSelectedRow;
+ u8 selectionChange, i, cursorCount;
+
+ oldSelectedRow = list->itemsAbove;
+ cursorCount = 0;
+ selectionChange = 0;
+ for (i = 0; i < count; i++)
+ {
+ do
+ {
+ u8 ret = ListMenuUpdateSelectedRowIndexAndScrollOffset(list, movingDown);
+
+ selectionChange |= ret;
+ if (ret != 2)
+ break;
+ cursorCount++;
+ }
+ while (list->template.items[list->cursorPos + list->itemsAbove].value == LIST_HEADER);
+ }
+
+ if (updateCursorAndCallCallback)
+ {
+ switch (selectionChange)
+ {
+ case 0:
+ default:
+ return TRUE;
+ case 1:
+ ListMenuErasePrintedCursor(list, oldSelectedRow);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, FALSE);
+ CopyWindowToVram(list->template.window);
+ break;
+ case 2:
+ case 3:
+ ListMenuErasePrintedCursor(list, oldSelectedRow);
+ ListMenuScroll(list, cursorCount, movingDown);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, FALSE);
+ CopyWindowToVram(list->template.window);
+ break;
+ }
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit)
+{
+ if (list->template.moveCursorFunc != NULL)
+ {
+ list->template.moveCursorFunc(list, list->template.items[list->cursorPos + list->itemsAbove].value, onInit);
+ }
+}
+
+THUMB_FUNC void ListMenuCopyToVram(struct ListMenu * list)
+{
+ CopyWindowToVram(list->template.window);
+}
diff --git a/arm9/src/list_menu_items.c b/arm9/src/list_menu_items.c
new file mode 100644
index 00000000..3aa5b0a0
--- /dev/null
+++ b/arm9/src/list_menu_items.c
@@ -0,0 +1,92 @@
+#include "global.h"
+#include "list_menu_items.h"
+#include "msgdata.h"
+#include "heap.h"
+
+void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items);
+
+THUMB_FUNC struct ListMenuItem * ListMenuItems_ctor(u32 count, u32 heap_id)
+{
+ s32 i;
+ struct ListMenuItem * ret = AllocFromHeap(heap_id, (count + 1) * sizeof(struct ListMenuItem));
+ if (ret != NULL)
+ {
+ for (i = 0; i < count; i++)
+ {
+ ret[i].text = NULL;
+ ret[i].value = 0;
+ }
+ ret[i].text = (struct String *)-1u;
+ ret[i].value = (s32)heap_id;
+ }
+ return ret;
+}
+
+THUMB_FUNC void ListMenuItems_dtor(struct ListMenuItem * items)
+{
+ ListMenuItems_DestroyMenuStrings(items);
+ FreeToHeap(items);
+}
+
+THUMB_FUNC void ListMenuItems_AppendFromMsgData(struct ListMenuItem * items, struct MsgData * msgData, u32 msgNo, s32 value)
+{
+ u32 heap_id;
+ struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id);
+ if (newItem != NULL)
+ {
+ newItem->text = NewString_ReadMsgData(msgData, msgNo);
+ newItem->value = value;
+ }
+}
+
+THUMB_FUNC void ListMenuItems_AddItem(struct ListMenuItem * items, struct String * str, s32 value)
+{
+ u32 heap_id;
+ struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id);
+ if (newItem != NULL)
+ {
+ newItem->text = StringDup(str, heap_id);
+ newItem->value = value;
+ }
+}
+
+THUMB_FUNC void ListMenuItems_CopyItem(struct ListMenuItem * items, struct ListMenuItem * src)
+{
+ u32 heap_id;
+ struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id);
+ if (newItem != NULL)
+ {
+ newItem->text = src->text;
+ newItem->value = src->value;
+ }
+}
+
+THUMB_FUNC struct ListMenuItem * ListMenuItems_SeekEnd(struct ListMenuItem * items, u32 * heap_id_p)
+{
+ struct ListMenuItem * ret;
+ for (; items->text != NULL; items++)
+ {
+ if (items->text == (struct String *)-1u)
+ {
+ GF_ASSERT(0);
+ return NULL;
+ }
+ }
+ ret = items;
+ for (; items->text != (struct String *)-1u; items++)
+ ;
+ *heap_id_p = (u32)items->value;
+ return ret;
+}
+
+THUMB_FUNC void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items)
+{
+ s32 i;
+ for (i = 0; items[i].text != (struct String *)-1u; i++)
+ {
+ if (items[i].text == NULL)
+ break;
+ String_dtor(items[i].text);
+ items[i].text = NULL;
+ }
+}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index c50fbaff..749bec41 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -12,32 +12,25 @@
#include "player_data.h"
#include "sound.h"
#include "timer3.h"
+#include "unk_02031734.h"
+#include "unk_0202F150.h"
+#include "module_52.h"
FS_EXTERN_OVERLAY(MODULE_52);
FS_EXTERN_OVERLAY(MODULE_63);
#define SOFT_RESET_KEY (PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START | PAD_BUTTON_SELECT)
-struct Unk2106FA0 gBacklightTop;
+s32 UNK_02016FA4;
+PMBackLightSwitch gBacklightTop;
+struct UnkStruct_02016FA8 UNK_02016FA8;
-extern BOOL OverlayManager_new(struct Unk21DBE18 *, s32 *, int);
-extern BOOL OverlayManager_Run(int);
-extern void OverlayManager_delete(int);
-extern BOOL FUN_02033678(void);
-extern u32 FUN_020335B8(void);
-extern BOOL FUN_0202FB80(void);
-
-extern void InitSystemForTheGame(void);
-extern void InitGraphicMemory(void);
extern void FUN_02022294(void);
extern void GF_InitRTCWork(void);
extern void FUN_02002C14(void);
extern void FUN_02002C50(int, int);
-extern struct SaveBlock2 * SaveBlock2_new(void);
-extern void * FUN_02029EF8(struct SaveBlock2 *);
extern int FUN_020337E8(int);
extern void FUN_02034188(int, int);
-extern int FUN_020227FC(struct SaveBlock2 *);
extern void FUN_02089D90(int);
extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
@@ -49,13 +42,13 @@ extern void FUN_0200A318(void);
extern void FUN_0200E2D8(void);
extern struct Unk21DBE18 MOD63_021DBE18;
-extern struct Unk21DBE18 MOD52_021D76C8;
extern u8 SDK_STATIC_BSS_START[];
-const int gGameVersion = GAME_VERSION;
const int gGameLanguage = GAME_LANGUAGE;
+const int gGameVersion = GAME_VERSION;
+__declspec(noreturn)
THUMB_FUNC void NitroMain(void)
{
InitSystemForTheGame();
@@ -72,13 +65,13 @@ THUMB_FUNC void NitroMain(void)
FUN_02002C50(0, 3);
FUN_02002C50(1, 3);
FUN_02002C50(3, 3);
- gBacklightTop.unk18 = -1;
- gBacklightTop.unk20 = SaveBlock2_new();
- InitSoundData(FUN_02029EF8(gBacklightTop.unk20), Sav2_PlayerData_GetOptionsAddr(gBacklightTop.unk20));
+ UNK_02016FA8.unk10 = -1;
+ UNK_02016FA8.unk18 = SaveBlock2_new();
+ InitSoundData(Sav2_Chatot_get(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18));
Init_Timer3();
if (FUN_020337E8(3) == 3)
FUN_02034188(3, 0);
- if (FUN_020227FC(gBacklightTop.unk20) == 0)
+ if (FUN_020227FC(UNK_02016FA8.unk18) == 0)
{
FUN_02089D90(0);
}
@@ -88,12 +81,12 @@ THUMB_FUNC void NitroMain(void)
{
case 0:
// Title Demo
- gBacklightTop.unk1C = 0;
+ UNK_02016FA8.unk14 = 0;
RegisterMainOverlay(FS_OVERLAY_ID(MODULE_63), &MOD63_021DBE18);
break;
case 1:
// Reset transition?
- gBacklightTop.unk1C = 1;
+ UNK_02016FA8.unk14 = 1;
RegisterMainOverlay(FS_OVERLAY_ID(MODULE_52), &MOD52_021D76C8);
break;
default:
@@ -106,7 +99,7 @@ THUMB_FUNC void NitroMain(void)
InitializeMainRNG();
FUN_0200A2AC();
FUN_02015E30();
- gBacklightTop.unk4 = 0;
+ UNK_02016FA4 = 0;
for (;;)
{
FUN_02000EE8();
@@ -145,40 +138,40 @@ THUMB_FUNC void NitroMain(void)
THUMB_FUNC void FUN_02000DF4(void)
{
- gBacklightTop.unk8 = (FSOverlayID)-1;
- gBacklightTop.unkC = 0;
- gBacklightTop.unk10 = (FSOverlayID)-1; // overlay invalid
- gBacklightTop.unk14 = NULL;
+ UNK_02016FA8.unk0 = SDK_OVERLAY_INVALID_ID;
+ UNK_02016FA8.unk4 = NULL;
+ UNK_02016FA8.unk8 = SDK_OVERLAY_INVALID_ID; // overlay invalid
+ UNK_02016FA8.unkC = NULL;
}
THUMB_FUNC void Main_RunOverlayManager(void)
{
- if (!gBacklightTop.unkC)
+ if (UNK_02016FA8.unk4 == NULL)
{
- if (gBacklightTop.unk14 == NULL)
+ if (UNK_02016FA8.unkC == NULL)
return;
- if (gBacklightTop.unk10 != SDK_OVERLAY_INVALID_ID)
- HandleLoadOverlay(gBacklightTop.unk10, 0);
- gBacklightTop.unk8 = gBacklightTop.unk10;
- gBacklightTop.unkC = OverlayManager_new(gBacklightTop.unk14, &gBacklightTop.unk18, 0);
- gBacklightTop.unk10 = SDK_OVERLAY_INVALID_ID;
- gBacklightTop.unk14 = NULL;
+ if (UNK_02016FA8.unk8 != SDK_OVERLAY_INVALID_ID)
+ HandleLoadOverlay(UNK_02016FA8.unk8, 0);
+ UNK_02016FA8.unk0 = UNK_02016FA8.unk8;
+ UNK_02016FA8.unk4 = OverlayManager_new(UNK_02016FA8.unkC, &UNK_02016FA8.unk10, 0);
+ UNK_02016FA8.unk8 = SDK_OVERLAY_INVALID_ID;
+ UNK_02016FA8.unkC = NULL;
}
- if (OverlayManager_Run(gBacklightTop.unkC))
+ if (OverlayManager_Run(UNK_02016FA8.unk4))
{
- OverlayManager_delete(gBacklightTop.unkC);
- gBacklightTop.unkC = 0;
- if (gBacklightTop.unk8 != SDK_OVERLAY_INVALID_ID)
- UnloadOverlayByID(gBacklightTop.unk8);
+ OverlayManager_delete(UNK_02016FA8.unk4);
+ UNK_02016FA8.unk4 = NULL;
+ if (UNK_02016FA8.unk0 != SDK_OVERLAY_INVALID_ID)
+ UnloadOverlayByID(UNK_02016FA8.unk0);
}
}
-THUMB_FUNC void RegisterMainOverlay(FSOverlayID id, struct Unk21DBE18 * arg1)
+THUMB_FUNC void RegisterMainOverlay(FSOverlayID id, const struct Unk21DBE18 * arg1)
{
- if (gBacklightTop.unk14 != NULL)
- ErrorHandling();
- gBacklightTop.unk10 = id;
- gBacklightTop.unk14 = arg1;
+ if (UNK_02016FA8.unkC != NULL)
+ GF_AssertFail();
+ UNK_02016FA8.unk8 = id;
+ UNK_02016FA8.unkC = arg1;
}
THUMB_FUNC void FUN_02000E9C(void)
@@ -218,9 +211,8 @@ THUMB_FUNC void FUN_02000EE8(void)
}
extern void FUN_0200E3A0(PMLCDTarget, int);
-extern BOOL FUN_02032DAC(void);
-// No Return
+__declspec(noreturn)
THUMB_FUNC void DoSoftReset(u32 parameter)
{
FUN_0200E3A0(PM_LCD_TOP, 0x7FFF);
@@ -257,7 +249,7 @@ THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1)
{
HandleDSLidAction();
FUN_02016464();
- if (gMain.unk48 & 1)
+ if (gMain.newKeys & 1)
break;
FUN_02000E9C();
}
@@ -294,10 +286,10 @@ THUMB_FUNC void HandleDSLidAction(void)
FUN_0201CE04();
if (CTRDG_IsPulledOut() == TRUE)
{
- gBacklightTop.unk4 = 1;
+ UNK_02016FA4 = 1;
}
{
- int r1 = gBacklightTop.unk4;
+ int r1 = UNK_02016FA4;
while (1)
{
PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD;
@@ -311,7 +303,7 @@ THUMB_FUNC void HandleDSLidAction(void)
}
else if (PAD_DetectFold())
{
- r1 = gBacklightTop.unk4 = 1;
+ r1 = UNK_02016FA4 = 1;
}
else
break;
@@ -331,6 +323,6 @@ THUMB_FUNC void HandleDSLidAction(void)
{
PM_GetBackLight(&top, &bottom);
if (top == PM_BACKLIGHT_OFF)
- PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0);
+ PM_SetBackLight(PM_LCD_ALL, gBacklightTop);
}
}
diff --git a/arm9/src/math_util.c b/arm9/src/math_util.c
index 5aeb4f8e..ac3b77f0 100644
--- a/arm9/src/math_util.c
+++ b/arm9/src/math_util.c
@@ -1,129 +1,466 @@
#include "global.h"
#include "math_util.h"
-extern const s16 UNK_020FFA38[]; // temporary until further notice
+extern const s16 FX_SinCosTable_[]; // temporary until further notice
/*
* Constant tables
*/
-const s32 gSineTable[] =
+const fx32 gSineTable[] =
{
- 0x00000000, 0x00000047, 0x0000008F, 0x000000D6,
- 0x0000011E, 0x00000165, 0x000001AC, 0x000001F3,
- 0x0000023A, 0x00000281, 0x000002C7, 0x0000030E,
- 0x00000354, 0x00000399, 0x000003DF, 0x00000424,
- 0x00000469, 0x000004AE, 0x000004F2, 0x00000536,
- 0x00000579, 0x000005BC, 0x000005FE, 0x00000640,
- 0x00000682, 0x000006C3, 0x00000704, 0x00000744,
- 0x00000783, 0x000007C2, 0x00000800, 0x0000083E,
- 0x0000087B, 0x000008B7, 0x000008F2, 0x0000092D,
- 0x00000968, 0x000009A1, 0x000009DA, 0x00000A12,
- 0x00000A49, 0x00000A7F, 0x00000AB5, 0x00000AE9,
- 0x00000B1D, 0x00000B50, 0x00000B82, 0x00000BB4,
- 0x00000BE4, 0x00000C13, 0x00000C42, 0x00000C6F,
- 0x00000C9C, 0x00000CC7, 0x00000CF2, 0x00000D1B,
- 0x00000D44, 0x00000D6B, 0x00000D92, 0x00000DB7,
- 0x00000DDB, 0x00000DFE, 0x00000E21, 0x00000E42,
- 0x00000E61, 0x00000E80, 0x00000E9E, 0x00000EBA,
- 0x00000ED6, 0x00000EF0, 0x00000F09, 0x00000F21,
- 0x00000F38, 0x00000F4D, 0x00000F61, 0x00000F74,
- 0x00000F86, 0x00000F97, 0x00000FA6, 0x00000FB5,
- 0x00000FC2, 0x00000FCE, 0x00000FD8, 0x00000FE1,
- 0x00000FEA, 0x00000FF0, 0x00000FF6, 0x00000FFA,
- 0x00000FFE, 0x00000FFF, 0x00001000, 0x00000FFF,
- 0x00000FFE, 0x00000FFA, 0x00000FF6, 0x00000FF0,
- 0x00000FEA, 0x00000FE1, 0x00000FD8, 0x00000FCE,
- 0x00000FC2, 0x00000FB5, 0x00000FA6, 0x00000F97,
- 0x00000F86, 0x00000F74, 0x00000F61, 0x00000F4D,
- 0x00000F38, 0x00000F21, 0x00000F09, 0x00000EF0,
- 0x00000ED6, 0x00000EBA, 0x00000E9E, 0x00000E80,
- 0x00000E61, 0x00000E42, 0x00000E21, 0x00000DFE,
- 0x00000DDB, 0x00000DB7, 0x00000D92, 0x00000D6B,
- 0x00000D44, 0x00000D1B, 0x00000CF2, 0x00000CC7,
- 0x00000C9C, 0x00000C6F, 0x00000C42, 0x00000C13,
- 0x00000BE4, 0x00000BB4, 0x00000B82, 0x00000B50,
- 0x00000B1D, 0x00000AE9, 0x00000AB5, 0x00000A7F,
- 0x00000A49, 0x00000A12, 0x000009DA, 0x000009A1,
- 0x00000968, 0x0000092D, 0x000008F2, 0x000008B7,
- 0x0000087B, 0x0000083E, 0x00000800, 0x000007C2,
- 0x00000783, 0x00000744, 0x00000704, 0x000006C3,
- 0x00000682, 0x00000640, 0x000005FE, 0x000005BC,
- 0x00000579, 0x00000536, 0x000004F2, 0x000004AE,
- 0x00000469, 0x00000424, 0x000003DF, 0x00000399,
- 0x00000354, 0x0000030E, 0x000002C7, 0x00000281,
- 0x0000023A, 0x000001F3, 0x000001AC, 0x00000165,
- 0x0000011E, 0x000000D6, 0x0000008F, 0x00000047,
- 0x00000000, 0xFFFFFFB9, 0xFFFFFF71, 0xFFFFFF2A,
- 0xFFFFFEE2, 0xFFFFFE9B, 0xFFFFFE54, 0xFFFFFE0D,
- 0xFFFFFDC6, 0xFFFFFD7F, 0xFFFFFD39, 0xFFFFFCF2,
- 0xFFFFFCAC, 0xFFFFFC67, 0xFFFFFC21, 0xFFFFFBDC,
- 0xFFFFFB97, 0xFFFFFB52, 0xFFFFFB0E, 0xFFFFFACA,
- 0xFFFFFA87, 0xFFFFFA44, 0xFFFFFA02, 0xFFFFF9C0,
- 0xFFFFF97E, 0xFFFFF93D, 0xFFFFF8FC, 0xFFFFF8BC,
- 0xFFFFF87D, 0xFFFFF83E, 0xFFFFF800, 0xFFFFF7C2,
- 0xFFFFF785, 0xFFFFF749, 0xFFFFF70E, 0xFFFFF6D3,
- 0xFFFFF698, 0xFFFFF65F, 0xFFFFF626, 0xFFFFF5EE,
- 0xFFFFF5B7, 0xFFFFF581, 0xFFFFF54B, 0xFFFFF517,
- 0xFFFFF4E3, 0xFFFFF4B0, 0xFFFFF47E, 0xFFFFF44C,
- 0xFFFFF41C, 0xFFFFF3ED, 0xFFFFF3BE, 0xFFFFF391,
- 0xFFFFF364, 0xFFFFF339, 0xFFFFF30E, 0xFFFFF2E5,
- 0xFFFFF2BC, 0xFFFFF295, 0xFFFFF26E, 0xFFFFF249,
- 0xFFFFF225, 0xFFFFF202, 0xFFFFF1DF, 0xFFFFF1BE,
- 0xFFFFF19F, 0xFFFFF180, 0xFFFFF162, 0xFFFFF146,
- 0xFFFFF12A, 0xFFFFF110, 0xFFFFF0F7, 0xFFFFF0DF,
- 0xFFFFF0C8, 0xFFFFF0B3, 0xFFFFF09F, 0xFFFFF08C,
- 0xFFFFF07A, 0xFFFFF069, 0xFFFFF05A, 0xFFFFF04B,
- 0xFFFFF03E, 0xFFFFF032, 0xFFFFF028, 0xFFFFF01F,
- 0xFFFFF016, 0xFFFFF010, 0xFFFFF00A, 0xFFFFF006,
- 0xFFFFF002, 0xFFFFF001, 0xFFFFF000, 0xFFFFF001,
- 0xFFFFF002, 0xFFFFF006, 0xFFFFF00A, 0xFFFFF010,
- 0xFFFFF016, 0xFFFFF01F, 0xFFFFF028, 0xFFFFF032,
- 0xFFFFF03E, 0xFFFFF04B, 0xFFFFF05A, 0xFFFFF069,
- 0xFFFFF07A, 0xFFFFF08C, 0xFFFFF09F, 0xFFFFF0B3,
- 0xFFFFF0C8, 0xFFFFF0DF, 0xFFFFF0F7, 0xFFFFF110,
- 0xFFFFF12A, 0xFFFFF146, 0xFFFFF162, 0xFFFFF180,
- 0xFFFFF19F, 0xFFFFF1BE, 0xFFFFF1DF, 0xFFFFF202,
- 0xFFFFF225, 0xFFFFF249, 0xFFFFF26E, 0xFFFFF295,
- 0xFFFFF2BC, 0xFFFFF2E5, 0xFFFFF30E, 0xFFFFF339,
- 0xFFFFF364, 0xFFFFF391, 0xFFFFF3BE, 0xFFFFF3ED,
- 0xFFFFF41C, 0xFFFFF44C, 0xFFFFF47E, 0xFFFFF4B0,
- 0xFFFFF4E3, 0xFFFFF517, 0xFFFFF54B, 0xFFFFF581,
- 0xFFFFF5B7, 0xFFFFF5EE, 0xFFFFF626, 0xFFFFF65F,
- 0xFFFFF698, 0xFFFFF6D3, 0xFFFFF70E, 0xFFFFF749,
- 0xFFFFF785, 0xFFFFF7C2, 0xFFFFF800, 0xFFFFF83E,
- 0xFFFFF87D, 0xFFFFF8BC, 0xFFFFF8FC, 0xFFFFF93D,
- 0xFFFFF97E, 0xFFFFF9C0, 0xFFFFFA02, 0xFFFFFA44,
- 0xFFFFFA87, 0xFFFFFACA, 0xFFFFFB0E, 0xFFFFFB52,
- 0xFFFFFB97, 0xFFFFFBDC, 0xFFFFFC21, 0xFFFFFC67,
- 0xFFFFFCAC, 0xFFFFFCF2, 0xFFFFFD39, 0xFFFFFD7F,
- 0xFFFFFDC6, 0xFFFFFE0D, 0xFFFFFE54, 0xFFFFFE9B,
- 0xFFFFFEE2, 0xFFFFFF2A, 0xFFFFFF71, 0xFFFFFFB9,
- 0x00000000, 0x00000047, 0x0000008F, 0x000000D6,
- 0x0000011E, 0x00000165, 0x000001AC, 0x000001F3,
- 0x0000023A, 0x00000281, 0x000002C7, 0x0000030E,
- 0x00000354, 0x00000399, 0x000003DF, 0x00000424,
- 0x00000469, 0x000004AE, 0x000004F2, 0x00000536,
- 0x00000579, 0x000005BC, 0x000005FE, 0x00000640,
- 0x00000682, 0x000006C3, 0x00000704, 0x00000744,
- 0x00000783, 0x000007C2, 0x00000800, 0x0000083E,
- 0x0000087B, 0x000008B7, 0x000008F2, 0x0000092D,
- 0x00000968, 0x000009A1, 0x000009DA, 0x00000A12,
- 0x00000A49, 0x00000A7F, 0x00000AB5, 0x00000AE9,
- 0x00000B1D, 0x00000B50, 0x00000B82, 0x00000BB4,
- 0x00000BE4, 0x00000C13, 0x00000C42, 0x00000C6F,
- 0x00000C9C, 0x00000CC7, 0x00000CF2, 0x00000D1B,
- 0x00000D44, 0x00000D6B, 0x00000D92, 0x00000DB7,
- 0x00000DDB, 0x00000DFE, 0x00000E21, 0x00000E42,
- 0x00000E61, 0x00000E80, 0x00000E9E, 0x00000EBA,
- 0x00000ED6, 0x00000EF0, 0x00000F09, 0x00000F21,
- 0x00000F38, 0x00000F4D, 0x00000F61, 0x00000F74,
- 0x00000F86, 0x00000F97, 0x00000FA6, 0x00000FB5,
- 0x00000FC2, 0x00000FCE, 0x00000FD8, 0x00000FE1,
- 0x00000FEA, 0x00000FF0, 0x00000FF6, 0x00000FFA,
- 0x00000FFE, 0x00000FFF
+ FX32_CONST(0.0), // sin(0)
+ FX32_CONST(0.017333984375), // sin(1)
+ FX32_CONST(0.034912109375), // sin(2)
+ FX32_CONST(0.05224609375), // sin(3)
+ FX32_CONST(0.06982421875), // sin(4)
+ FX32_CONST(0.087158203125), // sin(5)
+ FX32_CONST(0.1044921875), // sin(6)
+ FX32_CONST(0.121826171875), // sin(7)
+ FX32_CONST(0.13916015625), // sin(8)
+ FX32_CONST(0.156494140625), // sin(9)
+ FX32_CONST(0.173583984375), // sin(10)
+ FX32_CONST(0.19091796875), // sin(11)
+ FX32_CONST(0.2080078125), // sin(12)
+ FX32_CONST(0.224853515625), // sin(13)
+ FX32_CONST(0.241943359375), // sin(14)
+ FX32_CONST(0.2587890625), // sin(15)
+ FX32_CONST(0.275634765625), // sin(16)
+ FX32_CONST(0.29248046875), // sin(17)
+ FX32_CONST(0.30908203125), // sin(18)
+ FX32_CONST(0.32568359375), // sin(19)
+ FX32_CONST(0.342041015625), // sin(20)
+ FX32_CONST(0.3583984375), // sin(21)
+ FX32_CONST(0.37451171875), // sin(22)
+ FX32_CONST(0.390625), // sin(23)
+ FX32_CONST(0.40673828125), // sin(24)
+ FX32_CONST(0.422607421875), // sin(25)
+ FX32_CONST(0.4384765625), // sin(26)
+ FX32_CONST(0.4541015625), // sin(27)
+ FX32_CONST(0.469482421875), // sin(28)
+ FX32_CONST(0.48486328125), // sin(29)
+ FX32_CONST(0.5), // sin(30)
+ FX32_CONST(0.51513671875), // sin(31)
+ FX32_CONST(0.530029296875), // sin(32)
+ FX32_CONST(0.544677734375), // sin(33)
+ FX32_CONST(0.55908203125), // sin(34)
+ FX32_CONST(0.573486328125), // sin(35)
+ FX32_CONST(0.587890625), // sin(36)
+ FX32_CONST(0.601806640625), // sin(37)
+ FX32_CONST(0.61572265625), // sin(38)
+ FX32_CONST(0.62939453125), // sin(39)
+ FX32_CONST(0.642822265625), // sin(40)
+ FX32_CONST(0.656005859375), // sin(41)
+ FX32_CONST(0.669189453125), // sin(42)
+ FX32_CONST(0.681884765625), // sin(43)
+ FX32_CONST(0.694580078125), // sin(44)
+ FX32_CONST(0.70703125), // sin(45)
+ FX32_CONST(0.71923828125), // sin(46)
+ FX32_CONST(0.7314453125), // sin(47)
+ FX32_CONST(0.7431640625), // sin(48)
+ FX32_CONST(0.754638671875), // sin(49)
+ FX32_CONST(0.76611328125), // sin(50)
+ FX32_CONST(0.777099609375), // sin(51)
+ FX32_CONST(0.7880859375), // sin(52)
+ FX32_CONST(0.798583984375), // sin(53)
+ FX32_CONST(0.80908203125), // sin(54)
+ FX32_CONST(0.819091796875), // sin(55)
+ FX32_CONST(0.8291015625), // sin(56)
+ FX32_CONST(0.838623046875), // sin(57)
+ FX32_CONST(0.84814453125), // sin(58)
+ FX32_CONST(0.857177734375), // sin(59)
+ FX32_CONST(0.865966796875), // sin(60)
+ FX32_CONST(0.87451171875), // sin(61)
+ FX32_CONST(0.883056640625), // sin(62)
+ FX32_CONST(0.89111328125), // sin(63)
+ FX32_CONST(0.898681640625), // sin(64)
+ FX32_CONST(0.90625), // sin(65)
+ FX32_CONST(0.91357421875), // sin(66)
+ FX32_CONST(0.92041015625), // sin(67)
+ FX32_CONST(0.92724609375), // sin(68)
+ FX32_CONST(0.93359375), // sin(69)
+ FX32_CONST(0.939697265625), // sin(70)
+ FX32_CONST(0.945556640625), // sin(71)
+ FX32_CONST(0.951171875), // sin(72)
+ FX32_CONST(0.956298828125), // sin(73)
+ FX32_CONST(0.961181640625), // sin(74)
+ FX32_CONST(0.9658203125), // sin(75)
+ FX32_CONST(0.97021484375), // sin(76)
+ FX32_CONST(0.974365234375), // sin(77)
+ FX32_CONST(0.97802734375), // sin(78)
+ FX32_CONST(0.981689453125), // sin(79)
+ FX32_CONST(0.98486328125), // sin(80)
+ FX32_CONST(0.98779296875), // sin(81)
+ FX32_CONST(0.990234375), // sin(82)
+ FX32_CONST(0.992431640625), // sin(83)
+ FX32_CONST(0.99462890625), // sin(84)
+ FX32_CONST(0.99609375), // sin(85)
+ FX32_CONST(0.99755859375), // sin(86)
+ FX32_CONST(0.99853515625), // sin(87)
+ FX32_CONST(0.99951171875), // sin(88)
+ FX32_CONST(0.999755859375), // sin(89)
+ FX32_CONST(1.0), // sin(90)
+ FX32_CONST(0.999755859375), // sin(91)
+ FX32_CONST(0.99951171875), // sin(92)
+ FX32_CONST(0.99853515625), // sin(93)
+ FX32_CONST(0.99755859375), // sin(94)
+ FX32_CONST(0.99609375), // sin(95)
+ FX32_CONST(0.99462890625), // sin(96)
+ FX32_CONST(0.992431640625), // sin(97)
+ FX32_CONST(0.990234375), // sin(98)
+ FX32_CONST(0.98779296875), // sin(99)
+ FX32_CONST(0.98486328125), // sin(100)
+ FX32_CONST(0.981689453125), // sin(101)
+ FX32_CONST(0.97802734375), // sin(102)
+ FX32_CONST(0.974365234375), // sin(103)
+ FX32_CONST(0.97021484375), // sin(104)
+ FX32_CONST(0.9658203125), // sin(105)
+ FX32_CONST(0.961181640625), // sin(106)
+ FX32_CONST(0.956298828125), // sin(107)
+ FX32_CONST(0.951171875), // sin(108)
+ FX32_CONST(0.945556640625), // sin(109)
+ FX32_CONST(0.939697265625), // sin(110)
+ FX32_CONST(0.93359375), // sin(111)
+ FX32_CONST(0.92724609375), // sin(112)
+ FX32_CONST(0.92041015625), // sin(113)
+ FX32_CONST(0.91357421875), // sin(114)
+ FX32_CONST(0.90625), // sin(115)
+ FX32_CONST(0.898681640625), // sin(116)
+ FX32_CONST(0.89111328125), // sin(117)
+ FX32_CONST(0.883056640625), // sin(118)
+ FX32_CONST(0.87451171875), // sin(119)
+ FX32_CONST(0.865966796875), // sin(120)
+ FX32_CONST(0.857177734375), // sin(121)
+ FX32_CONST(0.84814453125), // sin(122)
+ FX32_CONST(0.838623046875), // sin(123)
+ FX32_CONST(0.8291015625), // sin(124)
+ FX32_CONST(0.819091796875), // sin(125)
+ FX32_CONST(0.80908203125), // sin(126)
+ FX32_CONST(0.798583984375), // sin(127)
+ FX32_CONST(0.7880859375), // sin(128)
+ FX32_CONST(0.777099609375), // sin(129)
+ FX32_CONST(0.76611328125), // sin(130)
+ FX32_CONST(0.754638671875), // sin(131)
+ FX32_CONST(0.7431640625), // sin(132)
+ FX32_CONST(0.7314453125), // sin(133)
+ FX32_CONST(0.71923828125), // sin(134)
+ FX32_CONST(0.70703125), // sin(135)
+ FX32_CONST(0.694580078125), // sin(136)
+ FX32_CONST(0.681884765625), // sin(137)
+ FX32_CONST(0.669189453125), // sin(138)
+ FX32_CONST(0.656005859375), // sin(139)
+ FX32_CONST(0.642822265625), // sin(140)
+ FX32_CONST(0.62939453125), // sin(141)
+ FX32_CONST(0.61572265625), // sin(142)
+ FX32_CONST(0.601806640625), // sin(143)
+ FX32_CONST(0.587890625), // sin(144)
+ FX32_CONST(0.573486328125), // sin(145)
+ FX32_CONST(0.55908203125), // sin(146)
+ FX32_CONST(0.544677734375), // sin(147)
+ FX32_CONST(0.530029296875), // sin(148)
+ FX32_CONST(0.51513671875), // sin(149)
+ FX32_CONST(0.5), // sin(150)
+ FX32_CONST(0.48486328125), // sin(151)
+ FX32_CONST(0.469482421875), // sin(152)
+ FX32_CONST(0.4541015625), // sin(153)
+ FX32_CONST(0.4384765625), // sin(154)
+ FX32_CONST(0.422607421875), // sin(155)
+ FX32_CONST(0.40673828125), // sin(156)
+ FX32_CONST(0.390625), // sin(157)
+ FX32_CONST(0.37451171875), // sin(158)
+ FX32_CONST(0.3583984375), // sin(159)
+ FX32_CONST(0.342041015625), // sin(160)
+ FX32_CONST(0.32568359375), // sin(161)
+ FX32_CONST(0.30908203125), // sin(162)
+ FX32_CONST(0.29248046875), // sin(163)
+ FX32_CONST(0.275634765625), // sin(164)
+ FX32_CONST(0.2587890625), // sin(165)
+ FX32_CONST(0.241943359375), // sin(166)
+ FX32_CONST(0.224853515625), // sin(167)
+ FX32_CONST(0.2080078125), // sin(168)
+ FX32_CONST(0.19091796875), // sin(169)
+ FX32_CONST(0.173583984375), // sin(170)
+ FX32_CONST(0.156494140625), // sin(171)
+ FX32_CONST(0.13916015625), // sin(172)
+ FX32_CONST(0.121826171875), // sin(173)
+ FX32_CONST(0.1044921875), // sin(174)
+ FX32_CONST(0.087158203125), // sin(175)
+ FX32_CONST(0.06982421875), // sin(176)
+ FX32_CONST(0.05224609375), // sin(177)
+ FX32_CONST(0.034912109375), // sin(178)
+ FX32_CONST(0.017333984375), // sin(179)
+ FX32_CONST(0.0), // sin(180)
+ FX32_CONST(-0.017333984375), // sin(181)
+ FX32_CONST(-0.034912109375), // sin(182)
+ FX32_CONST(-0.05224609375), // sin(183)
+ FX32_CONST(-0.06982421875), // sin(184)
+ FX32_CONST(-0.087158203125), // sin(185)
+ FX32_CONST(-0.1044921875), // sin(186)
+ FX32_CONST(-0.121826171875), // sin(187)
+ FX32_CONST(-0.13916015625), // sin(188)
+ FX32_CONST(-0.156494140625), // sin(189)
+ FX32_CONST(-0.173583984375), // sin(190)
+ FX32_CONST(-0.19091796875), // sin(191)
+ FX32_CONST(-0.2080078125), // sin(192)
+ FX32_CONST(-0.224853515625), // sin(193)
+ FX32_CONST(-0.241943359375), // sin(194)
+ FX32_CONST(-0.2587890625), // sin(195)
+ FX32_CONST(-0.275634765625), // sin(196)
+ FX32_CONST(-0.29248046875), // sin(197)
+ FX32_CONST(-0.30908203125), // sin(198)
+ FX32_CONST(-0.32568359375), // sin(199)
+ FX32_CONST(-0.342041015625), // sin(200)
+ FX32_CONST(-0.3583984375), // sin(201)
+ FX32_CONST(-0.37451171875), // sin(202)
+ FX32_CONST(-0.390625), // sin(203)
+ FX32_CONST(-0.40673828125), // sin(204)
+ FX32_CONST(-0.422607421875), // sin(205)
+ FX32_CONST(-0.4384765625), // sin(206)
+ FX32_CONST(-0.4541015625), // sin(207)
+ FX32_CONST(-0.469482421875), // sin(208)
+ FX32_CONST(-0.48486328125), // sin(209)
+ FX32_CONST(-0.5), // sin(210)
+ FX32_CONST(-0.51513671875), // sin(211)
+ FX32_CONST(-0.530029296875), // sin(212)
+ FX32_CONST(-0.544677734375), // sin(213)
+ FX32_CONST(-0.55908203125), // sin(214)
+ FX32_CONST(-0.573486328125), // sin(215)
+ FX32_CONST(-0.587890625), // sin(216)
+ FX32_CONST(-0.601806640625), // sin(217)
+ FX32_CONST(-0.61572265625), // sin(218)
+ FX32_CONST(-0.62939453125), // sin(219)
+ FX32_CONST(-0.642822265625), // sin(220)
+ FX32_CONST(-0.656005859375), // sin(221)
+ FX32_CONST(-0.669189453125), // sin(222)
+ FX32_CONST(-0.681884765625), // sin(223)
+ FX32_CONST(-0.694580078125), // sin(224)
+ FX32_CONST(-0.70703125), // sin(225)
+ FX32_CONST(-0.71923828125), // sin(226)
+ FX32_CONST(-0.7314453125), // sin(227)
+ FX32_CONST(-0.7431640625), // sin(228)
+ FX32_CONST(-0.754638671875), // sin(229)
+ FX32_CONST(-0.76611328125), // sin(230)
+ FX32_CONST(-0.777099609375), // sin(231)
+ FX32_CONST(-0.7880859375), // sin(232)
+ FX32_CONST(-0.798583984375), // sin(233)
+ FX32_CONST(-0.80908203125), // sin(234)
+ FX32_CONST(-0.819091796875), // sin(235)
+ FX32_CONST(-0.8291015625), // sin(236)
+ FX32_CONST(-0.838623046875), // sin(237)
+ FX32_CONST(-0.84814453125), // sin(238)
+ FX32_CONST(-0.857177734375), // sin(239)
+ FX32_CONST(-0.865966796875), // sin(240)
+ FX32_CONST(-0.87451171875), // sin(241)
+ FX32_CONST(-0.883056640625), // sin(242)
+ FX32_CONST(-0.89111328125), // sin(243)
+ FX32_CONST(-0.898681640625), // sin(244)
+ FX32_CONST(-0.90625), // sin(245)
+ FX32_CONST(-0.91357421875), // sin(246)
+ FX32_CONST(-0.92041015625), // sin(247)
+ FX32_CONST(-0.92724609375), // sin(248)
+ FX32_CONST(-0.93359375), // sin(249)
+ FX32_CONST(-0.939697265625), // sin(250)
+ FX32_CONST(-0.945556640625), // sin(251)
+ FX32_CONST(-0.951171875), // sin(252)
+ FX32_CONST(-0.956298828125), // sin(253)
+ FX32_CONST(-0.961181640625), // sin(254)
+ FX32_CONST(-0.9658203125), // sin(255)
+ FX32_CONST(-0.97021484375), // sin(256)
+ FX32_CONST(-0.974365234375), // sin(257)
+ FX32_CONST(-0.97802734375), // sin(258)
+ FX32_CONST(-0.981689453125), // sin(259)
+ FX32_CONST(-0.98486328125), // sin(260)
+ FX32_CONST(-0.98779296875), // sin(261)
+ FX32_CONST(-0.990234375), // sin(262)
+ FX32_CONST(-0.992431640625), // sin(263)
+ FX32_CONST(-0.99462890625), // sin(264)
+ FX32_CONST(-0.99609375), // sin(265)
+ FX32_CONST(-0.99755859375), // sin(266)
+ FX32_CONST(-0.99853515625), // sin(267)
+ FX32_CONST(-0.99951171875), // sin(268)
+ FX32_CONST(-0.999755859375), // sin(269)
+ FX32_CONST(-1.0), // sin(270)
+ FX32_CONST(-0.999755859375), // sin(271)
+ FX32_CONST(-0.99951171875), // sin(272)
+ FX32_CONST(-0.99853515625), // sin(273)
+ FX32_CONST(-0.99755859375), // sin(274)
+ FX32_CONST(-0.99609375), // sin(275)
+ FX32_CONST(-0.99462890625), // sin(276)
+ FX32_CONST(-0.992431640625), // sin(277)
+ FX32_CONST(-0.990234375), // sin(278)
+ FX32_CONST(-0.98779296875), // sin(279)
+ FX32_CONST(-0.98486328125), // sin(280)
+ FX32_CONST(-0.981689453125), // sin(281)
+ FX32_CONST(-0.97802734375), // sin(282)
+ FX32_CONST(-0.974365234375), // sin(283)
+ FX32_CONST(-0.97021484375), // sin(284)
+ FX32_CONST(-0.9658203125), // sin(285)
+ FX32_CONST(-0.961181640625), // sin(286)
+ FX32_CONST(-0.956298828125), // sin(287)
+ FX32_CONST(-0.951171875), // sin(288)
+ FX32_CONST(-0.945556640625), // sin(289)
+ FX32_CONST(-0.939697265625), // sin(290)
+ FX32_CONST(-0.93359375), // sin(291)
+ FX32_CONST(-0.92724609375), // sin(292)
+ FX32_CONST(-0.92041015625), // sin(293)
+ FX32_CONST(-0.91357421875), // sin(294)
+ FX32_CONST(-0.90625), // sin(295)
+ FX32_CONST(-0.898681640625), // sin(296)
+ FX32_CONST(-0.89111328125), // sin(297)
+ FX32_CONST(-0.883056640625), // sin(298)
+ FX32_CONST(-0.87451171875), // sin(299)
+ FX32_CONST(-0.865966796875), // sin(300)
+ FX32_CONST(-0.857177734375), // sin(301)
+ FX32_CONST(-0.84814453125), // sin(302)
+ FX32_CONST(-0.838623046875), // sin(303)
+ FX32_CONST(-0.8291015625), // sin(304)
+ FX32_CONST(-0.819091796875), // sin(305)
+ FX32_CONST(-0.80908203125), // sin(306)
+ FX32_CONST(-0.798583984375), // sin(307)
+ FX32_CONST(-0.7880859375), // sin(308)
+ FX32_CONST(-0.777099609375), // sin(309)
+ FX32_CONST(-0.76611328125), // sin(310)
+ FX32_CONST(-0.754638671875), // sin(311)
+ FX32_CONST(-0.7431640625), // sin(312)
+ FX32_CONST(-0.7314453125), // sin(313)
+ FX32_CONST(-0.71923828125), // sin(314)
+ FX32_CONST(-0.70703125), // sin(315)
+ FX32_CONST(-0.694580078125), // sin(316)
+ FX32_CONST(-0.681884765625), // sin(317)
+ FX32_CONST(-0.669189453125), // sin(318)
+ FX32_CONST(-0.656005859375), // sin(319)
+ FX32_CONST(-0.642822265625), // sin(320)
+ FX32_CONST(-0.62939453125), // sin(321)
+ FX32_CONST(-0.61572265625), // sin(322)
+ FX32_CONST(-0.601806640625), // sin(323)
+ FX32_CONST(-0.587890625), // sin(324)
+ FX32_CONST(-0.573486328125), // sin(325)
+ FX32_CONST(-0.55908203125), // sin(326)
+ FX32_CONST(-0.544677734375), // sin(327)
+ FX32_CONST(-0.530029296875), // sin(328)
+ FX32_CONST(-0.51513671875), // sin(329)
+ FX32_CONST(-0.5), // sin(330)
+ FX32_CONST(-0.48486328125), // sin(331)
+ FX32_CONST(-0.469482421875), // sin(332)
+ FX32_CONST(-0.4541015625), // sin(333)
+ FX32_CONST(-0.4384765625), // sin(334)
+ FX32_CONST(-0.422607421875), // sin(335)
+ FX32_CONST(-0.40673828125), // sin(336)
+ FX32_CONST(-0.390625), // sin(337)
+ FX32_CONST(-0.37451171875), // sin(338)
+ FX32_CONST(-0.3583984375), // sin(339)
+ FX32_CONST(-0.342041015625), // sin(340)
+ FX32_CONST(-0.32568359375), // sin(341)
+ FX32_CONST(-0.30908203125), // sin(342)
+ FX32_CONST(-0.29248046875), // sin(343)
+ FX32_CONST(-0.275634765625), // sin(344)
+ FX32_CONST(-0.2587890625), // sin(345)
+ FX32_CONST(-0.241943359375), // sin(346)
+ FX32_CONST(-0.224853515625), // sin(347)
+ FX32_CONST(-0.2080078125), // sin(348)
+ FX32_CONST(-0.19091796875), // sin(349)
+ FX32_CONST(-0.173583984375), // sin(350)
+ FX32_CONST(-0.156494140625), // sin(351)
+ FX32_CONST(-0.13916015625), // sin(352)
+ FX32_CONST(-0.121826171875), // sin(353)
+ FX32_CONST(-0.1044921875), // sin(354)
+ FX32_CONST(-0.087158203125), // sin(355)
+ FX32_CONST(-0.06982421875), // sin(356)
+ FX32_CONST(-0.05224609375), // sin(357)
+ FX32_CONST(-0.034912109375), // sin(358)
+ FX32_CONST(-0.017333984375), // sin(359)
+ FX32_CONST(0.0), // sin(360)
+ FX32_CONST(0.017333984375), // sin(361)
+ FX32_CONST(0.034912109375), // sin(362)
+ FX32_CONST(0.05224609375), // sin(363)
+ FX32_CONST(0.06982421875), // sin(364)
+ FX32_CONST(0.087158203125), // sin(365)
+ FX32_CONST(0.1044921875), // sin(366)
+ FX32_CONST(0.121826171875), // sin(367)
+ FX32_CONST(0.13916015625), // sin(368)
+ FX32_CONST(0.156494140625), // sin(369)
+ FX32_CONST(0.173583984375), // sin(370)
+ FX32_CONST(0.19091796875), // sin(371)
+ FX32_CONST(0.2080078125), // sin(372)
+ FX32_CONST(0.224853515625), // sin(373)
+ FX32_CONST(0.241943359375), // sin(374)
+ FX32_CONST(0.2587890625), // sin(375)
+ FX32_CONST(0.275634765625), // sin(376)
+ FX32_CONST(0.29248046875), // sin(377)
+ FX32_CONST(0.30908203125), // sin(378)
+ FX32_CONST(0.32568359375), // sin(379)
+ FX32_CONST(0.342041015625), // sin(380)
+ FX32_CONST(0.3583984375), // sin(381)
+ FX32_CONST(0.37451171875), // sin(382)
+ FX32_CONST(0.390625), // sin(383)
+ FX32_CONST(0.40673828125), // sin(384)
+ FX32_CONST(0.422607421875), // sin(385)
+ FX32_CONST(0.4384765625), // sin(386)
+ FX32_CONST(0.4541015625), // sin(387)
+ FX32_CONST(0.469482421875), // sin(388)
+ FX32_CONST(0.48486328125), // sin(389)
+ FX32_CONST(0.5), // sin(390)
+ FX32_CONST(0.51513671875), // sin(391)
+ FX32_CONST(0.530029296875), // sin(392)
+ FX32_CONST(0.544677734375), // sin(393)
+ FX32_CONST(0.55908203125), // sin(394)
+ FX32_CONST(0.573486328125), // sin(395)
+ FX32_CONST(0.587890625), // sin(396)
+ FX32_CONST(0.601806640625), // sin(397)
+ FX32_CONST(0.61572265625), // sin(398)
+ FX32_CONST(0.62939453125), // sin(399)
+ FX32_CONST(0.642822265625), // sin(400)
+ FX32_CONST(0.656005859375), // sin(401)
+ FX32_CONST(0.669189453125), // sin(402)
+ FX32_CONST(0.681884765625), // sin(403)
+ FX32_CONST(0.694580078125), // sin(404)
+ FX32_CONST(0.70703125), // sin(405)
+ FX32_CONST(0.71923828125), // sin(406)
+ FX32_CONST(0.7314453125), // sin(407)
+ FX32_CONST(0.7431640625), // sin(408)
+ FX32_CONST(0.754638671875), // sin(409)
+ FX32_CONST(0.76611328125), // sin(410)
+ FX32_CONST(0.777099609375), // sin(411)
+ FX32_CONST(0.7880859375), // sin(412)
+ FX32_CONST(0.798583984375), // sin(413)
+ FX32_CONST(0.80908203125), // sin(414)
+ FX32_CONST(0.819091796875), // sin(415)
+ FX32_CONST(0.8291015625), // sin(416)
+ FX32_CONST(0.838623046875), // sin(417)
+ FX32_CONST(0.84814453125), // sin(418)
+ FX32_CONST(0.857177734375), // sin(419)
+ FX32_CONST(0.865966796875), // sin(420)
+ FX32_CONST(0.87451171875), // sin(421)
+ FX32_CONST(0.883056640625), // sin(422)
+ FX32_CONST(0.89111328125), // sin(423)
+ FX32_CONST(0.898681640625), // sin(424)
+ FX32_CONST(0.90625), // sin(425)
+ FX32_CONST(0.91357421875), // sin(426)
+ FX32_CONST(0.92041015625), // sin(427)
+ FX32_CONST(0.92724609375), // sin(428)
+ FX32_CONST(0.93359375), // sin(429)
+ FX32_CONST(0.939697265625), // sin(430)
+ FX32_CONST(0.945556640625), // sin(431)
+ FX32_CONST(0.951171875), // sin(432)
+ FX32_CONST(0.956298828125), // sin(433)
+ FX32_CONST(0.961181640625), // sin(434)
+ FX32_CONST(0.9658203125), // sin(435)
+ FX32_CONST(0.97021484375), // sin(436)
+ FX32_CONST(0.974365234375), // sin(437)
+ FX32_CONST(0.97802734375), // sin(438)
+ FX32_CONST(0.981689453125), // sin(439)
+ FX32_CONST(0.98486328125), // sin(440)
+ FX32_CONST(0.98779296875), // sin(441)
+ FX32_CONST(0.990234375), // sin(442)
+ FX32_CONST(0.992431640625), // sin(443)
+ FX32_CONST(0.99462890625), // sin(444)
+ FX32_CONST(0.99609375), // sin(445)
+ FX32_CONST(0.99755859375), // sin(446)
+ FX32_CONST(0.99853515625), // sin(447)
+ FX32_CONST(0.99951171875), // sin(448)
+ FX32_CONST(0.999755859375), // sin(449)
};
-const u16 UNK_020EDC7E[] = // rotations?
+static const u16 UNK_020EDC7E[] = // rotations?
{
0x0000, 0x00B7, 0x016D, 0x0223, 0x02D9, 0x038F, 0x0445, 0x04FB, 0x05B1, 0x0667,
0x071D, 0x07D3, 0x0889, 0x093F, 0x09F5, 0x0AAB, 0x0B61, 0x0C17, 0x0CCD, 0x0D83,
@@ -255,31 +592,41 @@ THUMB_FUNC s32 Sin32(s32 degrees)
* Random number generators
*/
static u32 sMTRNG_State[624]; // Mersenne Twister seed storage/buffer
+#ifdef NONMATCHING
+// Using -ipa file makes the following hack unnecessary,
+// but for some reason forces UNK_020EDC7E to align to
+// word rather than short...
+static u32 sLCRNG_State;
+#define sMTRNG_State_2 sMTRNG_State
+#else
static union
{
u32 LC_State; // Linear-congruential seed storage/buffer
u32 MTRNG_State[]; // Don't bother asking why Game Freak did this. Just don't.
} sRNGHack;
+#define sLCRNG_State sRNGHack.LC_State
+#define sMTRNG_State_2 (sRNGHack.MTRNG_State + 1)
+#endif
// Returns the Linear-congruential buffer in full.
THUMB_FUNC u32 GetLCRNGSeed()
{
- return sRNGHack.LC_State;
+ return sLCRNG_State;
}
// Initializes the Linear-congruential buffer with a 32-bit seed.
THUMB_FUNC void SetLCRNGSeed(u32 seed)
{
- sRNGHack.LC_State = seed;
+ sLCRNG_State = seed;
}
// Calculates an unsigned 16-bit random integer using the Linear-congruential algorithm.
THUMB_FUNC u16 LCRandom(void)
{
// cycle the RNG
- sRNGHack.LC_State *= 0x41C64E6D;
- sRNGHack.LC_State += 0x6073;
- return (u16)(sRNGHack.LC_State / 65536); // shut up the compiler
+ sLCRNG_State *= 0x41C64E6D;
+ sLCRNG_State += 0x6073;
+ return (u16)(sLCRNG_State / 65536); // shut up the compiler
}
// Returns a cheap, psuedo-random unsigned 32-bit random integer from a seed.
@@ -294,7 +641,7 @@ static u32 sMTRNG_XOR[2] = {0, 0x9908b0df}; // Mersenne Twister XOR mask table
// Initializes the Mersenne Twister buffer with a 32-bit seed.
THUMB_FUNC void SetMTRNGSeed(u32 seed)
{
- sRNGHack.MTRNG_State[0+1] = seed;
+ sMTRNG_State_2[0] = seed;
for (sMTRNG_Cycles = 1; sMTRNG_Cycles < 624; sMTRNG_Cycles++)
sMTRNG_State[sMTRNG_Cycles] = 1812433253 * (sMTRNG_State[sMTRNG_Cycles - 1] ^ (sMTRNG_State[sMTRNG_Cycles - 1] >> 30)) + sMTRNG_Cycles;
@@ -310,7 +657,7 @@ THUMB_FUNC u32 MTRandom(void)
{
if (sMTRNG_Cycles == 625)
SetMTRNGSeed(5489);
-
+
for (i = 0; i < 227; i++)
{
val = (sMTRNG_State[i] & 0x80000000) | (sMTRNG_State[i + 1] & 0x7fffffff);
@@ -321,20 +668,20 @@ THUMB_FUNC u32 MTRandom(void)
val = (sMTRNG_State[i] & 0x80000000) | (sMTRNG_State[i + 1] & 0x7fffffff);
sMTRNG_State[i] = sMTRNG_State[i + -227] ^ (val >> 1) ^ sMTRNG_XOR[val & 0x1];
}
-
- val = (sRNGHack.MTRNG_State[623+1] & 0x80000000) | (sRNGHack.MTRNG_State[0+1] & 0x7fffffff);
- sRNGHack.MTRNG_State[623+1] = sRNGHack.MTRNG_State[396+1] ^ (val >> 1) ^ sMTRNG_XOR[val & 0x1];
+
+ val = (sMTRNG_State_2[623] & 0x80000000) | (sMTRNG_State_2[0] & 0x7fffffff);
+ sMTRNG_State_2[623] = sMTRNG_State_2[396] ^ (val >> 1) ^ sMTRNG_XOR[val & 0x1];
sMTRNG_Cycles = 0;
}
-
+
val = sMTRNG_State[sMTRNG_Cycles++]; // has to be this way in order to match
-
+
val ^= val >> 11;
val ^= (val << 7) & 0x9d2c5680;
val ^= (val << 15) & 0xefc60000;
val ^= val >> 18;
-
+
return val;
}
@@ -350,8 +697,8 @@ THUMB_FUNC void MTX22_2DAffine(struct Mtx22 * mtx, u16 radians, fx32 x, fx32 y,
radians = (u16)((u32)(radians * 65535) / 360); // shut up the compiler
MTX_Rot22_(mtx,
- UNK_020FFA38[((radians >> 4) * 2)], // TODO: macros
- UNK_020FFA38[((radians >> 4) * 2) + 1]); // TODO: macros
+ FX_SinCosTable_[((radians >> 4) * 2)], // TODO: macros
+ FX_SinCosTable_[((radians >> 4) * 2) + 1]); // TODO: macros
MTX_ScaleApply22(mtx, mtx, x, y);
}
diff --git a/arm9/src/overlay_manager.c b/arm9/src/overlay_manager.c
index a59e15ac..0a03a87d 100644
--- a/arm9/src/overlay_manager.c
+++ b/arm9/src/overlay_manager.c
@@ -4,7 +4,7 @@
#include "heap.h"
#include "overlay_manager.h"
-THUMB_FUNC struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id)
+THUMB_FUNC struct UnkStruct_02006234 * OverlayManager_new(const struct Unk21DBE18 * ovly_mgr, s32 * a1, u32 heap_id)
{
struct UnkStruct_02006234 * ret = (struct UnkStruct_02006234 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006234));
ret->ovly_mgr = *ovly_mgr;
@@ -38,7 +38,7 @@ THUMB_FUNC void OverlayManager_FreeData(struct UnkStruct_02006234 * a0)
a0->unk1C = NULL;
}
-THUMB_FUNC int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0)
+THUMB_FUNC s32 * OverlayManager_GetField18(struct UnkStruct_02006234 * a0)
{
return a0->unk18;
}
diff --git a/arm9/src/poke_overlay.c b/arm9/src/poke_overlay.c
index 4dd98670..e11ecbb6 100644
--- a/arm9/src/poke_overlay.c
+++ b/arm9/src/poke_overlay.c
@@ -9,9 +9,9 @@ static struct LoadedOverlay gLoadedOverlays[3][8];
THUMB_FUNC void FreeOverlayAllocation(struct LoadedOverlay * loaded)
{
if (loaded->active != TRUE)
- ErrorHandling();
+ GF_AssertFail();
if (FS_UnloadOverlay(MI_PROCESSOR_ARM9, loaded->id) != TRUE)
- ErrorHandling();
+ GF_AssertFail();
loaded->active = FALSE;
}
@@ -35,7 +35,7 @@ THUMB_FUNC s32 GetOverlayLoadDestination(FSOverlayID id)
u8 *end;
u8 *start;
if (FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id) != TRUE)
- ErrorHandling();
+ GF_AssertFail();
start = (u8 *)HW_ITCM_IMAGE;
end = (u8 *)HW_ITCM_END;
if (info.header.ram_address <= end && info.header.ram_address >= start)
@@ -72,7 +72,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1)
}
if (r6 >= 8)
{
- ErrorHandling();
+ GF_AssertFail();
return FALSE;
}
if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM)
@@ -91,7 +91,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1)
result = LoadOverlayNoInitAsync(MI_PROCESSOR_ARM9, id);
break;
default:
- ErrorHandling();
+ GF_AssertFail();
return FALSE;
}
if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM)
@@ -100,7 +100,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1)
}
if (result == 0)
{
- ErrorHandling();
+ GF_AssertFail();
return FALSE;
}
return TRUE;
@@ -120,7 +120,7 @@ THUMB_FUNC BOOL CanOverlayBeLoaded(FSOverlayID id)
{
if ((start >= start2 && start < end2) || (end > start2 && end <= end2) || (start <= start2 && end >= end2))
{
- ErrorHandling();
+ GF_AssertFail();
return FALSE;
}
}
@@ -146,7 +146,7 @@ THUMB_FUNC BOOL GetOverlayRamBounds(FSOverlayID id, void ** start, void ** end)
{
FSOverlayInfo info;
if (!FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id)) {
- ErrorHandling();
+ GF_AssertFail();
return FALSE;
}
*start = (void *)info.header.ram_address;
diff --git a/arm9/src/pokedex.c b/arm9/src/pokedex.c
index bd1ea254..d86afa6a 100644
--- a/arm9/src/pokedex.c
+++ b/arm9/src/pokedex.c
@@ -226,12 +226,11 @@ void Pokedex_InitSeenDeoxysFormesArray(struct Pokedex * pokedex)
static inline BOOL HasUnownLetterBeenSeen(struct Pokedex * pokedex, u8 letter)
{
- u8 * arr;
s32 i;
+ u8 * arr;
for (i = 0, arr = (u8 *)pokedex; i < 28; i++, arr++)
{
- u8 val = arr[0x010C];
- if (letter == val)
+ if (letter == *(arr + 0x10C))
return TRUE;
}
return FALSE;
@@ -239,12 +238,11 @@ static inline BOOL HasUnownLetterBeenSeen(struct Pokedex * pokedex, u8 letter)
static inline s32 FindFirstAvailableUnownLetterSlot(struct Pokedex * pokedex)
{
- u8 * arr;
s32 i;
+ u8 * arr;
for (i = 0, arr = (u8 *)pokedex; i < 28; i++, arr++)
{
- u8 val = arr[0x010C];
- if (val == 0xFF)
+ if (*(arr + 0x10C) == 0xFF)
break;
}
return i;
@@ -320,26 +318,26 @@ s32 FUN_020242C8(struct Pokedex * pokedex, u16 species, s32 r4)
return r1;
}
-const u16 sSinnohDexMythicalMons[] = {
- SPECIES_MANAPHY
-};
-
-const u16 sNationalDexMythicalMons[] = {
- SPECIES_MEW,
- SPECIES_LUGIA,
- SPECIES_HO_OH,
- SPECIES_CELEBI,
- SPECIES_JIRACHI,
- SPECIES_DEOXYS,
- SPECIES_PHIONE,
- SPECIES_MANAPHY,
- SPECIES_DARKRAI,
- SPECIES_SHAYMIN,
- SPECIES_ARCEUS
-};
-
BOOL Pokedex_SpeciesIsNotMythical(u16 species)
{
+ static const u16 sSinnohDexMythicalMons[] = {
+ SPECIES_MANAPHY
+ };
+
+ static const u16 sNationalDexMythicalMons[] = {
+ SPECIES_MEW,
+ SPECIES_LUGIA,
+ SPECIES_HO_OH,
+ SPECIES_CELEBI,
+ SPECIES_JIRACHI,
+ SPECIES_DEOXYS,
+ SPECIES_PHIONE,
+ SPECIES_MANAPHY,
+ SPECIES_DARKRAI,
+ SPECIES_SHAYMIN,
+ SPECIES_ARCEUS
+ };
+
s32 i;
BOOL ret = TRUE;
for (i = 0; i < (s32)NELEMS(sNationalDexMythicalMons); i++)
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index b3e53d1a..29075833 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -176,14 +176,14 @@ const s8 sNatureStatMods[][5] = {
void ZeroMonData(struct Pokemon * pokemon)
{
- MIi_CpuClearFast(0, pokemon, sizeof(struct Pokemon));
+ MI_CpuClearFast(pokemon, sizeof(struct Pokemon));
ENCRYPT_BOX(&pokemon->box);
ENCRYPT_PTY(pokemon);
}
void ZeroBoxMonData(struct BoxPokemon * boxmon)
{
- MIi_CpuClearFast(0, boxmon, sizeof(struct BoxPokemon));
+ MI_CpuClearFast(boxmon, sizeof(struct BoxPokemon));
ENCRYPT_BOX(boxmon);
}
@@ -272,7 +272,7 @@ void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, in
FreeToHeap(mail);
capsule = 0;
SetMonData(pokemon, MON_DATA_CAPSULE, &capsule);
- MIi_CpuClearFast(0, seal_coords, sizeof(seal_coords));
+ MI_CpuClearFast(seal_coords, sizeof(seal_coords));
SetMonData(pokemon, MON_DATA_SEAL_COORDS, seal_coords);
CalcMonLevelAndStats(pokemon);
}
@@ -3004,7 +3004,7 @@ void CopyBoxPokemonToPokemon(struct BoxPokemon * src, struct Pokemon * dest)
SetMonData(dest, MON_DATA_MAIL_STRUCT, mail);
FreeToHeap(mail);
SetMonData(dest, MON_DATA_CAPSULE, &sp0);
- MIi_CpuClearFast(0, &sp4, sizeof(sp4));
+ MI_CpuClearFast(&sp4, sizeof(sp4));
SetMonData(dest, MON_DATA_SEAL_COORDS, &sp4);
CalcMonLevelAndStats(dest);
}
@@ -3724,7 +3724,7 @@ void Pokemon_RemoveCapsule(struct Pokemon * pokemon)
{
u8 sp0 = 0;
CapsuleArray sp1;
- MIi_CpuClearFast(0, &sp1, sizeof(sp1));
+ MI_CpuClearFast(&sp1, sizeof(sp1));
SetMonData(pokemon, MON_DATA_CAPSULE, &sp0);
SetMonData(pokemon, MON_DATA_SEAL_COORDS, &sp1);
}
diff --git a/arm9/src/sav_chatot.c b/arm9/src/sav_chatot.c
new file mode 100644
index 00000000..86786e66
--- /dev/null
+++ b/arm9/src/sav_chatot.c
@@ -0,0 +1,98 @@
+#include "global.h"
+#include "MI_memory.h"
+#include "heap.h"
+#include "sav_chatot.h"
+
+THUMB_FUNC u32 Sav2_Chatot_sizeof(void)
+{
+ return sizeof(struct SaveChatotSoundClip);
+}
+
+THUMB_FUNC void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot)
+{
+ MI_CpuClear32(chatot, sizeof(struct SaveChatotSoundClip));
+ chatot->exists = FALSE;
+}
+
+THUMB_FUNC struct SaveChatotSoundClip * Chatot_new(u32 heap_id)
+{
+ struct SaveChatotSoundClip * ret = (struct SaveChatotSoundClip *)AllocFromHeap(heap_id, sizeof(struct SaveChatotSoundClip));
+ Sav2_Chatot_init(ret);
+ return ret;
+}
+
+THUMB_FUNC struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2)
+{
+ return (struct SaveChatotSoundClip *) SavArray_get(sav2, 22);
+}
+
+THUMB_FUNC BOOL Chatot_exists(struct SaveChatotSoundClip * chatot)
+{
+ return chatot->exists;
+}
+
+THUMB_FUNC void Chatot_invalidate(struct SaveChatotSoundClip * chatot)
+{
+ chatot->exists = FALSE;
+}
+
+THUMB_FUNC s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot)
+{
+ return chatot->data;
+}
+
+static inline s8 transform(u8 value)
+{
+ return (s8)(value - 8);
+}
+
+THUMB_FUNC void Chatot_Decode(s8 * dest, const s8 * data)
+{
+ s32 i;
+ s32 dest_i;
+ u8 val;
+ s8 val2;
+
+ for (dest_i = 0, i = 0; i < 1000; i++, dest_i += 2)
+ {
+ val = (u8)(data[i] & 0xF);
+ val2 = transform(val);
+ dest[dest_i + 0] = (s8)(val2 << 4);
+ val = (u8)(data[i] >> 4);
+ val2 = transform(val);
+ dest[dest_i + 1] = (s8)(val2 << 4);
+ }
+}
+
+static inline u8 untransform(s8 val)
+{
+ val /= 16;
+ return (u8)(val + 8);
+}
+
+THUMB_FUNC void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data)
+{
+ s32 src_i;
+ s32 i = 0;
+ u8 val2;
+ s8 val;
+ chatot->exists = TRUE;
+
+ for (src_i = 0; src_i < 2000; src_i += 2)
+ {
+ val = data[src_i + 0];
+ val2 = untransform(val);
+ chatot->data[i] = (s8)val2;
+
+ val = data[src_i + 1];
+ val2 = untransform(val);
+ chatot->data[i] |= val2 << 4;
+
+ i++;
+ }
+}
+
+THUMB_FUNC void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src)
+{
+ MI_CpuCopyFast(src, dest, sizeof(struct SaveChatotSoundClip));
+}
diff --git a/arm9/src/save.c b/arm9/src/save.c
index 85d18d06..89bd8374 100644
--- a/arm9/src/save.c
+++ b/arm9/src/save.c
@@ -82,7 +82,7 @@ BOOL FUN_0202263C(struct SaveBlock2 * sav2)
FlashClobberChunkFooter(sav2, 1, (u32)(sav2->unk_20220[1] == 0 ? 1 : 0));
FlashClobberChunkFooter(sav2, 0, (u32)(sav2->unk_20220[0]));
FlashClobberChunkFooter(sav2, 1, (u32)(sav2->unk_20220[1]));
- MIi_CpuClearFast(-1u, r6, 0x1000);
+ MI_CpuFillFast(r6, -1u, 0x1000);
for (int i = 0; i < 64; i++)
{
FlashWriteChunk((u32)(0x1000 * i), r6, 0x1000);
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c
index 8520f2c1..f4b18b86 100644
--- a/arm9/src/save_arrays.c
+++ b/arm9/src/save_arrays.c
@@ -15,6 +15,7 @@
#include "seal.h"
#include "unk_020139D8.h"
#include "unk_02024E64.h"
+#include "sav_chatot.h"
extern u32 FUN_0202AC20(void);
extern u32 FUN_02034D7C(void);
@@ -26,7 +27,7 @@ extern u32 FUN_02028054(void);
extern u32 FUN_02028980(void);
extern u32 FUN_02029A84(void);
extern u32 FUN_02029FB0(void);
-extern u32 FUN_02029EC4(void);
+extern u32 Sav2_Chatot_sizeof(void);
extern u32 FUN_0202A89C(void);
extern u32 FUN_0202A8F4(void);
extern u32 FUN_0202A924(void);
@@ -47,7 +48,6 @@ extern void FUN_0202805C(void *);
extern void FUN_02028994(void *);
extern void FUN_02029A8C(void *);
extern void FUN_02029FB8(void *);
-extern void FUN_02029ECC(void *);
extern void FUN_0202A8A4(void *);
extern void FUN_0202A8F8(void *);
extern void FUN_0202A92C(void *);
@@ -87,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = {
{ 19, 0, (SAVSIZEFN)FUN_02029A84, (SAVINITFN)FUN_02029A8C },
{ 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 },
{ 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init },
- { 22, 0, (SAVSIZEFN)FUN_02029EC4, (SAVINITFN)FUN_02029ECC },
+ { 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init },
{ 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 },
{ 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 },
{ 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C },
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index 4ad17e51..7adb1fe8 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -4,6 +4,7 @@
#include "options.h"
#include "player_data.h"
#include "text.h"
+#include "unk_02016B94.h"
extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id);
extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id);
@@ -27,16 +28,14 @@ extern void FUN_02055304(u32 param0, u32 param1);
extern void FUN_02039460(struct UnkSavStruct80 *arg);
extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2);
extern void FUN_02054608(u8 *param0, struct Options *options);
-extern void FUN_0200D0E0(u32 *param0, u32 param1);
-extern void FUN_02019178(u32 *param0);
-extern void FUN_020179E0(u32 param0, u32 param1, u32 param2, u16 val);
+extern void FUN_0200D0E0(struct Window *param0, u32 param1);
extern u32 FUN_02058510(u32 param0, u32 param1);
extern void MOD05_021E8128(u32 param0, u8 type, u16 map);
extern void MOD05_021E8130(u32 param0, u32 param1);
extern void MOD05_021E8158(struct UnkSavStruct80 *unk80);
-extern u32 MOD05_021E8140(u32 param0);
+extern struct Window * MOD05_021E8140(u32 param0);
extern BOOL MOD05_021E8148(u32 param0);
-extern u8 FUN_02054658(u32 param0, struct String *str, struct Options *opt, u32 param3);
+extern u8 FUN_02054658(struct Window * param0, struct String *str, struct Options *opt, u32 param3);
extern void MOD05_021E8144(u32 param0);
extern void FUN_0200CB00(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
extern u32 Std_CreateYesNoMenu(u32 param0, u8 **param1, u32 param2, u32 param3, u32 param4);
@@ -55,6 +54,10 @@ extern void MOD05_021E26CC(u32 param0, u8 param1);
extern void MOD05_021E2B80(u32 param0, u8 param1);
extern void MOD05_021E2B9C(u32 param0, u8 param1);
+extern u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
+extern u32 FUN_0205AEA4(u32 param0, const u8 *ptr);
+extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, u32 param2);
+
extern u8 *UNK_020F34E0;
static BOOL RunPauseTimer(struct ScriptContext *ctx);
@@ -575,7 +578,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext *ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext *ctx) //message unown font?
+THUMB_FUNC BOOL ScrCmd_MessageUnown(struct ScriptContext *ctx)
{
struct UnkStruct_0203A288 myLocalStruct;
u16 msg = ScriptReadHalfword(ctx);
@@ -672,7 +675,7 @@ THUMB_FUNC BOOL ScrCmd_WaitButtonAB(struct ScriptContext *ctx)
THUMB_FUNC static BOOL FUN_0203A46C(struct ScriptContext *ctx)
{
#pragma unused(ctx)
- if (gMain.unk48 & 0x3) // Mask (A | B) ?
+ if (gMain.newKeys & 0x3) // Mask (A | B) ?
{
return TRUE;
}
@@ -688,7 +691,7 @@ THUMB_FUNC BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx)
THUMB_FUNC static BOOL FUN_0203A4AC(struct ScriptContext *ctx)
{
- if (gMain.unk48 & 0x3) // Mask (A | B) ?
+ if (gMain.newKeys & 0x3) // Mask (A | B) ?
{
return TRUE;
}
@@ -709,27 +712,27 @@ THUMB_FUNC BOOL ScrCmd_WaitButton(struct ScriptContext *ctx)
THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx)
{
- if (gMain.unk48 & 3)
+ if (gMain.newKeys & 3)
{
return TRUE;
}
- else if (gMain.unk48 & 0x40)
+ else if (gMain.newKeys & 0x40)
{
FUN_02055304(ctx->unk80->unk38, 0);
}
- else if (gMain.unk48 & 0x80)
+ else if (gMain.newKeys & 0x80)
{
FUN_02055304(ctx->unk80->unk38, 1);
}
- else if (gMain.unk48 & 0x20)
+ else if (gMain.newKeys & 0x20)
{
FUN_02055304(ctx->unk80->unk38, 2);
}
- else if (gMain.unk48 & 0x10)
+ else if (gMain.newKeys & 0x10)
{
FUN_02055304(ctx->unk80->unk38, 3);
}
- else if (gMain.unk48 & 0x400)
+ else if (gMain.newKeys & 0x400)
{
FUN_02039460(ctx->unk80);
}
@@ -740,7 +743,7 @@ THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx)
+THUMB_FUNC BOOL ScrCmd_WaitButtonABPad(struct ScriptContext *ctx)
{
SetupNativeScript(ctx, FUN_0203A570);
return TRUE;
@@ -749,11 +752,11 @@ THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx)
THUMB_FUNC static BOOL FUN_0203A570(struct ScriptContext *ctx)
{
#pragma unused(ctx)
- if (gMain.unk48 & 0x3)
+ if (gMain.newKeys & 0x3)
{
return TRUE;
}
- else if (gMain.unk48 & 0xf0)
+ else if (gMain.newKeys & 0xf0)
{
return TRUE;
}
@@ -770,10 +773,10 @@ THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
- u32 *unk = FUN_02039438(unk80, 0x1); //windowID?
+ struct Window *unk = FUN_02039438(unk80, 0x1);
u8 *unk2 = FUN_02039438(unk80, 0x6);
FUN_0200D0E0(unk, 0); //clear window?
FUN_02019178(unk);
@@ -784,7 +787,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx)
THUMB_FUNC BOOL ScrCmd_Unk0035(struct ScriptContext* ctx)
{
struct UnkSavStruct80 *unk80 = ctx->unk80;
- u32 *unk = FUN_02039438(unk80, 0x1); //windowID?
+ struct Window *unk = FUN_02039438(unk80, 0x1);
u8 *unk2 = FUN_02039438(unk80, 0x6);
FUN_02019178(unk);
*unk2 = 0;
@@ -889,7 +892,7 @@ THUMB_FUNC BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx)
MOD05_021E8158(unk80);
ReadMsgDataIntoString(ctx->msgData, msg, *unk1);
StringExpandPlaceholders(*unk3, *unk2, *unk1);
- AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, (u16 *)*unk2, 0, 0, 0, NULL);
+ AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, *unk2, 0, 0, 0, NULL);
return TRUE;
}
@@ -969,19 +972,19 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx)
return TRUE;
}
- if (gMain.unk48 & 0x40)
+ if (gMain.newKeys & 0x40)
{
tmp = 0;
}
- else if (gMain.unk48 & 0x80)
+ else if (gMain.newKeys & 0x80)
{
tmp = 1;
}
- else if (gMain.unk48 & 0x20)
+ else if (gMain.newKeys & 0x20)
{
tmp = 2;
}
- else if (gMain.unk48 & 0x10)
+ else if (gMain.newKeys & 0x10)
{
tmp = 3;
}
@@ -995,7 +998,7 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx)
}
else
{
- if (gMain.unk48 & 0x400)
+ if (gMain.newKeys & 0x400)
{
FUN_0201BD7C(*unk1);
*varPtr = 1;
@@ -1018,24 +1021,24 @@ THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx)
u16 *unk = GetVarPointer(ctx->unk80, (u16)ctx->data[0]);
u32 tmp = 0xFFFF;
- if (gMain.unk48 & 0x3)
+ if (gMain.newKeys & 0x3)
{
*unk = 0;
return TRUE;
}
- else if (gMain.unk48 & 0x40)
+ else if (gMain.newKeys & 0x40)
{
tmp = 0;
}
- else if (gMain.unk48 & 0x80)
+ else if (gMain.newKeys & 0x80)
{
tmp = 1;
}
- else if (gMain.unk48 & 0x20)
+ else if (gMain.newKeys & 0x20)
{
tmp = 2;
}
- else if (gMain.unk48 & 0x10)
+ else if (gMain.newKeys & 0x10)
{
tmp = 3;
}
@@ -1048,7 +1051,7 @@ THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx)
}
else
{
- if (gMain.unk48 & 0x400)
+ if (gMain.newKeys & 0x400)
{
*unk = 1;
return TRUE;
@@ -1298,3 +1301,19 @@ THUMB_FUNC BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx)
MOD05_021E2B9C(*unk, ScriptReadByte(ctx));
return TRUE;
}
+
+THUMB_FUNC BOOL ScrCmd_Unk005E(struct ScriptContext *ctx) //ApplyMovement?
+{
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 unk2 = ScriptReadWord(ctx);
+
+ u32 unk3 = FUN_0203B120(ctx->unk80, unk);
+ GF_ASSERT(unk3);
+
+ u32 unk4 = FUN_0205AEA4(unk3, ctx->scriptPtr + unk2);
+ u8 *unk5 = FUN_02039438(ctx->unk80, 4);
+ (*unk5)++;
+
+ FUN_0203B174(ctx->unk80, unk4, 0);
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c
deleted file mode 100644
index 882126a0..00000000
--- a/arm9/src/scrcmd_20.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "scrcmd.h"
-
-const u16 UNK_020F452A[19][2] = {
- { 0x00FB, 0x03E8 },
- { 0x0109, 0x03E8 },
- { 0x0114, 0x03E8 },
- { 0x0115, 0x03E8 },
- { 0x01A1, 0x07D0 },
- { 0x0181, 0x07D0 },
- { 0x0192, 0x0FA0 },
- { 0x0167, 0x0FA0 },
- { 0x0173, 0x1770 },
- { 0x01A0, 0x1770 },
- { 0x0151, 0x1770 },
- { 0x0162, 0x1F40 },
- { 0x015C, 0x1F40 },
- { 0x016A, 0x2710 },
- { 0x015F, 0x2710 },
- { 0x0154, 0x2710 },
- { 0x0164, 0x2710 },
- { 0x0191, 0x3A98 },
- { 0x018B, 0x4E20 },
-};
-
-THUMB_FUNC BOOL ScrCmd_Unk02A6(struct ScriptContext * ctx)
-{
- u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
- u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
-
- *ret_ptr1 = UNK_020F452A[idx][0];
- *ret_ptr2 = UNK_020F452A[idx][1];
-
- return FALSE;
-}
diff --git a/arm9/src/scrcmd_24.c b/arm9/src/scrcmd_24.c
new file mode 100644
index 00000000..9c8f8d4b
--- /dev/null
+++ b/arm9/src/scrcmd_24.c
@@ -0,0 +1,276 @@
+#include "scrcmd.h"
+#include "heap.h"
+#include "party.h"
+#include "unk_020377F0.h"
+#include "unk_02088DD8.h"
+
+extern void* FUN_02039438(struct UnkSavStruct80*, int idx);
+
+extern struct UnkStruct_02037CF0* FUN_02037CF0(u32 heap_id, struct UnkSavStruct80*, u8);
+extern u8 FUN_02037D5C(struct UnkStruct_02037CF0*);
+extern void FUN_02038864(struct UnkSavStruct80*, struct UnkStruct_02088DD8*);
+extern BOOL FUN_0203BC04(struct ScriptContext* ctx);
+extern struct UnkStruct_02088DD8* FUN_02088DD8(u32 heap_id);
+extern void FUN_02088DF0(struct UnkStruct_02037CF0*);
+extern void* FUN_02088DF8(struct Pokemon* pokemon, u32 heap_id);
+extern BOOL FUN_02088EF8(void*);
+
+THUMB_FUNC BOOL ScrCmd_Unk01C6(struct ScriptContext* ctx)
+{
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct UnkStruct_02037CF0** unk_ret_ptr = FUN_02039438(ctx->unk80, 19);
+ *unk_ret_ptr = FUN_02037CF0(32, ctx->unk80, (u8)unk);
+
+ SetupNativeScript(ctx, FUN_0203BC04);
+ return TRUE;
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct UnkStruct_02037CF0** unk_ptr = FUN_02039438(ctx->unk80, 19);
+ GF_ASSERT(*unk_ptr != NULL);
+
+ *ret_ptr = FUN_02037D5C(*unk_ptr);
+ if (*ret_ptr == 4)
+ {
+ *ret_ptr = 0xFF;
+ }
+
+ FreeToHeap(*unk_ptr);
+ *unk_ptr = NULL;
+ return FALSE;
+}
+#else
+THUMB_FUNC asm BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx)
+{
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl GetVarPointer
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x0]
+ cmp r0, #0x0
+ bne _02045DFC
+ bl GF_AssertFail
+_02045DFC:
+ ldr r0, [r4, #0x0]
+ bl FUN_02037D5C
+ strh r0, [r5, #0x0]
+ ldrh r0, [r5, #0x0]
+ cmp r0, #0x4
+ bne _02045E0E
+ mov r0, #0xff
+ strh r0, [r5, #0x0]
+_02045E0E:
+ ldr r0, [r4, #0x0]
+ bl FreeToHeap
+ mov r0, #0x0
+ str r0, [r4, #0x0]
+ pop {r3-r5, pc}
+}
+#endif
+
+THUMB_FUNC BOOL ScrCmd_Unk021E(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk021F(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx);
+ void* unk_ptr = FUN_02088DF8(pokemon, 32);
+
+ *ret_ptr = (u16)FUN_02088EF8(unk_ptr);
+ FreeToHeap(unk_ptr);
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02045E74(struct ScriptContext* ctx, u8 a1, struct Pokemon* pokemon, void* a3)
+{
+ struct UnkStruct_02088DD8** unk = FUN_02039438(ctx->unk80, 19);
+ struct UnkStruct_02088DD8* unk2 = FUN_02088DD8(32);
+ *unk = unk2;
+
+ unk2->pokemon = pokemon;
+
+ struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80);
+ unk2->player = Sav2_PlayerData_GetProfileAddr(sav2);
+
+ unk2->options = Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2);
+ unk2->unkC = a3;
+ unk2->unk15 = a1;
+ FUN_02038864(ctx->unk80, unk2);
+
+ SetupNativeScript(ctx, FUN_0203BC04);
+ FreeToHeap(a3);
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0220(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0221(struct ScriptContext* ctx)
+{
+ u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx);
+ void* unk_ptr = FUN_02088DF8(pokemon, 32);
+
+ FUN_02045E74(ctx, 1, pokemon, unk_ptr);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0224(struct ScriptContext* ctx)
+{
+ u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx);
+
+ u16* unk_array = AllocFromHeap(32, 2 * sizeof(u16));
+ unk_array[0] = unk2;
+ unk_array[1] = 0xFFFF;
+
+ FUN_02045E74(ctx, 0, pokemon, unk_array);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0222(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC BOOL ScrCmd_Unk0223(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct UnkStruct_02037CF0** unk = FUN_02039438(ctx->unk80, 19);
+ struct UnkStruct_02037CF0* unk_sub = *unk;
+
+ GF_ASSERT(unk_sub != NULL);
+
+ if (unk_sub->unk16 == 0)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 0xFF;
+ }
+
+ FUN_02088DF0(unk_sub);
+ return FALSE;
+}
+#else
+THUMB_FUNC asm BOOL ScrCmd_Unk0223(struct ScriptContext* ctx)
+{
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl GetVarPointer
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ bne _02045FB2
+ bl GF_AssertFail
+_02045FB2:
+ ldrb r0, [r4, #0x16]
+ cmp r0, #0x0
+ bne _02045FBC
+ mov r0, #0x0
+ b _02045FBE
+_02045FBC:
+ mov r0, #0xff
+_02045FBE:
+ strh r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02088DF0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+}
+#endif
+
+#ifdef NONMATCHING
+THUMB_FUNC BOOL ScrCmd_Unk0225(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct UnkStruct_02037CF0** unk = FUN_02039438(ctx->unk80, 19);
+ struct UnkStruct_02037CF0* unk_sub = *unk;
+
+ GF_ASSERT(unk_sub != NULL);
+
+ if (unk_sub->unk16 == 0)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 0xFF;
+ }
+
+ FUN_02088DF0(unk_sub);
+ return FALSE;
+}
+#else
+THUMB_FUNC asm BOOL ScrCmd_Unk0225(struct ScriptContext* ctx)
+{
+ push {r3-r5, lr}
+ add r4, r0, #0x0
+ bl ScriptReadHalfword
+ add r1, r0, #0x0
+ add r0, r4, #0x0
+ add r0, #0x80
+ ldr r0, [r0, #0x0]
+ bl GetVarPointer
+ add r4, #0x80
+ add r5, r0, #0x0
+ ldr r0, [r4, #0x0]
+ mov r1, #0x13
+ bl FUN_02039438
+ ldr r4, [r0, #0x0]
+ cmp r4, #0x0
+ bne _02045FB2
+ bl GF_AssertFail
+_02045FB2:
+ ldrb r0, [r4, #0x16]
+ cmp r0, #0x0
+ bne _02045FBC
+ mov r0, #0x0
+ b _02045FBE
+_02045FBC:
+ mov r0, #0xff
+_02045FBE:
+ strh r0, [r5, #0x0]
+ add r0, r4, #0x0
+ bl FUN_02088DF0
+ mov r0, #0x0
+ pop {r3-r5, pc}
+}
+#endif
diff --git a/arm9/src/scrcmd_8.c b/arm9/src/scrcmd_8.c
new file mode 100644
index 00000000..0c47594b
--- /dev/null
+++ b/arm9/src/scrcmd_8.c
@@ -0,0 +1,88 @@
+#include "scrcmd.h"
+#include "math_util.h"
+#include "unk_020286F8.h"
+
+extern void* FUN_02039438(struct UnkSavStruct80*, u8 idx);
+
+extern void FUN_020385CC(struct UnkStruct_0204639C*, u32, u32, u32, u32, u16*, u16* ret_ptr);
+extern BOOL FUN_020612EC(struct UnkSavStruct80*);
+extern BOOL FUN_020612F8(struct UnkSavStruct80*);
+
+THUMB_FUNC BOOL ScrCmd_Unk021D(struct ScriptContext* ctx) //docs has this command as ScrCmd_Group, with a comment saying
+ //"This command is the devil"
+{
+ struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
+ struct UnkSaveStruct_020286F8* unk_sav_ptr = FUN_0202881C(ctx->unk80->saveBlock2);
+ struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
+
+ u16 option = ScriptReadHalfword(ctx);
+ switch (option)
+ {
+ case 0: { //check if group ID exists
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = (u16)FUN_02028828(unk_sav_ptr, unk_var);
+ return FALSE;
+ }
+ case 1: { //check if group ID is accessible
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = (u16)FUN_02028840(unk_sav_ptr, unk_var);
+ return FALSE;
+ }
+ case 2: { //writes group ID to string buffer
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ BufferEasyChatWord(*mgr, sav2, unk_var, idx, 0);
+ break;
+ }
+ case 3: { //writes group leader name to string buffer
+ u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ BufferEasyChatWord(*mgr, sav2, unk_var, idx, 1);
+ break;
+ }
+ case 4: { //opens keyboard, 2 if group id exists, 1 if cancel, 0 otherwise
+ u16* unk_str_ptr = FUN_020287A8(unk_sav_ptr, 0, 0);
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ FUN_020385CC(ctx->unk74, 5, 0, 7, 0, unk_str_ptr, ret_ptr);
+ return TRUE;
+ }
+ case 5: { //enter in group id (whatever this means, needs more investigation)
+ u16 src_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ BOOL unk_bool = FUN_02028828(unk_sav_ptr, 1);
+
+ FUN_02028700(unk_sav_ptr, src_idx, 1);
+ if (unk_bool != FALSE)
+ {
+ FUN_020612F8(ctx->unk80);
+ }
+
+ return FALSE;
+ }
+ case 6: { //create a group
+ struct String* player_name = String_ctor(64, 32);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+
+ PlayerName_FlatToString(player, player_name);
+ FUN_020287C0(unk_sav_ptr, 0, 1, player_name);
+ FUN_020287EC(unk_sav_ptr, 0, PlayerProfile_GetTrainerGender(player));
+ FUN_02028810(unk_sav_ptr, 0, 2);
+ FUN_02028788(unk_sav_ptr, 0, MTRandom());
+
+ String_dtor(player_name);
+
+ FUN_02028700(unk_sav_ptr, 0, 1);
+ FUN_020612EC(ctx->unk80);
+
+ break;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_11.c b/arm9/src/scrcmd_berry_trees.c
index 8553adfa..53715ca1 100644
--- a/arm9/src/scrcmd_11.c
+++ b/arm9/src/scrcmd_berry_trees.c
@@ -16,7 +16,7 @@ extern void FUN_0204B5A8(struct UnkSavStruct80*, void*, u16);
extern void FUN_0204B9A0(struct UnkSavStruct80*);
extern void FUN_0204B4FC(struct UnkSavStruct80*, void*);
-THUMB_FUNC BOOL ScrCmd_Unk017D(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetBerryTreeGrowth(struct ScriptContext* ctx)
{
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
void** unk = FUN_02039438(ctx->unk80, 10);
@@ -26,7 +26,7 @@ THUMB_FUNC BOOL ScrCmd_Unk017D(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk017E(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetBerryTreeType(struct ScriptContext* ctx)
{
void** unk = FUN_02039438(ctx->unk80, 10);
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -36,7 +36,7 @@ THUMB_FUNC BOOL ScrCmd_Unk017E(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk017F(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetBerryTreeMulch(struct ScriptContext* ctx)
{
void** unk = FUN_02039438(ctx->unk80, 10);
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -46,7 +46,7 @@ THUMB_FUNC BOOL ScrCmd_Unk017F(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0180(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetBerryTreeWater(struct ScriptContext* ctx)
{
void** unk = FUN_02039438(ctx->unk80, 10);
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -56,7 +56,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0180(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0181(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetBerryTreeAmount(struct ScriptContext* ctx)
{
void** unk = FUN_02039438(ctx->unk80, 10);
u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -66,7 +66,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0181(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0182(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetBerryTreeMulch(struct ScriptContext* ctx)
{
void** unk = FUN_02039438(ctx->unk80, 10);
u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -76,7 +76,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0182(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0183(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_SetBerryTreeType(struct ScriptContext* ctx)
{
void** unk = FUN_02039438(ctx->unk80, 10);
struct UnkStruct_02029FB0* unk2 = FUN_02029FC8(ctx->unk80->saveBlock2);
@@ -88,7 +88,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0183(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx) //SetBerryTreeWater/WaterBerryTree, or just the animation?
{
u16 unk = ScriptReadHalfword(ctx);
@@ -108,7 +108,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx)
return TRUE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0185(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_TakeBerryTreeBerries(struct ScriptContext* ctx)
{
struct UnkStruct_02029FB0* unk = FUN_02029FC8(ctx->unk80->saveBlock2);
void** unk2 = FUN_02039438(ctx->unk80, 10);
diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c
index 59638c83..f4fea1de 100644
--- a/arm9/src/scrcmd_coins.c
+++ b/arm9/src/scrcmd_coins.c
@@ -7,7 +7,7 @@ extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8);
extern MOD05_021E29B4();
extern MOD05_021E29C8();
-THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_ShowCoinBox(struct ScriptContext * ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -20,7 +20,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0076(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_HideCoinBox(struct ScriptContext * ctx)
{
u16 ** unk = FUN_02039438(ctx->unk80, 0x26);
MOD05_021E29B4(*unk);
@@ -28,7 +28,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0076(struct ScriptContext * ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0077(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_UpdateCoinBox(struct ScriptContext * ctx)
{
u16 ** unk = FUN_02039438(ctx->unk80, 0x26);
MOD05_021E29C8(ctx->unk80, *unk);
diff --git a/arm9/src/scrcmd_daycare.c b/arm9/src/scrcmd_daycare.c
index 4e2f925e..34abab1e 100644
--- a/arm9/src/scrcmd_daycare.c
+++ b/arm9/src/scrcmd_daycare.c
@@ -17,7 +17,7 @@ extern u16 MOD05_021ED5C4(struct PlayerParty* party, int idx, struct ScrStrBufs*
extern u16 MOD05_021ED5EC(struct DayCare* daycare);
extern u32 MOD05_021ED644(struct DayCare* daycare);
-THUMB_FUNC BOOL ScrCmd_Unk016D(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetDaycarePokemonNames(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
@@ -28,7 +28,7 @@ THUMB_FUNC BOOL ScrCmd_Unk016D(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk016E(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetDaycareStatus(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
struct SaveBlock2* sav2 = sav_ptr->saveBlock2;
@@ -40,7 +40,7 @@ THUMB_FUNC BOOL ScrCmd_Unk016E(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_DeleteDaycareEgg(struct ScriptContext* ctx)
{
struct DayCare* daycare = SavArray_get(ctx->unk80->saveBlock2, 8);
MOD05_021ECD64(daycare);
@@ -48,7 +48,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01A9(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GiveDaycareEgg(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
struct DayCare* daycare = SavArray_get(sav_ptr->saveBlock2, 8);
@@ -90,7 +90,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01AA(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01AE(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetDaycareLevel(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
diff --git a/arm9/src/scrcmd_flags.c b/arm9/src/scrcmd_flags.c
new file mode 100644
index 00000000..ee13ebc0
--- /dev/null
+++ b/arm9/src/scrcmd_flags.c
@@ -0,0 +1,284 @@
+#include "scrcmd.h"
+#include "event_data.h"
+#include "pokedex.h"
+
+extern void* FUN_02034E20(void*);
+extern void* FUN_02034E30(void*);
+extern BOOL FUN_02055474(void*);
+extern void FUN_02055488(void*, u32);
+extern void FUN_0205ECD4(struct ScriptState* state);
+extern BOOL FUN_0205ECE0(struct ScriptState* state);
+extern void FUN_0205ECFC(struct ScriptState* state);
+extern BOOL FUN_0205ED0C(struct ScriptState* state);
+extern void FUN_0205ED1C(struct ScriptState* state);
+extern void FUN_0205ED2C(struct ScriptState* state);
+extern BOOL FUN_0205ED3C(struct ScriptState* state);
+extern void FUN_0205ED4C(struct ScriptState* state);
+extern void FUN_0205ED5C(struct ScriptState* state);
+extern BOOL FUN_0205ED6C(struct ScriptState* state);
+extern BOOL FUN_0205F264(struct ScriptState* state, u32);
+extern void FUN_0205F274(struct ScriptState* state);
+extern void FUN_0205F284(struct ScriptState* state);
+extern BOOL FUN_0205F294(struct ScriptState* state);
+extern void FUN_0205F2A4(struct ScriptState* state);
+extern void FUN_0205F2B4(struct ScriptState* state);
+extern BOOL FUN_0205F2C4(struct ScriptState* state);
+
+const u8 UNK_020F457F[8] = {
+ 0, 1, 2, 3, 4, 5, 6, 7,
+};
+
+THUMB_FUNC BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx)
+{
+ struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2);
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = (u16)Pokedex_GetSinnohDexFlag(pokedex);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx)
+{
+ struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2);
+
+ Pokedex_SetSinnohDexFlag(pokedex);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasRunningShoes(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2);
+ void* unk = FUN_02034E20(unk_sav_ptr);
+
+ *ret_ptr = (u16)FUN_02055474(unk);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveRunningShoes(struct ScriptContext* ctx)
+{
+ void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2);
+ void* unk = FUN_02034E20(unk_sav_ptr);
+
+ FUN_02055488(unk, 1);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasBadge(struct ScriptContext* ctx)
+{
+ u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ GF_ASSERT(badge_no < 8);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)PlayerProfile_TestBadgeFlag(player, badge_no);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx)
+{
+ u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ GF_ASSERT(badge_no < 8);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+
+ PlayerProfile_SetBadgeFlag(player, badge_no);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveBag(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ECE0(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ u16 i;
+ u16 badges;
+ for (i = 0, badges = 0; i < 8; i++)
+ {
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2);
+ BOOL has_badge = PlayerProfile_TestBadgeFlag(player, UNK_020F457F[i]);
+ if (has_badge == TRUE)
+ {
+ badges++;
+ }
+ }
+
+ *ret_ptr = badges;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_HasBag(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ECD4(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0160(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ED3C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0161(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED1C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0162(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED2C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0163(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ED6C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0164(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED4C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0165(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ED5C(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckGameCompleted(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ *ret_ptr = (u16)FUN_0205ED0C(state);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SetGameCompleted(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+
+ FUN_0205ECFC(state);
+
+ return 0;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetSetStrength(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 option = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (option)
+ {
+ case 1: //set strength to on
+ FUN_0205F264(state, 1);
+ break;
+ case 0: //set strength to off
+ FUN_0205F264(state, 0);
+ break;
+ case 2: //get whether strength is on or off
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F264(state, 2);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetSetFlash(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 option = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (option)
+ {
+ case 1: //set flash to on
+ FUN_0205F274(state);
+ break;
+ case 0: //set flash to off
+ FUN_0205F284(state);
+ break;
+ case 2: //get whether flash is on or off
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F294(state);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetSetDefog(struct ScriptContext* ctx)
+{
+ struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2);
+ u8 option = ScriptReadByte(ctx);
+ u16* ret_ptr;
+
+ switch (option)
+ {
+ case 1: //set defog to on
+ FUN_0205F2A4(state);
+ break;
+ case 0: //set defog to off
+ FUN_0205F2B4(state);
+ break;
+ case 2: //get whether defog is on or off
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ *ret_ptr = (u16)FUN_0205F2C4(state);
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ break;
+ }
+
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_fossils.c
index b0a201b7..e4177382 100644
--- a/arm9/src/scrcmd_19.c
+++ b/arm9/src/scrcmd_fossils.c
@@ -1,45 +1,45 @@
#include "scrcmd.h"
#include "bag.h"
-const u16 UNK_020F450C[7][2] = {
- { 0x0067, 0x008E },
- { 0x0065, 0x008A },
- { 0x0066, 0x008C },
- { 0x0063, 0x0159 },
- { 0x0064, 0x015B },
- { 0x0068, 0x019A },
- { 0x0069, 0x0198 },
+const u16 gFossilPokemonMap[7][2] = {
+ { ITEM_OLD_AMBER, SPECIES_AERODACTYL },
+ { ITEM_HELIX_FOSSIL, SPECIES_OMANYTE },
+ { ITEM_DOME_FOSSIL, SPECIES_KABUTO },
+ { ITEM_ROOT_FOSSIL, SPECIES_LILEEP },
+ { ITEM_CLAW_FOSSIL, SPECIES_ANORITH },
+ { ITEM_ARMOR_FOSSIL, SPECIES_SHIELDON },
+ { ITEM_SKULL_FOSSIL, SPECIES_CRANIDOS },
};
-THUMB_FUNC BOOL ScrCmd_Unk01F1(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_CountFossils(struct ScriptContext * ctx)
{
struct UnkSavStruct80 * sav_ptr = ctx->unk80;
- u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
u8 i;
u16 total;
for (i = 0, total = 0; i < 7; i++)
{
- total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4);
+ total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), gFossilPokemonMap[i][0], 4);
}
*ret_ptr = total;
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_GetFossilPokemon(struct ScriptContext * ctx)
{
- u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 *ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 fossilId = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
*ret_ptr = 0;
for (u16 i = 0; i < 7; i++)
{
- if (UNK_020F450C[i][0] == unk)
+ if (gFossilPokemonMap[i][0] == fossilId)
{
- *ret_ptr = UNK_020F450C[i][1];
+ *ret_ptr = gFossilPokemonMap[i][1];
break;
}
}
@@ -47,7 +47,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_GetFossilMinimumAmount(struct ScriptContext * ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
@@ -61,10 +61,10 @@ THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx)
u16 total = 0;
for (; i < 7; i++)
{
- total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4);
+ total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), gFossilPokemonMap[i][0], 4);
if (total >= needed_amount)
{
- *ret_ptr1 = UNK_020F450C[i][0];
+ *ret_ptr1 = gFossilPokemonMap[i][0];
*ret_ptr2 = i;
break;
}
diff --git a/arm9/src/scrcmd_mart.c b/arm9/src/scrcmd_mart.c
new file mode 100644
index 00000000..6803617c
--- /dev/null
+++ b/arm9/src/scrcmd_mart.c
@@ -0,0 +1,442 @@
+#include "global.h"
+#include "constants/items.h"
+#include "constants/seal_constants.h"
+#include "constants/decorations.h"
+#include "scrcmd.h"
+#include "module_06.h"
+
+extern void FUN_02038AD0(struct UnkStruct_0204639C *);
+
+static const u16 UNK_020F40A6[] = {
+ ITEM_AIR_MAIL,
+ ITEM_HEAL_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40A0[] = {
+ ITEM_STEEL_MAIL,
+ ITEM_LUXURY_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40B4[] = {
+ ITEM_TUNNEL_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40AC[] = {
+ ITEM_BLOOM_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40BC[] = {
+ ITEM_AIR_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40F8[] = {
+ ITEM_HEART_MAIL,
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4102[] = {
+ ITEM_AIR_MAIL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_REPEAT_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40DA[] = {
+ ITEM_AIR_MAIL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40EE[] = {
+ ITEM_AIR_MAIL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40D0[] = {
+ ITEM_SNOW_MAIL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40C6[] = {
+ ITEM_HEAL_POWDER,
+ ITEM_ENERGYPOWDER,
+ ITEM_ENERGY_ROOT,
+ ITEM_REVIVAL_HERB,
+ 0xFFFF
+};
+
+static const u16 UNK_020F40E4[] = {
+ ITEM_AIR_MAIL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F410C[] = {
+ DECORATION_YELLOW_CUSHION,
+ DECORATION_CUPBOARD,
+ DECORATION_TV,
+ DECORATION_REFRIGERATOR,
+ DECORATION_PRETTY_SINK,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4118[] = {
+ DECORATION_MUNCHLAX_DOLL,
+ DECORATION_BONSLY_DOLL,
+ DECORATION_MIME_JR__DOLL,
+ DECORATION_MANTYKE_DOLL,
+ DECORATION_BUIZEL_DOLL,
+ DECORATION_CHATOT_DOLL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4126[] = {
+ ITEM_PROTEIN,
+ ITEM_IRON,
+ ITEM_CALCIUM,
+ ITEM_ZINC,
+ ITEM_CARBOS,
+ ITEM_HP_UP,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4134[] = {
+ ITEM_TM38,
+ ITEM_TM25,
+ ITEM_TM14,
+ ITEM_TM22,
+ ITEM_TM52,
+ ITEM_TM15,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41B2[] = {
+ SEAL_STAR_A,
+ SEAL_A,
+ SEAL_FIRE_A,
+ SEAL_SONG_A,
+ SEAL_LINE_B,
+ SEAL_ELE_B,
+ SEAL_PARTY_D,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4142[] = {
+ SEAL_HEART_B,
+ SEAL_STAR_C,
+ SEAL_FIRE_C,
+ SEAL_FLORA_B,
+ SEAL_SONG_C,
+ SEAL_SMOKE_A,
+ SEAL_ELE_D,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4152[] = {
+ SEAL_FOAMY_D,
+ SEAL_PARTY_C,
+ SEAL_FLORA_F,
+ SEAL_SONG_G,
+ SEAL_HEART_F,
+ SEAL_LINE_A,
+ SEAL_ELE_A,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4162[] = {
+ SEAL_HEART_C,
+ SEAL_STAR_D,
+ SEAL_FIRE_D,
+ SEAL_FLORA_C,
+ SEAL_SONG_D,
+ SEAL_SMOKE_B,
+ SEAL_FOAMY_A,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4172[] = {
+ SEAL_HEART_D,
+ SEAL_FOAMY_B,
+ SEAL_PARTY_A,
+ SEAL_FLORA_D,
+ SEAL_SONG_E,
+ SEAL_STAR_E,
+ SEAL_SMOKE_C,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4182[] = {
+ ITEM_TM83,
+ ITEM_TM17,
+ ITEM_TM54,
+ ITEM_TM20,
+ ITEM_TM33,
+ ITEM_TM16,
+ ITEM_TM70,
+ 0xFFFF
+};
+
+static const u16 UNK_020F4192[] = {
+ SEAL_HEART_A,
+ SEAL_STAR_B,
+ SEAL_FIRE_B,
+ SEAL_SONG_B,
+ SEAL_LINE_C,
+ SEAL_ELE_C,
+ SEAL_FLORA_A,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41A2[] = {
+ SEAL_FOAMY_C,
+ SEAL_PARTY_B,
+ SEAL_FLORA_E,
+ SEAL_SONG_F,
+ SEAL_HEART_E,
+ SEAL_STAR_F,
+ SEAL_SMOKE_D,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41D4[] = {
+ ITEM_X_SPEED,
+ ITEM_X_ATTACK,
+ ITEM_X_DEFENSE,
+ ITEM_GUARD_SPEC_,
+ ITEM_DIRE_HIT,
+ ITEM_X_ACCURACY,
+ ITEM_X_SPECIAL,
+ ITEM_X_SP__DEF,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41C2[] = {
+ ITEM_HEAL_BALL,
+ ITEM_NET_BALL,
+ ITEM_NEST_BALL,
+ ITEM_DUSK_BALL,
+ ITEM_QUICK_BALL,
+ ITEM_TIMER_BALL,
+ ITEM_REPEAT_BALL,
+ ITEM_LUXURY_BALL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41E6[] = {
+ ITEM_POTION,
+ ITEM_SUPER_POTION,
+ ITEM_HYPER_POTION,
+ ITEM_MAX_POTION,
+ ITEM_REVIVE,
+ ITEM_ANTIDOTE,
+ ITEM_PARLYZ_HEAL,
+ ITEM_BURN_HEAL,
+ ITEM_ICE_HEAL,
+ ITEM_AWAKENING,
+ ITEM_FULL_HEAL,
+ 0xFFFF
+};
+
+static const u16 UNK_020F41FE[] = {
+ ITEM_POKE_BALL,
+ ITEM_GREAT_BALL,
+ ITEM_ULTRA_BALL,
+ ITEM_ESCAPE_ROPE,
+ ITEM_POKE_DOLL,
+ ITEM_REPEL,
+ ITEM_SUPER_REPEL,
+ ITEM_MAX_REPEL,
+ ITEM_GRASS_MAIL,
+ ITEM_FLAME_MAIL,
+ ITEM_BUBBLE_MAIL,
+ ITEM_SPACE_MAIL,
+ 0xFFFF
+};
+
+static const u16 sNormalMartBadgeThresholds[][2] = {
+ // Balls
+ {ITEM_POKE_BALL, 1},
+ {ITEM_GREAT_BALL, 3},
+ {ITEM_ULTRA_BALL, 4},
+ // Potions
+ {ITEM_POTION, 1},
+ {ITEM_SUPER_POTION, 2},
+ {ITEM_HYPER_POTION, 4},
+ {ITEM_MAX_POTION, 5},
+ {ITEM_FULL_RESTORE, 6},
+ // Revives
+ {ITEM_REVIVE, 3},
+ // Status heal
+ {ITEM_ANTIDOTE, 1},
+ {ITEM_PARLYZ_HEAL, 1},
+ {ITEM_AWAKENING, 2},
+ {ITEM_BURN_HEAL, 2},
+ {ITEM_ICE_HEAL, 2},
+ {ITEM_FULL_HEAL, 4},
+ // Dungeon items
+ {ITEM_ESCAPE_ROPE, 2},
+ // Repels
+ {ITEM_REPEL, 2},
+ {ITEM_SUPER_REPEL, 3},
+ {ITEM_MAX_REPEL, 4},
+};
+
+const u16 *sDecorationMartPointers[] = {
+ UNK_020F410C,
+ UNK_020F4118,
+};
+
+const u16 *sSpecialMartPointers[] = {
+ UNK_020F40A6,
+ UNK_020F40B4,
+ UNK_020F40AC,
+ UNK_020F40BC,
+ UNK_020F40C6,
+ UNK_020F40F8,
+ UNK_020F40DA,
+ UNK_020F40E4,
+ UNK_020F41E6,
+ UNK_020F41FE,
+ UNK_020F41D4,
+ UNK_020F4126,
+ UNK_020F4182,
+ UNK_020F4134,
+ UNK_020F40EE,
+ UNK_020F40D0,
+ UNK_020F4102,
+ UNK_020F40A0,
+ UNK_020F41C2,
+};
+
+const u16 *sSealsMartPointers[] = {
+ UNK_020F4192,
+ UNK_020F4142,
+ UNK_020F4162,
+ UNK_020F4172,
+ UNK_020F41A2,
+ UNK_020F4152,
+ UNK_020F41B2,
+};
+
+THUMB_FUNC BOOL ScrCmd_NormalMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ s32 param;
+ u16 martItems[64];
+ u8 martIdx = 0;
+ u8 badgeCount = 0;
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (PlayerProfile_TestBadgeFlag(Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2), i) == TRUE)
+ badgeCount++;
+ }
+ switch (badgeCount)
+ {
+ case 0:
+ param = 1;
+ break;
+ case 1:
+ case 2:
+ param = 2;
+ break;
+ case 3:
+ case 4:
+ param = 3;
+ break;
+ case 5:
+ case 6:
+ param = 4;
+ break;
+ case 7:
+ param = 5;
+ break;
+ case 8:
+ param = 6;
+ break;
+ default:
+ param = 1;
+ break;
+ }
+ for (i = 0; i < NELEMS(sNormalMartBadgeThresholds); i++)
+ {
+ if (param >= sNormalMartBadgeThresholds[i][1])
+ {
+ martItems[martIdx] = sNormalMartBadgeThresholds[i][0];
+ martIdx++;
+ }
+ }
+ martItems[martIdx] = 0xFFFF; // terminator
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, martItems, MART_ITEMS, 0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SpecialMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 sp0;
+
+ // Fakematch?
+ if ((u16)(whichMart + (u16)(-8u)) <= 5)
+ sp0 = 1;
+ else
+ sp0 = 0;
+
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, sSpecialMartPointers[whichMart], MART_ITEMS, sp0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GoodsMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u32 sp0;
+
+ if (whichMart <= 1)
+ sp0 = 1;
+ else
+ sp0 = 0;
+
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, sDecorationMartPointers[whichMart], MART_DECORATIONS, sp0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SealsMart(struct ScriptContext * ctx)
+{
+ u16 whichMart = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ MOD06_0223D3D0(ctx->unk74, ctx->unk80, sSealsMartPointers[whichMart], MART_SEALS, 0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_AccessoriesShop(struct ScriptContext * ctx)
+{
+ FUN_02038AD0(ctx->unk80->unk10);
+ return TRUE;
+}
diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c
index d2254844..6f18d65d 100644
--- a/arm9/src/scrcmd_money.c
+++ b/arm9/src/scrcmd_money.c
@@ -82,7 +82,7 @@ THUMB_FUNC BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext * ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0072(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_ShowMoneyBox(struct ScriptContext * ctx)
{
struct UnkSavStruct80 * sav_ptr = ctx->unk80;
u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -94,7 +94,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0072(struct ScriptContext * ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0073(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_HideMoneyBox(struct ScriptContext * ctx)
{
u32 ** unk = FUN_02039438(ctx->unk80, 0x27);
MOD05_021E288C(*unk);
@@ -102,7 +102,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0073(struct ScriptContext * ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0074(struct ScriptContext * ctx)
+THUMB_FUNC BOOL ScrCmd_UpdateMoneyBox(struct ScriptContext * ctx)
{
u32 ** unk = FUN_02039438(ctx->unk80, 0x27);
MOD05_021E28A0(ctx->unk80, *unk);
diff --git a/arm9/src/scrcmd_names.c b/arm9/src/scrcmd_names.c
index cf721328..ec1d8c92 100644
--- a/arm9/src/scrcmd_names.c
+++ b/arm9/src/scrcmd_names.c
@@ -53,7 +53,7 @@ THUMB_FUNC BOOL ScrCmd_GetFriendName(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk00D0(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetPokemonName(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15);
@@ -145,7 +145,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0280(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk00D6(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetPokemonNickname(struct ScriptContext* ctx)
{
struct UnkSavStruct80* sav_ptr = ctx->unk80;
struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15);
@@ -237,7 +237,7 @@ THUMB_FUNC struct String* FUN_02040AE4(u32 msg_no, u32 heap_id)
return ret;
}
-THUMB_FUNC BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetPlayerStarterName(struct ScriptContext* ctx)
{
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
u8 idx = ScriptReadByte(ctx);
@@ -251,7 +251,7 @@ THUMB_FUNC BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetRivalStarterName(struct ScriptContext* ctx)
{
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
u8 idx = ScriptReadByte(ctx);
@@ -265,7 +265,7 @@ THUMB_FUNC BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk00DD(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetCounterpartStarterName(struct ScriptContext* ctx)
{
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
u8 idx = ScriptReadByte(ctx);
@@ -312,7 +312,7 @@ THUMB_FUNC BOOL ScrCmd_GetUndergroundItemName(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetMapName(struct ScriptContext* ctx)
{
struct String* str = String_ctor(22, 4);
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
@@ -326,7 +326,7 @@ THUMB_FUNC BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk017B(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetBerryName(struct ScriptContext* ctx)
{
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
u8 idx = ScriptReadByte(ctx);
@@ -362,7 +362,7 @@ THUMB_FUNC BOOL ScrCmd_GetFashionName(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0272(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetWhiteRockInscription(struct ScriptContext* ctx)
{
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
u8 idx = ScriptReadByte(ctx);
@@ -393,7 +393,7 @@ THUMB_FUNC BOOL ScrCmd_GetPokemonMoveName(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0232(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetRibbonName(struct ScriptContext* ctx)
{
struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15);
u8 idx = ScriptReadByte(ctx);
diff --git a/arm9/src/scrcmd_prizes.c b/arm9/src/scrcmd_prizes.c
new file mode 100644
index 00000000..9a6cde41
--- /dev/null
+++ b/arm9/src/scrcmd_prizes.c
@@ -0,0 +1,36 @@
+#include "scrcmd.h"
+#include "constants/items.h"
+
+const u16 gGameCornerPrizes[19][2] = {
+ { ITEM_SILK_SCARF, 1000 },
+ { ITEM_WIDE_LENS, 1000 },
+ { ITEM_ZOOM_LENS, 1000 },
+ { ITEM_METRONOME, 1000 },
+ { ITEM_TM90, 2000 },
+ { ITEM_TM58, 2000 },
+ { ITEM_TM75, 4000 },
+ { ITEM_TM32, 4000 },
+ { ITEM_TM44, 6000 },
+ { ITEM_TM89, 6000 },
+ { ITEM_TM10, 6000 },
+ { ITEM_TM27, 8000 },
+ { ITEM_TM21, 8000 },
+ { ITEM_TM35, 10000 },
+ { ITEM_TM24, 10000 },
+ { ITEM_TM13, 10000 },
+ { ITEM_TM29, 10000 },
+ { ITEM_TM74, 15000 },
+ { ITEM_TM68, 20000 },
+};
+
+THUMB_FUNC BOOL ScrCmd_GetPrizeItemIdAndCost(struct ScriptContext* ctx)
+{
+ u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* prize_item_id = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* prize_cost_in_coins = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *prize_item_id = gGameCornerPrizes[idx][0];
+ *prize_cost_in_coins = gGameCornerPrizes[idx][1];
+
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c
new file mode 100644
index 00000000..ec5ab7f8
--- /dev/null
+++ b/arm9/src/scrcmd_sound.c
@@ -0,0 +1,266 @@
+#include "scrcmd.h"
+
+extern void* Sav2_Chatot_get(struct SaveBlock2* sav2);
+extern u32 FUN_02005D20(void *);
+extern void FUN_02005E6C(void *);
+extern void FUN_0200433C(u32, u32, u32);
+extern u32 FUN_02005E28(void);
+extern void FUN_02005E64(void);
+extern BOOL FUN_02005CBC(void);
+extern void PlaySound(u16);
+extern u32 FUN_02004124(u16);
+extern void FUN_0204AB20(struct UnkSavStruct80 *ctx, u16);
+extern u16 FUN_0204ABA8(struct UnkSavStruct80 *ctx, u32);
+extern void FUN_0200521C(u16);
+extern void FUN_02005308(u32, u16);
+extern void FUN_02005350(u32, u32);
+extern void FUN_0200538C(u32, u16, u32);
+extern void FUN_020053CC(u16, u16);
+extern BOOL FUN_02005404(void);
+extern u16 FUN_02005410(u16);
+extern void FUN_020054C8(u16);
+extern void FUN_020054F0(u16, u32);
+extern void FUN_020047C8(u8, u8);
+extern void FUN_020040F4(u8);
+extern BOOL FUN_02005508(u16);
+extern void FUN_02005578(u16);
+extern BOOL FUN_02005670(void);
+extern void FUN_0200488C(u16, u16);
+
+
+THUMB_FUNC BOOL ScrCmd_Unk02AE(struct ScriptContext *ctx)
+{
+ u16 unk0 = ScriptReadHalfword(ctx);
+ u16 *unk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *unk1 = FUN_02005410(unk0);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx)
+{
+ FUN_0200521C(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_StopBgm(struct ScriptContext *ctx)
+{
+ u32 unk0 = FUN_02004124(ScriptReadHalfword(ctx));
+ FUN_02005350(unk0, 0);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlayDefaultBgm(struct ScriptContext *ctx)
+{
+ u16 unk0 = FUN_0204ABA8(ctx->unk80, *ctx->unk80->mapId);
+ FUN_0200521C(unk0);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0053(struct ScriptContext *ctx) //Special BGM?
+{
+ FUN_0204AB20(ctx->unk80, ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_FadeOutBgm(struct ScriptContext *ctx)
+{
+ u16 unk1 = ScriptReadHalfword(ctx);
+ u16 unk2 = ScriptReadHalfword(ctx);
+
+ FUN_020053CC(unk1, unk2);
+ SetupNativeScript(ctx, FUN_02041464);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_02041464(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+
+ if(!FUN_02005404())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_FadeInBgm(struct ScriptContext* ctx)
+{
+ u16 unk = ScriptReadHalfword(ctx);
+
+ FUN_0200538C(0x7F, unk, 0);
+ SetupNativeScript(ctx, FUN_02041464);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0056(struct ScriptContext* ctx)
+{
+
+ u8 PtrIndx0 = ScriptReadByte(ctx);
+
+ u8 PtrIndx1 = ScriptReadByte(ctx);
+
+ FUN_020047C8(PtrIndx0, PtrIndx1);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0057(struct ScriptContext* ctx)
+{
+ FUN_02005308(4, ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk0058(struct ScriptContext* ctx)
+{
+ u8 PtrIndx0 = ScriptReadByte(ctx);
+ FUN_020040F4(PtrIndx0);
+ return FALSE;
+}
+
+
+THUMB_FUNC BOOL ScrCmd_PlayFanfare(struct ScriptContext* ctx)
+{
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ FUN_020054C8(unk);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_StopFanfare(struct ScriptContext* ctx)
+{
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ FUN_020054F0(unk, 0);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlayFanfareWait(struct ScriptContext* ctx)
+{
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ ctx->data[0] = unk;
+ SetupNativeScript(ctx, FUN_02041540);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_02041540(struct ScriptContext* ctx)
+{
+ if(!FUN_02005508((u16)ctx->data[0]))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlayCry(struct ScriptContext* ctx)
+{
+ u16 unk0 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ FUN_02005578(unk0);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlayCryWait(struct ScriptContext* ctx)
+{
+ SetupNativeScript(ctx, FUN_02041598);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_02041598(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+
+ if(!FUN_02005670())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlaySound(struct ScriptContext* ctx)
+{
+ u16 bgm_id = ScriptReadHalfword(ctx);
+ PlaySound(bgm_id);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PlaySoundWait(struct ScriptContext* ctx)
+{
+ SetupNativeScript(ctx, FUN_020415CC);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_020415CC(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ if (!FUN_02005CBC())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2);
+ if (FUN_02005D20(unk) == 1)
+ {
+ *ret_ptr = 1;
+ return FALSE;
+ }
+ else
+ {
+ *ret_ptr = 0;
+ return FALSE;
+ }
+}
+
+THUMB_FUNC BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ if (FUN_02005E28() == 0)
+ {
+ *ret_ptr = 1;
+ return FALSE;
+ }
+ else
+ {
+ *ret_ptr = 0;
+ return FALSE;
+ }
+}
+
+THUMB_FUNC BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ FUN_02005E64();
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx)
+{
+ void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2);
+ FUN_02005E6C(unk);
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk005D(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ FUN_0200433C(0x3F, 0, 0);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SetVolume(struct ScriptContext* ctx)
+{
+ u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ FUN_0200488C(unk1, unk2);
+
+ return FALSE;
+}
+
diff --git a/arm9/src/scrcmd_23.c b/arm9/src/scrcmd_underground.c
index 0c9907a5..5d273c9b 100644
--- a/arm9/src/scrcmd_23.c
+++ b/arm9/src/scrcmd_underground.c
@@ -6,7 +6,7 @@ extern BOOL FUN_02026298(void*, u16);
extern void* FUN_02026CC4(struct SaveBlock2* sav2);
extern BOOL FUN_020260C4(void*, u16, u16);
-THUMB_FUNC BOOL ScrCmd_Unk0083(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GiveSecretBaseDecoration(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -19,7 +19,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0083(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0084(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_TakeSecretBaseDecoration(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -28,7 +28,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0084(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0085(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_HasSpaceForDecoration(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -41,7 +41,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0085(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0086(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetDecorationCount(struct ScriptContext* ctx) //somewhat unsure on name, was originally CheckGoods
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -50,7 +50,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0086(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0087(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GiveUndergroundTrap(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -63,7 +63,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0087(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0088(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_TakeUndergroundTrap(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -72,7 +72,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0088(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0089(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_HasSpaceForTrap(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -81,7 +81,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0089(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk008A(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetTrapCount(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -90,7 +90,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008A(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk008B(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GiveTreasure(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -101,7 +101,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008B(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk008C(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_TakeTreasure(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -110,7 +110,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008C(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk008D(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_HasSpaceForTreasure(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -119,7 +119,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008D(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk008E(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetTreasureCount(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -128,7 +128,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008E(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk008F(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GiveUndergroundSphere(struct ScriptContext* ctx)
{
struct SaveBlock2* sav2 = ctx->unk80->saveBlock2;
u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -141,7 +141,7 @@ THUMB_FUNC BOOL ScrCmd_Unk008F(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0090(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_TakeUndergroundSphere(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -150,7 +150,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0090(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0091(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_HasSpaceForSphere(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
@@ -159,7 +159,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0091(struct ScriptContext* ctx)
return FALSE;
}
-THUMB_FUNC BOOL ScrCmd_Unk0092(struct ScriptContext* ctx)
+THUMB_FUNC BOOL ScrCmd_GetSphereCount(struct ScriptContext* ctx)
{
u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
diff --git a/arm9/src/script.c b/arm9/src/script.c
index 2fa80058..3de2ee73 100644
--- a/arm9/src/script.c
+++ b/arm9/src/script.c
@@ -76,7 +76,7 @@ THUMB_FUNC u8 RunScriptCommand(struct ScriptContext *ctx)
cmdCode = ScriptReadHalfword(ctx);
if (cmdCode >= ctx->cmdCount)
{
- ErrorHandling();
+ GF_AssertFail();
ctx->mode = 0;
return FALSE;
}
diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c
index e9a55051..1242d550 100644
--- a/arm9/src/script_buffers.c
+++ b/arm9/src/script_buffers.c
@@ -12,6 +12,7 @@
#include "trainer_data.h"
#include "script_buffers.h"
#include "unk_02024E64.h"
+#include "text.h"
#pragma thumb on
@@ -19,10 +20,8 @@ extern u32 GetCityNamesMsgdataIdByCountry(u32);
extern void GetECWordIntoStringByIndex(u32 a0, struct String * a1);
extern void StringCat_HandleTrainerName(struct String * dest, const struct String * src);
extern void StrAddChar(struct String * str, u16 val);
-extern void * FUN_02006BB0(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32);
-extern BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4);
-extern void FUN_02019658(int, u8 *, u16, u16, u16, u16, u16, u16, u16, u16);
-extern void FUN_020196F4(int, u8, u16, u16, u16, u16);
+extern void * GfGfxLoader_GetCharData(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32);
+extern void * GfGfxLoader_LoadFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd);
const u16 UNK_020ECE6C[][2] = {
{ 0x0140, 0x0008 },
@@ -752,7 +751,7 @@ struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4)
struct UnkStruct_0200B870 * sp8 = AllocFromHeap(r4, sizeof(struct UnkStruct_0200B870));
if (sp8 != NULL)
{
- sp8->unk_0 = FUN_02006BB0(NARC_GRAPHIC_FONT, 4, 1, &sp8->unk_4, r4);
+ sp8->unk_0 = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 4, 1, &sp8->unk_4, r4);
int i;
u8 * ptr = sp8->unk_4->unk_14;
for (i = 0; i < sp8->unk_4->unk_10; i++)
@@ -803,24 +802,24 @@ void MessagePrinter_delete(struct UnkStruct_0200B870 * a0)
}
}
-void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, int a2, int a3, int a4)
+void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window *a2, int a3, int a4)
{
- FUN_02019658(a2, a0->unk_4->unk_14 + UNK_020ECE6C[a1][0], 0, 0, UNK_020ECE6C[a1][1], 8, (u16)a3, (u16)a4, UNK_020ECE6C[a1][1], 8);
+ BlitBitmapRectToWindow(a2, a0->unk_4->unk_14 + UNK_020ECE6C[a1][0], 0, 0, UNK_020ECE6C[a1][1], 8, (u16)a3, (u16)a4, UNK_020ECE6C[a1][1], 8);
}
-void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, int sp30, int r5, int r7)
+void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y)
{
ConvertUIntToDecimalString(string->data, value, mode, n);
for (int i = 0; string->data[i] != EOS; i++)
{
- if (string->data[i] >= 0x00A2 && string->data[i] <= 0x00AB)
+ if (string->data[i] >= CHAR_0 && string->data[i] <= CHAR_9)
{
- FUN_02019658(sp30, string->unk_4->unk_14 + (string->data[i] - 0x00A2) * 32, 0, 0, 8, 8, (u16)r5, (u16)r7, 8, 8);
+ BlitBitmapRectToWindow(window, string->unk_4->unk_14 + (string->data[i] - CHAR_0) * 32, 0, 0, 8, 8, (u16)x, (u16)y, 8, 8);
}
else
{
- FUN_020196F4(sp30, (u8)string->unk_28, (u16)r5, (u16)r7, 8, 8);
+ FillWindowPixelRect(window, (u8)string->unk_28, (u16)x, (u16)y, 8, 8);
}
- r5 += 8;
+ x += 8;
}
}
diff --git a/arm9/src/script_pokemon_util.c b/arm9/src/script_pokemon_util.c
index a3518bf4..55519ca3 100644
--- a/arm9/src/script_pokemon_util.c
+++ b/arm9/src/script_pokemon_util.c
@@ -109,7 +109,7 @@ struct Pokemon * GetFirstAliveMonInParty_CrashIfNone(struct PlayerParty * party)
if(MonNotFaintedOrEgg(mon))
return mon;
}
- ErrorHandling();
+ GF_AssertFail();
return 0;
}
diff --git a/arm9/src/sound.c b/arm9/src/sound.c
index a1e31bbd..a5228dab 100644
--- a/arm9/src/sound.c
+++ b/arm9/src/sound.c
@@ -6,12 +6,13 @@
#pragma thumb on
static struct SoundData sSoundDataBuffer;
-static u32 UNK_02107070[2];
+static u32 UNK_02107070;
+static u32 UNK_02107074;
void FUN_02003C40(void);
BOOL FUN_02003D04(void);
-void FUN_020040C8(void);
-void FUN_02004064(struct SoundData *);
+void GF_InitMic(void);
+void GF_SoundDataInit(struct SoundData *);
void FUN_02004088(struct SoundData *);
void FUN_020040A4(struct SoundData *);
void FUN_02003CE8(int);
@@ -25,20 +26,20 @@ extern void FUN_0200538C(int, int, int);
extern BOOL FUN_02005404(void);
extern void FUN_02005CFC(void);
-void InitSoundData(void * a0, struct Options * a1)
+void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options)
{
struct SoundData * sdat = GetSoundDataPointer();
- SDAT_Init();
- FUN_020040C8();
- FUN_02004064(sdat);
- sdat->unk_00090 = FUN_020C2A94(sdat->unk_00094, sizeof(sdat->unk_00094));
- SDAT_Open(&sdat->header, "data/sound/sound_data.sdat", sdat->unk_00090, 0);
- FUN_020C39CC(sdat->unk_00090);
+ NNS_SndInit();
+ GF_InitMic();
+ GF_SoundDataInit(sdat);
+ sdat->heap = NNS_SndHeapCreate(sdat->heapBuffer, sizeof(sdat->heapBuffer));
+ NNS_SndArcInit(&sdat->header, "data/sound/sound_data.sdat", sdat->heap, 0);
+ NNS_SndArcPlayerSetup(sdat->heap);
FUN_02004088(sdat);
FUN_020040A4(sdat);
- UNK_02107070[1] = 0;
- sdat->unk_BCD4C = a0;
- FUN_02004D60(a1->soundMethod);
+ UNK_02107074 = 0;
+ sdat->chatot = chatot;
+ FUN_02004D60(options->soundMethod);
}
void DoSoundUpdateFrame(void)
@@ -51,13 +52,13 @@ void DoSoundUpdateFrame(void)
FUN_02003C40();
}
FUN_02005CFC();
- FUN_020C01A0();
+ NNS_SndMain();
}
void FUN_02003C40(void)
{
struct SoundData * sdat = GetSoundDataPointer();
- switch (UNK_02107070[0])
+ switch (UNK_02107070)
{
case 1:
FUN_02003CE8(2);
@@ -92,7 +93,7 @@ void FUN_02003CE8(int a0)
{
struct SoundData * sdat = GetSoundDataPointer();
sdat->unk_BCCFC = 0;
- UNK_02107070[0] = (u32)a0;
+ UNK_02107070 = (u32)a0;
}
BOOL FUN_02003D04(void)
@@ -184,7 +185,7 @@ void * FUN_02003D38(u32 a0)
case 34:
return &sdat->unk_BCD48;
case 35:
- return &sdat->unk_BCD4C;
+ return &sdat->chatot;
case 36:
return &sdat->unk_BCD50;
case 37:
@@ -199,61 +200,61 @@ void * FUN_02003D38(u32 a0)
}
}
-int FUN_02003F3C(int * a0)
+int GF_Snd_SaveState(int * level_p)
{
struct SoundData * sdat = GetSoundDataPointer();
- int r4 = FUN_020C290C(sdat->unk_00090);
- GF_ASSERT(r4 != -1);
- if (a0 != NULL)
- *a0 = r4;
- return r4;
+ int level = NNS_SndHeapSaveState(sdat->heap);
+ GF_ASSERT(level != -1);
+ if (level_p != NULL)
+ *level_p = level;
+ return level;
}
-void FUN_02003F64(int a0)
+void GF_Snd_RestoreState(int level)
{
struct SoundData * sdat = GetSoundDataPointer();
- FUN_020C2828(sdat->unk_00090, a0);
+ NNS_SndHeapLoadState(sdat->heap, level);
}
-BOOL FUN_02003F78(u32 * a0)
+BOOL GF_Snd_LoadGroup(int groupNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return FUN_020C36A8(a0, sdat->unk_00090);
+ return NNS_SndArcLoadGroup(groupNo, sdat->heap);
}
-BOOL FUN_02003F90(u32 * a0)
+BOOL GF_Snd_LoadSeq(int seqNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return FUN_020C3674(a0, sdat->unk_00090);
+ return NNS_SndArcLoadSeq(seqNo, sdat->heap);
}
-BOOL FUN_02003FA8(u32 * a0, u32 * a1)
+BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag)
{
struct SoundData * sdat = GetSoundDataPointer();
- return FUN_020C35E0(a0, a1, sdat->unk_00090);
+ return NNS_SndArcLoadSeqEx(seqNo, loadFlag, sdat->heap);
}
-BOOL FUN_02003FC4(u32 * a0)
+BOOL GF_Snd_LoadWaveArc(int waveArcNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return FUN_020C360C(a0, sdat->unk_00090);
+ return NNS_SndArcLoadWaveArc(waveArcNo, sdat->heap);
}
-BOOL FUN_02003FDC(u32 * a0)
+BOOL GF_Snd_LoadBank(int bankNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return FUN_020C3640(a0, sdat->unk_00090);
+ return NNS_SndArcLoadBank(bankNo, sdat->heap);
}
-u32 * FUN_02003FF4(int a0)
+u32 * FUN_02003FF4(int playerNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- if (a0 >= 9)
+ if (playerNo >= (s32)NELEMS(sdat->players))
{
GF_ASSERT(0);
- a0 = 0;
+ playerNo = 0;
}
- return &sdat->unk_BBC94[a0];
+ return &sdat->players[playerNo];
}
u32 FUN_02004018(u32 a0)
@@ -282,7 +283,7 @@ u32 FUN_02004018(u32 a0)
}
}
-void FUN_02004064(struct SoundData * sdat)
+void GF_SoundDataInit(struct SoundData * sdat)
{
int i;
memset(sdat, 0, sizeof(*sdat));
@@ -295,18 +296,18 @@ void FUN_02004088(struct SoundData * sdat)
int i;
for (i = 0; i < 9; i++)
{
- FUN_020C0F80(&sdat->unk_BBC94[i]);
+ NNS_SndHandleInit(&sdat->players[i]);
}
}
void FUN_020040A4(struct SoundData * sdat)
{
- FUN_02003F3C(&sdat->unk_BCD1C[0]);
- FUN_02003F78(NULL);
- FUN_02003F3C(&sdat->unk_BCD1C[1]);
+ GF_Snd_SaveState(&sdat->unk_BCD1C[0]);
+ GF_Snd_LoadGroup(0);
+ GF_Snd_SaveState(&sdat->unk_BCD1C[1]);
}
-void FUN_020040C8(void)
+void GF_InitMic(void)
{
MIC_Init();
PM_SetAmp(1);
@@ -315,7 +316,7 @@ void FUN_020040C8(void)
void FUN_020040DC(void)
{
- FUN_020C1040(7, 0);
+ NNS_SndPlayerStopSeqByPlayerNo(7, 0);
FUN_02003FF4(7);
- FUN_020C0F68();
+ NNS_SndHandleReleaseSeq();
}
diff --git a/arm9/src/text.c b/arm9/src/text.c
index aadb84c0..36349b8b 100644
--- a/arm9/src/text.c
+++ b/arm9/src/text.c
@@ -2,27 +2,26 @@
#include "heap.h"
#include "string16.h"
#include "MI_memory.h"
+#include "filesystem.h"
+#include "script_buffers.h"
+#include "unk_0200CA44.h"
const struct FontInfo *gFonts = NULL;
u16 UNK_021C5734[0x100];
-u32 UNK_021C5714[8];
-u8 UNK_021C570C[8];
-
-extern u32 FUN_0200CA7C(void (*func)(u32, struct TextPrinter *), struct TextPrinter *printer, u32 param2);
+BOOL UNK_021C5714[8];
+u16 UNK_021C570E;
+u16 UNK_021C5710;
+u16 UNK_021C5712;
+u8 UNK_021C570C;
extern struct TextPrinter *FUN_0201B6C8(void);
-extern void FUN_0200CAB4(u32 param0);
extern void FUN_0201C1A8(struct TextPrinter *printer);
-extern void CopyWindowToVram(u32 windowId);
extern u32 FontFunc(u8 fontId, struct TextPrinter *printer);
-extern void *FUN_02006BB0(u32 param0, u32 param1, u32 param2, struct TextPrinter **param3, u32 param4);
-
-extern u32 FUN_0201AB0C(u32 windowId);
-extern void FUN_02019658(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8, u32 param9);
+extern void * GfGfxLoader_GetCharData(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32);
THUMB_FUNC void SetFontsPointer(const struct FontInfo *fonts)
@@ -96,12 +95,12 @@ THUMB_FUNC void FUN_0201BD7C(u32 param0)
FUN_0201BCFC(param0);
}
-THUMB_FUNC u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16))
+THUMB_FUNC u16 AddTextPrinterParameterized(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16))
{
struct TextPrinterTemplate printerTemplate;
- printerTemplate.windowId = windowId;
- printerTemplate.currentChar = str;
+ printerTemplate.window = window;
+ printerTemplate.currentChar.wrapped = str;
printerTemplate.fontId = fontId;
printerTemplate.x = (u8)x;
printerTemplate.y = (u8)y;
@@ -119,12 +118,12 @@ THUMB_FUNC u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *s
return AddTextPrinter(&printerTemplate, speed, callback);
}
-THUMB_FUNC u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16))
+THUMB_FUNC u16 AddTextPrinterParameterized2(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16))
{
struct TextPrinterTemplate printerTemplate;
- printerTemplate.windowId = windowId;
- printerTemplate.currentChar = str;
+ printerTemplate.window = window;
+ printerTemplate.currentChar.wrapped = str;
printerTemplate.fontId = fontId;
printerTemplate.x = (u8)x;
printerTemplate.y = (u8)y;
@@ -142,13 +141,13 @@ THUMB_FUNC u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *
return AddTextPrinter(&printerTemplate, speed, callback);
}
-THUMB_FUNC u16 AddTextPrinterParameterized3(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16))
+THUMB_FUNC u16 AddTextPrinterParameterized3(struct Window * window, u32 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16))
{
struct TextPrinterTemplate printerTemplate;
- printerTemplate.windowId = windowId;
- printerTemplate.currentChar = str;
- printerTemplate.fontId = fontId;
+ printerTemplate.window = window;
+ printerTemplate.currentChar.wrapped = str;
+ printerTemplate.fontId = (u8)fontId;
printerTemplate.x = (u8)x;
printerTemplate.y = (u8)y;
printerTemplate.currentX = (u8)x;
@@ -185,13 +184,13 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s
}
printer->printerTemplate = *printerTemplate;
- printer->printerTemplate.currentChar = String_c_str((struct String *)printer->printerTemplate.currentChar); //TODO clean up
+ printer->printerTemplate.currentChar.raw = String_c_str(printer->printerTemplate.currentChar.wrapped);
printer->callback = callback;
- UNK_021C570C[0] = 0;
+ UNK_021C570C = 0;
FUN_0201C1A8(printer);
if (speed != 0xff && speed != 0)
{
- printer->textSpeedBottom += 0xff;
+ printer->textSpeedBottom--;
printer->textSpeedTop = 1;
printer->minLetterSpacing = FUN_0201BCC8(RunTextPrinter, printer, 1);
return printer->minLetterSpacing;
@@ -211,7 +210,7 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s
}
if (speed != 0xff)
{
- CopyWindowToVram(printer->printerTemplate.windowId); // CopyWindowToVram?
+ CopyWindowToVram(printer->printerTemplate.window);
}
FUN_0201C238(printer);
FreeToHeap((void *)printer);
@@ -222,7 +221,7 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s
THUMB_FUNC void RunTextPrinter(u32 param0, struct TextPrinter *printer)
{
#pragma unused(param0)
- if (UNK_021C570C[0] == 0)
+ if (UNK_021C570C == 0)
{
if (printer->Unk29 == 0)
{
@@ -232,7 +231,7 @@ THUMB_FUNC void RunTextPrinter(u32 param0, struct TextPrinter *printer)
switch (temp)
{
case 0:
- CopyWindowToVram(printer->printerTemplate.windowId);
+ CopyWindowToVram(printer->printerTemplate.window);
//fallthrough
case 3:
if (printer->callback == NULL)
@@ -268,156 +267,39 @@ THUMB_FUNC u32 RenderFont(struct TextPrinter *printer)
}
}
-#ifdef NONMATCHING
THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor)
{
- u32 fg12, bg12, shadow12;
- u32 temp;
-
- u16 *current = UNK_021C570C;
-
- bg12 = bgColor << 12;
- fg12 = fgColor << 12;
- shadow12 = shadowColor << 12;
-
- temp = (bgColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (bgColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (fgColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (shadowColor << 4) | bgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (bgColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (fgColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (shadowColor << 4) | fgColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (bgColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (fgColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (bgColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (fgColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
-
- temp = (shadowColor << 8) | (shadowColor << 4) | shadowColor;
- *(current++) = (bg12) | temp;
- *(current++) = (fg12) | temp;
- *(current++) = (shadow12) | temp;
+ s32 r5 = 0;
+ u32 sp20[4];
+ s32 i; // sp14
+ s32 j; // sp10
+ s32 k; // spC
+ s32 l; // r3
+
+ sp20[0] = 0;
+ sp20[1] = fgColor;
+ sp20[2] = shadowColor;
+ sp20[3] = bgColor;
+
+ // FIXME: Need these to be accessed by a pointer to UNK_021C570C
+ UNK_021C5712 = bgColor;
+ UNK_021C570E = fgColor;
+ UNK_021C5710 = shadowColor;
+
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ for (k = 0; k < 4; k++)
+ {
+ for (l = 0; l < 4; l++)
+ {
+ UNK_021C5734[r5++] = (u16)((sp20[l] << 12) | (sp20[k] << 8) | (sp20[j] << 4) | (sp20[i] << 0));
+ }
+ }
+ }
+ }
}
-#else
-GLOBAL_ASM("asm/nonmatchings/GenerateFontHalfRowLookupTable.s")
-#endif
THUMB_FUNC void DecompressGlyphTile(const u16 *src, u16 *dst)
{
@@ -444,12 +326,12 @@ THUMB_FUNC void FUN_0201C1A8(struct TextPrinter *printer)
printer->Unk2C = NULL;
}
-THUMB_FUNC void *FUN_0201C1B0(void)
+THUMB_FUNC u16 *FUN_0201C1B0(void)
{
- void *res = AllocFromHeap(0, sizeof(struct TextPrinter) * 32);
- struct TextPrinter *var;
- void *tmp = FUN_02006BB0(14, 5, 0, &var, 0);
- MIi_CpuCopy32((void *)var->printerTemplate.Unk20, res, sizeof(struct TextPrinter) * 32); //todo Unk20 can't be right here
+ void *res = AllocFromHeap(0, 32 * 24 * sizeof(u16));
+ struct UnkStruct_0200B870_sub * var;
+ void *tmp = GfGfxLoader_GetCharData(NARC_GRAPHIC_FONT, 5, 0, &var, 0);
+ MI_CpuCopy32(var->unk_14, res, 32 * 24 * sizeof(u16));
FreeToHeap(tmp);
return res;
}
@@ -457,14 +339,14 @@ THUMB_FUNC void *FUN_0201C1B0(void)
THUMB_FUNC void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3)
{
#pragma unused (param1, param2)
- u32 windowId = printer->printerTemplate.windowId;
+ struct Window * window = printer->printerTemplate.window;
if (printer->Unk2C == NULL)
{
printer->Unk2C = FUN_0201C1B0();
}
- u32 r6 = (u32)printer->Unk2C + param3 * (sizeof(struct TextPrinter) * 8);
- u32 r2 = ((FUN_0201AB0C(windowId) - 3) << 0x13) >> 0x10;
- FUN_02019658(windowId, r6, 0, 0, 24, 32, r2, 0, 24, 32);
+ u16 * r6 = printer->Unk2C + param3 * 24 * 8;
+ u16 r2 = (u16)((GetWindowWidth(window) - 3) * 8);
+ BlitBitmapRectToWindow(window, r6, 0, 0, 24, 32, r2, 0, 24, 32);
}
THUMB_FUNC void FUN_0201C238(struct TextPrinter *printer)
diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c
index 470a2fe3..dcbad024 100644
--- a/arm9/src/text_02054590.c
+++ b/arm9/src/text_02054590.c
@@ -1,25 +1,27 @@
#include "text_02054590.h"
#include "text.h"
+#include "unk_02016B94.h"
extern void FUN_0201BD5C(void);
extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2);
extern void FUN_02002EEC(u32 param0, u32 param1, u32 param2);
-extern void FUN_02019064(u32 param0, u32 param1, u32 param2, u8 param3, u32 param4, u8 param5, u32 param6, u32 param7, u32 param8);
-
-extern void FUN_0200CD68(u32 param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
-extern u32 FUN_0201AB08(u32 *param0);
-extern void FUN_0200D0BC(u32 *param0, u32 param1, u32 param2, u32 param3);
-
-extern void FUN_02019620(u32 *param0, u32 param1);
+extern void FUN_0200CD68(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+extern void FUN_0200D0BC(struct Window *param0, u32 param1, u32 param2, u32 param3);
extern void FUN_02002B60(u8 param0);
extern void FUN_02002B7C(u32 param0);
extern void FUN_02002BB8(u32 param0);
-extern void FUN_0200D300(u32 param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5, u32 param6);
-extern void FUN_0200D6F8(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4);
-
+extern void FUN_0200D300(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u32 param2,
+ u32 param3,
+ u8 param4,
+ u32 param5,
+ u32 param6);
+extern void FUN_0200D6F8(struct Window *param0, u32 param1, u32 param2, u32 param3, u8 param4);
THUMB_FUNC void FUN_02054590(u32 param0, u32 param1)
{
@@ -31,7 +33,7 @@ THUMB_FUNC void FUN_02054590(u32 param0, u32 param1)
FUN_02002EEC(param0, 384, 4);
}
-THUMB_FUNC void FUN_020545B8(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2)
{
if (param2 == 3)
{
@@ -43,40 +45,41 @@ THUMB_FUNC void FUN_020545B8(u32 param0, u32 param1, u32 param2)
}
}
-THUMB_FUNC void FUN_02054608(u32 *param0, struct Options *options)
+THUMB_FUNC void FUN_02054608(struct Window *param0, struct Options *options)
{
- FUN_0200CD68(*param0, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4);
+ FUN_0200CD68(param0->unk00, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4);
FUN_0205464C(param0);
FUN_0200D0BC(param0, 0, 994, 10);
}
-THUMB_FUNC void FUN_0205464C(u32 *param0)
+THUMB_FUNC void FUN_0205464C(struct Window *param0)
{
- FUN_02019620(param0, 15);
+ FillWindowPixelBuffer(param0, 15);
}
-THUMB_FUNC u16 FUN_02054658(u8 windowId, const u16 *str, struct Options *options, u8 param3)
+THUMB_FUNC u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3)
{
FUN_02002B60(param3);
FUN_02002B7C(0);
FUN_02002BB8(0);
- return AddTextPrinterParameterized(windowId, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL);
+ return AddTextPrinterParameterized(window, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL);
}
-THUMB_FUNC u16 DrawFieldMessage(u8 windowId, const u16 *str, u8 fontId, u32 speed, u8 a4, u32 a5)
+THUMB_FUNC u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, u32 a5)
{
FUN_02002B60(a4);
FUN_02002B7C(a5);
FUN_02002BB8(0);
- return AddTextPrinterParameterized(windowId, fontId, str, 0, 0, speed, NULL);
+ return AddTextPrinterParameterized(window, fontId, str, 0, 0, speed, NULL);
}
-THUMB_FUNC u8 FUN_020546C8(u32 param0) //bool8?
+THUMB_FUNC u8 FUN_020546C8(u32 param0) // bool8?
{
return !FUN_0201BD70(param0);
}
-THUMB_FUNC void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3)
+THUMB_FUNC void FUN_020546E0(
+ struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3)
{
u32 r4 = 0;
u32 r5 = 0;
@@ -100,9 +103,9 @@ THUMB_FUNC void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3)
}
}
-THUMB_FUNC void FUN_02054744(u32 *param0, u32 param1, u32 param2)
+THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u32 param2)
{
- FUN_0200D300(*param0, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4);
- FUN_02019620(param0, 15);
+ FUN_0200D300(param0->unk00, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4);
+ FillWindowPixelBuffer(param0, 15);
FUN_0200D6F8(param0, 0, 0x399, 9, (u8)param1);
}
diff --git a/arm9/src/unk_0200BA78.c b/arm9/src/unk_0200BA78.c
new file mode 100644
index 00000000..457001ef
--- /dev/null
+++ b/arm9/src/unk_0200BA78.c
@@ -0,0 +1,36 @@
+#include "global.h"
+#include "unk_0200BA78.h"
+#include "script_buffers.h"
+
+THUMB_FUNC void FUN_0200BA78(struct UnkStruct_0200B870 *param0,
+ int param1,
+ u32 value,
+ u32 n,
+ enum PrintingMode mode,
+ struct Window *window,
+ int x,
+ int y)
+{
+ FUN_0200B9A8(param0, param1, window, x, y);
+ FUN_0200B9EC(param0, value, n, mode, window, x + 16, y);
+}
+
+THUMB_FUNC void FUN_0200BAAC(
+ struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest)
+{
+ u8 st0 = (u8)((param0->unk_28 << 4) | param0->unk_28);
+ ConvertUIntToDecimalString(param0->data, value, mode, n);
+
+ for (int i = 0; param0->data[i] != 0xffff; i++)
+ {
+ if (param0->data[i] >= 0xa2 && param0->data[i] <= 0xab)
+ {
+ MI_CpuCopy32(
+ &param0->unk_4->unk_14[(param0->data[i] - 0xa2) << 5], dest + i * 0x20, 0x20);
+ }
+ else
+ {
+ MI_CpuFill8(dest + i * 0x20, st0, 0x20);
+ }
+ }
+}
diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c
new file mode 100644
index 00000000..45850885
--- /dev/null
+++ b/arm9/src/unk_0200BB14.c
@@ -0,0 +1,1323 @@
+#include "global.h"
+#include "unk_0200BB14.h"
+#include "game_init.h"
+#include "heap.h"
+
+extern void FUN_0201D060(u32 *param0, u32 param1, u32 param2);
+extern void FUN_0201E00C(u32 param0, u32 param1);
+extern void NNS_G2dInitOamManagerModule();
+extern void FUN_02009EAC(u32 param0,
+ u32 param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8);
+extern u32 FUN_0201C328(u32 param0, u32 param1);
+extern void FUN_0201D168();
+extern void FUN_0201E0BC();
+extern u32 FUN_02008C9C(u32 param0, void *param1, u32 param2);
+extern void FUN_0201FFC8(u32 param0);
+extern void FUN_0201FDEC(u32 param0);
+extern void FUN_02009F80();
+extern void FUN_0201C348();
+extern void FUN_0201FD58(u32 param0);
+extern void FUN_02008C80(u32 param0);
+extern u32 FUN_02009660(u32 *param0, s32 param1);
+extern void FUN_020096B4(u32 param0);
+extern void FUN_02009C30(u32 *param0);
+extern void FUN_02009E28(u32 *param0);
+extern void FUN_02009448(u32 *param0);
+extern void FUN_02008E2C(u32 param0);
+extern void FUN_0201C350(u32 param0);
+extern void FUN_0201D12C();
+extern void FUN_0201E08C();
+extern void FUN_02009FA0();
+extern u32 FUN_0200965C(s32 param0);
+extern void FUN_02009668(void *param0, u32 param1, u32 param2);
+extern u32 FUN_020096CC(u32 param0);
+extern u32 FUN_02008DEC(u32 param0, s32 param1, u32 param2);
+extern u32 *FUN_02009424(u32 param0, u32 param1);
+extern u32 FUN_020093A8(u32 param0, u32 param1, u32 *param2, u32 param3);
+extern void FUN_02009A90(u32 *param0);
+extern void FUN_02009D34(u32 *param0);
+extern u32 FUN_02008BE0(void *param0,
+ u32 param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7);
+extern u32 FUN_0201FE94(struct UnkStruct_0200BB14_4 *param0);
+extern void FUN_02020130(u32 param0, u32 param1);
+extern void FUN_02020248(u32 param0, u32 param1);
+extern u32 FUN_0200945C(u32 param0, s32 param1);
+extern u32 FUN_02008F34(
+ u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
+extern void FUN_02009B04(u32 param0);
+extern u32 FUN_02008FEC(
+ u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6, u32 param7);
+extern u32 FUN_02009D68(u32 param0);
+extern u32 FUN_02009E88(u32 param0, u32 param1);
+extern void FUN_02003108(u32 param0, u32 param1, u16 param2, u32 param3);
+extern void FUN_02008AA4(struct UnkStruct_0200BB14_sub *param0,
+ s32 param1,
+ s32 param2,
+ s32 param3,
+ s32 param4,
+ s32 param5,
+ s32 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10,
+ u32 param11,
+ u32 param12,
+ u32 param13,
+ u32 param14);
+extern u8 FUN_020202A0(u32 param0);
+extern u32 FUN_020094F0(u32 param0, u32 param1);
+extern u32 FUN_02009E54(u32 param0, u32 param1);
+extern void FUN_02009CDC(u32 param0);
+extern u32 FUN_020090AC(
+ u32 param0, u32 param1, u32 param2, u32 param3, s32 param4, u32 param5, u32 param6);
+extern u32 FUN_02009530(u32 param0);
+extern void FUN_02009490(u32 param0, u32 param1);
+extern void FUN_0201D324(u32 param0);
+extern void FUN_0201E1C8(u32 param0);
+extern void FUN_020201E4(u32 param0, u32 param1);
+extern u32 FUN_020201DC(u32 param0);
+extern void FUN_020200BC(u32 param0, u32 param1);
+extern void FUN_020200D8(u32 param0, u32 param1);
+extern u32 FUN_02020388(u32 param0);
+extern void FUN_02020208(u32 param0);
+extern void FUN_0202022C(u32 param0);
+extern void FUN_020200A0(u32 param0, u32 param1);
+extern u8 FUN_02020128(u32 param0);
+extern void FUN_020202A8(u32 param0, u32 param1);
+extern u8 FUN_02020300(u32 param0);
+extern void FUN_02020238(u32 param0, u8 param1);
+extern u8 FUN_02020240(u32 param0);
+extern void FUN_02020310(u32 param0, u32 param1);
+extern u16 FUN_0202032C(u32 param0);
+extern u32 FUN_02020380(u32 param0);
+extern void FUN_02020044(u32 param0, u32 *param1);
+extern u32 *FUN_0202011C(u32 param0, u16 *param1, u16 *param2);
+extern void FUN_020200EC(u32 param0, u32 param1);
+extern u32 *FUN_02020120(u32 param0);
+extern void FUN_02020064(u32 param0, s32 *param1);
+extern void FUN_02020088(u32 param0, u16 param1);
+extern u16 FUN_02020124(u32 param0);
+extern void FUN_02020100(u32 param0, u32 param1);
+extern void FUN_02020054(u32 param0, u32 *param1);
+extern void FUN_02020358(u32 param0, u32 param1);
+extern void FUN_02020398(u32 param0, u32 param1);
+extern void FUN_02009AC4(u32 param0);
+extern void FUN_02009B78(u32 param0);
+extern void FUN_020090FC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
+extern void FUN_02009BE8(u32 param0);
+extern void FUN_02009168(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5);
+extern void FUN_02009DE0(u32 param0);
+
+THUMB_FUNC struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id)
+{
+ struct UnkStruct_0200BB14_1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0200BB14_1));
+ if (ptr == NULL)
+ {
+ return NULL;
+ }
+
+ ptr->unk000 = heap_id;
+ ptr->unk004 = 0;
+ ptr->unk008 = 1;
+
+ return ptr;
+}
+
+THUMB_FUNC struct UnkStruct_0200BB14_2 *FUN_0200BB34(struct UnkStruct_0200BB14_1 *param0)
+{
+ GF_ASSERT(param0 != NULL);
+
+ struct UnkStruct_0200BB14_2 *ptr =
+ AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_2));
+ if (ptr == NULL)
+ {
+ return NULL;
+ }
+
+ param0->unk004++;
+
+ for (s32 i = 0; i < 6; i++)
+ {
+ ptr->unk0c[i] = 0;
+ }
+
+ return ptr;
+}
+
+THUMB_FUNC u32 FUN_0200BB68(u32 param0)
+{
+ return param0 + 0x10;
+}
+
+THUMB_FUNC BOOL FUN_0200BB6C(
+ struct UnkStruct_0200BB14_1 *param0, u32 *param1, u32 *param2, u32 param3)
+{
+ GF_ASSERT(param0 != NULL);
+
+ if (param0 == NULL)
+ {
+ return FALSE;
+ }
+
+ u32 st14[4] = { param2[0], param2[1], param2[2], param0->unk000 };
+
+ FUN_0201D060(st14, param2[3], param2[4]);
+ FUN_0201E00C(param3, param0->unk000);
+ NNS_G2dInitOamManagerModule();
+
+ if (param0->unk008 == 1)
+ {
+ FUN_02009EAC(param1[0],
+ param1[1],
+ param1[2],
+ param1[3],
+ param1[4],
+ param1[5],
+ param1[6],
+ param1[7],
+ param0->unk000);
+ }
+
+ param0->unk00c = FUN_0201C328(0x20, param0->unk000);
+ FUN_0201D168();
+ FUN_0201E0BC();
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_0200BBF0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 param2)
+{
+ if (param0 == NULL || param1 == NULL)
+ {
+ return FALSE;
+ }
+
+ param1->unk00 = FUN_02008C9C(param2, param0->unk010, param0->unk000);
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_0200BC14(u32 param0)
+{
+ FUN_0201FFC8(param0);
+}
+
+THUMB_FUNC void FUN_0200BC1C(u32 *param0)
+{
+ GF_ASSERT(param0 != NULL);
+
+ FUN_0201FDEC(*param0);
+}
+
+THUMB_FUNC void FUN_0200BC30()
+{
+ FUN_02009F80();
+}
+
+THUMB_FUNC void FUN_0200BC38()
+{
+ FUN_0201C348();
+}
+
+THUMB_FUNC void FUN_0200BC40(struct UnkStruct_0200BB14_2 *param0)
+{
+ FUN_0201FD58(param0->unk00);
+}
+
+THUMB_FUNC void FUN_0200BC4C(struct UnkStruct_0200BB14_2 *param0)
+{
+ if (param0->unk04 != 0)
+ {
+ FUN_02008C80(param0->unk04);
+ }
+}
+
+THUMB_FUNC void FUN_0200BC5C(struct UnkStruct_0200BB14_2 *param0)
+{
+ for (s32 i = 0; i < param0->unk54; i++)
+ {
+ FUN_020096B4(FUN_02009660(param0->unk08, i));
+ }
+
+ FreeToHeap(param0->unk08);
+ FUN_02009C30(param0->unk24[0]);
+ FUN_02009E28(param0->unk24[1]);
+
+ for (s32 i = 0; i < param0->unk54; i++)
+ {
+ FUN_02009448(param0->unk24[i]);
+ FUN_02008E2C(param0->unk0c[i]);
+ }
+}
+
+THUMB_FUNC void FUN_0200BCB0(u32 *param0)
+{
+ FUN_0201C350(param0[3]);
+ FUN_0201D12C();
+ FUN_0201E08C();
+
+ if (param0[2] == 1)
+ {
+ FUN_02009FA0();
+ }
+}
+
+THUMB_FUNC void FUN_0200BCD0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1)
+{
+ param0->unk004--;
+ FreeToHeap(param1);
+}
+
+THUMB_FUNC void FUN_0200BCE0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1)
+{
+ FUN_0200BC40(param1);
+ FUN_0200BC4C(param1);
+ FUN_0200BC5C(param1);
+ FUN_0200BCD0(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200BD04(u32 *param0)
+{
+ GF_ASSERT(param0[1] == 0);
+ FUN_0200BCB0(param0);
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC BOOL FUN_0200BD20(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, const char **param2)
+{
+ s32 st14 = 6;
+ const char **st10 = param2;
+
+ if (param0 == NULL || param1 == NULL)
+ {
+ return FALSE;
+ }
+
+ if (param2[4] == 0)
+ {
+ st14 = 4;
+ }
+
+ param1->unk54 = st14;
+ u32 r2 = FUN_0200965C(st14);
+ param1->unk08 = AllocFromHeap(param0->unk000, r2 * st14);
+
+ for (s32 i = 0; i < st14; i++)
+ {
+ u32 st18 = FUN_02009660(param1->unk08, i);
+ void *st1c = FUN_020161A4(param0->unk000, st10[i]);
+
+ FUN_02009668(st1c, st18, param0->unk000);
+ FreeToHeap(st1c);
+ }
+
+ for (s32 i = 0; i < st14; i++)
+ {
+ param1->unk0c[i] =
+ FUN_02008DEC(FUN_020096CC(FUN_02009660(param1->unk08, i)), i, param0->unk000);
+ }
+
+ for (s32 i = 0; i < st14; i++)
+ {
+ u32 st20 = FUN_02009660(param1->unk08, i);
+ param1->unk24[i] = FUN_02009424(FUN_020096CC(st20), param0->unk000);
+ param1->unk3c[i] = FUN_020093A8(param1->unk0c[i], st20, param1->unk24[i], param0->unk000);
+ }
+
+ FUN_02009A90(param1->unk24[0]);
+ FUN_02009D34(param1->unk24[1]);
+ void *r6 = FUN_020161A4(param0->unk000, st10[6]);
+ param1->unk04 = FUN_02008BE0(r6,
+ param0->unk000,
+ param1->unk0c[0],
+ param1->unk0c[1],
+ param1->unk0c[2],
+ param1->unk0c[3],
+ param1->unk0c[4],
+ param1->unk0c[5]);
+ FreeToHeap(r6);
+
+ return TRUE;
+}
+
+THUMB_FUNC u32 FUN_0200BE38(u32 *param0, u32 *param1, struct UnkStruct_0200BB14_3 *param2)
+{
+ return FUN_0200BE74(param0,
+ param1,
+ param2->unk00,
+ param2->unk04,
+ param2->unk06,
+ param2->unk04,
+ param2->unk0a,
+ param2->unk0c,
+ param2->unk10,
+ param2->unk14,
+ param2->unk18,
+ param2->unk1c,
+ param2->unk20,
+ param2->unk24);
+}
+
+THUMB_FUNC u32 FUN_0200BE74(u32 *param0,
+ u32 *param1,
+ u32 param2,
+ s16 param3,
+ s16 param4,
+ s16 param5,
+ u16 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10,
+ u32 param11,
+ u32 param12,
+ u32 param13)
+{
+#pragma unused(param10)
+#pragma unused(param11)
+#pragma unused(param12)
+#pragma unused(param13)
+
+ struct UnkStruct_0200BB14_4 st0;
+ st0.unk00 = param1[0];
+ st0.unk04 = &(*(struct UnkStruct_0200BB14_sub **)(param1[1]))[param2];
+
+ f32 r0;
+ if (param3 > 0)
+ {
+ r0 = ((f32)(param3 * 0x1000) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(param3 * 0x1000) - (f32)0.5);
+ }
+ st0.unk08 = (s32)r0;
+
+ if (param4 > 0)
+ {
+ r0 = ((f32)(param4 * 0x1000) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(param4 * 0x1000) - (f32)0.5);
+ }
+ st0.unk0c = (s32)r0;
+
+ if (param5 > 0)
+ {
+ r0 = ((f32)(param5 * 0x1000) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(param5 * 0x1000) - (f32)0.5);
+ }
+ st0.unk10 = (s32)r0;
+
+ if (param9 == 2)
+ {
+ st0.unk0c += 0xC0000;
+ }
+
+ st0.unk14 = 0x1000;
+ st0.unk18 = 0x1000;
+ st0.unk1c = 0x1000;
+ st0.unk20 = 0;
+ st0.unk24 = param7;
+ st0.unk28 = param9;
+ st0.unk2c = param0[0];
+
+ u32 r4 = FUN_0201FE94(&st0);
+ if (r4 != 0)
+ {
+ FUN_02020130(r4, param6);
+
+ FUN_02020248(r4, param8);
+ }
+
+ return r4;
+}
+
+THUMB_FUNC BOOL FUN_0200BF60(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2)
+{
+ struct UnkStruct_0200BB14_1 *st0 = param0;
+ s32 i;
+ s32 st4 = 6;
+
+ if (st0 == NULL || param1 == NULL)
+ {
+ return FALSE;
+ }
+
+ if (param2[4] == 0 || param2[5] == 0)
+ {
+ st4 = 4;
+ }
+
+ param1->unk54 = st4;
+
+ for (i = 0; i < st4; i++)
+ {
+ param1->unk0c[i] = FUN_02008DEC(param2[i], i, st0->unk000);
+ }
+
+ for (i = 0; i < st4; i++)
+ {
+ if (param2[i] != 0)
+ {
+ param1->unk24[i] = FUN_02009424(param2[i], st0->unk000);
+ param1->unk3c[i] = 0;
+
+ for (s32 j = 0; j < (s32)param1->unk24[i][1]; j++)
+ {
+ ((u32 *)param1->unk24[i][0])[j] = 0;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[0], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ FUN_02009B04(r5);
+ FUN_0200C474(param1->unk24[0], r5);
+ return TRUE;
+ }
+
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ s32 param7)
+{
+ if (FUN_0200945C(param1->unk0c[1], param7) == 0)
+ {
+ return -1;
+ }
+
+ u32 r5 =
+ FUN_02008FEC(param1->unk0c[1], param2, param3, param4, param7, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ GF_ASSERT(FUN_02009D68(r5) == 1);
+ FUN_0200C474(param1->unk24[1], r5);
+ return (s8)FUN_02009E88(r5, param6);
+ }
+
+ GF_AssertFail();
+ return -1;
+}
+
+THUMB_FUNC u8 FUN_0200C0DC(u32 param0,
+ u32 param1,
+ u32 *param2,
+ struct UnkStruct_0200BB14_2 *param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ s32 param9)
+{
+ s32 r4 = FUN_0200C06C(param2, param3, param4, param5, param6, param7, param8, param9);
+ if (r4 != -1)
+ {
+ FUN_02003108(param0, param1, (u16)(r4 << 4), param7 << 5);
+ }
+
+ return (u8)r4;
+}
+
+THUMB_FUNC u32 FUN_0200C124(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5)
+{
+ return FUN_0200C404(param0, param1, param2, param3, param4, 2, param5);
+}
+
+THUMB_FUNC u32 FUN_0200C13C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5)
+{
+ return FUN_0200C404(param0, param1, param2, param3, param4, 3, param5);
+}
+
+THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2)
+{
+ struct UnkStruct_0200BB14_4 st44;
+ s32 st2c[6];
+
+ struct UnkStruct_0200BB14_5 *ptr =
+ AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_5));
+ if (ptr == NULL)
+ {
+ return NULL;
+ }
+
+ ptr->unk08 = AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_6));
+ if (ptr->unk08 == 0)
+ {
+ return NULL;
+ }
+
+ ptr->unk08->unk0 = AllocFromHeap(param0->unk000, sizeof(struct UnkStruct_0200BB14_sub));
+ ptr->unk04 = ptr->unk08->unk0;
+ if (ptr->unk08->unk0 == NULL)
+ {
+ if (ptr->unk08 != NULL)
+ {
+ FreeToHeap(ptr->unk08);
+ }
+
+ return NULL;
+ }
+
+ for (s32 i = 0; i < 6; i++)
+ {
+ st2c[i] = (s32)param2[5 + i];
+ }
+
+ if (param1->unk0c[4] == 0 || param1->unk0c[5] == 0)
+ {
+ st2c[4] = -1;
+ st2c[5] = -1;
+ }
+ else
+ {
+ if (st2c[4] != -1 && FUN_0200945C(param1->unk0c[4], st2c[4]) == 0)
+ {
+ st2c[4] = -1;
+ }
+
+ if (st2c[5] != -1 && FUN_0200945C(param1->unk0c[5], st2c[5]) == 0)
+ {
+ st2c[5] = -1;
+ }
+ }
+
+ FUN_02008AA4(ptr->unk04,
+ st2c[0],
+ st2c[1],
+ st2c[2],
+ st2c[3],
+ st2c[4],
+ st2c[5],
+ param2[12],
+ param2[11],
+ param1->unk0c[0],
+ param1->unk0c[1],
+ param1->unk0c[2],
+ param1->unk0c[3],
+ param1->unk0c[4],
+ param1->unk0c[5]);
+
+ st44.unk00 = param1->unk00;
+ st44.unk04 = ptr->unk04;
+ f32 r0;
+ if (((s16 *)param2)[0] > 0)
+ {
+ r0 = ((f32)(((s16 *)param2)[0] << 0xc) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(((s16 *)param2)[0] << 0xc) - (f32)0.5);
+ }
+ st44.unk08 = (s32)r0;
+
+ if (((s16 *)param2)[1] > 0)
+ {
+ r0 = ((f32)(((s16 *)param2)[1] << 0xc) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(((s16 *)param2)[1] << 0xc) - (f32)0.5);
+ }
+ st44.unk0c = (s32)r0;
+
+ if (((s16 *)param2)[2] > 0)
+ {
+ r0 = ((f32)(((s16 *)param2)[2] << 0xc) + (f32)0.5);
+ }
+ else
+ {
+ r0 = ((f32)(((s16 *)param2)[2] << 0xc) - (f32)0.5);
+ }
+ st44.unk10 = (s32)r0;
+
+ if (param2[4] == 2)
+ {
+ st44.unk0c += 0xC0000;
+ }
+
+ st44.unk14 = 0x1000;
+ st44.unk18 = 0x1000;
+ st44.unk1c = 0x1000;
+ st44.unk20 = 0;
+ st44.unk24 = param2[2];
+ st44.unk28 = param2[4];
+ st44.unk2c = param0->unk000;
+
+ ptr->unk00 = FUN_0201FE94(&st44);
+ ptr->unk0c = param2[12];
+
+ if (ptr->unk00 != 0)
+ {
+ u8 r6 = FUN_020202A0(ptr->unk00);
+
+ FUN_02020130(ptr->unk00, ((u16 *)param2)[3]);
+ FUN_02020248(ptr->unk00, r6 + param2[3]);
+ }
+ else
+ {
+ GF_AssertFail();
+ }
+
+ return ptr;
+}
+
+THUMB_FUNC u32 FUN_0200C334(u32 *param0, u32 param1)
+{
+ return FUN_02009E54(FUN_020094F0(param0[4], param1), 0);
+}
+
+THUMB_FUNC u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2)
+{
+ return FUN_02009E88(FUN_020094F0(param0[4], param1), param2);
+}
+
+THUMB_FUNC u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C4F4(param0->unk0c[0], param0->unk24[0], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C548(param0->unk0c[1], param0->unk24[1], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C4A8(param0->unk0c[2], param0->unk24[2], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1)
+{
+ return FUN_0200C4A8(param0->unk0c[3], param0->unk24[3], param1);
+}
+
+THUMB_FUNC void FUN_0200C398(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1)
+{
+ FUN_0200BC40(param1);
+ FUN_02009C30(param1->unk24[0]);
+ FUN_02009E28(param1->unk24[1]);
+
+ for (s32 i = 0; i < param1->unk54; i++)
+ {
+ FUN_02009448(param1->unk24[i]);
+ FUN_02008E2C(param1->unk0c[i]);
+ }
+
+ FUN_0200BCD0(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C3DC(u32 *param0)
+{
+ if (param0[3] != 0)
+ {
+ FUN_02009CDC(*(u32 *)param0[1]);
+ }
+
+ FUN_0201FFC8(param0[0]);
+ FUN_02008C80(param0[2]);
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[param5], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_020090AC(param1->unk0c[param5], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ u32 r4 = FUN_0200C474(param1->unk24[param5], r5);
+ GF_ASSERT(r4 == 1);
+ return r4;
+ }
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
+{
+ for (s32 i = 0; i < (s32)param0[1]; i++)
+ {
+ if (((u32 *)param0[0])[i] == 0)
+ {
+ ((u32 *)param0[0])[i] = param1;
+ param0[2]++;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2)
+{
+ for (s32 i = 0; i < (s32)param1[1]; i++)
+ {
+ if (((u32 *)param1[0])[i] != 0)
+ {
+ u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ if (r0 == param2)
+ {
+
+ FUN_02009490(param0, ((u32 *)param1[0])[i]);
+ ((u32 *)param1[0])[i] = 0;
+ param1[2]--;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2)
+{
+ for (s32 i = 0; i < (s32)param1[1]; i++)
+ {
+ if (((u32 *)param1[0])[i] != 0)
+ {
+ u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ if (r0 == param2)
+ {
+ FUN_0201D324(param2);
+
+ FUN_02009490(param0, ((u32 *)param1[0])[i]);
+ ((u32 *)param1[0])[i] = 0;
+ param1[2]--;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2)
+{
+ for (s32 i = 0; i < (s32)param1[1]; i++)
+ {
+ if (((u32 *)param1[0])[i] != 0)
+ {
+ u32 r0 = FUN_02009530(((u32 *)param1[0])[i]);
+ if (r0 == param2)
+ {
+ FUN_0201E1C8(param2);
+
+ FUN_02009490(param0, ((u32 *)param1[0])[i]);
+ ((u32 *)param1[0])[i] = 0;
+ param1[2]--;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0200C59C(u32 param0)
+{
+ FUN_020201E4(param0, 0x1000);
+}
+
+THUMB_FUNC void FUN_0200C5A8(u32 *param0)
+{
+ FUN_0200C59C(param0[0]);
+}
+
+THUMB_FUNC void FUN_0200C5B4(u32 *param0, u32 param1)
+{
+ FUN_020201E4(param0[0], param1);
+}
+
+THUMB_FUNC void FUN_0200C5C0(u32 *param0, u32 param1)
+{
+ FUN_02020130(param0[0], param1);
+}
+
+THUMB_FUNC u32 FUN_0200C5CC(u32 *param0)
+{
+ return FUN_020201DC(param0[0]);
+}
+
+THUMB_FUNC void FUN_0200C5D8(u32 param0, u32 param1)
+{
+ FUN_020200BC(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C5E0(u32 *param0, u32 param1)
+{
+ FUN_0200C5D8(param0[0], param1);
+}
+
+THUMB_FUNC void FUN_0200C5EC(u32 param0, u32 param1)
+{
+ FUN_020200D8(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C5F4(u32 *param0, u32 param1)
+{
+ FUN_0200C5EC(*param0, param1);
+}
+
+THUMB_FUNC u32 FUN_0200C600(u32 param0)
+{
+ return FUN_02020388(param0);
+}
+
+THUMB_FUNC u32 FUN_0200C608(u32 *param0)
+{
+ return FUN_0200C600(*param0);
+}
+
+THUMB_FUNC void FUN_0200C614(u32 param0)
+{
+ FUN_02020208(param0);
+}
+
+THUMB_FUNC void FUN_0200C61C(u32 *param0)
+{
+ FUN_0200C614(*param0);
+}
+
+THUMB_FUNC void FUN_0200C628(u32 param0)
+{
+ FUN_0202022C(param0);
+}
+
+THUMB_FUNC void FUN_0200C630(u32 *param0)
+{
+ FUN_0200C628(*param0);
+}
+
+THUMB_FUNC void FUN_0200C63C(u32 param0, u32 param1)
+{
+ FUN_020200A0(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C644(u32 *param0, u32 param1)
+{
+ FUN_0200C63C(*param0, param1);
+}
+
+THUMB_FUNC u8 FUN_0200C650(u32 param0)
+{
+ return FUN_02020128(param0);
+}
+
+THUMB_FUNC u8 FUN_0200C658(u32 *param0)
+{
+ return FUN_0200C650(*param0);
+}
+
+THUMB_FUNC void FUN_0200C664(u32 param0, u32 param1)
+{
+ FUN_02020248(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C66C(u32 *param0, u32 param1)
+{
+ FUN_0200C664(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C678(u32 param0, u32 param1)
+{
+ FUN_020202A8(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C680(u32 *param0, u32 param1)
+{
+ FUN_0200C678(*param0, param1);
+}
+
+THUMB_FUNC u8 FUN_0200C68C(u32 *param0)
+{
+ return FUN_02020300(*param0);
+}
+
+THUMB_FUNC void FUN_0200C698(u32 param0, u32 param1)
+{
+ FUN_02020238(param0, (u8)param1);
+}
+
+THUMB_FUNC u8 FUN_0200C6A4(u32 *param0)
+{
+ return FUN_02020240(*param0);
+}
+
+THUMB_FUNC void FUN_0200C6B0(u32 *param0, u32 param1)
+{
+ FUN_0200C698(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C6BC(u32 param0, u32 param1)
+{
+ FUN_02020310(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C6C4(u32 *param0, u32 param1)
+{
+ FUN_0200C6BC(*param0, param1);
+}
+
+THUMB_FUNC u16 FUN_0200C6D0(u32 param0)
+{
+ return FUN_0202032C(param0);
+}
+
+THUMB_FUNC u16 FUN_0200C6D8(u32 *param0)
+{
+ return FUN_0200C6D0(*param0);
+}
+
+THUMB_FUNC void FUN_0200C6E4(u32 param0, u32 param1, u32 param2)
+{
+ u32 st0[3];
+ st0[0] = param1 << 12;
+ st0[1] = param2 << 12;
+ if (FUN_02020380(param0) == 2)
+ {
+ st0[1] += 0xc0000;
+ }
+ st0[2] = 0;
+
+ FUN_02020044(param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C714(u32 *param0, u32 param1, u32 param2)
+{
+ FUN_0200C6E4(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3)
+{
+ u32 st0[3];
+
+ st0[0] = param1 << 12;
+ st0[1] = param2 << 12;
+ if (FUN_02020380(param0) == 2)
+ {
+ st0[1] += param3;
+ }
+ st0[2] = 0;
+
+ FUN_02020044(param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3)
+{
+ FUN_0200C720(*param0, param1, param2, param3);
+}
+
+THUMB_FUNC void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2)
+{
+ s32 *r4 = FUN_0202011C(param0, param1, param2);
+
+ param1[0] = r4[0] / 0x1000;
+
+ if (FUN_02020380(param0) == 2)
+ {
+ s32 r1 = r4[1] - 0xc0000;
+
+ param2[0] = r1 / 0x1000;
+
+ return;
+ }
+
+ param2[0] = r4[1] / 0x1000;
+}
+
+THUMB_FUNC void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2)
+{
+ FUN_0200C75C(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3)
+{
+ s32 *r4 = FUN_0202011C(param0, param1, param2);
+
+ param1[0] = r4[0] / 0x1000;
+
+ if (FUN_02020380(param0) == 2)
+ {
+ s32 r1 = r4[1] - param3;
+
+ param2[0] = r1 / 0x1000;
+
+ return;
+ }
+
+ param2[0] = r4[1] / 0x1000;
+}
+
+THUMB_FUNC void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3)
+{
+ FUN_0200C7AC(*param0, param1, param2, param3);
+}
+
+THUMB_FUNC void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2)
+{
+ u32 st0[3];
+
+ u32 *r0 = FUN_0202011C(param0, param1, param2);
+
+ st0[0] = r0[0] + ((u32)param1 << 0xc);
+ st0[1] = r0[1] + ((u32)param2 << 0xc);
+ st0[2] = r0[2];
+
+ FUN_02020044(param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2)
+{
+ FUN_0200C7FC(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C838(u32 param0, u32 param1)
+{
+ FUN_020200EC(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C840(u32 *param0, u32 param1)
+{
+ FUN_0200C838(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C84C(u32 param0, f32 param1, f32 param2)
+{
+ s32 *r4 = FUN_02020120(param0);
+
+ r4[0] = (s32)(param1 * 0x1000);
+ r4[1] = (s32)(param2 * 0x1000);
+
+ FUN_02020064(param0, r4);
+}
+
+THUMB_FUNC void FUN_0200C884(u32 *param0, f32 param1, f32 param2)
+{
+ FUN_0200C84C(*param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_0200C890(u32 param0, u16 param1)
+{
+ FUN_02020088(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C898(u32 *param0, u16 param1)
+{
+ FUN_0200C890(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8A4(u32 param0, u32 param1)
+{
+ u16 r0 = FUN_02020124(param0);
+ r0 += param1;
+ FUN_02020088(param0, r0);
+}
+
+THUMB_FUNC void FUN_0200C8BC(u32 *param0, u32 param1)
+{
+ FUN_0200C8A4(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8C8(u32 param0, u32 param1)
+{
+ FUN_02020100(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8D0(u32 *param0, u32 param1)
+{
+ FUN_0200C8C8(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C8DC(u32 *param0, u32 param1, u32 param2)
+{
+ u32 st0[3];
+ st0[0] = param1 << 12;
+ st0[1] = param2 << 12;
+ st0[2] = 0;
+
+ FUN_02020054(*param0, st0);
+}
+
+THUMB_FUNC void FUN_0200C8F8(u32 *param0, u32 param1)
+{
+ FUN_02020358(*param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C904(u32 param0, u32 param1)
+{
+ FUN_02020398(param0, param1);
+}
+
+THUMB_FUNC void FUN_0200C90C(u32 *param0, u32 param1)
+{
+ FUN_0200C904(*param0, param1);
+}
+
+THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[0], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ FUN_02009AC4(r5);
+ FUN_0200C474(param1->unk24[0], r5);
+
+ return TRUE;
+ }
+
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6)
+{
+ if (FUN_0200945C(param1->unk0c[0], param6) == 0)
+ {
+ return FALSE;
+ }
+
+ u32 r5 = FUN_02008F34(param1->unk0c[0], param2, param3, param4, param6, param5, param0[0]);
+ if (r5 != 0)
+ {
+ FUN_02009B78(r5);
+ FUN_0200C474(param1->unk24[0], r5);
+
+ return TRUE;
+ }
+
+ GF_AssertFail();
+ if (r5 != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0200C9D8(
+ u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+{
+ u32 r6 = FUN_020094F0(param1[3], param5);
+ FUN_020090FC(param1[3], r6, param2, param3, param4, param0[0]);
+
+ FUN_02009BE8(r6);
+}
+
+THUMB_FUNC void FUN_0200CA0C(
+ u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5)
+{
+ u32 r6 = FUN_020094F0(param1[4], param5);
+ FUN_02009168(param1[4], r6, param2, param3, param4, param0[0]);
+
+ FUN_02009DE0(r6);
+}
+
+THUMB_FUNC u32 FUN_0200CA40(u32 *param0)
+{
+ return *param0;
+}
diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c
index fd703cd3..6ffed8be 100644
--- a/arm9/src/unk_0200CA44.c
+++ b/arm9/src/unk_0200CA44.c
@@ -2,25 +2,25 @@
#include "main.h"
#include "unk_0200CA44.h"
-extern BOOL FUN_0201B60C(void *, void (*)(u32, void *), void *, void *);
+extern BOOL FUN_0201B60C(void *, void (*)(u32, struct TextPrinter *), struct TextPrinter *, u32);
extern void FUN_0201B6A0(s32);
-THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk18, r0, r1, r2);
}
-THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk1C, r0, r1, r2);
}
-THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk24, r0, r1, r2);
}
-THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2)
+THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk20, r0, r1, r2);
}
diff --git a/arm9/src/unk_02015E30.c b/arm9/src/unk_02015E30.c
index 8be466fb..2f7b5bb5 100644
--- a/arm9/src/unk_02015E30.c
+++ b/arm9/src/unk_02015E30.c
@@ -1,35 +1,37 @@
#include "unk_02015E30.h"
-struct UnkStruct_02015E30 UNK_021C4898;
+u64 UNK_021C48B0;
+u64 UNK_021C48A8;
+u64 UNK_021C48A0;
+struct IGT * UNK_021C489C;
+u32 UNK_021C4898;
THUMB_FUNC void FUN_02015E30()
{
- UNK_021C4898.unk00 = 0;
+ UNK_021C4898 = 0;
}
THUMB_FUNC void FUN_02015E3C(struct IGT *igt)
{
- struct UnkStruct_02015E30 *unk1 = &UNK_021C4898;
- UNK_021C4898.unk00 = 1;
- UNK_021C4898.unk10 = 0;
- UNK_021C4898.unk14 = 0;
- UNK_021C4898.unk08 = 0;
- UNK_021C4898.unk04 = igt;
+ UNK_021C4898 = 1;
+ UNK_021C48A8 = 0;
+ UNK_021C48A0 = 0;
+ UNK_021C489C = igt;
- UNK_021C4898.unk18 = GetTimer3Count();
+ UNK_021C48B0 = GetTimer3Count();
}
THUMB_FUNC void FUN_02015E60()
{
- if (UNK_021C4898.unk00 != 0)
+ if (UNK_021C4898 != 0)
{
- u64 res = Timer3CountToSeconds(GetTimer3Count() - UNK_021C4898.unk18);
+ u64 res = Timer3CountToSeconds(GetTimer3Count() - UNK_021C48B0);
- if (UNK_021C4898.unk08 < res)
+ if (UNK_021C48A0 < res)
{
- AddIGTSeconds(UNK_021C4898.unk04, (u32)(res - UNK_021C4898.unk08));
- UNK_021C4898.unk08 = res;
+ AddIGTSeconds(UNK_021C489C, (u32)(res - UNK_021C48A0));
+ UNK_021C48A0 = res;
}
}
}
diff --git a/arm9/src/unk_02016B94.c b/arm9/src/unk_02016B94.c
new file mode 100644
index 00000000..6a9dd194
--- /dev/null
+++ b/arm9/src/unk_02016B94.c
@@ -0,0 +1,8110 @@
+#include "global.h"
+#include "unk_02016B94.h"
+#include "GX_layers.h"
+#include "game_init.h"
+#include "gx.h"
+#include "heap.h"
+
+extern void NNS_G2dGetUnpackedBGCharacterData(void *param0, u32 *param1);
+extern void NNS_G2dGetUnpackedPaletteData(void *param0, u32 *param1);
+
+const u8 UNK_020EDB30[8] = {
+ 0x10,
+ 0x20,
+ 0x20,
+ 0x20,
+ 0x20,
+ 0x20,
+ 0x00,
+ 0x00,
+};
+
+void (*const UNK_020EDB5C[])(struct Window *) = {
+ FUN_020194C8,
+ FUN_0201951C,
+ FUN_020194C8,
+};
+
+void (*const UNK_020EDB50[])(struct Window *) = {
+ FUN_020195A8,
+ FUN_020195E4,
+ FUN_020195A8,
+};
+
+void (*const UNK_020EDB44[])(struct Window *) = {
+ FUN_020195D0,
+ FUN_0201960C,
+ FUN_020195D0,
+};
+
+void (*const UNK_020EDB38[])(struct Window *) = {
+ FUN_020192D4,
+ FUN_02019358,
+ FUN_020192D4,
+};
+
+void (*const UNK_020EDB68[])(struct Window *) = {
+ FUN_0201949C,
+ FUN_020194E0,
+ FUN_0201949C,
+};
+
+void (*const UNK_020EDB74[])(struct Window *) = {
+ FUN_020193B4,
+ FUN_02019444,
+ FUN_020193B4,
+};
+
+THUMB_FUNC struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id)
+{
+ struct UnkStruct_02016B94_2 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02016B94_2));
+ memset(ptr, 0, sizeof(struct UnkStruct_02016B94_2));
+ ptr->unk00 = heap_id;
+ ptr->unk04 = 0;
+ ptr->unk06 = 0;
+
+ return ptr;
+}
+
+THUMB_FUNC u32 FUN_02016BB8(u32 *param0)
+{
+ return *param0;
+}
+
+THUMB_FUNC void FUN_02016BBC(const struct GraphicsModes *modes)
+{
+ GX_SetGraphicsMode(modes->mode1, modes->mode2, modes->mode4);
+ GXS_SetGraphicsMode(modes->mode3);
+ reg_GX_DISPCNT &= 0xC7FFFFFF;
+ reg_GX_DISPCNT &= 0xF8FFFFFF;
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+}
+
+THUMB_FUNC void FUN_02016BF4(u32 *param0, u32 param1)
+{
+ if (param1 == 0)
+ {
+ GX_SetGraphicsMode(param0[0], param0[1], param0[3]);
+ GX_DisableEngineALayers();
+ }
+ else
+ {
+ GXS_SetGraphicsMode(param0[2]);
+ GX_DisableEngineBLayers();
+ }
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC void FUN_02016C18(
+ struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3)
+{
+ u8 res = FUN_020177DC(param2->unk10, param3);
+ switch (param1)
+ {
+ case 0:
+ GX_EngineAToggleLayers(1, GX_LAYER_TOGGLE_ON);
+
+ reg_G2_BG0CNT = (reg_G2_BG0CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2);
+ reg_G2_BG0CNT = (reg_G2_BG0CNT & ~3) | (param2->unk15);
+
+ if (param2->unk18 != 0)
+ {
+ reg_G2_BG0CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2_BG0CNT &= ~0x40;
+ }
+
+ break;
+
+ case 1:
+ GX_EngineAToggleLayers(2, GX_LAYER_TOGGLE_ON);
+ reg_G2_BG1CNT = (reg_G2_BG1CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2);
+ reg_G2_BG1CNT = (reg_G2_BG1CNT & ~3) | (param2->unk15);
+
+ if (param2->unk18 != 0)
+ {
+ reg_G2_BG1CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2_BG1CNT &= ~0x40;
+ }
+
+ break;
+
+ case 2:
+ GX_EngineAToggleLayers(4, GX_LAYER_TOGGLE_ON);
+ switch (param3)
+ {
+ default:
+ case 0:
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk13 << 2);
+ break;
+ case 1:
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ case 2:
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ }
+
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & ~3) | (param2->unk15);
+
+ if (param2->unk18 != 0)
+ {
+ reg_G2_BG2CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2_BG2CNT &= ~0x40;
+ }
+
+ break;
+
+ case 3:
+ GX_EngineAToggleLayers(8, GX_LAYER_TOGGLE_ON);
+
+ switch (param3)
+ {
+ default:
+ case 0:
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk13 << 2);
+ break;
+ case 1:
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ case 2:
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ }
+
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & ~3) | (param2->unk15);
+ if (param2->unk18 != 0)
+ {
+ reg_G2_BG3CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2_BG3CNT &= ~0x40;
+ }
+ break;
+
+ case 4:
+ GX_EngineBToggleLayers(1, GX_LAYER_TOGGLE_ON);
+
+ reg_G2S_DB_BG0CNT = (reg_G2S_DB_BG0CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2);
+
+ reg_G2S_DB_BG0CNT = (reg_G2S_DB_BG0CNT & ~3) | (param2->unk15);
+
+ if (param2->unk18 != 0)
+ {
+ reg_G2S_DB_BG0CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2S_DB_BG0CNT &= ~0x40;
+ }
+
+ break;
+
+ case 5:
+ GX_EngineBToggleLayers(2, GX_LAYER_TOGGLE_ON);
+
+ reg_G2S_DB_BG1CNT = (reg_G2S_DB_BG1CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2);
+
+ reg_G2S_DB_BG1CNT = (reg_G2S_DB_BG1CNT & ~3) | (param2->unk15);
+
+ if (param2->unk18 != 0)
+ {
+ reg_G2S_DB_BG1CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2S_DB_BG1CNT &= ~0x40;
+ }
+
+ break;
+
+ case 6:
+ GX_EngineBToggleLayers(4, GX_LAYER_TOGGLE_ON);
+
+ switch (param3)
+ {
+ default:
+ case 0:
+ reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk13 << 2);
+ break;
+ case 1:
+ reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ case 2:
+ reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ }
+
+ reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & ~3) | (param2->unk15);
+
+ if (param2->unk18 != 0)
+ {
+ reg_G2S_DB_BG2CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2S_DB_BG2CNT &= ~0x40;
+ }
+
+ break;
+ case 7:
+ GX_EngineBToggleLayers(8, GX_LAYER_TOGGLE_ON);
+ switch (param3)
+ {
+ default:
+ case 0:
+ reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk11 << 7) | (param2->unk13 << 2);
+ break;
+ case 1:
+ reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ case 2:
+ reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) |
+ (param2->unk16 << 13) | (param2->unk13 << 2);
+ break;
+ }
+
+ reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & ~3) | (param2->unk15);
+ if (param2->unk18 != 0)
+ {
+ reg_G2S_DB_BG3CNT |= 0x40;
+ }
+ else
+ {
+ reg_G2S_DB_BG3CNT &= ~0x40;
+ }
+ break;
+ }
+
+ param0->unk08[param1].unk20 = 0;
+ param0->unk08[param1].unk24 = 0x1000;
+ param0->unk08[param1].unk28 = 0x1000;
+ param0->unk08[param1].unk2c = 0;
+ param0->unk08[param1].unk30 = 0;
+
+ if (param2->unk08 != 0)
+ {
+ param0->unk08[param1].unk08 = AllocFromHeap(param0->unk00, param2->unk08);
+
+ MI_CpuClear16(param0->unk08[param1].unk08, param2->unk08);
+
+ param0->unk08[param1].unk0c = param2->unk08;
+ param0->unk08[param1].unk10 = param2->unk0c;
+ }
+ else
+ {
+ param0->unk08[param1].unk08 = 0;
+ param0->unk08[param1].unk0c = 0;
+ param0->unk08[param1].unk10 = 0;
+ }
+
+ param0->unk08[param1].unk1d = param2->unk10;
+ param0->unk08[param1].unk1c = param3;
+ param0->unk08[param1].unk1e = param2->unk11;
+
+ if (param3 == 0 && param2->unk11 == 0)
+ {
+ param0->unk08[param1].unk1f = 0x20;
+ }
+ else
+ {
+ param0->unk08[param1].unk1f = 0x40;
+ }
+
+ FUN_020179E0(param0, param1, 0, param2->unk00);
+ FUN_020179E0(param0, param1, 3, param2->unk04);
+}
+#else
+THUMB_FUNC asm void FUN_02016C18(
+ struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3)
+{
+ // clang-format off
+ push {r3-r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x4]
+ str r3, [sp, #0x8]
+ add r4, r2, #0x0
+ str r0, [sp, #0x0]
+ ldrb r0, [r4, #0x10]
+ ldr r1, [sp, #0x8]
+ bl FUN_020177DC
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x7
+ bls _02016C36
+ b _0201705A
+_02016C36:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02016C42:
+ // jump table (using 16-bit offset)
+ // .short _02016C52 - _02016C42 - 2; case 0
+ // .short _02016CAA - _02016C42 - 2; case 1
+ // .short _02016D02 - _02016C42 - 2; case 2
+ // .short _02016DA4 - _02016C42 - 2; case 3
+ // .short _02016E46 - _02016C42 - 2; case 4
+ // .short _02016E9E - _02016C42 - 2; case 5
+ // .short _02016EF6 - _02016C42 - 2; case 6
+ // .short _02016F98 - _02016C42 - 2; case 7
+
+ lsl r6, r1, #0
+ lsl r6, r4, #1
+ lsl r6, r7, #2
+ lsl r0, r4, #5
+ lsl r2, r0, #8
+ lsl r2, r3, #9
+ lsl r2, r6, #10
+ lsl r4, r2, #13
+_02016C52:
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl GX_EngineAToggleLayers
+ ldrb r3, [r4, #0x14]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x13]
+ lsl r6, r3, #0xd
+ lsl r0, r0, #0x7
+ lsl r3, r2, #0x2
+ str r0, [sp, #0xc]
+ ldr r2, =0x04000008
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r1, r0
+ ldr r0, [sp, #0xc]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016CA0
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016CA0:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016CAA:
+ mov r0, #0x2
+ mov r1, #0x1
+ bl GX_EngineAToggleLayers
+ ldrb r3, [r4, #0x14]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x13]
+ lsl r6, r3, #0xd
+ lsl r0, r0, #0x7
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x10]
+ ldr r2, =0x0400000A
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r1, r0
+ ldr r0, [sp, #0x10]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016CF8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016CF8:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016D02:
+ mov r0, #0x4
+ mov r1, #0x1
+ bl GX_EngineAToggleLayers
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016D18
+ cmp r0, #0x1
+ beq _02016D3A
+ cmp r0, #0x2
+ beq _02016D5C
+_02016D18:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400000C
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016D7C
+_02016D3A:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, =0x0400000C
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016D7C
+_02016D5C:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400000C
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02016D7C:
+ ldr r0, =0x0400000C
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02016D9A
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02016D9A:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ b _0201705A
+_02016DA4:
+ mov r0, #0x8
+ mov r1, #0x1
+ bl GX_EngineAToggleLayers
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016DBA
+ cmp r0, #0x1
+ beq _02016DDC
+ cmp r0, #0x2
+ beq _02016DFE
+_02016DBA:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400000E
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016E1E
+_02016DDC:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, =0x0400000E
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016E1E
+_02016DFE:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400000E
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02016E1E:
+ ldr r0, =0x0400000E
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02016E3C
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02016E3C:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ b _0201705A
+_02016E46:
+ mov r0, #0x1
+ add r1, r0, #0x0
+ bl GX_EngineBToggleLayers
+ ldrb r3, [r4, #0x14]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ ldrb r2, [r4, #0x13]
+ lsl r6, r3, #0xd
+ lsl r0, r0, #0x7
+ lsl r3, r2, #0x2
+ str r0, [sp, #0x14]
+ ldr r2, =0x04001008
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r1, r0
+ ldr r0, [sp, #0x14]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016E94
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016E94:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016E9E:
+ mov r0, #0x2
+ mov r1, #0x1
+ bl GX_EngineBToggleLayers
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrb r3, [r4, #0x14]
+ lsl r0, r0, #0x7
+ mov r12, r0
+ ldr r2, =0x0400100A
+ lsl r7, r1, #0x8
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x43
+ lsl r3, r3, #0xd
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ mov r1, r12
+ orr r0, r1
+ orr r0, r7
+ orr r0, r6
+ orr r0, r3
+ strh r0, [r2, #0x0]
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x3
+ bic r1, r0
+ ldrb r0, [r4, #0x15]
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ ldr r0, [r4, #0x18]
+ cmp r0, #0x0
+ beq _02016EEC
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _0201705A
+_02016EEC:
+ ldrh r1, [r2, #0x0]
+ mov r0, #0x40
+ bic r1, r0
+ strh r1, [r2, #0x0]
+ b _0201705A
+_02016EF6:
+ mov r0, #0x4
+ mov r1, #0x1
+ bl GX_EngineBToggleLayers
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016F0C
+ cmp r0, #0x1
+ beq _02016F2E
+ cmp r0, #0x2
+ beq _02016F50
+_02016F0C:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400100C
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016F70
+_02016F2E:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, =0x0400100C
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02016F70
+_02016F50:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400100C
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02016F70:
+ ldr r0, =0x0400100C
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02016F8E
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02016F8E:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+ b _0201705A
+_02016F98:
+ mov r0, #0x8
+ mov r1, #0x1
+ bl GX_EngineBToggleLayers
+ ldr r0, [sp, #0x8]
+ cmp r0, #0x0
+ beq _02016FAE
+ cmp r0, #0x1
+ beq _02016FF2
+ cmp r0, #0x2
+ beq _02017014
+_02016FAE:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400100E
+ b _02016FD4
+_02016FD4:
+ ldrb r2, [r4, #0x13]
+ lsl r3, r1, #0x8
+ ldrb r0, [r4, #0x11]
+ lsl r6, r2, #0x2
+ ldrh r1, [r7, #0x0]
+ lsl r2, r0, #0x7
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02017034
+_02016FF2:
+ ldrb r2, [r4, #0x13]
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x16]
+ lsl r3, r2, #0x2
+ ldr r7, =0x0400100E
+ lsl r2, r1, #0x8
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+ b _02017034
+_02017014:
+ ldrb r1, [r4, #0x12]
+ ldr r7, =0x0400100E
+ ldrb r0, [r4, #0x16]
+ lsl r3, r1, #0x8
+ ldrb r2, [r4, #0x13]
+ lsl r6, r0, #0xd
+ ldrh r1, [r7, #0x0]
+ mov r0, #0x43
+ lsl r2, r2, #0x2
+ and r0, r1
+ lsl r1, r5, #0xe
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ orr r0, r6
+ strh r0, [r7, #0x0]
+_02017034:
+ ldr r0, =0x0400100E
+ mov r1, #0x3
+ ldrh r2, [r0, #0x0]
+ bic r2, r1
+ ldrb r1, [r4, #0x15]
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ ldr r1, [r4, #0x18]
+ cmp r1, #0x0
+ beq _02017052
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ orr r1, r2
+ strh r1, [r0, #0x0]
+ b _0201705A
+_02017052:
+ ldrh r2, [r0, #0x0]
+ mov r1, #0x40
+ bic r2, r1
+ strh r2, [r0, #0x0]
+_0201705A:
+ ldr r0, [sp, #0x4]
+ mov r1, #0x2c
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x0]
+ mul r5, r1
+ add r2, r0, r5
+ mov r3, #0x0
+ mov r0, #0x1
+ strh r3, [r2, #0x20]
+ lsl r0, r0, #0xc
+ str r0, [r2, #0x24]
+ str r0, [r2, #0x28]
+ str r3, [r2, #0x2c]
+ str r3, [r2, #0x30]
+ ldr r1, [r4, #0x8]
+ cmp r1, #0x0
+ beq _020170A2
+ ldr r0, [sp, #0x0]
+ ldr r6, [sp, #0x0]
+ ldr r0, [r0, #0x0]
+ add r6, #0x8
+ bl AllocFromHeap
+ str r0, [r6, r5]
+ ldr r1, [r6, r5]
+ ldr r2, [r4, #0x8]
+ mov r0, #0x0
+ bl MIi_CpuClear16
+ ldr r0, [sp, #0x0]
+ ldr r2, [r4, #0x8]
+ add r1, r0, r5
+ str r2, [r1, #0xc]
+ ldr r0, [r4, #0xc]
+ str r0, [r1, #0x10]
+ b _020170A8
+_020170A2:
+ str r3, [r2, #0x8]
+ str r3, [r2, #0xc]
+ str r3, [r2, #0x10]
+_020170A8:
+ ldr r0, [sp, #0x0]
+ ldrb r1, [r4, #0x10]
+ add r0, r0, r5
+ strb r1, [r0, #0x1d]
+ ldr r1, [sp, #0x8]
+ strb r1, [r0, #0x1c]
+ ldrb r1, [r4, #0x11]
+ strb r1, [r0, #0x1e]
+ ldr r1, [sp, #0x8]
+ cmp r1, #0x0
+ bne _020170CA
+ ldrb r1, [r4, #0x11]
+ cmp r1, #0x0
+ bne _020170CA
+ mov r1, #0x20
+ strb r1, [r0, #0x1f]
+ b _020170D2
+_020170CA:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x40
+ add r0, r0, r5
+ strb r1, [r0, #0x1f]
+_020170D2:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r3, [r4, #0x0]
+ mov r2, #0x0
+ bl FUN_020179E0
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ ldr r3, [r4, #0x4]
+ mov r2, #0x3
+ bl FUN_020179E0
+ add sp, #0x18
+ pop {r3-r7, pc}
+ // clang-format on
+}
+#endif
+
+#ifdef NONMATCHING
+THUMB_FUNC void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3)
+{
+ if (param2 == 0)
+ {
+ param0->unk08[param1].unk1e = param3;
+ }
+
+ switch (param1)
+ {
+ case 0:
+ u16 bg0cnt = reg_G2_BG0CNT;
+ if (param2 == 1)
+ {
+ bg0cnt = bg0cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg0cnt = bg0cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2_BG0CNT = (reg_G2_BG0CNT & 0x43) | ((u32)(bg0cnt << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 | ((u32)(bg0cnt << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg0cnt << 0x1a) >> 0x1c) << 2 |
+ ((u32)(bg0cnt << 0x12) >> 0x1f) << 0xd;
+
+ break;
+ case 1:
+ u16 bg1cnt = reg_G2_BG1CNT;
+ if (param2 == 1)
+ {
+ bg1cnt = bg1cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg1cnt = bg1cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2_BG1CNT = (reg_G2_BG1CNT & 0x43) | (((u32)bg1cnt << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 | ((u32)(bg1cnt << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg1cnt << 0x1a) >> 0x1c) << 2 |
+ ((u32)(bg1cnt << 0x12) >> 0x1f) << 0xd;
+
+ break;
+ case 2:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ u16 bg2cnt_0 = reg_G2_BG2CNT;
+ if (param2 == 1)
+ {
+ bg2cnt_0 = bg2cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg2cnt_0 = bg2cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_0 << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 |
+ ((u32)(bg2cnt_0 << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg2cnt_0 << 0x1a) >> 0x1c) << 2;
+
+ break;
+ case 1:
+ u16 bg2cnt_1 = reg_G2_BG2CNT;
+ if (param2 == 1)
+ {
+ bg2cnt_1 = bg2cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg2cnt_1 = bg2cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_1 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(bg2cnt_1 << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg2cnt_1 << 0x1a) >> 0x1c) << 2 |
+ ((u32)(bg2cnt_1 << 0x12) >> 0x1f) << 0xd;
+ break;
+ case 2:
+ u16 bg2cnt_2 = reg_G2_BG2CNT;
+ if (param2 == 1)
+ {
+ bg2cnt_2 = bg2cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg2cnt_2 = bg2cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a);
+ }
+
+ reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_2 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(bg2cnt_2 << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg2cnt_2 << 0x1a) >> 0x1d) << 2 |
+ ((u32)(bg2cnt_2 << 0x12) >> 0x1f) << 0xd;
+ break;
+ }
+ break;
+ case 3:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ u16 bg3cnt_0 = reg_G2_BG3CNT;
+ if (param2 == 1)
+ {
+ bg3cnt_0 = bg3cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg3cnt_0 = bg3cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_0 << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 |
+ ((u32)(bg3cnt_0 << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg3cnt_0 << 0x1a) >> 0x1c) << 2;
+
+ break;
+ case 1:
+ u16 bg3cnt_1 = reg_G2_BG3CNT;
+ if (param2 == 1)
+ {
+ bg3cnt_1 = bg3cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg3cnt_1 = bg3cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_1 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(bg3cnt_1 << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg3cnt_1 << 0x1a) >> 0x1c) << 2 |
+ ((u32)(bg3cnt_1 << 0x12) >> 0x1f) << 0xd;
+ break;
+ case 2:
+ u16 bg3cnt_2 = reg_G2_BG3CNT;
+ if (param2 == 1)
+ {
+ bg3cnt_2 = bg3cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ bg3cnt_2 = bg3cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a);
+ }
+
+ reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_2 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(bg3cnt_2 << 0x13) >> 0x1b) << 8 |
+ ((u32)(bg3cnt_2 << 0x1a) >> 0x1d) << 2 |
+ ((u32)(bg3cnt_2 << 0x12) >> 0x1f) << 0xd;
+ break;
+ }
+ break;
+ case 4:
+ u16 db_bg0cnt = reg_G2S_DB_BG0CNT;
+ if (param2 == 1)
+ {
+ db_bg0cnt = db_bg0cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg0cnt = db_bg0cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG0CNT =
+ (reg_G2S_DB_BG0CNT & 0x43) | ((u32)(db_bg0cnt << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 | ((u32)(db_bg0cnt << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg0cnt << 0x1a) >> 0x1c) << 2 | ((u32)(db_bg0cnt << 0x12) >> 0x1f) << 0xd;
+
+ break;
+ case 5:
+ u16 db_bg1cnt = reg_G2S_DB_BG1CNT;
+ if (param2 == 1)
+ {
+ db_bg1cnt = db_bg1cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg1cnt = db_bg1cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG1CNT =
+ (reg_G2S_DB_BG1CNT & 0x43) | ((u32)(db_bg1cnt << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 | ((u32)(db_bg1cnt << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg1cnt << 0x1a) >> 0x1c) << 2 | ((u32)(db_bg1cnt << 0x12) >> 0x1f) << 0xd;
+
+ break;
+ case 6:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ u16 db_bg2cnt_0 = reg_G2S_DB_BG2CNT;
+ if (param2 == 1)
+ {
+ db_bg2cnt_0 = db_bg2cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg2cnt_0 = db_bg2cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG2CNT =
+ (reg_G2S_DB_BG2CNT & 0x43) | ((u32)(db_bg2cnt_0 << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 | ((u32)(db_bg2cnt_0 << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg2cnt_0 << 0x1a) >> 0x1c) << 2;
+
+ break;
+ case 1:
+ u16 db_bg2cnt_1 = reg_G2S_DB_BG2CNT;
+ if (param2 == 1)
+ {
+ db_bg2cnt_1 = db_bg2cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg2cnt_1 = db_bg2cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) |
+ ((u32)(db_bg2cnt_1 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(db_bg2cnt_1 << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg2cnt_1 << 0x1a) >> 0x1c) << 2 |
+ ((u32)(db_bg2cnt_1 << 0x12) >> 0x1f) << 0xd;
+ break;
+ case 2:
+ u16 db_bg2cnt_2 = reg_G2S_DB_BG2CNT;
+ if (param2 == 1)
+ {
+ db_bg2cnt_2 = db_bg2cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg2cnt_2 = db_bg2cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) |
+ ((u32)(db_bg2cnt_2 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(db_bg2cnt_2 << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg2cnt_2 << 0x1a) >> 0x1d) << 2 |
+ ((u32)(db_bg2cnt_2 << 0x12) >> 0x1f) << 0xd;
+ break;
+ }
+ break;
+ case 7:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ u16 db_bg3cnt_0 = reg_G2S_DB_BG3CNT;
+ if (param2 == 1)
+ {
+ db_bg3cnt_0 = db_bg3cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg3cnt_0 = db_bg3cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG3CNT =
+ (reg_G2S_DB_BG3CNT & 0x43) | ((u32)(db_bg3cnt_0 << 0x10) >> 0x1e) << 0xe |
+ param0->unk08[param1].unk1e << 7 | ((u32)(db_bg3cnt_0 << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg3cnt_0 << 0x1a) >> 0x1c) << 2;
+
+ break;
+ case 1:
+ u16 db_bg3cnt_1 = reg_G2S_DB_BG3CNT;
+ if (param2 == 1)
+ {
+ db_bg3cnt_1 = db_bg3cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg3cnt_1 = db_bg3cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) |
+ ((u32)(db_bg3cnt_1 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(db_bg3cnt_1 << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg3cnt_1 << 0x1a) >> 0x1c) << 2 |
+ ((u32)(db_bg3cnt_1 << 0x12) >> 0x1f) << 0xd;
+ break;
+ case 2:
+ u16 db_bg3cnt_2 = reg_G2S_DB_BG3CNT;
+ if (param2 == 1)
+ {
+ db_bg3cnt_2 = db_bg3cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13);
+ }
+ else if (param2 == 2)
+ {
+ db_bg3cnt_2 = db_bg3cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a);
+ }
+
+ reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) |
+ ((u32)(db_bg3cnt_2 << 0x10) >> 0x1e) << 0xe |
+ ((u32)(db_bg3cnt_2 << 0x13) >> 0x1b) << 8 |
+ ((u32)(db_bg3cnt_2 << 0x1a) >> 0x1d) << 2 |
+ ((u32)(db_bg3cnt_2 << 0x12) >> 0x1f) << 0xd;
+ break;
+ }
+ break;
+ }
+}
+#else
+THUMB_FUNC asm void FUN_020170F4(
+ struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3)
+{
+ // clang-format off
+ push {r3-r7, lr}
+ sub sp, #0x20
+ add r4, r1, #0x0
+ add r5, r0, #0x0
+ add r1, r2, #0x0
+ add r0, r3, #0x0
+ cmp r1, #0x0
+ bne _0201710C
+ mov r2, #0x2c
+ mul r2, r4
+ add r2, r5, r2
+ strb r0, [r2, #0x1e]
+_0201710C:
+ cmp r4, #0x7
+ bls _02017112
+ b _020177C4
+_02017112:
+ add r2, r4, r4
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0201711E: //; jump table (using 16-bit offset)
+ // .short _0201712E - _0201711E - 2; case 0
+ // .short _0201719A - _0201711E - 2; case 1
+ // .short _02017206 - _0201711E - 2; case 2
+ // .short _0201733A - _0201711E - 2; case 3
+ // .short _0201746E - _0201711E - 2; case 4
+ // .short _020174F4 - _0201711E - 2; case 5
+ // .short _02017560 - _0201711E - 2; case 6
+ // .short _02017694 - _0201711E - 2; case 7
+
+ lsl r6, r1, #0
+ lsl r2, r7, #1
+ lsl r6, r4, #3
+ lsl r2, r3, #8
+ lsl r6, r1, #13
+ lsl r4, r2, #15
+ lsl r0, r0, #17
+ lsl r4, r6, #21
+_0201712E:
+ ldr r2, =0x04000008
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x1e]
+ bne _0201714A
+ ldrh r3, [r2, #0x1e]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x1e]
+ b _0201715C
+_0201714A:
+ cmp r1, #0x2
+ bne _0201715C
+ ldrh r3, [r2, #0x1e]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x1e]
+_0201715C:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x1e]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, =0x04000008
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_0201719A:
+ ldr r2, =0x0400000A
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x1c]
+ bne _020171B6
+ ldrh r3, [r2, #0x1c]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x1c]
+ b _020171C8
+_020171B6:
+ cmp r1, #0x2
+ bne _020171C8
+ ldrh r3, [r2, #0x1c]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x1c]
+_020171C8:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x1c]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, =0x0400000A
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_02017206:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _0201721A
+ cmp r3, #0x1
+ beq _0201727A
+ cmp r3, #0x2
+ beq _020172DA
+_0201721A:
+ ldr r3, =0x0400000C
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0x1a]
+ bne _02017236
+ ldrh r4, [r3, #0x1a]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0x1a]
+ b _02017248
+_02017236:
+ cmp r1, #0x2
+ bne _02017248
+ ldrh r4, [r3, #0x1a]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0x1a]
+_02017248:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x1a]
+ add r2, r5, r2
+ ldr r6, =0x0400000C
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201727A:
+ ldr r2, =0x0400000C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x18]
+ bne _02017296
+ ldrh r3, [r2, #0x18]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x18]
+ b _020172A8
+_02017296:
+ cmp r1, #0x2
+ bne _020172A8
+ ldrh r3, [r2, #0x18]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x18]
+_020172A8:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x18]
+ ldr r6, =0x0400000C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020172DA:
+ ldr r2, =0x0400000C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x16]
+ bne _020172F6
+ ldrh r3, [r2, #0x16]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x16]
+ b _02017308
+_020172F6:
+ cmp r1, #0x2
+ bne _02017308
+ ldrh r3, [r2, #0x16]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x16]
+_02017308:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x16]
+ ldr r6, =0x0400000C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201733A:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _0201734E
+ cmp r3, #0x1
+ beq _020173AE
+ cmp r3, #0x2
+ beq _0201740E
+_0201734E:
+ ldr r3, =0x0400000E
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0x14]
+ bne _0201736A
+ ldrh r4, [r3, #0x14]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0x14]
+ b _0201737C
+_0201736A:
+ cmp r1, #0x2
+ bne _0201737C
+ ldrh r4, [r3, #0x14]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0x14]
+_0201737C:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x14]
+ add r2, r5, r2
+ ldr r6, =0x0400000E
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020173AE:
+ ldr r2, =0x0400000E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x12]
+ bne _020173CA
+ ldrh r3, [r2, #0x12]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x12]
+ b _020173DC
+_020173CA:
+ cmp r1, #0x2
+ bne _020173DC
+ ldrh r3, [r2, #0x12]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x12]
+_020173DC:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x12]
+ ldr r6, =0x0400000E
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201740E:
+ ldr r2, =0x0400000E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x10]
+ bne _0201742A
+ ldrh r3, [r2, #0x10]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x10]
+ b _0201743C
+_0201742A:
+ cmp r1, #0x2
+ bne _0201743C
+ ldrh r3, [r2, #0x10]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x10]
+_0201743C:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x10]
+ ldr r6, =0x0400000E
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_0201746E:
+ ldr r2, =0x04001008
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0xe]
+ bne _020174A4
+ ldrh r3, [r2, #0xe]
+ ldr r1, =0xFFFFE0FF
+ b _02017498
+_02017498:
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0xe]
+ b _020174B6
+_020174A4:
+ cmp r1, #0x2
+ bne _020174B6
+ ldrh r3, [r2, #0xe]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0xe]
+_020174B6:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0xe]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, =0x04001008
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_020174F4:
+ ldr r2, =0x0400100A
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0xc]
+ bne _02017510
+ ldrh r3, [r2, #0xc]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0xc]
+ b _02017522
+_02017510:
+ cmp r1, #0x2
+ bne _02017522
+ ldrh r3, [r2, #0xc]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0xc]
+_02017522:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0xc]
+ add sp, #0x20
+ lsl r0, r3, #0x12
+ lsr r6, r0, #0x1f
+ lsl r0, r3, #0x1a
+ lsr r2, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsr r1, r0, #0x1b
+ mov r0, #0x2c
+ mul r0, r4
+ add r0, r5, r0
+ lsl r3, r3, #0x10
+ lsr r5, r3, #0x1e
+ lsl r3, r2, #0x2
+ ldrb r0, [r0, #0x1e]
+ lsl r2, r1, #0x8
+ lsl r4, r6, #0xd
+ lsl r1, r0, #0x7
+ ldr r0, =0x0400100A
+ mov r6, #0x43
+ ldrh r7, [r0, #0x0]
+ lsl r5, r5, #0xe
+ and r6, r7
+ orr r5, r6
+ orr r1, r5
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ strh r1, [r0, #0x0]
+ pop {r3-r7, pc}
+_02017560:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _02017574
+ cmp r3, #0x1
+ beq _020175D4
+ cmp r3, #0x2
+ beq _02017634
+_02017574:
+ ldr r3, =0x0400100C
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0xa]
+ bne _02017590
+ ldrh r4, [r3, #0xa]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0xa]
+ b _020175A2
+_02017590:
+ cmp r1, #0x2
+ bne _020175A2
+ ldrh r4, [r3, #0xa]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0xa]
+_020175A2:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0xa]
+ add r2, r5, r2
+ ldr r6, =0x0400100C
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_020175D4:
+ ldr r2, =0x0400100C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x8]
+ bne _020175F0
+ ldrh r3, [r2, #0x8]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x8]
+ b _02017602
+_020175F0:
+ cmp r1, #0x2
+ bne _02017602
+ ldrh r3, [r2, #0x8]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x8]
+_02017602:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x8]
+ ldr r6, =0x0400100C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017634:
+ ldr r2, =0x0400100C
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x6]
+ bne _02017650
+ ldrh r3, [r2, #0x6]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x6]
+ b _02017662
+_02017650:
+ cmp r1, #0x2
+ bne _02017662
+ ldrh r3, [r2, #0x6]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x6]
+_02017662:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x6]
+ ldr r6, =0x0400100C
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017694:
+ mov r2, #0x2c
+ mul r2, r4
+ add r3, r5, r2
+ ldrb r3, [r3, #0x1c]
+ cmp r3, #0x0
+ beq _020176A8
+ cmp r3, #0x1
+ beq _02017708
+ cmp r3, #0x2
+ beq _02017768
+_020176A8:
+ ldr r3, =0x0400100E
+ cmp r1, #0x1
+ ldrh r4, [r3, #0x0]
+ add r3, sp, #0x0
+ strh r4, [r3, #0x4]
+ bne _020176C4
+ ldrh r4, [r3, #0x4]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r4
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r3, #0x4]
+ b _020176D6
+_020176C4:
+ cmp r1, #0x2
+ bne _020176D6
+ ldrh r4, [r3, #0x4]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r4, r1
+ lsr r0, r0, #0x1a
+ orr r0, r4
+ strh r0, [r3, #0x4]
+_020176D6:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x4]
+ add r2, r5, r2
+ ldr r6, =0x0400100E
+ lsl r0, r3, #0x1a
+ ldrb r4, [r2, #0x1e]
+ lsr r1, r0, #0x1c
+ lsl r0, r3, #0x13
+ lsl r2, r3, #0x10
+ lsr r3, r2, #0x1e
+ ldrh r5, [r6, #0x0]
+ lsr r0, r0, #0x1b
+ lsl r2, r1, #0x2
+ lsl r1, r0, #0x8
+ lsl r0, r4, #0x7
+ mov r4, #0x43
+ and r4, r5
+ lsl r3, r3, #0xe
+ orr r3, r4
+ orr r0, r3
+ orr r0, r1
+ orr r0, r2
+ add sp, #0x20
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017708:
+ ldr r2, =0x0400100E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x2]
+ bne _02017724
+ ldrh r3, [r2, #0x2]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x2]
+ b _02017736
+_02017724:
+ cmp r1, #0x2
+ bne _02017736
+ ldrh r3, [r2, #0x2]
+ mov r1, #0x3c
+ lsl r0, r0, #0x1c
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x2]
+_02017736:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x2]
+ ldr r6, =0x0400100E
+ add sp, #0x20
+ lsl r1, r3, #0x13
+ lsl r0, r3, #0x1a
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsr r0, r0, #0x1c
+ lsl r1, r0, #0x2
+ lsl r0, r4, #0x8
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+ pop {r3-r7, pc}
+_02017768:
+ ldr r2, =0x0400100E
+ cmp r1, #0x1
+ ldrh r3, [r2, #0x0]
+ add r2, sp, #0x0
+ strh r3, [r2, #0x0]
+ bne _02017784
+ ldrh r3, [r2, #0x0]
+ ldr r1, =0xFFFFE0FF
+ lsl r0, r0, #0x1b
+ and r1, r3
+ lsr r0, r0, #0x13
+ orr r0, r1
+ strh r0, [r2, #0x0]
+ b _02017796
+_02017784:
+ cmp r1, #0x2
+ bne _02017796
+ ldrh r3, [r2, #0x0]
+ mov r1, #0x38
+ lsl r0, r0, #0x1d
+ bic r3, r1
+ lsr r0, r0, #0x1a
+ orr r0, r3
+ strh r0, [r2, #0x0]
+_02017796:
+ add r0, sp, #0x0
+ ldrh r3, [r0, #0x0]
+ ldr r6, =0x0400100E
+ lsl r1, r3, #0x13
+ lsr r4, r1, #0x1b
+ lsl r1, r3, #0x12
+ lsr r2, r1, #0x1f
+ lsl r0, r3, #0x1a
+ lsl r1, r3, #0x10
+ lsr r3, r1, #0x1e
+ lsl r1, r4, #0x8
+ lsr r0, r0, #0x1d
+ ldrh r5, [r6, #0x0]
+ mov r4, #0x43
+ lsl r3, r3, #0xe
+ and r4, r5
+ lsl r0, r0, #0x2
+ orr r3, r4
+ orr r0, r3
+ lsl r2, r2, #0xd
+ orr r0, r1
+ orr r0, r2
+ strh r0, [r6, #0x0]
+_020177C4:
+ add sp, #0x20
+ pop {r3-r7, pc}
+ // clang-format on
+}
+#endif
+
+THUMB_FUNC u8 FUN_020177DC(u8 param0, u32 param1)
+{
+ switch (param1)
+ {
+ case 0:
+
+ if (param0 == 1)
+ {
+ return 0;
+ }
+ else if (param0 == 2)
+ {
+ return 2;
+ }
+ else if (param0 == 3)
+ {
+ return 1;
+ }
+ else if (param0 == 4)
+ {
+ return 3;
+ }
+ break;
+
+ case 1:
+
+ if (param0 == 0)
+ {
+ return 0;
+ }
+ else if (param0 == 1)
+ {
+ return 1;
+ }
+ else if (param0 == 4)
+ {
+ return 2;
+ }
+ else if (param0 == 5)
+ {
+ return 3;
+ }
+ break;
+
+ case 2:
+
+ if (param0 == 0)
+ {
+ return 0;
+ }
+ else if (param0 == 1)
+ {
+ return 1;
+ }
+ else if (param0 == 4)
+ {
+ return 2;
+ }
+ else if (param0 == 5)
+ {
+ return 3;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02017850(u32 param0, u8 *param1, u8 *param2)
+{
+ switch (param0)
+ {
+ case 0:
+ *param1 = 0x10;
+ *param2 = 0x10;
+ break;
+ case 1:
+ *param1 = 0x20;
+ *param2 = 0x20;
+ break;
+ case 2:
+ *param1 = 0x20;
+ *param2 = 0x40;
+ break;
+ case 3:
+ *param1 = 0x40;
+ *param2 = 0x20;
+ break;
+ case 4:
+ *param1 = 0x40;
+ *param2 = 0x40;
+ break;
+ case 5:
+ *param1 = 0x80;
+ *param2 = 0x80;
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_020178A0(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ if (param0->unk08[param1].unk08 != NULL)
+ {
+ FreeToHeap(param0->unk08[param1].unk08);
+ param0->unk08[param1].unk08 = NULL;
+ }
+}
+
+THUMB_FUNC void FUN_020178BC(u32 param0, u16 param1)
+{
+ switch (param0)
+ {
+ case 0:
+ reg_G2_BG0CNT = (u16)(reg_G2_BG0CNT & ~3 | param1);
+ break;
+ case 1:
+ reg_G2_BG1CNT = (u16)(reg_G2_BG1CNT & ~3 | param1);
+ break;
+ case 2:
+ reg_G2_BG2CNT = (u16)(reg_G2_BG2CNT & ~3 | param1);
+ break;
+ case 3:
+ reg_G2_BG3CNT = (u16)(reg_G2_BG3CNT & ~3 | param1);
+ break;
+ case 4:
+ reg_G2S_DB_BG0CNT = (u16)(reg_G2S_DB_BG0CNT & ~3 | param1);
+ break;
+ case 5:
+ reg_G2S_DB_BG1CNT = (u16)(reg_G2S_DB_BG1CNT & ~3 | param1);
+ break;
+ case 6:
+ reg_G2S_DB_BG2CNT = (u16)(reg_G2S_DB_BG2CNT & ~3 | param1);
+ break;
+ case 7:
+ reg_G2S_DB_BG3CNT = (u16)(reg_G2S_DB_BG3CNT & ~3 | param1);
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_0201797C(u32 param0, GX_LayerToggle toggle)
+{
+ switch (param0)
+ {
+ case 0:
+ GX_EngineAToggleLayers(1, toggle);
+ break;
+ case 1:
+ GX_EngineAToggleLayers(2, toggle);
+ break;
+ case 2:
+ GX_EngineAToggleLayers(4, toggle);
+ break;
+ case 3:
+ GX_EngineAToggleLayers(8, toggle);
+ break;
+ case 4:
+ GX_EngineBToggleLayers(1, toggle);
+ break;
+ case 5:
+ GX_EngineBToggleLayers(2, toggle);
+ break;
+ case 6:
+ GX_EngineBToggleLayers(4, toggle);
+ break;
+ case 7:
+ GX_EngineBToggleLayers(8, toggle);
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_020179E0(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 val)
+{
+ FUN_02017B8C(&param0->unk08[param1], param2, val);
+
+ u32 r1 = (u32)param0->unk08[param1].unk14;
+ u32 r0 = (u32)param0->unk08[param1].unk18;
+ switch (param1)
+ {
+ case 0:
+
+ reg_G2_BG0OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ break;
+ case 1:
+
+ reg_G2_BG1OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ break;
+
+ case 2:
+ if (param0->unk08[2].unk1c == 0)
+ {
+ reg_G2_BG2OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ }
+ else
+ {
+ FUN_02017C6C(param0, 2);
+ }
+
+ break;
+
+ case 3:
+ if (param0->unk08[3].unk1c == 0)
+ {
+ reg_G2_BG3OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ }
+ else
+ {
+ FUN_02017C6C(param0, 3);
+ }
+
+ break;
+
+ case 4:
+
+ reg_G2S_DB_BG0OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ break;
+ case 5:
+
+ reg_G2S_DB_BG1OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ break;
+
+ case 6:
+ if (param0->unk08[6].unk1c == 0)
+ {
+ reg_G2S_DB_BG2OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ }
+ else
+ {
+ FUN_02017C6C(param0, 6);
+ }
+
+ break;
+
+ case 7:
+ if (param0->unk08[7].unk1c == 0)
+ {
+ reg_G2S_DB_BG3OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000);
+ }
+ else
+ {
+ FUN_02017C6C(param0, 7);
+ }
+
+ break;
+ }
+}
+
+THUMB_FUNC fx32 FUN_02017B48(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ return param0->unk08[param1].unk14;
+}
+
+THUMB_FUNC fx32 FUN_02017B54(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ return param0->unk08[param1].unk18;
+}
+
+THUMB_FUNC void FUN_02017B60(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u32 param2,
+ fx32 param3,
+ struct Mtx22 *param4,
+ fx32 param5,
+ fx32 param6)
+{
+ FUN_02017B8C(&param0->unk08[param1], param2, param3);
+ FUN_02017BD0(param0, param1, param4, param5, param6);
+}
+
+THUMB_FUNC void FUN_02017B8C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val)
+{
+ switch (param1)
+ {
+ case 0:
+ param0->unk14 = val;
+ break;
+ case 1:
+ param0->unk14 += val;
+ break;
+ case 2:
+ param0->unk14 -= val;
+ break;
+ case 3:
+ param0->unk18 = val;
+ break;
+ case 4:
+ param0->unk18 += val;
+ break;
+ case 5:
+ param0->unk18 -= val;
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_02017BD0(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, struct Mtx22 *param2, fx32 param3, fx32 param4)
+{
+ switch (param1)
+ {
+ case 2:
+ G2x_SetBGyAffine_(reg_G2_BG2P,
+ param2,
+ param3,
+ param4,
+ param0->unk08[param1].unk14,
+ param0->unk08[param1].unk18);
+ break;
+ case 3:
+ G2x_SetBGyAffine_(reg_G2_BG3P,
+ param2,
+ param3,
+ param4,
+ param0->unk08[param1].unk14,
+ param0->unk08[param1].unk18);
+ break;
+ case 6:
+ G2x_SetBGyAffine_(reg_G2S_DB_BG2P,
+ param2,
+ param3,
+ param4,
+ param0->unk08[param1].unk14,
+ param0->unk08[param1].unk18);
+ break;
+ case 7:
+ G2x_SetBGyAffine_(reg_G2S_DB_BG3P,
+ param2,
+ param3,
+ param4,
+ param0->unk08[param1].unk14,
+ param0->unk08[param1].unk18);
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_02017C6C(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ struct Mtx22 mtx;
+ MTX22_2DAffine(&mtx, 0, 0x1000, 0x1000, 0);
+ FUN_02017BD0(param0, param1, &mtx, 0, 0);
+}
+
+THUMB_FUNC void FUN_02017C98(const void *param0, void *param1, u32 param2)
+{
+ if (param2 == 0)
+ {
+ MI_UncompressLZ8(param0, param1);
+ return;
+ }
+
+ if (((u32)param0 % 4) == 0 && ((u32)param1 % 4) == 0 && ((u16)param2 % 4) == 0)
+ {
+ MI_CpuCopy32(param0, param1, param2);
+ return;
+ }
+
+ MI_CpuCopy16(param0, param1, param2);
+}
+
+THUMB_FUNC void FUN_02017CD0(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ FUN_02017CE8(param0,
+ param1,
+ param0->unk08[param1].unk08,
+ param0->unk08[param1].unk0c,
+ param0->unk08[param1].unk10);
+}
+
+THUMB_FUNC void FUN_02017CE8(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4)
+{
+ u32 st0 = param3;
+ if (param3 == 0)
+ {
+ void *st4 = param0->unk08[param1].unk08;
+ if (st4 != 0)
+ {
+ FUN_02017C98(param2, st4, param3);
+ FUN_02017D68(param1, st4, param0->unk08[param1].unk10 * 2, param0->unk08[param1].unk0c);
+ return;
+ }
+
+ u32 r7 = param2[0] >> 8;
+ void *ptr = AllocFromHeapAtEnd(param0->unk00, r7);
+ FUN_02017C98(param2, ptr, st0);
+ FUN_02017D68(param1, ptr, param4 * 2, r7);
+ FreeToHeap(ptr);
+ return;
+ }
+
+ FUN_02017D68(param1, param2, param4 * 2, param3);
+}
+
+THUMB_FUNC void FUN_02017D68(u32 param0, void *param1, u32 offset, u32 size)
+{
+ DC_FlushRange(param1, size);
+
+ switch (param0)
+ {
+ case 0:
+ GX_LoadBG0Scr(param1, offset, size);
+ break;
+ case 1:
+ GX_LoadBG1Scr(param1, offset, size);
+ break;
+ case 2:
+ GX_LoadBG2Scr(param1, offset, size);
+ break;
+ case 3:
+ GX_LoadBG3Scr(param1, offset, size);
+ break;
+ case 4:
+ GXS_LoadBG0Scr(param1, offset, size);
+ break;
+ case 5:
+ GXS_LoadBG1Scr(param1, offset, size);
+ break;
+ case 6:
+ GXS_LoadBG2Scr(param1, offset, size);
+ break;
+ case 7:
+ GXS_LoadBG3Scr(param1, offset, size);
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_02017DFC(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, void *param2, u32 param3)
+{
+ FUN_02017C98(param2, param0->unk08[param1].unk08, param3);
+}
+
+THUMB_FUNC void FUN_02017E14(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4)
+{
+ if (param0->unk08[param1].unk1e == 0)
+ {
+ FUN_02017E40(param0, param1, param2, param3, param4 << 5);
+ return;
+ }
+ FUN_02017E40(param0, param1, param2, param3, param4 << 6);
+}
+
+THUMB_FUNC void FUN_02017E40(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4)
+{
+ u32 st0 = param3;
+ if (param3 == 0)
+ {
+
+ u32 r4 = param2[0] >> 8;
+ void *ptr = AllocFromHeapAtEnd(param0->unk00, r4);
+ FUN_02017C98(param2, ptr, st0);
+ FUN_02017E84(param1, ptr, param4, r4);
+ FreeToHeap(ptr);
+ return;
+ }
+
+ FUN_02017E84(param1, param2, param4, param3);
+}
+
+THUMB_FUNC void FUN_02017E84(u32 param0, void *param1, u32 offset, u32 size)
+{
+ DC_FlushRange(param1, size);
+
+ switch (param0)
+ {
+ case 0:
+ GX_LoadBG0Char(param1, offset, size);
+ break;
+ case 1:
+ GX_LoadBG1Char(param1, offset, size);
+ break;
+ case 2:
+ GX_LoadBG2Char(param1, offset, size);
+ break;
+ case 3:
+ GX_LoadBG3Char(param1, offset, size);
+ break;
+ case 4:
+ GXS_LoadBG0Char(param1, offset, size);
+ break;
+ case 5:
+ GXS_LoadBG1Char(param1, offset, size);
+ break;
+ case 6:
+ GXS_LoadBG2Char(param1, offset, size);
+ break;
+ case 7:
+ GXS_LoadBG3Char(param1, offset, size);
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_02017F18(u32 param0, u32 size, u32 offset, u32 heap_id)
+{
+ void *ptr = AllocFromHeapAtEnd(heap_id, size);
+ memset(ptr, 0, size);
+
+ FUN_02017E84(param0, ptr, offset, size);
+ FreeToHeapExplicit(heap_id, ptr);
+}
+
+THUMB_FUNC void FUN_02017F48(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4)
+{
+ void *st4;
+ u32 st0 = param3 * param0->unk08[param1].unk1f;
+ u32 r5 = param2;
+ st4 = AllocFromHeapAtEnd(param0->unk00, st0);
+
+ if (param0->unk08[param1].unk1f == 0x20)
+ {
+ r5 = (r5 << 0xc | r5 << 0x8 | r5 << 0x4 | r5);
+ r5 |= r5 << 0x10;
+ }
+ else
+ {
+ r5 = r5 << 0x18 | r5 << 0x10 | r5 << 8 | r5;
+ }
+
+ MI_CpuFillFast(st4, r5, st0);
+
+ FUN_02017E84((u8)param1, st4, param0->unk08[param1].unk1f * param4, st0);
+ FreeToHeap(st4);
+}
+
+THUMB_FUNC void FUN_02017FB4(u32 param0, void *param1, u32 offset, u32 size)
+{
+ DC_FlushRange(param1, offset);
+ if (param0 < 4)
+ {
+ GX_LoadBGPltt(param1, size, offset);
+ return;
+ }
+
+ GXS_LoadBGPltt(param1, size, offset);
+}
+
+THUMB_FUNC void FUN_02017FE4(u32 param0, u32 param1)
+{
+ FUN_02017FB4(param0, &param1, 2, 0);
+}
+
+THUMB_FUNC u16 FUN_02017FFC(u8 param0, u8 param1, u8 param2)
+{
+ switch (param2)
+ {
+ case 0:
+ return (u16)(param0 + (param1 << 4));
+ case 1:
+ case 2:
+ return (u16)(param0 + (param1 << 5));
+ case 3:
+ return (u16)((param0 & 0x1f) + ((param1 + (param0 & ~0x1f)) << 5));
+ case 4:
+ u16 res = (u16)(((u16)((param0 >> 5) + (param1 >> 5) * 2)) << 10);
+ res += (param0 & 0x1f) + ((param1 & 0x1f) << 5);
+ return res;
+ case 5:
+ return 0;
+ }
+
+ return param0;
+}
+
+THUMB_FUNC u16 FUN_02018068(u8 param0, u8 param1, u8 param2, u8 param3)
+{
+ u8 r2 = 0;
+ u16 r3 = 0;
+ s16 r4 = (s16)(param2 - 32);
+ s16 r5 = (s16)(param3 - 32);
+
+ if (((u32)param0 >> 5) != 0)
+ {
+ r2++;
+ }
+
+ if (((u32)param1 >> 5) != 0)
+ {
+ r2 += 2;
+ }
+
+ switch (r2)
+ {
+ case 0:
+ if (r4 >= 0)
+ {
+ r3 += param0 + (param1 << 5);
+ }
+ else
+ {
+ r3 += param0 + param1 * param2;
+ }
+ break;
+ case 1:
+ if (r5 >= 0)
+ {
+ r3 += 0x400;
+ }
+ else
+ {
+ r3 += (param3 << 5);
+ }
+
+ r3 += (param0 & 0x1f) + param1 * r4;
+ break;
+ case 2:
+ r3 += param2 << 5;
+ if (r4 >= 0)
+ {
+ r3 += param0 + ((param1 & 0x1f) << 5);
+ }
+ else
+ {
+ r3 += param0 + (param1 & 0x1f) * param2;
+ }
+ break;
+ case 3:
+ r3 += (param2 + r5) << 5;
+ r3 += (param0 & 0x1f) + (param1 & 0x1f) * r4;
+ break;
+ }
+
+ return r3;
+}
+
+THUMB_FUNC void FUN_02018148(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ void *param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6)
+{
+ FUN_02018170(param0, param1, param3, param4, param5, param6, param2, 0, 0, param5, param6);
+}
+
+THUMB_FUNC void FUN_02018170(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ void *param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10)
+{
+ if (param0->unk08[param1].unk1c != 1)
+ {
+ FUN_02018268(&param0->unk08[param1],
+ param2,
+ param3,
+ param4,
+ param5,
+ (u16 *)param6,
+ param7,
+ param8,
+ param9,
+ param10,
+ 0);
+ }
+ else
+ {
+ FUN_020183DC(&param0->unk08[param1],
+ param2,
+ param3,
+ param4,
+ param5,
+ (u8 *)param6,
+ param7,
+ param8,
+ param9,
+ param10,
+ 0);
+ }
+}
+
+THUMB_FUNC void FUN_020181EC(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ void *param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10)
+{
+ if (param0->unk08[param1].unk1c != 1)
+ {
+ FUN_02018268(&param0->unk08[param1],
+ param2,
+ param3,
+ param4,
+ param5,
+ (u16 *)param6,
+ param7,
+ param8,
+ param9,
+ param10,
+ 1);
+ }
+ else
+ {
+ FUN_020183DC(&param0->unk08[param1],
+ param2,
+ param3,
+ param4,
+ param5,
+ (u8 *)param6,
+ param7,
+ param8,
+ param9,
+ param10,
+ 1);
+ }
+}
+
+THUMB_FUNC void FUN_02018268(struct UnkStruct_02016B94_2_sub *param0,
+ u8 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 *param5,
+ u8 param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10)
+{
+ void *st2c = param0->unk08;
+
+ if (st2c == 0)
+ {
+ return;
+ }
+
+ u8 st41;
+ u8 st40;
+ FUN_02017850(param0->unk1d, &st41, &st40);
+
+ u8 i;
+ u8 j;
+ if (param10 == 0)
+ {
+ for (i = 0; i < param4; i++)
+ {
+
+ if (param2 + i >= st40)
+ {
+ break;
+ }
+
+ if (param7 + i >= param9)
+ {
+ break;
+ }
+
+ for (j = 0; j < param3; j++)
+ {
+
+ if (param1 + j >= st41)
+ {
+ break;
+ }
+
+ if (param6 + j >= param8)
+ {
+ break;
+ }
+
+ ((u16 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] =
+ param5[param6 + param8 * (param7 + i) + j];
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < param4; i++)
+ {
+
+ if (param2 + i >= st40)
+ {
+ break;
+ }
+
+ if (param7 + i >= param9)
+ {
+ break;
+ }
+
+ for (j = 0; j < param3; j++)
+ {
+
+ if (param1 + j >= st41)
+ {
+ break;
+ }
+
+ if (param6 + j >= param8)
+ {
+ break;
+ }
+
+ ((u16 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] =
+ param5[FUN_02018068((u8)(param6 + j), (u8)(param7 + i), param8, param9)];
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_020183DC(struct UnkStruct_02016B94_2_sub *param0,
+ u8 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 *param5,
+ u8 param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10)
+{
+ void *st2c = param0->unk08;
+
+ if (st2c == 0)
+ {
+ return;
+ }
+
+ u8 st41;
+ u8 st40;
+ FUN_02017850(param0->unk1d, &st41, &st40);
+
+ u8 i;
+ u8 j;
+ if (param10 == 0)
+ {
+ for (i = 0; i < param4; i++)
+ {
+
+ if (param2 + i >= st40)
+ {
+ break;
+ }
+
+ if (param7 + i >= param9)
+ {
+ break;
+ }
+
+ for (j = 0; j < param3; j++)
+ {
+
+ if (param1 + j >= st41)
+ {
+ break;
+ }
+
+ if (param6 + j >= param8)
+ {
+ break;
+ }
+
+ ((u8 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] =
+ param5[param6 + param8 * (param7 + i) + j];
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < param4; i++)
+ {
+
+ if (param2 + i >= st40)
+ {
+ break;
+ }
+
+ if (param7 + i >= param9)
+ {
+ break;
+ }
+
+ for (j = 0; j < param3; j++)
+ {
+
+ if (param1 + j >= st41)
+ {
+ break;
+ }
+
+ if (param6 + j >= param8)
+ {
+ break;
+ }
+
+ ((u8 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] =
+ param5[FUN_02018068((u8)(param6 + j), (u8)(param7 + i), param8, param9)];
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02018540(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u16 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u8 param7)
+{
+ if (param0->unk08[param1].unk1c != 1)
+ {
+
+ FUN_02018590(&param0->unk08[param1], param2, param3, param4, param5, param6, param7);
+ }
+ else
+ {
+ FUN_02018640(&param0->unk08[param1], (u8)param2, param3, param4, param5, param6);
+ }
+}
+
+THUMB_FUNC void FUN_02018590(struct UnkStruct_02016B94_2_sub *param0,
+ u16 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6)
+{
+ void *r4 = param0->unk08;
+
+ if (r4 != 0)
+ {
+
+ u8 st19;
+ u8 st18;
+ FUN_02017850(param0->unk1d, &st19, &st18);
+
+ u8 i;
+ u8 j;
+ for (i = param3; i < param3 + param5; i++)
+ {
+ if (i >= st18)
+ {
+ break;
+ }
+
+ for (j = param2; j < param2 + param4; j++)
+ {
+ if (j >= st19)
+ {
+ break;
+ }
+
+ u16 idx = FUN_02017FFC(j, i, param0->unk1d);
+
+ if (param6 == 0x11)
+ {
+ ((u16 *)r4)[idx] = param1;
+ }
+ else if (param6 == 0x10)
+ {
+ ((u16 *)r4)[idx] = (u16)((((u16 *)r4)[idx] & 0xF000) + param1);
+ }
+ else
+ {
+ ((u16 *)r4)[idx] = (u16)((param6 << 0xc) + param1);
+ }
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02018640(
+ struct UnkStruct_02016B94_2_sub *param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5)
+{
+ void *r4 = param0->unk08;
+
+ if (r4 != 0)
+ {
+
+ u8 st19;
+ u8 st18;
+ FUN_02017850(param0->unk1d, &st19, &st18);
+
+ u8 i;
+ u8 j;
+ for (i = param3; i < param3 + param5; i++)
+ {
+ if (i >= st18)
+ {
+ break;
+ }
+
+ for (j = param2; j < param2 + param4; j++)
+ {
+ if (j >= st19)
+ {
+ break;
+ }
+
+ ((u8 *)r4)[FUN_02017FFC(j, i, param0->unk1d)] = param1;
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_020186B4(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6)
+{
+ void *r4 = param0->unk08[param1].unk08;
+
+ if (r4 != NULL)
+ {
+ u8 st11;
+ u8 st10;
+ FUN_02017850(param0->unk08[param1].unk1d, &st11, &st10);
+
+ u8 i;
+ u8 j;
+ for (i = param3; i < param3 + param5; i++)
+ {
+ if (i >= st10)
+ {
+ break;
+ }
+
+ for (j = param2; j < param2 + param4; j++)
+ {
+ if (j >= st11)
+ {
+ break;
+ }
+
+ u16 idx = FUN_02017FFC(j, i, param0->unk08[param1].unk1d);
+ ((u16 *)r4)[idx] = (u16)((((u16 *)r4)[idx] & 0xfff) | (param6 << 0xc));
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02018744(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ if (param0->unk08[param1].unk08 != NULL)
+ {
+ MI_CpuClear16(param0->unk08[param1].unk08, param0->unk08[param1].unk0c);
+ FUN_02017CD0(param0, param1);
+ }
+}
+
+THUMB_FUNC void FUN_02018768(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2)
+{
+ if (param0->unk08[param1].unk08 != NULL)
+ {
+ MI_CpuFill16(param0->unk08[param1].unk08, param2, param0->unk08[param1].unk0c);
+ FUN_02017CD0(param0, param1);
+ }
+}
+
+THUMB_FUNC void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2)
+{
+ if (param0->unk08[param1].unk08 != NULL)
+ {
+ MI_CpuFill16(param0->unk08[param1].unk08, param2, param0->unk08[param1].unk0c);
+ FUN_0201AC68(param0, param1);
+ }
+}
+
+THUMB_FUNC void *FUN_020187B0(u32 param0)
+{
+ switch (param0)
+ {
+ case 0:
+ return G2_GetBG0CharPtr();
+ case 1:
+ return G2_GetBG1CharPtr();
+ case 2:
+ return G2_GetBG2CharPtr();
+ case 3:
+ return G2_GetBG3CharPtr();
+ case 4:
+ return G2S_GetBG0CharPtr();
+ case 5:
+ return G2S_GetBG1CharPtr();
+ case 6:
+ return G2S_GetBG2CharPtr();
+ case 7:
+ return G2S_GetBG3CharPtr();
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3)
+{
+ param3 <<= 4;
+ for (int i = 0; i < param1; i++)
+ {
+ param2[i][0] = (u8)(param0[i] & 0xf);
+ if (param2[i][0] != 0)
+ {
+ param2[i][0] += param3;
+ }
+
+ param2[i][1] = (u8)((param0[i] >> 4) & 0xf);
+ if (param2[i][1] != 0)
+ {
+ param2[i][1] += param3;
+ }
+ }
+}
+
+THUMB_FUNC u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2]
+{
+ u8(*ptr)[2] = (u8(*)[2])AllocFromHeap(heap_id, param1 * 2);
+
+ FUN_02018808(param0, param1, ptr, param2);
+
+ return ptr;
+}
+
+THUMB_FUNC void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u8 param1)
+{
+ return param0->unk08[param1].unk08;
+}
+
+THUMB_FUNC u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ return param0->unk08[param1].unk20;
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+
+ // the compiler keeps optimizing the stack away :(
+ u16 st0[16];
+ switch (param1)
+ {
+ case 0:
+ st0[15] = reg_G2_BG0CNT;
+ return (u32)(st0[15] << 0x1e) >> 0x1e;
+ case 1:
+ st0[14] = reg_G2_BG1CNT;
+ return (u32)(st0[14] << 0x1e) >> 0x1e;
+
+ case 2:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ st0[13] = reg_G2_BG2CNT;
+ return (u32)(st0[13] << 0x1e) >> 0x1e;
+ case 1:
+ st0[12] = reg_G2_BG2CNT;
+ return (u32)(st0[12] << 0x1e) >> 0x1e;
+ case 2:
+ st0[11] = reg_G2_BG2CNT;
+ return (u32)(st0[11] << 0x1e) >> 0x1e;
+ }
+ break;
+ case 3:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ st0[10] = reg_G2_BG3CNT;
+ return (u32)(st0[10] << 0x1e) >> 0x1e;
+ case 1:
+ st0[9] = reg_G2_BG3CNT;
+ return (u32)(st0[9] << 0x1e) >> 0x1e;
+ case 2:
+ st0[8] = reg_G2_BG3CNT;
+ return (u32)(st0[8] << 0x1e) >> 0x1e;
+ }
+ break;
+
+ case 4:
+ st0[7] = reg_G2S_DB_BG0CNT;
+ return (u32)(st0[7] << 0x1e) >> 0x1e;
+ case 5:
+ st0[6] = reg_G2S_DB_BG1CNT;
+ return (u32)(st0[6] << 0x1e) >> 0x1e;
+
+ case 6:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ st0[5] = reg_G2S_DB_BG2CNT;
+ return (u32)(st0[5] << 0x1e) >> 0x1e;
+ case 1:
+ st0[4] = reg_G2S_DB_BG2CNT;
+ return (u32)(st0[4] << 0x1e) >> 0x1e;
+ case 2:
+ st0[3] = reg_G2S_DB_BG2CNT;
+ return (u32)(st0[3] << 0x1e) >> 0x1e;
+ }
+ break;
+ case 7:
+ switch (param0->unk08[param1].unk1c)
+ {
+ default:
+ case 0:
+ st0[2] = reg_G2S_DB_BG3CNT;
+ return (u32)(st0[2] << 0x1e) >> 0x1e;
+ case 1:
+ st0[1] = reg_G2S_DB_BG3CNT;
+ return (u32)(st0[1] << 0x1e) >> 0x1e;
+ case 2:
+ st0[0] = reg_G2S_DB_BG3CNT;
+ return (u32)(st0[0] << 0x1e) >> 0x1e;
+ }
+ break;
+ }
+
+ return 0;
+}
+#else
+THUMB_FUNC asm u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ // clang-format off
+ sub sp, #0x20
+ cmp r1, #0x7
+ bls _0201888C
+ b _02018A38
+_0201888C:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #0x6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02018898:
+ // jump table (using 16-bit offset)
+ // .short _020188A8 - _02018898 - 2; case 0
+ // .short _020188BC - _02018898 - 2; case 1
+ // .short _020188D0 - _02018898 - 2; case 2
+ // .short _02018920 - _02018898 - 2; case 3
+ // .short _02018970 - _02018898 - 2; case 4
+ // .short _02018984 - _02018898 - 2; case 5
+ // .short _02018998 - _02018898 - 2; case 6
+ // .short _020189E8 - _02018898 - 2; case 7
+
+ lsl r6, r1, #0
+ lsl r2, r4, #0
+ lsl r6, r6, #0
+ lsl r6, r0, #2
+ lsl r6, r2, #3
+ lsl r2, r5, #3
+ lsl r6, r7, #3
+ lsl r6, r1, #5
+_020188A8:
+ ldr r0, =0x04000008
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x1e]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020188BC:
+ ldr r0, =0x0400000A
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x1c]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020188D0:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _020188E4
+ cmp r0, #0x1
+ beq _020188F8
+ cmp r0, #0x2
+ beq _0201890C
+_020188E4:
+ ldr r0, =0x0400000C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x1a]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020188F8:
+ ldr r0, =0x0400000C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x18]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0201890C:
+ ldr r0, =0x0400000C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x16]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018920:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _02018934
+ cmp r0, #0x1
+ beq _02018948
+ cmp r0, #0x2
+ beq _0201895C
+_02018934:
+ ldr r0, =0x0400000E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x14]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018948:
+ ldr r0, =0x0400000E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x12]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_0201895C:
+ ldr r0, =0x0400000E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x10]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018970:
+ ldr r0, =0x04001008
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0xe]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018984:
+ ldr r0, =0x0400100A
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0xc]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018998:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _020189AC
+ cmp r0, #0x1
+ beq _020189C0
+ cmp r0, #0x2
+ beq _020189D4
+_020189AC:
+ ldr r0, =0x0400100C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0xa]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020189C0:
+ ldr r0, =0x0400100C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x8]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020189D4:
+ ldr r0, =0x0400100C
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x6]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_020189E8:
+ mov r2, #0x2c
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #0x0
+ beq _020189FC
+ cmp r0, #0x1
+ beq _02018A10
+ cmp r0, #0x2
+ beq _02018A24
+_020189FC:
+ ldr r0, =0x0400100E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x4]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018A10:
+ ldr r0, =0x0400100E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x2]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018A24:
+ ldr r0, =0x0400100E
+ ldrh r1, [r0, #0x0]
+ add r0, sp, #0x0
+ add sp, #0x20
+ strh r1, [r0, #0x0]
+ lsl r0, r1, #0x1e
+ lsr r0, r0, #0x1e
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_02018A38:
+ mov r0, #0x0
+ add sp, #0x20
+ bx lr
+ // clang-format on
+}
+#endif
+
+#ifdef NONMATCHING
+THUMB_FUNC void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0,
+ struct UnkStruct_02016B94_3 *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8)
+{
+
+ u8 *unk1;
+ u8 *unk2;
+
+ int st50;
+ if (param1->unk04 - param4 < param6)
+ {
+ st50 = param2 + param1->unk04 - param4;
+ }
+ else
+ {
+ st50 = param2 + param6;
+ }
+
+ int st4c;
+ if (param1->unk06 - param5 < param7)
+ {
+ st4c = param3 + param1->unk06 - param5;
+ }
+ else
+ {
+ st4c = param3 + param7;
+ }
+
+ int st48 = (param0->unk04 + (param0->unk04 & 7)) >> 3;
+
+ int st44 = (param1->unk04 + (param1->unk04 & 7)) >> 3;
+
+ u32 i, i1;
+ u32 j, j1;
+ if (param8 == 0xFFFF)
+ {
+ i1 = param5;
+ for (i = param3; i < st4c; i++)
+ {
+ j1 = param4;
+ for (j = param2; j < st50; j++)
+ {
+
+ unk1 =
+ (u32)(param1->unk00) + (j1 >> 1) &
+ 0x3 + ((j1 << 2) & 0x3fe0) + st44 * ((i1 << 2) & 0x3fe0) + ((i1 << 2) & 0x1c);
+ unk2 = (u32)(param0->unk00) + (j >> 1) &
+ 0x3 + ((j << 2) & 0x3fe0) + st48 * ((i << 2) & 0x3FE0) + ((i << 2) & 0x1c);
+
+ u8 r1 = *unk2;
+
+ u32 r2 = (j1 << 0x1f) >> 0x1d;
+ u32 r7 = ((r1 >> ((j << 0x1f) >> 0x1d)) & 0xf) << r2;
+
+ *unk1 = r7 | (*unk1 & (0xf0 >> r2));
+
+ j1++;
+ }
+ i1++;
+ }
+ }
+ else
+ {
+
+ i1 = param5;
+ for (i = param3; i < st4c; i++)
+ {
+ j1 = param4;
+ for (j = param2; j < st50; j++)
+ {
+
+ unk1 = (u32)param1->unk00 + ((j1 >> 1) & 3) + ((j1 << 2) & 0x3fe0) +
+ st44 * ((i1 << 2) & 0x3fe0) + (i1 << 2) &
+ 0x1c;
+ unk2 = (u32)param0->unk00 + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) +
+ st48 * ((i << 2) & 0x3fe0) + ((i << 2) & 0x1c);
+ u8 r0 = ((*unk2) >> ((j << 0x1f) >> 0x1d)) & 0xf;
+
+ if (r0 != param8)
+ {
+ u32 r7 = ((j1 << 0x1f) >> 0x1d);
+ *unk1 = (r0 << r7) | (*unk1 & (0xf0 >> r7));
+ }
+
+ j1++;
+ }
+ i1++;
+ }
+ }
+}
+#else
+THUMB_FUNC asm void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0,
+ struct UnkStruct_02016B94_3 *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8)
+{
+ // clang-format off
+ push {r3-r7, lr}
+ sub sp, #0x68
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r2, sp, #0x70
+ str r0, [sp, #0x0]
+ ldrh r0, [r2, #0x10]
+ str r1, [sp, #0x4]
+ ldrh r2, [r2, #0x18]
+ str r0, [sp, #0x10]
+ add r0, r1, #0x0
+ ldrh r1, [r0, #0x4]
+ ldr r0, [sp, #0x10]
+ sub r3, r1, r0
+ cmp r3, r2
+ bge _02018A88
+ ldr r0, [sp, #0x8]
+ add r0, r0, r3
+ str r0, [sp, #0x50]
+ b _02018A8E
+_02018A88:
+ ldr r0, [sp, #0x8]
+ add r0, r2, r0
+ str r0, [sp, #0x50]
+_02018A8E:
+ ldr r2, [sp, #0x4]
+ add r3, sp, #0x70
+ ldrh r0, [r3, #0x14]
+ ldrh r2, [r2, #0x6]
+ ldrh r3, [r3, #0x1c]
+ sub r4, r2, r0
+ cmp r4, r3
+ bge _02018AA6
+ ldr r2, [sp, #0xc]
+ add r2, r2, r4
+ str r2, [sp, #0x4c]
+ b _02018AAC
+_02018AA6:
+ ldr r2, [sp, #0xc]
+ add r2, r3, r2
+ str r2, [sp, #0x4c]
+_02018AAC:
+ ldr r2, [sp, #0x0]
+ mov r3, #0x7
+ ldrh r4, [r2, #0x4]
+ add r2, r4, #0x0
+ and r2, r3
+ add r2, r4, r2
+ asr r2, r2, #0x3
+ str r2, [sp, #0x48]
+ add r2, r1, #0x0
+ and r2, r3
+ add r1, r1, r2
+ asr r1, r1, #0x3
+ str r1, [sp, #0x44]
+ add r1, sp, #0x70
+ ldrh r1, [r1, #0x20]
+ ldr r2, =0x0000FFFF
+ str r1, [sp, #0x38]
+ cmp r1, r2
+ bne _02018BB4
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x4c]
+ cmp r2, r1
+ bge _02018ADE
+ cmp r2, r1
+ blt _02018AE0
+_02018ADE:
+ b _02018C92
+_02018AE0:
+ add r1, r2, #0x0
+ lsl r1, r1, #0x2
+ lsl r0, r0, #0x2
+ str r1, [sp, #0x28]
+ str r0, [sp, #0x24]
+_02018AEA:
+ ldr r3, [sp, #0x8]
+ ldr r0, [sp, #0x50]
+ add r1, r3, #0x0
+ ldr r4, [sp, #0x10]
+ cmp r1, r0
+ bge _02018B96
+ cmp r1, r0
+ bge _02018B96
+ add r0, r3, #0x0
+ lsl r5, r0, #0x2
+ add r0, r4, #0x0
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r1, [sp, #0x28]
+ ldr r2, [sp, #0x48]
+ and r1, r0
+ mul r2, r1
+ str r2, [sp, #0x20]
+ ldr r2, [sp, #0x28]
+ mov r1, #0x1c
+ and r2, r1
+ str r2, [sp, #0x1c]
+ ldr r2, [sp, #0x24]
+ and r0, r2
+ ldr r2, [sp, #0x44]
+ mul r2, r0
+ ldr r0, [sp, #0x24]
+ str r2, [sp, #0x18]
+ and r0, r1
+ str r0, [sp, #0x14]
+_02018B26:
+ ldr r0, [sp, #0x4]
+ asr r2, r4, #0x1
+ mov r1, #0x3
+ ldr r0, [r0, #0x0]
+ and r1, r2
+ add r1, r0, r1
+ ldr r0, =0x00003FE0
+ and r0, r6
+ add r1, r1, r0
+ ldr r0, [sp, #0x18]
+ add r6, r6, #0x4
+ add r0, r1, r0
+ str r0, [sp, #0x64]
+ lsl r0, r4, #0x1f
+ lsr r2, r0, #0x1d
+ ldr r0, [sp, #0x0]
+ asr r1, r3, #0x1
+ ldr r7, [r0, #0x0]
+ mov r0, #0x3
+ and r0, r1
+ ldr r1, =0x00003FE0
+ add r4, r4, #0x1
+ and r1, r5
+ str r1, [sp, #0x54]
+ add r1, r7, r0
+ ldr r0, [sp, #0x54]
+ add r5, r5, #0x4
+ add r1, r0, r1
+ ldr r0, [sp, #0x20]
+ add r1, r0, r1
+ ldr r0, [sp, #0x1c]
+ ldrb r1, [r0, r1]
+ lsl r0, r3, #0x1f
+ lsr r0, r0, #0x1d
+ asr r1, r0
+ mov r0, #0xf
+ and r0, r1
+ add r7, r0, #0x0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x64]
+ lsl r7, r2
+ ldrb r0, [r0, r1]
+ add r3, r3, #0x1
+ str r0, [sp, #0x58]
+ mov r0, #0xf0
+ asr r0, r2
+ ldr r1, [sp, #0x58]
+ add r2, r7, #0x0
+ and r0, r1
+ orr r2, r0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x64]
+ strb r2, [r0, r1]
+ ldr r0, [sp, #0x50]
+ cmp r3, r0
+ blt _02018B26
+_02018B96:
+ ldr r0, [sp, #0x28]
+ add r0, r0, #0x4
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0xc]
+ add r0, r0, #0x4
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x4c]
+ cmp r1, r0
+ blt _02018AEA
+ add sp, #0x68
+ pop {r3-r7, pc}
+_02018BB4:
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp, #0x4c]
+ cmp r2, r1
+ bge _02018C92
+ cmp r2, r1
+ bge _02018C92
+ add r1, r2, #0x0
+ lsl r1, r1, #0x2
+ lsl r0, r0, #0x2
+ str r1, [sp, #0x40]
+ str r0, [sp, #0x3c]
+_02018BCA:
+ ldr r3, [sp, #0x8]
+ ldr r0, [sp, #0x50]
+ add r1, r3, #0x0
+ ldr r4, [sp, #0x10]
+ cmp r1, r0
+ bge _02018C78
+ cmp r1, r0
+ bge _02018C78
+ add r0, r3, #0x0
+ lsl r1, r0, #0x2
+ add r0, r4, #0x0
+ lsl r2, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x40]
+ ldr r6, [sp, #0x48]
+ and r5, r0
+ mul r6, r5
+ str r6, [sp, #0x34]
+ ldr r6, [sp, #0x40]
+ mov r5, #0x1c
+ and r6, r5
+ str r6, [sp, #0x30]
+ ldr r6, [sp, #0x3c]
+ and r0, r6
+ ldr r6, [sp, #0x44]
+ mul r6, r0
+ ldr r0, [sp, #0x3c]
+ str r6, [sp, #0x2c]
+ and r0, r5
+ str r0, [sp, #0x60]
+_02018C06:
+ ldr r0, [sp, #0x4]
+ asr r6, r4, #0x1
+ mov r5, #0x3
+ and r5, r6
+ ldr r0, [r0, #0x0]
+ asr r6, r3, #0x1
+ add r5, r0, r5
+ ldr r0, =0x00003FE0
+ and r0, r2
+ add r5, r5, r0
+ ldr r0, [sp, #0x2c]
+ add r5, r5, r0
+ ldr r0, [sp, #0x0]
+ ldr r7, [r0, #0x0]
+ mov r0, #0x3
+ and r0, r6
+ ldr r6, =0x00003FE0
+ and r6, r1
+ str r6, [sp, #0x5c]
+ add r6, r7, r0
+ ldr r0, [sp, #0x5c]
+ add r6, r0, r6
+ ldr r0, [sp, #0x34]
+ add r6, r0, r6
+ ldr r0, [sp, #0x30]
+ ldrb r6, [r0, r6]
+ lsl r0, r3, #0x1f
+ lsr r0, r0, #0x1d
+ asr r6, r0
+ mov r0, #0xf
+ and r0, r6
+ ldr r6, [sp, #0x38]
+ cmp r0, r6
+ beq _02018C6A
+ lsl r6, r4, #0x1f
+ lsr r7, r6, #0x1d
+ lsl r0, r7
+ mov lr, r0
+ ldr r0, [sp, #0x60]
+ ldrb r0, [r5, r0]
+ mov r12, r0
+ mov r0, #0xf0
+ add r6, r0, #0x0
+ asr r6, r7
+ mov r0, r12
+ and r0, r6
+ mov r6, lr
+ orr r6, r0
+ ldr r0, [sp, #0x60]
+ strb r6, [r5, r0]
+_02018C6A:
+ ldr r0, [sp, #0x50]
+ add r3, r3, #0x1
+ add r1, r1, #0x4
+ add r2, r2, #0x4
+ add r4, r4, #0x1
+ cmp r3, r0
+ blt _02018C06
+_02018C78:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x4
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x3c]
+ ldr r1, [sp, #0xc]
+ add r0, r0, #0x4
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x4c]
+ cmp r1, r0
+ blt _02018BCA
+_02018C92:
+ add sp, #0x68
+ pop {r3-r7, pc}
+ // clang-format on
+}
+#endif
+
+#ifdef NONMATCHING
+THUMB_FUNC void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0,
+ struct UnkStruct_02016B94_3 *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8)
+{
+ // horrible for loops like the one above
+}
+#else
+THUMB_FUNC asm void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0,
+ struct UnkStruct_02016B94_3 *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8)
+{
+ // clang-format off
+ push {r3-r7, lr}
+ sub sp, #0x50
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ add r2, sp, #0x58
+ str r0, [sp, #0x0]
+ ldrh r0, [r2, #0x10]
+ str r1, [sp, #0x4]
+ ldrh r2, [r2, #0x18]
+ str r0, [sp, #0x10]
+ add r0, r1, #0x0
+ ldrh r1, [r0, #0x4]
+ ldr r0, [sp, #0x10]
+ sub r3, r1, r0
+ cmp r3, r2
+ bge _02018CC6
+ ldr r0, [sp, #0x8]
+ add r0, r0, r3
+ b _02018CCA
+_02018CC6:
+ ldr r0, [sp, #0x8]
+ add r0, r2, r0
+_02018CCA:
+ ldr r2, [sp, #0x4]
+ add r3, sp, #0x58
+ mov r12, r0
+ ldrh r0, [r3, #0x14]
+ ldrh r2, [r2, #0x6]
+ ldrh r3, [r3, #0x1c]
+ sub r4, r2, r0
+ cmp r4, r3
+ bge _02018CE2
+ ldr r2, [sp, #0xc]
+ add r2, r2, r4
+ b _02018CE6
+_02018CE2:
+ ldr r2, [sp, #0xc]
+ add r2, r3, r2
+_02018CE6:
+ mov lr, r2
+ ldr r2, [sp, #0x0]
+ mov r3, #0x7
+ ldrh r4, [r2, #0x4]
+ add r2, r4, #0x0
+ and r2, r3
+ add r2, r4, r2
+ asr r2, r2, #0x3
+ str r2, [sp, #0x4c]
+ add r2, r1, #0x0
+ and r2, r3
+ add r1, r1, r2
+ asr r1, r1, #0x3
+ str r1, [sp, #0x48]
+ add r1, sp, #0x58
+ ldrh r1, [r1, #0x20]
+ ldr r2, =0x0000FFFF
+ str r1, [sp, #0x3c]
+ cmp r1, r2
+ bne _02018DC6
+ ldr r2, [sp, #0xc]
+ mov r1, lr
+ cmp r2, r1
+ bge _02018D1C
+ mov r1, lr
+ cmp r2, r1
+ blt _02018D1E
+_02018D1C:
+ b _02018E7C
+_02018D1E:
+ add r1, r2, #0x0
+ lsl r1, r1, #0x3
+ lsl r0, r0, #0x3
+ str r1, [sp, #0x28]
+ str r0, [sp, #0x24]
+_02018D28:
+ ldr r1, [sp, #0x8]
+ mov r0, r12
+ add r2, r1, #0x0
+ ldr r7, [sp, #0x10]
+ cmp r2, r0
+ bge _02018DA8
+ mov r0, r12
+ cmp r2, r0
+ bge _02018DA8
+ add r0, r1, #0x0
+ lsl r2, r0, #0x3
+ add r0, r7, #0x0
+ lsl r3, r0, #0x3
+ ldr r6, =0x00007FC0
+ ldr r0, [sp, #0x28]
+ ldr r4, [sp, #0x4c]
+ and r0, r6
+ mul r4, r0
+ str r4, [sp, #0x20]
+ ldr r0, [sp, #0x28]
+ mov r5, #0x38
+ and r0, r5
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ ldr r4, [sp, #0x48]
+ and r0, r6
+ mul r4, r0
+ ldr r0, [sp, #0x24]
+ str r4, [sp, #0x18]
+ and r0, r5
+ str r0, [sp, #0x14]
+_02018D66:
+ ldr r0, [sp, #0x0]
+ add r5, r1, #0x0
+ mov r4, #0x7
+ and r5, r4
+ ldr r0, [r0, #0x0]
+ ldr r4, =0x00007FC0
+ add r0, r0, r5
+ and r4, r2
+ add r4, r4, r0
+ ldr r0, [sp, #0x20]
+ add r5, r7, #0x0
+ add r4, r0, r4
+ ldr r0, [sp, #0x1c]
+ add r1, r1, #0x1
+ ldrb r6, [r0, r4]
+ ldr r0, [sp, #0x4]
+ mov r4, #0x7
+ and r5, r4
+ ldr r0, [r0, #0x0]
+ ldr r4, =0x00007FC0
+ add r0, r0, r5
+ and r4, r3
+ add r4, r4, r0
+ ldr r0, [sp, #0x18]
+ add r2, #0x8
+ add r4, r0, r4
+ ldr r0, [sp, #0x14]
+ add r3, #0x8
+ strb r6, [r0, r4]
+ mov r0, r12
+ add r7, r7, #0x1
+ cmp r1, r0
+ blt _02018D66
+_02018DA8:
+ ldr r0, [sp, #0x28]
+ add r0, #0x8
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0xc]
+ add r0, #0x8
+ str r0, [sp, #0x24]
+ mov r0, lr
+ cmp r1, r0
+ blt _02018D28
+ add sp, #0x50
+ pop {r3-r7, pc}
+_02018DC6:
+ ldr r2, [sp, #0xc]
+ mov r1, lr
+ cmp r2, r1
+ bge _02018E7C
+ mov r1, lr
+ cmp r2, r1
+ bge _02018E7C
+ add r1, r2, #0x0
+ lsl r1, r1, #0x3
+ lsl r0, r0, #0x3
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x40]
+_02018DDE:
+ ldr r2, [sp, #0x8]
+ mov r0, r12
+ add r1, r2, #0x0
+ ldr r3, [sp, #0x10]
+ cmp r1, r0
+ bge _02018E62
+ mov r0, r12
+ cmp r1, r0
+ bge _02018E62
+ add r0, r2, #0x0
+ lsl r6, r0, #0x3
+ add r0, r3, #0x0
+ lsl r1, r0, #0x3
+ ldr r7, =0x00007FC0
+ ldr r0, [sp, #0x44]
+ ldr r4, [sp, #0x4c]
+ and r0, r7
+ mul r4, r0
+ str r4, [sp, #0x38]
+ ldr r0, [sp, #0x44]
+ mov r5, #0x38
+ and r0, r5
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x40]
+ ldr r4, [sp, #0x48]
+ and r0, r7
+ mul r4, r0
+ ldr r0, [sp, #0x40]
+ str r4, [sp, #0x30]
+ and r0, r5
+ str r0, [sp, #0x2c]
+_02018E1C:
+ ldr r0, [sp, #0x4]
+ mov r4, #0x7
+ ldr r0, [r0, #0x0]
+ and r4, r3
+ add r0, r0, r4
+ ldr r4, =0x00007FC0
+ add r5, r2, #0x0
+ and r4, r1
+ add r4, r0, r4
+ ldr r0, [sp, #0x30]
+ add r7, r4, r0
+ ldr r0, [sp, #0x0]
+ mov r4, #0x7
+ and r5, r4
+ ldr r0, [r0, #0x0]
+ ldr r4, =0x00007FC0
+ add r0, r0, r5
+ and r4, r6
+ add r4, r4, r0
+ ldr r0, [sp, #0x38]
+ add r4, r0, r4
+ ldr r0, [sp, #0x34]
+ ldrb r0, [r0, r4]
+ ldr r4, [sp, #0x3c]
+ cmp r0, r4
+ beq _02018E54
+ ldr r4, [sp, #0x2c]
+ strb r0, [r7, r4]
+_02018E54:
+ add r2, r2, #0x1
+ mov r0, r12
+ add r6, #0x8
+ add r1, #0x8
+ add r3, r3, #0x1
+ cmp r2, r0
+ blt _02018E1C
+_02018E62:
+ ldr r0, [sp, #0x44]
+ add r0, #0x8
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x40]
+ ldr r1, [sp, #0xc]
+ add r0, #0x8
+ str r0, [sp, #0x40]
+ mov r0, lr
+ cmp r1, r0
+ blt _02018DDE
+_02018E7C:
+ add sp, #0x50
+ pop {r3-r7, pc}
+ // clang-format on
+}
+#endif
+
+THUMB_FUNC void FUN_02018E88(
+ struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5)
+{
+
+ int r6 = param1 + param3;
+ if (r6 > param0->unk04)
+ {
+ r6 = param0->unk04;
+ }
+
+ int r12 = param2 + param4;
+ if (r12 > param0->unk06)
+ {
+ r12 = param0->unk06;
+ }
+
+ int lr = (((param0->unk04) + (param0->unk04 & 7)) >> 3);
+
+ for (int i = param2; i < r12; i++)
+ {
+
+ for (int j = param1; j < r6; j++)
+ {
+
+ u8 *unk = (u8 *)((u8 *)param0->unk00 + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) +
+ (((i << 2) & 0x3fe0) * lr) + ((i << 2) & 0x1c));
+
+ if ((j & 1) != 0)
+ {
+ *unk &= 0xf;
+ *unk |= (param5 << 4);
+ }
+ else
+ {
+ *unk &= 0xf0;
+ *unk |= param5;
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02018F4C(
+ struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5)
+{
+
+ int r6 = param1 + param3;
+ if (r6 > param0->unk04)
+ {
+ r6 = param0->unk04;
+ }
+
+ int r12 = param2 + param4;
+ if (r12 > param0->unk06)
+ {
+ r12 = param0->unk06;
+ }
+
+ int lr = (((param0->unk04) + (param0->unk04 & 7)) >> 3);
+
+ for (int i = param2; i < r12; i++)
+ {
+
+ for (int j = param1; j < r6; j++)
+ {
+
+ u8 *unk = (u8 *)((u8 *)param0->unk00 + (j & 7) + ((j << 3) & 0x7fc0) +
+ (((i << 3) & 0x7fc0) * lr) + ((i << 3) & 0x38));
+
+ *unk = param5;
+ }
+ }
+}
+
+THUMB_FUNC void *AllocWindows(u32 heap_id, s32 size)
+{
+ struct Window *ptr = AllocFromHeap(heap_id, (u32)(size << 4));
+
+ for (u16 i = 0; i < size; i++)
+ {
+ InitWindow(&ptr[i]);
+ }
+
+ return ptr;
+}
+
+THUMB_FUNC void InitWindow(struct Window *param0)
+{
+ param0->unk00 = 0;
+ param0->unk04 = 0xff;
+ param0->unk05 = 0;
+ param0->unk06 = 0;
+ param0->width = 0;
+ param0->height = 0;
+ param0->unk09 = 0;
+
+ param0->unk0a_0 = 0;
+ param0->unk0c = 0;
+
+ param0->unk0b_15 = 0;
+}
+
+THUMB_FUNC BOOL FUN_02019048(struct Window *param0)
+{
+ if (param0->unk00 == 0 || param0->unk04 == 0xff || param0->unk0c == 0)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+enum UnkEnum1
+{
+ UnkEnum1_0 = 0,
+ UnkEnum1_1 = 1
+};
+
+THUMB_FUNC void FUN_02019064(struct UnkStruct_02016B94_2 *param0,
+ struct Window *param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u8 param7,
+ u16 param8)
+{
+ if (param0->unk08[param2].unk08 == NULL)
+ {
+ return;
+ }
+
+ void *ptr = AllocFromHeap(param0->unk00, (u32)(param5 * param6 * param0->unk08[param2].unk1f));
+
+ if (ptr == NULL)
+ {
+ return;
+ }
+ param1->unk00 = param0;
+ param1->unk04 = param2;
+ param1->unk05 = param3;
+ param1->unk06 = param4;
+ param1->width = param5;
+ param1->height = param6;
+ param1->unk09 = param7;
+
+ param1->unk0a_0 = param8;
+ param1->unk0c = ptr;
+
+ enum UnkEnum1 r2;
+ if (param0->unk08[param2].unk1e == 0)
+ {
+ r2 = UnkEnum1_0;
+ }
+ else
+ {
+ r2 = UnkEnum1_1;
+ }
+
+ param1->unk0b_15 = r2;
+}
+
+THUMB_FUNC void FUN_020190EC(struct UnkStruct_02016B94_2 *param0,
+ struct Window *param1,
+ u8 param2,
+ u8 param3,
+ u16 param4,
+ u8 param5)
+{
+ u32 size = (u32)(param2 * param3 * 32);
+
+ void *ptr = AllocFromHeap(param0->unk00, size);
+
+ param5 |= (param5 * 16);
+ memset(ptr, param5, size);
+
+ if (ptr != NULL)
+ {
+ param1->unk00 = param0;
+ param1->width = param2;
+ param1->height = param3;
+ param1->unk0a_0 = param4;
+ param1->unk0c = ptr;
+ param1->unk0b_15 = 0;
+ }
+}
+
+THUMB_FUNC void FUN_02019150(
+ struct UnkStruct_02016B94_2 *param0, struct Window *param1, struct UnkStruct_02016B94_4 *param2)
+{
+
+ FUN_02019064(param0,
+ param1,
+ param2->unk0,
+ param2->unk1,
+ param2->unk2,
+ param2->unk3,
+ param2->unk4,
+ param2->unk5,
+ param2->unk6);
+}
+
+THUMB_FUNC void FUN_02019178(struct Window *param0)
+{
+ FreeToHeap(param0->unk0c);
+
+ param0->unk00 = 0;
+ param0->unk04 = 0xff;
+ param0->unk05 = 0;
+ param0->unk06 = 0;
+ param0->width = 0;
+ param0->height = 0;
+ param0->unk09 = 0;
+ param0->unk0a_0 = 0;
+ param0->unk0c = 0;
+}
+
+THUMB_FUNC void FUN_020191A4(struct Window *param0, int param1)
+{
+ for (u16 i = 0; i < param1; i++)
+ {
+ if (param0[i].unk0c != NULL)
+ {
+ FreeToHeap(param0[i].unk0c);
+ }
+ }
+
+ FreeToHeap(param0);
+}
+
+THUMB_FUNC void CopyWindowToVram(struct Window *param0)
+{
+
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk00);
+ GF_ASSERT(param0->unk04 < 8);
+ GF_ASSERT(param0->unk00->unk08[param0->unk04].unk1c < 3);
+
+ UNK_020EDB68[param0->unk00->unk08[param0->unk04].unk1c](param0);
+}
+
+THUMB_FUNC void FUN_02019220(struct Window *param0)
+{
+
+ GF_ASSERT(param0);
+ GF_ASSERT(param0->unk00);
+ GF_ASSERT(param0->unk04 < 8);
+ GF_ASSERT(param0->unk00->unk08[param0->unk04].unk1c < 3);
+
+ UNK_020EDB5C[param0->unk00->unk08[param0->unk04].unk1c](param0);
+}
+
+THUMB_FUNC void FUN_02019270(struct Window *param0)
+{
+ UNK_020EDB38[param0->unk00->unk08[param0->unk04].unk1c](param0);
+}
+
+THUMB_FUNC void FUN_0201928C(struct Window *param0, u8 param1, u8 param2)
+{
+ u8 unk07 = param0->width;
+ u8 unk08 = param0->height;
+
+ param0->width = param1;
+ param0->height = param2;
+ UNK_020EDB38[param0->unk00->unk08[param0->unk04].unk1c](param0);
+
+ param0->width = unk07;
+ param0->height = unk08;
+}
+
+THUMB_FUNC void FUN_020192B8(struct Window *param0)
+{
+ UNK_020EDB74[param0->unk00->unk08[param0->unk04].unk1c](param0);
+}
+
+THUMB_FUNC void FUN_020192D4(struct Window *param0)
+{
+ u32 i, j;
+ u32 r3;
+ u32 iCount, jCount;
+ u16 *st4 = param0->unk00->unk08[param0->unk04].unk08;
+
+ if (st4 == NULL)
+ {
+ return;
+ }
+
+ r3 = param0->unk0a_0;
+ jCount = (u32)(param0->unk05 + param0->width);
+ iCount = (u32)(param0->unk06 + param0->height);
+
+ for (i = param0->unk06; i < iCount; i++)
+ {
+ for (j = param0->unk05; j < jCount; j++)
+ {
+ st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) << 5) + (j & 0x1f)] =
+ (u16)(r3 | (param0->unk09 << 12));
+
+ r3++;
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02019358(struct Window *param0)
+{
+ int j, i;
+ u8 *r4;
+
+ int r5;
+ int r6;
+
+ if (param0->unk00->unk08[param0->unk04].unk08 == NULL)
+ {
+ return;
+ }
+
+ r6 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d];
+
+ r4 = param0->unk00->unk08[param0->unk04].unk08 + param0->unk06 * r6 + param0->unk05;
+ r5 = param0->unk0a_0;
+
+ for (i = 0; i < param0->height; i++)
+ {
+ for (j = 0; j < param0->width; j++)
+ {
+ r4[j] = (u8)r5;
+ r5++;
+ }
+ r4 += r6;
+ }
+}
+
+THUMB_FUNC void FUN_020193B4(struct Window *param0)
+{
+
+ u32 i, j;
+
+ u32 iCount, jCount;
+ u32 st8;
+
+ u16 *st4;
+
+ if (param0->unk00->unk08[param0->unk04].unk08 == NULL)
+ {
+ return;
+ }
+ st4 = param0->unk00->unk08[param0->unk04].unk08;
+
+ st8 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d];
+ jCount = (u32)(param0->unk05 + param0->width);
+ iCount = (u32)(param0->unk06 + param0->height);
+
+ for (i = param0->unk06; i < iCount; i++)
+ {
+ for (j = param0->unk05; j < jCount; j++)
+ {
+ st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) * st8) + (j & 0x1f)] = 0;
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02019444(struct Window *param0)
+{
+
+ int j, i;
+ u8 *r5;
+
+ int r6;
+
+ if (param0->unk00->unk08[param0->unk04].unk08 == NULL)
+ {
+ return;
+ }
+
+ r6 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d];
+ r5 = param0->unk00->unk08[param0->unk04].unk08 + param0->unk06 * r6 + param0->unk05;
+
+ for (i = 0; i < param0->height; i++)
+ {
+ for (j = 0; j < param0->width; j++)
+ {
+ r5[j] = 0;
+ }
+ r5 += r6;
+ }
+}
+
+THUMB_FUNC void FUN_0201949C(struct Window *window)
+{
+ FUN_020192D4(window);
+ FUN_02019548(window);
+ FUN_02017CE8(window->unk00,
+ window->unk04,
+ window->unk00->unk08[window->unk04].unk08,
+ window->unk00->unk08[window->unk04].unk0c,
+ window->unk00->unk08[window->unk04].unk10);
+}
+
+THUMB_FUNC void FUN_020194C8(struct Window *window)
+{
+ FUN_020192D4(window);
+ FUN_0201AC68(window->unk00, window->unk04);
+ FUN_02019548(window);
+}
+
+THUMB_FUNC void FUN_020194E0(struct Window *window)
+{
+ FUN_02019358(window);
+ FUN_02017CE8(window->unk00,
+ window->unk04,
+ window->unk00->unk08[window->unk04].unk08,
+ window->unk00->unk08[window->unk04].unk0c,
+ window->unk00->unk08[window->unk04].unk10);
+
+ FUN_02017E14(window->unk00,
+ window->unk04,
+ window->unk0c,
+ (u32)(window->width * window->height * 64),
+ window->unk0a_0);
+}
+
+THUMB_FUNC void FUN_0201951C(struct Window *window)
+{
+ FUN_02019358(window);
+ FUN_0201AC68(window->unk00, window->unk04);
+ FUN_02017E14(window->unk00,
+ window->unk04,
+ window->unk0c,
+ (u32)(window->width * window->height * 64),
+ window->unk0a_0);
+}
+
+THUMB_FUNC void FUN_02019548(struct Window *window)
+{
+ FUN_02017E14(window->unk00,
+ window->unk04,
+ window->unk0c,
+ (u32)(window->width * window->height * window->unk00->unk08[window->unk04].unk1f),
+ window->unk0a_0);
+}
+
+THUMB_FUNC void FUN_02019570(struct Window *window)
+{
+ UNK_020EDB50[window->unk00->unk08[window->unk04].unk1c](window);
+}
+
+THUMB_FUNC void FUN_0201958C(struct Window *window)
+{
+ UNK_020EDB44[window->unk00->unk08[window->unk04].unk1c](window);
+}
+
+THUMB_FUNC void FUN_020195A8(struct Window *window)
+{
+ FUN_020193B4(window);
+ FUN_02017CE8(window->unk00,
+ window->unk04,
+ window->unk00->unk08[window->unk04].unk08,
+ window->unk00->unk08[window->unk04].unk0c,
+ window->unk00->unk08[window->unk04].unk10);
+}
+
+THUMB_FUNC void FUN_020195D0(struct Window *window)
+{
+ FUN_020193B4(window);
+ FUN_0201AC68(window->unk00, window->unk04);
+}
+
+THUMB_FUNC void FUN_020195E4(struct Window *window)
+{
+ FUN_02019444(window);
+ FUN_02017CE8(window->unk00,
+ window->unk04,
+ window->unk00->unk08[window->unk04].unk08,
+ window->unk00->unk08[window->unk04].unk0c,
+ window->unk00->unk08[window->unk04].unk10);
+}
+
+THUMB_FUNC void FUN_0201960C(struct Window *window)
+{
+ FUN_02019444(window);
+ FUN_0201AC68(window->unk00, window->unk04);
+}
+
+THUMB_FUNC void FillWindowPixelBuffer(struct Window *window, u8 param1)
+{
+ if (window->unk00->unk08[window->unk04].unk1f == 0x20)
+ {
+ param1 |= param1 << 4;
+ }
+
+ MI_CpuFillFast(
+ window->unk0c,
+ (u32)((param1 << 0x18) | (param1 << 0x10) | (param1 << 0x8) | param1),
+ (u32)(window->unk00->unk08[window->unk04].unk1f * window->width * window->height));
+}
+
+THUMB_FUNC void BlitBitmapRectToWindow(struct Window *window,
+ const void *src,
+ u16 srcX,
+ u16 srcY,
+ u16 srcWidth,
+ u16 srcHeight,
+ u16 dstX,
+ u16 dstY,
+ u16 dstWidth,
+ u16 dstHeight)
+{
+ BlitBitmapRect(
+ window, src, srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, 0);
+}
+
+THUMB_FUNC void BlitBitmapRect(struct Window *window,
+ void *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8,
+ u16 param9,
+ u16 param10)
+{
+ struct UnkStruct_02016B94_3 st1c = { param1, param4, param5 };
+ struct UnkStruct_02016B94_3 st14 = {
+ window->unk0c, (u16)(window->width << 3), (u16)(window->height << 3)
+ };
+
+ if (window->unk00->unk08[window->unk04].unk1e == 0)
+ {
+ BlitBitmapRect4Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10);
+ }
+ else
+ {
+ BlitBitmapRect8Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10);
+ }
+}
+
+THUMB_FUNC void FillWindowPixelRect(
+ struct Window *window, u8 fillValue, u16 x, u16 y, u16 width, u16 height)
+{
+ struct UnkStruct_02016B94_3 st8 = {
+ window->unk0c, (u16)(window->width << 3), (u16)(window->height << 3)
+ };
+
+ if (window->unk00->unk08[window->unk04].unk1e == 0)
+ {
+ FUN_02018E88(&st8, x, y, width, height, fillValue);
+ }
+ else
+ {
+ FUN_02018F4C(&st8, x, y, width, height, fillValue);
+ }
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC void FUN_0201974C(
+ struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6)
+{
+ u32 str330 = param6;
+ u32 *st0 = param1;
+ u16 st5c = param4;
+
+ void *st278 = window->unk0c;
+ u16 st58 = window->width << 3;
+
+ int st8 = st58 - st5c;
+
+ if (st8 >= param2)
+ {
+ st8 = param2;
+ }
+
+ int st4 = (u16)(window->height << 3) - param5;
+ u16 st48 = param5;
+
+ if (st4 >= param3)
+ {
+ st4 = param3;
+ }
+
+ u8 r4 = 0;
+ if (st8 > 8)
+ {
+ r4 |= 1;
+ }
+
+ if (st4 > 8)
+ {
+ r4 |= 2;
+ }
+
+ if (window->unk0b_15 == 0)
+ {
+ switch (r4)
+ {
+ case 0:
+ u8 st70 = param6;
+ for (u32 st274 = 0; st274 < st4; st274++)
+ {
+ u32 st6c = (st58 + (st58 & 7)) >> 3;
+
+ u32 st26c = st0[0];
+ u8 st270 = (u8)((st70 >> st274) & 1);
+ u32 r2 = st5c;
+
+ for (u32 r1 = 0; r1 < st8; r1++)
+ {
+ u32 r3 = st5c << 2;
+ u32 st68 = ((st48 << 2) & 0x3fe0) * st6c;
+ u32 r7 = (st48 << 2) & 0x1c;
+ u32 st64 = (((st48 + 1) << 2) & 0x3fe0) * st6c;
+ u32 st60 = ((st48 + 1) << 2) & 0x1c;
+ u32 r4 = r1;
+
+ void *st27c = st278 + ((r2 >> 1) & 3) + (r3 & 0x3fe0);
+ u8 *r0 = st27c + st68;
+
+ u8 r5 = (u8)((st26c >> r4) & 0xf);
+ if (r5 != 0)
+ {
+ u32 st280 = (r5 << ((r2 & 1) << 2));
+ u32 st284 = r0[r7];
+
+ u8 r5 = ((0xf0 >> ((r2 & 1) << 2)) & st284) | st280;
+ r0[r7] = r5;
+
+ if (st270 != 0)
+ {
+ *(u8 *)(st27c + st64 + st60) = r5;
+ }
+ }
+
+ r4 += 4;
+ r3 += 4;
+ r2 += 1;
+ }
+
+ if (st270 != 0)
+ {
+ st48 += 2;
+ }
+ else
+ {
+ st48++;
+ }
+
+ st0++;
+ }
+
+ break;
+
+ case 1:
+ u32 *st25c = st0;
+ u32 st264 = st48;
+ u8 st54 = param6;
+ u8 st84 = param6;
+
+ for (u32 st268 = 0; st268 < st4; st268++)
+ {
+ u32 st80 = (st58 + (st58 & 7)) >> 3;
+
+ u32 st258 = *st25c;
+ u32 r2 = st5c;
+ u8 st260 = (st84 >> st268) & 1;
+ u32 r3 = st5c << 2;
+ u32 st7c = ((st264 << 2) & 0x3fe0) * st80;
+ u32 r7 = (st264 << 2) & 0x1c;
+ u32 st78 = (((st264 + 1) << 2) & 0x3fe0) * st80;
+ u32 st74 = ((st264 + 1) << 2) & 0x1c;
+ u32 r4 = 0;
+
+ for (u32 r1 = 0; r1 < 8; r1++)
+ {
+ void *st288 = st278 + ((r2 >> 1) & 3) + (r3 & 0x3fe0);
+ u8 *r0 = st288 + st7c;
+ u8 r5 = (st258 >> r4) & 0xf;
+ if (r5 != 0)
+ {
+ u32 st28c = r5 << ((r2 & 1) << 2);
+ u32 st290 = r0[r7];
+ u8 r5 = ((0xf0 >> ((r2 & 1) << 2)) & st290) | st28c;
+ r0[r7] = r5;
+
+ if (st260 != 0)
+ {
+ *(u8 *)(st288 + st78 + st74) = r5;
+ }
+ }
+
+ r4 += 4;
+ r3 += 4;
+ r2++;
+ }
+
+ if (st260 != 0)
+ {
+ st264 += 2;
+ }
+ else
+ {
+ st264++;
+ }
+
+ st25c++;
+ }
+
+ st0 += 0x20;
+ u8 st98 = st54;
+
+ for (u32 st254 = 0; st254 < st4; st254++)
+ {
+ st5c += 8;
+ u32 st94 = (st58 + (st58 & 7)) >> 3;
+
+ //_02019A00
+ }
+
+ break;
+
+ case 2:
+ // TODO
+ break;
+ case 3:
+ // TODO
+ break;
+ }
+ }
+ else
+ {
+ // TODO: FUN_0201A12C
+ }
+}
+#else
+asm void FUN_0201974C(
+ struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6)
+{
+ // clang-format off
+ push {r4-r7, lr}
+ sub sp, #0x1fc
+ sub sp, #0x118
+ add r5, r0, #0x0
+ ldr r0, [sp, #0x330]
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x330]
+ add r1, sp, #0x318
+ ldrh r1, [r1, #0x10]
+ ldr r0, [r5, #0xc]
+ str r1, [sp, #0x5c]
+ ldrb r1, [r5, #0x7]
+ str r0, [sp, #0x278]
+ ldrb r0, [r5, #0x8]
+ lsl r1, r1, #0x13
+ lsr r4, r1, #0x10
+ ldr r1, [sp, #0x5c]
+ lsl r0, r0, #0x13
+ sub r1, r4, r1
+ lsr r0, r0, #0x10
+ str r4, [sp, #0x58]
+ str r1, [sp, #0x8]
+ cmp r1, r2
+ blt _0201977E
+ str r2, [sp, #0x8]
+_0201977E:
+ add r1, sp, #0x318
+ ldrh r1, [r1, #0x14]
+ sub r0, r0, r1
+ str r1, [sp, #0x48]
+ str r0, [sp, #0x4]
+ cmp r0, r3
+ blt _0201978E
+ str r3, [sp, #0x4]
+_0201978E:
+ ldr r0, [sp, #0x8]
+ mov r4, #0x0
+ cmp r0, #0x8
+ ble _0201979E
+ mov r0, #0x1
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_0201979E:
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x8
+ ble _020197AC
+ mov r0, #0x2
+ orr r0, r4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+_020197AC:
+ ldrh r0, [r5, #0xa]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1f
+ beq _020197B8
+ bl FUN_0201A12C
+_020197B8:
+ cmp r4, #0x3
+ bls _020197C0
+ bl FUN_0201A8BC
+_020197C0:
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_020197CC:
+ lsl r6, r0, #0
+ lsl r0, r1, #4
+ lsl r0, r3, #12
+ lsl r0, r7, #20
+ // jump table (using 16-bit offset)
+ // .short _020197D4 - _020197CC - 2; case 0
+ // .short _020198D6 - _020197CC - 2; case 1
+ // .short _02019AE6 - _020197CC - 2; case 2
+ // .short _02019D06 - _020197CC - 2; case 3
+_020197D4:
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x70]
+ mov r0, #0x0
+ str r0, [sp, #0x274]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bgt _020197EA
+ bl FUN_0201A8BC
+_020197EA:
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x6c]
+_020197F6:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x70]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x26c]
+ ldr r0, [sp, #0x274]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x270]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ cmp r0, #0x0
+ ble _020198AA
+ ble _020198AA
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x6c]
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0x68]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x6c]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0x64]
+ str r0, [sp, #0x60]
+_02019848:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0x68]
+ str r5, [sp, #0x27c]
+ add r0, r5, r0
+ ldr r5, [sp, #0x26c]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _0201989C
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x280]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x284]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x284]
+ and r6, r5
+ ldr r5, [sp, #0x280]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x270]
+ cmp r0, #0x0
+ beq _0201989C
+ ldr r6, [sp, #0x27c]
+ ldr r0, [sp, #0x64]
+ add r6, r6, r0
+ ldr r0, [sp, #0x60]
+ strb r5, [r0, r6]
+_0201989C:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019848
+_020198AA:
+ ldr r0, [sp, #0x270]
+ cmp r0, #0x0
+ beq _020198B8
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _020198BE
+_020198B8:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_020198BE:
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x274]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x274]
+ cmp r1, r0
+ blt _020197F6
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+_020198D6:
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x25c]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x264]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x54]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x84]
+ mov r0, #0x0
+ str r0, [sp, #0x268]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _020199D2
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x80]
+_02019902:
+ ldr r0, [sp, #0x25c]
+ ldr r1, [sp, #0x84]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x258]
+ ldr r0, [sp, #0x268]
+ ldr r6, [sp, #0x80]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x260]
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x264]
+ mov r1, #0x0
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x264]
+ str r6, [sp, #0x7c]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x80]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0x78]
+ str r0, [sp, #0x74]
+_0201994C:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0x7c]
+ str r5, [sp, #0x288]
+ add r0, r5, r0
+ ldr r5, [sp, #0x258]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _020199A0
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x28c]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x290]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x290]
+ and r6, r5
+ ldr r5, [sp, #0x28c]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x260]
+ cmp r0, #0x0
+ beq _020199A0
+ ldr r6, [sp, #0x288]
+ ldr r0, [sp, #0x78]
+ add r6, r6, r0
+ ldr r0, [sp, #0x74]
+ strb r5, [r0, r6]
+_020199A0:
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, #0x8
+ blt _0201994C
+ ldr r0, [sp, #0x260]
+ cmp r0, #0x0
+ beq _020199BA
+ ldr r0, [sp, #0x264]
+ add r0, r0, #0x2
+ str r0, [sp, #0x264]
+ b _020199C0
+_020199BA:
+ ldr r0, [sp, #0x264]
+ add r0, r0, #0x1
+ str r0, [sp, #0x264]
+_020199C0:
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r0, [sp, #0x268]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x268]
+ cmp r1, r0
+ blt _02019902
+_020199D2:
+ ldr r0, [sp, #0x0]
+ add r0, #0x20
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x54]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x98]
+ mov r0, #0x0
+ str r0, [sp, #0x254]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ bgt _020199EE
+ bl FUN_0201A8BC
+_020199EE:
+ ldr r0, [sp, #0x5c]
+ mov r1, #0x7
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x94]
+_02019A00:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x98]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x24c]
+ ldr r0, [sp, #0x254]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x250]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ str r0, [sp, #0x294]
+ sub r0, #0x8
+ str r0, [sp, #0x294]
+ cmp r0, #0x0
+ ble _02019ABA
+ ble _02019ABA
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x94]
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0x90]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x94]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0x8c]
+ str r0, [sp, #0x88]
+_02019A58:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0x90]
+ str r5, [sp, #0x298]
+ add r0, r5, r0
+ ldr r5, [sp, #0x24c]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019AAC
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x29c]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2a0]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2a0]
+ and r6, r5
+ ldr r5, [sp, #0x29c]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x250]
+ cmp r0, #0x0
+ beq _02019AAC
+ ldr r6, [sp, #0x298]
+ ldr r0, [sp, #0x8c]
+ add r6, r6, r0
+ ldr r0, [sp, #0x88]
+ strb r5, [r0, r6]
+_02019AAC:
+ ldr r0, [sp, #0x294]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019A58
+_02019ABA:
+ ldr r0, [sp, #0x250]
+ cmp r0, #0x0
+ beq _02019AC8
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _02019ACE
+_02019AC8:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_02019ACE:
+ ldr r0, [sp, #0x0]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x254]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x254]
+ cmp r1, r0
+ blt _02019A00
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+_02019AE6:
+ ldr r0, [sp, #0x0]
+ mov r1, #0x7
+ str r0, [sp, #0x23c]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x244]
+ mov r0, #0x0
+ str r0, [sp, #0x248]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xa8]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x40]
+_02019B06:
+ ldr r0, [sp, #0x23c]
+ ldr r1, [sp, #0xa8]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x238]
+ ldr r0, [sp, #0x248]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x240]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ cmp r0, #0x0
+ ble _02019BC2
+ ble _02019BC2
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x244]
+ ldr r6, [sp, #0x40]
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x244]
+ str r6, [sp, #0xa4]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x40]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xa0]
+ str r0, [sp, #0x9c]
+_02019B58:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+// b _02019B6C
+// nop
+// _02019B68: .word 0x00003FE0
+// _02019B6C:
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xa4]
+ str r5, [sp, #0x2a4]
+ add r0, r5, r0
+ ldr r5, [sp, #0x238]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019BB4
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2a8]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2ac]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2ac]
+ and r6, r5
+ ldr r5, [sp, #0x2a8]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x240]
+ cmp r0, #0x0
+ beq _02019BB4
+ ldr r6, [sp, #0x2a4]
+ ldr r0, [sp, #0xa0]
+ add r6, r6, r0
+ ldr r0, [sp, #0x9c]
+ strb r5, [r0, r6]
+_02019BB4:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019B58
+_02019BC2:
+ ldr r0, [sp, #0x240]
+ cmp r0, #0x0
+ beq _02019BD0
+ ldr r0, [sp, #0x244]
+ add r0, r0, #0x2
+ str r0, [sp, #0x244]
+ b _02019BD6
+_02019BD0:
+ ldr r0, [sp, #0x244]
+ add r0, r0, #0x1
+ str r0, [sp, #0x244]
+_02019BD6:
+ ldr r0, [sp, #0x23c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x23c]
+ ldr r0, [sp, #0x248]
+ add r0, r0, #0x1
+ str r0, [sp, #0x248]
+ cmp r0, #0x8
+ blt _02019B06
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ add r0, #0x40
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x48]
+ mov r1, #0x1
+ add r0, #0x8
+ str r0, [sp, #0x48]
+_02019BF6:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _02019C04
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_02019C04:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _02019BF6
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xb8]
+ mov r0, #0x0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ bgt _02019C24
+ bl FUN_0201A8BC
+_02019C24:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0xb8]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x230]
+ ldr r0, [sp, #0x20]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x234]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ cmp r0, #0x0
+ ble _02019CD8
+ ble _02019CD8
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x40]
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0xb4]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x40]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xb0]
+ str r0, [sp, #0xac]
+_02019C76:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xb4]
+ str r5, [sp, #0x2b0]
+ add r0, r5, r0
+ ldr r5, [sp, #0x230]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019CCA
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2b4]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2b8]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2b8]
+ and r6, r5
+ ldr r5, [sp, #0x2b4]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x234]
+ cmp r0, #0x0
+ beq _02019CCA
+ ldr r6, [sp, #0x2b0]
+ ldr r0, [sp, #0xb0]
+ add r6, r6, r0
+ ldr r0, [sp, #0xac]
+ strb r5, [r0, r6]
+_02019CCA:
+ ldr r0, [sp, #0x8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019C76
+_02019CD8:
+ ldr r0, [sp, #0x234]
+ cmp r0, #0x0
+ beq _02019CE6
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _02019CEC
+_02019CE6:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_02019CEC:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x20]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x20]
+ cmp r0, r1
+ blt _02019C24
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+_02019D06:
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x220]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x228]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x0
+ str r0, [sp, #0x22c]
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x38]
+_02019D2A:
+ ldr r0, [sp, #0x220]
+ ldr r1, [sp, #0x3c]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x21c]
+ ldr r0, [sp, #0x22c]
+ ldr r6, [sp, #0x38]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x224]
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x228]
+ mov r1, #0x0
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x228]
+ str r6, [sp, #0xc4]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ str r3, [sp, #0x34]
+ add r4, r1, #0x0
+ str r5, [sp, #0xc0]
+ str r0, [sp, #0xbc]
+_02019D76:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xc4]
+ str r5, [sp, #0x2bc]
+ add r0, r5, r0
+ ldr r5, [sp, #0x21c]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019DCA
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2c0]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2c4]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2c4]
+ and r6, r5
+ ldr r5, [sp, #0x2c0]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x224]
+ cmp r0, #0x0
+ beq _02019DCA
+ ldr r6, [sp, #0x2bc]
+ ldr r0, [sp, #0xc0]
+ add r6, r6, r0
+ ldr r0, [sp, #0xbc]
+ strb r5, [r0, r6]
+_02019DCA:
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, #0x8
+ blt _02019D76
+ ldr r0, [sp, #0x224]
+ cmp r0, #0x0
+ beq _02019DE4
+ ldr r0, [sp, #0x228]
+ add r0, r0, #0x2
+ str r0, [sp, #0x228]
+ b _02019DEA
+_02019DE4:
+ ldr r0, [sp, #0x228]
+ add r0, r0, #0x1
+ str r0, [sp, #0x228]
+_02019DEA:
+ ldr r0, [sp, #0x220]
+ add r0, r0, #0x4
+ str r0, [sp, #0x220]
+ ldr r0, [sp, #0x22c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x22c]
+ cmp r0, #0x8
+ blt _02019D2A
+ ldr r0, [sp, #0x0]
+ str r0, [sp, #0x20c]
+ add r0, #0x20
+ str r0, [sp, #0x20c]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x214]
+ mov r0, #0x0
+ str r0, [sp, #0x218]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0xd4]
+ add r0, #0x8
+ str r0, [sp, #0xd4]
+_02019E12:
+ ldr r0, [sp, #0x20c]
+ ldr r1, [sp, #0x3c]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0xd4]
+ str r0, [sp, #0x208]
+ ldr r0, [sp, #0x218]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x210]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ str r0, [sp, #0x2c8]
+ sub r0, #0x8
+ str r0, [sp, #0x2c8]
+ cmp r0, #0x0
+ ble _02019ECC
+ ble _02019ECC
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x214]
+ ldr r6, [sp, #0x38]
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x214]
+ str r6, [sp, #0xd0]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xcc]
+ str r0, [sp, #0xc8]
+_02019E6A:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xd0]
+ str r5, [sp, #0x2cc]
+ add r0, r5, r0
+ ldr r5, [sp, #0x208]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019EBE
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2d0]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2d4]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2d4]
+ and r6, r5
+ ldr r5, [sp, #0x2d0]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x210]
+ cmp r0, #0x0
+ beq _02019EBE
+ ldr r6, [sp, #0x2cc]
+ ldr r0, [sp, #0xcc]
+ add r6, r6, r0
+ ldr r0, [sp, #0xc8]
+ strb r5, [r0, r6]
+_02019EBE:
+ ldr r0, [sp, #0x2c8]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _02019E6A
+_02019ECC:
+ ldr r0, [sp, #0x210]
+ cmp r0, #0x0
+ beq _02019EDA
+ ldr r0, [sp, #0x214]
+ add r0, r0, #0x2
+ str r0, [sp, #0x214]
+ b _02019EE0
+_02019EDA:
+ ldr r0, [sp, #0x214]
+ add r0, r0, #0x1
+ str r0, [sp, #0x214]
+_02019EE0:
+ ldr r0, [sp, #0x20c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x20c]
+ ldr r0, [sp, #0x218]
+ add r0, r0, #0x1
+ str r0, [sp, #0x218]
+ cmp r0, #0x8
+ blt _02019E12
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ str r0, [sp, #0x1fc]
+ add r0, #0x40
+ str r0, [sp, #0x1fc]
+ ldr r0, [sp, #0x48]
+ mov r1, #0x1
+ add r0, #0x8
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x204]
+_02019F04:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _02019F12
+ ldr r0, [sp, #0x204]
+ add r0, r0, #0x1
+ str r0, [sp, #0x204]
+_02019F12:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _02019F04
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ str r0, [sp, #0x50]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xe4]
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A008
+_02019F30:
+ ldr r0, [sp, #0x1fc]
+ ldr r1, [sp, #0xe4]
+ ldr r0, [r0, #0x0]
+ ldr r6, [sp, #0x38]
+ str r0, [sp, #0x1f8]
+ ldr r0, [sp, #0x1c]
+ ldr r2, [sp, #0x5c]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x200]
+ ldr r0, [sp, #0x204]
+ mov r1, #0x0
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x204]
+ str r6, [sp, #0xe0]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ ldr r3, [sp, #0x34]
+ add r4, r1, #0x0
+ str r5, [sp, #0xdc]
+ str r0, [sp, #0xd8]
+_02019F78:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+// b _02019F8C
+// nop
+// _02019F88: .word 0x00003FE0
+// _02019F8C:
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xe0]
+ str r5, [sp, #0x2d8]
+ add r0, r5, r0
+ ldr r5, [sp, #0x1f8]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _02019FD4
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2dc]
+ ldrb r5, [r0, r7]
+ str r5, [sp, #0x2e0]
+ mov r5, #0xf0
+ asr r5, r6
+ ldr r6, [sp, #0x2e0]
+ and r6, r5
+ ldr r5, [sp, #0x2dc]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x200]
+ cmp r0, #0x0
+ beq _02019FD4
+ ldr r6, [sp, #0x2d8]
+ ldr r0, [sp, #0xdc]
+ add r6, r6, r0
+ ldr r0, [sp, #0xd8]
+ strb r5, [r0, r6]
+_02019FD4:
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, #0x8
+ blt _02019F78
+ ldr r0, [sp, #0x200]
+ cmp r0, #0x0
+ beq _02019FEE
+ ldr r0, [sp, #0x204]
+ add r0, r0, #0x2
+ str r0, [sp, #0x204]
+ b _02019FF4
+_02019FEE:
+ ldr r0, [sp, #0x204]
+ add r0, r0, #0x1
+ str r0, [sp, #0x204]
+_02019FF4:
+ ldr r0, [sp, #0x1fc]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x1fc]
+ ldr r0, [sp, #0x1c]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ blt _02019F30
+_0201A008:
+ ldr r0, [sp, #0x0]
+ mov r2, #0x0
+ add r0, #0x60
+ str r0, [sp, #0x0]
+ mov r1, #0x1
+_0201A012:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _0201A020
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A020:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _0201A012
+ ldr r0, [sp, #0x50]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xf4]
+ mov r0, #0x0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ bgt _0201A03E
+ bl FUN_0201A8BC
+_0201A03E:
+ ldr r0, [sp, #0x5c]
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+_0201A044:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0xf4]
+ ldr r0, [r0, #0x0]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp, #0x1f0]
+ ldr r0, [sp, #0x18]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1f4]
+ ldr r0, [sp, #0x8]
+ mov r1, #0x0
+ str r0, [sp, #0x2e4]
+ sub r0, #0x8
+ str r0, [sp, #0x2e4]
+ cmp r0, #0x0
+ ble _0201A0FE
+ ble _0201A0FE
+ add r0, r2, #0x0
+ lsl r3, r0, #0x2
+ ldr r0, [sp, #0x48]
+ ldr r6, [sp, #0x38]
+ lsl r5, r0, #0x2
+ ldr r0, =0x00003FE0
+ add r7, r5, #0x0
+ and r0, r5
+ mul r6, r0
+ mov r0, #0x1c
+ and r7, r0
+ ldr r0, [sp, #0x48]
+ str r6, [sp, #0xf0]
+ add r0, r0, #0x1
+ lsl r6, r0, #0x2
+ ldr r0, =0x00003FE0
+ ldr r5, [sp, #0x38]
+ and r0, r6
+ mul r5, r0
+ mov r0, #0x1c
+ and r0, r6
+ add r4, r1, #0x0
+ str r5, [sp, #0xec]
+ str r0, [sp, #0xe8]
+_0201A09C:
+ asr r5, r2, #0x1
+ mov r0, #0x3
+ and r5, r0
+ ldr r0, [sp, #0x278]
+ add r0, r0, r5
+ ldr r5, =0x00003FE0
+ and r5, r3
+ add r5, r0, r5
+ ldr r0, [sp, #0xf0]
+ str r5, [sp, #0x2e8]
+ add r0, r5, r0
+ ldr r5, [sp, #0x1f0]
+ add r6, r5, #0x0
+ lsr r6, r4
+ mov r5, #0xf
+ and r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ beq _0201A0F0
+ lsl r6, r2, #0x1f
+ lsr r6, r6, #0x1d
+ lsl r5, r6
+ str r5, [sp, #0x2ec]
+ ldrb r5, [r0, r7]
+ mov r12, r5
+ mov r5, #0xf0
+ asr r5, r6
+ mov r6, r12
+ and r6, r5
+ ldr r5, [sp, #0x2ec]
+ orr r5, r6
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ strb r5, [r0, r7]
+ ldr r0, [sp, #0x1f4]
+ cmp r0, #0x0
+ beq _0201A0F0
+ ldr r6, [sp, #0x2e8]
+ ldr r0, [sp, #0xec]
+ add r6, r6, r0
+ ldr r0, [sp, #0xe8]
+ strb r5, [r0, r6]
+_0201A0F0:
+ ldr r0, [sp, #0x2e4]
+ add r1, r1, #0x1
+ add r4, r4, #0x4
+ add r3, r3, #0x4
+ add r2, r2, #0x1
+ cmp r1, r0
+ blt _0201A09C
+_0201A0FE:
+ ldr r0, [sp, #0x1f4]
+ cmp r0, #0x0
+ beq _0201A10C
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A112
+_0201A10C:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A112:
+ ldr r0, [sp, #0x0]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x4
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x18]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x18]
+ cmp r0, r1
+ blt _0201A044
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+
+FUN_0201A12C: // 0x0201A12C
+ lsl r1, r2, #0x2
+ mul r1, r3
+ ldr r3, [r5, #0x0]
+ ldrb r2, [r5, #0x9]
+ ldr r0, [sp, #0x0]
+ ldr r3, [r3, #0x0]
+ lsl r1, r1, #0x3
+ bl FUN_02018848
+ str r0, [sp, #0x1ec]
+ cmp r4, #0x3
+ bhi _0201A21E
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #0x6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0201A150:
+
+ lsl r6, r0, #0
+ lsl r6, r1, #3
+ lsl r0, r7, #9
+ lsl r4, r3, #16
+ // jump table (using 16-bit offset)
+ // .short _0201A158 - _0201A150 - 2; case 0
+ // .short _0201A220 - _0201A150 - 2; case 1
+ // .short _0201A3CA - _0201A150 - 2; case 2
+ // .short _0201A56E - _0201A150 - 2; case 3
+_0201A158:
+ ldr r0, [sp, #0x330]
+ ldr r7, [sp, #0x1ec]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10c]
+ mov r0, #0x0
+ str r0, [sp, #0x1e8]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201A21E
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x108]
+_0201A178:
+ ldr r1, [sp, #0x10c]
+ ldr r0, [sp, #0x1e8]
+ mov r4, #0x0
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x310]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x5c]
+ cmp r0, #0x0
+ ble _0201A1FC
+ ble _0201A1FC
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x108]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x100]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x104]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x108]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0xfc]
+ str r0, [sp, #0xf8]
+_0201A1C4:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x104]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A1F0
+ ldr r0, [sp, #0x100]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x310]
+ cmp r0, #0x0
+ beq _0201A1F0
+ ldr r0, [sp, #0xfc]
+ add r2, r3, r0
+ ldr r0, [sp, #0xf8]
+ strb r1, [r0, r2]
+_0201A1F0:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r0
+ blt _0201A1C4
+_0201A1FC:
+ ldr r0, [sp, #0x310]
+ cmp r0, #0x0
+ beq _0201A20A
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A210
+_0201A20A:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A210:
+ ldr r0, [sp, #0x1e8]
+ add r7, #0x8
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x1e8]
+ cmp r1, r0
+ blt _0201A178
+_0201A21E:
+ b _0201A8B6
+_0201A220:
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ str r0, [sp, #0x1e0]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x124]
+ mov r0, #0x0
+ str r0, [sp, #0x1e4]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201A2E6
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x120]
+_0201A24A:
+ ldr r1, [sp, #0x124]
+ ldr r0, [sp, #0x1e4]
+ ldr r5, [sp, #0x5c]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x30c]
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1e0]
+ ldr r2, [sp, #0x120]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x118]
+ ldr r0, [sp, #0x1e0]
+ str r2, [sp, #0x11c]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x120]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ mov r4, #0x0
+ str r2, [sp, #0x114]
+ str r0, [sp, #0x110]
+_0201A28E:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x11c]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A2BA
+ ldr r0, [sp, #0x118]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x30c]
+ cmp r0, #0x0
+ beq _0201A2BA
+ ldr r0, [sp, #0x114]
+ add r2, r3, r0
+ ldr r0, [sp, #0x110]
+ strb r1, [r0, r2]
+_0201A2BA:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, #0x8
+ blt _0201A28E
+ ldr r0, [sp, #0x30c]
+ cmp r0, #0x0
+ beq _0201A2D2
+ ldr r0, [sp, #0x1e0]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1e0]
+ b _0201A2D8
+_0201A2D2:
+ ldr r0, [sp, #0x1e0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1e0]
+_0201A2D8:
+ ldr r0, [sp, #0x1e4]
+ add r7, #0x8
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x1e4]
+ cmp r1, r0
+ blt _0201A24A
+_0201A2E6:
+ ldr r0, [sp, #0x1ec]
+ str r0, [sp, #0x308]
+ add r0, #0x40
+ str r0, [sp, #0x308]
+ ldr r0, [sp, #0x4c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x13c]
+ mov r0, #0x0
+ str r0, [sp, #0x1dc]
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ble _0201A3C8
+ ldr r0, [sp, #0x5c]
+ mov r1, #0x7
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x138]
+_0201A312:
+ ldr r1, [sp, #0x13c]
+ ldr r0, [sp, #0x1dc]
+ ldr r7, [sp, #0x8]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r7, #0x8
+ mov r4, #0x0
+ str r0, [sp, #0x1d8]
+ ldr r5, [sp, #0x5c]
+ cmp r7, #0x0
+ ble _0201A398
+ ble _0201A398
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x138]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x130]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x134]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x138]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x12c]
+ str r0, [sp, #0x128]
+_0201A360:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x134]
+ add r2, r3, r0
+ ldr r0, [sp, #0x308]
+ ldrb r1, [r0, r4]
+ cmp r1, #0x0
+ beq _0201A38E
+ ldr r0, [sp, #0x130]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x1d8]
+ cmp r0, #0x0
+ beq _0201A38E
+ ldr r0, [sp, #0x12c]
+ add r2, r3, r0
+ ldr r0, [sp, #0x128]
+ strb r1, [r0, r2]
+_0201A38E:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r7
+ blt _0201A360
+_0201A398:
+ ldr r0, [sp, #0x1d8]
+ cmp r0, #0x0
+ beq _0201A3B0
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A3B6
+// nop
+// _0201A3A8: .word 0x00003FE0
+// _0201A3AC: .word 0x00007FC0
+_0201A3B0:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A3B6:
+ ldr r0, [sp, #0x308]
+ add r0, #0x8
+ str r0, [sp, #0x308]
+ ldr r0, [sp, #0x1dc]
+ add r1, r0, #0x1
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x1dc]
+ cmp r1, r0
+ blt _0201A312
+_0201A3C8:
+ b _0201A8B6
+_0201A3CA:
+ ldr r0, [sp, #0x48]
+ mov r1, #0x7
+ str r0, [sp, #0x1d0]
+ mov r0, #0x0
+ str r0, [sp, #0x1d4]
+ ldr r0, [sp, #0x330]
+ ldr r7, [sp, #0x1ec]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x150]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x30]
+_0201A3E8:
+ ldr r1, [sp, #0x150]
+ ldr r0, [sp, #0x1d4]
+ mov r4, #0x0
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x304]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x5c]
+ cmp r0, #0x0
+ ble _0201A46C
+ ble _0201A46C
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1d0]
+ ldr r2, [sp, #0x30]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x148]
+ ldr r0, [sp, #0x1d0]
+ str r2, [sp, #0x14c]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x30]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x144]
+ str r0, [sp, #0x140]
+_0201A434:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x14c]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A460
+ ldr r0, [sp, #0x148]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x304]
+ cmp r0, #0x0
+ beq _0201A460
+ ldr r0, [sp, #0x144]
+ add r2, r3, r0
+ ldr r0, [sp, #0x140]
+ strb r1, [r0, r2]
+_0201A460:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r0
+ blt _0201A434
+_0201A46C:
+ ldr r0, [sp, #0x304]
+ cmp r0, #0x0
+ beq _0201A47A
+ ldr r0, [sp, #0x1d0]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1d0]
+ b _0201A480
+_0201A47A:
+ ldr r0, [sp, #0x1d0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1d0]
+_0201A480:
+ ldr r0, [sp, #0x1d4]
+ add r7, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1d4]
+ cmp r0, #0x8
+ blt _0201A3E8
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ add r0, #0x8
+ str r0, [sp, #0x48]
+ add r7, #0x80
+ mov r0, #0x0
+ mov r2, #0x1
+_0201A49A:
+ ldr r1, [sp, #0x330]
+ asr r1, r0
+ tst r1, r2
+ beq _0201A4A8
+ ldr r1, [sp, #0x48]
+ add r1, r1, #0x1
+ str r1, [sp, #0x48]
+_0201A4A8:
+ add r0, r0, #0x1
+ cmp r0, #0x8
+ blt _0201A49A
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x164]
+ mov r0, #0x0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A56C
+_0201A4C4:
+ ldr r1, [sp, #0x164]
+ ldr r0, [sp, #0x14]
+ mov r4, #0x0
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x300]
+ ldr r0, [sp, #0x8]
+ ldr r5, [sp, #0x5c]
+ cmp r0, #0x0
+ ble _0201A548
+ ble _0201A548
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x30]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x15c]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x160]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x30]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x158]
+ str r0, [sp, #0x154]
+_0201A510:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x160]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A53C
+ ldr r0, [sp, #0x15c]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x300]
+ cmp r0, #0x0
+ beq _0201A53C
+ ldr r0, [sp, #0x158]
+ add r2, r3, r0
+ ldr r0, [sp, #0x154]
+ strb r1, [r0, r2]
+_0201A53C:
+ ldr r0, [sp, #0x8]
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r0
+ blt _0201A510
+_0201A548:
+ ldr r0, [sp, #0x300]
+ cmp r0, #0x0
+ beq _0201A556
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A55C
+_0201A556:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A55C:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x1
+ sub r1, #0x8
+ add r7, #0x8
+ str r0, [sp, #0x14]
+ cmp r0, r1
+ blt _0201A4C4
+_0201A56C:
+ b _0201A8B6
+_0201A56E:
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ str r0, [sp, #0x1c8]
+ ldr r0, [sp, #0x330]
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0x0
+ str r0, [sp, #0x1cc]
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x58]
+ mov r1, #0x7
+ and r1, r0
+ add r0, r0, r1
+ asr r0, r0, #0x3
+ str r0, [sp, #0x28]
+_0201A590:
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x1cc]
+ ldr r5, [sp, #0x5c]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x2fc]
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1c8]
+ ldr r2, [sp, #0x28]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x170]
+ ldr r0, [sp, #0x1c8]
+ str r2, [sp, #0x174]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ mov r4, #0x0
+ str r6, [sp, #0x24]
+ str r2, [sp, #0x16c]
+ str r0, [sp, #0x168]
+_0201A5D6:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x174]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A602
+ ldr r0, [sp, #0x170]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x2fc]
+ cmp r0, #0x0
+ beq _0201A602
+ ldr r0, [sp, #0x16c]
+ add r2, r3, r0
+ ldr r0, [sp, #0x168]
+ strb r1, [r0, r2]
+_0201A602:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, #0x8
+ blt _0201A5D6
+ ldr r0, [sp, #0x2fc]
+ cmp r0, #0x0
+ beq _0201A61A
+ ldr r0, [sp, #0x1c8]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1c8]
+ b _0201A620
+_0201A61A:
+ ldr r0, [sp, #0x1c8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c8]
+_0201A620:
+ ldr r0, [sp, #0x1cc]
+ add r7, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0x1cc]
+ cmp r0, #0x8
+ blt _0201A590
+ ldr r0, [sp, #0x1ec]
+ str r0, [sp, #0x2f8]
+ add r0, #0x40
+ str r0, [sp, #0x2f8]
+ ldr r0, [sp, #0x48]
+ str r0, [sp, #0x1c0]
+ mov r0, #0x0
+ str r0, [sp, #0x1c4]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x188]
+ add r0, #0x8
+ str r0, [sp, #0x188]
+_0201A644:
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x1c4]
+ ldr r7, [sp, #0x8]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r7, #0x8
+ mov r4, #0x0
+ str r0, [sp, #0x1bc]
+ ldr r5, [sp, #0x188]
+ cmp r7, #0x0
+ ble _0201A6CA
+ ble _0201A6CA
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x1c0]
+ ldr r2, [sp, #0x28]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x180]
+ ldr r0, [sp, #0x1c0]
+ str r2, [sp, #0x184]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x17c]
+ str r0, [sp, #0x178]
+_0201A692:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x184]
+ add r2, r3, r0
+ ldr r0, [sp, #0x2f8]
+ ldrb r1, [r0, r4]
+ cmp r1, #0x0
+ beq _0201A6C0
+ ldr r0, [sp, #0x180]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x1bc]
+ cmp r0, #0x0
+ beq _0201A6C0
+ ldr r0, [sp, #0x17c]
+ add r2, r3, r0
+ ldr r0, [sp, #0x178]
+ strb r1, [r0, r2]
+_0201A6C0:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r7
+ blt _0201A692
+_0201A6CA:
+ ldr r0, [sp, #0x1bc]
+ cmp r0, #0x0
+ beq _0201A6D8
+ ldr r0, [sp, #0x1c0]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1c0]
+ b _0201A6DE
+_0201A6D8:
+ ldr r0, [sp, #0x1c0]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c0]
+_0201A6DE:
+ ldr r0, [sp, #0x2f8]
+ add r0, #0x8
+ str r0, [sp, #0x2f8]
+ ldr r0, [sp, #0x1c4]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c4]
+ cmp r0, #0x8
+ blt _0201A644
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x1ec]
+ add r0, #0x8
+ add r7, #0x80
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x1b8]
+ mov r0, #0x0
+ mov r2, #0x1
+_0201A6FE:
+ ldr r1, [sp, #0x330]
+ asr r1, r0
+ tst r1, r2
+ beq _0201A70C
+ ldr r1, [sp, #0x1b8]
+ add r1, r1, #0x1
+ str r1, [sp, #0x1b8]
+_0201A70C:
+ add r0, r0, #0x1
+ cmp r0, #0x8
+ blt _0201A6FE
+ ldr r0, [sp, #0x330]
+ asr r0, r0, #0x8
+ str r0, [sp, #0x44]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x19c]
+ mov r0, #0x0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A7CE
+_0201A72A:
+ ldr r1, [sp, #0x19c]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x28]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x2f4]
+ ldr r0, [sp, #0x1b8]
+ mov r3, #0x38
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+// b _0201A74C
+// nop
+// _0201A748: .word 0x00007FC0
+// _0201A74C:
+ ldr r5, [sp, #0x5c]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x194]
+ ldr r0, [sp, #0x1b8]
+ str r2, [sp, #0x198]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ ldr r6, [sp, #0x24]
+ mov r4, #0x0
+ str r2, [sp, #0x190]
+ str r0, [sp, #0x18c]
+_0201A774:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x198]
+ ldrb r1, [r7, r4]
+ add r2, r3, r0
+ cmp r1, #0x0
+ beq _0201A7A0
+ ldr r0, [sp, #0x194]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x2f4]
+ cmp r0, #0x0
+ beq _0201A7A0
+ ldr r0, [sp, #0x190]
+ add r2, r3, r0
+ ldr r0, [sp, #0x18c]
+ strb r1, [r0, r2]
+_0201A7A0:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, #0x8
+ blt _0201A774
+ ldr r0, [sp, #0x2f4]
+ cmp r0, #0x0
+ beq _0201A7B8
+ ldr r0, [sp, #0x1b8]
+ add r0, r0, #0x2
+ str r0, [sp, #0x1b8]
+ b _0201A7BE
+_0201A7B8:
+ ldr r0, [sp, #0x1b8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1b8]
+_0201A7BE:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x4]
+ add r0, r0, #0x1
+ sub r1, #0x8
+ add r7, #0x8
+ str r0, [sp, #0x10]
+ cmp r0, r1
+ blt _0201A72A
+_0201A7CE:
+ ldr r0, [sp, #0x1ec]
+ mov r2, #0x0
+ str r0, [sp, #0x2f0]
+ add r0, #0xc0
+ str r0, [sp, #0x2f0]
+ mov r1, #0x1
+_0201A7DA:
+ ldr r0, [sp, #0x330]
+ asr r0, r2
+ tst r0, r1
+ beq _0201A7E8
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A7E8:
+ add r2, r2, #0x1
+ cmp r2, #0x8
+ blt _0201A7DA
+ ldr r0, [sp, #0x44]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1b0]
+ mov r0, #0x0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ sub r0, #0x8
+ cmp r0, #0x0
+ ble _0201A8B6
+ ldr r0, [sp, #0x5c]
+ add r0, #0x8
+ str r0, [sp, #0x5c]
+_0201A808:
+ ldr r1, [sp, #0x1b0]
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ asr r1, r0
+ mov r0, #0x1
+ and r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ sub r7, #0x8
+ mov r4, #0x0
+ str r0, [sp, #0x1b4]
+ ldr r5, [sp, #0x5c]
+ cmp r7, #0x0
+ ble _0201A88E
+ ble _0201A88E
+ add r0, r5, #0x0
+ lsl r6, r0, #0x3
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x28]
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ mov r3, #0x38
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r0, [sp, #0x1a8]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x1ac]
+ add r0, r0, #0x1
+ lsl r1, r0, #0x3
+ ldr r0, =0x00007FC0
+ ldr r2, [sp, #0x28]
+ and r0, r1
+ mul r2, r0
+ add r0, r1, #0x0
+ and r0, r3
+ str r2, [sp, #0x1a4]
+ str r0, [sp, #0x1a0]
+_0201A856:
+ mov r0, #0x7
+ add r1, r5, #0x0
+ and r1, r0
+ ldr r0, [sp, #0x278]
+ add r1, r0, r1
+ ldr r0, =0x00007FC0
+ and r0, r6
+ add r3, r1, r0
+ ldr r0, [sp, #0x1ac]
+ add r2, r3, r0
+ ldr r0, [sp, #0x2f0]
+ ldrb r1, [r0, r4]
+ cmp r1, #0x0
+ beq _0201A884
+ ldr r0, [sp, #0x1a8]
+ strb r1, [r2, r0]
+ ldr r0, [sp, #0x1b4]
+ cmp r0, #0x0
+ beq _0201A884
+ ldr r0, [sp, #0x1a4]
+ add r2, r3, r0
+ ldr r0, [sp, #0x1a0]
+ strb r1, [r0, r2]
+_0201A884:
+ add r4, r4, #0x1
+ add r6, #0x8
+ add r5, r5, #0x1
+ cmp r4, r7
+ blt _0201A856
+_0201A88E:
+ ldr r0, [sp, #0x1b4]
+ cmp r0, #0x0
+ beq _0201A89C
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x2
+ str r0, [sp, #0x48]
+ b _0201A8A2
+_0201A89C:
+ ldr r0, [sp, #0x48]
+ add r0, r0, #0x1
+ str r0, [sp, #0x48]
+_0201A8A2:
+ ldr r0, [sp, #0x2f0]
+ ldr r1, [sp, #0x4]
+ add r0, #0x8
+ str r0, [sp, #0x2f0]
+ ldr r0, [sp, #0xc]
+ sub r1, #0x8
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ cmp r0, r1
+ blt _0201A808
+_0201A8B6:
+ ldr r0, [sp, #0x1ec]
+ bl FreeToHeap
+
+FUN_0201A8BC: // 0x0201A8BC
+ add sp, #0x1fc
+ add sp, #0x118
+ pop {r4-r7, pc}
+ // clang-format on
+}
+#endif
+
+THUMB_FUNC void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3)
+{
+ if (window->unk00->unk08[window->unk04].unk1e == 0)
+ {
+ FUN_0201A8E8(window, param1, param2, param3);
+ }
+ else
+ {
+ FUN_0201A9D4(window, param1, param2, param3);
+ }
+}
+
+THUMB_FUNC void FUN_0201A8E8(struct Window *window, u32 param1, u8 param2, u8 param3)
+{
+ void *r2;
+ int r5, r1, r3;
+ int st4, stc;
+ u32 st8;
+ int i, j;
+
+ r2 = window->unk0c;
+ st4 = (param3 << 0x18) | (param3 << 0x10) | (param3 << 0x8) | param3;
+ stc = window->height * window->width * 32;
+ st8 = window->width;
+
+ switch (param1)
+ {
+ case 0:
+ for (i = 0; i < stc; i += 32)
+ {
+ r3 = param2;
+ for (j = 0; j < 8; j++)
+ {
+ r5 = i + (j << 2);
+ r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 2);
+
+ if (r1 < stc)
+ {
+ *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1);
+ }
+ else
+ {
+ *(u32 *)(r2 + r5) = (u32)st4;
+ }
+
+ r3++;
+ }
+ }
+
+ break;
+ case 1:
+ r2 += stc - 4;
+ for (i = 0; i < stc; i += 32)
+ {
+ r3 = param2;
+ for (j = 0; j < 8; j++)
+ {
+ r5 = i + (j << 2);
+ r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 2);
+
+ if (r1 < stc)
+ {
+ *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1);
+ }
+ else
+ {
+ *(u32 *)(r2 - r5) = (u32)st4;
+ }
+
+ r3++;
+ }
+ }
+
+ break;
+ case 2:
+ case 3:
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_0201A9D4(struct Window *window, u32 param1, u8 param2, u8 param3)
+{
+
+ void *r2;
+ int r5, r1, r3;
+ int st4, stc;
+ u32 st8;
+ int i, j;
+
+ r2 = (u8 *)window->unk0c;
+ st4 = (param3 << 0x18) | (param3 << 0x10) | (param3 << 0x8) | param3;
+ stc = window->height * window->width * 64;
+ st8 = window->width;
+
+ switch (param1)
+ {
+ case 0:
+ for (i = 0; i < stc; i += 64)
+ {
+ r3 = param2;
+ for (j = 0; j < 8; j++)
+ {
+ r5 = i + (j << 3);
+ r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 3);
+
+ if (r1 < stc)
+ {
+ *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1);
+ }
+ else
+ {
+ *(u32 *)(r2 + r5) = (u32)st4;
+ }
+
+ r5 += 4;
+ r1 += 4;
+ if (r1 < stc + 4)
+ {
+ *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1);
+ }
+ else
+ {
+ *(u32 *)(r2 + r5) = (u32)st4;
+ }
+
+ r3++;
+ }
+ }
+
+ break;
+ case 1:
+ r2 += stc - 8;
+ for (i = 0; i < stc; i += 64)
+ {
+ r3 = param2;
+ for (j = 0; j < 8; j++)
+ {
+ r5 = i + (j << 3);
+ r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 3);
+
+ if (r1 < stc)
+ {
+ *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1);
+ }
+ else
+ {
+ *(u32 *)(r2 - r5) = (u32)st4;
+ }
+
+ r5 -= 4;
+ r1 -= 4;
+ if (r1 < stc - 4)
+ {
+ *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1);
+ }
+ else
+ {
+ *(u32 *)(r2 - r5) = (u32)st4;
+ }
+
+ r3++;
+ }
+ }
+
+ break;
+ case 2:
+ case 3:
+ break;
+ }
+}
+
+THUMB_FUNC u8 FUN_0201AB08(struct Window *window)
+{
+ return window->unk04;
+}
+
+THUMB_FUNC u8 GetWindowWidth(struct Window *window)
+{
+ return window->width;
+}
+THUMB_FUNC u8 GetWindowHeight(struct Window *window)
+{
+ return window->height;
+}
+THUMB_FUNC u8 FUN_0201AB14(struct Window *window)
+{
+ return window->unk05;
+}
+THUMB_FUNC u8 FUN_0201AB18(struct Window *window)
+{
+ return window->unk06;
+}
+THUMB_FUNC void FUN_0201AB1C(struct Window *window, u8 param1)
+{
+ window->unk05 = param1;
+}
+THUMB_FUNC void FUN_0201AB20(struct Window *window, u8 param1)
+{
+ window->unk06 = param1;
+}
+THUMB_FUNC void FUN_0201AB24(struct Window *window, u8 param1)
+{
+ window->unk09 = param1;
+}
+
+THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path)
+{
+ void *ptr = FUN_020161A4(heap_id, path);
+ window->unk00 = ptr;
+ u32 st0;
+ NNS_G2dGetUnpackedBGCharacterData(ptr, &st0);
+
+ return st0;
+}
+
+THUMB_FUNC u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path)
+{
+ void *ptr = FUN_020161A4(heap_id, path);
+ window->unk00 = ptr;
+ u32 st0;
+ NNS_G2dGetUnpackedPaletteData(ptr, &st0);
+
+ return st0;
+}
+
+THUMB_FUNC void FUN_0201AB60(struct UnkStruct_02016B94_2 *param0)
+{
+ FUN_0201AC78(param0);
+ FUN_0201AB78(param0);
+
+ param0->unk04 = 0;
+ param0->unk06 = 0;
+}
+
+THUMB_FUNC void FUN_0201AB78(struct UnkStruct_02016B94_2 *param0)
+{
+ if ((param0->unk06 & 1) != 0)
+ {
+ FUN_02017D68(0, param0->unk08[0].unk08, param0->unk08[0].unk10 * 2, param0->unk08[0].unk0c);
+ }
+
+ if ((param0->unk06 & 2) != 0)
+ {
+ FUN_02017D68(1, param0->unk08[1].unk08, param0->unk08[1].unk10 * 2, param0->unk08[1].unk0c);
+ }
+
+ if ((param0->unk06 & 4) != 0)
+ {
+ FUN_02017D68(2, param0->unk08[2].unk08, param0->unk08[2].unk10 * 2, param0->unk08[2].unk0c);
+ }
+
+ if ((param0->unk06 & 8) != 0)
+ {
+ FUN_02017D68(3, param0->unk08[3].unk08, param0->unk08[3].unk10 * 2, param0->unk08[3].unk0c);
+ }
+
+ if ((param0->unk06 & 0x10) != 0)
+ {
+ FUN_02017D68(4, param0->unk08[4].unk08, param0->unk08[4].unk10 * 2, param0->unk08[4].unk0c);
+ }
+
+ if ((param0->unk06 & 0x20) != 0)
+ {
+ FUN_02017D68(5, param0->unk08[5].unk08, param0->unk08[5].unk10 * 2, param0->unk08[5].unk0c);
+ }
+
+ if ((param0->unk06 & 0x40) != 0)
+ {
+ FUN_02017D68(6, param0->unk08[6].unk08, param0->unk08[6].unk10 * 2, param0->unk08[6].unk0c);
+ }
+
+ if ((param0->unk06 & 0x80) != 0)
+ {
+ FUN_02017D68(7, param0->unk08[7].unk08, param0->unk08[7].unk10 * 2, param0->unk08[7].unk0c);
+ }
+}
+
+THUMB_FUNC void FUN_0201AC68(struct UnkStruct_02016B94_2 *param0, u32 param1)
+{
+ param0->unk06 |= 1 << param1;
+}
+
+THUMB_FUNC void FUN_0201AC78(struct UnkStruct_02016B94_2 *param0)
+{
+ if ((param0->unk04 & 1) != 0)
+ {
+ reg_G2_BG0OFS = (u32)(
+ (param0->unk08[0].unk14 & 0x1ff) | ((param0->unk08[0].unk18 << 0x10) & 0x1ff0000));
+ }
+
+ if ((param0->unk04 & 2) != 0)
+ {
+ reg_G2_BG1OFS = (u32)(
+ (param0->unk08[1].unk14 & 0x1ff) | ((param0->unk08[1].unk18 << 0x10) & 0x1ff0000));
+ }
+
+ if ((param0->unk04 & 4) != 0)
+ {
+ if (param0->unk08[2].unk1c == 0)
+ {
+ reg_G2_BG2OFS = (u32)(
+ (param0->unk08[2].unk14 & 0x1ff) | ((param0->unk08[2].unk18 << 0x10) & 0x1ff0000));
+ }
+ else
+ {
+ struct Mtx22 st38;
+ MTX22_2DAffine(
+ &st38, param0->unk08[2].unk20, param0->unk08[2].unk24, param0->unk08[2].unk28, 2);
+ G2x_SetBGyAffine_(reg_G2_BG2P,
+ &st38,
+ param0->unk08[2].unk2c,
+ param0->unk08[2].unk30,
+ param0->unk08[2].unk14,
+ param0->unk08[2].unk18);
+ }
+ }
+
+ if ((param0->unk04 & 8) != 0)
+ {
+ if (param0->unk08[3].unk1c == 0)
+ {
+ reg_G2_BG3OFS = (u32)(
+ (param0->unk08[3].unk14 & 0x1ff) | ((param0->unk08[3].unk18 << 0x10) & 0x1ff0000));
+ }
+ else
+ {
+ struct Mtx22 st28;
+ MTX22_2DAffine(
+ &st28, param0->unk08[3].unk20, param0->unk08[3].unk24, param0->unk08[3].unk28, 2);
+ G2x_SetBGyAffine_(reg_G2_BG3P,
+ &st28,
+ param0->unk08[3].unk2c,
+ param0->unk08[3].unk30,
+ param0->unk08[3].unk14,
+ param0->unk08[3].unk18);
+ }
+ }
+
+ if ((param0->unk04 & 0x10) != 0)
+ {
+ reg_G2S_DB_BG0OFS = (u32)(
+ (param0->unk08[4].unk14 & 0x1ff) | ((param0->unk08[4].unk18 << 0x10) & 0x1ff0000));
+ }
+
+ if ((param0->unk04 & 0x20) != 0)
+ {
+ reg_G2S_DB_BG1OFS = (u32)(
+ (param0->unk08[5].unk14 & 0x1ff) | ((param0->unk08[5].unk18 << 0x10) & 0x1ff0000));
+ }
+
+ if ((param0->unk04 & 0x40) != 0)
+ {
+ if (param0->unk08[6].unk1c == 0)
+ {
+ reg_G2S_DB_BG2OFS = (u32)(
+ (param0->unk08[6].unk14 & 0x1ff) | ((param0->unk08[6].unk18 << 0x10) & 0x1ff0000));
+ }
+ else
+ {
+ struct Mtx22 st18;
+ MTX22_2DAffine(
+ &st18, param0->unk08[6].unk20, param0->unk08[6].unk24, param0->unk08[6].unk28, 2);
+ G2x_SetBGyAffine_(reg_G2S_DB_BG2P,
+ &st18,
+ param0->unk08[6].unk2c,
+ param0->unk08[6].unk30,
+ param0->unk08[6].unk14,
+ param0->unk08[6].unk18);
+ }
+ }
+
+ if ((param0->unk04 & 0x80) != 0)
+ {
+ if (param0->unk08[7].unk1c == 0)
+ {
+ reg_G2S_DB_BG3OFS = (u32)(
+ (param0->unk08[7].unk14 & 0x1ff) | ((param0->unk08[7].unk18 << 0x10) & 0x1ff0000));
+ }
+ else
+ {
+ struct Mtx22 st08;
+ MTX22_2DAffine(
+ &st08, param0->unk08[7].unk20, param0->unk08[7].unk24, param0->unk08[7].unk28, 2);
+ G2x_SetBGyAffine_(reg_G2S_DB_BG3P,
+ &st08,
+ param0->unk08[7].unk2c,
+ param0->unk08[7].unk30,
+ param0->unk08[7].unk14,
+ param0->unk08[7].unk18);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_0201AEE4(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3)
+{
+ FUN_02017B8C(&param0->unk08[param1], param2, param3);
+ param0->unk04 |= 1 << param1;
+}
+
+THUMB_FUNC void FUN_0201AF08(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u16 param3)
+{
+ FUN_0201AF2C(&param0->unk08[param1], param2, param3);
+ param0->unk04 |= 1 << param1;
+}
+
+THUMB_FUNC void FUN_0201AF2C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, u16 val)
+{
+ switch (param1)
+ {
+ case 0:
+ param0->unk20 = val;
+ break;
+ case 1:
+ param0->unk20 += val;
+ break;
+ case 2:
+ param0->unk20 -= val;
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_0201AF50(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3)
+{
+ FUN_0201AF74(&param0->unk08[param1], param2, param3);
+ param0->unk04 |= 1 << param1;
+}
+
+THUMB_FUNC void FUN_0201AF74(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val)
+{
+ switch (param1 - 9)
+ {
+ case 0:
+ param0->unk2c = val;
+ break;
+ case 1:
+ param0->unk2c += val;
+ break;
+ case 2:
+ param0->unk2c -= val;
+ break;
+ case 3:
+ param0->unk30 = val;
+ break;
+ case 4:
+ param0->unk30 += val;
+ break;
+ case 5:
+ param0->unk30 -= val;
+ break;
+ }
+}
+
+THUMB_FUNC u32 FUN_0201AFBC(
+ struct UnkStruct_02016B94_2 *param0, u8 param1, u8 param2, u8 param3, u16 *param4)
+{
+ void *st18;
+ u16 r6;
+ u8 st14;
+ u8 st10;
+ u8 r5;
+ u8 i;
+
+ if (param0->unk08[param1].unk08 == NULL)
+ {
+ return 0;
+ }
+
+ r6 = FUN_02017FFC((u8)(param2 >> 3), (u8)(param3 >> 3), param0->unk08[param1].unk1d);
+ st18 = FUN_020187B0(param1);
+
+ st14 = (u8)(param2 & 7);
+ st10 = (u8)(param3 & 7);
+
+ if (param0->unk08[param1].unk1e == 0)
+ {
+ u16 *stc = param0->unk08[param1].unk08;
+ u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40);
+
+ st18 += ((stc[r6] & 0x3ff) << 5);
+ for (i = 0; i < 0x20; i++)
+ {
+ ptr[(i << 1)] = (u8)(((u8 *)st18)[i] & 0xf);
+ ptr[(i << 1) + 1] = (u8)(((u8 *)st18)[i] >> 4);
+ }
+
+ FUN_0201B118(param0, (u8)((stc[r6] >> 0xa) & 3), ptr);
+
+ r5 = ptr[st14 + (st10 << 3)];
+ FreeToHeap(ptr);
+
+ if ((param4[0] & (1 << r5)) != 0)
+ {
+ return 1;
+ }
+ }
+ else
+ {
+ if (param0->unk08[param1].unk1c != 1)
+ {
+ u16 *r4 = param0->unk08[param1].unk08;
+ u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40);
+
+ memcpy(ptr, st18 + ((r4[r6] & 0x3ff) << 6), 0x40);
+
+ FUN_0201B118(param0, (u8)((r4[r6] >> 0xa) & 3), ptr);
+
+ r5 = ptr[st14 + (st10 << 3)];
+ FreeToHeap(ptr);
+ }
+ else
+ {
+ r5 = ((u8 *)st18)[(((u8 *)param0->unk08[param1].unk08)[r6] << 6) + st14 + (st10 << 3)];
+ }
+
+ while (TRUE)
+ {
+ if (param4[0] == 0xffff)
+ {
+ break;
+ }
+ if (r5 == (u8)(param4[0]))
+ {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+THUMB_FUNC void FUN_0201B118(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 *param2)
+{
+ u8 i, j;
+ if (param1 != 0)
+ {
+ u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40);
+
+ if ((param1 & 1) != 0)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ ptr[i * 8 + j] = param2[i * 8 + (7 - j)];
+ }
+ }
+
+ memcpy(param2, ptr, 0x40);
+ }
+
+ if ((param1 & 2) != 0)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ u8 *r3 = &ptr[i * 8];
+ u8 *r2 = &param2[(7 - i) * 8];
+ for (u32 j = 8; j > 0; j--)
+ {
+ *r3++ = *r2++;
+ }
+ }
+
+ memcpy(param2, ptr, 0x40);
+ }
+
+ FreeToHeap(ptr);
+ }
+}
diff --git a/arm9/src/unk_02021934.c b/arm9/src/unk_02021934.c
index cd66a136..ebc600fa 100644
--- a/arm9/src/unk_02021934.c
+++ b/arm9/src/unk_02021934.c
@@ -109,31 +109,31 @@ struct String * StringDup(struct String * src, u32 heap_id)
return dest;
}
-static const u16 sCharset_JP[10] = {
- 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
- 0xA7, 0xA8, 0xA9, 0xAA, 0xAB
-};
-
-static const u16 sCharset_EN[10] = {
- 0x121, 0x122, 0x123, 0x124, 0x125,
- 0x126, 0x127, 0x128, 0x129, 0x12A
-};
-
-static const u32 sPowersOfTen[10] = {
- 1,
- 10,
- 100,
- 1000,
- 10000,
- 100000,
- 1000000,
- 10000000,
- 100000000,
- 1000000000
-};
-
void String16_FormatInteger(struct String * str, int num, u32 ndigits, int strConvMode, BOOL whichCharset)
{
+ static const u16 sCharset_EN[10] = {
+ 0x121, 0x122, 0x123, 0x124, 0x125,
+ 0x126, 0x127, 0x128, 0x129, 0x12A
+ };
+
+ static const u16 sCharset_JP[10] = {
+ 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
+ 0xA7, 0xA8, 0xA9, 0xAA, 0xAB
+ };
+
+ static const u32 sPowersOfTen[10] = {
+ 1,
+ 10,
+ 100,
+ 1000,
+ 10000,
+ 100000,
+ 1000000,
+ 10000000,
+ 100000000,
+ 1000000000
+ };
+
ASSERT_STR16(str);
const u16 * charbase;
diff --git a/arm9/src/unk_02022504.c b/arm9/src/unk_02022504.c
new file mode 100644
index 00000000..7f50815b
--- /dev/null
+++ b/arm9/src/unk_02022504.c
@@ -0,0 +1,32 @@
+#include "global.h"
+#include "unk_02022504.h"
+
+THUMB_FUNC void *FUN_02022504(struct SaveBlock2 *sav2)
+{
+ return SavArray_get(sav2, 27);
+}
+
+THUMB_FUNC struct PCStorage *GetStoragePCPointer(struct SaveBlock2 *sav2)
+{
+ return SavArray_get(sav2, 35);
+}
+
+THUMB_FUNC void *FUN_0202251C(struct SaveBlock2 *sav2)
+{
+ return SavArray_get(sav2, 31);
+}
+
+THUMB_FUNC void *FUN_02022528(struct SaveBlock2 *sav2)
+{
+ return SavArray_get(sav2, 32);
+}
+
+THUMB_FUNC u8 *LoadHallOfFame(struct SaveBlock2 *sav2, u32 heap_id, int *ret_p)
+{
+ return ReadSaveFileFromFlash(sav2, heap_id, 0, ret_p);
+}
+
+THUMB_FUNC s32 SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data)
+{
+ return WriteSaveFileToFlash(sav2, 0, data);
+}
diff --git a/arm9/src/unk_02024E64.c b/arm9/src/unk_02024E64.c
index d8682531..ad6a7eac 100644
--- a/arm9/src/unk_02024E64.c
+++ b/arm9/src/unk_02024E64.c
@@ -10,14 +10,14 @@ THUMB_FUNC u32 FUN_02024E64()
THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0)
{
- MIi_CpuClearFast(0, param0, sizeof(struct UnkStruct_02024E64));
+ MI_CpuClearFast(param0, sizeof(struct UnkStruct_02024E64));
FUN_020250A4(param0->unk0);
FUN_02025484(param0->unk700);
- MIi_CpuClear16(0xFFFF, param0->rival_name_buf, sizeof(param0->rival_name_buf) / sizeof(u16));
- MIi_CpuClear16(0xFFFF, param0->unk734, sizeof(param0->unk734) / sizeof(u16));
+ MI_CpuFill16(param0->rival_name_buf, EOS, sizeof(param0->rival_name_buf) / sizeof(u16));
+ MI_CpuFill16(param0->unk734, EOS, sizeof(param0->unk734) / sizeof(u16));
}
THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2)
diff --git a/arm9/src/unk_02025484.c b/arm9/src/unk_02025484.c
index 733ac23a..96da04c9 100644
--- a/arm9/src/unk_02025484.c
+++ b/arm9/src/unk_02025484.c
@@ -3,14 +3,14 @@
#include "error_handling.h"
#include "unk_02025484.h"
-THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0, u32 r1)
+THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0)
{
MI_CpuFill8(r0, 0, sizeof(struct unk_2025484));
}
THUMB_FUNC u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1)
{
- FUN_02025484(r0, r1);
+ FUN_02025484(r0);
r0->unk0 = r1;
return &r0->unk4;
}
diff --git a/arm9/src/unk_020286F8.c b/arm9/src/unk_020286F8.c
index f54d1e2e..a23a94ff 100644
--- a/arm9/src/unk_020286F8.c
+++ b/arm9/src/unk_020286F8.c
@@ -75,9 +75,9 @@ void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct Stri
CopyStringToU16Array(k, ptr[i].unk_10, 8);
}
-void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j)
+void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j)
{
- ptr[i].unk_20 = j;
+ ptr[i].unk_20 = (u8)j;
}
u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i)
@@ -90,10 +90,9 @@ u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i)
return ptr[i].unk_21;
}
-
-void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j)
+void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j)
{
- ptr[i].unk_21 = j;
+ ptr[i].unk_21 = (u8)j;
}
struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2)
diff --git a/arm9/src/unk_0202ABBC.c b/arm9/src/unk_0202ABBC.c
index 7bc9d3fc..75a43f60 100644
--- a/arm9/src/unk_0202ABBC.c
+++ b/arm9/src/unk_0202ABBC.c
@@ -15,7 +15,7 @@ THUMB_FUNC u32 FUN_0202ABC8()
THUMB_FUNC void FUN_0202ABCC(struct Unk0202ABBC* unk)
{
- MIi_CpuClearFast(0, unk, 0xf4);
+ MI_CpuClearFast(unk, sizeof(struct Unk0202ABBC));
}
THUMB_FUNC u16 FUN_0202ABDC(struct Unk0202ABBC* unk)
@@ -30,12 +30,12 @@ THUMB_FUNC void FUN_0202ABE4(struct Unk0202ABBC* unk, u16 data)
THUMB_FUNC void FUN_0202ABEC(void *srcp, void *destp)
{
- MIi_CpuCopyFast(srcp, destp, 0xec);
+ MI_CpuCopyFast(srcp, destp, 0xec);
}
THUMB_FUNC void FUN_0202ABF8(void *destp, void *srcp)
{
- MIi_CpuCopyFast(srcp, destp, 0xec);
+ MI_CpuCopyFast(srcp, destp, 0xec);
}
THUMB_FUNC u32 FUN_0202AC08(struct Unk0202ABBC* unk)
diff --git a/arm9/src/unk_0202D858.c b/arm9/src/unk_0202D858.c
new file mode 100644
index 00000000..45c7c776
--- /dev/null
+++ b/arm9/src/unk_0202D858.c
@@ -0,0 +1,96 @@
+#include "unk_0202D858.h"
+
+struct UnkStruct_0202D858
+{
+ u8 unk00[0x1a];
+};
+
+static const struct UnkStruct_0202D858 UNK_020EEB04 = { {
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x03,
+ 0x03,
+ 0x03,
+ 0x04,
+ 0x03,
+ 0x04,
+ 0x07,
+ 0x03,
+ 0x07,
+ 0x04,
+ 0x01,
+ 0x04,
+ 0x01,
+ 0x01,
+ 0x04,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x00,
+ 0x00,
+} };
+
+static const struct UnkStruct_0202D858 UNK_020EEB1E = { {
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x03,
+ 0x03,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x01,
+ 0x00,
+ 0x00,
+} };
+
+THUMB_FUNC u8 FUN_0202D858(u16 param0)
+{
+ struct UnkStruct_0202D858 st0 = UNK_020EEB04;
+
+ GF_ASSERT(param0 < 0x1a);
+
+ return st0.unk00[param0];
+}
+
+THUMB_FUNC u8 FUN_0202D884(u16 param0)
+{
+ struct UnkStruct_0202D858 st0 = UNK_020EEB1E;
+
+ GF_ASSERT(param0 < 0x1a);
+
+ return st0.unk00[param0];
+}
+
+THUMB_FUNC u32 FUN_0202D8B0(int param0)
+{
+ switch (param0)
+ {
+ case 0x7:
+ case 0x9:
+ case 0xd:
+ case 0x12:
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c
new file mode 100644
index 00000000..2b088d6f
--- /dev/null
+++ b/arm9/src/unk_0202E29C.c
@@ -0,0 +1,1087 @@
+#include "global.h"
+#include "unk_0202E29C.h"
+#include "MI_memory.h"
+#include "OS_cache.h"
+#include "game_init.h"
+#include "heap.h"
+#include "mail_message.h"
+#include "player_data.h"
+#include "unk_0202D858.h"
+#include "unk_0202F150.h"
+#include "unk_02031734.h"
+
+struct UnkStruct_0202E29C_const
+{
+ u8 unk0[6];
+};
+
+const struct UnkStruct_0202E29C_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } };
+
+u16 UNK_021C59E8;
+struct UnkStruct_0202E29C *UNK_021C59F0;
+u32 UNK_021C59EC;
+
+extern u32 FUN_0202CEEC();
+extern u32 FUN_02023AC4();
+extern u32 FUN_02090DB8(u32 param0, void (*param1)(u32, u32), u32 param2);
+extern void FUN_02090CC8(void (*param0)(), u32 param1);
+extern void FUN_0202CE64(void *param0);
+extern void FUN_0202CB70(u32 param0);
+extern void FUN_0202D2F4();
+extern void FUN_0202D0A0(void (*param0)(u32, u8 *, u32), u32 param1);
+extern u32 FUN_0202CBD4();
+extern u32 FUN_0202CBFC();
+extern u32 FUN_0202C570(void (*param0)(struct UnkStruct_0202E29C_sub *, u32), u8 *param1, u32 param2);
+extern u32 FUN_0202D21C();
+extern void FUN_0202C770();
+extern u32 FUN_0202D1E4();
+extern void FUN_0202D100();
+extern u32 FUN_0202D1C8();
+extern u32 FUN_0202D200();
+extern void FUN_0202C4D8(u32 param0, u8 *param1, u32 param2);
+extern void FUN_0202D034(u32 param0, struct UnkStruct_0202E29C_sub *param1);
+extern u32 FUN_0202D358();
+extern void FUN_0202CB7C(void *param0, u32 param1);
+extern void FUN_0202D240(void *param0, u32 size, u32 param2, u32 param3);
+extern void FUN_0202DF54();
+extern u16 FUN_0202D19C();
+extern u32 FUN_0202CBE8();
+extern u32 FUN_0202D178();
+extern u16 FUN_0202CDA4();
+extern void FUN_0202CF84(u32 param0, u16 param1, u16 param2, u32 param3, u32 param4, u32 param5);
+extern u32 FUN_0202CB8C();
+extern u16 WM_GetDispersionBeaconPeriod();
+extern BOOL FUN_0202D2D0();
+
+THUMB_FUNC void FUN_0202E29C(struct PlayerData *player_data)
+{
+ if (UNK_021C59F0 == NULL)
+ {
+ UNK_021C59F0 = AllocFromHeap(0xf, sizeof(struct UnkStruct_0202E29C));
+ MI_CpuFill8(UNK_021C59F0, 0, sizeof(struct UnkStruct_0202E29C));
+
+ UNK_021C59F0->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC());
+ MI_CpuFill8(UNK_021C59F0->unkCA4, 0, FUN_0202CEEC());
+
+ UNK_021C59F0->unkCBC = AllocFromHeap(0xf, FUN_02023AC4());
+ MI_CpuFill8(UNK_021C59F0->unkCBC, 0, FUN_02023AC4());
+
+ UNK_021C59F0->unkCC0 = 0x333;
+ UNK_021C59F0->unkCB8 = player_data;
+
+ MailMsg_init(&UNK_021C59F0->unkCA8);
+ FUN_0202E500();
+ }
+}
+
+THUMB_FUNC BOOL FUN_0202E344()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2)
+{
+ int i = 0;
+ while (i < param2)
+ {
+ if (*param0 != *param1)
+ {
+ return FALSE;
+ }
+
+ i++;
+ param0++;
+ param1++;
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1)
+{
+#pragma unused(param1)
+ s32 r5 = FUN_02033534();
+ u8 r6 = FUN_0203354C();
+ struct UnkStruct_0202E29C_sub4 *r4 = &param0->unk50;
+
+ if (r5 != 0xe)
+ {
+ if (FUN_0202D8B0(r4->unk04) == 0 || FUN_0202D8B0(r5) == 0)
+ {
+ if (r4->unk30[0x24] != 0)
+ {
+ if (r4->unk04 == 0xa)
+ {
+ return;
+ }
+ }
+
+ if (r4->unk04 != r5)
+ {
+ return;
+ }
+ }
+ }
+
+ if (r5 != 0xe)
+ {
+ if (r4->unk05 != r6)
+ {
+ return;
+ }
+ }
+
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ if (!FUN_0202E358(UNK_021C59F0->unk054[i].unk04, param0->unk04, 6))
+ {
+ continue;
+ }
+
+ UNK_021C59F0->unkC84[i] = 0x96;
+
+ MI_CpuCopy8(param0, &UNK_021C59F0->unk054[i], sizeof(struct UnkStruct_0202E29C_sub));
+ return;
+ }
+
+ int i;
+ for (i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ break;
+ }
+ }
+
+ if (i < 0x10)
+ {
+ UNK_021C59F0->unkC84[i] = 0x96;
+ MI_CpuCopy8(param0, &UNK_021C59F0->unk054[i], sizeof(struct UnkStruct_0202E29C_sub));
+ UNK_021C59F0->unkCB4 = 1;
+ }
+}
+
+THUMB_FUNC void FUN_0202E470(u32 param0, u32 param1)
+{
+#pragma unused(param0)
+ if (param1 != 0)
+ {
+ OS_Terminate();
+ }
+
+ UNK_021C59EC = 2;
+}
+
+THUMB_FUNC void FUN_0202E488()
+{
+ UNK_021C59EC = 0;
+ FUN_02016454(4);
+}
+
+THUMB_FUNC void FUN_0202E49C()
+{
+ FUN_02016444(4);
+ UNK_021C59EC = 1;
+ if (FUN_02090DB8(8, FUN_0202E470, 0) != 1)
+ {
+ OS_Terminate();
+ }
+}
+
+THUMB_FUNC BOOL FUN_0202E4C8()
+{
+ if (UNK_021C59EC == 2)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202E4DC()
+{
+ if (UNK_021C59EC != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0202E4F0()
+{
+ FUN_02090CC8(FUN_0202E488, 0);
+}
+
+THUMB_FUNC void FUN_0202E500()
+{
+ UNK_021C59F0->unkCB0 = 0;
+ FUN_0202CE64(UNK_021C59F0->unkCA4 + (32 - (u32)(UNK_021C59F0->unkCA4) % 32));
+
+ FUN_0202CB70(UNK_021C59F0->unkCC0);
+}
+
+THUMB_FUNC void FUN_0202E538()
+{
+ for (int i = 0; i < 0x10; i++)
+ {
+ UNK_021C59F0->unkC84[i] = 0;
+ }
+
+ MI_CpuFill8(UNK_021C59F0->unk054, 0, 0xC00);
+}
+
+THUMB_FUNC void FUN_0202E56C(u32 param0)
+{
+ UNK_021C59F0->unkDAD_3 = (u8)param0;
+}
+
+THUMB_FUNC void FUN_0202E594()
+{
+ UNK_021C59F0->unkCB4 = 0;
+
+ UNK_021C59F0->unkDAD_0 = 0;
+
+ UNK_021C59F0->unkDAD_2 = 0;
+
+ UNK_021C59F0->unkDAA = 0;
+
+ UNK_021C59F0->unkDAD_4 = 0;
+
+ UNK_021C59F0->unkDAC = 0;
+
+ UNK_021C59F0->unkDAB = 0;
+}
+
+THUMB_FUNC BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2)
+{
+#pragma unused(param0)
+ FUN_0202E594();
+ FUN_0202E56C(param1);
+ FUN_0202D2F4();
+
+ if (UNK_021C59F0->unkDAB == 0)
+ {
+ FUN_0202D0A0(FUN_020303BC, 0xe);
+ UNK_021C59F0->unkDAB = 1;
+ }
+
+ UNK_021C59F0->unkDAD_5 = (u8)param2;
+ if (FUN_0202CBD4() == 1 && FUN_0202CBFC() != 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1)
+{
+#pragma unused(param0)
+ FUN_0202E594();
+ if (param1 != 0)
+ {
+ FUN_0202E538();
+ }
+
+ if (UNK_021C59F0->unkDAB == 0)
+ {
+ FUN_0202D0A0(FUN_02030238, 0xe);
+ UNK_021C59F0->unkDAB = 1;
+ }
+
+ if (FUN_0202CBD4() == 1)
+ {
+ struct UnkStruct_0202E29C_const st0 = UNK_020EEC40;
+
+ if (FUN_0202C570(FUN_0202E380, st0.unk0, 0) != 0)
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_0202E6F0()
+{
+ if (UNK_021C59F0 == NULL)
+ {
+ return 1;
+ }
+
+ switch (UNK_021C59F0->unkDAC)
+ {
+ case 0:
+ if (FUN_0202D21C() != 0)
+ {
+ FUN_0202C770();
+ UNK_021C59F0->unkDAC = 1;
+ }
+ else if (FUN_0202D1E4() == 0)
+ {
+ FUN_0202D100();
+ UNK_021C59F0->unkDAC = 2;
+ }
+ break;
+
+ case 1:
+ if (FUN_0202D1E4() == 0)
+ {
+ FUN_0202D100();
+ UNK_021C59F0->unkDAC = 2;
+ }
+ break;
+ case 2:
+ if (FUN_0202D1C8() != 0)
+ {
+ return 1;
+ }
+
+ if (FUN_0202D200() != 0)
+ {
+ UNK_021C59F0->unkDAC = 1;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC BOOL FUN_0202E784()
+{
+ if (UNK_021C59F0 != NULL && UNK_021C59F0->unkDAA == 0)
+ {
+ UNK_021C59F0->unkDAA = 1;
+ FUN_0202D100();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0202E7B0(u32 param0)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ if (param0 != 0)
+ {
+ UNK_021C59F0->unkDAA = 2;
+ return;
+ }
+
+ UNK_021C59F0->unkDAA = 0;
+ FUN_0202E500();
+ }
+}
+
+THUMB_FUNC void FUN_0202E7D8()
+{
+ FreeToHeap(UNK_021C59F0->unkCBC);
+ FreeToHeap(UNK_021C59F0->unkCA4);
+ FreeToHeap(UNK_021C59F0);
+
+ UNK_021C59F0 = NULL;
+}
+
+THUMB_FUNC u32 FUN_0202E810()
+{
+ if (FUN_02030F40() == 0)
+ {
+ return 0;
+ }
+
+ u32 count = 0;
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59F0->unkC84[i] != 0)
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+THUMB_FUNC s32 FUN_0202E844(u32 param0)
+{
+ int i;
+ u32 count = 0;
+ for (i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ if (count == param0)
+ {
+ return i;
+ }
+
+ count++;
+ }
+
+ GF_AssertFail();
+ return 0;
+}
+
+THUMB_FUNC u8 FUN_0202E878()
+{
+ return UNK_021C59F0->unkCB4;
+}
+
+THUMB_FUNC void FUN_0202E88C()
+{
+ UNK_021C59F0->unkCB4 = 0;
+}
+
+THUMB_FUNC s32 FUN_0202E8A0(s32 param0)
+{
+ if (UNK_021C59F0->unkC84[param0] != 0)
+ {
+ if (UNK_021C59F0->unk054[param0].unk50.unk06 == 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return UNK_021C59F0->unk054[param0].unk50.unk06;
+ }
+ }
+
+ return 0;
+}
+
+THUMB_FUNC s32 FUN_0202E8D0(s32 param0)
+{
+ for (int i = 0xf; i >= 0; i--)
+ {
+ s32 ret = FUN_0202E8A0(i);
+ if (ret > param0 && 8 > ret)
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+THUMB_FUNC s32 FUN_0202E8F4()
+{
+ if (FUN_0202E810() == 0)
+ {
+ return -1;
+ }
+
+ for (int i = 0xf; i >= 0; i--)
+ {
+ if (UNK_021C59F0->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59F0->unk054[i].unk04))
+ {
+ s32 ret2 = FUN_0202E8A0(i);
+ if (ret2 > 1 && ret2 < 8)
+ {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+}
+
+THUMB_FUNC s32 FUN_0202E950()
+{
+ if (FUN_0202E810() == 0)
+ {
+ return -1;
+ }
+
+ for (int i = 0xf; i >= 0; i--)
+ {
+ if (UNK_021C59F0->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59F0->unk054[i].unk04))
+ {
+
+ return i;
+ }
+ }
+
+ s32 ret = FUN_0202E8D0(1);
+ if (ret == -1)
+ {
+ return FUN_0202E8D0(0);
+ }
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_0202E9AC(u32 param0, struct PlayerData *player_data)
+{
+ int i;
+ u32 count = 0;
+ for (i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ if (param0 == count)
+ {
+
+ PlayerProfile_Copy(FUN_0202EF84(i), player_data);
+ return;
+ }
+
+ count++;
+ }
+}
+
+THUMB_FUNC u32 FUN_0202E9E8(u32 param0)
+{
+ if (FUN_0202CBD4() == 2)
+ {
+ FUN_0202C770();
+ return 0;
+ }
+
+ if (FUN_0202CBD4() == 1)
+ {
+ s32 ret = FUN_02033534();
+ UNK_021C59F0->unkDA8 = (u8)UNK_021C59F0->unk054[param0].unk36;
+ if (FUN_0202D8B0(ret) != 0)
+ {
+ FUN_0202C4D8(1, UNK_021C59F0->unk054[param0].unk04, 0);
+ }
+ else
+ {
+ FUN_0202D034(1, &UNK_021C59F0->unk054[param0]);
+ }
+
+ return 1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_0202EA54()
+{
+ for (int i = 0; i < 0x10; i++)
+ {
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ continue;
+ }
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ continue;
+ }
+
+ UNK_021C59F0->unkC84[i]--;
+
+ if (UNK_021C59F0->unkC84[i] == 0)
+ {
+ UNK_021C59F0->unkCB4 = 1;
+ }
+ }
+}
+
+THUMB_FUNC void FUN_0202EA9C()
+{
+ s32 res = FUN_02033534();
+ struct PlayerData *player_data = FUN_0202EF70();
+
+ if (res != 0xf)
+ {
+ struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59F0->unkCC4;
+ GF_ASSERT((s32)FUN_02023AC4() <= 0x20);
+ GF_ASSERT(PlayerProfile_sizeof() == 0x20);
+
+ MI_CpuCopy8(player_data, &res->unk08.unk08, PlayerProfile_sizeof());
+
+ MI_CpuCopy8(UNK_021C59F0->unkCBC, res->unk08.unk28, FUN_02023AC4());
+
+ res->unk00 = PlayerProfile_GetTrainerID(player_data);
+ res->unk04 = (u8)FUN_02033534();
+ res->unk05 = FUN_0203354C();
+
+ MI_CpuCopy8(&UNK_021C59F0->unkCA8, &res->unk08.unk00, sizeof(struct MailMessage));
+ res->unk08.unk4C = (u8)FUN_0202D358();
+ }
+ else
+ {
+ struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59F0->unkCC4;
+ res->unk00 = PlayerProfile_GetTrainerID(player_data);
+ res->unk04 = (u8)FUN_02033534();
+ res->unk05 = FUN_0203354C();
+
+ MI_CpuCopy8(&UNK_021C59F0->unk000, &res->unk08, sizeof(struct UnkStruct_0202E29C_sub3));
+ }
+
+ DC_FlushRange(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+ FUN_0202CB7C(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+}
+
+THUMB_FUNC void FUN_0202EB7C()
+{
+ struct UnkStruct_0202E29C_sub2 *r4 = &UNK_021C59F0->unkCC4;
+ if (r4->unk06 != FUN_0202EDB8())
+ {
+ r4->unk06 = (u8)FUN_0202EDB8();
+ DC_FlushRange(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+ FUN_0202CB7C(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2));
+
+ FUN_0202D240(&UNK_021C59F0->unkCC4,
+ sizeof(struct UnkStruct_0202E29C_sub2),
+ UNK_021C59F0->unkCC0,
+ UNK_021C59E8);
+ }
+}
+
+THUMB_FUNC void FUN_0202EBD0(u16 param0)
+{
+ u32 r5 = FUN_0202CBD4();
+ FUN_0202DF54();
+ FUN_0202EB7C();
+
+ if (FUN_0202D19C() == 0 && FUN_0202EE24() == 0 && UNK_021C59F0->unkDAD_2)
+ {
+ UNK_021C59F0->unkDAD_0 = 1;
+ }
+
+ if (UNK_021C59F0->unkDA6 == 0xFFFF)
+ {
+ UNK_021C59F0->unkDA6 = param0;
+ }
+
+ if (UNK_021C59F0->unkDAD_1 &&
+ UNK_021C59F0->unkDA6 > param0)
+ {
+ UNK_021C59F0->unkDAD_0 = 1;
+ }
+
+ if (FUN_0202CBE8() == 25)
+ {
+ FUN_020335D0(0);
+ }
+
+ switch (r5)
+ {
+ case 0:
+ if (UNK_021C59F0->unkDAA == 1)
+ {
+ FUN_0202E7D8();
+ return;
+ }
+ else if (UNK_021C59F0->unkDAA == 2)
+ {
+ UNK_021C59F0->unkDAA = 3;
+ }
+ break;
+
+ case 1:
+ if (UNK_021C59F0->unkDAA == 1 && FUN_0202D178() != 0)
+ {
+ return;
+ }
+
+ if (UNK_021C59F0->unkDAA == 2 && FUN_0202D178() != 0)
+ {
+ return;
+ }
+
+ break;
+
+ case 8:
+ case 9:
+
+ if (UNK_021C59F0 != NULL)
+ {
+ UNK_021C59F0->unkDAD_0 = 1;
+ return;
+ }
+ break;
+
+ case 7:
+ u16 r0 = FUN_0202CDA4();
+ if (UNK_021C59F0->unkDA9 == 0)
+ {
+ UNK_021C59F0->unkDA4 = r0;
+ UNK_021C59F0->unkDA9 = 5;
+ }
+ else
+ {
+ UNK_021C59F0->unkDA9--;
+ }
+
+ u16 r5 = UNK_021C59F0->unkDA4;
+ if (UNK_021C59F0->unkDAD_3)
+ {
+ UNK_021C59E8++;
+ }
+
+ FUN_0202EA9C();
+
+ FUN_0202CF84(0,
+ UNK_021C59E8,
+ r5,
+ FUN_0202D858((u16)FUN_02033534()),
+ FUN_0202EEE8((u16)FUN_02033534()),
+ UNK_021C59F0->unkDAD_5);
+
+ UNK_021C59F0->unkDA8 = (u8)r5;
+
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_0202ED70(u16 param0)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ FUN_0202EBD0(param0);
+ }
+}
+
+THUMB_FUNC u32 FUN_0202ED84(u16 param0)
+{
+ if (UNK_021C59F0 == NULL)
+ {
+ return 0;
+ }
+
+ if (FUN_0202CBD4() != 4)
+ {
+ return 0;
+ }
+
+ if ((FUN_0202CB8C() & (1 << param0)) == 0)
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_0202EDB8()
+{
+ u32 count = 0;
+ for (int i = 0; i < 8; i++)
+ {
+ if (FUN_0202ED84((u16)i) != 0)
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+THUMB_FUNC BOOL FUN_0202EDD8()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ if (UNK_021C59F0->unkDAA == 3)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202EDF8()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u32 FUN_0202EE0C()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ return FUN_0202D1C8();
+ }
+
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_0202EE24()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ return FUN_0202CB8C() & 0xFFFE;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC BOOL FUN_0202EE44()
+{
+ if (FUN_0202EE60() && FUN_0202CBE8() == 0x14)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL FUN_0202EE60()
+{
+ if (UNK_021C59F0 != NULL && UNK_021C59F0->unkDAD_0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0202EE84(u32 param0)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ UNK_021C59F0->unkDAD_2 = (u8)param0;
+ }
+}
+
+THUMB_FUNC void FUN_0202EEB0(u32 param0)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ UNK_021C59F0->unkDAD_1 = (u8)param0;
+
+ UNK_021C59F0->unkDA6 = 0xFFFF;
+ }
+}
+
+THUMB_FUNC u32 FUN_0202EEE8(u16 param0)
+{
+ u16 r4 = WM_GetDispersionBeaconPeriod();
+ GF_ASSERT(param0 < 0x1a);
+
+ if (param0 == 0xa)
+ {
+ return (u32)(r4 << 0xe) >> 0x10;
+ }
+
+ if (param0 == 9 || param0 == 0xd)
+ {
+ return (u32)(r4 << 0xe) >> 0x10;
+ }
+
+ return r4;
+}
+
+THUMB_FUNC struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ if (UNK_021C59F0->unkC84[param0] != 0)
+ {
+ return &UNK_021C59F0->unk054[param0];
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ if (UNK_021C59F0->unkC84[param0] != 0)
+ {
+ return &UNK_021C59F0->unk054[param0].unk50;
+ }
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC struct PlayerData *FUN_0202EF70()
+{
+ return UNK_021C59F0->unkCB8;
+}
+
+THUMB_FUNC struct PlayerData *FUN_0202EF84(int param0)
+{
+ if (UNK_021C59F0->unkC84[param0] == 0)
+ {
+ return NULL;
+ }
+
+ struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59F0->unk054[param0].unk50;
+
+ return &r0->unk10;
+}
+
+THUMB_FUNC void FUN_0202EFAC(u8 *param0, s32 param1)
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ GF_ASSERT(param1 < 8);
+
+ MI_CpuCopy8(param0, UNK_021C59F0->unkC54[param1], 6);
+ }
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC BOOL FUN_0202EFE4(u8 *param0)
+{
+ u8 (*ptr)[6] = UNK_021C59F0->unkC54;
+ for (int i = 0; i < 8; i++)
+ {
+ if (ptr[i][0] != param0[0])
+ continue;
+ if (ptr[i][1] != param0[1])
+ continue;
+ if (ptr[i][2] != param0[2])
+ continue;
+ if (ptr[i][3] != param0[3])
+ continue;
+ if (ptr[i][4] != param0[4])
+ continue;
+ if (ptr[i][5] != param0[5])
+ continue;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+#else
+THUMB_FUNC asm BOOL FUN_0202EFE4(u8 *param0)
+{
+ // clang-format off
+ push {r4-r5}
+ ldr r2, =UNK_021C59E8
+ mov r1, #0x0
+ ldr r3, [r2, #0x8]
+ ldr r2, =0x00000C54
+ add r2, r3, r2
+ ldrb r3, [r0, #0x0]
+_0202EFF2:
+ ldrb r4, [r2, #0x0]
+ cmp r4, r3
+ bne _0202F026
+ ldrb r5, [r2, #0x1]
+ ldrb r4, [r0, #0x1]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x2]
+ ldrb r4, [r0, #0x2]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x3]
+ ldrb r4, [r0, #0x3]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x4]
+ ldrb r4, [r0, #0x4]
+ cmp r5, r4
+ bne _0202F026
+ ldrb r5, [r2, #0x5]
+ ldrb r4, [r0, #0x5]
+ cmp r5, r4
+ bne _0202F026
+ mov r0, #0x1
+ pop {r4-r5}
+ bx lr
+_0202F026:
+ add r1, r1, #0x1
+ add r2, r2, #0x6
+ cmp r1, #0x8
+ blt _0202EFF2
+ mov r0, #0x0
+ pop {r4-r5}
+ bx lr
+ // clang-format on
+}
+#endif
+
+THUMB_FUNC u32 FUN_0202F03C()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ return UNK_021C59F0->unkDAD_4;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_0202F05C()
+{
+ if (UNK_021C59F0 != NULL)
+ {
+ UNK_021C59F0->unkDAD_4 = 1;
+ }
+}
+
+THUMB_FUNC void FUN_0202F078(struct MailMessage *mail_message)
+{
+ MI_CpuCopy8(mail_message, &UNK_021C59F0->unkCA8, sizeof(struct MailMessage));
+}
+
+THUMB_FUNC void FUN_0202F094(void *param0)
+{
+ MI_CpuCopy8(param0, UNK_021C59F0->unkCBC, FUN_02023AC4());
+}
+
+THUMB_FUNC void FUN_0202F0B8()
+{
+ FUN_0202EA9C();
+ FUN_0202D240(&UNK_021C59F0->unkCC4,
+ sizeof(struct UnkStruct_0202E29C_sub2),
+ UNK_021C59F0->unkCC0,
+ UNK_021C59E8);
+}
+
+THUMB_FUNC u32 FUN_0202F0DC(u8 param0)
+{
+ int i;
+ u32 r5 = 0;
+ for (i = 0; i < 0x10; i++)
+ {
+ struct UnkStruct_0202E29C_sub4 *res = FUN_0202EF44(i);
+ if (res != 0 && res->unk04 == param0)
+ {
+ r5 += res->unk06;
+ }
+ }
+
+ return r5;
+}
+
+THUMB_FUNC BOOL FUN_0202F104()
+{
+ return FUN_0202D2D0();
+}
+
+THUMB_FUNC void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0)
+{
+ MI_CpuCopy8(param0, &UNK_021C59F0->unk000, sizeof(struct UnkStruct_0202E29C_sub3));
+ FUN_0202F0B8();
+}
+
+THUMB_FUNC u8 *FUN_0202F124(u32 param0)
+{
+ if (UNK_021C59F0 != NULL && UNK_021C59F0->unkC84[param0] != 0)
+ {
+ struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59F0->unk054[param0].unk50;
+ return r0->unk08;
+ }
+
+ return NULL;
+}
diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c
index 23a7de85..09b5b56f 100644
--- a/arm9/src/unk_0202F150.c
+++ b/arm9/src/unk_0202F150.c
@@ -1,38 +1,27 @@
#include "unk_0202F150.h"
+#include "unk_02031480.h"
+#include "unk_02031734.h"
+#include "unk_0202E29C.h"
+
+
struct
{
u8 unk00;
struct UnkStruct0202F150 *unk04;
} UNK_021C59F4;
-vu8 UNK_02105D58 = 4;
vu8 UNK_02105D59 = 4;
+vu8 UNK_02105D58 = 4;
-extern int FUN_02033534();
-extern u32 FUN_0202D858(u16 param0);
-extern void FUN_02031480(u32 param0);
extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2);
extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2);
extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2);
extern void FUN_0202D804(u8 *param0);
-extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2);
extern void FUN_0202D330(void (*param0)(int));
-extern u32 FUN_0202E66C(u32 param0, u32 param1);
extern void MOD04_021D83C0();
-extern u32 FUN_0202E784();
-extern void FUN_020314D0();
extern void FUN_0202DBA4();
extern void FUN_0200CAB4(u32 param0);
extern void FUN_0202D824(u8 *param0);
-extern u32 FUN_0202E9E8(u32 param0);
-extern u32 FUN_0202F03C();
-extern u32 FUN_0202EE24();
-extern void FUN_02031CDC();
-extern void FUN_0202EBD0(u16 param0);
-extern void FUN_0202ED70(u32 param0);
-extern void FUN_020335F4(u32 param0);
-extern void FUN_020315A4();
-extern void FUN_0202E538();
extern u32 MOD04_021D78FC(void *param0, u32 param1);
extern u32 FUN_0202CBD4();
extern void FUN_0202D4BC(void *param0);
@@ -53,12 +42,7 @@ extern s16 FUN_0202D9A0(u32 param0);
extern u32 FUN_0202DA04(u32 param0);
extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2);
extern u32 MOD04_021D8018();
-extern u32 FUN_0202EDF8();
extern u16 FUN_0202D19C();
-extern void FUN_020334E8(u32 param0, u32 param1);
-extern u32 FUN_0202EE60();
-extern u32 FUN_0202D884(u16 param0);
-extern void FUN_0202F05C();
extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *);
extern void FUN_0202D830(u8 *param0, u32 param1);
extern u32 MOD04_021D8624();
@@ -69,7 +53,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1)
UNK_021C59F4.unk00 = 0;
if (param0 != 0)
{
- u32 res = FUN_0202D858((u16)FUN_02033534()) + 1;
+ int res = FUN_0202D858((u16)FUN_02033534()) + 1;
if (UNK_021C59F4.unk04 != 0)
{
@@ -111,7 +95,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1)
r4 = 1;
if (UNK_021C59F4.unk04 == 0)
{
- ErrorHandling();
+ GF_AssertFail();
}
}
@@ -148,7 +132,7 @@ THUMB_FUNC void FUN_0202F2F0()
UNK_021C59F4.unk04->unk67F = 0;
UNK_021C59F4.unk04->unk680 = 0;
- int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1;
+ int res = FUN_0202D858((u16)FUN_02033534()) + 1;
MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res);
@@ -236,7 +220,7 @@ THUMB_FUNC void FUN_0202F5A4()
UNK_021C59F4.unk04->unk62C = 0;
UNK_021C59F4.unk04->unk62D = 0;
- int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1;
+ int res = FUN_0202D858((u16)FUN_02033534()) + 1;
MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res);
@@ -352,9 +336,9 @@ THUMB_FUNC void FUN_0202F910(int param0)
FUN_0202F820(param0);
}
-THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3)
+THUMB_FUNC BOOL FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3)
{
- u32 ret = 1;
+ BOOL ret = TRUE;
if (FUN_02033534() < 0x13)
{
ret = FUN_0202E5F8(param0, param1, param3);
@@ -478,7 +462,7 @@ THUMB_FUNC void FUN_0202FA5C()
}
else
{
- if (FUN_0202E784() != 0)
+ if (FUN_0202E784())
{
r4 = 1;
}
@@ -541,7 +525,7 @@ THUMB_FUNC void FUN_0202FB58()
}
}
-THUMB_FUNC u32 FUN_0202FB80()
+THUMB_FUNC BOOL FUN_0202FB80()
{
FUN_02031CDC();
@@ -591,7 +575,7 @@ THUMB_FUNC u32 FUN_0202FB80()
FUN_020335F4(0);
FUN_020315A4();
- return 1;
+ return TRUE;
}
THUMB_FUNC void FUN_0202FC60()
@@ -883,7 +867,7 @@ THUMB_FUNC void FUN_0202FEEC()
}
int st0 = FUN_02031228((u16)FUN_02033534());
- int r6 = (int)FUN_0202D858((u16)FUN_02033534()) + 1;
+ int r6 = FUN_0202D858((u16)FUN_02033534()) + 1;
if (UNK_02105D59 == 2 || UNK_02105D59 == 0)
{
@@ -1050,7 +1034,7 @@ THUMB_FUNC void FUN_02030074()
}
}
-THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2)
+THUMB_FUNC void FUN_02030238(u32 param0, u8 *param1, u32 param2)
{
if (UNK_021C59F4.unk04->unk66F[0] != 0)
{
@@ -1100,7 +1084,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2)
if (FUN_0202FA28() == 1)
{
int r6 = FUN_02031228((u16)FUN_02033534());
- int st4 = (int)FUN_0202D858((u16)FUN_02033534()) + 1;
+ int st4 = FUN_0202D858((u16)FUN_02033534()) + 1;
int r4 = 0;
while (r4 < st4)
@@ -1149,7 +1133,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2)
FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF);
}
-THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2)
+THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u32 param2)
{
if (UNK_021C59F4.unk04->unk66F[param0] != 0)
{
@@ -1162,7 +1146,7 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2)
FUN_020303F4(param0, param1, param2);
}
-THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2)
+THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u32 param2)
{
#pragma unused(param2)
UNK_021C59F4.unk04->unk638[param0]--;
@@ -1207,7 +1191,7 @@ THUMB_FUNC void FUN_020304D4(u32 param0)
return;
}
- ErrorHandling();
+ GF_AssertFail();
}
THUMB_FUNC void FUN_020304F0(u32 param0)
@@ -1218,7 +1202,7 @@ THUMB_FUNC void FUN_020304F0(u32 param0)
return;
}
- ErrorHandling();
+ GF_AssertFail();
}
THUMB_FUNC void FUN_0203050C()
@@ -1757,7 +1741,7 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2)
{
if (FUN_02031190() != 0)
{
- ErrorHandling();
+ GF_AssertFail();
return 0;
}
@@ -1946,7 +1930,7 @@ THUMB_FUNC void FUN_02030DFC()
{
if (UNK_021C59F4.unk04->unk68B == 0)
{
- int r7 = (int)FUN_0202D858((u16)FUN_02033534()) + 1;
+ int r7 = FUN_0202D858((u16)FUN_02033534()) + 1;
int r4;
for (r4 = 0; r4 < r7; r4++)
{
@@ -2025,9 +2009,9 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0)
return 0;
}
-THUMB_FUNC u32 FUN_02030F20()
+THUMB_FUNC s32 FUN_02030F20()
{
- u32 r4 = 0;
+ s32 r4 = 0;
for (int i = 0; i < 8; i++)
{
if (FUN_02030E7C((u16)i) != 0)
@@ -2039,11 +2023,11 @@ THUMB_FUNC u32 FUN_02030F20()
return r4;
}
-THUMB_FUNC u32 FUN_02030F40()
+THUMB_FUNC BOOL FUN_02030F40()
{
if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13)
{
- return 1;
+ return TRUE;
}
return FUN_0202EDF8();
@@ -2227,17 +2211,17 @@ THUMB_FUNC u32 FUN_020311E8()
return FUN_0202EE24();
}
-THUMB_FUNC u32 FUN_020311F0()
+THUMB_FUNC BOOL FUN_020311F0()
{
if (FUN_02031280() != 0)
{
- return 0;
+ return FALSE;
}
if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0)
{
FUN_020334E8(1, 1);
- return 1;
+ return TRUE;
}
return FUN_0202EE60();
@@ -2258,12 +2242,12 @@ THUMB_FUNC int FUN_02031228(u16 param0)
return 0x26;
}
-THUMB_FUNC u32 FUN_02031248(u32 param0)
+THUMB_FUNC int FUN_02031248(u32 param0)
{
return FUN_0202D858((u16)param0) + 1;
}
-THUMB_FUNC u32 FUN_02031258(u32 param0)
+THUMB_FUNC int FUN_02031258(u32 param0)
{
return FUN_0202D884((u16)param0) + 1;
}
@@ -2475,4 +2459,4 @@ THUMB_FUNC void FUN_02031468()
{
UNK_021C59F4.unk04->unk68A = 1;
}
-} \ No newline at end of file
+}
diff --git a/arm9/src/unk_02031480.c b/arm9/src/unk_02031480.c
new file mode 100644
index 00000000..9639cd74
--- /dev/null
+++ b/arm9/src/unk_02031480.c
@@ -0,0 +1,213 @@
+#include "unk_02031480.h"
+
+struct UnkStruct_02031480
+{
+ u8 unk000[8][2];
+ u8 unk010[8];
+ u8 unk018[8][70];
+ u8 unk248[8];
+ u8 unk250;
+ u8 unk251;
+ u8 unk252;
+};
+
+static struct UnkStruct_02031480 *UNK_021C59FC;
+
+THUMB_FUNC void FUN_02031480(u32 heap_id)
+{
+ if (UNK_021C59FC == NULL)
+ {
+ UNK_021C59FC = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02031480));
+ MI_CpuFill8(UNK_021C59FC, 0, sizeof(struct UnkStruct_02031480));
+ }
+
+ for (int i = 0; i < 8; i++)
+ {
+ UNK_021C59FC->unk010[i] = 0xff;
+ }
+ UNK_021C59FC->unk250 = 0xff;
+ UNK_021C59FC->unk251 = 0xff;
+ UNK_021C59FC->unk252 = 0x00;
+}
+
+THUMB_FUNC void FUN_020314D0()
+{
+ FreeToHeap(UNK_021C59FC);
+ UNK_021C59FC = NULL;
+}
+
+THUMB_FUNC BOOL FUN_020314E8()
+{
+ if (UNK_021C59FC != NULL)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_020314FC(u8 param0, u32 unused, u8 *param2)
+{
+#pragma unused(unused)
+ u8 st0[3];
+
+ st0[0] = param2[0];
+
+ if (FUN_02031190() == 0)
+ {
+
+ st0[1] = param0;
+ st0[2] = st0[0];
+
+ FUN_02030C4C(0x12, &st0[1]);
+
+ UNK_021C59FC->unk010[param0] = st0[0];
+
+ for (int i = 0; i < 8; i++)
+ {
+ if (FUN_02030E7C((u16)i) != 0)
+ {
+ if (st0[0] != UNK_021C59FC->unk010[i])
+ {
+ return;
+ }
+ }
+ }
+
+ FUN_02030C4C(0x11, &st0[0]);
+ }
+}
+
+THUMB_FUNC void FUN_02031560(u32 unused1, u32 unused2, u8 *param2)
+{
+#pragma unused(unused1)
+#pragma unused(unused2)
+ UNK_021C59FC->unk010[param2[0]] = param2[1];
+}
+
+THUMB_FUNC void FUN_02031574(u32 unused1, u32 unused2, u8 *param2)
+{
+#pragma unused(unused1)
+#pragma unused(unused2)
+ UNK_021C59FC->unk250 = *param2;
+}
+
+THUMB_FUNC void FUN_02031588(u8 param0)
+{
+ UNK_021C59FC->unk251 = param0;
+ UNK_021C59FC->unk252 = 1;
+}
+
+THUMB_FUNC void FUN_020315A4()
+{
+ if (UNK_021C59FC != NULL && UNK_021C59FC->unk252 != 0 &&
+ FUN_020311D0(0x10, &UNK_021C59FC->unk251))
+ {
+ UNK_021C59FC->unk252 = 0;
+ }
+}
+
+THUMB_FUNC BOOL FUN_020315D8(u8 param0)
+{
+ if (UNK_021C59FC == NULL)
+ {
+ return TRUE;
+ }
+
+ if (UNK_021C59FC->unk250 == param0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u8 FUN_020315FC(u8 index)
+{
+ return UNK_021C59FC->unk010[index];
+}
+
+THUMB_FUNC void FUN_0203160C(u32 param0, u32 unused, u8 *param2)
+{
+#pragma unused(unused)
+ UNK_021C59FC->unk000[param0][0] = param2[0];
+ UNK_021C59FC->unk000[param0][1] = param2[1];
+}
+
+THUMB_FUNC u32 FUN_02031628()
+{
+ return 2;
+}
+
+THUMB_FUNC void FUN_0203162C(u8 param0, u8 param1)
+{
+ u8 st0[2] = { param0, param1 };
+
+ FUN_020311D0(0x13, st0);
+}
+
+THUMB_FUNC int FUN_02031640(u32 param0, u8 param1)
+{
+ if (UNK_021C59FC == NULL)
+ {
+ return -1;
+ }
+
+ if (UNK_021C59FC->unk000[param0][0] == param1)
+ {
+ return UNK_021C59FC->unk000[param0][1];
+ }
+
+ return -1;
+}
+
+THUMB_FUNC void FUN_02031668()
+{
+ for (int i = 0; i < 8; i++)
+ {
+ MI_CpuFill8(UNK_021C59FC->unk000[i], 0, 2);
+ }
+}
+
+THUMB_FUNC void FUN_0203168C()
+{
+ for (int i = 0; i < 8; i++)
+ {
+ UNK_021C59FC->unk248[i] = 0;
+ }
+}
+
+THUMB_FUNC BOOL FUN_020316AC(u32 param0, void *param1)
+{
+ if (UNK_021C59FC != NULL)
+ {
+ MI_CpuCopy8(param1, UNK_021C59FC->unk018[param0], 0x46);
+ FUN_020311D0(0x14, UNK_021C59FC->unk018[param0]);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u8 *FUN_020316E0(int param0)
+{
+ if (UNK_021C59FC->unk248[param0] != 0)
+ {
+ return UNK_021C59FC->unk018[param0];
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC void FUN_02031704(u32 param0, u32 unused, void *param2)
+{
+#pragma unused(unused)
+ UNK_021C59FC->unk248[param0] = 1;
+ MI_CpuCopy8(param2, UNK_021C59FC->unk018[param0], 0x46);
+}
+
+THUMB_FUNC u32 FUN_02031730()
+{
+ return 0x46;
+}
diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c
new file mode 100644
index 00000000..57764b82
--- /dev/null
+++ b/arm9/src/unk_02031734.c
@@ -0,0 +1,2173 @@
+#include "global.h"
+#include "unk_02031734.h"
+#include "MI_memory.h"
+#include "game_init.h"
+#include "heap.h"
+#include "player_data.h"
+#include "unk_0202F150.h"
+#include "unk_0202E29C.h"
+
+
+const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } };
+
+const struct UnkStruct_02031734_const1 UNK_020EEC50 = {
+ { (u32)FUN_0203213C, (u32)FUN_02032138, 0 }
+};
+
+const struct UnkStruct_02031734_const1 UNK_020EEC5C = {
+ { (u32)FUN_02032234, (u32)FUN_0203234C, 0 }
+};
+
+char UNK_02105D64[] = " FULL";
+char UNK_02105D5C[] = "FREAK";
+char UNK_02105D6C[] = " GAME";
+
+struct UnkStruct_02031734 *UNK_021C5A00;
+
+extern void FUN_0202D8D0(u32 param0, u32 param1, u32 param2);
+extern void FUN_02033E74();
+extern void FUN_0202D918();
+extern void FUN_02033ED0();
+extern void FUN_0202D298();
+extern void FUN_0202D344(u32 param0);
+extern void FUN_0202D1B0(u8 param0);
+extern void FUN_0202D36C(u32 param0);
+extern u32 MOD04_021DDB08();
+extern void FUN_02033EEC(u32 param0);
+extern u32 WM_GetLinkLevel();
+extern void FUN_0202DB14(struct SaveBlock2 *sav2, u32 param1);
+extern s64 _ll_mul(s64, s64);
+extern void FUN_0202DBE0();
+extern void FUN_0202DDE8();
+extern void FUN_0202D308(void (*param0)(u32, u32));
+extern void MOD04_021D83C0();
+extern s32 MOD04_021D7F8C();
+extern s32 MOD04_021D7800(u32 param0);
+extern u32 MOD04_021D8494(s32 param0);
+extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u32), void (*param1)(u32, u8 *, u32));
+extern u32 MOD04_021D82BC(u8 param0);
+extern void MOD04_021D836C();
+extern u32 MOD04_021DD718(u32 *param0, u32 *param1);
+extern void MOD04_021DD6F0();
+extern s32 MOD04_021D76AC();
+extern MOD05_021D74E0(struct SaveBlock2 *sav2, u32 param1);
+extern void MOD04_021D83A8(void (*param0)(s32));
+extern void FUN_02033F70(int, int, int);
+extern void FUN_0200541C();
+
+THUMB_FUNC void FUN_02031734(struct SaveBlock2 *sav2, u8 param1)
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ FUN_0202E49C();
+ struct UnkStruct_02031734 *ptr = AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
+ UNK_021C5A00 = ptr;
+ MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct_02031734));
+
+ UNK_021C5A00->unk3A = 0x32;
+ UNK_021C5A00->unk43 = 1;
+ UNK_021C5A00->unk28 = sav2;
+
+ UNK_021C5A00->unk2C = Sav2_PlayerData_GetProfileAddr(sav2);
+
+ UNK_021C5A00->unk3C = 2;
+ UNK_021C5A00->unk3D = 0;
+ UNK_021C5A00->unk48 = 0;
+ UNK_021C5A00->unk3F = param1;
+
+ FUN_020312BC(UNK_021C5A00->unk0C);
+ FUN_0202D8D0(0, 0, 0);
+
+ if (param1 != 9 && param1 != 0x11 && param1 != 0xf)
+ {
+ FUN_02033E74();
+ }
+ }
+}
+
+THUMB_FUNC void FUN_020317C0()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_0202D918();
+ if (UNK_021C5A00->unk00 != NULL)
+ {
+ FreeToHeap(UNK_021C5A00->unk00);
+ }
+
+ if (UNK_021C5A00->unk3F >= 0x13)
+ {
+ FUN_020168D0(0x31);
+ }
+
+ FUN_02033ED0();
+ FUN_0202E4F0();
+
+ FreeToHeap(UNK_021C5A00);
+ FUN_020168D0(0xf);
+
+ UNK_021C5A00 = NULL;
+ }
+}
+
+THUMB_FUNC BOOL FUN_02031810()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02031824(struct SaveBlock2 *sav2)
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ FUN_02016828(3, 0xf, 0xe000);
+ FUN_02031734(sav2, 0xa);
+
+ UNK_021C5A00->unk40 = 0;
+ FUN_02031D20(FUN_02031D30, 0x32);
+ }
+}
+
+THUMB_FUNC void FUN_02031860()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_02031468();
+ FUN_02031D20(FUN_020323CC, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031880()
+{
+ FUN_0202FC60();
+ UNK_021C5A00->unk38 = FUN_02031190();
+
+ FUN_02031D20(FUN_020321B8, 0);
+}
+
+THUMB_FUNC void FUN_020318A4(u8 param0)
+{
+ UNK_021C5A00->unk4F = param0;
+}
+
+THUMB_FUNC void FUN_020318B4()
+{
+ FUN_02031D20(FUN_02032028, 0);
+}
+
+THUMB_FUNC BOOL FUN_020318C4()
+{
+ struct UnkStruct_02031734_const1 st0 = UNK_020EEC50;
+
+ u32 r1 = (u32)UNK_021C5A00->unk24;
+
+ if (UNK_021C5A00 == NULL)
+ {
+ return FALSE;
+ }
+
+ for (u32 i = 0; st0.unk00[i] != 0; i++)
+ {
+
+ if (r1 == st0.unk00[i])
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02031914()
+{
+ FUN_02031D20(FUN_02032178, 0);
+}
+
+THUMB_FUNC void FUN_02031924()
+{
+ UNK_021C5A00->unk4C = 1;
+}
+
+THUMB_FUNC void FUN_02031934()
+{
+ FUN_0202E49C();
+ FUN_02031D20(FUN_02032194, 0);
+}
+
+THUMB_FUNC void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3)
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02016828(3, 0xf, 0x7080);
+ FUN_02031734(sav2, param1);
+ UNK_021C5A00->unk40 = param2;
+ UNK_021C5A00->unk30 = param3;
+ FUN_02031D20(FUN_020321D0, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3)
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02016828(3, 0xf, 0x7080);
+ FUN_02031734(sav2, param1);
+ UNK_021C5A00->unk40 = param2;
+ UNK_021C5A00->unk30 = param3;
+ FUN_02031D20(FUN_0203224C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020319D8(u8 param0)
+{
+ UNK_021C5A00->unk3E = param0;
+ FUN_02031D20(FUN_02032298, 0);
+}
+
+THUMB_FUNC void FUN_020319F4()
+{
+ FUN_0202FCA8();
+ FUN_02031D20(FUN_02032364, 0);
+}
+
+THUMB_FUNC void FUN_02031A08()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_02031D20(FUN_02032440, 5);
+ }
+}
+
+THUMB_FUNC void FUN_02031A24()
+{
+ FUN_0202D298();
+}
+
+THUMB_FUNC BOOL FUN_02031A2C()
+{
+ struct UnkStruct_02031734_const1 st0 = UNK_020EEC5C;
+
+ u32 r1 = (u32)UNK_021C5A00->unk24;
+
+ if (UNK_021C5A00 == NULL)
+ {
+ return FALSE;
+ }
+
+ for (u32 i = 0; st0.unk00[i] != 0; i++)
+ {
+
+ if (r1 == st0.unk00[i])
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02031A7C(struct SaveBlock2 *sav2)
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ if (FUN_02016828(3, 0xf, 0x7080) == 0)
+ {
+ FUN_020335E0();
+ }
+
+ FUN_02031734(sav2, 9);
+ UNK_021C5A00->unk3F = 9;
+ UNK_021C5A00->unk40 = 0;
+ FUN_02031D20(FUN_02032478, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031AC8(u8 param0)
+{
+ UNK_021C5A00->unk3E = param0;
+ UNK_021C5A00->unk38 = 3;
+ FUN_0202D344(1);
+ FUN_02033E74();
+ FUN_02031D20(FUN_02032628, 0);
+}
+
+THUMB_FUNC s32 FUN_02031AF4()
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ return -1;
+ }
+ if (UNK_021C5A00->unk24 == FUN_0203279C)
+ {
+ return 1;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_020327B4)
+ {
+ return -1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC BOOL FUN_02031B2C()
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ return FALSE;
+ }
+ if (UNK_021C5A00->unk24 == FUN_020327FC)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02031B50()
+{
+ FUN_0202D344(0);
+ if (UNK_021C5A00->unk44 != 1 || UNK_021C5A00->unk45 != 1 || UNK_021C5A00->unk3F == 9)
+ {
+ FUN_020334E8(0, 0);
+ }
+
+ FUN_02033ED0();
+ UNK_021C5A00->unk3F = 9;
+ UNK_021C5A00->unk48 = 0;
+ FUN_0202D1B0(UNK_021C5A00->unk3C);
+
+ if (FUN_02031190() == 0)
+ {
+ FUN_0202D36C(1);
+ FUN_02031D20(FUN_020323DC, 0xf);
+ return;
+ }
+
+ FUN_02031D20(FUN_02032424, 5);
+}
+
+THUMB_FUNC u32 FUN_02031BD0()
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ return 1;
+ }
+
+ if (UNK_021C5A00->unk24 != FUN_020324F8)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02031BF4()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_02031D20(FUN_02032440, 5);
+ }
+}
+
+THUMB_FUNC void FUN_02031C10()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk48 = 1;
+ FUN_0202D344(1);
+ }
+}
+
+THUMB_FUNC void FUN_02031C2C()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk48 = 1;
+ FUN_0202D344(1);
+ FUN_02031D20(FUN_02032850, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031C54()
+{
+ UNK_021C5A00->unk3F = 0x12;
+}
+
+THUMB_FUNC void FUN_02031C64()
+{
+ UNK_021C5A00->unk3F = 0x9;
+}
+
+THUMB_FUNC void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1)
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02016828(3, 0xf, 0x7080);
+ FUN_02031734(sav2, param1);
+ FUN_02031D20(FUN_02032E00, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1)
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02016828(3, 0xf, 0x7080);
+ FUN_02031734(sav2, param1);
+ FUN_02031D20(FUN_02032E48, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031CDC()
+{
+ if (UNK_021C5A00 != NULL && UNK_021C5A00->unk24 != 0)
+ {
+ ((void (*)(void))(UNK_021C5A00->unk24))();
+ }
+ if (FUN_02033590() != 0)
+ {
+ FUN_02033EEC(3 - MOD04_021DDB08());
+ return;
+ }
+
+ if (FUN_0202EDF8())
+ {
+ FUN_02033EEC(3 - WM_GetLinkLevel());
+ }
+}
+
+THUMB_FUNC void FUN_02031D20(void (*param0)(), u32 param1)
+{
+ UNK_021C5A00->unk24 = param0;
+ UNK_021C5A00->unk3A = (u16)param1;
+}
+
+THUMB_FUNC void FUN_02031D30()
+{
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ if (!FUN_0202E4C8())
+ {
+ return;
+ }
+
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, 0);
+ FUN_02031268(1);
+ FUN_02030FA8();
+
+ if (UNK_021C5A00->unk4A != 0)
+ {
+ if (FUN_0202F918(1, UNK_021C5A00->unk43, 0x1F4, 1) == 0)
+ {
+ return;
+ }
+
+ u32 r1 = compute(UNK_021C5A00->unk0C, 0x14);
+
+ UNK_021C5A00->unk43 = 0;
+ FUN_02031D20(FUN_020320C4, r1 + 0x14);
+ return;
+ }
+
+ if (FUN_0202F950(1, 1, 0x1F4) != 0)
+ {
+ if (UNK_021C5A00->unk4C != 0)
+ {
+ FUN_02031D20(FUN_020323B8, 0);
+ }
+ else
+ {
+ FUN_02031D20(FUN_02031EE0, 0x40);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02031E08()
+{
+ if (FUN_0202EE0C() != 0)
+ {
+ FUN_02031268(1);
+ FUN_02030FA8();
+
+ if (UNK_021C5A00->unk4A != 0)
+ {
+ FUN_02031D20(FUN_02032058, 0);
+ return;
+ }
+
+ if (FUN_0202F950(0, 1, 0x1F4) != 0)
+ {
+
+ u32 r1 = compute(UNK_021C5A00->unk0C, 0x40);
+
+ if (UNK_021C5A00->unk38 != 0)
+ {
+ r1 = (u32)(UNK_021C5A00->unk38 << 6);
+ UNK_021C5A00->unk38 = 0;
+ }
+ FUN_02031D20(FUN_02031EE0, r1);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02031E8C()
+{
+ if (FUN_0202EE0C() != 0)
+ {
+ if (FUN_0202F950(0, 0, 0x1F4) != 0)
+ {
+
+ u32 r1 = compute(UNK_021C5A00->unk0C, 0x20);
+
+ FUN_02031D20(FUN_02031EE0, r1 + 0x10);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02031EE0()
+{
+ FUN_0202EA54();
+ if (UNK_021C5A00->unk4F == 0 && UNK_021C5A00->unk4B == 0)
+ {
+ s32 r0 = FUN_0202E8F4();
+ if (r0 != -1)
+ {
+ UNK_021C5A00->unk3E = (u8)r0;
+ FUN_02031D20(FUN_02031F60, 0x20);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ r0 = FUN_0202E950();
+ if (r0 != -1)
+ {
+ UNK_021C5A00->unk3E = (u8)r0;
+ FUN_02031D20(FUN_02031F60, 0x20);
+ return;
+ }
+
+ FUN_02031D20(FUN_02032028, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02031F60()
+{
+ FUN_0202EA54();
+ if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0)
+ {
+ FUN_02031D20(FUN_02031FC8, 0x64);
+ return;
+ }
+
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_02032028, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ FUN_02031D20(FUN_02032028, 0);
+}
+
+THUMB_FUNC void FUN_02031FC8()
+{
+ if (FUN_02030E7C(FUN_02031190()) != 0)
+ {
+ FUN_0202FC60();
+ FUN_02031268(0);
+ FUN_02030FA8();
+ FUN_02031D20(FUN_0203213C, 0);
+ return;
+ }
+
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_02032028, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ FUN_02031D20(FUN_02032028, 0);
+}
+
+THUMB_FUNC void FUN_02032028()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02032058, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032040()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02031E8C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032058()
+{
+ if (FUN_0202EE0C() != 0)
+ {
+ FUN_02031268(1);
+ if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x1F4, 1) != 0)
+ {
+ u32 r1 = compute(UNK_021C5A00->unk0C, 0x14);
+
+ UNK_021C5A00->unk43 = 0;
+ FUN_02031D20(FUN_020320C4, r1 + 0x14);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_020320C4()
+{
+ if (FUN_020311E8() != 0)
+ {
+ UNK_021C5A00->unk43 = 1;
+ FUN_02031D20(FUN_02032118, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ if (UNK_021C5A00->unk4A == 0 && FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02032040, 2);
+ }
+}
+
+THUMB_FUNC void FUN_02032118()
+{
+ FUN_02031268(0);
+ FUN_0202EE84(1);
+ FUN_02030FA8();
+ FUN_02031D20(FUN_02032138, 0);
+}
+
+THUMB_FUNC void FUN_02032138()
+{
+}
+THUMB_FUNC void FUN_0203213C()
+{
+}
+
+THUMB_FUNC void FUN_02032140()
+{
+ if (UNK_021C5A00->unk3F < 0x13)
+ {
+ if (FUN_0202EE0C() == 0)
+ {
+ return;
+ }
+
+ FUN_02031268(1);
+ FUN_02030FA8();
+ FUN_0202E7B0(1);
+ }
+
+ FUN_02031D20(FUN_020323B8, 0);
+}
+
+THUMB_FUNC void FUN_02032178()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_0202FC60();
+ FUN_02031D20(FUN_02032140, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032194()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E7B0(0);
+ FUN_0202FC60();
+ FUN_02031D20(FUN_02031E08, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020321B8()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02031E08, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020321D0()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30);
+ if (FUN_0202F918(1, 1, 0x200, 1) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032218, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032218()
+{
+ if (FUN_02030E7C(FUN_02031190()) != 0)
+ {
+ FUN_02031D20(FUN_02032234, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032234()
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02031D20(FUN_020323BC, 0);
+ }
+}
+
+THUMB_FUNC void FUN_0203224C()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30);
+ if (FUN_0202F950(1, 1, 0x200) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032290, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032290()
+{
+ FUN_0202EA54();
+}
+
+THUMB_FUNC void FUN_02032298()
+{
+ FUN_0202EA54();
+ if (FUN_0202FB18(UNK_021C5A00->unk3E) != 0)
+ {
+ FUN_02031D20(FUN_020322C0, 0xa);
+ }
+}
+
+THUMB_FUNC void FUN_020322C0()
+{
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_020322F8, 0);
+ }
+
+ if (FUN_02030E7C(FUN_02031190()) != 0 && FUN_02031190() != 0)
+ {
+ FUN_02031D20(FUN_0203234C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020322F8()
+{
+ FUN_0202E6F0();
+ FUN_02031D20(FUN_0203230C, 2);
+}
+
+THUMB_FUNC void FUN_0203230C()
+{
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 1, 0x200) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032298, 0xa);
+ }
+}
+
+THUMB_FUNC void FUN_0203234C()
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02031D20(FUN_020323BC, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032364()
+{
+ FUN_0202E6F0();
+ FUN_02031D20(FUN_02032378, 2);
+}
+
+THUMB_FUNC void FUN_02032378()
+{
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 1, 0x200) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032290, 0xa);
+ }
+}
+
+THUMB_FUNC void FUN_020323B8()
+{
+}
+
+THUMB_FUNC void FUN_020323BC()
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_020317C0();
+ }
+}
+
+THUMB_FUNC void FUN_020323CC()
+{
+ FUN_02031D20(FUN_02032440, 5);
+}
+
+THUMB_FUNC void FUN_020323DC()
+{
+ if (FUN_02030F20() <= 1)
+ {
+ FUN_0202D36C(0);
+ FUN_0202FC80();
+ FUN_02031D20(FUN_020324F8, 0);
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ FUN_0202D36C(0);
+ FUN_0202FC80();
+ FUN_02031D20(FUN_020324F8, 0);
+}
+
+THUMB_FUNC void FUN_02032424()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_0202FC60();
+ FUN_02031D20(FUN_020324F8, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032440()
+{
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ }
+
+ if (FUN_0202E6F0() != 0 && UNK_021C5A00->unk3A == 0)
+ {
+ FUN_0202FA5C();
+ FUN_02031D20(FUN_020323BC, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032478()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202D1B0(UNK_021C5A00->unk3C);
+ FUN_0202DB14(UNK_021C5A00->unk28, 0);
+ if (FUN_0202F950(1, 1, 0x200) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_020324C8, 0x40);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_020324C8()
+{
+ FUN_0202EA54();
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02032510, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020324F8()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02032510, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032510()
+{
+ if (FUN_0202EE0C() != 0 && FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 1) != 0)
+ {
+ // the compiler optimizes away the result of this function because it's not used, so any
+ // second parameter value matches
+ compute(UNK_021C5A00->unk0C, 0);
+
+ FUN_0202FA10();
+ UNK_021C5A00->unk43 = 0;
+
+ FUN_02031D20(FUN_02032578, 0x2710);
+ }
+}
+
+THUMB_FUNC void FUN_02032578()
+{
+ if (!FUN_0202F104())
+ {
+ if (FUN_020311E8() != 0)
+ {
+ UNK_021C5A00->unk43 = 1;
+ FUN_02033E74();
+ FUN_02031D20(FUN_020327FC, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+ }
+
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_020325D0, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020325D0()
+{
+ if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 0, 0x200) != 0)
+ {
+ FUN_0202FA10();
+
+ u32 r1 = compute(UNK_021C5A00->unk0C, 0x20);
+
+ FUN_02031D20(FUN_020324C8, r1);
+ }
+}
+
+THUMB_FUNC void FUN_02032628()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_02032640, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032640()
+{
+ if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 0, 0x200))
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_0203266C, 0x64);
+ }
+}
+
+THUMB_FUNC void FUN_0203266C()
+{
+ if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0)
+ {
+ FUN_02031D20(FUN_020326D0, 0x64);
+ return;
+ }
+
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_020327B8, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ FUN_02031D20(FUN_020327B8, 0);
+}
+
+THUMB_FUNC void FUN_020326D0()
+{
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_020327B8, 0);
+ return;
+ }
+
+ if (FUN_02030E7C(FUN_02031190()) != 0)
+ {
+ UNK_021C5A00->unk3D = 0;
+ FUN_020311D0(6, UNK_02105D5C);
+ FUN_02031D20(FUN_02032738, 0x78);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ FUN_02031D20(FUN_020327B8, 0);
+}
+
+THUMB_FUNC void FUN_02032738()
+{
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_020327B8, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3D == 2)
+ {
+ FUN_02031D20(FUN_020327B4, 0);
+ return;
+ }
+ else if (UNK_021C5A00->unk3D == 1)
+ {
+ FUN_0202DBE0();
+ FUN_02031D20(FUN_0203279C, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ FUN_02031D20(FUN_020327B8, 0);
+}
+
+THUMB_FUNC void FUN_0203279C()
+{
+ if (FUN_020311F0() != 0)
+ {
+ FUN_02031D20(FUN_020327B8, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020327B4()
+{
+}
+
+THUMB_FUNC void FUN_020327B8()
+{
+ UNK_021C5A00->unk3D = 0;
+ if (FUN_0202E6F0() != 0)
+ {
+ if (UNK_021C5A00->unk38 != 0)
+ {
+ UNK_021C5A00->unk38--;
+ FUN_02031D20(FUN_02032640, 0);
+ return;
+ }
+
+ FUN_02031D20(FUN_020327B4, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020327FC()
+{
+ if (FUN_020311E8() == 0)
+ {
+ if (FUN_02033510() == 0 && FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_020325D0, 0);
+ }
+ }
+ else if (FUN_02031190() == 0)
+ {
+ FUN_0202DDE8();
+ }
+
+ if (FUN_020311F0() != 0 && FUN_02033510() == 0)
+ {
+ FUN_02031D20(FUN_020327B8, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032850()
+{
+ if (FUN_0202EE0C() != 0)
+ {
+ if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 0) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_020323B8, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032888()
+{
+ u8 st0[4];
+ UNK_021C5A00->unk3F = 0xd;
+ if (FUN_02031190() == 0)
+ {
+ st0[1] = 0;
+ FUN_020311D0(0xa, &st0[1]);
+ return;
+ }
+
+ st0[0] = 0;
+ FUN_020311D0(0xa, st0);
+}
+
+THUMB_FUNC void FUN_020328C0(u8 param0)
+{
+ UNK_021C5A00->unk3E = param0;
+ UNK_021C5A00->unk38 = 3;
+ FUN_02031D20(FUN_02032924, 0);
+}
+
+THUMB_FUNC void FUN_020328E4()
+{
+ UNK_021C5A00->unk3F = 7;
+}
+
+THUMB_FUNC void FUN_020328F4(u8 param0)
+{
+ UNK_021C5A00->unk3E = param0;
+ UNK_021C5A00->unk3F = 7;
+ UNK_021C5A00->unk38 = 3;
+ FUN_02033E74();
+ FUN_02031D20(FUN_02032628, 0);
+}
+
+THUMB_FUNC void FUN_02032924()
+{
+ if (FUN_0202E6F0() != 0)
+ {
+ FUN_02031D20(FUN_0203293C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_0203293C()
+{
+ if (FUN_0202EE0C() != 0)
+ {
+ UNK_021C5A00->unk3F = 0xd;
+ if (FUN_0202F950(0, 0, 0x200) != 0)
+ {
+ FUN_0202FA1C();
+ FUN_02031D20(FUN_02032978, 0x64);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032978()
+{
+ if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0)
+ {
+ FUN_02031D20(FUN_020329F4, 0x64);
+ return;
+ }
+
+ if (FUN_020311F0() != 0 || UNK_021C5A00->unk3A == 0)
+ {
+ UNK_021C5A00->unk38--;
+ if (UNK_021C5A00->unk38 == 0)
+ {
+ FUN_02031D20(FUN_020327B4, 0);
+ return;
+ }
+
+ FUN_02031D20(FUN_02032924, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+}
+
+THUMB_FUNC void FUN_020329F4()
+{
+ if (UNK_021C5A00->unk3A > 0x5a)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ if (FUN_020311F0() != 0)
+ {
+ UNK_021C5A00->unk38--;
+ if (UNK_021C5A00->unk38 == 0)
+ {
+ FUN_02031D20(FUN_020327B4, 0);
+ return;
+ }
+
+ FUN_02031D20(FUN_02032924, 0);
+ return;
+ }
+
+ if (FUN_02030E7C(FUN_02031190()) != 0)
+ {
+ FUN_02031D20(FUN_0203279C, 0);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3A != 0)
+ {
+ UNK_021C5A00->unk3A--;
+ return;
+ }
+
+ UNK_021C5A00->unk38--;
+ if (UNK_021C5A00->unk38 == 0)
+ {
+ FUN_02031D20(FUN_020327B4, 0);
+ return;
+ }
+
+ FUN_02031D20(FUN_02032924, 0);
+}
+
+THUMB_FUNC void FUN_02032A8C(u8 param0, u32 param1, u8 *param2)
+{
+#pragma unused(param1)
+ if (FUN_02031190() == 0)
+ {
+
+ u32 i;
+ BOOL r3 = TRUE;
+ for (i = 0; i < 6; i++)
+ {
+ if (UNK_02105D5C[i] != param2[i])
+ {
+ r3 = FALSE;
+ break;
+ }
+ }
+
+ if (r3 && UNK_021C5A00->unk48 == 0)
+ {
+ UNK_02105D6C[0] = param0;
+ FUN_02030C4C(7, UNK_02105D6C);
+ return;
+ }
+
+ UNK_02105D64[0] = param0;
+ FUN_02030C4C(7, UNK_02105D64);
+ }
+}
+
+THUMB_FUNC void FUN_02032AEC(u32 param0, u32 param1, u8 *param2)
+{
+#pragma unused(param0)
+#pragma unused(param1)
+ u32 i;
+ BOOL r4 = TRUE;
+ for (i = 1; i < 6; i++)
+ {
+ if (param2[i] != UNK_02105D6C[i])
+ {
+ r4 = FALSE;
+ break;
+ }
+ }
+
+ if (r4)
+ {
+ u8 first = param2[0];
+ if (first != FUN_02031190())
+ {
+ return;
+ }
+
+ UNK_021C5A00->unk3D = 1;
+ return;
+ }
+
+ r4 = TRUE;
+ for (i = 1; i < 6; i++)
+ {
+ if (param2[i] != UNK_02105D64[i])
+ {
+ r4 = FALSE;
+ break;
+ }
+ }
+
+ if (r4)
+ {
+ u8 first = param2[0];
+ if (first != (u8)FUN_02031190())
+ {
+ return;
+ }
+
+ UNK_021C5A00->unk3D = 2;
+ }
+}
+
+THUMB_FUNC u32 FUN_02032B68()
+{
+ return 6;
+}
+
+THUMB_FUNC void FUN_02032B6C(u8 param0)
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk3C = param0;
+ FUN_0202D1B0(param0);
+ }
+}
+
+THUMB_FUNC void FUN_02032B84()
+{
+ FUN_0202EA54();
+}
+
+THUMB_FUNC void FUN_02032B8C()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, 0);
+ if (FUN_0202F950(1, 1, 0x20) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032B84, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032BD0(struct SaveBlock2 *sav2)
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02016828(3, 0xf, 0x7000);
+ FUN_02031734(sav2, 0xe);
+ UNK_021C5A00->unk40 = 0;
+ FUN_02031D20(FUN_02032B8C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032C0C()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_02031D20(FUN_02032440, 5);
+ }
+}
+
+THUMB_FUNC u32 FUN_02032C28()
+{
+ struct UnkStruct_02031734_const2 st0 = UNK_020EEC48;
+
+ u32 fun = (u32)UNK_021C5A00->unk24;
+ if (UNK_021C5A00 == NULL)
+ {
+ return 0;
+ }
+
+ u32 i = 0;
+ while (st0.unk00[i] != 0)
+ {
+ if (st0.unk00[i] == fun)
+ {
+ return 1;
+ }
+
+ i++;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02032C6C(u32 param0, u32 param1)
+{
+ switch (param0)
+ {
+ case 0x333:
+ if (param1 != 0xf)
+ {
+ return;
+ }
+ UNK_021C5A00->unk49 |= 1;
+ break;
+ case 0x400318:
+
+ UNK_021C5A00->unk49 |= 1;
+ break;
+
+ case 0x400131:
+
+ UNK_021C5A00->unk49 |= 2;
+ break;
+
+ case 0x400286:
+
+ UNK_021C5A00->unk49 |= 4;
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_02032CF4()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, 0);
+ FUN_0202D308(FUN_02032C6C);
+ if (FUN_0202F950(1, 1, 0x20) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032B84, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032D44(struct SaveBlock2 *sav2)
+{
+ if (FUN_02030F40() == 0)
+ {
+ FUN_02016828(3, 0xf, 0x7000);
+ FUN_02031734(sav2, 0x11);
+ UNK_021C5A00->unk40 = 0;
+ FUN_02031D20(FUN_02032CF4, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032D80()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_02031D20(FUN_02032440, 5);
+ }
+}
+
+THUMB_FUNC u8 FUN_02032D9C()
+{
+ return UNK_021C5A00->unk49;
+}
+
+THUMB_FUNC BOOL FUN_02032DAC()
+{
+ FUN_02031468();
+
+ if (UNK_021C5A00 == NULL)
+ {
+ return TRUE;
+ }
+
+ if ((u8)(UNK_021C5A00->unk3F + 0xe8) <= 1)
+ {
+ MOD04_021D83C0();
+ return TRUE;
+ };
+
+ if (FUN_02033590() != 0)
+ {
+ FUN_02031D20(FUN_0203318C, 0);
+ }
+ else
+ {
+ FUN_02031D20(FUN_02032178, 0);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02032E00()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, 0);
+ if (FUN_0202F918(1, 1, 0x200, 1) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032218, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032E48()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_0202E29C(UNK_021C5A00->unk2C);
+ FUN_0202DB14(UNK_021C5A00->unk28, 0);
+ if (FUN_0202F950(1, 1, 0x200) != 0)
+ {
+ FUN_0202FA10();
+ FUN_02031D20(FUN_02032290, 0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02032E8C()
+{
+}
+
+THUMB_FUNC void FUN_02032E90()
+{
+ if (MOD04_021D7F8C() < 0)
+ {
+ FUN_02031D20(FUN_02032E8C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02032EA8()
+{
+}
+
+THUMB_FUNC void FUN_02032EAC()
+{
+}
+
+THUMB_FUNC void FUN_02032EB0()
+{
+ FUN_020313A0(1);
+
+ s32 res = MOD04_021D7F8C();
+ if (res >= 0xa)
+ {
+ FUN_02031D20(FUN_02032EAC, 0);
+ return;
+ }
+
+ if (res < 0)
+ {
+ FUN_02031D20(FUN_02032E8C, 0);
+ return;
+ }
+
+ if (res == 1)
+ {
+ FUN_02031D20(FUN_02032E90, 0);
+ return;
+ }
+
+ if (res == 2)
+ {
+ if (UNK_021C5A00->unk44 != 0)
+ {
+ FUN_02031D20(FUN_02032E8C, 0);
+ return;
+ }
+ FUN_02031D20(FUN_02032EA8, 0);
+ return;
+ }
+}
+
+THUMB_FUNC void FUN_02032F20(u32 param0)
+{
+ if (param0 + 2 > 1)
+ {
+ param0 = -param0;
+ }
+
+ UNK_021C5A00->unk34 = param0;
+}
+
+THUMB_FUNC void FUN_02032F34()
+{
+ s32 res = MOD04_021D7800(0);
+ if (res >= 0xa)
+ {
+ FUN_02031D20(FUN_02032EAC, 0);
+ return;
+ }
+
+ if (res < 0)
+ {
+ FUN_02032F20((u32)res);
+ FUN_02031D20(FUN_02032E8C, 0);
+ return;
+ }
+
+ if (res == 1)
+ {
+ FUN_02031D20(FUN_02032EB0, 0);
+ return;
+ }
+
+ if (res == 2)
+ {
+ FUN_02031D20(FUN_02032EA8, 0);
+ return;
+ }
+
+ if (res == 3)
+ {
+ FUN_02031D20(FUN_02032EAC, 0);
+ return;
+ }
+}
+
+THUMB_FUNC void FUN_02032F98()
+{
+ s32 res = MOD04_021D7800(1);
+ if (res < 0)
+ {
+ FUN_02032F20((u32)res);
+ FUN_02031D20(FUN_02032E8C, 0);
+ return;
+ }
+
+ if (MOD04_021D8494(UNK_021C5A00->unk42) != 0)
+ {
+ FUN_0202FC60();
+ FUN_02031D20(FUN_02032F34, 0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02032FDC(u8 param0)
+{
+ MOD04_021D77C4(FUN_020303BC, FUN_02030238);
+ UNK_021C5A00->unk42 = param0;
+ FUN_02031D20(FUN_02032F98, 0);
+
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_0203300C()
+{
+ if (UNK_021C5A00->unk24 == FUN_02032F34)
+ {
+ return 0;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_02032EB0)
+ {
+ return 1;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_02032E90)
+ {
+ return 3;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_02032EA8)
+ {
+ return 4;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_02032EAC)
+ {
+ return 5;
+ }
+
+ return 2;
+}
+
+THUMB_FUNC void FUN_02033060()
+{
+ MOD04_021D77C4(FUN_020303BC, FUN_02030238);
+ if (MOD04_021D8494(-1) != 0)
+ {
+ UNK_021C5A00->unk4D = 0;
+ FUN_0202FC60();
+ FUN_02031D20(FUN_02032F34, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020330A0()
+{
+ FUN_020313A0(0);
+ if (MOD04_021D82BC(UNK_021C5A00->unk41) != 0)
+ {
+ MOD04_021D836C();
+ FUN_02031D20(FUN_02033060, 0);
+ return;
+ }
+
+ if (MOD04_021D7F8C() < 0)
+ {
+ FUN_02031D20(FUN_02032E8C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020330E4()
+{
+ if (FUN_02031190() == 0)
+ {
+ UNK_021C5A00->unk41 = 0;
+ FUN_02031D20(FUN_020330A0, 0);
+ }
+ else
+ {
+ UNK_021C5A00->unk41 = 1;
+ FUN_02031D20(FUN_020330A0, 0);
+ }
+
+ UNK_021C5A00->unk4D = 1;
+}
+
+THUMB_FUNC u8 FUN_02033128()
+{
+ return UNK_021C5A00->unk4D;
+}
+
+THUMB_FUNC u32 FUN_02033138()
+{
+ if (UNK_021C5A00->unk24 == FUN_02033060)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_02033154()
+{
+ if (UNK_021C5A00->unk24 == FUN_02032F34)
+ {
+ return 1;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_02033060)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_02033180()
+{
+ return UNK_021C5A00->unk34;
+}
+
+THUMB_FUNC void FUN_0203318C()
+{
+ FUN_020313A0(0);
+ if (MOD04_021D82BC(0) != 0)
+ {
+ MOD04_021D836C();
+ FUN_02031D20(FUN_02032440, 0);
+ }
+
+ if (MOD04_021D7F8C() < 0)
+ {
+ FUN_02031D20(FUN_02032E8C, 0);
+ }
+}
+
+THUMB_FUNC void FUN_020331C4()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ FUN_020166B8(1);
+ FUN_02031D20(FUN_02032440, 5);
+ }
+}
+
+THUMB_FUNC void FUN_020331E8()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk41 = 0;
+ FUN_02031D20(FUN_020330A0, 0);
+ }
+}
+
+THUMB_FUNC void FUN_02033208()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ if (FUN_02031190() == 0)
+ {
+ UNK_021C5A00->unk41 = 0;
+ }
+ else
+ {
+ UNK_021C5A00->unk41 = 1;
+ }
+
+ FUN_02031D20(FUN_020330A0, 0);
+ }
+}
+
+THUMB_FUNC void FUN_0203323C()
+{
+ u8 res = (u8)FUN_02031190();
+ FUN_020311D0(0x15, &res);
+}
+
+THUMB_FUNC u32 FUN_02033250()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ if (UNK_021C5A00->unk24 == FUN_02032E8C)
+ {
+ return 1;
+ }
+
+ if (UNK_021C5A00->unk24 == FUN_02032E90 && UNK_021C5A00->unk44 != 0)
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ FUN_02016828(3, 0xf, 0x100);
+ UNK_021C5A00 =
+ (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
+ MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
+
+ UNK_021C5A00->unk3F = 0x18;
+ UNK_021C5A00->unk46 = 1;
+ UNK_021C5A00->unk28 = sav2;
+ FUN_020334E8(0, 1);
+ FUN_020166A8(1);
+ }
+}
+
+THUMB_FUNC void FUN_020332DC()
+{
+ if (UNK_021C5A00 != 0)
+ {
+ FUN_020166B8(1);
+ FUN_020334E8(0, 0);
+ FreeToHeap(UNK_021C5A00);
+ UNK_021C5A00 = NULL;
+ FUN_020168D0(0xf);
+ }
+}
+
+THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
+{
+ if (UNK_021C5A00 == NULL)
+ {
+ FUN_02016828(3, 0xf, 0x100);
+ UNK_021C5A00 =
+ (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
+ MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
+ UNK_021C5A00->unk3F = 0x19;
+ UNK_021C5A00->unk46 = 1;
+ UNK_021C5A00->unk28 = sav2;
+ FUN_020334E8(0, 1);
+ FUN_020166A8(1);
+ }
+}
+
+THUMB_FUNC void FUN_02033364()
+{
+ if (UNK_021C5A00 != 0)
+ {
+ FUN_020166B8(1);
+ FUN_020334E8(0, 0);
+ FreeToHeap(UNK_021C5A00);
+ UNK_021C5A00 = NULL;
+ FUN_020168D0(0xf);
+ }
+}
+
+THUMB_FUNC u32 FUN_02033398()
+{
+ u32 st4;
+ u32 st0;
+ if (UNK_021C5A00 == NULL)
+ {
+ return 0;
+ }
+
+ if (UNK_021C5A00->unk3F == 0x18)
+ {
+ if (MOD04_021DD718(&st4, &st0) != 0)
+ {
+ MOD04_021DD6F0();
+ return 1;
+ }
+ }
+ else if (UNK_021C5A00->unk3F == 0x19)
+ {
+ if (MOD04_021DD718(&st4, &st0) != 0 && st0 == 7)
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_020333F0()
+{
+ s32 res = MOD04_021D76AC();
+ if (res < 0)
+ {
+ FUN_02032F20((u32)res);
+ FUN_02031D20(FUN_02032E8C, 0);
+ return;
+ }
+ else if (res > 0)
+ {
+ FUN_02031D20(FUN_02033060, 0);
+ }
+}
+
+THUMB_FUNC void FUN_0203341C()
+{
+ if (FUN_0202E4C8())
+ {
+ FUN_02016828(3, 0x31, 0x31000);
+ if (FUN_0202F918(1, 1, 0x200, 1) != 0)
+ {
+ MOD05_021D74E0(UNK_021C5A00->unk28, 0x31);
+ MOD04_021D83A8(FUN_020335D0);
+ FUN_0202FA10();
+ FUN_02031D20(FUN_020333F0, 0);
+ }
+ }
+}
+
+THUMB_FUNC void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1)
+{
+ Sav2_PlayerData_GetProfileAddr(sav2);
+ if (FUN_02030F40() != 0)
+ {
+ return 0;
+ }
+
+ FUN_020166A8(1);
+ FUN_02016828(3, 0xf, 0x7080);
+ FUN_02031734(sav2, 0x17);
+ UNK_021C5A00->unk00 = AllocFromHeap(0xf, param1);
+ MI_CpuFill8(UNK_021C5A00->unk00, 0, param1);
+
+ UNK_021C5A00->unk40 = 0;
+ UNK_021C5A00->unk28 = sav2;
+ FUN_02031D20(FUN_0203341C, 0);
+
+ return UNK_021C5A00->unk00;
+}
+
+THUMB_FUNC void *FUN_020334DC()
+{
+ return UNK_021C5A00->unk00;
+}
+
+THUMB_FUNC void FUN_020334E8(u8 param0, u8 param1)
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk44 = param0;
+ UNK_021C5A00->unk45 = param1;
+ }
+
+ FUN_0202EE84(param0);
+ FUN_0202EEB0(param0);
+}
+
+THUMB_FUNC u8 FUN_02033510()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ if (UNK_021C5A00->unk4E != 0)
+ {
+ return 1;
+ }
+
+ return UNK_021C5A00->unk45;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC s32 FUN_02033534()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ return UNK_021C5A00->unk3F;
+ }
+
+ return 1;
+}
+
+THUMB_FUNC u8 FUN_0203354C()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ return UNK_021C5A00->unk40;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_02033564(void *src)
+{
+ MI_CpuCopy8(src, UNK_021C5A00->unk04, 0x6);
+}
+
+THUMB_FUNC void FUN_02033578(void *dst)
+{
+ MI_CpuCopy8(UNK_021C5A00->unk04, dst, 0x6);
+}
+
+THUMB_FUNC u32 FUN_02033590()
+{
+ if (FUN_02033534() >= 0x13)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_020335A4(u8 param0)
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk47 = param0;
+ }
+}
+
+THUMB_FUNC u8 FUN_020335B8()
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ return UNK_021C5A00->unk47;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void FUN_020335D0(s32 param0)
+{
+ FUN_02033F70(0, 1, param0);
+ while (TRUE)
+ {
+ }
+}
+
+THUMB_FUNC void FUN_020335E0()
+{
+ FUN_02033F70(0, 4, 0);
+ while (TRUE)
+ {
+ }
+}
+
+THUMB_FUNC void FUN_020335F0()
+{
+}
+
+THUMB_FUNC void FUN_020335F4()
+{
+ if (FUN_02033510() != 0)
+ {
+ if (FUN_020311F0() == 0 && FUN_02033250() == 0 && FUN_02033398() == 0)
+ {
+ if (UNK_021C5A00->unk4E == 0)
+ {
+ return;
+ }
+ }
+
+ if (FUN_020335B8() != 0)
+ {
+ return;
+ }
+
+ FUN_0200541C();
+ FUN_0202287C(UNK_021C5A00->unk28);
+ gMain.unk64 = 1;
+ if (UNK_021C5A00->unk4E == 3)
+ {
+ FUN_020335A4(3);
+ return;
+ }
+
+ if (UNK_021C5A00->unk3F == 0x19 || UNK_021C5A00->unk3F == 0xf)
+ {
+ FUN_020335A4(2);
+ }
+ else
+ {
+ FUN_020335A4(1);
+ }
+ }
+}
+
+THUMB_FUNC BOOL FUN_02033678()
+{
+ if (FUN_0202EDD8() || !FUN_02031810())
+ {
+ return TRUE;
+ }
+
+ if (!FUN_0202E344())
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC u32 FUN_020336A0(u8 param0)
+{
+ if (UNK_021C5A00 != NULL)
+ {
+ UNK_021C5A00->unk4E = param0;
+ FUN_02031468();
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/arm9/src/unk_02033778.c b/arm9/src/unk_02033778.c
new file mode 100644
index 00000000..fa2a67da
--- /dev/null
+++ b/arm9/src/unk_02033778.c
@@ -0,0 +1,33 @@
+#include "global.h"
+#include "unk_02033778.h"
+#include "unk_0202F150.h"
+#include "player_data.h"
+
+extern struct PlayerData *FUN_0202DFA4(s32 param0);
+extern u32 FUN_0202E020(s32 param0);
+extern u32 FUN_0202E044(s32 param0);
+extern u32 FUN_02029B40(u32 param0, u32 param1, u32 param2, u32 language);
+extern void FUN_02029B90(u32 param0, u32 param1, u32 param2, u32 param3);
+
+THUMB_FUNC void FUN_02033778(u32 param0)
+{
+ s32 unk = FUN_02030F20();
+ if (FUN_0202DFA4(0) != NULL)
+ {
+ for (s32 i = 0; i < unk; i++)
+ {
+ if (FUN_02031190() != i)
+ {
+ FUN_020337C8(param0, FUN_0202E020(i), FUN_0202E044(i), PlayerProfile_GetLanguage(FUN_0202DFA4(i)));
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FUN_020337C8(u32 param0, u32 param1, u32 param2, u32 language)
+{
+ if (FUN_02029B40(param0, param1, param2, language) == 0)
+ {
+ FUN_02029B90(param0, param1, param2, 1);
+ }
+}
diff --git a/arm9/src/unk_020337E8.c b/arm9/src/unk_020337E8.c
new file mode 100644
index 00000000..856ba3b8
--- /dev/null
+++ b/arm9/src/unk_020337E8.c
@@ -0,0 +1,50 @@
+#include "unk_020337E8.h"
+#include "heap.h"
+
+extern struct DWC_Struct *FUN_020286EC(struct SaveBlock2 *sav2);
+extern struct DWC_Struct *FUN_02028228(struct DWC_Struct *);
+
+// DWC_init
+extern s32 DWC_Init(s32);
+
+// DWC_account
+extern void DWC_CreateExchangeToken(struct DWC_Struct *, struct DWC_token *);
+extern void DWC_CreateUserData(struct DWC_Struct *, s32);
+extern void DWC_ClearDirtyFlag(struct DWC_Struct *);
+extern BOOL DWC_CheckHasProfile(struct DWC_Struct *);
+extern BOOL DWC_CheckValidConsole(struct DWC_Struct *);
+extern BOOL DWC_CheckUserData(struct DWC_Struct *);
+extern s32 DWC_GetGsProfileId(struct DWC_Struct *, struct DWC_token *);
+
+THUMB_FUNC s32 FUN_020337E8(u32 heap_id)
+{
+ s32 ret = (s32)AllocFromHeap(heap_id, 0x720);
+ s32 ret1 = DWC_Init((ret + 0x1F) & ~0x1F);
+ FreeToHeap((void*)ret);
+ return ret1;
+}
+
+THUMB_FUNC void FUN_0203380C(struct DWC_Struct *dwc)
+{
+ struct DWC_Struct * dwc1 = FUN_02028228(dwc);
+ if(!DWC_CheckUserData(dwc1))
+ {
+ DWC_CreateUserData(dwc1, 0x4144414A);
+ DWC_ClearDirtyFlag(dwc1);
+ }
+}
+
+THUMB_FUNC s32 FUN_02033830(struct DWC_Struct *dwc)
+{
+ struct DWC_token token;
+
+ struct DWC_Struct * dwc1 = FUN_02028228(dwc);
+ DWC_CreateExchangeToken(dwc1, &token);
+ return DWC_GetGsProfileId(dwc1, &token);
+}
+
+THUMB_FUNC BOOL FUN_0203384C(struct SaveBlock2 *sav2)
+{
+ struct DWC_Struct * dwc = FUN_02028228(FUN_020286EC(sav2));
+ return (DWC_CheckHasProfile(dwc) && DWC_CheckValidConsole(dwc));
+}
diff --git a/arm9/src/unk_0204639C.c b/arm9/src/unk_0204639C.c
index 50aae8fa..c8291f5a 100644
--- a/arm9/src/unk_0204639C.c
+++ b/arm9/src/unk_0204639C.c
@@ -4,7 +4,7 @@
#pragma thumb on
-struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7)
+struct UnkStruct_0204639C * FUN_0204639C(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r6, u32 * r7)
{
struct UnkStruct_0204639C * ret = AllocFromHeapAtEnd(32, sizeof(struct UnkStruct_0204639C));
ret->unk0 = 0;
@@ -18,10 +18,9 @@ struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStru
return ret;
}
-void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6)
+void FUN_020463CC(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r4, u32 * r6)
{
- if (r5->unk10 != NULL)
- ErrorHandling();
+ GF_ASSERT(r5->unk10 == NULL);
r5->unk10 = FUN_0204639C(r5, r4, r6);
}
@@ -85,7 +84,7 @@ BOOL FUN_020464A4(void * r0)
BOOL FUN_020464B8(struct UnkStruct_0204639C * r4)
{
- struct UnkStruct_0204639C * r5 = FUN_02046528(r4);
+ struct UnkSavStruct80 * r5 = FUN_02046528(r4);
u32 * r4_2 = FUN_0204652C(r4);
switch (r4_2[0])
{
@@ -113,7 +112,7 @@ void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4)
FUN_0204640C(r6, FUN_020464B8, r2);
}
-struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C * r0)
+struct UnkSavStruct80 * FUN_02046528(struct UnkStruct_0204639C * r0)
{
return r0->unk18;
}
diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c
index 9c572a8e..a2b2dd71 100644
--- a/arm9/src/unk_0204AEA8.c
+++ b/arm9/src/unk_0204AEA8.c
@@ -3,12 +3,12 @@
#include "unk_0204639C.h"
#include "unk_0204AEA8.h"
-extern void MOD05_021E3444(u32, struct UnkStruct_0204639C *, u32);
+extern void MOD05_021E3444(u32, struct UnkSavStruct80 *, u32);
extern void FUN_0200433C(u32, u16, u32);
THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0)
{
- struct UnkStruct_0204639C *v0 = FUN_02046528(a0);
+ struct UnkSavStruct80 *v0 = FUN_02046528(a0);
u32 *v1 = FUN_0204652C(a0);
switch (v1[0])
diff --git a/arm9/src/unk_0204B0A0.c b/arm9/src/unk_0204B0A0.c
new file mode 100644
index 00000000..15a9111d
--- /dev/null
+++ b/arm9/src/unk_0204B0A0.c
@@ -0,0 +1,198 @@
+#include "global.h"
+#include "event_data.h"
+#include "unk_0204B0A0.h"
+#include "unk_0205FA2C.h"
+
+extern void GF_RTC_CopyDateTime(struct RTCDate* date, struct RTCTime* time);
+extern void FUN_02029C08(void*);
+extern void FUN_0202B3C4(void*, s32, u32);
+extern u8 GF_RTC_GetTimeOfDayByHour(u32 hour);
+extern s64 GF_RTC_DateTimeToSec(void);
+extern void* FUN_02029AFC(struct SaveBlock2* sav2);
+extern void* FUN_02022504(struct SaveBlock2* sav2);
+extern void FUN_02025B60(struct SaveBlock2* sav2, s32, BOOL);
+extern BOOL FUN_0205F668(struct SaveBlock2* sav2);
+extern void FUN_0202A9D0(struct SaveBlock2* sav2, s32);
+extern BOOL FUN_0205F618(struct SaveBlock2* sav2, u16);
+extern void FUN_0204B3D0(struct UnkSavStruct80*, s32);
+extern void FUN_0205F5A4(struct ScriptState* state, u16);
+extern s32 FUN_0205F594(struct ScriptState* state);
+extern void FUN_0202A988(void*, u32);
+extern void* FUN_0202A9B0(struct SaveBlock2* sav2);
+extern void FUN_02060344(struct SaveBlock2* sav2, s32);
+extern void FUN_0203959C(struct UnkSavStruct80*);
+extern void FUN_02025A60(struct SaveBlock2* sav2, s32);
+extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*);
+
+THUMB_FUNC void FUN_0204B0F8(struct UnkSavStruct80* unk)
+{
+ RTCDate date;
+ RTCTime time;
+
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+ if (rtc_info->field_00 != 0)
+ {
+ GF_RTC_CopyDateTime(&date, &time);
+ FUN_0204B130(unk, rtc_info, &date);
+ FUN_0204B158(unk, rtc_info, &date, &time);
+ }
+}
+
+THUMB_FUNC void FUN_0204B130(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date)
+{
+ u32 days = (u32)RTC_ConvertDateToDay(date);
+ u32 days_since_nitro_epoch = (u32)rtc_info->daysSinceNitroEpoch;
+
+ if (days < days_since_nitro_epoch)
+ {
+ rtc_info->daysSinceNitroEpoch = (s32)days;
+ }
+ else if (days > days_since_nitro_epoch)
+ {
+ FUN_0204B1DC(unk, (s32)(days - days_since_nitro_epoch));
+ rtc_info->daysSinceNitroEpoch = (s32)days;
+ }
+}
+
+THUMB_FUNC void FUN_0204B158(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date, struct RTCTime* time)
+{
+ s64 unk1 = RTC_ConvertDateTimeToSecond(date, time);
+ s64 unk2 = RTC_ConvertDateTimeToSecond(&rtc_info->date, &rtc_info->time);
+
+ if (unk2 > unk1)
+ {
+ rtc_info->date = *date;
+ rtc_info->time = *time;
+ return;
+ }
+
+ s32 minutes = (s32)((unk1 - unk2) / 60);
+ if (minutes > 0)
+ {
+ FUN_02023884(rtc_info, (u32)minutes);
+ FUN_0204B270(unk, minutes, time);
+
+ rtc_info->date = *date;
+ rtc_info->time = *time;
+ }
+}
+
+THUMB_FUNC void FUN_0204B1DC(struct UnkSavStruct80* unk, s32 a1)
+{
+ struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk);
+ FUN_02025A60(sav2, a1);
+ FUN_0203959C(unk);
+ FUN_02060344(unk->saveBlock2, a1);
+
+ void* unk_sav_ptr1 = FUN_0202881C(unk->saveBlock2);
+ FUN_02028754(unk_sav_ptr1, (u32)a1);
+
+ void* unk_sav_ptr2 = FUN_0202A9B0(unk->saveBlock2);
+ unk_sav_ptr1 = FUN_0202881C(unk->saveBlock2);
+ u32 unk1 = FUN_020287A4(unk_sav_ptr1);
+ FUN_0202A988(unk_sav_ptr2, unk1);
+
+ struct PlayerParty* party = SavArray_PlayerParty_get(unk->saveBlock2);
+ Party_UpdatePokerus(party, a1);
+
+ struct ScriptState* state = SavArray_Flags_get(unk->saveBlock2);
+ s32 unk2 = FUN_0205F594(state);
+
+ u16 unk3;
+ if (unk2 > a1)
+ {
+ unk3 = (u16)(unk2 - a1);
+ }
+ else
+ {
+ unk3 = 0;
+ }
+
+ FUN_0205F5A4(state, unk3);
+ FUN_0205F618(unk->saveBlock2, (u16)a1);
+ FUN_0205F668(unk->saveBlock2);
+ FUN_0206007C(unk->saveBlock2);
+
+ void* unk_sav_ptr3 = FUN_02029AFC(unk->saveBlock2);
+ FUN_02029C08(unk_sav_ptr3);
+}
+
+THUMB_FUNC void FUN_0204B270(struct UnkSavStruct80* unk, s32 a1, struct RTCTime* time)
+{
+ FUN_0204B3D0(unk, a1);
+ FUN_0202A9D0(unk->saveBlock2, a1);
+ BOOL unk_bool = FUN_0204B33C(unk);
+ FUN_02025B60(unk->saveBlock2, a1, unk_bool);
+ void* unk_sav_ptr = FUN_02022504(unk->saveBlock2);
+ FUN_0202B3C4(unk_sav_ptr, a1, time->minute);
+}
+
+THUMB_FUNC u32 Script_GetTimeOfDay(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return GF_RTC_GetTimeOfDayByHour(rtc_info->time.hour);
+}
+
+THUMB_FUNC u32 Script_GetMonth(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return rtc_info->date.month;
+}
+
+THUMB_FUNC u32 Script_GetDay(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return rtc_info->date.day;
+}
+
+THUMB_FUNC RTCWeek Script_GetWeekday(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return rtc_info->date.week;
+}
+
+THUMB_FUNC u32 Script_GetHour(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return rtc_info->time.hour;
+}
+
+THUMB_FUNC u32 Script_GetMinute(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return rtc_info->time.minute;
+}
+
+THUMB_FUNC void Script_SavRTC_x24toDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ RTC_ConvertSecondToDateTime(date, time, rtc_info->secondsSinceNitroEpoch);
+}
+
+THUMB_FUNC void Script_SavRTC_x2CtoDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ RTC_ConvertSecondToDateTime(date, time, rtc_info->field_2C);
+}
+
+THUMB_FUNC void Script_SavRTC_DateTimeTox2C(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ rtc_info->field_2C = GF_RTC_DateTimeToSec();
+}
+
+THUMB_FUNC BOOL FUN_0204B33C(struct UnkSavStruct80* unk)
+{
+ struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2);
+
+ return FUN_02023874(rtc_info);
+}
diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c
index 7bcdf950..cabd756e 100644
--- a/arm9/src/unk_0205FA2C.c
+++ b/arm9/src/unk_0205FA2C.c
@@ -1,18 +1,16 @@
#include "unk_0205FA2C.h"
+#include "unk_020337E8.h"
extern void *UNK_020F96DC;
extern void *UNK_020FA6E8;
extern u32 FUN_02079C70(struct SaveBlock2 *sav2);
extern void FUN_0207B000(struct UnkPlayerStruct2_0205FA2C *ptr, const u8 param1[12]);
extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerData *player_data);
-extern u32 FUN_0203384C(u32 *param0);
-extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2);
+extern u32 *FUN_02038790(struct UnkSavStruct80 *param0, u16 param1, u16 param2);
extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16);
-extern u32 FUN_02031190();
-extern u32 FUN_020316E0(u32 param0);
-extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1);
-extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1);
-extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1);
+extern u16 MOD06_02244660(struct UnkSavStruct80 *param0, u8 *param1);
+extern u16 MOD06_022446BC(struct UnkSavStruct80 *param0, u8 *param1);
+extern u16 MOD06_022446E0(struct UnkSavStruct80 *param0, u8 *param1);
extern void FUN_0202A5CC(u32 param0, u32 param1);
extern u32 FUN_0202A5D0(u32 param0);
extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1);
@@ -38,12 +36,12 @@ const u8 UNK_020F7454[] = {
};
THUMB_FUNC u32 FUN_0205FA2C(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id)
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id)
{
struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd(
heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C));
- struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC);
+ struct SaveBlock2 *sav2 = param1->saveBlock2;
MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C));
ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2);
@@ -72,7 +70,7 @@ THUMB_FUNC u32 FUN_0205FA2C(
}
THUMB_FUNC u32 FUN_0205FAD8(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1)
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1)
{
if (FUN_0204647C(param1))
{
@@ -107,9 +105,9 @@ THUMB_FUNC u32 FUN_0205FAD8(
}
THUMB_FUNC u32 FUN_0205FB34(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id)
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id)
{
- struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC);
+ struct SaveBlock2 *sav2 = param1->saveBlock2;
struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd(
heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C));
@@ -142,7 +140,7 @@ THUMB_FUNC u32 FUN_0205FB34(
}
THUMB_FUNC u32 FUN_0205FBC0(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1)
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1)
{
if (FUN_0204647C(param1))
{
@@ -160,7 +158,7 @@ THUMB_FUNC u32 FUN_0205FBC0(
THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0)
{
- struct UnkStruct_0204639C *res = FUN_02046528(param0);
+ struct UnkSavStruct80 *res = FUN_02046528(param0);
struct UnkCallbackStruct1_0205FA2C *res2 =
(struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0);
switch (res2->unk04)
@@ -194,7 +192,7 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0,
u8 param6,
u8 param7)
{
- struct UnkStruct_0204639C *res = FUN_02046528(param0);
+ struct UnkSavStruct80 *res = FUN_02046528(param0);
struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap(
0xb, sizeof(struct UnkCallbackStruct1_0205FA2C));
@@ -212,9 +210,9 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0,
}
THUMB_FUNC u32 FUN_0205FC9C(
- struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1)
+ struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1)
{
- if (FUN_0203384C(param1->unkC))
+ if (FUN_0203384C(param1->saveBlock2))
{
param0->unk08 = FUN_02038790(param1, param0->unk12, param0->unk14);
@@ -226,7 +224,7 @@ THUMB_FUNC u32 FUN_0205FC9C(
}
THUMB_FUNC u32 FUN_0205FCC4(
- struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1)
+ struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1)
{
if (FUN_0204647C(param1))
{
@@ -241,7 +239,7 @@ THUMB_FUNC u32 FUN_0205FCC4(
THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0)
{
- struct UnkStruct_0204639C *res = FUN_02046528(param0);
+ struct UnkSavStruct80 *res = FUN_02046528(param0);
struct UnkCallbackStruct2_0205FA2C *res2 =
(struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0);
@@ -254,7 +252,7 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0)
res2->unk04 = FUN_0205FCC4(res2, res);
break;
case 2:
- u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2->unk10);
+ u16 *var = GetVarPointer(res, res2->unk10);
*var = (u16)res2->unk00;
FreeToHeap(res2);
@@ -266,7 +264,7 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0)
THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3)
{
- struct UnkStruct_0204639C *res = FUN_02046528(param0);
+ struct UnkSavStruct80 *res = FUN_02046528(param0);
struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap(
0xb, sizeof(struct UnkCallbackStruct2_0205FA2C));
MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C));
@@ -280,15 +278,15 @@ THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16
THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0)
{
- struct UnkStruct_0204639C *res = FUN_02046528(param0);
+ struct UnkSavStruct80 *res = FUN_02046528(param0);
u16 *res2 = (u16 *)FUN_0204652C(param0);
- u32 res3 = FUN_020316E0(1 - FUN_02031190());
- if (res3 == 0)
+ u8 *res3 = FUN_020316E0(1 - FUN_02031190());
+ if (res3 == NULL)
{
return 0;
}
- u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2[1]);
+ u16 *var = GetVarPointer(res, res2[1]);
switch (res2[0])
{
case 0:
@@ -296,11 +294,9 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0)
break;
case 1:
*var = MOD06_022446BC(res, res3);
-
break;
case 2:
*var = MOD06_022446E0(res, res3);
-
break;
}
@@ -311,7 +307,7 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0)
THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2)
{
- struct UnkStruct_0204639C *res = FUN_02046528(param0);
+ struct UnkSavStruct80 *res = FUN_02046528(param0);
u16 *ptr = AllocFromHeap(0xb, 2 * sizeof(u16));
MI_CpuFill8(ptr, 0, 2 * sizeof(u16));
diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c
new file mode 100644
index 00000000..a217f52c
--- /dev/null
+++ b/arm9/src/unk_0206015C.c
@@ -0,0 +1,149 @@
+#include "unk_0206015C.h"
+
+#include "heap.h"
+#include "event_data.h"
+#include "main.h"
+
+/* Note to future reader, there might be some errors
+ in the return type / parameters. They are right for this code
+ but they might not be for every code, please do not blindly
+ trust these prototypes if you are decompiling these functions. */
+extern THUMB_FUNC u32 MOD06_02244DB0(u32);
+extern THUMB_FUNC void MOD06_02244DBC(void*);
+extern THUMB_FUNC void MOD06_02244DC4(void*, void*);
+extern THUMB_FUNC void MOD06_02244EF8(void*);
+extern THUMB_FUNC void MOD06_02244F18(void*);
+extern THUMB_FUNC BOOL MOD06_02244F24(void*);
+extern THUMB_FUNC void MOD06_02244F2C(void*);
+extern THUMB_FUNC void* MOD06_02245088(struct UnkSavStruct80 * savStruct);
+extern THUMB_FUNC u32 MOD06_02245114(u32, struct UnkSavStruct80*);
+extern THUMB_FUNC void MOD06_02245190(u32);
+extern THUMB_FUNC void MOD06_02245198(u8, u32);
+extern THUMB_FUNC u32 MOD06_022451F0(u32);
+
+extern THUMB_FUNC void FUN_020054C8(u32);
+extern THUMB_FUNC void FUN_02049160(struct UnkStruct_0204639C*, u32);
+extern THUMB_FUNC void FUN_0204AF84(struct UnkStruct_0204639C*);
+extern THUMB_FUNC void FUN_0204AF3C(struct UnkStruct_0204639C *);
+extern THUMB_FUNC void FUN_0204AFC8(struct UnkStruct_0204639C *);
+extern THUMB_FUNC void FUN_0204B00C(struct UnkStruct_0204639C *);
+extern THUMB_FUNC void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32);
+extern THUMB_FUNC u32 FUN_020553A0(u32);
+extern THUMB_FUNC void FUN_0205889C(u32, u32);
+extern THUMB_FUNC void FUN_0205F1C4(struct ScriptState *);
+extern THUMB_FUNC void FUN_0205F1D4(struct ScriptState *);
+extern THUMB_FUNC void FUN_0206367C(struct UnkSavStruct80 *, u32);
+
+
+
+THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct)
+{
+ struct UnkStruct_0206015C *unkStruct = AllocFromHeapAtEnd(0xb, 0x10);
+ unkStruct->unk0 = MOD06_02244DB0(0xb);
+ unkStruct->unk4 = MOD06_02245114(0xb, savStruct);
+ unkStruct->unkC = 0;
+ unkStruct->unkD = 0;
+
+ FUN_0204640C(savStruct->unk10, FUN_02060194, (u32 *)unkStruct);
+}
+
+THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0)
+{
+ struct UnkSavStruct80 *savStruct = FUN_02046528(unkStruct0);
+ struct UnkStruct_0204652C *unkStruct1 = (struct UnkStruct_0204652C *)FUN_0204652C(unkStruct0);
+
+ switch (unkStruct1->action)
+ {
+ case 0:
+ FUN_0206367C(savStruct, 1);
+ MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4);
+ unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4);
+ FUN_0204AFC8(unkStruct0);
+ unkStruct1->action = 1;
+ break;
+
+ case 1:
+ FUN_0204AF3C(unkStruct0);
+ unkStruct1->action = 2;
+ break;
+
+ case 2:
+ struct ScriptState *scrState = SavArray_Flags_get(savStruct->saveBlock2);
+ u8 unkD = unkStruct1->unkD;
+ if (unkD == 0)
+ {
+ FUN_0205F1C4(scrState);
+ }
+ else if (unkD == 5)
+ {
+ FUN_0205F1D4(scrState);
+ }
+ FUN_02049160(unkStruct0, unkStruct1->unk8);
+ unkStruct1->action = 3;
+ break;
+
+ case 3:
+ FUN_0204AF84(unkStruct0);
+ unkStruct1->action = 4;
+ break;
+
+ case 4:
+ u32 unk0 = FUN_020553A0(savStruct->unk38);
+ unkStruct1->unkD += 1;
+ if (unkStruct1->unkD <= 5)
+ {
+ void *unkAddr = MOD06_02245088(savStruct);
+ FUN_0205889C(unk0, 1);
+ MOD06_02244DC4(unkStruct1->unk0, unkAddr);
+ MOD06_02244EF8(unkStruct1->unk0);
+ unkStruct1->unkE = 0;
+ FUN_020054C8(1657);
+ FUN_0204C1B4(unkStruct0, 0x3, 0x11, 0x0000FFFF, 0, 6, 1, 0xb);
+ unkStruct1->action = 5;
+ }
+ else
+ {
+ FUN_0205889C(unk0, 0);
+ FUN_0204B00C(unkStruct0);
+ unkStruct1->action = 8;
+ }
+ break;
+
+ case 5:
+ unkStruct1->unkE += 1;
+ if (unkStruct1->unkE < 0x3c && !(gMain.newKeys & 1))
+ break;
+
+ MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4);
+ unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4);
+
+ FUN_020054C8(1657);
+ FUN_0204C1B4(unkStruct0, 0x3, 0x10, 0x0000FFFF, 0, 6, 1, 0xb);
+ unkStruct1->action = 6;
+ break;
+
+ case 6:
+ MOD06_02244F18(unkStruct1->unk0);
+ unkStruct1->action = 7;
+ break;
+
+ case 7:
+ if (MOD06_02244F24(unkStruct1->unk0))
+ {
+ MOD06_02244F2C(unkStruct1->unk0);
+ unkStruct1->action = 1;
+ }
+ break;
+
+ case 8:
+ FUN_0206367C(savStruct, 0);
+ MOD06_02245190(unkStruct1->unk4);
+ MOD06_02244DBC(unkStruct1->unk0);
+ FreeToHeap(unkStruct1);
+ return TRUE;
+
+ default:
+ break;
+ }
+ return FALSE;
+}
diff --git a/arm9/src/unk_0206439C.c b/arm9/src/unk_0206439C.c
new file mode 100644
index 00000000..80d93557
--- /dev/null
+++ b/arm9/src/unk_0206439C.c
@@ -0,0 +1,16 @@
+#include "global.h"
+#include "heap.h"
+#include "party.h"
+#include "save_block_2.h"
+#include "unk_0206439C.h"
+
+THUMB_FUNC struct UnkStruct_0206439C* FUN_0206439C(u32 heap_id, u8 mon_idx, struct SaveBlock2* sav2)
+{
+ struct UnkStruct_0206439C* ret = AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct_0206439C));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav2);
+
+ ret->pokemon = GetPartyMonByIndex(party, mon_idx);
+ ret->unk4 = NULL;
+
+ return ret;
+}
diff --git a/arm9/src/unk_0208890C.c b/arm9/src/unk_0208890C.c
new file mode 100644
index 00000000..0bc8803f
--- /dev/null
+++ b/arm9/src/unk_0208890C.c
@@ -0,0 +1,53 @@
+#include "global.h"
+#include "bag.h"
+#include "heap.h"
+#include "main.h"
+#include "MI_memory.h"
+#include "player_data.h"
+#include "script.h"
+#include "unk_0208890C.h"
+
+extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*);
+extern void* FUN_02028048(struct SaveBlock2* sav2);
+extern void FUN_020373D4(struct UnkSavStruct80*, struct Unk21DBE18*, void*);
+extern BOOL FUN_020889B0(struct UnkStruct_02006234*, u32*);
+extern BOOL FUN_02088A00(struct UnkStruct_02006234*, u32*);
+extern BOOL FUN_02088A78(struct UnkStruct_02006234*, u32*);
+
+const struct Unk21DBE18 UNK_020FD6E4 = {
+ FUN_020889B0,
+ FUN_02088A00,
+ FUN_02088A78,
+ 0xFFFFFFFF,
+};
+
+THUMB_FUNC struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 heap_id, void* a3)
+{
+ struct UnkStruct_0208890C* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208890C));
+ MI_CpuFill8(ret, 0, sizeof(struct UnkStruct_0208890C));
+
+ ret->sav2 = sav2;
+ ret->unk8 = FUN_02028048(sav2);
+ ret->player = Sav2_PlayerData_GetProfileAddr(sav2);
+ ret->bag = Sav2_Bag_get(sav2);
+ ret->options = Sav2_PlayerData_GetOptionsAddr(sav2);
+ ret->unk1C = a3;
+ ret->unk4 = a0;
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_02088950(struct UnkSavStruct80* unk, struct UnkStruct_0208890C* unk2)
+{
+ FUN_020373D4(unk, (struct Unk21DBE18*)&UNK_020FD6E4, unk2);
+}
+
+THUMB_FUNC struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80* unk, void* a1, u32 heap_id)
+{
+ struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk);
+ struct UnkStruct_0208890C* ret = FUN_0208890C(a1, sav2, heap_id, unk->unk98);
+
+ FUN_02088950(unk, ret);
+
+ return ret;
+}
diff --git a/arm9/src/unk_0208A300.c b/arm9/src/unk_0208A300.c
new file mode 100644
index 00000000..3c4a496b
--- /dev/null
+++ b/arm9/src/unk_0208A300.c
@@ -0,0 +1,38 @@
+#include "global.h"
+#include "heap.h"
+#include "unk_0208A300.h"
+
+THUMB_FUNC struct UnkStruct_0208A300* FUN_0208A300(u32 heap_id)
+{
+ struct UnkStruct_0208A300* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208A300));
+
+ __builtin__clear(ret, sizeof(struct UnkStruct_0208A300));
+ ret->unk4 = 2;
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_0208A320(struct UnkStruct_0208A300* unk)
+{
+ FreeToHeap(unk);
+}
+
+THUMB_FUNC u32 FUN_0208A328(struct UnkStruct_0208A300* unk)
+{
+ return unk->unk0;
+}
+
+THUMB_FUNC void FUN_0208A32C(struct UnkStruct_0208A300* unk, u32 a1)
+{
+ unk->unk0 = a1;
+}
+
+THUMB_FUNC u32 FUN_0208A330(struct UnkStruct_0208A300* unk)
+{
+ return unk->unk4;
+}
+
+THUMB_FUNC void FUN_0208A334(struct UnkStruct_0208A300* unk, u32 a1)
+{
+ unk->unk4 = a1;
+}
diff --git a/files/itemtool/itemdata/item_icon/.gitignore b/files/itemtool/itemdata/item_icon/.gitignore
index 190832e8..6710dbd1 100644
--- a/files/itemtool/itemdata/item_icon/.gitignore
+++ b/files/itemtool/itemdata/item_icon/.gitignore
@@ -162,3 +162,13 @@ narc_0162.NCGR
narc_0162.NCLR
narc_0164.NCGR
narc_0164.NCLR
+narc_0166.NCGR
+narc_0166.NCLR
+narc_0168.NCGR
+narc_0168.NCLR
+narc_0170.NCGR
+narc_0170.NCLR
+narc_0172.NCGR
+narc_0172.NCLR
+narc_0174.NCGR
+narc_0174.NCLR
diff --git a/files/itemtool/itemdata/item_icon/narc_0166.NCGR b/files/itemtool/itemdata/item_icon/narc_0166.NCGR
deleted file mode 100644
index ec3586be..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0166.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0166.png b/files/itemtool/itemdata/item_icon/narc_0166.png
new file mode 100644
index 00000000..de6ca576
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0166.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0167.NCLR b/files/itemtool/itemdata/item_icon/narc_0167.NCLR
deleted file mode 100644
index 65e3fb33..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0167.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0168.NCGR b/files/itemtool/itemdata/item_icon/narc_0168.NCGR
deleted file mode 100644
index 260d4342..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0168.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0168.png b/files/itemtool/itemdata/item_icon/narc_0168.png
new file mode 100644
index 00000000..351d0712
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0168.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0169.NCLR b/files/itemtool/itemdata/item_icon/narc_0169.NCLR
deleted file mode 100644
index 1082f764..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0169.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0170.NCGR b/files/itemtool/itemdata/item_icon/narc_0170.NCGR
deleted file mode 100644
index 922ca0a3..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0170.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0170.png b/files/itemtool/itemdata/item_icon/narc_0170.png
new file mode 100644
index 00000000..1bfc49f1
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0170.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0171.NCLR b/files/itemtool/itemdata/item_icon/narc_0171.NCLR
deleted file mode 100644
index e15a8a7a..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0171.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0172.NCGR b/files/itemtool/itemdata/item_icon/narc_0172.NCGR
deleted file mode 100644
index 15a77735..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0172.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0172.png b/files/itemtool/itemdata/item_icon/narc_0172.png
new file mode 100644
index 00000000..81b648e5
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0172.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0173.NCLR b/files/itemtool/itemdata/item_icon/narc_0173.NCLR
deleted file mode 100644
index b3edb23e..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0173.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0174.NCGR b/files/itemtool/itemdata/item_icon/narc_0174.NCGR
deleted file mode 100644
index 390dd391..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0174.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0174.png b/files/itemtool/itemdata/item_icon/narc_0174.png
new file mode 100644
index 00000000..1766cbcd
--- /dev/null
+++ b/files/itemtool/itemdata/item_icon/narc_0174.png
Binary files differ
diff --git a/files/itemtool/itemdata/item_icon/narc_0175.NCLR b/files/itemtool/itemdata/item_icon/narc_0175.NCLR
deleted file mode 100644
index 9ab0f314..00000000
--- a/files/itemtool/itemdata/item_icon/narc_0175.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/.gitignore b/files/poketool/icongra/poke_icon/.gitignore
index 8f4afa7f..fccab7c8 100644
--- a/files/poketool/icongra/poke_icon/.gitignore
+++ b/files/poketool/icongra/poke_icon/.gitignore
@@ -1,6 +1,5 @@
narc_0000.NCLR
-narc_0002.NCER
-narc_0004.NCER
+*.NCER
narc_0007.NCGR
narc_0008.NCGR
narc_0009.NCGR
@@ -11,4 +10,24 @@ narc_0013.NCGR
narc_0014.NCGR
narc_0015.NCGR
narc_0016.NCGR
+narc_0017.NCGR
+narc_0018.NCGR
+narc_0019.NCGR
+narc_0020.NCGR
+narc_0021.NCGR
+narc_0022.NCGR
+narc_0023.NCGR
+narc_0024.NCGR
+narc_0025.NCGR
+narc_0026.NCGR
+narc_0027.NCGR
+narc_0028.NCGR
+narc_0029.NCGR
+narc_0030.NCGR
+narc_0031.NCGR
+narc_0032.NCGR
+narc_0033.NCGR
+narc_0034.NCGR
+narc_0035.NCGR
+narc_0036.NCGR
narc_0402.NCGR
diff --git a/files/poketool/icongra/poke_icon/narc_0002.json b/files/poketool/icongra/poke_icon/narc_0002.json
index defb5b41..1750fa55 100644
--- a/files/poketool/icongra/poke_icon/narc_0002.json
+++ b/files/poketool/icongra/poke_icon/narc_0002.json
@@ -4,6 +4,7 @@
"imageHeight": 32,
"imageWidth": 32,
"cellCount": 2,
+ "mappingType": 0,
"cells": [
{
"readOnly": 2054,
diff --git a/files/poketool/icongra/poke_icon/narc_0004.json b/files/poketool/icongra/poke_icon/narc_0004.json
index 3d8b8b80..b8cae63a 100644
--- a/files/poketool/icongra/poke_icon/narc_0004.json
+++ b/files/poketool/icongra/poke_icon/narc_0004.json
@@ -4,6 +4,7 @@
"imageHeight": 32,
"imageWidth": 32,
"cellCount": 2,
+ "mappingType": 0,
"cells": [
{
"readOnly": 2054,
diff --git a/files/poketool/icongra/poke_icon/narc_0006.NCER b/files/poketool/icongra/poke_icon/narc_0006.NCER
deleted file mode 100644
index 19e6e054..00000000
--- a/files/poketool/icongra/poke_icon/narc_0006.NCER
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0006.json b/files/poketool/icongra/poke_icon/narc_0006.json
new file mode 100644
index 00000000..ce7f1d83
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0006.json
@@ -0,0 +1,68 @@
+{
+ "labelEnabled": true,
+ "extended": true,
+ "imageHeight": 32,
+ "imageWidth": 32,
+ "cellCount": 2,
+ "mappingType": 1,
+ "cells": [
+ {
+ "readOnly": 2054,
+ "maxX": 15,
+ "maxY": 15,
+ "minX": 65520,
+ "minY": 65520,
+ "OAM": {
+ "Attr0": {
+ "YCoordinate": 240,
+ "Rotation": false,
+ "SizeDisable": false,
+ "Mode": 0,
+ "Mosaic": false,
+ "Colours": 16,
+ "Shape": 0
+ },
+ "Attr1": {
+ "XCoordinate": 496,
+ "RotationScaling": 0,
+ "Size": 2
+ },
+ "Attr2": {
+ "CharName": 0,
+ "Priority": 0,
+ "Palette": 0
+ }
+ }
+ },
+ {
+ "readOnly": 2054,
+ "maxX": 15,
+ "maxY": 15,
+ "minX": 65520,
+ "minY": 65520,
+ "OAM": {
+ "Attr0": {
+ "YCoordinate": 240,
+ "Rotation": false,
+ "SizeDisable": false,
+ "Mode": 0,
+ "Mosaic": false,
+ "Colours": 16,
+ "Shape": 0
+ },
+ "Attr1": {
+ "XCoordinate": 496,
+ "RotationScaling": 0,
+ "Size": 2
+ },
+ "Attr2": {
+ "CharName": 8,
+ "Priority": 0,
+ "Palette": 0
+ }
+ }
+ }
+ ],
+ "labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5"],
+ "labelCount": 6
+}
diff --git a/files/poketool/icongra/poke_icon/narc_0017.NCGR b/files/poketool/icongra/poke_icon/narc_0017.NCGR
deleted file mode 100644
index 8676315a..00000000
--- a/files/poketool/icongra/poke_icon/narc_0017.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0017.png b/files/poketool/icongra/poke_icon/narc_0017.png
new file mode 100644
index 00000000..2b8dbd37
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0017.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0018.NCGR b/files/poketool/icongra/poke_icon/narc_0018.NCGR
deleted file mode 100644
index 6401655c..00000000
--- a/files/poketool/icongra/poke_icon/narc_0018.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0018.png b/files/poketool/icongra/poke_icon/narc_0018.png
new file mode 100644
index 00000000..fe17c1e7
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0018.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0019.NCGR b/files/poketool/icongra/poke_icon/narc_0019.NCGR
deleted file mode 100644
index 46d342ae..00000000
--- a/files/poketool/icongra/poke_icon/narc_0019.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0019.png b/files/poketool/icongra/poke_icon/narc_0019.png
new file mode 100644
index 00000000..11ad963d
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0019.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0020.NCGR b/files/poketool/icongra/poke_icon/narc_0020.NCGR
deleted file mode 100644
index db6cb323..00000000
--- a/files/poketool/icongra/poke_icon/narc_0020.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0020.png b/files/poketool/icongra/poke_icon/narc_0020.png
new file mode 100644
index 00000000..6efbd041
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0020.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0021.NCGR b/files/poketool/icongra/poke_icon/narc_0021.NCGR
deleted file mode 100644
index f0e4eb2b..00000000
--- a/files/poketool/icongra/poke_icon/narc_0021.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0021.png b/files/poketool/icongra/poke_icon/narc_0021.png
new file mode 100644
index 00000000..1c857d44
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0021.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0022.NCGR b/files/poketool/icongra/poke_icon/narc_0022.NCGR
deleted file mode 100644
index 3d83aea4..00000000
--- a/files/poketool/icongra/poke_icon/narc_0022.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0022.png b/files/poketool/icongra/poke_icon/narc_0022.png
new file mode 100644
index 00000000..d5e6471a
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0022.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0023.NCGR b/files/poketool/icongra/poke_icon/narc_0023.NCGR
deleted file mode 100644
index b84b867e..00000000
--- a/files/poketool/icongra/poke_icon/narc_0023.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0023.png b/files/poketool/icongra/poke_icon/narc_0023.png
new file mode 100644
index 00000000..c3c8f5d8
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0023.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0024.NCGR b/files/poketool/icongra/poke_icon/narc_0024.NCGR
deleted file mode 100644
index a0bb2fad..00000000
--- a/files/poketool/icongra/poke_icon/narc_0024.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0024.png b/files/poketool/icongra/poke_icon/narc_0024.png
new file mode 100644
index 00000000..c0348df5
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0024.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0025.NCGR b/files/poketool/icongra/poke_icon/narc_0025.NCGR
deleted file mode 100644
index e3945760..00000000
--- a/files/poketool/icongra/poke_icon/narc_0025.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0025.png b/files/poketool/icongra/poke_icon/narc_0025.png
new file mode 100644
index 00000000..fc77716e
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0025.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0026.NCGR b/files/poketool/icongra/poke_icon/narc_0026.NCGR
deleted file mode 100644
index f40adfe7..00000000
--- a/files/poketool/icongra/poke_icon/narc_0026.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0026.png b/files/poketool/icongra/poke_icon/narc_0026.png
new file mode 100644
index 00000000..ae7b2225
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0026.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0027.NCGR b/files/poketool/icongra/poke_icon/narc_0027.NCGR
deleted file mode 100644
index 690c7ab2..00000000
--- a/files/poketool/icongra/poke_icon/narc_0027.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0027.png b/files/poketool/icongra/poke_icon/narc_0027.png
new file mode 100644
index 00000000..b9959d1c
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0027.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0028.NCGR b/files/poketool/icongra/poke_icon/narc_0028.NCGR
deleted file mode 100644
index 4adf4b97..00000000
--- a/files/poketool/icongra/poke_icon/narc_0028.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0028.png b/files/poketool/icongra/poke_icon/narc_0028.png
new file mode 100644
index 00000000..b7f3a1eb
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0028.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0029.NCGR b/files/poketool/icongra/poke_icon/narc_0029.NCGR
deleted file mode 100644
index 7db15dcf..00000000
--- a/files/poketool/icongra/poke_icon/narc_0029.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0029.png b/files/poketool/icongra/poke_icon/narc_0029.png
new file mode 100644
index 00000000..a52ea031
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0029.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0030.NCGR b/files/poketool/icongra/poke_icon/narc_0030.NCGR
deleted file mode 100644
index 9eba4fa4..00000000
--- a/files/poketool/icongra/poke_icon/narc_0030.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0030.png b/files/poketool/icongra/poke_icon/narc_0030.png
new file mode 100644
index 00000000..3c81efd6
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0030.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0031.NCGR b/files/poketool/icongra/poke_icon/narc_0031.NCGR
deleted file mode 100644
index ed436770..00000000
--- a/files/poketool/icongra/poke_icon/narc_0031.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0031.png b/files/poketool/icongra/poke_icon/narc_0031.png
new file mode 100644
index 00000000..8967d44a
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0031.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0032.NCGR b/files/poketool/icongra/poke_icon/narc_0032.NCGR
deleted file mode 100644
index 3424a464..00000000
--- a/files/poketool/icongra/poke_icon/narc_0032.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0032.png b/files/poketool/icongra/poke_icon/narc_0032.png
new file mode 100644
index 00000000..feb77f7d
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0032.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0033.NCGR b/files/poketool/icongra/poke_icon/narc_0033.NCGR
deleted file mode 100644
index ca90981b..00000000
--- a/files/poketool/icongra/poke_icon/narc_0033.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0033.png b/files/poketool/icongra/poke_icon/narc_0033.png
new file mode 100644
index 00000000..67543933
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0033.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0034.NCGR b/files/poketool/icongra/poke_icon/narc_0034.NCGR
deleted file mode 100644
index 9fa16d27..00000000
--- a/files/poketool/icongra/poke_icon/narc_0034.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0034.png b/files/poketool/icongra/poke_icon/narc_0034.png
new file mode 100644
index 00000000..5919f109
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0034.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0035.NCGR b/files/poketool/icongra/poke_icon/narc_0035.NCGR
deleted file mode 100644
index 0fbd78f8..00000000
--- a/files/poketool/icongra/poke_icon/narc_0035.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0035.png b/files/poketool/icongra/poke_icon/narc_0035.png
new file mode 100644
index 00000000..08198e6b
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0035.png
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0036.NCGR b/files/poketool/icongra/poke_icon/narc_0036.NCGR
deleted file mode 100644
index 109becc0..00000000
--- a/files/poketool/icongra/poke_icon/narc_0036.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/poketool/icongra/poke_icon/narc_0036.png b/files/poketool/icongra/poke_icon/narc_0036.png
new file mode 100644
index 00000000..a2483ae6
--- /dev/null
+++ b/files/poketool/icongra/poke_icon/narc_0036.png
Binary files differ
diff --git a/filesystem.mk b/filesystem.mk
index 4264c367..387231bf 100644
--- a/filesystem.mk
+++ b/filesystem.mk
@@ -275,10 +275,13 @@ endif
HOSTFS_FILES := $(NITROFS_FILES:%=files/%)
%.narc:
- $(KNARC) -d $(basename $@)/ -p $@
+ $(KNARC) -d $(basename $@)/ -p $@ -i
%.arc:
- $(KNARC) -d $(basename $@)/ -p $@
+ $(KNARC) -d $(basename $@)/ -p $@ -i
+
+%.naix: %.narc
+files/wazaeffect/we.naix: %.naix: %.arc
O2NARC_TARGETS := \
files/poketool/personal/personal.narc \
@@ -295,8 +298,9 @@ O2NARC_TARGETS := \
ALL_O2NARC_TARGETS := $(O2NARC_TARGETS) \
files/poketool/trainer/trpoke.narc
+O2NARCFLAGS := -i
files/poketool/personal/pms.narc: O2NARCFLAGS = -f
-files/itemtool/itemdata/item_data.narc: O2NARCFLAGS = -p 0xFF
+files/itemtool/itemdata/item_data.narc: O2NARCFLAGS += -p 0xFF
ifeq (,$(NODEP))
$(ALL_O2NARC_TARGETS): dep = $(shell $(SCANINC) -I include -I include-mw -I arm9/lib/include $(patsubst %.narc,%.json.txt,$@))
@@ -1742,7 +1746,17 @@ files/itemtool/itemdata/item_icon.narc: \
files/itemtool/itemdata/item_icon/narc_0162.NCGR \
files/itemtool/itemdata/item_icon/narc_0162.NCLR \
files/itemtool/itemdata/item_icon/narc_0164.NCGR \
- files/itemtool/itemdata/item_icon/narc_0164.NCLR
+ files/itemtool/itemdata/item_icon/narc_0164.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0166.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0166.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0168.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0168.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0170.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0170.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0172.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0172.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0174.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0174.NCLR
files/application/custom_ball/data/cb_data.narc: \
@@ -2589,6 +2603,7 @@ files/poketool/icongra/poke_icon.narc: \
files/poketool/icongra/poke_icon/narc_0000.NCLR \
files/poketool/icongra/poke_icon/narc_0002.NCER \
files/poketool/icongra/poke_icon/narc_0004.NCER \
+ files/poketool/icongra/poke_icon/narc_0006.NCER \
files/poketool/icongra/poke_icon/narc_0007.NCGR \
files/poketool/icongra/poke_icon/narc_0008.NCGR \
files/poketool/icongra/poke_icon/narc_0009.NCGR \
@@ -2599,6 +2614,26 @@ files/poketool/icongra/poke_icon.narc: \
files/poketool/icongra/poke_icon/narc_0014.NCGR \
files/poketool/icongra/poke_icon/narc_0015.NCGR \
files/poketool/icongra/poke_icon/narc_0016.NCGR \
+ files/poketool/icongra/poke_icon/narc_0017.NCGR \
+ files/poketool/icongra/poke_icon/narc_0018.NCGR \
+ files/poketool/icongra/poke_icon/narc_0019.NCGR \
+ files/poketool/icongra/poke_icon/narc_0020.NCGR \
+ files/poketool/icongra/poke_icon/narc_0021.NCGR \
+ files/poketool/icongra/poke_icon/narc_0022.NCGR \
+ files/poketool/icongra/poke_icon/narc_0023.NCGR \
+ files/poketool/icongra/poke_icon/narc_0024.NCGR \
+ files/poketool/icongra/poke_icon/narc_0025.NCGR \
+ files/poketool/icongra/poke_icon/narc_0026.NCGR \
+ files/poketool/icongra/poke_icon/narc_0027.NCGR \
+ files/poketool/icongra/poke_icon/narc_0028.NCGR \
+ files/poketool/icongra/poke_icon/narc_0029.NCGR \
+ files/poketool/icongra/poke_icon/narc_0030.NCGR \
+ files/poketool/icongra/poke_icon/narc_0031.NCGR \
+ files/poketool/icongra/poke_icon/narc_0032.NCGR \
+ files/poketool/icongra/poke_icon/narc_0033.NCGR \
+ files/poketool/icongra/poke_icon/narc_0034.NCGR \
+ files/poketool/icongra/poke_icon/narc_0035.NCGR \
+ files/poketool/icongra/poke_icon/narc_0036.NCGR \
files/poketool/icongra/poke_icon/narc_0402.NCGR
files/msgdata/msg.narc: \
diff --git a/graphics_rules.mk b/graphics_rules.mk
index 8abbbbaa..691a81f4 100644
--- a/graphics_rules.mk
+++ b/graphics_rules.mk
@@ -76,6 +76,11 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \
files/itemtool/itemdata/item_icon/narc_0160.NCGR \
files/itemtool/itemdata/item_icon/narc_0162.NCGR \
files/itemtool/itemdata/item_icon/narc_0164.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0166.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0168.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0170.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0172.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0174.NCGR \
files/poketool/icongra/poke_icon/narc_0007.NCGR \
files/poketool/icongra/poke_icon/narc_0008.NCGR \
files/poketool/icongra/poke_icon/narc_0009.NCGR \
@@ -86,6 +91,26 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \
files/poketool/icongra/poke_icon/narc_0014.NCGR \
files/poketool/icongra/poke_icon/narc_0015.NCGR \
files/poketool/icongra/poke_icon/narc_0016.NCGR \
+ files/poketool/icongra/poke_icon/narc_0017.NCGR \
+ files/poketool/icongra/poke_icon/narc_0018.NCGR \
+ files/poketool/icongra/poke_icon/narc_0019.NCGR \
+ files/poketool/icongra/poke_icon/narc_0020.NCGR \
+ files/poketool/icongra/poke_icon/narc_0021.NCGR \
+ files/poketool/icongra/poke_icon/narc_0022.NCGR \
+ files/poketool/icongra/poke_icon/narc_0023.NCGR \
+ files/poketool/icongra/poke_icon/narc_0024.NCGR \
+ files/poketool/icongra/poke_icon/narc_0025.NCGR \
+ files/poketool/icongra/poke_icon/narc_0026.NCGR \
+ files/poketool/icongra/poke_icon/narc_0027.NCGR \
+ files/poketool/icongra/poke_icon/narc_0028.NCGR \
+ files/poketool/icongra/poke_icon/narc_0029.NCGR \
+ files/poketool/icongra/poke_icon/narc_0030.NCGR \
+ files/poketool/icongra/poke_icon/narc_0031.NCGR \
+ files/poketool/icongra/poke_icon/narc_0032.NCGR \
+ files/poketool/icongra/poke_icon/narc_0033.NCGR \
+ files/poketool/icongra/poke_icon/narc_0034.NCGR \
+ files/poketool/icongra/poke_icon/narc_0035.NCGR \
+ files/poketool/icongra/poke_icon/narc_0036.NCGR \
files/poketool/icongra/poke_icon/narc_0402.NCGR
4BPP_NCLR_FILES := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
@@ -488,6 +513,11 @@ NCGR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \
files/itemtool/itemdata/item_icon/narc_0160.NCGR \
files/itemtool/itemdata/item_icon/narc_0162.NCGR \
files/itemtool/itemdata/item_icon/narc_0164.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0166.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0168.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0170.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0172.NCGR \
+ files/itemtool/itemdata/item_icon/narc_0174.NCGR \
files/poketool/icongra/poke_icon/narc_0007.NCGR \
files/poketool/icongra/poke_icon/narc_0008.NCGR \
files/poketool/icongra/poke_icon/narc_0009.NCGR \
@@ -498,6 +528,26 @@ NCGR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \
files/poketool/icongra/poke_icon/narc_0014.NCGR \
files/poketool/icongra/poke_icon/narc_0015.NCGR \
files/poketool/icongra/poke_icon/narc_0016.NCGR \
+ files/poketool/icongra/poke_icon/narc_0017.NCGR \
+ files/poketool/icongra/poke_icon/narc_0018.NCGR \
+ files/poketool/icongra/poke_icon/narc_0019.NCGR \
+ files/poketool/icongra/poke_icon/narc_0020.NCGR \
+ files/poketool/icongra/poke_icon/narc_0021.NCGR \
+ files/poketool/icongra/poke_icon/narc_0022.NCGR \
+ files/poketool/icongra/poke_icon/narc_0023.NCGR \
+ files/poketool/icongra/poke_icon/narc_0024.NCGR \
+ files/poketool/icongra/poke_icon/narc_0025.NCGR \
+ files/poketool/icongra/poke_icon/narc_0026.NCGR \
+ files/poketool/icongra/poke_icon/narc_0027.NCGR \
+ files/poketool/icongra/poke_icon/narc_0028.NCGR \
+ files/poketool/icongra/poke_icon/narc_0029.NCGR \
+ files/poketool/icongra/poke_icon/narc_0030.NCGR \
+ files/poketool/icongra/poke_icon/narc_0031.NCGR \
+ files/poketool/icongra/poke_icon/narc_0032.NCGR \
+ files/poketool/icongra/poke_icon/narc_0033.NCGR \
+ files/poketool/icongra/poke_icon/narc_0034.NCGR \
+ files/poketool/icongra/poke_icon/narc_0035.NCGR \
+ files/poketool/icongra/poke_icon/narc_0036.NCGR \
files/poketool/icongra/poke_icon/narc_0402.NCGR \
files/poketool/pokegra/pokegra/narc_0006.NCGR \
files/poketool/pokegra/pokegra/narc_0007.NCGR \
@@ -752,6 +802,11 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
files/itemtool/itemdata/item_icon/narc_0160.NCLR \
files/itemtool/itemdata/item_icon/narc_0162.NCLR \
files/itemtool/itemdata/item_icon/narc_0164.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0166.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0168.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0170.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0172.NCLR \
+ files/itemtool/itemdata/item_icon/narc_0174.NCLR \
files/poketool/icongra/poke_icon/narc_0000.NCLR \
files/poketool/pokegra/pokegra/narc_0010.NCLR \
files/poketool/pokegra/pokegra/narc_0011.NCLR \
@@ -881,7 +936,8 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
files/poketool/trgra/trfgra/narc_0194.NCLR \
NCER_CLEAN_LIST := files/poketool/icongra/poke_icon/narc_0002.NCER \
- files/poketool/icongra/poke_icon/narc_0004.NCER
+ files/poketool/icongra/poke_icon/narc_0004.NCER \
+ files/poketool/icongra/poke_icon/narc_0006.NCER
NSCR_CLEAN_LIST := files/demo/title/titledemo/narc_0000.NSCR \
files/demo/title/titledemo/narc_0008.NSCR \
diff --git a/include/GX_layers.h b/include/GX_layers.h
index e94fb4ec..3943d582 100644
--- a/include/GX_layers.h
+++ b/include/GX_layers.h
@@ -3,9 +3,6 @@
#include "global.h"
-#include "GX_vramcnt.h"
-#include "error_message_reset.h"
-#include "gx.h"
struct GX_LayerData
{
@@ -20,14 +17,38 @@ typedef enum {
} GX_LayerToggle;
-THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks);
-THUMB_FUNC void GX_DisableEngineALayers();
-THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle);
-THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask);
-THUMB_FUNC void GX_DisableEngineBLayers();
-THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle);
-THUMB_FUNC void GX_BothDispOn();
-THUMB_FUNC void GX_SwapDisplay();
-THUMB_FUNC u32 GX_GetEngineALayers();
+struct GraphicsBanks
+{
+ s32 bg;
+ s32 bgextpltt;
+ s32 subbg;
+ s32 subbgextpltt;
+ s32 obj;
+ s32 objextpltt;
+ s32 subobj;
+ s32 subobjextpltt;
+ s32 tex;
+ s32 texpltt;
+};
+
+
+struct GraphicsModes {
+ u32 mode1;
+ u32 mode2;
+ u32 mode3;
+ u32 mode4;
+};
+
+
+
+void GX_SetBanks(const struct GraphicsBanks *banks);
+void GX_DisableEngineALayers();
+void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle);
+void GX_SetEngineALayers(u32 layer_mask);
+void GX_DisableEngineBLayers();
+void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle);
+void GX_BothDispOn();
+void GX_SwapDisplay();
+u32 GX_GetEngineALayers();
#endif //POKEDIAMOND_GX_LAYERS_H
diff --git a/include/WIFI_stubsmd5_dummy.h b/include/WIFI_stubsmd5_dummy.h
new file mode 100644
index 00000000..d82b55c5
--- /dev/null
+++ b/include/WIFI_stubsmd5_dummy.h
@@ -0,0 +1,11 @@
+#ifndef POKEDIAMOND_WIFI_STUBSMD5_DUMMY_H
+#define POKEDIAMOND_WIFI_STUBSMD5_DUMMY_H
+
+#include "nitro/types.h"
+#include "dgt.h"
+
+void MD5Final(u8 *digest, struct DGTHash1Context *context);
+void MD5Update(struct DGTHash1Context *context, u8 *input, u32 length);
+void MD5Init(struct DGTHash1Context *context);
+
+#endif //POKEDIAMOND_WIFI_STUBSMD5_DUMMY_H
diff --git a/include/constants/decorations.h b/include/constants/decorations.h
new file mode 100644
index 00000000..e9b4e947
--- /dev/null
+++ b/include/constants/decorations.h
@@ -0,0 +1,144 @@
+#ifndef POKEDIAMOND_DECORATIONS_H
+#define POKEDIAMOND_DECORATIONS_H
+
+#define DECORATION_NONE 0
+#define DECORATION_DUMMY_1 1
+#define DECORATION_DUMMY_2 2
+#define DECORATION_DUMMY_3 3
+#define DECORATION_DUMMY_4 4
+#define DECORATION_DUMMY_5 5
+#define DECORATION_BIG_BOULDER 6
+#define DECORATION_YELLOW_CUSHION 7
+#define DECORATION_BLUE_CUSHION 8
+#define DECORATION_WOODEN_CHAIR 9
+#define DECORATION_BIG_TABLE 10
+#define DECORATION_PLAIN_TABLE 11
+#define DECORATION_SMALL_TABLE 12
+#define DECORATION_LONG_TABLE 13
+#define DECORATION_WIDE_TABLE 14
+#define DECORATION_POKE_TABLE 15
+#define DECORATION_BIG_BOOKSHELF 16
+#define DECORATION_SMALL_BOOKSHELF 17
+#define DECORATION_RESEARCH_SHELF 18
+#define DECORATION_BIKE_RACK 19
+#define DECORATION_SHOP_SHELF 20
+#define DECORATION_DISPLAY_SHELF 21
+#define DECORATION_CUPBOARD 22
+#define DECORATION_WOOD_DRESSER 23
+#define DECORATION_PINK_DRESSER 24
+#define DECORATION_TV 25
+#define DECORATION_REFRIGERATOR 26
+#define DECORATION_PRETTY_SINK 27
+#define DECORATION_FEATHERY_BED 28
+#define DECORATION_TRASH_CAN 29
+#define DECORATION_CARDBOARD_BOX 30
+#define DECORATION_CRATE 31
+#define DECORATION_CONTAINER 32
+#define DECORATION_OIL_DRUM 33
+#define DECORATION_BIG_OIL_DRUM 34
+#define DECORATION_IRON_BEAM 35
+#define DECORATION_POTTED_PLANT 36
+#define DECORATION_POKE_FLOWER 37
+#define DECORATION_HEALING_MACHINE 38
+#define DECORATION_LAB_MACHINE 39
+#define DECORATION_TEST_MACHINE 40
+#define DECORATION_GAME_SYSTEM 41
+#define DECORATION_VENDING_MACHINE 42
+#define DECORATION_RED_BIKE 43
+#define DECORATION_GREEN_BIKE 44
+#define DECORATION_BINOCULARS 45
+#define DECORATION_GLOBE 46
+#define DECORATION_GYM_STATUE 47
+#define DECORATION_RED_TENT 48
+#define DECORATION_BLUE_TENT 49
+#define DECORATION_CLEAR_TENT 50
+#define DECORATION_MAZE_BLOCK_1 51
+#define DECORATION_MAZE_BLOCK_2 52
+#define DECORATION_MAZE_BLOCK_3 53
+#define DECORATION_MAZE_BLOCK_4 54
+#define DECORATION_MAZE_BLOCK_5 55
+#define DECORATION_HOLE_TOOL 56
+#define DECORATION_PIT_TOOL 57
+#define DECORATION_SMOKE_TOOL 58
+#define DECORATION_BIG_SMOKE_TOOL 59
+#define DECORATION_ROCK_TOOL 60
+#define DECORATION_ROCKFALL_TOOL 61
+#define DECORATION_FOAM_TOOL 62
+#define DECORATION_BUBBLE_TOOL 63
+#define DECORATION_ALERT_TOOL_1 64
+#define DECORATION_ALERT_TOOL_2 65
+#define DECORATION_ALERT_TOOL_3 66
+#define DECORATION_ALERT_TOOL_4 67
+#define DECORATION_LEAF_TOOL 68
+#define DECORATION_FLOWER_TOOL 69
+#define DECORATION_EMBER_TOOL 70
+#define DECORATION_FIRE_TOOL 71
+#define DECORATION_CUTE_CUP 72
+#define DECORATION_COOL_CUP 73
+#define DECORATION_BEAUTY_CUP 74
+#define DECORATION_TOUGH_CUP 75
+#define DECORATION_CLEVER_CUP 76
+#define DECORATION_BLUE_CRYSTAL 77
+#define DECORATION_PINK_CRYSTAL 78
+#define DECORATION_RED_CRYSTAL 79
+#define DECORATION_YELLOW_CRYSTAL 80
+#define DECORATION_PRETTY_GEM 81
+#define DECORATION_SHINY_GEM 82
+#define DECORATION_MYSTIC_GEM 83
+#define DECORATION_GLITTER_GEM 84
+#define DECORATION_BRONZE_TROPHY 85
+#define DECORATION_SILVER_TROPHY 86
+#define DECORATION_GOLD_TROPHY 87
+#define DECORATION_GREAT_TROPHY 88
+#define DECORATION_BALL_ORNAMENT 89
+#define DECORATION_ROUND_ORNAMENT 90
+#define DECORATION_CLEAR_ORNAMENT 91
+#define DECORATION_CHARMANDER_DOLL 92
+#define DECORATION_BULBASAUR_DOLL 93
+#define DECORATION_SQUIRTLE_DOLL 94
+#define DECORATION_CYNDAQUIL_DOLL 95
+#define DECORATION_CHIKORITA_DOLL 96
+#define DECORATION_TOTODILE_DOLL 97
+#define DECORATION_TORCHIC_DOLL 98
+#define DECORATION_TREECKO_DOLL 99
+#define DECORATION_MUDKIP_DOLL 100
+#define DECORATION_CHIMCHAR_DOLL 101
+#define DECORATION_TURTWIG_DOLL 102
+#define DECORATION_PIPLUP_DOLL 103
+#define DECORATION_PIKACHU_DOLL 104
+#define DECORATION_PLUSLE_DOLL 105
+#define DECORATION_MINUN_DOLL 106
+#define DECORATION_CLEFAIRY_DOLL 107
+#define DECORATION_JIGGLYPUFF_DOLL 108
+#define DECORATION_WOBBUFFET_DOLL 109
+#define DECORATION_MEOWTH_DOLL 110
+#define DECORATION_SKITTY_DOLL 111
+#define DECORATION_GLAMEOW_DOLL 112
+#define DECORATION_BUNEARY_DOLL 113
+#define DECORATION_WEAVILE_DOLL 114
+#define DECORATION_MUNCHLAX_DOLL 115
+#define DECORATION_BONSLY_DOLL 116
+#define DECORATION_MIME_JR__DOLL 117
+#define DECORATION_LUCARIO_DOLL 118
+#define DECORATION_MANTYKE_DOLL 119
+#define DECORATION_BUIZEL_DOLL 120
+#define DECORATION_CHATOT_DOLL 121
+#define DECORATION_MANAPHY_DOLL 122
+#define DECORATION_SNORLAX_DOLL 123
+#define DECORATION_WAILORD_DOLL 124
+#define DECORATION_MAGNEZONE_DOLL 125
+#define DECORATION_DRIFLOON_DOLL 126
+#define DECORATION_HAPPINY_DOLL 127
+#define DECORATION_PACHIRISU_DOLL 128
+#define DECORATION_129 129
+#define DECORATION_130 130
+#define DECORATION_131 131
+#define DECORATION_132 132
+#define DECORATION_WIDE_SOFA 133
+#define DECORATION_BONSAI 134
+#define DECORATION_DAINTY_FLOWERS 135
+#define DECORATION_LOVELY_FLOWERS 136
+#define DECORATION_PRETTY_FLOWERS 137
+#define DECORATION_LAVISH_FLOWERS 138
+
+#endif //POKEDIAMOND_DECORATIONS_H
diff --git a/include/error_handling.h b/include/error_handling.h
index 1299fcba..c14c93fe 100644
--- a/include/error_handling.h
+++ b/include/error_handling.h
@@ -1,6 +1,6 @@
#ifndef POKEDIAMOND_ERROR_HANDLING_H
#define POKEDIAMOND_ERROR_HANDLING_H
-void ErrorHandling(void);
+void GF_AssertFail(void);
#endif //POKEDIAMOND_ERROR_HANDLING_H
diff --git a/include/error_message_reset.h b/include/error_message_reset.h
index d12cbf33..01286ca9 100644
--- a/include/error_message_reset.h
+++ b/include/error_message_reset.h
@@ -9,31 +9,7 @@
#include "text.h"
-
-struct GraphicsBanks
-{
- s32 bg;
- s32 bgextpltt;
- s32 subbg;
- s32 subbgextpltt;
- s32 obj;
- s32 objextpltt;
- s32 subobj;
- s32 subobjextpltt;
- s32 tex;
- s32 texpltt;
-};
-
-
-struct GraphicsModes {
- u32 mode1;
- u32 mode2;
- u32 mode3;
- u32 mode4;
-};
-
-
-THUMB_FUNC void VBlankHandler();
-THUMB_FUNC void PrintErrorMessageAndReset();
+void VBlankHandler();
+void PrintErrorMessageAndReset();
#endif //POKEDIAMOND_ERROR_MESSAGE_RESET_H
diff --git a/include/font.h b/include/font.h
new file mode 100644
index 00000000..e5e64e88
--- /dev/null
+++ b/include/font.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_FONT_H
+#define POKEDIAMOND_FONT_H
+
+extern s32 GetFontAttribute(u8 fontId, s32 attr);
+
+#endif // POKEDIAMOND_FONT_H
diff --git a/include/gf_gfx_loader.h b/include/gf_gfx_loader.h
new file mode 100644
index 00000000..b95075dc
--- /dev/null
+++ b/include/gf_gfx_loader.h
@@ -0,0 +1,23 @@
+#ifndef POKEDIAMOND_GF_GFX_LOADER_H
+#define POKEDIAMOND_GF_GFX_LOADER_H
+
+#include "unk_02016B94.h"
+
+u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 baseAddr, u32 szByte, u32 heap_id);
+void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id);
+u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whichRoutine, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_PartiallyLoadPalette(NarcId narcId, s32 memberId, NNS_G2D_VRAM_TYPE vramType, u32 baseAddr, u32 heap_id, NNSG2dImagePaletteProxy * pPltProxy);
+u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy);
+void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy);
+void * GfGfxLoader_GetCharData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCharacterData ** ppCharData, u32 heap_id);
+void * GfGfxLoader_GetScrnData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dScreenData ** ppScrData, u32 heap_id);
+void * GfGfxLoader_GetPlttData(NarcId narcId, s32 memberId, NNSG2dPaletteData ** ppPltData, u32 heap_id);
+void * GfGfxLoader_GetCellBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCellDataBank ** ppCellBank, u32 heap_id);
+void * GfGfxLoader_GetAnimBank(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dAnimBankData ** ppAnimBank, u32 heap_id);
+void * GfGfxLoader_UncompressFromNarc(NarcId narcId, s32 memberId, u32 heap_id);
+void * GfGfxLoader_LoadFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd);
+void * GfGfxLoader_LoadFromNarc_GetSizeOut(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd, u32 *size_p);
+
+#endif //POKEDIAMOND_GF_GFX_LOADER_H
diff --git a/include/gf_rtc.h b/include/gf_rtc.h
new file mode 100644
index 00000000..f7a4e2a7
--- /dev/null
+++ b/include/gf_rtc.h
@@ -0,0 +1,31 @@
+#ifndef POKEDIAMOND_GF_RTC_H
+#define POKEDIAMOND_GF_RTC_H
+
+#include "RTC_api.h"
+
+enum RTC_Month
+{
+ RTC_MONTH_JANUARY = 1,
+ RTC_MONTH_FEBRUARY,
+ RTC_MONTH_MARCH,
+ RTC_MONTH_APRIL,
+ RTC_MONTH_MAY,
+ RTC_MONTH_JUNE,
+ RTC_MONTH_JULY,
+ RTC_MONTH_AUGUST,
+ RTC_MONTH_SEPTEMBER,
+ RTC_MONTH_OCTOBER,
+ RTC_MONTH_NOVEMBER,
+ RTC_MONTH_DECEMBER,
+};
+
+enum RTC_TimeOfDay
+{
+ RTC_TIMEOFDAY_MORN = 0,
+ RTC_TIMEOFDAY_DAY,
+ RTC_TIMEOFDAY_EVE,
+ RTC_TIMEOFDAY_NITE,
+ RTC_TIMEOFDAY_LATE,
+};
+
+#endif //POKEDIAMOND_GF_RTC_H
diff --git a/include/global.h b/include/global.h
index 1c92a1ec..1853dbc3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -11,7 +11,7 @@
#define NELEMS(a) (sizeof(a) / sizeof(*(a)))
-#define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0)
+#define GF_ASSERT(expr) do {if (!(expr)) GF_AssertFail();} while (0)
#ifndef IN_MAIN_C
extern const u8 gGameLanguage;
diff --git a/include/heap.h b/include/heap.h
index 69aedd9e..de1f5f18 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -17,21 +17,21 @@ struct UnkStruct_020166C8
};
-THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size);
-THUMB_FUNC s32 FUN_020167F4();
-THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
-THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2);
-THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3);
-THUMB_FUNC void FUN_020168D0(u32 heap_id);
-THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3);
-THUMB_FUNC void FUN_02016988();
+void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size);
+s32 FUN_020167F4();
+u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
+u32 FUN_02016828(u32 param0, u32 param1, u32 param2);
+u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3);
+void FUN_020168D0(u32 heap_id);
+u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3);
+void FUN_02016988();
void *AllocFromHeap(u32 heap_id, u32 size);
void *AllocFromHeapAtEnd(u32 heap_id, u32 size);
void FreeToHeap(void *ptr);
-void FUN_02016A8C(u32 heap_id, void * ptr);
-THUMB_FUNC u32 FUN_02016AF8(u32 param0);
-THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2);
-THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1);
-THUMB_FUNC u32 FUN_02016B90(u32 param0);
+void FreeToHeapExplicit(u32 heap_id, void * ptr);
+u32 FUN_02016AF8(u32 param0);
+void FUN_02016B20(u32 param0, u32 param1, u32 param2);
+void FUN_02016B44(void *ptr, u32 param1);
+u32 FUN_02016B90(u32 param0);
#endif //POKEDIAMOND_HEAP_H
diff --git a/include/list_menu.h b/include/list_menu.h
new file mode 100644
index 00000000..a02e1273
--- /dev/null
+++ b/include/list_menu.h
@@ -0,0 +1,88 @@
+#ifndef POKEDIAMOND_LIST_MENU_H
+#define POKEDIAMOND_LIST_MENU_H
+
+#include "list_menu_cursor.h"
+#include "list_menu_items.h"
+
+#define LIST_HEADER -3
+#define LIST_CANCEL -2
+#define LIST_NOTHING_CHOSEN -1
+
+#define LIST_NO_MULTIPLE_SCROLL 0
+#define LIST_MULTIPLE_SCROLL_DPAD 1
+#define LIST_MULTIPLE_SCROLL_L_R 2
+
+struct ListMenu;
+
+// TODO: Document remaining fields.
+// A lot of these are named based on similar fields in gen 3.
+
+typedef void (*LM_MoveCursorFunc_t)(struct ListMenu *list, s32 index, u8 onInit);
+typedef void (*LM_ItemPrintFunc_t)(struct ListMenu *list, s32 index, u8 y);
+
+struct ListMenuTemplate
+{
+ /*0x00*/ struct ListMenuItem * items;
+ /*0x04*/ LM_MoveCursorFunc_t moveCursorFunc;
+ /*0x08*/ LM_ItemPrintFunc_t itemPrintFunc;
+ /*0x0C*/ struct Window * window;
+ /*0x10*/ u16 totalItems;
+ /*0x12*/ u16 maxShowed;
+ /*0x14*/ u8 header_X;
+ /*0x15*/ u8 item_X;
+ /*0x16*/ u8 cursor_X;
+ /*0x17*/ u8 upText_Y:4;
+ u8 cursorPal:4;
+ /*0x18*/ u8 fillValue:4;
+ u8 cursorShadowPal:4;
+ /*0x1A*/ u16 lettersSpacing:3;
+ u16 itemVerticalPadding:4;
+ u16 scrollMultiple:2;
+ u16 fontId:6;
+ u16 cursorKind:1;
+ /*0x1C*/ u32 unk_1C;
+};
+
+struct ListMenu
+{
+ /*0x00*/ struct ListMenuTemplate template;
+ // ListMenuOverride from gen 3
+ /*0x20*/ u8 cursorPal:4;
+ u8 fillValue:4;
+ /*0x21*/ u8 cursorShadowPal:4;
+ u8 unk_21_4:4;
+ /*0x22*/ u8 lettersSpacing:6;
+ /*0x23*/ u8 unk_23;
+ /*0x24*/ u8 fontId:7;
+ u8 overrideEnabled:1;
+ /*0x28*/ struct ListMenuCursor *cursor;
+ /*0x2c*/ u16 cursorPos;
+ /*0x2e*/ u16 itemsAbove;
+ /*0x30*/ u8 unk_30;
+ /*0x31*/ u8 unk_31;
+ /*0x32*/ u8 taskId;
+ /*0x33*/ u8 unk_33;
+ /*0x34*/ u8 heap_id;
+};
+
+struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id);
+s32 ListMenu_ProcessInput(struct ListMenu * list);
+void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove);
+void RedrawListMenu(struct ListMenu * list);
+s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove);
+s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove);
+void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
+void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p);
+void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p);
+u8 ListMenuGetUnk33(struct ListMenu * list);
+s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index);
+s32 ListMenuGetTemplateField(struct ListMenu * list, u32 attr);
+void ListMenuSetTemplateField(struct ListMenu * list, u32 attr, s32 value);
+void ListMenuGetItemStr(struct ListMenu * list, struct ListMenuItem * items);
+void ListMenuPrint(struct ListMenu * list, struct String * str, u8 x, u8 y);
+void ListMenuErasePrintedCursor(struct ListMenu * list, u16 itemsAbove);
+u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, u8 movingDown);
+void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown);
+void ListMenuCopyToVram(struct ListMenu * list);
+
+#endif // POKEDIAMOND_LIST_MENU_H
diff --git a/include/list_menu_cursor.h b/include/list_menu_cursor.h
new file mode 100644
index 00000000..e4a4b6b9
--- /dev/null
+++ b/include/list_menu_cursor.h
@@ -0,0 +1,17 @@
+#ifndef POKEDIAMOND_LIST_MENU_CURSOR_H
+#define POKEDIAMOND_LIST_MENU_CURSOR_H
+
+#include "unk_02016B94.h"
+
+// TODO: Move to its own header, and fill it out
+struct ListMenuCursor
+{
+ // ???
+};
+
+extern struct ListMenuCursor * ListMenuCursorNew(u32 heap_id);
+extern void ListMenuUpdateCursorObj(struct ListMenuCursor *, struct Window *, u8 x, u8 y);
+extern void ListMenuCursorSetColor(struct ListMenuCursor *, u32);
+extern void DestroyListMenuCursorObj(struct ListMenuCursor *);
+
+#endif // POKEDIAMOND_LIST_MENU_CURSOR_H
diff --git a/include/list_menu_items.h b/include/list_menu_items.h
new file mode 100644
index 00000000..ec96d480
--- /dev/null
+++ b/include/list_menu_items.h
@@ -0,0 +1,21 @@
+#ifndef POKEDIAMOND_LIST_MENU_ITEMS_H
+#define POKEDIAMOND_LIST_MENU_ITEMS_H
+
+#include "string16.h"
+#include "msgdata.h"
+
+struct ListMenuItem
+{
+ struct String * text;
+ s32 value;
+};
+
+struct ListMenuItem * ListMenuItems_ctor(u32 count, u32 heap_id);
+void ListMenuItems_dtor(struct ListMenuItem * items);
+void ListMenuItems_AppendFromMsgData(struct ListMenuItem * items, struct MsgData * msgData, u32 msgNo, s32 value);
+void ListMenuItems_AddItem(struct ListMenuItem * items, struct String * str, s32 value);
+void ListMenuItems_CopyItem(struct ListMenuItem * items, struct ListMenuItem * src);
+struct ListMenuItem * ListMenuItems_SeekEnd(struct ListMenuItem * items, u32 * heap_id_p);
+void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items);
+
+#endif // POKEDIAMOND_LIST_MENU_ITEMS_H
diff --git a/include/main.h b/include/main.h
index d40e22f9..9227d9a8 100644
--- a/include/main.h
+++ b/include/main.h
@@ -20,7 +20,7 @@ struct UnkStruct_02006234
struct Unk21DBE18 ovly_mgr;
u32 unk10;
u32 unk14;
- int * unk18;
+ s32 * unk18;
void * unk1C;
struct SaveBlock2 * unk20;
u32 unk24;
@@ -31,9 +31,9 @@ struct Unk2106FA0
PMBackLightSwitch unk0;
s32 unk4;
FSOverlayID unk8;
- s32 unkC;
+ struct UnkStruct_02006234 *unkC;
FSOverlayID unk10;
- struct Unk21DBE18 * unk14;
+ const struct Unk21DBE18 * unk14;
s32 unk18;
s32 unk1C;
struct SaveBlock2 * unk20;
@@ -84,8 +84,8 @@ struct Main
u32 unk3C;
u32 unk40;
u32 unk44;
- u32 unk48;
- u32 unk4C;
+ u32 newKeys;
+ u32 newAndRepeatedKeys;
s32 unk50;
s32 unk54;
s32 unk58;
@@ -104,8 +104,22 @@ struct Main
//extern struct UnkStruct_021C4918 gMain + 0x60;
-extern struct Unk2106FA0 gBacklightTop;
-extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
+extern PMBackLightSwitch gBacklightTop;
+extern s32 UNK_02016FA4;
+
+struct UnkStruct_02016FA8
+{
+ FSOverlayID unk0;
+ struct UnkStruct_02006234 *unk4;
+ FSOverlayID unk8;
+ const struct Unk21DBE18 * unkC;
+ s32 unk10;
+ s32 unk14;
+ struct SaveBlock2 * unk18;
+
+};
+
+extern struct UnkStruct_02016FA8 UNK_02016FA8;
void NitroMain(void);
@@ -113,7 +127,7 @@ extern struct Main gMain;
void FUN_02000DF4(void);
void Main_RunOverlayManager(void);
-void RegisterMainOverlay(FSOverlayID id, struct Unk21DBE18 * arg1);
+void RegisterMainOverlay(FSOverlayID id, const struct Unk21DBE18 * arg1);
void FUN_02000E9C(void);
void FUN_02000EC8(u32 parameter);
void FUN_02000EE8(void);
diff --git a/include/overlay_manager.h b/include/overlay_manager.h
index 193bc7e8..8d9bd6e3 100644
--- a/include/overlay_manager.h
+++ b/include/overlay_manager.h
@@ -5,12 +5,12 @@
struct Unk21DBE18;
-struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id);
+struct UnkStruct_02006234 * OverlayManager_new(const struct Unk21DBE18 * ovly_mgr, s32 * a1, u32 heap_id);
void OverlayManager_delete(struct UnkStruct_02006234 * a0);
void * OverlayManager_CreateAndGetData(struct UnkStruct_02006234 * a0, u32 size, u32 heap_id);
void * OverlayManager_GetData(struct UnkStruct_02006234 * a0);
void OverlayManager_FreeData(struct UnkStruct_02006234 * a0);
-int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0);
+s32 * OverlayManager_GetField18(struct UnkStruct_02006234 * a0);
BOOL OverlayManager_Run(struct UnkStruct_02006234 * a0);
#endif //POKEDIAMOND_OVERLAY_MANAGER_H
diff --git a/include/sav_chatot.h b/include/sav_chatot.h
new file mode 100644
index 00000000..858423c5
--- /dev/null
+++ b/include/sav_chatot.h
@@ -0,0 +1,24 @@
+#ifndef POKEDIAMOND_SAV_CHATOT_H
+#define POKEDIAMOND_SAV_CHATOT_H
+
+#include "save_block_2.h"
+
+struct SaveChatotSoundClip
+{
+ // TODO: Fill this in
+ BOOL exists;
+ s8 data[1000];
+};
+
+u32 Sav2_Chatot_sizeof(void);
+void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot);
+struct SaveChatotSoundClip * Chatot_new(u32 heap_id);
+struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2);
+BOOL Chatot_exists(struct SaveChatotSoundClip * chatot);
+void Chatot_invalidate(struct SaveChatotSoundClip * chatot);
+s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot);
+void Chatot_Decode(s8 * dest, const s8 * data);
+void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data);
+void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src);
+
+#endif //POKEDIAMOND_SAV_CHATOT_H
diff --git a/include/sav_system_info.h b/include/sav_system_info.h
index 696cfe07..bded91f7 100644
--- a/include/sav_system_info.h
+++ b/include/sav_system_info.h
@@ -3,6 +3,8 @@
#include "RTC_api.h"
+struct SaveBlock2;
+
struct UnkSaveStruct_0202376C_sub
{
/* 0x00 */ u32 field_00;
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 120a0c96..91cb306c 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -67,7 +67,7 @@ BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk026D(struct ScriptContext* ctx);
+BOOL ScrCmd_MessageUnown(struct ScriptContext* ctx);
BOOL ScrCmd_Unk002C(struct ScriptContext* ctx);
BOOL ScrCmd_Unk002D(struct ScriptContext* ctx);
BOOL ScrCmd_Unk02C0(struct ScriptContext* ctx);
@@ -77,9 +77,9 @@ BOOL ScrCmd_Unk002F(struct ScriptContext* ctx);
BOOL ScrCmd_WaitButtonAB(struct ScriptContext* ctx);
BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx);
BOOL ScrCmd_WaitButton(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0032(struct ScriptContext *ctx);
+BOOL ScrCmd_WaitButtonABPad(struct ScriptContext *ctx);
BOOL ScrCmd_Unk0033(struct ScriptContext *ctx);
-BOOL ScrCmd_Unk0034(struct ScriptContext* ctx);
+BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0035(struct ScriptContext* ctx);
BOOL ScrCmd_ScrollBg(struct ScriptContext* ctx);
BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx);
@@ -105,38 +105,46 @@ BOOL ScrCmd_Unk0047(struct ScriptContext *ctx);
BOOL ScrCmd_Unk0048(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk005E(struct ScriptContext *ctx);
+
+// scrcmd_mart.c
+BOOL ScrCmd_NormalMart(struct ScriptContext * ctx);
+BOOL ScrCmd_SpecialMart(struct ScriptContext * ctx);
+BOOL ScrCmd_GoodsMart(struct ScriptContext * ctx);
+BOOL ScrCmd_SealsMart(struct ScriptContext * ctx);
+BOOL ScrCmd_AccessoriesShop(struct ScriptContext * ctx);
//scrcmd_4.c
BOOL ScrCmd_GetPlayerName(struct ScriptContext* ctx);
BOOL ScrCmd_GetRivalName(struct ScriptContext* ctx);
BOOL ScrCmd_GetFriendName(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk00D0(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPokemonName(struct ScriptContext* ctx);
BOOL ScrCmd_GetItemName(struct ScriptContext* ctx);
BOOL ScrCmd_GetPocketName(struct ScriptContext* ctx);
BOOL ScrCmd_GetTMHMMoveName(struct ScriptContext* ctx);
BOOL ScrCmd_GetMoveName(struct ScriptContext* ctx);
BOOL ScrCmd_Unk00D5(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0280(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk00D6(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPokemonNickname(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0251(struct ScriptContext* ctx);
BOOL ScrCmd_GetPoketchAppName(struct ScriptContext* ctx);
BOOL ScrCmd_GetTrainerClassName(struct ScriptContext* ctx);
BOOL ScrCmd_Unk00D9(struct ScriptContext* ctx);
BOOL ScrCmd_Unk00DA(struct ScriptContext* ctx);
struct String* FUN_02040AE4(u32 msg_no, u32 heap_id);
-BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk00DD(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPlayerStarterName(struct ScriptContext* ctx);
+BOOL ScrCmd_GetRivalStarterName(struct ScriptContext* ctx);
+BOOL ScrCmd_GetCounterpartStarterName(struct ScriptContext* ctx);
BOOL ScrCmd_GetDecorationName(struct ScriptContext* ctx);
BOOL ScrCmd_GetUndergroundTrapName(struct ScriptContext* ctx);
BOOL ScrCmd_GetUndergroundItemName(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk017B(struct ScriptContext* ctx);
+BOOL ScrCmd_GetMapName(struct ScriptContext* ctx);
+BOOL ScrCmd_GetBerryName(struct ScriptContext* ctx);
BOOL ScrCmd_GetNatureName(struct ScriptContext* ctx);
BOOL ScrCmd_GetFashionName(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0272(struct ScriptContext* ctx);
+BOOL ScrCmd_GetWhiteRockInscription(struct ScriptContext* ctx);
BOOL ScrCmd_GetPokemonMoveName(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0232(struct ScriptContext* ctx);
+BOOL ScrCmd_GetRibbonName(struct ScriptContext* ctx);
BOOL ScrCmd_GetSealName(struct ScriptContext* ctx);
BOOL ScrCmd_GetItemNameWithIndefArticle(struct ScriptContext* ctx);
BOOL ScrCmd_GetItemNamePlural(struct ScriptContext* ctx);
@@ -150,16 +158,48 @@ BOOL ScrCmd_Unk02CC(struct ScriptContext* ctx);
BOOL ScrCmd_GetSealNamePlural(struct ScriptContext* ctx);
BOOL ScrCmd_CapitalizeFirstChar(struct ScriptContext* ctx);
-//scrcmd_11.c
-BOOL ScrCmd_Unk017D(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk017E(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk017F(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0180(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0181(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0182(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0183(struct ScriptContext* ctx);
+//scrcmd_sound.c
+BOOL ScrCmd_Unk02AE(struct ScriptContext *ctx);
+BOOL ScrCmd_PlayBgm(struct ScriptContext *ctx);
+BOOL ScrCmd_StopBgm(struct ScriptContext *ctx);
+BOOL ScrCmd_PlayDefaultBgm(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk0053(struct ScriptContext *ctx);
+BOOL ScrCmd_FadeOutBgm(struct ScriptContext *ctx);
+BOOL FUN_02041464(struct ScriptContext *ctx);
+BOOL ScrCmd_FadeInBgm(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0056(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0057(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0058(struct ScriptContext* ctx);
+BOOL ScrCmd_PlayFanfare(struct ScriptContext* ctx);
+BOOL ScrCmd_StopFanfare(struct ScriptContext* ctx);
+BOOL ScrCmd_PlayFanfareWait(struct ScriptContext* ctx);
+BOOL FUN_02041540(struct ScriptContext* ctx);
+BOOL ScrCmd_PlayCry(struct ScriptContext* ctx);
+BOOL ScrCmd_PlayCryWait(struct ScriptContext* ctx);
+BOOL FUN_02041598(struct ScriptContext* ctx);
+BOOL ScrCmd_PlaySoundWait(struct ScriptContext* ctx);
+BOOL FUN_020415CC(struct ScriptContext* ctx);
+BOOL ScrCmd_PlaySound(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckChatotCry(struct ScriptContext* ctx);
+BOOL ScrCmd_StartChatotRecord(struct ScriptContext* ctx);
+BOOL ScrCmd_StopChatotRecord(struct ScriptContext* ctx);
+BOOL ScrCmd_SaveChatotCry(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk005D(struct ScriptContext* ctx);
+BOOL ScrCmd_SetVolume(struct ScriptContext *ctx);
+
+//scrcmd_8.c
+BOOL ScrCmd_Unk021D(struct ScriptContext* ctx);
+
+//scrcmd_berry_trees.c
+BOOL ScrCmd_GetBerryTreeGrowth(struct ScriptContext* ctx);
+BOOL ScrCmd_GetBerryTreeType(struct ScriptContext* ctx);
+BOOL ScrCmd_GetBerryTreeMulch(struct ScriptContext* ctx);
+BOOL ScrCmd_GetBerryTreeWater(struct ScriptContext* ctx);
+BOOL ScrCmd_GetBerryTreeAmount(struct ScriptContext* ctx);
+BOOL ScrCmd_SetBerryTreeMulch(struct ScriptContext* ctx);
+BOOL ScrCmd_SetBerryTreeType(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0184(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0185(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeBerryTreeBerries(struct ScriptContext* ctx);
//scrcmd_13.c
BOOL ScrCmd_Unk0253(struct ScriptContext* ctx);
@@ -168,9 +208,9 @@ BOOL ScrCmd_Unk0255(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0256(struct ScriptContext* ctx);
//scrcmd_coins.c
-BOOL ScrCmd_Unk0075(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0076(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0077(struct ScriptContext* ctx);
+BOOL ScrCmd_ShowCoinBox(struct ScriptContext* ctx);
+BOOL ScrCmd_HideCoinBox(struct ScriptContext* ctx);
+BOOL ScrCmd_UpdateCoinBox(struct ScriptContext* ctx);
BOOL ScrCmd_GetCoins(struct ScriptContext* ctx);
BOOL ScrCmd_GiveCoins(struct ScriptContext* ctx);
BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext* ctx);
@@ -185,18 +225,18 @@ BOOL ScrCmd_TakeMoneyImmediate(struct ScriptContext* ctx);
BOOL ScrCmd_TakeMoneyAddress(struct ScriptContext* ctx);
BOOL ScrCmd_HasEnoughMoneyImmediate(struct ScriptContext* ctx);
BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0072(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0073(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0074(struct ScriptContext* ctx);
+BOOL ScrCmd_ShowMoneyBox(struct ScriptContext* ctx);
+BOOL ScrCmd_HideMoneyBox(struct ScriptContext* ctx);
+BOOL ScrCmd_UpdateMoneyBox(struct ScriptContext* ctx);
//scrcmd_daycare.c
-BOOL ScrCmd_Unk016D(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk016E(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk01A9(struct ScriptContext* ctx);
+BOOL ScrCmd_GetDaycarePokemonNames(struct ScriptContext* ctx);
+BOOL ScrCmd_GetDaycareStatus(struct ScriptContext* ctx);
+BOOL ScrCmd_DeleteDaycareEgg(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveDaycareEgg(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01A4(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01AA(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk01AE(struct ScriptContext* ctx);
+BOOL ScrCmd_GetDaycareLevel(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01AF(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01B0(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01BC(struct ScriptContext* ctx);
@@ -210,15 +250,37 @@ BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx);
//scrcmd_18.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
-//scrcmd_19.c
-BOOL ScrCmd_Unk01F1(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk01F4(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk01F5(struct ScriptContext* ctx);
+//scrcmd_fossils.c
+BOOL ScrCmd_CountFossils(struct ScriptContext* ctx);
+BOOL ScrCmd_GetFossilPokemon(struct ScriptContext* ctx);
+BOOL ScrCmd_GetFossilMinimumAmount(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01F2(struct ScriptContext* ctx);
BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx);
-//scrcmd_20.c
-BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx);
+//scrcmd_prizes.c
+BOOL ScrCmd_GetPrizeItemIdAndCost(struct ScriptContext* ctx);
+
+//scrcmd_flags.c
+BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx);
+BOOL ScrCmd_HasRunningShoes(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveRunningShoes(struct ScriptContext* ctx);
+BOOL ScrCmd_HasBadge(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveBag(struct ScriptContext* ctx);
+BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx);
+BOOL ScrCmd_HasBag(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0160(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0161(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0162(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0163(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0164(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0165(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckGameCompleted(struct ScriptContext* ctx);
+BOOL ScrCmd_SetGameCompleted(struct ScriptContext* ctx);
+BOOL ScrCmd_GetSetStrength(struct ScriptContext* ctx);
+BOOL ScrCmd_GetSetFlash(struct ScriptContext* ctx);
+BOOL ScrCmd_GetSetDefog(struct ScriptContext* ctx);
//scrcmd_items.c
BOOL ScrCmd_GiveItem(struct ScriptContext* ctx);
@@ -230,23 +292,36 @@ BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0081(struct ScriptContext* ctx);
BOOL ScrCmd_Unk0082(struct ScriptContext* ctx);
-//scrcmd_23.c
-BOOL ScrCmd_Unk0083(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0084(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0085(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0086(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0087(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0088(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0089(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk008A(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk008B(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk008C(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk008D(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk008E(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk008F(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0090(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0091(struct ScriptContext* ctx);
-BOOL ScrCmd_Unk0092(struct ScriptContext* ctx);
+//scrcmd_underground.c
+BOOL ScrCmd_GiveSecretBaseDecoration(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeSecretBaseDecoration(struct ScriptContext* ctx);
+BOOL ScrCmd_HasSpaceForDecoration(struct ScriptContext* ctx);
+BOOL ScrCmd_GetDecorationCount(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveUndergroundTrap(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeUndergroundTrap(struct ScriptContext* ctx);
+BOOL ScrCmd_HasSpaceForTrap(struct ScriptContext* ctx);
+BOOL ScrCmd_GetTrapCount(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveTreasure(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeTreasure(struct ScriptContext* ctx);
+BOOL ScrCmd_HasSpaceForTreasure(struct ScriptContext* ctx);
+BOOL ScrCmd_GetTreasureCount(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveUndergroundSphere(struct ScriptContext* ctx);
+BOOL ScrCmd_TakeUndergroundSphere(struct ScriptContext* ctx);
+BOOL ScrCmd_HasSpaceForSphere(struct ScriptContext* ctx);
+BOOL ScrCmd_GetSphereCount(struct ScriptContext* ctx);
+
+//scrcmd_24.c
+BOOL ScrCmd_Unk01C6(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk021E(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk021F(struct ScriptContext* ctx);
+void FUN_02045E74(struct ScriptContext* ctx, u8 a1, struct Pokemon* pokemon, void* a3);
+BOOL ScrCmd_Unk0220(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0221(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0224(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0222(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0223(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk0225(struct ScriptContext* ctx);
//scrcmd_25.c
BOOL ScrCmd_Unk023F(struct ScriptContext* ctx);
diff --git a/include/script.h b/include/script.h
index 9a7270c2..01bba305 100644
--- a/include/script.h
+++ b/include/script.h
@@ -4,6 +4,8 @@
#include "global.h"
#include "msgdata.h"
#include "save_block_2.h"
+#include "unk_02016B94.h"
+
struct ScriptContext;
@@ -26,9 +28,10 @@ struct UnkStruct_02046444
struct UnkSavStruct80
{
u8 padding[0x8];
- u32 unk08;
+ struct UnkStruct_02016B94_2 *unk08;
struct SaveBlock2 *saveBlock2; //0xC
- u8 padding2[0xC];
+ struct UnkStruct_0204639C *unk10;
+ u8 padding2[0x8];
u32 *mapId; //0x1C
u8 padding3[0x18];
u32 unk38;
@@ -36,7 +39,9 @@ struct UnkSavStruct80
u32 unk60;
u8 padding5[0x14];
u32 unk78;
- u8 padding6[0x2C];
+ u8 padding6[0x1C];
+ void *unk98;
+ u8 padding7[0xC];
struct UnkStruct_02046444 * unkA8;
};
diff --git a/include/script_buffers.h b/include/script_buffers.h
index d0fff528..9a742545 100644
--- a/include/script_buffers.h
+++ b/include/script_buffers.h
@@ -4,6 +4,7 @@
#include "pokemon.h"
#include "pokemon_storage_system.h"
#include "trainer_data.h"
+#include "unk_02016B94.h"
struct UnkStruct_0200AA80_sub_sub
{
@@ -105,7 +106,7 @@ void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, str
void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr);
struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4);
void MessagePrinter_delete(struct UnkStruct_0200B870 * a0);
-void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, int a2, int a3, int a4);
-void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, int sp30, int r5, int r7);
+void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window * a2, int a3, int a4);
+void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y);
#endif //POKEDIAMOND_SCRIPT_BUFFERS_H
diff --git a/include/sdat.h b/include/sdat.h
deleted file mode 100644
index 3ba8583c..00000000
--- a/include/sdat.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef GUARD_LIBSDAT_H
-#define GUARD_LIBSDAT_H
-
-struct SDATHeader
-{
- // Generic header
- char magic[4];
- u16 bom;
- u16 version;
- u32 filesize;
- u16 header_size;
- u16 section_count;
- // SDAT chunks
- u32 symb_offset, symb_size;
- u32 info_offset, info_size;
- u32 fat_offset, fat_size;
- u32 file_offset, file_size;
-};
-
-struct SDATFileMgr
-{
- struct SDATHeader header;
- BOOL is_init;
- FSFile file; // 00034
- FSFileID fileID; // 7C
- void * fat_p;
- void * symb_p;
- void * info_p;
-};
-
-void SDAT_Init(void);
-void * FUN_020C2A94(void *, u32);
-void SDAT_Open(struct SDATFileMgr *, char *, void *, u32);
-void FUN_020C39CC(void *);
-void FUN_020C01A0(void);
-int FUN_020C290C(void *);
-void FUN_020C2828(void *, int);
-BOOL FUN_020C36A8(u32 *, void *);
-BOOL FUN_020C3674(u32 *, void *);
-BOOL FUN_020C35E0(u32 *, u32 *, void *);
-BOOL FUN_020C360C(u32 *, void *);
-BOOL FUN_020C3640(u32 *, void *);
-void FUN_020C0F80(u32 *);
-void FUN_020C1040(int, int);
-void FUN_020C0F68(void);
-
-#endif //GUARD_LIBSDAT_H
diff --git a/include/sound.h b/include/sound.h
index 9b50542f..781c6b5b 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -2,15 +2,18 @@
#define POKEDIAMOND_SOUND_H
#include "FS_file.h"
-#include "sdat.h"
+#include "NNS_SND_arc.h"
+#include "NNS_SND_heap.h"
+#include "NNS_SND_arc_loader.h"
#include "player_data.h"
+#include "sav_chatot.h"
struct SoundData
{
- struct SDATFileMgr header;
- void * unk_00090;
- u8 unk_00094[0xBBC00];
- u32 unk_BBC94[9];
+ NNSSndArc header;
+ NNSSndHeapHandle * heap; // 0x00090
+ u8 heapBuffer[0xBBC00];
+ u32 players[9];
u32 unk_BBCB8;
u32 unk_BBCBC;
u8 unk_BBCC0[0x20];
@@ -42,7 +45,7 @@ struct SoundData
u32 unk_BCD3C;
u64 unk_BCD40;
u32 unk_BCD48;
- void * unk_BCD4C;
+ struct SaveChatotSoundClip * chatot;
u32 unk_BCD50;
u32 unk_BCD54;
u32 unk_BCD58;
@@ -50,16 +53,16 @@ struct SoundData
};
struct SoundData * GetSoundDataPointer(void);
-void InitSoundData(void * a0, struct Options * a1);
+void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options);
void * FUN_02003D38(u32 a0);
-int FUN_02003F3C(int * a0);
-void FUN_02003F64(int a0);
-BOOL FUN_02003F78(u32 * a0);
-BOOL FUN_02003F90(u32 * a0);
-BOOL FUN_02003FA8(u32 * a0, u32 * a1);
-BOOL FUN_02003FC4(u32 * a0);
-BOOL FUN_02003FDC(u32 * a0);
-u32 * FUN_02003FF4(int a0);
+int GF_Snd_SaveState(int * level_p);
+void GF_Snd_RestoreState(int level);
+BOOL GF_Snd_LoadGroup(int groupNo);
+BOOL GF_Snd_LoadSeq(int seqNo);
+BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag);
+BOOL GF_Snd_LoadWaveArc(int waveArcNo);
+BOOL GF_Snd_LoadBank(int bankNo);
+u32 * FUN_02003FF4(int playerNo);
u32 FUN_02004018(u32 a0);
void DoSoundUpdateFrame(void);
diff --git a/include/text.h b/include/text.h
index 40f4d03a..c9984d75 100644
--- a/include/text.h
+++ b/include/text.h
@@ -2,52 +2,66 @@
#define POKEDIAMOND_TEXT_H
#include "global.h"
+#include "font.h"
+#include "unk_02016B94.h"
+
+
+#define CHAR_0 0x00A2
+#define CHAR_1 0x00A3
+#define CHAR_2 0x00A4
+#define CHAR_3 0x00A5
+#define CHAR_4 0x00A6
+#define CHAR_5 0x00A7
+#define CHAR_6 0x00A8
+#define CHAR_7 0x00A9
+#define CHAR_8 0x00AA
+#define CHAR_9 0x00AB
+
+union StrbufForPrint
+{
+ struct String * wrapped;
+ const u16 * raw;
+};
struct TextPrinterTemplate
{
- const u16* currentChar;
- u32 windowId;
- u8 padding[1];
- u8 fontId;
- u8 x;
- u8 y;
- u8 currentX;
- u8 currentY;
- u8 letterSpacing;
- u8 lineSpacing;
- u8 unk;
- u8 fgColor;
- u8 bgColor;
- u8 shadowColor;
- union
- {
- struct
- {
- u16 unk2;
- u8 unk3;
- u8 unk4;
- };
- u32 Unk20; //todo this can't be right
- };
+ union StrbufForPrint currentChar; // 0
+ struct Window * window; // 4
+ u8 padding[1]; // 8
+ u8 fontId; // 9
+ u8 x; // a
+ u8 y; // b
+ u8 currentX; // c
+ u8 currentY; // d
+ u8 letterSpacing; // e
+ u8 lineSpacing; // f
+ u8 unk; // 10
+ u8 fgColor; // 11
+ u8 bgColor; // 12
+ u8 shadowColor; // 13
+ u16 unk2; // 14
+ u8 unk3; // 16
+ u8 unk4; // 17
};
struct TextPrinter
{
struct TextPrinterTemplate printerTemplate;
- u8 (*callback)(struct TextPrinterTemplate *, u16); // 0x10
+ u8 (*callback)(struct TextPrinterTemplate *, u16); // 0x18
u8 subStructFields[7]; // always cast to struct TextPrinterSubStruct... so why bother
- u8 active;
- u8 state; // 0x1C
- u8 textSpeedBottom:7;
+ // 1c
+ u8 active; // 23
+ u8 state; // 0x24
+ u8 textSpeedBottom:7; // 25
u8 textSpeedTop:1;
- u8 delayCounter;
- u8 scrollDistance;
- u8 minLetterSpacing; // 0x20
+ u8 delayCounter; // 26
+ u8 scrollDistance; // 27
+ u8 minLetterSpacing; // 0x28
u8 Unk29; // used to be japanese, not sure about that anymore
u16 Unk2A;
- void *Unk2C;
+ u16 *Unk2C;
};
struct FontInfo
@@ -69,16 +83,16 @@ BOOL FUN_0201BD44(u32 param0);
void FUN_0201BD5C(void);
u8 FUN_0201BD70(u32 param0);
void FUN_0201BD7C(u32 param0);
-u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16));
-u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16));
-u16 AddTextPrinterParameterized3(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16));
+u16 AddTextPrinterParameterized(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16));
+u16 AddTextPrinterParameterized2(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16));
+u16 AddTextPrinterParameterized3(struct Window * window, u32 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16));
u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16));
void RunTextPrinter(u32 param0, struct TextPrinter *printer);
u32 RenderFont(struct TextPrinter *printer);
void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor);
void DecompressGlyphTile(const u16 *src, u16 *dst);
void FUN_0201C1A8(struct TextPrinter *printer);
-void *FUN_0201C1B0(void);
+u16 *FUN_0201C1B0(void);
void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3);
void FUN_0201C238(struct TextPrinter *printer);
diff --git a/include/text_02054590.h b/include/text_02054590.h
index 725bd9b4..77170e70 100644
--- a/include/text_02054590.h
+++ b/include/text_02054590.h
@@ -3,15 +3,18 @@
#include "global.h"
#include "options.h"
+#include "unk_02016B94.h"
+#include "string16.h"
+
void FUN_02054590(u32 param0, u32 param1);
-void FUN_020545B8(u32 param0, u32 param1, u32 param2);
-void FUN_02054608(u32 *param0, struct Options *options);
-void FUN_0205464C(u32 *param0);
-u16 FUN_02054658(u8 windowId, const u16 *str, struct Options *options, u8 param3);
-u16 DrawFieldMessage(u8 windowId, const u16 *str, u8 fontId, u32 speed, u8 a4, u32 a5);
+void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2);
+void FUN_02054608(struct Window *param0, struct Options *options);
+void FUN_0205464C(struct Window *param0);
+u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3);
+u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, u32 a5);
u8 FUN_020546C8(u32 param0);
-void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3);
-void FUN_02054744(u32 *param0, u32 param1, u32 param2);
+void FUN_020546E0(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3);
+void FUN_02054744(struct Window *param0, u32 param1, u32 param2);
-#endif //POKEDIAMOND_UNK_02054590_H
+#endif // POKEDIAMOND_UNK_02054590_H
diff --git a/include/timer3.h b/include/timer3.h
index be6e1da8..3220c7a3 100644
--- a/include/timer3.h
+++ b/include/timer3.h
@@ -10,12 +10,12 @@ struct Timer3Data
vu64 Timer3Counter;
};
-THUMB_FUNC void Init_Timer3();
-THUMB_FUNC void CountUpTimer3();
-THUMB_FUNC u64 internal_GetTimer3Count();
-THUMB_FUNC u64 GetTimer3Count();
-THUMB_FUNC u64 Timer3CountToMilliSeconds(u64 count);
-THUMB_FUNC u64 Timer3CountToSeconds(u64 count);
+void Init_Timer3();
+void CountUpTimer3();
+u64 internal_GetTimer3Count();
+u64 GetTimer3Count();
+u64 Timer3CountToMilliSeconds(u64 count);
+u64 Timer3CountToSeconds(u64 count);
#endif //POKEDIAMOND_TIMER3_H
diff --git a/include/unk_0200BA78.h b/include/unk_0200BA78.h
new file mode 100644
index 00000000..2efe233e
--- /dev/null
+++ b/include/unk_0200BA78.h
@@ -0,0 +1,19 @@
+#ifndef POKEDIAMOND_UNK_0200BA78_H
+#define POKEDIAMOND_UNK_0200BA78_H
+
+#include "global.h"
+#include "script_buffers.h"
+
+void FUN_0200BA78(struct UnkStruct_0200B870 *param0,
+ int param1,
+ u32 value,
+ u32 n,
+ enum PrintingMode mode,
+ struct Window *window,
+ int x,
+ int y);
+
+void FUN_0200BAAC(
+ struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest);
+
+#endif // POKEDIAMOND_UNK_0200BA78_H
diff --git a/include/unk_0200BB14.h b/include/unk_0200BB14.h
new file mode 100644
index 00000000..a252fd93
--- /dev/null
+++ b/include/unk_0200BB14.h
@@ -0,0 +1,243 @@
+#ifndef POKEDIAMOND_UNK_0200BB14_H
+#define POKEDIAMOND_UNK_0200BB14_H
+
+#include "global.h"
+
+struct UnkStruct_0200BB14_1
+{
+ u32 unk000;
+ u32 unk004;
+ u32 unk008;
+ u32 unk00c;
+ u8 unk010[0x128];
+};
+
+struct UnkStruct_0200BB14_2
+{
+ u32 unk00;
+ u32 unk04;
+ u32 *unk08;
+ u32 unk0c[6];
+ u32 *unk24[6];
+ u32 unk3c[6];
+ s32 unk54;
+};
+
+struct UnkStruct_0200BB14_3
+{
+ u32 unk00;
+ s16 unk04;
+ s16 unk06;
+ u16 unk08;
+ u16 unk0a;
+ u32 unk0c;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1c;
+ u32 unk20;
+ u32 unk24;
+};
+
+struct UnkStruct_0200BB14_sub
+{
+ u8 unk00[0x24];
+};
+
+struct UnkStruct_0200BB14_4
+{
+ u32 unk00;
+ struct UnkStruct_0200BB14_sub *unk04;
+ s32 unk08;
+ s32 unk0c;
+ s32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1c;
+ u16 unk20;
+ u32 unk24;
+ u32 unk28;
+ u32 unk2c;
+};
+
+struct UnkStruct_0200BB14_6
+{
+ struct UnkStruct_0200BB14_sub *unk0;
+ u32 unk4;
+};
+struct UnkStruct_0200BB14_5
+{
+ u32 unk00;
+ struct UnkStruct_0200BB14_sub *unk04;
+ struct UnkStruct_0200BB14_6 *unk08;
+ u32 unk0c;
+};
+
+struct UnkStruct_0200BB14_1 *FUN_0200BB14(u32 heap_id);
+struct UnkStruct_0200BB14_2 *FUN_0200BB34(struct UnkStruct_0200BB14_1 *param0);
+u32 FUN_0200BB68(u32 param0);
+BOOL FUN_0200BB6C(struct UnkStruct_0200BB14_1 *param0, u32 *param1, u32 *param2, u32 param3);
+BOOL FUN_0200BBF0(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 param2);
+void FUN_0200BC14(u32 param0);
+void FUN_0200BC1C(u32 *param0);
+void FUN_0200BC30();
+void FUN_0200BC38();
+void FUN_0200BC40(struct UnkStruct_0200BB14_2 *param0);
+void FUN_0200BC4C(struct UnkStruct_0200BB14_2 *param0);
+void FUN_0200BC5C(struct UnkStruct_0200BB14_2 *param0);
+void FUN_0200BCB0(u32 *param0);
+void FUN_0200BCD0(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
+void FUN_0200BCE0(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
+void FUN_0200BD04(u32 *param0);
+BOOL FUN_0200BD20(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, const char **param2);
+u32 FUN_0200BE38(u32 *param0, u32 *param1, struct UnkStruct_0200BB14_3 *param2);
+u32 FUN_0200BE74(u32 *param0,
+ u32 *param1,
+ u32 param2,
+ s16 param3,
+ s16 param4,
+ s16 param5,
+ u16 param6,
+ u32 param7,
+ u32 param8,
+ u32 param9,
+ u32 param10,
+ u32 param11,
+ u32 param12,
+ u32 param13);
+BOOL FUN_0200BF60(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2);
+BOOL FUN_0200C00C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+s32 FUN_0200C06C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ s32 param7);
+u8 FUN_0200C0DC(u32 param0,
+ u32 param1,
+ u32 *param2,
+ struct UnkStruct_0200BB14_2 *param3,
+ u32 param4,
+ u32 param5,
+ u32 param6,
+ u32 param7,
+ u32 param8,
+ s32 param9);
+u32 FUN_0200C124(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5);
+u32 FUN_0200C13C(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ s32 param5);
+struct UnkStruct_0200BB14_5 *FUN_0200C154(
+ struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1, u32 *param2);
+u32 FUN_0200C334(u32 *param0, u32 param1);
+u32 FUN_0200C344(u32 *param0, u32 param1, u32 param2);
+u32 FUN_0200C358(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C368(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C378(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+u32 FUN_0200C388(struct UnkStruct_0200BB14_2 *param0, u32 param1);
+void FUN_0200C398(struct UnkStruct_0200BB14_1 *param0, struct UnkStruct_0200BB14_2 *param1);
+void FUN_0200C3DC(u32 *param0);
+BOOL FUN_0200C404(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+BOOL FUN_0200C474(u32 *param0, u32 param1);
+BOOL FUN_0200C4A8(u32 param0, u32 *param1, u32 param2);
+BOOL FUN_0200C4F4(u32 param0, u32 *param1, u32 param2);
+BOOL FUN_0200C548(u32 param0, u32 *param1, u32 param2);
+void FUN_0200C59C(u32 param0);
+void FUN_0200C5A8(u32 *param0);
+void FUN_0200C5B4(u32 *param0, u32 param1);
+void FUN_0200C5C0(u32 *param0, u32 param1);
+u32 FUN_0200C5CC(u32 *param0);
+void FUN_0200C5D8(u32 param0, u32 param1);
+void FUN_0200C5E0(u32 *param0, u32 param1);
+void FUN_0200C5EC(u32 param0, u32 param1);
+void FUN_0200C5F4(u32 *param0, u32 param1);
+u32 FUN_0200C600(u32 param0);
+u32 FUN_0200C608(u32 *param0);
+void FUN_0200C614(u32 param0);
+void FUN_0200C61C(u32 *param0);
+void FUN_0200C628(u32 param0);
+void FUN_0200C630(u32 *param0);
+void FUN_0200C63C(u32 param0, u32 param1);
+void FUN_0200C644(u32 *param0, u32 param1);
+u8 FUN_0200C650(u32 param0);
+u8 FUN_0200C658(u32 *param0);
+void FUN_0200C664(u32 param0, u32 param1);
+void FUN_0200C66C(u32 *param0, u32 param1);
+void FUN_0200C678(u32 param0, u32 param1);
+void FUN_0200C680(u32 *param0, u32 param1);
+u8 FUN_0200C68C(u32 *param0);
+void FUN_0200C698(u32 param0, u32 param1);
+u8 FUN_0200C6A4(u32 *param0);
+void FUN_0200C6B0(u32 *param0, u32 param1);
+void FUN_0200C6BC(u32 param0, u32 param1);
+void FUN_0200C6C4(u32 *param0, u32 param1);
+u16 FUN_0200C6D0(u32 param0);
+u16 FUN_0200C6D8(u32 *param0);
+void FUN_0200C6E4(u32 param0, u32 param1, u32 param2);
+void FUN_0200C714(u32 *param0, u32 param1, u32 param2);
+void FUN_0200C720(u32 param0, u32 param1, u32 param2, u32 param3);
+void FUN_0200C750(u32 *param0, u32 param1, u32 param2, u32 param3);
+void FUN_0200C75C(u32 param0, u16 *param1, u16 *param2);
+void FUN_0200C7A0(u32 *param0, u16 *param1, u16 *param2);
+void FUN_0200C7AC(u32 param0, u16 *param1, u16 *param2, u32 param3);
+void FUN_0200C7F0(u32 *param0, u16 *param1, u16 *param2, u32 param3);
+void FUN_0200C7FC(u32 param0, u16 *param1, u16 *param2);
+void FUN_0200C82C(u32 *param0, u16 *param1, u16 *param2);
+void FUN_0200C838(u32 param0, u32 param1);
+void FUN_0200C840(u32 *param0, u32 param1);
+void FUN_0200C84C(u32 param0, f32 param1, f32 param2);
+void FUN_0200C884(u32 *param0, f32 param1, f32 param2);
+void FUN_0200C890(u32 param0, u16 param1);
+void FUN_0200C898(u32 *param0, u16 param1);
+void FUN_0200C8A4(u32 param0, u32 param1);
+void FUN_0200C8BC(u32 *param0, u32 param1);
+void FUN_0200C8C8(u32 param0, u32 param1);
+void FUN_0200C8D0(u32 *param0, u32 param1);
+void FUN_0200C8DC(u32 *param0, u32 param1, u32 param2);
+void FUN_0200C8F8(u32 *param0, u32 param1);
+void FUN_0200C904(u32 param0, u32 param1);
+void FUN_0200C90C(u32 *param0, u32 param1);
+BOOL FUN_0200C918(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+BOOL FUN_0200C978(u32 *param0,
+ struct UnkStruct_0200BB14_2 *param1,
+ u32 param2,
+ u32 param3,
+ u32 param4,
+ u32 param5,
+ s32 param6);
+void FUN_0200C9D8(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5);
+void FUN_0200CA0C(u32 *param0, u32 *param1, u32 param2, u32 param3, u32 param4, u32 param5);
+u32 FUN_0200CA40(u32 *param0);
+
+#endif // POKEDIAMOND_UNK_0200BB14_H
diff --git a/include/unk_0200CA44.h b/include/unk_0200CA44.h
index 2e479ab8..6dd208c3 100644
--- a/include/unk_0200CA44.h
+++ b/include/unk_0200CA44.h
@@ -1,10 +1,12 @@
#ifndef POKEDIAMOND_UNK_0200CA44_H
#define POKEDIAMOND_UNK_0200CA44_H
-BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2);
-BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2);
-BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2);
-BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2);
+#include "text.h"
+
+BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
+BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
+BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
+BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
void FUN_0200CAB4(s32 unk1);
#endif //POKEDIAMOND_UNK_0200CA44_H
diff --git a/include/unk_02015E30.h b/include/unk_02015E30.h
index 6a4d6c15..67a7aaaf 100644
--- a/include/unk_02015E30.h
+++ b/include/unk_02015E30.h
@@ -15,8 +15,8 @@ struct UnkStruct_02015E30
u64 unk18;
};
-THUMB_FUNC void FUN_02015E30();
-THUMB_FUNC void FUN_02015E3C(struct IGT *igt);
-THUMB_FUNC void FUN_02015E60();
+void FUN_02015E30();
+void FUN_02015E3C(struct IGT *igt);
+void FUN_02015E60();
#endif //POKEDIAMOND_UNK_02015E30_H
diff --git a/include/unk_02016B94.h b/include/unk_02016B94.h
new file mode 100644
index 00000000..fec45cd8
--- /dev/null
+++ b/include/unk_02016B94.h
@@ -0,0 +1,340 @@
+#ifndef POKEDIAMOND_UNK_02016B94_H
+#define POKEDIAMOND_UNK_02016B94_H
+
+#include "global.h"
+#include "GX_layers.h"
+#include "MI_uncompress.h"
+#include "OS_cache.h"
+#include "gx.h"
+#include "heap.h"
+#include "math_util.h"
+
+#define reg_G2_BG2P (u32 *)0x4000020
+#define reg_G2_BG3P (u32 *)0x4000030
+#define reg_G2S_DB_BG2P (u32 *)0x4001020
+#define reg_G2S_DB_BG3P (u32 *)0x4001030
+struct UnkStruct_02016B94_1
+{
+ u32 unk00;
+ u32 unk04;
+ u32 unk08;
+ u32 unk0c;
+
+ u8 unk10;
+ u8 unk11;
+ u8 unk12;
+ u8 unk13;
+ u8 unk14;
+ u8 unk15;
+ u8 unk16;
+ u8 unk17; // probably paddding
+ u32 unk18;
+};
+
+struct UnkStruct_02016B94_2
+{
+ u32 unk00;
+ u16 unk04;
+ u16 unk06;
+
+ struct UnkStruct_02016B94_2_sub
+ {
+ void *unk08;
+ u32 unk0c;
+ u32 unk10;
+
+ fx32 unk14;
+ fx32 unk18;
+
+ u8 unk1c;
+ u8 unk1d;
+ u8 unk1e;
+ u8 unk1f;
+ u16 unk20;
+ u16 unk22; // probably padding
+ fx32 unk24;
+ fx32 unk28;
+ fx32 unk2c;
+ fx32 unk30;
+ } unk08[8];
+};
+
+struct UnkStruct_02016B94_3
+{
+ void *unk00;
+ u16 unk04;
+ u16 unk06;
+};
+
+struct UnkStruct_02016B94_4
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u16 unk6;
+};
+
+struct Window
+{
+ struct UnkStruct_02016B94_2 *unk00;
+ u8 unk04;
+ u8 unk05;
+ u8 unk06;
+ u8 width;
+ u8 height;
+ u8 unk09;
+ u16 unk0a_0 : 15;
+ u16 unk0b_15 : 1;
+ void *unk0c;
+};
+
+struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id);
+u32 FUN_02016BB8(u32 *param0);
+void FUN_02016BBC(const struct GraphicsModes *modes);
+void FUN_02016BF4(u32 *param0, u32 param1);
+void FUN_02016C18(
+ struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3);
+void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3);
+u8 FUN_020177DC(u8 param0, u32 param1);
+void FUN_02017850(u32 param0, u8 *param1, u8 *param2);
+void FUN_020178A0(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void FUN_020178BC(u32 param0, u16 param1);
+void FUN_0201797C(u32 param0, GX_LayerToggle toggle);
+void FUN_020179E0(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 val);
+fx32 FUN_02017B48(struct UnkStruct_02016B94_2 *param0, u32 param1);
+fx32 FUN_02017B54(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void FUN_02017B60(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u32 param2,
+ fx32 param3,
+ struct Mtx22 *param4,
+ fx32 param5,
+ fx32 param6);
+void FUN_02017B8C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val);
+void FUN_02017BD0(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ struct Mtx22 *param2,
+ fx32 param3,
+ fx32 param4);
+void FUN_02017C6C(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void FUN_02017C98(const void *param0, void *param1, u32 param2);
+void FUN_02017CD0(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void FUN_02017CE8(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4);
+void FUN_02017D68(u32 param0, void *param1, u32 offset, u32 size);
+void FUN_02017DFC(struct UnkStruct_02016B94_2 *param0, u32 param1, void *param2, u32 param3);
+void FUN_02017E14(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4);
+void FUN_02017E40(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4);
+void FUN_02017E84(u32 param0, void *param1, u32 offset, u32 size);
+void FUN_02017F18(u32 param0, u32 size, u32 offset, u32 heap_id);
+void FUN_02017F48(
+ struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4);
+void FUN_02017FB4(u32 param0, void *param1, u32 offset, u32 size);
+void FUN_02017FE4(u32 param0, u32 param1);
+u16 FUN_02017FFC(u8 param0, u8 param1, u8 param2);
+u16 FUN_02018068(u8 param0, u8 param1, u8 param2, u8 param3);
+void FUN_02018148(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ void *param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6);
+void FUN_02018170(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ void *param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10);
+void FUN_020181EC(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ void *param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10);
+void FUN_02018268(struct UnkStruct_02016B94_2_sub *param0,
+ u8 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u16 *param5,
+ u8 param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10);
+void FUN_020183DC(struct UnkStruct_02016B94_2_sub *param0,
+ u8 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 *param5,
+ u8 param6,
+ u8 param7,
+ u8 param8,
+ u8 param9,
+ u8 param10);
+void FUN_02018540(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u16 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u8 param7);
+void FUN_02018590(struct UnkStruct_02016B94_2_sub *param0,
+ u16 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6);
+void FUN_02018640(
+ struct UnkStruct_02016B94_2_sub *param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5);
+void FUN_020186B4(struct UnkStruct_02016B94_2 *param0,
+ u32 param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6);
+void FUN_02018744(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void FUN_02018768(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2);
+void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2);
+void *FUN_020187B0(u32 param0);
+void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3);
+u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2];
+void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u8 param1);
+u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1);
+u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0,
+ struct UnkStruct_02016B94_3 *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8);
+void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0,
+ struct UnkStruct_02016B94_3 *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8);
+void FUN_02018E88(
+ struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5);
+void FUN_02018F4C(
+ struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5);
+void *AllocWindows(u32 heap_id, s32 size);
+void InitWindow(struct Window *param0);
+BOOL FUN_02019048(struct Window *param0);
+void FUN_02019064(struct UnkStruct_02016B94_2 *param0,
+ struct Window *param1,
+ u8 param2,
+ u8 param3,
+ u8 param4,
+ u8 param5,
+ u8 param6,
+ u8 param7,
+ u16 param8);
+void FUN_020190EC(struct UnkStruct_02016B94_2 *param0,
+ struct Window *param1,
+ u8 param2,
+ u8 param3,
+ u16 param4,
+ u8 param5);
+void FUN_02019150(struct UnkStruct_02016B94_2 *param0,
+ struct Window *param1,
+ struct UnkStruct_02016B94_4 *param2);
+void FUN_02019178(struct Window *param0);
+void FUN_020191A4(struct Window *param0, int param1);
+void CopyWindowToVram(struct Window *param0);
+void FUN_02019220(struct Window *param0);
+void FUN_02019270(struct Window *param0);
+void FUN_0201928C(struct Window *param0, u8 param1, u8 param2);
+void FUN_020192B8(struct Window *param0);
+void FUN_020192D4(struct Window *param0);
+void FUN_02019358(struct Window *param0);
+void FUN_020193B4(struct Window *param0);
+void FUN_02019444(struct Window *param0);
+void FUN_0201949C(struct Window *window);
+void FUN_020194C8(struct Window *window);
+void FUN_020194E0(struct Window *window);
+void FUN_0201951C(struct Window *window);
+void FUN_02019548(struct Window *window);
+void FUN_02019570(struct Window *window);
+void FUN_0201958C(struct Window *window);
+void FUN_020195A8(struct Window *window);
+void FUN_020195D0(struct Window *window);
+void FUN_020195E4(struct Window *window);
+void FUN_0201960C(struct Window *window);
+void FillWindowPixelBuffer(struct Window *window, u8 param1);
+void BlitBitmapRectToWindow(struct Window *window,
+ const void *src,
+ u16 srcX,
+ u16 srcY,
+ u16 srcWidth,
+ u16 srcHeight,
+ u16 dstX,
+ u16 dstY,
+ u16 dstWidth,
+ u16 dstHeight);
+void BlitBitmapRect(struct Window *window,
+ void *param1,
+ u16 param2,
+ u16 param3,
+ u16 param4,
+ u16 param5,
+ u16 param6,
+ u16 param7,
+ u16 param8,
+ u16 param9,
+ u16 param10);
+void FillWindowPixelRect(struct Window *window, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
+void FUN_0201974C(
+ struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6);
+void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3);
+void FUN_0201A8E8(struct Window *window, u32 param1, u8 param2, u8 param3);
+void FUN_0201A9D4(struct Window *window, u32 param1, u8 param2, u8 param3);
+u8 FUN_0201AB08(struct Window *window);
+u8 GetWindowWidth(struct Window *window);
+u8 GetWindowHeight(struct Window *window);
+u8 FUN_0201AB14(struct Window *window);
+u8 FUN_0201AB18(struct Window *window);
+void FUN_0201AB1C(struct Window *window, u8 param1);
+void FUN_0201AB20(struct Window *window, u8 param1);
+void FUN_0201AB24(struct Window *window, u8 param1);
+u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path);
+u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path);
+void FUN_0201AB60(struct UnkStruct_02016B94_2 *param0);
+void FUN_0201AB78(struct UnkStruct_02016B94_2 *param0);
+void FUN_0201AC68(struct UnkStruct_02016B94_2 *param0, u32 param1);
+void FUN_0201AC78(struct UnkStruct_02016B94_2 *param0);
+void FUN_0201AEE4(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3);
+void FUN_0201AF08(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u16 param3);
+void FUN_0201AF2C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, u16 val);
+void FUN_0201AF50(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3);
+void FUN_0201AF74(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val);
+u32 FUN_0201AFBC(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 param2, u8 param3, u16 *param4);
+void FUN_0201B118(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 *param2);
+
+#endif // POKEDIAMOND_UNK_02016B94_H
diff --git a/include/unk_02022504.h b/include/unk_02022504.h
new file mode 100644
index 00000000..62e4def1
--- /dev/null
+++ b/include/unk_02022504.h
@@ -0,0 +1,14 @@
+#ifndef POKEDIAMOND_UNK_02022504_H
+#define POKEDIAMOND_UNK_02022504_H
+
+#include "save_block_2.h"
+#include "pokemon_storage_system.h"
+
+void *FUN_02022504(struct SaveBlock2 *sav2);
+struct PCStorage *GetStoragePCPointer(struct SaveBlock2 *sav2);
+void *FUN_0202251C(struct SaveBlock2 *sav2);
+void *FUN_02022528(struct SaveBlock2 *sav2);
+u8 *LoadHallOfFame(struct SaveBlock2 *sav2, u32 heap_id, int *ret_p);
+s32 SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data);
+
+#endif //POKEDIAMOND_UNK_02022504_H
diff --git a/include/unk_02024E64.h b/include/unk_02024E64.h
index ed1bd447..68e7103c 100644
--- a/include/unk_02024E64.h
+++ b/include/unk_02024E64.h
@@ -14,15 +14,15 @@ struct UnkStruct_02024E64 {
u8 unk74A[2]; // might be padding
};
-THUMB_FUNC u32 FUN_02024E64();
-THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0);
-THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2);
-THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2);
-THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2);
-THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2);
-THUMB_FUNC u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk);
-THUMB_FUNC void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str);
-THUMB_FUNC u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk);
-THUMB_FUNC void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str);
+u32 FUN_02024E64();
+void FUN_02024E6C(struct UnkStruct_02024E64 *param0);
+struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2);
+void *FUN_02024EC0(struct SaveBlock2 *sav2);
+struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2);
+void *FUN_02024ED8(struct SaveBlock2 *sav2);
+u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk);
+void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str);
+u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk);
+void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str);
#endif
diff --git a/include/unk_02025484.h b/include/unk_02025484.h
index 0412dda1..d2feccb3 100644
--- a/include/unk_02025484.h
+++ b/include/unk_02025484.h
@@ -9,7 +9,7 @@ struct unk_2025484
u8 padding[0x1C];
};
-void FUN_02025484(struct unk_2025484 *r0, u32 r1);
+void FUN_02025484(struct unk_2025484 *r0);
u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1);
u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1);
u32 FUN_020254B4(struct unk_2025484 *r0);
diff --git a/include/unk_020286F8.h b/include/unk_020286F8.h
index 3d81753a..99ecd982 100644
--- a/include/unk_020286F8.h
+++ b/include/unk_020286F8.h
@@ -21,10 +21,10 @@ void FUN_02028788(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
u32 FUN_020287A4(struct UnkSaveStruct_020286F8 * ptr);
u16 * FUN_020287A8(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct String * k);
-void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j);
+void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i);
u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i);
-void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j);
+void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j);
struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2);
BOOL FUN_02028828(struct UnkSaveStruct_020286F8 * ptr, u32 i);
BOOL FUN_02028840(struct UnkSaveStruct_020286F8 * ptr, int i);
diff --git a/include/unk_0202D858.h b/include/unk_0202D858.h
new file mode 100644
index 00000000..b5845998
--- /dev/null
+++ b/include/unk_0202D858.h
@@ -0,0 +1,10 @@
+#ifndef POKEDIAMOND_UNK_0202D858_H
+#define POKEDIAMOND_UNK_0202D858_H
+
+#include "global.h"
+
+u8 FUN_0202D858(u16 param0);
+u8 FUN_0202D884(u16 param0);
+u32 FUN_0202D8B0(int param0);
+
+#endif // POKEDIAMOND_UNK_0202D858_H
diff --git a/include/unk_0202E29C.h b/include/unk_0202E29C.h
new file mode 100644
index 00000000..92998f7c
--- /dev/null
+++ b/include/unk_0202E29C.h
@@ -0,0 +1,142 @@
+#ifndef POKEDIAMOND_UNK_0202E29C_H
+#define POKEDIAMOND_UNK_0202E29C_H
+
+#include "global.h"
+#include "mail_message.h"
+#include "player_data.h"
+
+struct UnkStruct_0202E29C_sub4
+{
+ u32 unk00;
+ u8 unk04;
+ u8 unk05;
+ u8 unk06;
+ u8 unk07;
+ u8 unk08[8];
+ struct PlayerData unk10;
+ u8 unk30[0x40];
+};
+
+struct UnkStruct_0202E29C_sub
+{
+ u32 unk00;
+ u8 unk04[6];
+ u8 unk0A[0x2C];
+ u16 unk36;
+ u8 unk38[0x18];
+ struct UnkStruct_0202E29C_sub4 unk50;
+};
+
+struct UnkStruct_0202E29C_sub3
+{
+ struct MailMessage unk00;
+ struct PlayerData unk08;
+ u8 unk28[0x20];
+ u8 unk48[0x4];
+ u8 unk4C;
+ u8 unk4D[7];
+};
+
+struct UnkStruct_0202E29C_sub2
+{
+ u32 unk00;
+ u8 unk04;
+ u8 unk05;
+ u8 unk06;
+ struct UnkStruct_0202E29C_sub3 unk08;
+};
+
+struct UnkStruct_0202E29C
+{
+ struct UnkStruct_0202E29C_sub3 unk000;
+ struct UnkStruct_0202E29C_sub unk054[16];
+ u8 unkC54[8][6];
+ u16 unkC84[16];
+ void *unkCA4;
+ struct MailMessage unkCA8;
+ u32 unkCB0;
+ u8 unkCB4;
+ struct PlayerData *unkCB8;
+ void *unkCBC;
+ u32 unkCC0;
+ struct UnkStruct_0202E29C_sub2 unkCC4;
+ u8 unkD20[0x84];
+ u16 unkDA4;
+ u16 unkDA6;
+ u8 unkDA8;
+ u8 unkDA9;
+ u8 unkDAA;
+ u8 unkDAB;
+ u8 unkDAC;
+ u8 unkDAD_0:1;
+ u8 unkDAD_1:1;
+ u8 unkDAD_2:1;
+ u8 unkDAD_3:1;
+ u8 unkDAD_4:1;
+ u8 unkDAD_5:1;
+ u8 unkDAE[0x2];
+};
+
+void FUN_0202E29C(struct PlayerData *player_data);
+BOOL FUN_0202E344();
+BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2);
+void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1);
+void FUN_0202E470(u32 param0, u32 param1);
+void FUN_0202E488();
+void FUN_0202E49C();
+BOOL FUN_0202E4C8();
+BOOL FUN_0202E4DC();
+void FUN_0202E4F0();
+void FUN_0202E500();
+void FUN_0202E538();
+void FUN_0202E56C(u32 param0);
+void FUN_0202E594();
+BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2);
+u32 FUN_0202E66C(u32 param0, u32 param1);
+u32 FUN_0202E6F0();
+BOOL FUN_0202E784();
+void FUN_0202E7B0(u32 param0);
+void FUN_0202E7D8();
+u32 FUN_0202E810();
+s32 FUN_0202E844(u32 param0);
+u8 FUN_0202E878();
+void FUN_0202E88C();
+s32 FUN_0202E8A0(s32 param0);
+s32 FUN_0202E8D0(s32 param0);
+s32 FUN_0202E8F4();
+s32 FUN_0202E950();
+void FUN_0202E9AC(u32 param0, struct PlayerData *player_data);
+u32 FUN_0202E9E8(u32 param0);
+void FUN_0202EA54();
+void FUN_0202EA9C();
+void FUN_0202EB7C();
+void FUN_0202EBD0(u16 param0);
+void FUN_0202ED70(u16 param0);
+u32 FUN_0202ED84(u16 param0);
+u32 FUN_0202EDB8();
+BOOL FUN_0202EDD8();
+BOOL FUN_0202EDF8();
+u32 FUN_0202EE0C();
+u32 FUN_0202EE24();
+BOOL FUN_0202EE44();
+BOOL FUN_0202EE60();
+void FUN_0202EE84(u32 param0);
+void FUN_0202EEB0(u32 param0);
+u32 FUN_0202EEE8(u16 param0);
+struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0);
+struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0);
+struct PlayerData *FUN_0202EF70();
+struct PlayerData *FUN_0202EF84(int param0);
+void FUN_0202EFAC(u8 *param0, s32 param1);
+BOOL FUN_0202EFE4(u8 *param0);
+u32 FUN_0202F03C();
+void FUN_0202F05C();
+void FUN_0202F078(struct MailMessage *mail_message);
+void FUN_0202F094(void *param0);
+void FUN_0202F0B8();
+u32 FUN_0202F0DC(u8 param0);
+BOOL FUN_0202F104();
+void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0);
+u8 *FUN_0202F124(u32 param0);
+
+#endif // POKEDIAMOND_UNK_0202E29C_H
diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h
index 3996c1c8..b87bbf0c 100644
--- a/include/unk_0202F150.h
+++ b/include/unk_0202F150.h
@@ -6,6 +6,8 @@
#include "RTC_api.h"
#include "heap.h"
#include "main.h"
+#include "unk_0202D858.h"
+#include "unk_02031480.h"
struct UnkStruct0202F150_sub1
{
@@ -85,100 +87,100 @@ struct UnkStruct0202F150
u8 unk68B;
};
-THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1);
-THUMB_FUNC void FUN_0202F2F0();
-THUMB_FUNC void FUN_0202F5A4();
-THUMB_FUNC void FUN_0202F820(int param0);
-THUMB_FUNC void FUN_0202F8D4();
-THUMB_FUNC void FUN_0202F910(int param0);
-THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3);
-THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2);
-THUMB_FUNC void FUN_0202F984();
-THUMB_FUNC void FUN_0202F9E0(u32 param0);
-THUMB_FUNC void FUN_0202FA10();
-THUMB_FUNC void FUN_0202FA1C();
-THUMB_FUNC u8 FUN_0202FA28();
-THUMB_FUNC u32 FUN_0202FA48();
-THUMB_FUNC void FUN_0202FA5C();
-THUMB_FUNC u32 FUN_0202FB18(u32 param0);
-THUMB_FUNC void FUN_0202FB20();
-THUMB_FUNC void FUN_0202FB58();
-THUMB_FUNC u32 FUN_0202FB80();
-THUMB_FUNC void FUN_0202FC60();
-THUMB_FUNC void FUN_0202FC80();
-THUMB_FUNC void FUN_0202FCA8();
-THUMB_FUNC void FUN_0202FCCC();
-THUMB_FUNC u32 FUN_0202FE2C(int param0);
-THUMB_FUNC void FUN_0202FEEC();
-THUMB_FUNC void FUN_02030074();
-THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2);
-THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2);
-THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2);
-THUMB_FUNC void FUN_020304D4(u32 param0);
-THUMB_FUNC void FUN_020304F0(u32 param0);
-THUMB_FUNC void FUN_0203050C();
-THUMB_FUNC void FUN_02030674();
-THUMB_FUNC void FUN_020307A8();
-THUMB_FUNC void FUN_020307BC();
-THUMB_FUNC void FUN_020307D0();
-THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1);
-THUMB_FUNC void FUN_0203086C();
-THUMB_FUNC u32 FUN_02030870(u8 *param0);
-THUMB_FUNC u32 FUN_02030930(u8 *param0);
-THUMB_FUNC void FUN_02030A00(u8 *param0);
-THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1);
-THUMB_FUNC int FUN_02030C58();
-THUMB_FUNC void FUN_02030C70(
+u32 FUN_0202F150(u32 param0, u32 param1);
+void FUN_0202F2F0();
+void FUN_0202F5A4();
+void FUN_0202F820(int param0);
+void FUN_0202F8D4();
+void FUN_0202F910(int param0);
+BOOL FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3);
+u32 FUN_0202F950(u32 param0, u32 param1, u32 param2);
+void FUN_0202F984();
+void FUN_0202F9E0(u32 param0);
+void FUN_0202FA10();
+void FUN_0202FA1C();
+u8 FUN_0202FA28();
+u32 FUN_0202FA48();
+void FUN_0202FA5C();
+u32 FUN_0202FB18(u32 param0);
+void FUN_0202FB20();
+void FUN_0202FB58();
+BOOL FUN_0202FB80();
+void FUN_0202FC60();
+void FUN_0202FC80();
+void FUN_0202FCA8();
+void FUN_0202FCCC();
+u32 FUN_0202FE2C(int param0);
+void FUN_0202FEEC();
+void FUN_02030074();
+void FUN_02030238(u32 param0, u8 *param1, u32 param2);
+void FUN_0203026C(u32 param0, u8 *param1, u32 param2);
+void FUN_020303BC(u32 param0, u8 *param1, u32 param2);
+void FUN_020303F4(u32 param0, u8 *param1, u32 param2);
+void FUN_020304D4(u32 param0);
+void FUN_020304F0(u32 param0);
+void FUN_0203050C();
+void FUN_02030674();
+void FUN_020307A8();
+void FUN_020307BC();
+void FUN_020307D0();
+u32 FUN_020307E4(u8 *param0, u32 param1);
+void FUN_0203086C();
+u32 FUN_02030870(u8 *param0);
+u32 FUN_02030930(u8 *param0);
+void FUN_02030A00(u8 *param0);
+u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2);
+u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2);
+u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2);
+u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2);
+u32 FUN_02030C4C(u32 param0, u8 *param1);
+int FUN_02030C58();
+void FUN_02030C70(
u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4);
-THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0,
+void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0,
u32 param1,
void *param2,
u32 param3,
struct UnkStruct0202F150_sub2 *param4);
-THUMB_FUNC void FUN_02030DA4();
-THUMB_FUNC void FUN_02030DFC();
-THUMB_FUNC u32 FUN_02030E7C(u16 param0);
-THUMB_FUNC u32 FUN_02030F20();
-THUMB_FUNC u32 FUN_02030F40();
-THUMB_FUNC void FUN_02030F60(u8 param0);
-THUMB_FUNC u8 FUN_02030F74(u32 param0);
-THUMB_FUNC u32 FUN_02030F88(u32 param0);
-THUMB_FUNC void FUN_02030FA8();
-THUMB_FUNC void FUN_02030FC8();
-THUMB_FUNC u32 FUN_02030FE0();
-THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2);
-THUMB_FUNC void FUN_02031088();
-THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2);
-THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2);
-THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2);
-THUMB_FUNC u16 FUN_02031190();
-THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1);
-THUMB_FUNC u32 FUN_020311DC(u32 param0);
-THUMB_FUNC u32 FUN_020311E8();
-THUMB_FUNC u32 FUN_020311F0();
-THUMB_FUNC int FUN_02031228(u16 param0);
-THUMB_FUNC u32 FUN_02031248(u32 param0);
-THUMB_FUNC u32 FUN_02031258(u32 param0);
-THUMB_FUNC void FUN_02031268(u8 param0);
-THUMB_FUNC u8 FUN_02031280();
-THUMB_FUNC void FUN_0203129C();
-THUMB_FUNC void FUN_020312BC(s64 *param0);
-THUMB_FUNC void FUN_02031354(u32 param0);
-THUMB_FUNC u32 FUN_02031370();
-THUMB_FUNC u32 FUN_02031388();
-THUMB_FUNC void FUN_020313A0(u8 param0);
-THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1);
-THUMB_FUNC u32 FUN_020313CC(u32 param0);
-THUMB_FUNC u32 FUN_020313EC();
-THUMB_FUNC void FUN_02031400(u32 param0);
-THUMB_FUNC u32 FUN_02031438();
-THUMB_FUNC void FUN_02031454();
-THUMB_FUNC void FUN_02031468();
+void FUN_02030DA4();
+void FUN_02030DFC();
+u32 FUN_02030E7C(u16 param0);
+s32 FUN_02030F20();
+BOOL FUN_02030F40();
+void FUN_02030F60(u8 param0);
+u8 FUN_02030F74(u32 param0);
+u32 FUN_02030F88(u32 param0);
+void FUN_02030FA8();
+void FUN_02030FC8();
+u32 FUN_02030FE0();
+void FUN_02031000(u32 param0, u8 *param1, u32 param2);
+void FUN_0203105C(u32 param0, u8 *param1, u32 param2);
+void FUN_02031088();
+void FUN_0203110C(u32 param0, u32 param1, u8 *param2);
+void FUN_02031134(u32 param0, u32 param1, u8 *param2);
+void FUN_0203115C(u32 param0, u32 param1, u8 *param2);
+u16 FUN_02031190();
+u32 FUN_020311D0(u32 param0, u8 *param1);
+u32 FUN_020311DC(u32 param0);
+u32 FUN_020311E8();
+BOOL FUN_020311F0();
+int FUN_02031228(u16 param0);
+int FUN_02031248(u32 param0);
+int FUN_02031258(u32 param0);
+void FUN_02031268(u8 param0);
+u8 FUN_02031280();
+void FUN_0203129C();
+void FUN_020312BC(s64 *param0);
+void FUN_02031354(u32 param0);
+u32 FUN_02031370();
+u32 FUN_02031388();
+void FUN_020313A0(u8 param0);
+void FUN_020313B4(u8 param0, u32 param1);
+u32 FUN_020313CC(u32 param0);
+u32 FUN_020313EC();
+void FUN_02031400(u32 param0);
+u32 FUN_02031438();
+void FUN_02031454();
+void FUN_02031468();
#endif // POKEDIAMOND_UNK_0202F150_H
diff --git a/include/unk_02031480.h b/include/unk_02031480.h
new file mode 100644
index 00000000..951a3717
--- /dev/null
+++ b/include/unk_02031480.h
@@ -0,0 +1,30 @@
+#ifndef POKEDIAMOND_UNK_02031480_H
+#define POKEDIAMOND_UNK_02031480_H
+
+#include "global.h"
+#include "MI_memory.h"
+#include "heap.h"
+#include "unk_0202F150.h"
+
+void FUN_02031480(u32 heap_id);
+void FUN_020314D0();
+BOOL FUN_020314E8();
+void FUN_020314FC(u8 param0, u32 param1, u8 *param2);
+void FUN_02031560(u32 param0, u32 param1, u8 *param2);
+void FUN_02031574(u32 param0, u32 param1, u8 *param2);
+void FUN_02031588(u8 param0);
+void FUN_020315A4();
+BOOL FUN_020315D8(u8 param0);
+u8 FUN_020315FC(u8 index);
+void FUN_0203160C(u32 param0, u32 param1, u8 *param2);
+u32 FUN_02031628();
+void FUN_0203162C(u8 param0, u8 param1);
+int FUN_02031640(u32 param0, u8 param1);
+void FUN_02031668();
+void FUN_0203168C();
+BOOL FUN_020316AC(u32 param0, void *param1);
+u8 *FUN_020316E0(int param0);
+void FUN_02031704(u32 param0, u32 param1, void *param2);
+u32 FUN_02031730();
+
+#endif // POKEDIAMOND_UNK_02031480_H
diff --git a/include/unk_02031734.h b/include/unk_02031734.h
new file mode 100644
index 00000000..baf3901f
--- /dev/null
+++ b/include/unk_02031734.h
@@ -0,0 +1,215 @@
+#ifndef POKEDIAMOND_UNK_02031734_H
+#define POKEDIAMOND_UNK_02031734_H
+
+#include "global.h"
+
+struct UnkStruct_02031734_const1
+{
+ u32 unk00[3];
+};
+
+struct UnkStruct_02031734_const2
+{
+ u32 unk00[2];
+};
+
+struct UnkStruct_02031734
+{
+ void *unk00;
+ u8 unk04[6];
+ s64 unk0C[3];
+ void (*unk24)();
+ struct SaveBlock2 *unk28;
+ struct PlayerData *unk2C;
+ u32 unk30;
+ u32 unk34;
+ u16 unk38;
+ u16 unk3A;
+ u8 unk3C;
+ u8 unk3D;
+ u8 unk3E;
+ u8 unk3F;
+ u8 unk40;
+ u8 unk41;
+ u8 unk42;
+ u8 unk43;
+ u8 unk44;
+ u8 unk45;
+ u8 unk46;
+ u8 unk47;
+ u8 unk48;
+ u8 unk49;
+ u8 unk4A;
+ u8 unk4B;
+ u8 unk4C;
+ u8 unk4D;
+ u8 unk4E;
+ u8 unk4F;
+};
+
+inline u32 compute(s64 *param0, u32 param1)
+{
+ param0[0] = param0[1] * param0[0] + param0[2];
+
+ return (u32)(((s64)((u64)(param0[0]) >> 32) * param1) >> 32);
+}
+
+void FUN_02031734(struct SaveBlock2 *sav2, u8 param1);
+void FUN_020317C0();
+BOOL FUN_02031810();
+void FUN_02031824(struct SaveBlock2 *sav2);
+void FUN_02031860();
+void FUN_02031880();
+void FUN_020318A4(u8 param0);
+void FUN_020318B4();
+BOOL FUN_020318C4();
+void FUN_02031914();
+void FUN_02031924();
+void FUN_02031934();
+void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3);
+void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3);
+void FUN_020319D8(u8 param0);
+void FUN_020319F4();
+void FUN_02031A08();
+void FUN_02031A24();
+BOOL FUN_02031A2C();
+void FUN_02031A7C(struct SaveBlock2 *sav2);
+void FUN_02031AC8(u8 param0);
+s32 FUN_02031AF4();
+BOOL FUN_02031B2C();
+void FUN_02031B50();
+u32 FUN_02031BD0();
+void FUN_02031BF4();
+void FUN_02031C10();
+void FUN_02031C2C();
+void FUN_02031C54();
+void FUN_02031C64();
+void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1);
+void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1);
+void FUN_02031CDC();
+void FUN_02031D20(void (*param0)(), u32 param1);
+void FUN_02031D30();
+void FUN_02031E08();
+void FUN_02031E8C();
+void FUN_02031EE0();
+void FUN_02031F60();
+void FUN_02031FC8();
+void FUN_02032028();
+void FUN_02032040();
+void FUN_02032058();
+void FUN_020320C4();
+void FUN_02032118();
+void FUN_02032138();
+void FUN_0203213C();
+void FUN_02032140();
+void FUN_02032178();
+void FUN_02032194();
+void FUN_020321B8();
+void FUN_020321D0();
+void FUN_02032218();
+void FUN_02032234();
+void FUN_0203224C();
+void FUN_02032290();
+void FUN_02032298();
+void FUN_020322C0();
+void FUN_020322F8();
+void FUN_0203230C();
+void FUN_0203234C();
+void FUN_02032364();
+void FUN_02032378();
+void FUN_020323B8();
+void FUN_020323BC();
+void FUN_020323CC();
+void FUN_020323DC();
+void FUN_02032424();
+void FUN_02032440();
+void FUN_02032478();
+void FUN_020324C8();
+void FUN_020324F8();
+void FUN_02032510();
+void FUN_02032578();
+void FUN_020325D0();
+void FUN_02032628();
+void FUN_02032640();
+void FUN_0203266C();
+void FUN_020326D0();
+void FUN_02032738();
+void FUN_0203279C();
+void FUN_020327B4();
+void FUN_020327B8();
+void FUN_020327FC();
+void FUN_02032850();
+void FUN_02032888();
+void FUN_020328C0(u8 param0);
+void FUN_020328E4();
+void FUN_020328F4(u8 param0);
+void FUN_02032924();
+void FUN_0203293C();
+void FUN_02032978();
+void FUN_020329F4();
+void FUN_02032A8C(u8 param0, u32 param1, u8 *param2);
+void FUN_02032AEC(u32 param0, u32 param1, u8 *param2);
+u32 FUN_02032B68();
+void FUN_02032B6C(u8 param0);
+void FUN_02032B84();
+void FUN_02032B8C();
+void FUN_02032BD0(struct SaveBlock2 *sav2);
+void FUN_02032C0C();
+u32 FUN_02032C28();
+void FUN_02032C6C(u32 param0, u32 param1);
+void FUN_02032CF4();
+void FUN_02032D44(struct SaveBlock2 *sav2);
+void FUN_02032D80();
+u8 FUN_02032D9C();
+BOOL FUN_02032DAC();
+void FUN_02032E00();
+void FUN_02032E48();
+void FUN_02032E8C();
+void FUN_02032E90();
+void FUN_02032EA8();
+void FUN_02032EAC();
+void FUN_02032EB0();
+void FUN_02032F20(u32 param0);
+void FUN_02032F34();
+void FUN_02032F98();
+u32 FUN_02032FDC(u8 param0);
+u32 FUN_0203300C();
+void FUN_02033060();
+void FUN_020330A0();
+void FUN_020330E4();
+u8 FUN_02033128();
+u32 FUN_02033138();
+u32 FUN_02033154();
+u32 FUN_02033180();
+void FUN_0203318C();
+void FUN_020331C4();
+void FUN_020331E8();
+void FUN_02033208();
+void FUN_0203323C();
+u32 FUN_02033250();
+void FUN_02033288(struct SaveBlock2 *sav2);
+void FUN_020332DC();
+void FUN_02033310(struct SaveBlock2 *sav2);
+void FUN_02033364();
+u32 FUN_02033398();
+void FUN_020333F0();
+void FUN_0203341C();
+void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1);
+void *FUN_020334DC();
+void FUN_020334E8(u8 param0, u8 param1);
+u8 FUN_02033510();
+s32 FUN_02033534();
+u8 FUN_0203354C();
+void FUN_02033564(void *src);
+void FUN_02033578(void *dst);
+u32 FUN_02033590();
+void FUN_020335A4(u8 param0);
+u8 FUN_020335B8();
+void FUN_020335D0(s32 param0);
+void FUN_020335E0();
+void FUN_020335F0();
+void FUN_020335F4();
+BOOL FUN_02033678();
+u32 FUN_020336A0(u8 param0);
+
+#endif // POKEDIAMOND_UNK_0202F150_H
diff --git a/include/unk_02033778.h b/include/unk_02033778.h
new file mode 100644
index 00000000..e1f64e05
--- /dev/null
+++ b/include/unk_02033778.h
@@ -0,0 +1,9 @@
+#ifndef POKEDIAMOND_UNK_02033778_H
+#define POKEDIAMOND_UNK_02033778_H
+
+#include "nitro/types.h"
+
+void FUN_02033778(u32 param0);
+void FUN_020337C8(u32 param0, u32 param1, u32 param2, u32 language);
+
+#endif //POKEDIAMOND_UNK_02033778_H
diff --git a/include/unk_020337E8.h b/include/unk_020337E8.h
new file mode 100644
index 00000000..228570ea
--- /dev/null
+++ b/include/unk_020337E8.h
@@ -0,0 +1,25 @@
+#ifndef POKEDIAMOND_UNK_020337E8_H
+#define POKEDIAMOND_UNK_020337E8_H
+
+#include "global.h"
+#include "save_block_2.h"
+
+// Dummy struct until DWC_account
+struct DWC_Struct
+{
+ s32 unk0;
+};
+
+struct DWC_token
+{
+ // size: 0xC
+ u8 fill0[0xC];
+};
+
+s32 FUN_020337E8(u32 heap_id);
+void FUN_0203380C(struct DWC_Struct *);
+s32 FUN_02033830(struct DWC_Struct *);
+BOOL FUN_0203384C(struct SaveBlock2 *);
+
+
+#endif // POKEDIAMOND_UNK_020337E8_H
diff --git a/include/unk_020377F0.h b/include/unk_020377F0.h
new file mode 100644
index 00000000..91276889
--- /dev/null
+++ b/include/unk_020377F0.h
@@ -0,0 +1,30 @@
+#ifndef POKEDIAMOND_UNK_020377F0_H
+#define POKEDIAMOND_UNK_020377F0_H
+
+struct Options;
+struct PlayerParty;
+
+// This struct gets created from a bunch of places, not just 0x02037CF0. This was
+// just the first place I (tgsm) found it being created.
+struct UnkStruct_02037CF0
+{
+ struct PlayerParty* party;
+ struct Options* options;
+ u16* name_buf;
+ u32 trainer_id;
+ u8 gender;
+ u8 unk11;
+ u8 unk12;
+ u8 party_count;
+ u8 unk14;
+ u8 unk15;
+ u8 unk16;
+ u8 padding;
+ u16 unk18;
+ u8 padding2[0x2];
+ BOOL has_national_dex;
+ u8 padding3[0xC];
+ BOOL unk2C;
+};
+
+#endif
diff --git a/include/unk_0204639C.h b/include/unk_0204639C.h
index cff2241f..cebe192d 100644
--- a/include/unk_0204639C.h
+++ b/include/unk_0204639C.h
@@ -1,6 +1,8 @@
#ifndef GUARD_UNK_0204639C_H
#define GUARD_UNK_0204639C_H
+#include "script.h"
+
struct UnkStruct_0204639C;
typedef BOOL (*UnkStruct_0204639C_cb)(struct UnkStruct_0204639C * );
@@ -13,18 +15,18 @@ struct UnkStruct_0204639C
u32 * unkC;
struct UnkStruct_0204639C * unk10;
void * unk14;
- struct UnkStruct_0204639C * unk18;
+ struct UnkSavStruct80 * unk18;
u32 * unk1C;
};
extern void LoadOverlay_MODULE_05(void *);
-extern void FUN_020373D4(struct UnkStruct_0204639C *, u32, u32);
+extern void FUN_020373D4(struct UnkSavStruct80 *, u32, u32);
extern BOOL FUN_020373AC(void *);
extern BOOL FUN_0203739C(void *);
extern BOOL FUN_020373C4(void *);
-struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7);
-void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6);
+struct UnkStruct_0204639C * FUN_0204639C(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r6, u32 * r7);
+void FUN_020463CC(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r4, u32 * r6);
void FUN_020463EC(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2);
void FUN_0204640C(struct UnkStruct_0204639C * r4, UnkStruct_0204639C_cb r1, u32 * r2);
BOOL FUN_02046420(struct UnkStruct_0204639C * r5);
@@ -37,6 +39,6 @@ void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4);
u32 * FUN_0204652C(struct UnkStruct_0204639C * r0);
u32 * FUN_02046530(struct UnkStruct_0204639C * r0);
u32 FUN_02046534(struct UnkStruct_0204639C * r0);
-struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C *);
+struct UnkSavStruct80 * FUN_02046528(struct UnkStruct_0204639C *);
#endif //GUARD_UNK_0204639C_H
diff --git a/include/unk_0204B0A0.h b/include/unk_0204B0A0.h
new file mode 100644
index 00000000..8d37e354
--- /dev/null
+++ b/include/unk_0204B0A0.h
@@ -0,0 +1,25 @@
+#ifndef POKEDIAMOND_UNK_0204B0A0_H
+#define POKEDIAMOND_UNK_0204B0A0_H
+
+#include "RTC_api.h"
+#include "RTC_convert.h"
+#include "sav_system_info.h"
+#include "script.h"
+
+void FUN_0204B0F8(struct UnkSavStruct80* unk);
+void FUN_0204B130(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date);
+void FUN_0204B158(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date, struct RTCTime* time);
+void FUN_0204B1DC(struct UnkSavStruct80* unk, s32 a1);
+void FUN_0204B270(struct UnkSavStruct80* unk, s32 a1, struct RTCTime* time);
+u32 Script_GetTimeOfDay(struct UnkSavStruct80* unk);
+u32 Script_GetMonth(struct UnkSavStruct80* unk);
+u32 Script_GetDay(struct UnkSavStruct80* unk);
+RTCWeek Script_GetWeekday(struct UnkSavStruct80* unk);
+u32 Script_GetHour(struct UnkSavStruct80* unk);
+u32 Script_GetMinute(struct UnkSavStruct80* unk);
+void Script_SavRTC_x24toDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time);
+void Script_SavRTC_x2CtoDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time);
+void Script_SavRTC_DateTimeTox2C(struct UnkSavStruct80* unk);
+BOOL FUN_0204B33C(struct UnkSavStruct80* unk);
+
+#endif
diff --git a/include/unk_0205FA2C.h b/include/unk_0205FA2C.h
index 99cf7606..418c7077 100644
--- a/include/unk_0205FA2C.h
+++ b/include/unk_0205FA2C.h
@@ -13,6 +13,7 @@
#include "unk_0202A8F4.h"
#include "unk_0204639C.h"
#include "unk_0206BB28.h"
+#include "unk_02031480.h"
struct UnkPlayerStruct1_0205FA2C
{
@@ -79,16 +80,16 @@ struct UnkCallbackStruct2_0205FA2C
u16 unk14;
};
-THUMB_FUNC u32 FUN_0205FA2C(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id);
-THUMB_FUNC u32 FUN_0205FAD8(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1);
-THUMB_FUNC u32 FUN_0205FB34(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id);
-THUMB_FUNC u32 FUN_0205FBC0(
- struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1);
-THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0);
-THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0,
+u32 FUN_0205FA2C(
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id);
+u32 FUN_0205FAD8(
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1);
+u32 FUN_0205FB34(
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id);
+u32 FUN_0205FBC0(
+ struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1);
+int FUN_0205FBE8(struct UnkStruct_0204639C *param0);
+void FUN_0205FC50(struct UnkStruct_0204639C *param0,
void **param1,
u8 param2,
u8 param3,
@@ -97,24 +98,24 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0,
u8 param6,
u8 param7);
-THUMB_FUNC u32 FUN_0205FC9C(
- struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1);
-THUMB_FUNC u32 FUN_0205FCC4(
- struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1);
-THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0);
-THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3);
+u32 FUN_0205FC9C(
+ struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1);
+u32 FUN_0205FCC4(
+ struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1);
+int FUN_0205FCE8(struct UnkStruct_0204639C *param0);
+void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3);
-THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0);
-THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2);
+int FUN_0205FD70(struct UnkStruct_0204639C *param0);
+void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2);
-THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2);
-THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2);
-THUMB_FUNC void FUN_02060044(u16 **param0, u32 *param1);
-THUMB_FUNC u32 FUN_02060064(u32 param0);
-THUMB_FUNC u32 FUN_02060070(u32 param0);
-THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2);
-THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2);
-THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2);
-THUMB_FUNC BOOL FUN_02060144(u32 **param0);
+u32 FUN_0205FE10(struct SaveBlock2 *sav2);
+u32 FUN_0205FF5C(struct SaveBlock2 *sav2);
+void FUN_02060044(u16 **param0, u32 *param1);
+u32 FUN_02060064(u32 param0);
+u32 FUN_02060070(u32 param0);
+u32 FUN_0206007C(struct SaveBlock2 *sav2);
+u32 FUN_020600A0(struct SaveBlock2 *sav2);
+u32 FUN_020600DC(struct SaveBlock2 *sav2);
+BOOL FUN_02060144(u32 **param0);
-#endif // POKEDIAMOND_UNK_0205FA2C_H \ No newline at end of file
+#endif // POKEDIAMOND_UNK_0205FA2C_H
diff --git a/include/unk_0206015C.h b/include/unk_0206015C.h
new file mode 100644
index 00000000..c285fac9
--- /dev/null
+++ b/include/unk_0206015C.h
@@ -0,0 +1,30 @@
+#ifndef UNK_0206015C_H_GUARD
+#define UNK_0206015C_H_GUARD
+
+#include "global.h"
+#include "script.h"
+#include "unk_0204639C.h"
+
+struct UnkStruct_0206015C
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u8 unkC;
+ u8 unkD;
+};
+
+struct UnkStruct_0204652C
+{
+ void* unk0;
+ u32 unk4;
+ u32 unk8;
+ u8 action;
+ u8 unkD; // some kind of counter?
+ u8 unkE; // some kind of counter?
+};
+
+void FUN_0206015C(struct UnkSavStruct80* savStruct);
+BOOL FUN_02060194(struct UnkStruct_0204639C * unkStruct0);
+
+#endif //UNK_0206015C_H_GUARD
diff --git a/include/unk_0206439C.h b/include/unk_0206439C.h
new file mode 100644
index 00000000..6d094e5c
--- /dev/null
+++ b/include/unk_0206439C.h
@@ -0,0 +1,15 @@
+#ifndef POKEDIAMOND_UNK_0206439C_H
+#define POKEDIAMOND_UNK_0206439C_H
+
+struct Pokemon;
+struct SaveBlock2;
+
+struct UnkStruct_0206439C
+{
+ struct Pokemon* pokemon;
+ void* unk4;
+};
+
+struct UnkStruct_0206439C* FUN_0206439C(u32 heap_id, u8 mon_idx, struct SaveBlock2* sav2);
+
+#endif
diff --git a/include/unk_0208890C.h b/include/unk_0208890C.h
new file mode 100644
index 00000000..9ec040a1
--- /dev/null
+++ b/include/unk_0208890C.h
@@ -0,0 +1,25 @@
+#ifndef POKEDIAMOND_UNK_0208890C_H
+#define POKEDIAMOND_UNK_0208890C_H
+
+struct Bag;
+struct Options;
+struct PlayerData;
+struct SaveBlock2;
+
+struct UnkStruct_0208890C
+{
+ u8 padding[0x4];
+ void* unk4;
+ void* unk8;
+ struct SaveBlock2* sav2;
+ struct PlayerData* player;
+ struct Bag* bag;
+ struct Options* options;
+ void* unk1C;
+};
+
+struct UnkStruct_0208890C* FUN_0208890C(void*, struct SaveBlock2* sav2, u32 heap_id, void*);
+void FUN_02088950(struct UnkSavStruct80*, struct UnkStruct_0208890C*);
+struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80*, void*, u32 heap_id);
+
+#endif
diff --git a/include/unk_02088DD8.h b/include/unk_02088DD8.h
new file mode 100644
index 00000000..318a98fb
--- /dev/null
+++ b/include/unk_02088DD8.h
@@ -0,0 +1,19 @@
+#ifndef POKEDIAMOND_UNK_02088DD8_H
+#define POKEDIAMOND_UNK_02088DD8_H
+
+struct Options;
+struct PlayerData;
+struct Pokemon;
+
+struct UnkStruct_02088DD8
+{
+ struct Pokemon* pokemon;
+ struct PlayerData* player;
+ struct Options* options;
+ void* unkC;
+ u8 padding[0x5];
+ u8 unk15;
+ u8 padding2[0x2];
+};
+
+#endif
diff --git a/include/unk_0208A300.h b/include/unk_0208A300.h
new file mode 100644
index 00000000..9c2ae898
--- /dev/null
+++ b/include/unk_0208A300.h
@@ -0,0 +1,17 @@
+#ifndef POKEDIAMOND_UNK_0208A300_H
+#define POKEDIAMOND_UNK_0208A300_H
+
+struct UnkStruct_0208A300
+{
+ u32 unk0;
+ u32 unk4;
+};
+
+struct UnkStruct_0208A300* FUN_0208A300(u32 heap_id);
+void FUN_0208A320(struct UnkStruct_0208A300* unk);
+u32 FUN_0208A328(struct UnkStruct_0208A300* unk);
+void FUN_0208A32C(struct UnkStruct_0208A300* unk, u32 a1);
+u32 FUN_0208A330(struct UnkStruct_0208A300* unk);
+void FUN_0208A334(struct UnkStruct_0208A300* unk, u32 a1);
+
+#endif
diff --git a/tools/asm_processor/asm_processor.py b/tools/asm_processor/asm_processor.py
index ec01c68e..5c909388 100755
--- a/tools/asm_processor/asm_processor.py
+++ b/tools/asm_processor/asm_processor.py
@@ -9,7 +9,7 @@ import os
from collections import namedtuple, defaultdict
from io import StringIO
-MAX_FN_SIZE = 100
+MAX_FN_SIZE = 3000
SLOW_CHECKS = False
EI_NIDENT = 16
@@ -375,14 +375,14 @@ def is_temp_name(name):
# https://stackoverflow.com/a/241506
def re_comment_replacer(match):
s = match.group(0)
- if s[0] in "/#":
+ if s[0] in "/#;":
return " "
else:
return s
re_comment_or_string = re.compile(
- r'#.*|/\*.*?\*/|"(?:\\.|[^\\"])*"'
+ r';.*|#.*|/\*.*?\*/|"(?:\\.|[^\\"])*"'
)
@@ -584,8 +584,12 @@ class GlobalAsmBlock:
elif line.startswith('.byte'):
self.add_sized(len(line.split(',')), real_line)
# Branches are 4 bytes long
- elif line.startswith('bl'):
+ elif line.startswith('bl') and not line.startswith('bls'):
self.add_sized(4, real_line)
+ elif line.startswith('.word'):
+ self.add_sized(4, real_line)
+ elif line.startswith('.extern'):
+ pass
else:
# Unfortunately, macros are hard to support for .rodata --
# we don't know how how space they will expand to before
@@ -820,7 +824,7 @@ def repl_float_hex(m):
def parse_source(f, opt, framepointer, input_enc, output_enc, print_source=None):
opt = "O4"
min_instr_count = 3 # idk
- skip_instr_count = 2 # idk
+ skip_instr_count = 3 # mandatory instructions: push, pop and mov r0, 0
use_jtbl_for_rodata = False
if opt in ['O2', 'g3'] and not framepointer:
diff --git a/tools/fixrom/fixrom.c b/tools/fixrom/fixrom.c
index 6c5f5da1..59fbd327 100644
--- a/tools/fixrom/fixrom.c
+++ b/tools/fixrom/fixrom.c
@@ -6,8 +6,12 @@
#include <stdnoreturn.h>
#include <stdarg.h>
-#define HEADER_SIZE 0x4000
+#define HEADER_SIZE 0x4000
+#define HEADER_CODE_OFFSET 0xC
+#define HEADER_SECURE_CRC_OFFSET 0x6C
+#define HEADER_CRC_OFFSET 0x15E
+// ROM header buffer
uint8_t RomHeader[HEADER_SIZE];
static inline noreturn __attribute__((format(printf, 1, 2))) void fatal_error(const char * message, ...)
@@ -21,6 +25,9 @@ static inline noreturn __attribute__((format(printf, 1, 2))) void fatal_error(co
exit(EXIT_FAILURE);
}
+// Pedantic check to make sure you're writing to or reading from a valid range
+// within the ROM header buffer.
+// Call twice, once with the first offset and again with the last address.
static inline void OffsetCheck(int offset)
{
if (offset < 0 || offset >= HEADER_SIZE)
@@ -29,80 +36,77 @@ static inline void OffsetCheck(int offset)
}
}
+// Wrapper for memcpy that writes to the ROM header buffer
+static inline uint8_t * SafeCopyToHeader(int offset, const void * src, size_t size)
+{
+ OffsetCheck(offset);
+ OffsetCheck(offset + size - 1);
+ return memcpy(RomHeader + offset, src, size);
+}
+
+// Read a 16-bit word from the header buffer
static inline uint16_t HeaderReadU16LE(int offset)
{
OffsetCheck(offset);
+ OffsetCheck(offset + 1);
return RomHeader[offset] |
(RomHeader[offset + 1] << 8);
}
+// Read a 32-bit word from the header buffer
static inline uint32_t HeaderReadU32LE(int offset)
{
OffsetCheck(offset);
+ OffsetCheck(offset + 3);
return RomHeader[offset] |
(RomHeader[offset + 1] << 8) |
(RomHeader[offset + 2] << 16) |
(RomHeader[offset + 3] << 24);
}
+// Write a 16-bit word to the header buffer
static inline void HeaderWriteU16LE(int offset, uint16_t value)
{
OffsetCheck(offset);
+ OffsetCheck(offset + 1);
RomHeader[offset] = value;
RomHeader[offset + 1] = value >> 8;
}
+// Write a 32-bit word to the header buffer
static inline void HeaderWriteU32LE(int offset, uint32_t value)
{
OffsetCheck(offset);
+ OffsetCheck(offset + 3);
RomHeader[offset] = value;
RomHeader[offset + 1] = value >> 8;
RomHeader[offset + 2] = value >> 16;
RomHeader[offset + 3] = value >> 24;
}
+// Standard CRC16 routine
+#define CRC16_POLYNOMIAL 0xA001
+
static uint16_t Calc_CRC16(uint8_t * data, size_t length, uint16_t crc)
{
- static uint16_t CrcTable[16] = {
- 0x0000,
- 0xCC01,
- 0xD801,
- 0x1400,
- 0xF001,
- 0x3C00,
- 0x2800,
- 0xE401,
- 0xA001,
- 0x6C00,
- 0x7800,
- 0xB401,
- 0x5000,
- 0x9C01,
- 0x8801,
- 0x4400,
- };
-
- uint16_t x = 0;
- uint16_t y;
- uint16_t bit = 0;
- uint8_t * end = data + length;
- while (data < end)
- {
- if (bit == 0)
- {
- x = data[0] | (data[1] << 8);
- }
- y = CrcTable[crc & 15];
- crc >>= 4;
- crc ^= y;
- y = CrcTable[(x >> bit) & 15];
- crc ^= y;
- bit += 4;
- if (bit == 16)
- {
- data += 2;
- bit = 0;
+ static uint16_t CrcTable[256] = {};
+ static int initialized = 0;
+ int i;
+
+ if (!initialized) {
+ for (i = 0; i < 256; i++) {
+ int c = i;
+ for (int j = 0; j < 8; j++) {
+ c = (c >> 1) ^ ((c & 1) ? CRC16_POLYNOMIAL : 0);
+ }
+ CrcTable[i] = c;
}
+ initialized = 1;
}
+
+ for (i = 0; i < length; i++) {
+ crc = (crc >> 8) ^ CrcTable[(uint8_t)crc] ^ CrcTable[data[i]];
+ }
+
return crc;
}
@@ -114,20 +118,24 @@ int main(int argc, char ** argv)
int override_code = 0;
FILE * rom = NULL;
+ // Parse arguments
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "--secure-crc") == 0)
{
+ // Enforce zero or one
if (override_crc)
{
fatal_error("multiple --secure-crc options specified");
}
+ // Parse integer
char * endptr;
unsigned long secure_crc_l = strtoul(argv[++i], &endptr, 0);
if (secure_crc_l == 0 && endptr == argv[i])
{
fatal_error("argument to --secure-crc must be an integer");
}
- if (secure_crc_l >= 0x10000)
+ // Enforce width
+ if (secure_crc_l > UINT16_MAX)
{
fatal_error("argument to --secure-crc must be a 16-bit integer");
}
@@ -136,55 +144,66 @@ int main(int argc, char ** argv)
}
else if (strcmp(argv[i], "--game-code") == 0)
{
+ // Enforce zero or one
if (override_code)
{
fatal_error("multiple --game-code options specified");
}
- if (strlen(argv[++i]) > 4)
+ // Enforce max length
+ if (strlen(argv[++i]) > sizeof(game_code))
{
fatal_error("argument to --game-code must be 4 characters or fewer");
}
- strncpy(game_code, argv[i], 4);
+ memset(game_code, 0, sizeof(game_code));
+ strncpy(game_code, argv[i], sizeof(game_code));
override_code = 1;
}
- else
+ // Positional arguments
+ else if (rom == NULL)
{
- if (rom != NULL)
- {
- fatal_error("unrecognized %s argument: %s", argv[i][0] == '-' ? "flag" : "positional", argv[i]);
- }
rom = fopen(argv[i], "r+b");
if (rom == NULL)
{
fatal_error(argv[i][0] == '-' ? "unrecognized flag argument: %s" : "unable to open file '%s' for reading", argv[i]);
}
}
+ else
+ {
+ // Invalid argument, complain about it
+ fatal_error("unrecognized %s argument: %s", argv[i][0] == '-' ? "flag" : "positional", argv[i]);
+ }
}
+ // Read header to buffer
if (fread(RomHeader, 1, HEADER_SIZE, rom) != HEADER_SIZE)
{
fatal_error("error reading the ROM header");
}
+ // Update CRC
if (override_crc)
{
- HeaderWriteU16LE(0x6C, secure_crc);
+ HeaderWriteU16LE(HEADER_SECURE_CRC_OFFSET, secure_crc);
}
-
+
+ // Update code
if (override_code)
{
- memcpy(RomHeader + 0xC, game_code, 4);
+ SafeCopyToHeader(HEADER_CODE_OFFSET, game_code, sizeof(game_code));
}
- uint16_t header_crc = Calc_CRC16((uint8_t *)RomHeader, 0x15E, 0xFFFF);
- HeaderWriteU16LE(0x15E, header_crc);
+ // Recompute CRC of header not including the crc offset
+ uint16_t header_crc = Calc_CRC16((uint8_t *)RomHeader, HEADER_CRC_OFFSET, 0xFFFF);
+ HeaderWriteU16LE(HEADER_CRC_OFFSET, header_crc);
+ // Write the header back
fseek(rom, 0, SEEK_SET);
if (fwrite(RomHeader, 1, HEADER_SIZE, rom) != HEADER_SIZE)
{
fatal_error("error writing the ROM header");
}
+ // Hooray, we done did it!
fclose(rom);
return EXIT_SUCCESS;
}
diff --git a/tools/knarc/Narc.cpp b/tools/knarc/Narc.cpp
index 7e698571..cce7cdea 100644
--- a/tools/knarc/Narc.cpp
+++ b/tools/knarc/Narc.cpp
@@ -29,6 +29,7 @@ using namespace std;
extern bool debug;
extern bool pack_no_fnt;
+extern bool output_header;
void Narc::AlignDword(ofstream& ofs, uint8_t paddingChar)
{
@@ -145,6 +146,39 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory)
if (!ofs.good()) { return Cleanup(ofs, NarcError::InvalidOutputFile); }
+ ofstream ofhs;
+ string stem;
+ string stem_upper;
+ // Pikalax 29 May 2021
+ // Output an includable header that enumerates the NARC contents
+ if (output_header)
+ {
+ fs::path naixfname = fileName;
+ naixfname.replace_extension(".naix");
+
+ ofhs.open(naixfname);
+ if (!ofhs.good())
+ {
+ ofhs.close();
+ return Cleanup(ofs, NarcError::InvalidOutputFile);
+ }
+
+ stem = fileName.stem().string();
+ stem_upper = stem;
+ for (char &c : stem_upper)
+ { c = toupper(c); }
+
+ ofhs << "/*\n"
+ " * THIS FILE WAS AUTOMATICALLY\n"
+ " * GENERATED BY tools/knarc\n"
+ " * DO NOT MODIFY!!!\n"
+ " */\n"
+ "\n"
+ "#ifndef NARC_" << stem_upper << "_NAIX_\n"
+ "#define NARC_" << stem_upper << "_NAIX_\n"
+ "\n"
+ "enum {\n";
+ }
vector<FileAllocationTableEntry> fatEntries;
uint16_t directoryCounter = 1;
@@ -153,6 +187,7 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory)
ignore_patterns.push_back(".*keep");
WildcardVector keep_patterns(directory / ".knarckeep");
+ int memberNo = 0;
for (const auto& de : OrderedDirectoryIterator(directory, true))
{
if (is_directory(de))
@@ -164,6 +199,12 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory)
if (debug) {
cerr << "DEBUG: adding file " << de.path() << endl;
}
+ if (output_header)
+ {
+ string de_stem = de.path().filename().string();
+ std::replace(de_stem.begin(), de_stem.end(), '.', '_');
+ ofhs << "\tNARC_" << stem << "_" << de_stem << " = " << (memberNo++) << ",\n";
+ }
fatEntries.push_back(FileAllocationTableEntry
{
.Start = 0x0,
@@ -183,6 +224,11 @@ bool Narc::Pack(const fs::path& fileName, const fs::path& directory)
fatEntries.back().End = fatEntries.back().Start + static_cast<uint32_t>(file_size(de));
}
}
+ if (output_header)
+ {
+ ofhs << "};\n\n#endif //NARC_" << stem_upper << "_NAIX_\n";
+ ofhs.close();
+ }
FileAllocationTable fat
{
diff --git a/tools/knarc/Source.cpp b/tools/knarc/Source.cpp
index d9a5cf83..587c8527 100644
--- a/tools/knarc/Source.cpp
+++ b/tools/knarc/Source.cpp
@@ -8,6 +8,7 @@ using namespace std;
bool debug = false;
bool pack_no_fnt = true;
+bool output_header = false;
void PrintError(NarcError error)
{
@@ -40,6 +41,7 @@ static inline void usage() {
cout << "\t-n\tBuild the filename table (default: discards filenames)" << endl;
cout << "\t-D/--debug\tPrint additional debug messages" << endl;
cout << "\t-h/--help\tPrint this message and exit" << endl;
+ cout << "\t-i\tOutput a .naix header" << endl;
}
int main(int argc, char* argv[])
@@ -104,6 +106,9 @@ int main(int argc, char* argv[])
else if (!strcmp(argv[i], "-n")) {
pack_no_fnt = false;
}
+ else if (!strcmp(argv[i], "-i")) {
+ output_header = true;
+ }
else {
usage();
cerr << "ERROR: Unrecognized argument: " << argv[i] << endl;
diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c
index 305fbeb2..f5ff30e7 100644
--- a/tools/nitrogfx/gfx.c
+++ b/tools/nitrogfx/gfx.c
@@ -774,8 +774,9 @@ void WriteNtrCell(char *path, struct JsonToCellOptions *options)
KBECHeader[4] = (size + 0x20) & 0xFF; //size
KBECHeader[5] = (size + 0x20) >> 8; //unlikely to be more than 16 bits, but there are 32 allocated, change if necessary
- fwrite(KBECHeader, 1, 0x20, fp);
+ KBECHeader[16] = (options->mappingType & 0xFF); //not possible to be more than 8 bits, though 32 are allocated
+ fwrite(KBECHeader, 1, 0x20, fp);
unsigned char *KBECContents = malloc(size);
diff --git a/tools/nitrogfx/json.c b/tools/nitrogfx/json.c
index aad325be..b825c363 100644
--- a/tools/nitrogfx/json.c
+++ b/tools/nitrogfx/json.c
@@ -51,16 +51,17 @@ struct JsonToCellOptions *ParseNCERJson(char *path)
cJSON *imageHeight = cJSON_GetObjectItemCaseSensitive(json, "imageHeight");
cJSON *imageWidth = cJSON_GetObjectItemCaseSensitive(json, "imageWidth");
cJSON *cellCount = cJSON_GetObjectItemCaseSensitive(json, "cellCount");
+ cJSON *mappingType = cJSON_GetObjectItemCaseSensitive(json, "mappingType");
options->labelEnabled = GetBool(labelBool);
options->extended = GetBool(extended);
options->imageHeight = GetInt(imageHeight);
options->imageWidth = GetInt(imageWidth);
options->cellCount = GetInt(cellCount);
+ options->mappingType = GetInt(mappingType);
options->cells = malloc(sizeof(struct Cell *) * options->cellCount);
-
if (options->labelEnabled)
{
cJSON *labelCount = cJSON_GetObjectItemCaseSensitive(json, "labelCount");
diff --git a/tools/nitrogfx/options.h b/tools/nitrogfx/options.h
index 780c83e6..66e9895d 100644
--- a/tools/nitrogfx/options.h
+++ b/tools/nitrogfx/options.h
@@ -74,6 +74,7 @@ struct Cell {
struct JsonToCellOptions {
bool labelEnabled;
bool extended;
+ int mappingType;
int imageHeight;
int imageWidth;
int cellCount;
diff --git a/tools/o2narc/o2narc.cpp b/tools/o2narc/o2narc.cpp
index 1381788a..60e4e242 100644
--- a/tools/o2narc/o2narc.cpp
+++ b/tools/o2narc/o2narc.cpp
@@ -3,6 +3,7 @@
#include <getopt.h>
#include <cstring>
#include <vector>
+#include <iomanip>
#include "elf.h"
#include "Narc.h"
@@ -49,6 +50,7 @@ class Elf {
public:
ShdrTab shdr;
Symtab symtab;
+ Elf(string const& filename) : Elf(filename.c_str()) {}
Elf(const char * filename) {
// Read the ELF header
phdr = nullptr;
@@ -155,25 +157,29 @@ static inline void usage() {
cout << "\toutfile\tOutput NARC file" << endl;
cout << "Options:" << endl;
cout << "\t-f|--flatten\tDon't generate NARC headers" << endl;
+ cout << "\t-i|--output-header\tCreate a .naix file" << endl;
}
int main(int argc, char ** argv) {
// CLI arguments
- int flatten = 0;
+ int flatten = 0, output_header = 0;
char padding = '\xFF';
static option options [] {
{ "flatten", no_argument, &flatten, 1 },
{ "padding", required_argument, nullptr, 'p' },
+ { "output_header", no_argument, &output_header, 1 },
{nullptr, 0, nullptr, 0}
};
int opt_index;
int c;
- while ((c = getopt_long(argc, argv, "fp:", options, &opt_index)) != -1)
+ while ((c = getopt_long(argc, argv, "fp:i", options, &opt_index)) != -1)
{
if (c == 'f') {
flatten = 1;
} else if (c == 'p') {
padding = strtol(optarg, NULL, 0);
+ } else if (c == 'i') {
+ output_header = 1;
}
}
argv += optind;
@@ -188,8 +194,13 @@ int main(int argc, char ** argv) {
cerr << "Excess arguments: first unrecognized '" << argv[2] << "'" << endl;
return 1;
}
- char * infname = argv[0];
- char * outfname = argv[1];
+ if (output_header && flatten) {
+ usage();
+ cerr << "Incompatible flags: -i, -f" << endl;
+ return 1;
+ }
+ const char * infname = argv[0];
+ const char * outfname = argv[1];
// Read the ELF file
Elf elf(infname);
@@ -201,15 +212,45 @@ int main(int argc, char ** argv) {
exit(1);
}
- fstream ofile;
- ofile.open(outfname, ios_base::out | ios_base::binary);
+ ofstream ofile;
+ ofile.open(outfname, ios_base::binary);
if (!ofile.good()) {
cerr << "ERROR: Unable to open '" << outfname << "' for writing" << endl;
exit(1);
}
-
if (!flatten) // then build the NARC chunks
{
+ string stem, stem_upper;
+ ofstream ofheader;
+ if (output_header)
+ {
+ string outhname = outfname;
+ outhname.replace(outhname.find(".narc"), 5, ".naix");
+ ofheader.open(outhname);
+ if (!ofheader.good())
+ {
+ ofile.close();
+ cerr << "ERROR: Unable to open '" << outhname << "' for writing" << endl;
+ exit(1);
+ }
+ stem = outfname;
+ stem = stem.substr(0, stem.rfind("."));
+ stem = stem.substr(stem.rfind("/") + 1);
+ stem_upper = stem;
+ for (char &_c : stem_upper)
+ { _c = toupper(_c); }
+
+ ofheader << "/*\n"
+ " * THIS FILE WAS AUTOMATICALLY\n"
+ " * GENERATED BY tools/o2narc\n"
+ " * DO NOT MODIFY!!!\n"
+ " */\n"
+ "\n"
+ "#ifndef NARC_" << stem_upper << "_NAIX_\n"
+ "#define NARC_" << stem_upper << "_NAIX_\n"
+ "\n"
+ "enum {\n";
+ }
// .data contains the size table
Elf32_Shdr & data_sec = elf.shdr[".data"];
uint32_t * _data = (uint32_t *)elf.read(data_sec);
@@ -275,6 +316,15 @@ int main(int argc, char ** argv) {
{
_rodata[fat_entries[i].Start + j] = padding;
}
+ if (output_header)
+ {
+ ofheader << "\tNARC_" << stem << "_narc_" << setw(4) << setfill('0') << i << " = " << i << ",\n";
+ }
+ }
+ if (output_header)
+ {
+ ofheader << "};\n\n#endif //NARC_" << stem_upper << "_NAIX_\n";
+ ofheader.close();
}
// These NARCs have empty FNTs
FileNameTable fnt{