Merge branch 'master' into battle
This commit is contained in:
@@ -25315,7 +25315,7 @@ _0802C8E8:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl sub_8088E38
|
||||
bl GetPokedexHeightWeight
|
||||
ldrh r1, [r4]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
|
||||
+2
-2
@@ -51,7 +51,7 @@ start_menu_is_selected_item_valid: @ 80BD754
|
||||
cmp r0, 0x15
|
||||
bne _080BD76C
|
||||
movs r0, 0
|
||||
bl pokedex_count
|
||||
bl GetNationalPokedexCount
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
b _080BD782
|
||||
@@ -1054,7 +1054,7 @@ sub_80BDE88: @ 80BDE88
|
||||
ldr r1, [r4]
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
bl pokedex_count
|
||||
bl GetNationalPokedexCount
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
beq _080BDEB0
|
||||
|
||||
+2
-2
@@ -1504,13 +1504,13 @@ sub_800CF3C: @ 800CF3C
|
||||
cmp r0, 0
|
||||
beq _0800CF64
|
||||
movs r0, 0x1
|
||||
bl pokedex_count
|
||||
bl GetNationalPokedexCount
|
||||
b _0800CF6A
|
||||
.align 2, 0
|
||||
_0800CF60: .4byte 0x00000829
|
||||
_0800CF64:
|
||||
movs r0, 0x1
|
||||
bl sub_8088EDC
|
||||
bl GetKantoPokedexCount
|
||||
_0800CF6A:
|
||||
lsls r0, 16
|
||||
lsrs r6, r0, 16
|
||||
|
||||
+9
-9
@@ -701,7 +701,7 @@ mapdata_load_assets_to_gpu_and_full_redraw: @ 8055148
|
||||
ldr r0, [r4]
|
||||
bl apply_map_tileset1_tileset2_palette
|
||||
bl DrawWholeMapView
|
||||
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
bl InitTilesetAnimations
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
@@ -1732,7 +1732,7 @@ _080558D4:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0xC
|
||||
ble _080558D4
|
||||
bl sub_806FFB0
|
||||
bl InitSecondaryTilesetAnimation
|
||||
bl UpdateLocationHistoryForRoamer
|
||||
bl RoamerMove
|
||||
bl sub_8110920
|
||||
@@ -3392,7 +3392,7 @@ sub_8056578: @ 8056578
|
||||
bl UpdateCameraPanning
|
||||
bl BuildOamBuffer
|
||||
bl UpdatePaletteFade
|
||||
bl sub_806FFBC
|
||||
bl UpdateTilesetAnimations
|
||||
bl DoScheduledBgTilemapCopiesToVram
|
||||
pop {r0}
|
||||
bx r0
|
||||
@@ -4051,7 +4051,7 @@ _08056B30:
|
||||
bl DrawWholeMapView
|
||||
b _08056B62
|
||||
_08056B36:
|
||||
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
bl InitTilesetAnimations
|
||||
b _08056B62
|
||||
_08056B3C:
|
||||
ldr r0, _08056B54 @ =gWirelessCommType
|
||||
@@ -4193,7 +4193,7 @@ _08056C6C:
|
||||
bl DrawWholeMapView
|
||||
b _08056CCA
|
||||
_08056C72:
|
||||
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
bl InitTilesetAnimations
|
||||
b _08056CCA
|
||||
_08056C78:
|
||||
bl sub_80561B4
|
||||
@@ -4382,7 +4382,7 @@ _08056E0C:
|
||||
bl DrawWholeMapView
|
||||
b _08056E3E
|
||||
_08056E12:
|
||||
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
bl InitTilesetAnimations
|
||||
b _08056E3E
|
||||
_08056E18:
|
||||
ldr r0, _08056E30 @ =gWirelessCommType
|
||||
@@ -5093,7 +5093,7 @@ _08057404:
|
||||
bl DrawWholeMapView
|
||||
b _08057412
|
||||
_0805740A:
|
||||
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
bl InitTilesetAnimations
|
||||
bl sub_815A540
|
||||
_08057412:
|
||||
ldrb r0, [r4]
|
||||
@@ -5176,7 +5176,7 @@ _080574B8:
|
||||
bl UpdateCameraPanning
|
||||
bl BuildOamBuffer
|
||||
bl UpdatePaletteFade
|
||||
bl sub_806FFBC
|
||||
bl UpdateTilesetAnimations
|
||||
bl DoScheduledBgTilemapCopiesToVram
|
||||
cmp r4, 0
|
||||
beq _080574E0
|
||||
@@ -5442,7 +5442,7 @@ _0805770C:
|
||||
bl DrawWholeMapView
|
||||
b _0805772A
|
||||
_08057712:
|
||||
bl cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
bl InitTilesetAnimations
|
||||
ldr r2, _08057734 @ =gPaletteFade
|
||||
ldrb r1, [r2, 0x8]
|
||||
movs r0, 0x7F
|
||||
|
||||
-282
@@ -1,282 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8088E20
|
||||
sub_8088E20: @ 8088E20
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _08088E34 @ =gUnknown_844E850
|
||||
adds r0, r1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08088E34: .4byte gUnknown_844E850
|
||||
thumb_func_end sub_8088E20
|
||||
|
||||
thumb_func_start sub_8088E38
|
||||
sub_8088E38: @ 8088E38
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
cmp r1, 0
|
||||
beq _08088E4E
|
||||
cmp r1, 0x1
|
||||
beq _08088E60
|
||||
movs r0, 0x1
|
||||
b _08088E6C
|
||||
_08088E4E:
|
||||
ldr r0, _08088E5C @ =gUnknown_844E850
|
||||
lsls r1, r2, 3
|
||||
adds r1, r2
|
||||
lsls r1, 2
|
||||
adds r1, r0
|
||||
ldrh r0, [r1, 0xC]
|
||||
b _08088E6C
|
||||
.align 2, 0
|
||||
_08088E5C: .4byte gUnknown_844E850
|
||||
_08088E60:
|
||||
ldr r0, _08088E70 @ =gUnknown_844E850
|
||||
lsls r1, r2, 3
|
||||
adds r1, r2
|
||||
lsls r1, 2
|
||||
adds r1, r0
|
||||
ldrh r0, [r1, 0xE]
|
||||
_08088E6C:
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08088E70: .4byte gUnknown_844E850
|
||||
thumb_func_end sub_8088E38
|
||||
|
||||
thumb_func_start GetSetPokedexFlag
|
||||
GetSetPokedexFlag: @ 8088E74
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
movs r2, 0
|
||||
bl sub_8104AB0
|
||||
lsls r0, 24
|
||||
asrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end GetSetPokedexFlag
|
||||
|
||||
thumb_func_start pokedex_count
|
||||
pokedex_count: @ 8088E8C
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
movs r5, 0
|
||||
movs r0, 0
|
||||
ldr r7, _08088EA4 @ =0x00000181
|
||||
_08088E98:
|
||||
cmp r6, 0
|
||||
beq _08088EA8
|
||||
cmp r6, 0x1
|
||||
beq _08088EB2
|
||||
adds r4, r0, 0x1
|
||||
b _08088ECA
|
||||
.align 2, 0
|
||||
_08088EA4: .4byte 0x00000181
|
||||
_08088EA8:
|
||||
adds r4, r0, 0x1
|
||||
lsls r0, r4, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
b _08088EBA
|
||||
_08088EB2:
|
||||
adds r4, r0, 0x1
|
||||
lsls r0, r4, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
_08088EBA:
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088ECA
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
_08088ECA:
|
||||
lsls r0, r4, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, r7
|
||||
bls _08088E98
|
||||
adds r0, r5, 0
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end pokedex_count
|
||||
|
||||
thumb_func_start sub_8088EDC
|
||||
sub_8088EDC: @ 8088EDC
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
movs r5, 0
|
||||
movs r0, 0
|
||||
_08088EE6:
|
||||
cmp r6, 0
|
||||
beq _08088EF2
|
||||
cmp r6, 0x1
|
||||
beq _08088EFC
|
||||
adds r4, r0, 0x1
|
||||
b _08088F14
|
||||
_08088EF2:
|
||||
adds r4, r0, 0x1
|
||||
lsls r0, r4, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
b _08088F04
|
||||
_08088EFC:
|
||||
adds r4, r0, 0x1
|
||||
lsls r0, r4, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
_08088F04:
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088F14
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
_08088F14:
|
||||
lsls r0, r4, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0x96
|
||||
bls _08088EE6
|
||||
adds r0, r5, 0
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8088EDC
|
||||
|
||||
thumb_func_start sub_8088F24
|
||||
sub_8088F24: @ 8088F24
|
||||
push {r4,lr}
|
||||
movs r0, 0
|
||||
_08088F28:
|
||||
adds r0, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
bl HoennToNationalOrder
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08088F48
|
||||
movs r0, 0
|
||||
b _08088F50
|
||||
_08088F48:
|
||||
adds r0, r4, 0
|
||||
cmp r0, 0xC7
|
||||
bls _08088F28
|
||||
movs r0, 0x1
|
||||
_08088F50:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8088F24
|
||||
|
||||
thumb_func_start sub_8088F58
|
||||
sub_8088F58: @ 8088F58
|
||||
push {r4,lr}
|
||||
movs r0, 0
|
||||
_08088F5C:
|
||||
adds r0, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08088F74
|
||||
movs r0, 0
|
||||
b _08088F7C
|
||||
_08088F74:
|
||||
adds r0, r4, 0
|
||||
cmp r0, 0x95
|
||||
bls _08088F5C
|
||||
movs r0, 0x1
|
||||
_08088F7C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8088F58
|
||||
|
||||
thumb_func_start HasAllKantoMons
|
||||
HasAllKantoMons: @ 8088F84
|
||||
push {r4,r5,lr}
|
||||
movs r0, 0
|
||||
_08088F88:
|
||||
adds r0, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088FD6
|
||||
adds r0, r4, 0
|
||||
cmp r0, 0x95
|
||||
bls _08088F88
|
||||
movs r0, 0x97
|
||||
_08088FA4:
|
||||
adds r0, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08088FD6
|
||||
adds r0, r4, 0
|
||||
cmp r0, 0xF7
|
||||
bls _08088FA4
|
||||
movs r0, 0xFB
|
||||
ldr r5, _08088FDC @ =0x0000017f
|
||||
_08088FC2:
|
||||
adds r0, 0x1
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl GetSetPokedexFlag
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08088FE0
|
||||
_08088FD6:
|
||||
movs r0, 0
|
||||
b _08088FE8
|
||||
.align 2, 0
|
||||
_08088FDC: .4byte 0x0000017f
|
||||
_08088FE0:
|
||||
adds r0, r4, 0
|
||||
cmp r0, r5
|
||||
bls _08088FC2
|
||||
movs r0, 0x1
|
||||
_08088FE8:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end HasAllKantoMons
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
+10
-10
@@ -6230,7 +6230,7 @@ sub_8105800: @ 8105800
|
||||
lsls r1, r0, 3
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
ldr r2, _08105860 @ =gUnknown_844E850
|
||||
ldr r2, _08105860 @ =gPokedexEntries
|
||||
adds r5, r1, r2
|
||||
movs r4, 0
|
||||
movs r1, 0x1
|
||||
@@ -6260,7 +6260,7 @@ _08105840:
|
||||
bls _08105840
|
||||
b _08105878
|
||||
.align 2, 0
|
||||
_08105860: .4byte gUnknown_844E850
|
||||
_08105860: .4byte gPokedexEntries
|
||||
_08105864:
|
||||
movs r1, 0xAC
|
||||
_08105866:
|
||||
@@ -6331,7 +6331,7 @@ sub_81058C4: @ 81058C4
|
||||
mov r8, r3
|
||||
adds r0, r1, 0
|
||||
bl SpeciesToNationalPokedexNum
|
||||
ldr r2, _08105974 @ =gUnknown_844E850
|
||||
ldr r2, _08105974 @ =gPokedexEntries
|
||||
lsls r1, r0, 3
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
@@ -6395,7 +6395,7 @@ _0810593A:
|
||||
strb r0, [r1]
|
||||
b _08105998
|
||||
.align 2, 0
|
||||
_08105974: .4byte gUnknown_844E850
|
||||
_08105974: .4byte gPokedexEntries
|
||||
_08105978: .4byte gUnknown_8415F98
|
||||
_0810597C: .4byte 0x00002710
|
||||
_08105980:
|
||||
@@ -6514,7 +6514,7 @@ sub_8105A3C: @ 8105A3C
|
||||
mov r9, r3
|
||||
adds r0, r1, 0
|
||||
bl SpeciesToNationalPokedexNum
|
||||
ldr r2, _08105ACC @ =gUnknown_844E850
|
||||
ldr r2, _08105ACC @ =gPokedexEntries
|
||||
lsls r1, r0, 3
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
@@ -6565,7 +6565,7 @@ _08105AAC:
|
||||
strb r5, [r4]
|
||||
b _08105ADC
|
||||
.align 2, 0
|
||||
_08105ACC: .4byte gUnknown_844E850
|
||||
_08105ACC: .4byte gPokedexEntries
|
||||
_08105AD0: .4byte 0x000186a0
|
||||
_08105AD4: .4byte 0x000011b8
|
||||
_08105AD8:
|
||||
@@ -6825,7 +6825,7 @@ sub_8105CB0: @ 8105CB0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08105D5C
|
||||
ldr r1, _08105D44 @ =gUnknown_844E850
|
||||
ldr r1, _08105D44 @ =gPokedexEntries
|
||||
lsls r0, r4, 3
|
||||
adds r0, r4
|
||||
lsls r0, 2
|
||||
@@ -6876,7 +6876,7 @@ sub_8105CB0: @ 8105CB0
|
||||
lsrs r5, r0, 24
|
||||
b _08105D4A
|
||||
.align 2, 0
|
||||
_08105D44: .4byte gUnknown_844E850
|
||||
_08105D44: .4byte gPokedexEntries
|
||||
_08105D48:
|
||||
movs r5, 0
|
||||
_08105D4A:
|
||||
@@ -7874,7 +7874,7 @@ _08106534:
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
add r0, r10
|
||||
ldr r1, _081066C8 @ =gUnknown_844E850
|
||||
ldr r1, _081066C8 @ =gPokedexEntries
|
||||
ldr r2, [sp, 0x18]
|
||||
lsls r4, r2, 3
|
||||
adds r4, r2
|
||||
@@ -7979,7 +7979,7 @@ _081066B8: .4byte gUnknown_203ACF0
|
||||
_081066BC: .4byte gUnknown_8452368
|
||||
_081066C0: .4byte 0x0000ffff
|
||||
_081066C4: .4byte gSprites
|
||||
_081066C8: .4byte gUnknown_844E850
|
||||
_081066C8: .4byte gPokedexEntries
|
||||
_081066CC: .4byte gSaveBlock2Ptr
|
||||
_081066D0:
|
||||
ldr r0, [r7]
|
||||
|
||||
@@ -128,7 +128,7 @@ GetMonSize: @ 80A0770
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_8088E38
|
||||
bl GetPokedexHeightWeight
|
||||
lsls r0, 16
|
||||
lsrs r7, r0, 16
|
||||
adds r0, r6, 0
|
||||
|
||||
@@ -59,11 +59,11 @@ _080F8034:
|
||||
cmp r0, 0
|
||||
beq _080F8044
|
||||
movs r0, 0x1
|
||||
bl pokedex_count
|
||||
bl GetNationalPokedexCount
|
||||
b _080F804A
|
||||
_080F8044:
|
||||
movs r0, 0x1
|
||||
bl sub_8088EDC
|
||||
bl GetKantoPokedexCount
|
||||
_080F804A:
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
|
||||
+1
-1
@@ -820,7 +820,7 @@ sub_806F3CC: @ 806F3CC
|
||||
cmp r1, r0
|
||||
bne _0806F408
|
||||
movs r0, 0
|
||||
bl pokedex_count
|
||||
bl GetNationalPokedexCount
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bne _0806F408
|
||||
|
||||
@@ -1,667 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ResetTilesetAnimBuffer
|
||||
ResetTilesetAnimBuffer: @ 806FED8
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
ldr r1, _0806FEF8 @ =gUnknown_3000FAC
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
ldr r1, _0806FEFC @ =gUnknown_2037108
|
||||
ldr r2, _0806FF00 @ =0x0500003c
|
||||
mov r0, sp
|
||||
bl CpuSet
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806FEF8: .4byte gUnknown_3000FAC
|
||||
_0806FEFC: .4byte gUnknown_2037108
|
||||
_0806FF00: .4byte 0x0500003c
|
||||
thumb_func_end ResetTilesetAnimBuffer
|
||||
|
||||
thumb_func_start AppendTilesetAnimToBuffer
|
||||
AppendTilesetAnimToBuffer: @ 806FF04
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
lsls r2, 16
|
||||
lsrs r6, r2, 16
|
||||
ldr r3, _0806FF4C @ =gUnknown_3000FAC
|
||||
ldrb r0, [r3]
|
||||
cmp r0, 0x13
|
||||
bhi _0806FF44
|
||||
ldr r2, _0806FF50 @ =gUnknown_2037108
|
||||
adds r1, r0, 0
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
str r4, [r0]
|
||||
ldrb r1, [r3]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r1, r2, 0x4
|
||||
adds r0, r1
|
||||
str r5, [r0]
|
||||
ldrb r1, [r3]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
strh r6, [r0, 0x8]
|
||||
ldrb r0, [r3]
|
||||
adds r0, 0x1
|
||||
strb r0, [r3]
|
||||
_0806FF44:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806FF4C: .4byte gUnknown_3000FAC
|
||||
_0806FF50: .4byte gUnknown_2037108
|
||||
thumb_func_end AppendTilesetAnimToBuffer
|
||||
|
||||
thumb_func_start TransferTilesetAnimsBuffer
|
||||
TransferTilesetAnimsBuffer: @ 806FF54
|
||||
push {r4-r6,lr}
|
||||
movs r3, 0
|
||||
ldr r4, _0806FF90 @ =gUnknown_3000FAC
|
||||
adds r6, r4, 0
|
||||
ldrb r0, [r4]
|
||||
cmp r3, r0
|
||||
bge _0806FF86
|
||||
ldr r2, _0806FF94 @ =0x040000d4
|
||||
ldr r1, _0806FF98 @ =gUnknown_2037108
|
||||
movs r5, 0x80
|
||||
lsls r5, 24
|
||||
_0806FF6A:
|
||||
ldr r0, [r1]
|
||||
str r0, [r2]
|
||||
ldr r0, [r1, 0x4]
|
||||
str r0, [r2, 0x4]
|
||||
ldrh r0, [r1, 0x8]
|
||||
lsrs r0, 1
|
||||
orrs r0, r5
|
||||
str r0, [r2, 0x8]
|
||||
ldr r0, [r2, 0x8]
|
||||
adds r1, 0xC
|
||||
adds r3, 0x1
|
||||
ldrb r0, [r4]
|
||||
cmp r3, r0
|
||||
blt _0806FF6A
|
||||
_0806FF86:
|
||||
movs r0, 0
|
||||
strb r0, [r6]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0806FF90: .4byte gUnknown_3000FAC
|
||||
_0806FF94: .4byte 0x040000d4
|
||||
_0806FF98: .4byte gUnknown_2037108
|
||||
thumb_func_end TransferTilesetAnimsBuffer
|
||||
|
||||
thumb_func_start cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
cur_mapheader_run_tileset_funcs_after_some_cpuset: @ 806FF9C
|
||||
push {lr}
|
||||
bl ResetTilesetAnimBuffer
|
||||
bl cur_mapheader_run_tileset1_func
|
||||
bl cur_mapheader_run_tileset2_func
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end cur_mapheader_run_tileset_funcs_after_some_cpuset
|
||||
|
||||
thumb_func_start sub_806FFB0
|
||||
sub_806FFB0: @ 806FFB0
|
||||
push {lr}
|
||||
bl cur_mapheader_run_tileset2_func
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_806FFB0
|
||||
|
||||
thumb_func_start sub_806FFBC
|
||||
sub_806FFBC: @ 806FFBC
|
||||
push {r4,lr}
|
||||
bl ResetTilesetAnimBuffer
|
||||
ldr r2, _08070014 @ =sPrimaryTilesetCBCounter
|
||||
ldrh r0, [r2]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2]
|
||||
ldr r1, _08070018 @ =sPrimaryTilesetCBBufferSize
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldrh r1, [r1]
|
||||
cmp r0, r1
|
||||
bcc _0806FFDA
|
||||
movs r0, 0
|
||||
strh r0, [r2]
|
||||
_0806FFDA:
|
||||
ldr r4, _0807001C @ =sSecondaryTilesetCBCounter
|
||||
ldrh r0, [r4]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4]
|
||||
ldr r1, _08070020 @ =sSecondaryTilesetCBBufferSize
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldrh r1, [r1]
|
||||
cmp r0, r1
|
||||
bcc _0806FFF2
|
||||
movs r0, 0
|
||||
strh r0, [r4]
|
||||
_0806FFF2:
|
||||
ldr r0, _08070024 @ =sPrimaryTilesetCB
|
||||
ldr r1, [r0]
|
||||
cmp r1, 0
|
||||
beq _08070000
|
||||
ldrh r0, [r2]
|
||||
bl _call_via_r1
|
||||
_08070000:
|
||||
ldr r0, _08070028 @ =sSecondaryTilesetCB
|
||||
ldr r1, [r0]
|
||||
cmp r1, 0
|
||||
beq _0807000E
|
||||
ldrh r0, [r4]
|
||||
bl _call_via_r1
|
||||
_0807000E:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070014: .4byte sPrimaryTilesetCBCounter
|
||||
_08070018: .4byte sPrimaryTilesetCBBufferSize
|
||||
_0807001C: .4byte sSecondaryTilesetCBCounter
|
||||
_08070020: .4byte sSecondaryTilesetCBBufferSize
|
||||
_08070024: .4byte sPrimaryTilesetCB
|
||||
_08070028: .4byte sSecondaryTilesetCB
|
||||
thumb_func_end sub_806FFBC
|
||||
|
||||
thumb_func_start cur_mapheader_run_tileset1_func
|
||||
cur_mapheader_run_tileset1_func: @ 807002C
|
||||
push {lr}
|
||||
ldr r0, _08070058 @ =sPrimaryTilesetCBCounter
|
||||
movs r1, 0
|
||||
strh r1, [r0]
|
||||
ldr r0, _0807005C @ =sPrimaryTilesetCBBufferSize
|
||||
strh r1, [r0]
|
||||
ldr r1, _08070060 @ =sPrimaryTilesetCB
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
ldr r0, _08070064 @ =gMapHeader
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x10]
|
||||
cmp r0, 0
|
||||
beq _08070052
|
||||
ldr r0, [r0, 0x10]
|
||||
cmp r0, 0
|
||||
beq _08070052
|
||||
bl _call_via_r0
|
||||
_08070052:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070058: .4byte sPrimaryTilesetCBCounter
|
||||
_0807005C: .4byte sPrimaryTilesetCBBufferSize
|
||||
_08070060: .4byte sPrimaryTilesetCB
|
||||
_08070064: .4byte gMapHeader
|
||||
thumb_func_end cur_mapheader_run_tileset1_func
|
||||
|
||||
thumb_func_start cur_mapheader_run_tileset2_func
|
||||
cur_mapheader_run_tileset2_func: @ 8070068
|
||||
push {lr}
|
||||
ldr r0, _08070094 @ =sSecondaryTilesetCBCounter
|
||||
movs r1, 0
|
||||
strh r1, [r0]
|
||||
ldr r0, _08070098 @ =sSecondaryTilesetCBBufferSize
|
||||
strh r1, [r0]
|
||||
ldr r1, _0807009C @ =sSecondaryTilesetCB
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
ldr r0, _080700A0 @ =gMapHeader
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x14]
|
||||
cmp r0, 0
|
||||
beq _0807008E
|
||||
ldr r0, [r0, 0x10]
|
||||
cmp r0, 0
|
||||
beq _0807008E
|
||||
bl _call_via_r0
|
||||
_0807008E:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070094: .4byte sSecondaryTilesetCBCounter
|
||||
_08070098: .4byte sSecondaryTilesetCBBufferSize
|
||||
_0807009C: .4byte sSecondaryTilesetCB
|
||||
_080700A0: .4byte gMapHeader
|
||||
thumb_func_end cur_mapheader_run_tileset2_func
|
||||
|
||||
thumb_func_start sub_80700A4
|
||||
sub_80700A4: @ 80700A4
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r4, _080700C8 @ =gUnknown_83A7660
|
||||
movs r1, 0x5
|
||||
bl __umodsi3
|
||||
lsls r0, 16
|
||||
lsrs r0, 14
|
||||
adds r0, r4
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080700CC @ =0x06003f80
|
||||
movs r2, 0x80
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080700C8: .4byte gUnknown_83A7660
|
||||
_080700CC: .4byte 0x06003f80
|
||||
thumb_func_end sub_80700A4
|
||||
|
||||
thumb_func_start sub_80700D0
|
||||
sub_80700D0: @ 80700D0
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
ldr r2, _080700F0 @ =gUnknown_83AA654
|
||||
movs r1, 0xE0
|
||||
lsls r1, 11
|
||||
ands r1, r0
|
||||
lsrs r1, 14
|
||||
adds r1, r2
|
||||
ldr r0, [r1]
|
||||
ldr r1, _080700F4 @ =0x06003400
|
||||
movs r2, 0xC0
|
||||
lsls r2, 3
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080700F0: .4byte gUnknown_83AA654
|
||||
_080700F4: .4byte 0x06003400
|
||||
thumb_func_end sub_80700D0
|
||||
|
||||
thumb_func_start sub_80700F8
|
||||
sub_80700F8: @ 80700F8
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
ldr r2, _08070118 @ =gUnknown_83AB874
|
||||
movs r1, 0xE0
|
||||
lsls r1, 11
|
||||
ands r1, r0
|
||||
lsrs r1, 14
|
||||
adds r1, r2
|
||||
ldr r0, [r1]
|
||||
ldr r1, _0807011C @ =0x06003a00
|
||||
movs r2, 0x90
|
||||
lsls r2, 2
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070118: .4byte gUnknown_83AB874
|
||||
_0807011C: .4byte 0x06003a00
|
||||
thumb_func_end sub_80700F8
|
||||
|
||||
thumb_func_start sub_8070120
|
||||
sub_8070120: @ 8070120
|
||||
push {r4-r6,lr}
|
||||
lsls r5, r0, 16
|
||||
lsrs r6, r5, 16
|
||||
movs r0, 0x7
|
||||
ands r0, r6
|
||||
cmp r0, 0
|
||||
bne _08070134
|
||||
lsrs r0, r5, 19
|
||||
bl sub_80700F8
|
||||
_08070134:
|
||||
movs r4, 0xF
|
||||
ands r4, r6
|
||||
cmp r4, 0x1
|
||||
bne _08070142
|
||||
lsrs r0, r5, 20
|
||||
bl sub_80700D0
|
||||
_08070142:
|
||||
cmp r4, 0x2
|
||||
bne _0807014C
|
||||
lsrs r0, r5, 20
|
||||
bl sub_80700A4
|
||||
_0807014C:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8070120
|
||||
|
||||
thumb_func_start sub_8070154
|
||||
sub_8070154: @ 8070154
|
||||
ldr r1, _0807016C @ =sPrimaryTilesetCBCounter
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08070170 @ =sPrimaryTilesetCBBufferSize
|
||||
movs r2, 0xA0
|
||||
lsls r2, 2
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08070174 @ =sPrimaryTilesetCB
|
||||
ldr r0, _08070178 @ =sub_8070120
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0807016C: .4byte sPrimaryTilesetCBCounter
|
||||
_08070170: .4byte sPrimaryTilesetCBBufferSize
|
||||
_08070174: .4byte sPrimaryTilesetCB
|
||||
_08070178: .4byte sub_8070120
|
||||
thumb_func_end sub_8070154
|
||||
|
||||
thumb_func_start sub_807017C
|
||||
sub_807017C: @ 807017C
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r4, _080701A4 @ =gUnknown_83ABDB4
|
||||
movs r1, 0x5
|
||||
bl __umodsi3
|
||||
lsls r0, 16
|
||||
lsrs r0, 14
|
||||
adds r0, r4
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080701A8 @ =0x06005d00
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080701A4: .4byte gUnknown_83ABDB4
|
||||
_080701A8: .4byte 0x06005d00
|
||||
thumb_func_end sub_807017C
|
||||
|
||||
thumb_func_start sub_80701AC
|
||||
sub_80701AC: @ 80701AC
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xC
|
||||
bl __umodsi3
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bne _080701D0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xC
|
||||
bl __udivsi3
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
bl sub_807017C
|
||||
_080701D0:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80701AC
|
||||
|
||||
thumb_func_start sub_80701D8
|
||||
sub_80701D8: @ 80701D8
|
||||
ldr r1, _080701EC @ =sSecondaryTilesetCBCounter
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _080701F0 @ =sSecondaryTilesetCBBufferSize
|
||||
movs r0, 0x78
|
||||
strh r0, [r1]
|
||||
ldr r1, _080701F4 @ =sSecondaryTilesetCB
|
||||
ldr r0, _080701F8 @ =sub_80701AC
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080701EC: .4byte sSecondaryTilesetCBCounter
|
||||
_080701F0: .4byte sSecondaryTilesetCBBufferSize
|
||||
_080701F4: .4byte sSecondaryTilesetCB
|
||||
_080701F8: .4byte sub_80701AC
|
||||
thumb_func_end sub_80701D8
|
||||
|
||||
thumb_func_start sub_80701FC
|
||||
sub_80701FC: @ 80701FC
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
ldr r2, _0807021C @ =gUnknown_83AC1E8
|
||||
movs r1, 0xC0
|
||||
lsls r1, 10
|
||||
ands r1, r0
|
||||
lsrs r1, 14
|
||||
adds r1, r2
|
||||
ldr r0, [r1]
|
||||
ldr r1, _08070220 @ =0x06007a00
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0807021C: .4byte gUnknown_83AC1E8
|
||||
_08070220: .4byte 0x06007a00
|
||||
thumb_func_end sub_80701FC
|
||||
|
||||
thumb_func_start sub_8070224
|
||||
sub_8070224: @ 8070224
|
||||
push {r4,lr}
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xA
|
||||
bl __umodsi3
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bne _08070248
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xA
|
||||
bl __udivsi3
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
bl sub_80701FC
|
||||
_08070248:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8070224
|
||||
|
||||
thumb_func_start sub_8070250
|
||||
sub_8070250: @ 8070250
|
||||
ldr r1, _08070264 @ =sSecondaryTilesetCBCounter
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08070268 @ =sSecondaryTilesetCBBufferSize
|
||||
movs r0, 0xA0
|
||||
strh r0, [r1]
|
||||
ldr r1, _0807026C @ =sSecondaryTilesetCB
|
||||
ldr r0, _08070270 @ =sub_8070224
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08070264: .4byte sSecondaryTilesetCBCounter
|
||||
_08070268: .4byte sSecondaryTilesetCBBufferSize
|
||||
_0807026C: .4byte sSecondaryTilesetCB
|
||||
_08070270: .4byte sub_8070224
|
||||
thumb_func_end sub_8070250
|
||||
|
||||
thumb_func_start sub_8070274
|
||||
sub_8070274: @ 8070274
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
ldr r2, _08070294 @ =gUnknown_83AC5F8
|
||||
movs r1, 0xC0
|
||||
lsls r1, 10
|
||||
ands r1, r0
|
||||
lsrs r1, 14
|
||||
adds r1, r2
|
||||
ldr r0, [r1]
|
||||
ldr r1, _08070298 @ =0x06007000
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070294: .4byte gUnknown_83AC5F8
|
||||
_08070298: .4byte 0x06007000
|
||||
thumb_func_end sub_8070274
|
||||
|
||||
thumb_func_start sub_807029C
|
||||
sub_807029C: @ 807029C
|
||||
push {lr}
|
||||
lsls r1, r0, 16
|
||||
movs r0, 0xF0
|
||||
lsls r0, 12
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080702B0
|
||||
lsrs r0, r1, 20
|
||||
bl sub_8070274
|
||||
_080702B0:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_807029C
|
||||
|
||||
thumb_func_start sub_80702B4
|
||||
sub_80702B4: @ 80702B4
|
||||
ldr r1, _080702CC @ =sSecondaryTilesetCBCounter
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _080702D0 @ =sSecondaryTilesetCBBufferSize
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _080702D4 @ =sSecondaryTilesetCB
|
||||
ldr r0, _080702D8 @ =sub_807029C
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080702CC: .4byte sSecondaryTilesetCBCounter
|
||||
_080702D0: .4byte sSecondaryTilesetCBBufferSize
|
||||
_080702D4: .4byte sSecondaryTilesetCB
|
||||
_080702D8: .4byte sub_807029C
|
||||
thumb_func_end sub_80702B4
|
||||
|
||||
thumb_func_start sub_80702DC
|
||||
sub_80702DC: @ 80702DC
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0x1
|
||||
ands r0, r1
|
||||
ldr r1, _080702FC @ =gUnknown_83AC7C8
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r1, _08070300 @ =0x06006e00
|
||||
movs r2, 0xE0
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080702FC: .4byte gUnknown_83AC7C8
|
||||
_08070300: .4byte 0x06006e00
|
||||
thumb_func_end sub_80702DC
|
||||
|
||||
thumb_func_start sub_8070304
|
||||
sub_8070304: @ 8070304
|
||||
push {lr}
|
||||
lsls r2, r0, 16
|
||||
lsrs r0, r2, 16
|
||||
movs r1, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08070318
|
||||
lsrs r0, r2, 17
|
||||
bl sub_80702DC
|
||||
_08070318:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8070304
|
||||
|
||||
thumb_func_start sub_807031C
|
||||
sub_807031C: @ 807031C
|
||||
ldr r1, _08070330 @ =sSecondaryTilesetCBCounter
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08070334 @ =sSecondaryTilesetCBBufferSize
|
||||
movs r0, 0xF0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08070338 @ =sSecondaryTilesetCB
|
||||
ldr r0, _0807033C @ =sub_8070304
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08070330: .4byte sSecondaryTilesetCBCounter
|
||||
_08070334: .4byte sSecondaryTilesetCBBufferSize
|
||||
_08070338: .4byte sSecondaryTilesetCB
|
||||
_0807033C: .4byte sub_8070304
|
||||
thumb_func_end sub_807031C
|
||||
|
||||
thumb_func_start sub_8070340
|
||||
sub_8070340: @ 8070340
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
movs r1, 0xC0
|
||||
lsls r1, 10
|
||||
ands r1, r0
|
||||
ldr r0, _08070360 @ =gUnknown_83AC950
|
||||
lsrs r1, 14
|
||||
adds r1, r0
|
||||
ldr r0, [r1]
|
||||
ldr r1, _08070364 @ =0x06005c60
|
||||
movs r2, 0x80
|
||||
bl AppendTilesetAnimToBuffer
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070360: .4byte gUnknown_83AC950
|
||||
_08070364: .4byte 0x06005c60
|
||||
thumb_func_end sub_8070340
|
||||
|
||||
thumb_func_start sub_8070368
|
||||
sub_8070368: @ 8070368
|
||||
push {lr}
|
||||
lsls r1, r0, 16
|
||||
movs r0, 0xF0
|
||||
lsls r0, 12
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0807037C
|
||||
lsrs r0, r1, 20
|
||||
bl sub_8070340
|
||||
_0807037C:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8070368
|
||||
|
||||
thumb_func_start sub_8070380
|
||||
sub_8070380: @ 8070380
|
||||
ldr r1, _08070398 @ =sSecondaryTilesetCBCounter
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _0807039C @ =sSecondaryTilesetCBBufferSize
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
ldr r1, _080703A0 @ =sSecondaryTilesetCB
|
||||
ldr r0, _080703A4 @ =sub_8070368
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08070398: .4byte sSecondaryTilesetCBCounter
|
||||
_0807039C: .4byte sSecondaryTilesetCBBufferSize
|
||||
_080703A0: .4byte sSecondaryTilesetCB
|
||||
_080703A4: .4byte sub_8070368
|
||||
thumb_func_end sub_8070380
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
+7
-7
@@ -973,7 +973,7 @@ _080897EE:
|
||||
ldr r0, _08089890 @ =0x00000829
|
||||
bl FlagGet
|
||||
strb r0, [r5, 0x2]
|
||||
bl sub_8088F24
|
||||
bl HasAllHoennMons
|
||||
strb r0, [r5, 0x3]
|
||||
bl sub_808A0E0
|
||||
strh r0, [r5, 0xC]
|
||||
@@ -1062,7 +1062,7 @@ _080898BA:
|
||||
mov r0, r8
|
||||
strb r0, [r5, 0x1]
|
||||
_080898BE:
|
||||
bl sub_8088F58
|
||||
bl HasAllKantoMons
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
beq _080898CE
|
||||
@@ -1070,7 +1070,7 @@ _080898BE:
|
||||
adds r0, 0x1
|
||||
strb r0, [r5, 0x1]
|
||||
_080898CE:
|
||||
bl HasAllKantoMons
|
||||
bl HasAllMons
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
beq _080898DE
|
||||
@@ -1115,9 +1115,9 @@ _08089918:
|
||||
movs r0, 0x1
|
||||
strb r0, [r5, 0x1]
|
||||
_0808991C:
|
||||
bl sub_8088F58
|
||||
strb r0, [r5, 0x3]
|
||||
bl HasAllKantoMons
|
||||
strb r0, [r5, 0x3]
|
||||
bl HasAllMons
|
||||
adds r6, r5, 0
|
||||
adds r6, 0x4D
|
||||
strb r0, [r6]
|
||||
@@ -2043,11 +2043,11 @@ sub_808A0E0: @ 808A0E0
|
||||
cmp r0, 0
|
||||
bne _0808A0F2
|
||||
movs r0, 0x1
|
||||
bl sub_8088EDC
|
||||
bl GetKantoPokedexCount
|
||||
b _0808A0F8
|
||||
_0808A0F2:
|
||||
movs r0, 0x1
|
||||
bl pokedex_count
|
||||
bl GetNationalPokedexCount
|
||||
_0808A0F8:
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
|
||||
+2
-3
@@ -633,10 +633,9 @@ gUnknown_84445FA:: @ 84445FA
|
||||
.incbin "baserom.gba", 0x4445FA, 0x304
|
||||
|
||||
gUnknown_84448FE:: @ 84448FE
|
||||
.incbin "baserom.gba", 0x4448FE, 0x9F52
|
||||
.incbin "baserom.gba", 0x4448FE, 0x336
|
||||
|
||||
gUnknown_844E850:: @ 844E850
|
||||
.incbin "baserom.gba", 0x44E850, 0x366C
|
||||
.section .rodata.8451EBC
|
||||
|
||||
gUnknown_8451EBC:: @ 8451EBC
|
||||
.incbin "baserom.gba", 0x451EBC, 0x10
|
||||
|
||||
@@ -16,7 +16,7 @@ CeladonCity_Condominiums_3F_EventScript_16C3ED:: @ 816C3ED
|
||||
CeladonCity_Condominiums_3F_EventScript_16C3F6:: @ 816C3F6
|
||||
lock
|
||||
faceplayer
|
||||
specialvar VAR_RESULT, sub_8088F58
|
||||
specialvar VAR_RESULT, HasAllKantoMons
|
||||
compare_var_to_value VAR_RESULT, 1
|
||||
goto_if_eq EventScript_16C412
|
||||
msgbox gUnknown_8196356
|
||||
|
||||
+2
-2
@@ -344,7 +344,7 @@ gSpecials:: @ 815FD60
|
||||
def_special sub_807F0B0
|
||||
def_special nullsub_75
|
||||
def_special nullsub_75
|
||||
def_special sub_8088F58
|
||||
def_special HasAllKantoMons
|
||||
def_special sub_80CAD7C
|
||||
def_special nullsub_75
|
||||
def_special sub_80E759C
|
||||
@@ -441,7 +441,7 @@ gSpecials:: @ 815FD60
|
||||
def_special sub_8147594
|
||||
def_special sub_80CD034
|
||||
def_special sub_815D834
|
||||
def_special HasAllKantoMons
|
||||
def_special HasAllMons
|
||||
def_special sub_80CD074
|
||||
def_special sub_80CD098
|
||||
def_special sub_811B15C
|
||||
|
||||
+2
-2
@@ -104,14 +104,14 @@ void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
|
||||
void CopyBgTilemapBufferToVram(u8 bg);
|
||||
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
|
||||
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
|
||||
void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
|
||||
void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2);
|
||||
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
|
||||
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
|
||||
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);
|
||||
u16 GetBgMetricTextMode(u8 bg, u8 whichMetric);
|
||||
u32 GetBgMetricAffineMode(u8 bg, u8 whichMetric);
|
||||
u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32 screenHeight);
|
||||
void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2);
|
||||
void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2);
|
||||
u32 GetBgType(u8 bg);
|
||||
bool32 IsInvalidBg32(u8 bg);
|
||||
bool32 IsTileMapOutsideWram(u8 bg);
|
||||
|
||||
@@ -62,6 +62,9 @@
|
||||
#define TILE_SIZE_4BPP 32
|
||||
#define TILE_SIZE_8BPP 64
|
||||
|
||||
#define TILE_OFFSET_4BPP(n) ((n) * TILE_SIZE_4BPP)
|
||||
#define TILE_OFFSET_8BPP(n) ((n) * TILE_SIZE_8BPP)
|
||||
|
||||
#define TOTAL_OBJ_TILE_COUNT 1024
|
||||
|
||||
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
|
||||
|
||||
+31
-10
@@ -1,15 +1,15 @@
|
||||
#ifndef GUARD_POKEDEX_H
|
||||
#define GUARD_POKEDEX_H
|
||||
|
||||
#include "global.h"
|
||||
#define KANTO_DEX_COUNT 151
|
||||
#define HOENN_DEX_COUNT 202
|
||||
#define NATIONAL_DEX_COUNT 386
|
||||
|
||||
void ResetPokedex(void);
|
||||
void CopyMonCategoryText(u16 species, u8 *dst);
|
||||
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
|
||||
u16 GetNationalPokedexCount(u8);
|
||||
u16 GetKantoPokedexCount(u8);
|
||||
bool16 HasAllKantoMons(void);
|
||||
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
|
||||
enum
|
||||
{
|
||||
DEX_MODE_KANTO,
|
||||
DEX_MODE_NATIONAL
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -19,9 +19,30 @@ enum
|
||||
FLAG_SET_CAUGHT
|
||||
};
|
||||
|
||||
struct PokedexEntry
|
||||
{
|
||||
/*0x00*/ u8 categoryName[12];
|
||||
/*0x0C*/ u16 height; //in decimeters
|
||||
/*0x0E*/ u16 weight; //in hectograms
|
||||
/*0x10*/ const u8 *description;
|
||||
/*0x14*/ const u8 *unusedDescription;
|
||||
/*0x18*/ u16 unused;
|
||||
/*0x1A*/ u16 pokemonScale;
|
||||
/*0x1C*/ u16 pokemonOffset;
|
||||
/*0x1E*/ u16 trainerScale;
|
||||
/*0x20*/ u16 trainerOffset;
|
||||
}; /*size = 0x24*/
|
||||
|
||||
void ResetPokedex(void);
|
||||
void CopyMonCategoryText(u16 species, u8 *dst);
|
||||
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
|
||||
u16 GetNationalPokedexCount(u8);
|
||||
u16 GetKantoPokedexCount(u8);
|
||||
bool16 HasAllMons(void);
|
||||
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
|
||||
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
|
||||
u16 pokedex_count(u8);
|
||||
u16 GetNationalPokedexCount(u8);
|
||||
u16 sub_80C0844(u8);
|
||||
u16 sub_8088EDC(u8);
|
||||
u16 GetKantoPokedexCount(u8);
|
||||
|
||||
#endif // GUARD_POKEDEX_H
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_TILESET_ANIMS_H
|
||||
#define GUARD_TILESET_ANIMS_H
|
||||
|
||||
void InitTilesetAnimations(void);
|
||||
void InitSecondaryTilesetAnimation(void);
|
||||
void UpdateTilesetAnimations(void);
|
||||
void TransferTilesetAnimsBuffer(void);
|
||||
|
||||
#endif // GUARD_TILESET_ANIMS_H
|
||||
+6
-4
@@ -108,7 +108,7 @@ SECTIONS {
|
||||
src/coord_event_weather.o(.text);
|
||||
asm/field_tasks.o(.text);
|
||||
asm/start_menu.o(.text);
|
||||
asm/tileset_anims.o(.text);
|
||||
src/tileset_anims.o(.text);
|
||||
asm/palette.o(.text);
|
||||
src/sound.o(.text);
|
||||
asm/battle_anim.o(.text);
|
||||
@@ -129,7 +129,7 @@ SECTIONS {
|
||||
asm/field_effect.o(.text);
|
||||
src/scanline_effect.o(.text);
|
||||
asm/option_menu.o(.text);
|
||||
asm/pokedex.o(.text);
|
||||
src/pokedex.o(.text);
|
||||
asm/trainer_card.o(.text);
|
||||
asm/pokemon_storage_system.o(.text);
|
||||
asm/pokemon_icon.o(.text);
|
||||
@@ -433,13 +433,15 @@ SECTIONS {
|
||||
data/data_83FECCC.o(.rodata);
|
||||
src/battle_controller_safari.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata.83FEDE4);
|
||||
src/intro.o(.rodata);
|
||||
src/intro.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata.battle_anim_special);
|
||||
src/diploma.o(.rodata);
|
||||
data/strings.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata.841EE44);
|
||||
src/new_menu_helpers.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata.841F4B4);
|
||||
src/pokedex.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata.8451EBC);
|
||||
src/list_menu.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata.8452CF4);
|
||||
src/save_location.o(.rodata);
|
||||
@@ -558,7 +560,7 @@ SECTIONS {
|
||||
data/multiboot_pokemon_colosseum.o(.rodata);
|
||||
} =0
|
||||
|
||||
. = 0x08D00000;
|
||||
. = 0x08D00000;
|
||||
gfx_data :
|
||||
ALIGN(4)
|
||||
{
|
||||
|
||||
@@ -1380,10 +1380,9 @@ static bool8 BT_Phase2FullScreenWave_UpdateWave(struct Task *task)
|
||||
for (i = 0; i < 160; ++i, theta += frequency)
|
||||
{
|
||||
s16 var = theta >> 8;
|
||||
|
||||
#ifndef NONMATCHING
|
||||
asm("");
|
||||
#endif
|
||||
|
||||
++var;
|
||||
--var;
|
||||
gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->bg123VOfs + Sin(var, amplitude);
|
||||
}
|
||||
if (++task->tDelayForFade == 41)
|
||||
|
||||
@@ -1024,295 +1024,49 @@ void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u
|
||||
{
|
||||
CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0);
|
||||
}
|
||||
// Skipping for now, it probably uses structs passed by value
|
||||
/*
|
||||
void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
|
||||
|
||||
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 unused, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, s16 palette1, s16 tileOffset)
|
||||
{
|
||||
u16 attribute;
|
||||
u16 mode;
|
||||
u16 mode2;
|
||||
u16 screenWidth, screenHeight, screenSize;
|
||||
u16 var;
|
||||
const void *srcPtr;
|
||||
u16 i, j;
|
||||
|
||||
void* srcCopy;
|
||||
u16 destX16;
|
||||
u16 destY16;
|
||||
|
||||
if (IsInvalidBg32(bg) == FALSE && IsTileMapOutsideWram(bg) == FALSE)
|
||||
if (!IsInvalidBg32(bg) && !IsTileMapOutsideWram(bg))
|
||||
{
|
||||
attribute = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
mode = GetBgMetricTextMode(bg, 0x1) * 0x20;
|
||||
mode2 = GetBgMetricTextMode(bg, 0x2) * 0x20;
|
||||
screenSize = GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE);
|
||||
screenWidth = GetBgMetricTextMode(bg, 0x1) * 0x20;
|
||||
screenHeight = GetBgMetricTextMode(bg, 0x2) * 0x20;
|
||||
switch (GetBgType(bg))
|
||||
{
|
||||
case 0:
|
||||
srcCopy = src;
|
||||
for (destY16 = destY; destY16 < (destY + rectHeight); destY16++)
|
||||
case 0:
|
||||
srcPtr = src + ((srcY * srcWidth) + srcX) * 2;
|
||||
for (i = destX; i < (destX + rectWidth); i++)
|
||||
{
|
||||
for (j = srcHeight; j < (srcHeight + destY); j++)
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + rectWidth); destX16++)
|
||||
{
|
||||
CopyTileMapEntry(&((u16*)srcCopy)[(srcY * rectWidth) + srcX], &((u16*)sGpuBgConfigs2[bg].tilemap)[GetTileMapIndexFromCoords(destX16, destY16, attribute, mode, mode2)], palette1, tileOffset, palette2);
|
||||
}
|
||||
u16 index = GetTileMapIndexFromCoords(j, i, screenSize, screenWidth, screenHeight);
|
||||
CopyTileMapEntry(srcPtr, sGpuBgConfigs2[bg].tilemap + (index * 2), rectHeight, palette1, tileOffset);
|
||||
srcPtr += 2;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
srcCopy = src;
|
||||
mode = GetBgMetricAffineMode(bg, 0x1);
|
||||
for (destY16 = destY; destY16 < (destY + rectHeight); destY16++)
|
||||
srcPtr += (srcWidth - destY) * 2;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
srcPtr = src + ((srcY * srcWidth) + srcX);
|
||||
var = GetBgMetricAffineMode(bg, 0x1);
|
||||
for (i = destX; i < (destX + rectWidth); i++)
|
||||
{
|
||||
for (j = srcHeight; j < (srcHeight + destY); j++)
|
||||
{
|
||||
for (destX16 = destX; destX16 < (destX + rectWidth); destX16++)
|
||||
{
|
||||
CopyTileMapEntry(&((u16*)srcCopy)[(srcY * rectWidth) + srcX], &((u16*)sGpuBgConfigs2[bg].tilemap)[GetTileMapIndexFromCoords(destX16, destY16, attribute, mode, mode2)], palette1, tileOffset, palette2);
|
||||
}
|
||||
*(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + palette1;
|
||||
srcPtr++;
|
||||
}
|
||||
break;
|
||||
srcPtr += (srcWidth - destY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
NAKED
|
||||
void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
|
||||
{
|
||||
asm("push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, #0x40\n\
|
||||
str r1, [sp, #0x8]\n\
|
||||
ldr r1, [sp, #0x60]\n\
|
||||
ldr r4, [sp, #0x68]\n\
|
||||
ldr r5, [sp, #0x6C]\n\
|
||||
ldr r6, [sp, #0x70]\n\
|
||||
ldr r7, [sp, #0x74]\n\
|
||||
mov r8, r7\n\
|
||||
ldr r7, [sp, #0x78]\n\
|
||||
mov r9, r7\n\
|
||||
ldr r7, [sp, #0x7C]\n\
|
||||
mov r10, r7\n\
|
||||
ldr r7, [sp, #0x80]\n\
|
||||
mov r12, r7\n\
|
||||
lsl r0, #24\n\
|
||||
lsr r0, #24\n\
|
||||
str r0, [sp, #0x4]\n\
|
||||
lsl r2, #24\n\
|
||||
lsr r2, #24\n\
|
||||
str r2, [sp, #0xC]\n\
|
||||
lsl r3, #24\n\
|
||||
lsr r3, #24\n\
|
||||
str r3, [sp, #0x10]\n\
|
||||
lsl r1, #24\n\
|
||||
lsr r7, r1, #24\n\
|
||||
lsl r4, #24\n\
|
||||
lsr r4, #24\n\
|
||||
str r4, [sp, #0x14]\n\
|
||||
lsl r5, #24\n\
|
||||
lsr r5, #24\n\
|
||||
lsl r6, #24\n\
|
||||
lsr r6, #24\n\
|
||||
str r6, [sp, #0x18]\n\
|
||||
mov r0, r8\n\
|
||||
lsl r0, #24\n\
|
||||
lsr r4, r0, #24\n\
|
||||
mov r1, r9\n\
|
||||
lsl r1, #24\n\
|
||||
lsr r1, #24\n\
|
||||
str r1, [sp, #0x1C]\n\
|
||||
mov r2, r10\n\
|
||||
lsl r2, #16\n\
|
||||
lsr r2, #16\n\
|
||||
str r2, [sp, #0x20]\n\
|
||||
mov r0, r12\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r0, #16\n\
|
||||
str r0, [sp, #0x24]\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
bl IsInvalidBg32\n\
|
||||
cmp r0, #0\n\
|
||||
beq _08002592\n\
|
||||
b _080026EE\n\
|
||||
_08002592:\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
bl IsTileMapOutsideWram\n\
|
||||
cmp r0, #0\n\
|
||||
beq _0800259E\n\
|
||||
b _080026EE\n\
|
||||
_0800259E:\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
mov r1, #0x4\n\
|
||||
bl GetBgControlAttribute\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r0, #16\n\
|
||||
str r0, [sp, #0x30]\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
mov r1, #0x1\n\
|
||||
bl GetBgMetricTextMode\n\
|
||||
lsl r0, #21\n\
|
||||
lsr r0, #16\n\
|
||||
str r0, [sp, #0x28]\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
mov r1, #0x2\n\
|
||||
bl GetBgMetricTextMode\n\
|
||||
lsl r0, #21\n\
|
||||
lsr r0, #16\n\
|
||||
str r0, [sp, #0x2C]\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
bl GetBgType\n\
|
||||
cmp r0, #0\n\
|
||||
beq _080025D8\n\
|
||||
cmp r0, #0x1\n\
|
||||
beq _08002674\n\
|
||||
b _080026EE\n\
|
||||
_080025D8:\n\
|
||||
ldr r1, [sp, #0x10]\n\
|
||||
add r0, r1, #0\n\
|
||||
mul r0, r7\n\
|
||||
ldr r2, [sp, #0xC]\n\
|
||||
add r0, r2\n\
|
||||
lsl r0, #1\n\
|
||||
ldr r1, [sp, #0x8]\n\
|
||||
add r6, r1, r0\n\
|
||||
add r0, r5, r4\n\
|
||||
cmp r5, r0\n\
|
||||
blt _080025F0\n\
|
||||
b _080026EE\n\
|
||||
_080025F0:\n\
|
||||
ldr r2, [sp, #0x18]\n\
|
||||
sub r2, r7, r2\n\
|
||||
str r2, [sp, #0x34]\n\
|
||||
str r0, [sp, #0x38]\n\
|
||||
_080025F8:\n\
|
||||
ldr r4, [sp, #0x14]\n\
|
||||
ldr r7, [sp, #0x18]\n\
|
||||
add r0, r4, r7\n\
|
||||
add r1, r5, #0x1\n\
|
||||
str r1, [sp, #0x3C]\n\
|
||||
cmp r4, r0\n\
|
||||
bge _0800265A\n\
|
||||
ldr r2, [sp, #0x4]\n\
|
||||
lsl r0, r2, #4\n\
|
||||
ldr r1, =sGpuBgConfigs2+4\n\
|
||||
add r0, r1\n\
|
||||
mov r10, r0\n\
|
||||
ldr r7, [sp, #0x20]\n\
|
||||
lsl r7, #16\n\
|
||||
mov r9, r7\n\
|
||||
ldr r1, [sp, #0x24]\n\
|
||||
lsl r0, r1, #16\n\
|
||||
asr r0, #16\n\
|
||||
mov r8, r0\n\
|
||||
_0800261E:\n\
|
||||
ldr r2, [sp, #0x2C]\n\
|
||||
str r2, [sp]\n\
|
||||
add r0, r4, #0\n\
|
||||
add r1, r5, #0\n\
|
||||
ldr r2, [sp, #0x30]\n\
|
||||
ldr r3, [sp, #0x28]\n\
|
||||
bl GetTileMapIndexFromCoords\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r0, #15\n\
|
||||
mov r7, r10\n\
|
||||
ldr r1, [r7]\n\
|
||||
add r1, r0\n\
|
||||
mov r0, r8\n\
|
||||
str r0, [sp]\n\
|
||||
add r0, r6, #0\n\
|
||||
ldr r2, [sp, #0x1C]\n\
|
||||
mov r7, r9\n\
|
||||
asr r3, r7, #16\n\
|
||||
bl CopyTileMapEntry\n\
|
||||
add r6, #0x2\n\
|
||||
add r0, r4, #0x1\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r4, r0, #16\n\
|
||||
ldr r1, [sp, #0x14]\n\
|
||||
ldr r2, [sp, #0x18]\n\
|
||||
add r0, r1, r2\n\
|
||||
cmp r4, r0\n\
|
||||
blt _0800261E\n\
|
||||
_0800265A:\n\
|
||||
ldr r5, [sp, #0x34]\n\
|
||||
lsl r0, r5, #1\n\
|
||||
add r6, r0\n\
|
||||
ldr r7, [sp, #0x3C]\n\
|
||||
lsl r0, r7, #16\n\
|
||||
lsr r5, r0, #16\n\
|
||||
ldr r0, [sp, #0x38]\n\
|
||||
cmp r5, r0\n\
|
||||
blt _080025F8\n\
|
||||
b _080026EE\n\
|
||||
.pool\n\
|
||||
_08002674:\n\
|
||||
ldr r1, [sp, #0x10]\n\
|
||||
add r0, r1, #0\n\
|
||||
mul r0, r7\n\
|
||||
ldr r2, [sp, #0xC]\n\
|
||||
add r0, r2\n\
|
||||
ldr r1, [sp, #0x8]\n\
|
||||
add r6, r1, r0\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
mov r1, #0x1\n\
|
||||
bl GetBgMetricAffineMode\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r0, #16\n\
|
||||
mov r9, r0\n\
|
||||
add r0, r5, r4\n\
|
||||
cmp r5, r0\n\
|
||||
bge _080026EE\n\
|
||||
ldr r2, [sp, #0x18]\n\
|
||||
sub r2, r7, r2\n\
|
||||
str r2, [sp, #0x34]\n\
|
||||
str r0, [sp, #0x38]\n\
|
||||
ldr r7, =sGpuBgConfigs2+4\n\
|
||||
mov r10, r7\n\
|
||||
ldr r0, [sp, #0x4]\n\
|
||||
lsl r0, #4\n\
|
||||
mov r8, r0\n\
|
||||
_080026A8:\n\
|
||||
ldr r4, [sp, #0x14]\n\
|
||||
ldr r1, [sp, #0x18]\n\
|
||||
add r0, r4, r1\n\
|
||||
add r2, r5, #0x1\n\
|
||||
str r2, [sp, #0x3C]\n\
|
||||
cmp r4, r0\n\
|
||||
bge _080026DE\n\
|
||||
mov r3, r8\n\
|
||||
add r3, r10\n\
|
||||
mov r7, r9\n\
|
||||
mul r7, r5\n\
|
||||
mov r12, r7\n\
|
||||
add r2, r0, #0\n\
|
||||
_080026C2:\n\
|
||||
ldr r1, [r3]\n\
|
||||
mov r5, r12\n\
|
||||
add r0, r5, r4\n\
|
||||
add r1, r0\n\
|
||||
ldrb r0, [r6]\n\
|
||||
ldr r7, [sp, #0x20]\n\
|
||||
add r0, r7\n\
|
||||
strb r0, [r1]\n\
|
||||
add r6, #0x1\n\
|
||||
add r0, r4, #0x1\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r4, r0, #16\n\
|
||||
cmp r4, r2\n\
|
||||
blt _080026C2\n\
|
||||
_080026DE:\n\
|
||||
ldr r0, [sp, #0x34]\n\
|
||||
add r6, r0\n\
|
||||
ldr r1, [sp, #0x3C]\n\
|
||||
lsl r0, r1, #16\n\
|
||||
lsr r5, r0, #16\n\
|
||||
ldr r2, [sp, #0x38]\n\
|
||||
cmp r5, r2\n\
|
||||
blt _080026A8\n\
|
||||
_080026EE:\n\
|
||||
add sp, #0x40\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n");
|
||||
}
|
||||
|
||||
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height)
|
||||
@@ -1494,78 +1248,29 @@ u32 GetTileMapIndexFromCoords(s32 x, s32 y, s32 screenSize, u32 screenWidth, u32
|
||||
return (y * 0x20) + x;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING // This one has some weird switch statement cases that refuse to cooperate
|
||||
void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2)
|
||||
void CopyTileMapEntry(const u16 *src, u16 *dest, s32 palette1, s32 tileOffset, s32 palette2)
|
||||
{
|
||||
u16 test;
|
||||
u16 var;
|
||||
|
||||
if (palette1 == 16)
|
||||
goto CASE_16;
|
||||
switch (palette1)
|
||||
{
|
||||
default:
|
||||
if (palette1 > 0x10 || palette1 < 0)
|
||||
test = *src + tileOffset + (palette2 << 12);
|
||||
else
|
||||
test = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
|
||||
break;
|
||||
case 0x10:
|
||||
test = ((*dest & 0xFC00) + (palette2 << 12)) | ((*src + tileOffset) & 0x3FF);
|
||||
break;
|
||||
case 0 ... 16:
|
||||
var = ((*src + tileOffset) & 0xFFF) + ((palette1 + palette2) << 12);
|
||||
break;
|
||||
CASE_16:
|
||||
var = *dest;
|
||||
var &= 0xFC00;
|
||||
var += palette2 << 12;
|
||||
var |= (*src + tileOffset) & 0x3FF;
|
||||
break;
|
||||
default:
|
||||
var = *src + tileOffset + (palette2 << 12);
|
||||
break;
|
||||
}
|
||||
|
||||
*dest = test;
|
||||
*dest = var;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2)
|
||||
{
|
||||
asm("push {r4-r6,lr}\n\
|
||||
add r4, r0, #0\n\
|
||||
add r6, r1, #0\n\
|
||||
ldr r5, [sp, #0x10]\n\
|
||||
cmp r2, #0x10\n\
|
||||
beq _08002B14\n\
|
||||
cmp r2, #0x10\n\
|
||||
bgt _08002B34\n\
|
||||
cmp r2, #0\n\
|
||||
blt _08002B34\n\
|
||||
ldrh r0, [r4]\n\
|
||||
add r0, r3\n\
|
||||
ldr r3, =0x00000fff\n\
|
||||
add r1, r3, #0\n\
|
||||
and r0, r1\n\
|
||||
add r1, r2, r5\n\
|
||||
lsl r1, #12\n\
|
||||
b _08002B3A\n\
|
||||
.pool\n\
|
||||
_08002B14:\n\
|
||||
ldrh r1, [r6]\n\
|
||||
mov r0, #0xFC\n\
|
||||
lsl r0, #8\n\
|
||||
and r1, r0\n\
|
||||
lsl r2, r5, #12\n\
|
||||
add r2, r1, r2\n\
|
||||
ldrh r0, [r4]\n\
|
||||
add r0, r3\n\
|
||||
ldr r3, =0x000003ff\n\
|
||||
add r1, r3, #0\n\
|
||||
and r0, r1\n\
|
||||
orr r0, r2\n\
|
||||
b _08002B3C\n\
|
||||
.pool\n\
|
||||
_08002B34:\n\
|
||||
ldrh r0, [r4]\n\
|
||||
add r0, r3\n\
|
||||
lsl r1, r5, #12\n\
|
||||
_08002B3A:\n\
|
||||
add r0, r1\n\
|
||||
_08002B3C:\n\
|
||||
lsl r0, #16\n\
|
||||
lsr r1, r0, #16\n\
|
||||
strh r1, [r6]\n\
|
||||
pop {r4-r6}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
u32 GetBgType(u8 bg)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -132,7 +132,7 @@ static void Task_DiplomaInit(u8 taskId)
|
||||
CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0);
|
||||
break;
|
||||
case 4:
|
||||
if (HasAllKantoMons())
|
||||
if (HasAllMons())
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0x100);
|
||||
}
|
||||
@@ -265,7 +265,7 @@ static void DiplomaPrintText(void)
|
||||
u32 width;
|
||||
DynamicPlaceholderTextUtil_Reset();
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
|
||||
if (HasAllKantoMons())
|
||||
if (HasAllMons())
|
||||
{
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F);
|
||||
}
|
||||
|
||||
@@ -1247,7 +1247,7 @@ static bool8 sub_812B780(u8 id)
|
||||
return FlagGet(FLAG_0x828);
|
||||
case 4:
|
||||
case 34:
|
||||
if (sub_8088EDC(1) > 1)
|
||||
if (GetKantoPokedexCount(1) > 1)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
case 15:
|
||||
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
#include "global.h"
|
||||
#include "pokedex.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk);
|
||||
|
||||
ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
|
||||
|
||||
#include "data/pokemon/pokedex_text.h"
|
||||
#include "data/pokemon/pokedex_entries.h"
|
||||
|
||||
const u8 *sub_8088E20(u16 dexNum)
|
||||
{
|
||||
return gPokedexEntries[dexNum].categoryName;
|
||||
}
|
||||
|
||||
u16 GetPokedexHeightWeight(u16 dexNum, u8 data)
|
||||
{
|
||||
switch (data)
|
||||
{
|
||||
case 0: // height
|
||||
return gPokedexEntries[dexNum].height;
|
||||
case 1: // weight
|
||||
return gPokedexEntries[dexNum].weight;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID)
|
||||
{
|
||||
return sub_8104AB0(nationalDexNo, caseID, 0);
|
||||
}
|
||||
|
||||
u16 GetNationalPokedexCount(u8 caseID)
|
||||
{
|
||||
u16 count = 0;
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
switch (caseID)
|
||||
{
|
||||
case FLAG_GET_SEEN:
|
||||
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
|
||||
count++;
|
||||
break;
|
||||
case FLAG_GET_CAUGHT:
|
||||
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
u16 GetKantoPokedexCount(u8 caseID)
|
||||
{
|
||||
u16 count = 0;
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < KANTO_DEX_COUNT; i++)
|
||||
{
|
||||
switch (caseID)
|
||||
{
|
||||
case FLAG_GET_SEEN:
|
||||
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
|
||||
count++;
|
||||
break;
|
||||
case FLAG_GET_CAUGHT:
|
||||
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
bool16 HasAllHoennMons(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < HOENN_DEX_COUNT - 2; i++)
|
||||
{
|
||||
if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 HasAllKantoMons(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < KANTO_DEX_COUNT - 1; i++)
|
||||
{
|
||||
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool16 HasAllMons(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < NATIONAL_DEX_MEWTWO; i++)
|
||||
{
|
||||
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
|
||||
return FALSE;
|
||||
}
|
||||
for (i = NATIONAL_DEX_MEW; i < NATIONAL_DEX_TYRANITAR; i++)
|
||||
{
|
||||
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
|
||||
return FALSE;
|
||||
}
|
||||
for (i = NATIONAL_DEX_CELEBI; i < NATIONAL_DEX_RAYQUAZA; i++)
|
||||
{
|
||||
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
+4
-4
@@ -25,13 +25,13 @@ u16 Special_GetPokedexCount(void)
|
||||
{
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
{
|
||||
gSpecialVar_0x8005 = sub_8088EDC(0);
|
||||
gSpecialVar_0x8006 = sub_8088EDC(1);
|
||||
gSpecialVar_0x8005 = GetKantoPokedexCount(0);
|
||||
gSpecialVar_0x8006 = GetKantoPokedexCount(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_0x8005 = pokedex_count(0);
|
||||
gSpecialVar_0x8006 = pokedex_count(1);
|
||||
gSpecialVar_0x8005 = GetNationalPokedexCount(0);
|
||||
gSpecialVar_0x8006 = GetNationalPokedexCount(1);
|
||||
}
|
||||
return sub_806E25C();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
#include "global.h"
|
||||
#include "graphics.h"
|
||||
#include "palette.h"
|
||||
#include "util.h"
|
||||
#include "battle_transition.h"
|
||||
#include "task.h"
|
||||
#include "fieldmap.h"
|
||||
|
||||
static EWRAM_DATA struct {
|
||||
const u16 *src;
|
||||
u16 *dest;
|
||||
u16 size;
|
||||
} sTilesetDMA3TransferBuffer[20] = {0};
|
||||
|
||||
static u8 sTilesetDMA3TransferBufferSize;
|
||||
static u16 sPrimaryTilesetAnimCounter;
|
||||
static u16 sPrimaryTilesetAnimCounterMax;
|
||||
static u16 sSecondaryTilesetAnimCounter;
|
||||
static u16 sSecondaryTilesetAnimCounterMax;
|
||||
static void (*sPrimaryTilesetAnimCallback)(u16);
|
||||
static void (*sSecondaryTilesetAnimCallback)(u16);
|
||||
|
||||
static void _InitPrimaryTilesetAnimation(void);
|
||||
static void _InitSecondaryTilesetAnimation(void);
|
||||
|
||||
extern const u16 *const gUnknown_83A7660[];
|
||||
extern const u16 *const gUnknown_83AA654[];
|
||||
extern const u16 *const gUnknown_83AB874[];
|
||||
extern const u16 *const gUnknown_83ABDB4[];
|
||||
extern const u16 *const gUnknown_83AC1E8[];
|
||||
extern const u16 *const gUnknown_83AC5F8[];
|
||||
extern const u16 *const gUnknown_83AC7C8[];
|
||||
extern const u16 *const gUnknown_83AC950[];
|
||||
|
||||
static void ResetTilesetAnimBuffer(void)
|
||||
{
|
||||
sTilesetDMA3TransferBufferSize = 0;
|
||||
CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer);
|
||||
}
|
||||
|
||||
static void AppendTilesetAnimToBuffer(const u16 *src, u16 *dest, u16 size)
|
||||
{
|
||||
if (sTilesetDMA3TransferBufferSize < 20)
|
||||
{
|
||||
sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = src;
|
||||
sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = dest;
|
||||
sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = size;
|
||||
sTilesetDMA3TransferBufferSize++;
|
||||
}
|
||||
}
|
||||
|
||||
void TransferTilesetAnimsBuffer(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < sTilesetDMA3TransferBufferSize; i++)
|
||||
DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size);
|
||||
|
||||
sTilesetDMA3TransferBufferSize = 0;
|
||||
}
|
||||
|
||||
void InitTilesetAnimations(void)
|
||||
{
|
||||
ResetTilesetAnimBuffer();
|
||||
_InitPrimaryTilesetAnimation();
|
||||
_InitSecondaryTilesetAnimation();
|
||||
}
|
||||
|
||||
void InitSecondaryTilesetAnimation(void)
|
||||
{
|
||||
_InitSecondaryTilesetAnimation();
|
||||
}
|
||||
|
||||
void UpdateTilesetAnimations(void)
|
||||
{
|
||||
ResetTilesetAnimBuffer();
|
||||
if (++sPrimaryTilesetAnimCounter >= sPrimaryTilesetAnimCounterMax)
|
||||
sPrimaryTilesetAnimCounter = 0;
|
||||
if (++sSecondaryTilesetAnimCounter >= sSecondaryTilesetAnimCounterMax)
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
|
||||
if (sPrimaryTilesetAnimCallback)
|
||||
sPrimaryTilesetAnimCallback(sPrimaryTilesetAnimCounter);
|
||||
if (sSecondaryTilesetAnimCallback)
|
||||
sSecondaryTilesetAnimCallback(sSecondaryTilesetAnimCounter);
|
||||
}
|
||||
|
||||
static void _InitPrimaryTilesetAnimation(void)
|
||||
{
|
||||
sPrimaryTilesetAnimCounter = 0;
|
||||
sPrimaryTilesetAnimCounterMax = 0;
|
||||
sPrimaryTilesetAnimCallback = NULL;
|
||||
if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback)
|
||||
gMapHeader.mapData->primaryTileset->callback();
|
||||
}
|
||||
|
||||
static void _InitSecondaryTilesetAnimation(void)
|
||||
{
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
sSecondaryTilesetAnimCounterMax = 0;
|
||||
sSecondaryTilesetAnimCallback = NULL;
|
||||
if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback)
|
||||
gMapHeader.mapData->secondaryTileset->callback();
|
||||
}
|
||||
|
||||
static void sub_80700A4(u16 timer)
|
||||
{
|
||||
const u16 *const *ptr = gUnknown_83A7660;
|
||||
u16 i = timer % 5;
|
||||
|
||||
AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(508)), 0x80);
|
||||
}
|
||||
|
||||
static void sub_80700D0(u16 timer)
|
||||
{
|
||||
const u16 *const *ptr = gUnknown_83AA654;
|
||||
u16 i = timer % 8;
|
||||
|
||||
AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(416)), 0x600);
|
||||
}
|
||||
|
||||
static void sub_80700F8(u16 timer)
|
||||
{
|
||||
const u16 *const *ptr = gUnknown_83AB874;
|
||||
u16 i = timer % 8;
|
||||
|
||||
AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(464)), 0x240);
|
||||
}
|
||||
|
||||
static void sub_8070120(u16 timer)
|
||||
{
|
||||
if (timer % 8 == 0)
|
||||
sub_80700F8(timer >> 3);
|
||||
if (timer % 16 == 1)
|
||||
sub_80700D0(timer >> 4);
|
||||
if (timer % 16 == 2)
|
||||
sub_80700A4(timer >> 4);
|
||||
}
|
||||
|
||||
void sub_8070154(void)
|
||||
{
|
||||
sPrimaryTilesetAnimCounter = 0;
|
||||
sPrimaryTilesetAnimCounterMax = 640;
|
||||
sPrimaryTilesetAnimCallback = sub_8070120;
|
||||
}
|
||||
|
||||
static void sub_807017C(u16 timer)
|
||||
{
|
||||
const u16 *const *ptr = gUnknown_83ABDB4;
|
||||
u16 i = timer % 5;
|
||||
|
||||
AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(744)), 0x100);
|
||||
}
|
||||
|
||||
static void sub_80701AC(u16 timer)
|
||||
{
|
||||
if (timer % 12 == 0)
|
||||
sub_807017C(timer / 12);
|
||||
}
|
||||
|
||||
void sub_80701D8(void)
|
||||
{
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
sSecondaryTilesetAnimCounterMax = 120;
|
||||
sSecondaryTilesetAnimCallback = sub_80701AC;
|
||||
}
|
||||
|
||||
static void sub_80701FC(u16 timer)
|
||||
{
|
||||
const u16 *const *ptr = gUnknown_83AC1E8;
|
||||
u16 i = timer % 4;
|
||||
|
||||
AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(976)), 0x100);
|
||||
}
|
||||
|
||||
static void sub_8070224(u16 timer)
|
||||
{
|
||||
if (timer % 10 == 0)
|
||||
sub_80701FC(timer / 10);
|
||||
}
|
||||
|
||||
void sub_8070250(void)
|
||||
{
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
sSecondaryTilesetAnimCounterMax = 160;
|
||||
sSecondaryTilesetAnimCallback = sub_8070224;
|
||||
}
|
||||
|
||||
static void sub_8070274(u16 timer)
|
||||
{
|
||||
const u16 *const *ptr = gUnknown_83AC5F8;
|
||||
u16 i = timer % 4;
|
||||
|
||||
AppendTilesetAnimToBuffer(ptr[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(896)), 0x100);
|
||||
}
|
||||
|
||||
static void sub_807029C(u16 timer)
|
||||
{
|
||||
if (timer % 16 == 0)
|
||||
sub_8070274(timer >> 4);
|
||||
}
|
||||
|
||||
void sub_80702B4(void)
|
||||
{
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
sSecondaryTilesetAnimCounterMax = 256;
|
||||
sSecondaryTilesetAnimCallback = sub_807029C;
|
||||
}
|
||||
|
||||
static void sub_80702DC(u16 timer)
|
||||
{
|
||||
u16 i = timer % 2;
|
||||
|
||||
AppendTilesetAnimToBuffer(gUnknown_83AC7C8[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(880)), 0xE0);
|
||||
}
|
||||
|
||||
static void sub_8070304(u16 timer)
|
||||
{
|
||||
if (timer % 2 == 0)
|
||||
sub_80702DC(timer >> 1);
|
||||
}
|
||||
|
||||
void sub_807031C(void)
|
||||
{
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
sSecondaryTilesetAnimCounterMax = 240;
|
||||
sSecondaryTilesetAnimCallback = sub_8070304;
|
||||
}
|
||||
|
||||
static void sub_8070340(u16 timer)
|
||||
{
|
||||
u16 i = timer % 4;
|
||||
|
||||
AppendTilesetAnimToBuffer(gUnknown_83AC950[i], (u16 *)(BG_VRAM + TILE_OFFSET_4BPP(739)), 0x80);
|
||||
}
|
||||
|
||||
static void sub_8070368(u16 timer)
|
||||
{
|
||||
if (timer % 16 == 0)
|
||||
sub_8070340(timer >> 4);
|
||||
}
|
||||
|
||||
void sub_8070380(void)
|
||||
{
|
||||
sSecondaryTilesetAnimCounter = 0;
|
||||
sSecondaryTilesetAnimCounterMax = 256;
|
||||
sSecondaryTilesetAnimCallback = sub_8070368;
|
||||
}
|
||||
+10
-246
@@ -151,7 +151,6 @@ void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s
|
||||
BgAffineSet(&src, dest, 1);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
|
||||
{
|
||||
u8 x, y;
|
||||
@@ -166,7 +165,7 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
|
||||
|
||||
for (x = 0; x < w; x++)
|
||||
{
|
||||
int tile = (*tilemap & 0x3ff) * 32;
|
||||
u16 tile = (*tilemap & 0x3ff) * 32;
|
||||
int attr = *tilemap & 0xc00;
|
||||
|
||||
if (attr == 0)
|
||||
@@ -177,7 +176,11 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
|
||||
{
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
DmaCopy32Defvars(3, (7 - i) * 4 + tile + tiles, output + i * 4, 4);
|
||||
u8 requiredForMatching = 0;
|
||||
|
||||
++requiredForMatching;
|
||||
--requiredForMatching;
|
||||
DmaCopy32Defvars(3, tile + (7 - i) * 4 + tiles, output + i * 4, 4);
|
||||
}
|
||||
}
|
||||
else // xflip
|
||||
@@ -187,14 +190,16 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
u8 i2 = i * 4;
|
||||
xflip[i2 + (3-j)] = (tiles[tile + i2 + j] & 0xf) << 4;
|
||||
xflip[i2 + (3-j)] |= tiles[tile + i2 + j] >> 4;
|
||||
xflip[i2 + (3 - j)] = (tiles[tile + i2 + j] & 0xf) << 4;
|
||||
xflip[i2 + (3 - j)] |= tiles[tile + i2 + j] >> 4;
|
||||
}
|
||||
}
|
||||
if (*tilemap & 0x800) // yflip
|
||||
{
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
++tile;
|
||||
--tile;
|
||||
DmaCopy32Defvars(3, (7 - i) * 4 + xflip, output + i * 4, 4);
|
||||
}
|
||||
}
|
||||
@@ -209,247 +214,6 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
|
||||
tilemap += filler;
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r6, r9\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tpush {r5-r7}\n"
|
||||
"\tsub sp, 0x3C\n"
|
||||
"\tstr r2, [sp, 0x20]\n"
|
||||
"\tadds r4, r3, 0\n"
|
||||
"\tldr r7, [sp, 0x5C]\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tldr r2, _0804504C @ =sSpriteDimensions\n"
|
||||
"\tlsrs r1, 23\n"
|
||||
"\tlsrs r0, 21\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tadds r0, r2, 0x1\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tstr r0, [sp, 0x24]\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tstr r1, [sp, 0x28]\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tcmp r1, r0\n"
|
||||
"\tbcc _08044FF8\n"
|
||||
"\tb _0804517A\n"
|
||||
"_08044FF8:\n"
|
||||
"\tmovs r0, 0x20\n"
|
||||
"\tldr r2, [sp, 0x28]\n"
|
||||
"\tsubs r0, r2\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tstr r0, [sp, 0x2C]\n"
|
||||
"_08045002:\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tstr r1, [sp, 0x34]\n"
|
||||
"\tldr r3, [sp, 0x28]\n"
|
||||
"\tcmp r2, r3\n"
|
||||
"\tbcc _08045010\n"
|
||||
"\tb _08045168\n"
|
||||
"_08045010:\n"
|
||||
"\tldr r0, _08045050 @ =0x040000d4\n"
|
||||
"\tmov r8, r0\n"
|
||||
"_08045014:\n"
|
||||
"\tldrh r1, [r4]\n"
|
||||
"\tldr r0, _08045054 @ =0x000003ff\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tlsls r0, 5\n"
|
||||
"\tmov r12, r0\n"
|
||||
"\tmovs r0, 0xC0\n"
|
||||
"\tlsls r0, 4\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tmov r3, sp\n"
|
||||
"\tstrh r1, [r3, 0x38]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _0804505C\n"
|
||||
"\tldr r0, [sp, 0x20]\n"
|
||||
"\tadd r0, r12\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tstr r7, [r1, 0x4]\n"
|
||||
"\tldr r3, _08045058 @ =0x84000008\n"
|
||||
"\tstr r3, [r1, 0x8]\n"
|
||||
"\tldr r0, [r1, 0x8]\n"
|
||||
"\tadds r4, 0x2\n"
|
||||
"\tstr r4, [sp, 0x30]\n"
|
||||
"\tadds r7, 0x20\n"
|
||||
"\tmov r10, r7\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tmov r9, r2\n"
|
||||
"\tb _08045156\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0804504C: .4byte sSpriteDimensions\n"
|
||||
"_08045050: .4byte 0x040000d4\n"
|
||||
"_08045054: .4byte 0x000003ff\n"
|
||||
"_08045058: .4byte 0x84000008\n"
|
||||
"_0804505C:\n"
|
||||
"\tmovs r1, 0x80\n"
|
||||
"\tlsls r1, 4\n"
|
||||
"\tcmp r0, r1\n"
|
||||
"\tbne _080450AC\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tadds r4, 0x2\n"
|
||||
"\tstr r4, [sp, 0x30]\n"
|
||||
"\tmovs r0, 0x20\n"
|
||||
"\tadds r0, r7\n"
|
||||
"\tmov r10, r0\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tmov r9, r2\n"
|
||||
"\tldr r4, _080450A4 @ =0x040000d4\n"
|
||||
"\tldr r6, _080450A8 @ =0x84000001\n"
|
||||
"\tmovs r5, 0x7\n"
|
||||
"_0804507A:\n"
|
||||
"\tlsls r2, r3, 24\n"
|
||||
"\tasrs r2, 24\n"
|
||||
"\tsubs r0, r5, r2\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tadd r0, r12\n"
|
||||
"\tldr r1, [sp, 0x20]\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tlsls r1, r2, 2\n"
|
||||
"\tadds r1, r7, r1\n"
|
||||
"\tstr r0, [r4]\n"
|
||||
"\tstr r1, [r4, 0x4]\n"
|
||||
"\tstr r6, [r4, 0x8]\n"
|
||||
"\tldr r0, [r4, 0x8]\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tlsls r2, 24\n"
|
||||
"\tlsrs r3, r2, 24\n"
|
||||
"\tasrs r2, 24\n"
|
||||
"\tcmp r2, 0x7\n"
|
||||
"\tble _0804507A\n"
|
||||
"\tb _08045156\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_080450A4: .4byte 0x040000d4\n"
|
||||
"_080450A8: .4byte 0x84000001\n"
|
||||
"_080450AC:\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tadds r4, 0x2\n"
|
||||
"\tstr r4, [sp, 0x30]\n"
|
||||
"\tmovs r0, 0x20\n"
|
||||
"\tadds r0, r7\n"
|
||||
"\tmov r10, r0\n"
|
||||
"\tadds r2, 0x1\n"
|
||||
"\tmov r9, r2\n"
|
||||
"_080450BC:\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tlsls r4, r3, 24\n"
|
||||
"\tlsls r0, r4, 2\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tadds r6, r0, 0x3\n"
|
||||
"\tmov r1, r12\n"
|
||||
"\tadds r5, r1, r0\n"
|
||||
"_080450CA:\n"
|
||||
"\tlsls r1, r2, 24\n"
|
||||
"\tasrs r1, 24\n"
|
||||
"\tsubs r0, r6, r1\n"
|
||||
"\tmov r2, sp\n"
|
||||
"\tadds r3, r2, r0\n"
|
||||
"\tadds r0, r5, r1\n"
|
||||
"\tldr r2, [sp, 0x20]\n"
|
||||
"\tadds r0, r2, r0\n"
|
||||
"\tldrb r2, [r0]\n"
|
||||
"\tmovs r0, 0xF\n"
|
||||
"\tands r0, r2\n"
|
||||
"\tlsls r0, 4\n"
|
||||
"\tlsrs r2, 4\n"
|
||||
"\torrs r0, r2\n"
|
||||
"\tstrb r0, [r3]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tlsrs r2, r1, 24\n"
|
||||
"\tasrs r1, 24\n"
|
||||
"\tcmp r1, 0x3\n"
|
||||
"\tble _080450CA\n"
|
||||
"\tmovs r3, 0x80\n"
|
||||
"\tlsls r3, 17\n"
|
||||
"\tadds r0, r4, r3\n"
|
||||
"\tlsrs r3, r0, 24\n"
|
||||
"\tasrs r0, 24\n"
|
||||
"\tcmp r0, 0x7\n"
|
||||
"\tble _080450BC\n"
|
||||
"\tmovs r0, 0x80\n"
|
||||
"\tlsls r0, 4\n"
|
||||
"\tmov r1, sp\n"
|
||||
"\tldrh r1, [r1, 0x38]\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08045148\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tldr r4, _08045140 @ =0x040000d4\n"
|
||||
"\tldr r6, _08045144 @ =0x84000001\n"
|
||||
"\tmovs r5, 0x7\n"
|
||||
"_08045118:\n"
|
||||
"\tlsls r1, r3, 24\n"
|
||||
"\tasrs r1, 24\n"
|
||||
"\tsubs r0, r5, r1\n"
|
||||
"\tlsls r0, 2\n"
|
||||
"\tmov r3, sp\n"
|
||||
"\tadds r2, r3, r0\n"
|
||||
"\tlsls r0, r1, 2\n"
|
||||
"\tadds r0, r7, r0\n"
|
||||
"\tstr r2, [r4]\n"
|
||||
"\tstr r0, [r4, 0x4]\n"
|
||||
"\tstr r6, [r4, 0x8]\n"
|
||||
"\tldr r0, [r4, 0x8]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tlsrs r3, r1, 24\n"
|
||||
"\tasrs r1, 24\n"
|
||||
"\tcmp r1, 0x7\n"
|
||||
"\tble _08045118\n"
|
||||
"\tb _08045156\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08045140: .4byte 0x040000d4\n"
|
||||
"_08045144: .4byte 0x84000001\n"
|
||||
"_08045148:\n"
|
||||
"\tmov r0, sp\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"\tstr r7, [r1, 0x4]\n"
|
||||
"\tldr r2, _0804518C @ =0x84000008\n"
|
||||
"\tstr r2, [r1, 0x8]\n"
|
||||
"\tldr r0, [r1, 0x8]\n"
|
||||
"_08045156:\n"
|
||||
"\tldr r4, [sp, 0x30]\n"
|
||||
"\tmov r7, r10\n"
|
||||
"\tmov r3, r9\n"
|
||||
"\tlsls r0, r3, 24\n"
|
||||
"\tlsrs r2, r0, 24\n"
|
||||
"\tldr r0, [sp, 0x28]\n"
|
||||
"\tcmp r2, r0\n"
|
||||
"\tbcs _08045168\n"
|
||||
"\tb _08045014\n"
|
||||
"_08045168:\n"
|
||||
"\tldr r1, [sp, 0x2C]\n"
|
||||
"\tadds r4, r1\n"
|
||||
"\tldr r2, [sp, 0x34]\n"
|
||||
"\tlsls r0, r2, 24\n"
|
||||
"\tlsrs r1, r0, 24\n"
|
||||
"\tldr r3, [sp, 0x24]\n"
|
||||
"\tcmp r1, r3\n"
|
||||
"\tbcs _0804517A\n"
|
||||
"\tb _08045002\n"
|
||||
"_0804517A:\n"
|
||||
"\tadd sp, 0x3C\n"
|
||||
"\tpop {r3-r5}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tmov r10, r5\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0804518C: .4byte 0x84000008");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
int CountTrailingZeroBits(u32 value)
|
||||
{
|
||||
|
||||
+1
-21
@@ -104,27 +104,7 @@ gUnknown_3000FA8: @ 3000FA8
|
||||
gUnknown_3000FA9: @ 3000FA9
|
||||
.space 0x3
|
||||
|
||||
gUnknown_3000FAC: @ 3000FAC
|
||||
.space 0x2
|
||||
|
||||
sPrimaryTilesetCBCounter: @ 3000FAE
|
||||
.space 0x2
|
||||
|
||||
sPrimaryTilesetCBBufferSize: @ 3000FB0
|
||||
.space 0x2
|
||||
|
||||
sSecondaryTilesetCBCounter: @ 3000FB2
|
||||
.space 0x2
|
||||
|
||||
sSecondaryTilesetCBBufferSize: @ 3000FB4
|
||||
.space 0x4
|
||||
|
||||
sPrimaryTilesetCB: @ 3000FB8
|
||||
.space 0x4
|
||||
|
||||
sSecondaryTilesetCB: @ 3000FBC
|
||||
.space 0x4
|
||||
|
||||
.include "src/tileset_anims.o"
|
||||
.include "src/sound.o"
|
||||
|
||||
.align 2
|
||||
|
||||
+1
-2
@@ -660,8 +660,7 @@ gUnknown_2037101: @ 2037101
|
||||
gUnknown_2037104: @ 2037104
|
||||
.space 0x4
|
||||
|
||||
gUnknown_2037108: @ 2037108
|
||||
.space 0xF0
|
||||
.include "src/tileset_anims.o"
|
||||
|
||||
gPlttBufferUnfaded: @ 20371F8
|
||||
.space 0x400
|
||||
|
||||
Reference in New Issue
Block a user