Merge branch 'master' into battle

This commit is contained in:
jiangzhengwenjz
2019-08-25 06:58:56 +08:00
31 changed files with 8275 additions and 1631 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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]
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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
-667
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+3
View File
@@ -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
View File
@@ -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
+9
View File
@@ -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
View File
@@ -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)
{
+3 -4
View File
@@ -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)
+50 -345
View File
@@ -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
View File
@@ -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);
}
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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();
}
+248
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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