This commit is contained in:
AnonymousRandomPerson
2022-10-16 19:55:39 -04:00
55 changed files with 6702 additions and 5188 deletions

View File

@@ -156,6 +156,7 @@ tools: $(TOOLDIRS)
include dungeon_pokemon.mk
include dungeon_floor.mk
include dungeon_trap.mk
include data_pokemon.mk
include data_item.mk
include data_move.mk
@@ -181,6 +182,7 @@ tidy:
$(RM) -f $(POKEMON_SPECIES)
$(RM) -f $(DUNGEON_FLOOR)
$(RM) -f $(DUNGEON_POKEMON)
$(RM) -f $(DUNGEON_TRAP)
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
@$(MAKE) clean -C libagbsyscall
@@ -201,7 +203,7 @@ $(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
@$(call scaninc,$(INCLUDE_PATHS))
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s dungeon_pokemon dungeon_floor data_pokemon data_item data_move
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s dungeon_pokemon dungeon_floor dungeon_trap data_pokemon data_item data_move
@$(CPP) -x assembler-with-cpp $(CPPFLAGS) $< -o $(DATA_ASM_BUILDDIR)/$*.i.s
@$(PREPROC) $(DATA_ASM_BUILDDIR)/$*.i.s charmap.txt > $(DATA_ASM_BUILDDIR)/$*.s
$(AS) $(ASFLAGS) -o $@ $(DATA_ASM_BUILDDIR)/$*.s

View File

@@ -7184,7 +7184,7 @@ _080560CC:
.align 2, 0
_08056108: .4byte gDungeonGlobalData
_0805610C: .4byte 0x00003a0e
_08056110: .4byte gUnknown_80F5D10
_08056110: .4byte gNaturePowerMoveTable
_08056114: .4byte gUnknown_80FECE0
_08056118: .4byte gAvailablePokemonNames
_0805611C: .4byte gUnknown_202DE58
@@ -7542,7 +7542,7 @@ _08056400:
bl SendImmobilizeEndMessage
adds r0, r5, 0
adds r1, r5, 0
bl sub_807A6C8
bl SendLinkedEndMessage
_08056418:
ldr r0, _08056464
ldrb r0, [r0]

View File

@@ -96,156 +96,4 @@ _080571DE:
_080571EC: .4byte 0x00000163
thumb_func_end sub_8057144
thumb_func_start sub_80571F0
sub_80571F0:
push {lr}
ldr r0, [r0, 0x70]
adds r2, r0, 0
adds r2, 0xFF
ldrb r2, [r2]
cmp r2, 0x1
bne _08057212
ldrh r1, [r1, 0x2]
cmp r1, 0x88
beq _08057274
cmp r1, 0xA2
beq _08057274
cmp r1, 0x39
beq _08057274
cmp r1, 0x40
beq _08057274
b _08057264
_08057212:
cmp r2, 0x2
bne _08057274
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0x9
bne _0805722A
ldrh r1, [r1, 0x2]
cmp r1, 0x20
beq _08057274
cmp r1, 0xDB
bne _08057264
b _08057274
_0805722A:
cmp r0, 0xA
bne _08057264
ldrh r1, [r1, 0x2]
cmp r1, 0x76
beq _08057274
movs r0, 0x94
lsls r0, 1
cmp r1, r0
beq _08057274
cmp r1, 0x77
bne _08057264
ldr r0, _08057268
ldr r0, [r0]
ldr r1, _0805726C
adds r0, r1
movs r2, 0
ldrsh r1, [r0, r2]
cmp r1, 0
bge _08057252
movs r1, 0
_08057252:
cmp r1, 0x4A
ble _08057258
movs r1, 0x4A
_08057258:
ldr r0, _08057270
lsls r1, 3
adds r1, r0
ldrh r0, [r1]
cmp r0, 0x76
beq _08057274
_08057264:
movs r0, 0x1
b _08057276
.align 2, 0
_08057268: .4byte gDungeonGlobalData
_0805726C: .4byte 0x00003a0e
_08057270: .4byte gUnknown_80F5D10
_08057274:
movs r0, 0
_08057276:
pop {r1}
bx r1
thumb_func_end sub_80571F0
thumb_func_start sub_805727C
sub_805727C:
push {r4-r6,lr}
adds r6, r0, 0
adds r5, r1, 0
adds r4, r2, 0
bl sub_8044B28
lsls r0, 24
cmp r0, 0
bne _080572FC
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _080572FC
adds r0, r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _080572FC
ldr r1, [r5, 0x70]
movs r2, 0xAC
lsls r2, 1
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
beq _080572FC
movs r2, 0xE
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080572FC
cmp r4, 0
beq _080572DE
adds r0, r6, 0
movs r1, 0x26
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _080572D2
lsls r0, r4, 1
b _080572D4
_080572D2:
adds r0, r4, 0
_080572D4:
bl RollPercentChance_2
lsls r0, 24
lsrs r4, r0, 24
b _080572E0
_080572DE:
movs r4, 0x1
_080572E0:
cmp r4, 0
beq _08057300
cmp r6, r5
beq _08057300
adds r0, r5, 0
movs r1, 0x4C
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _08057300
adds r0, r5, 0
bl sub_80429C8
_080572FC:
movs r0, 0
b _08057302
_08057300:
adds r0, r4, 0
_08057302:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_805727C
.align 2, 0

View File

@@ -464,7 +464,7 @@ _08057778: .4byte gUnknown_80F502A
thumb_func_start sub_805777C
sub_805777C:
push {lr}
bl sub_8079DB8
bl VitalThrowStatusTarget
movs r0, 0x1
pop {r1}
bx r1

View File

@@ -111,7 +111,7 @@ sub_8057E50:
bl sub_807A9D8
adds r0, r4, 0
adds r1, r5, 0
bl sub_8079CA0
bl MirrorMoveStatusTarget
movs r0, 0x1
pop {r4,r5}
pop {r1}
@@ -1133,7 +1133,7 @@ _080585EC:
bl sub_80522F4
adds r0, r5, 0
adds r1, r4, 0
bl sub_807A4C8
bl SendProtectionEndMessage
movs r6, 0x1
_08058602:
movs r3, 0x80
@@ -1414,7 +1414,7 @@ sub_80587E8:
lsrs r4, r1, 31
adds r0, r6, 0
adds r1, r5, 0
bl sub_807A290
bl SendNonVolatileEndMessage
b _0805882E
_0805881A:
movs r3, 0x80
@@ -1925,7 +1925,7 @@ _08058BDC: .4byte gUnknown_8106A4C
sub_8058BE0:
push {lr}
adds r1, r0, 0
bl sub_8079C24
bl EndureStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -2446,7 +2446,7 @@ _08058F7E:
.align 2, 0
_08058FB0: .4byte gDungeonGlobalData
_08058FB4: .4byte 0x00003a0e
_08058FB8: .4byte gUnknown_80F5D10
_08058FB8: .4byte gNaturePowerMoveTable
thumb_func_end sub_8058F58
thumb_func_start sub_8058FBC
@@ -2595,7 +2595,7 @@ _080590C4: .4byte gUnknown_80F4DE8
thumb_func_start sub_80590C8
sub_80590C8:
push {lr}
bl sub_80798B0
bl MistStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -2736,7 +2736,7 @@ _080591D4: .4byte gUnknown_80F4DEA
thumb_func_start sub_80591D8
sub_80591D8:
push {lr}
bl sub_8079834
bl SafeguardStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -4145,7 +4145,7 @@ _08059C7C: .4byte gUnknown_80FE36C
thumb_func_start sub_8059C80
sub_8059C80:
push {lr}
bl sub_8079D1C
bl Conversion2StatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -5146,7 +5146,7 @@ _0805A3F8: .4byte gUnknown_8106A4C
thumb_func_start sub_805A3FC
sub_805A3FC:
push {lr}
bl sub_807992C
bl WishStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -6089,7 +6089,7 @@ _0805AB44: .4byte gUnknown_80FC5CC
thumb_func_start sub_805AB48
sub_805AB48:
push {lr}
bl sub_8079A24
bl LightScreenStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -7106,7 +7106,7 @@ _0805B2E0: .4byte gUnknown_80F4F94
thumb_func_start sub_805B2E4
sub_805B2E4:
push {lr}
bl sub_80799A8
bl MagicCoatStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -7115,7 +7115,7 @@ sub_805B2E4:
thumb_func_start sub_805B2F0
sub_805B2F0:
push {lr}
bl sub_8079B1C
bl ProtectStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -7220,7 +7220,7 @@ _0805B39E:
thumb_func_start sub_805B3A8
sub_805B3A8:
push {lr}
bl sub_8079BA8
bl MirrorCoatStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -7797,7 +7797,7 @@ _0805B7F8: .4byte gUnknown_80FDCA0
thumb_func_start sub_805B7FC
sub_805B7FC:
push {lr}
bl sub_8079AA0
bl ReflectStatusTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -8518,7 +8518,7 @@ _0805BD52:
thumb_func_start sub_805BD64
sub_805BD64:
push {lr}
bl sub_8078D8C
bl MuzzleTarget
movs r0, 0x1
pop {r1}
bx r1
@@ -9095,7 +9095,7 @@ _0805C1AC: .4byte 0x0000270f
thumb_func_start sub_805C1B0
sub_805C1B0:
push {lr}
bl sub_80790C8
bl IdentityItemHolders
movs r0, 0x1
pop {r1}
bx r1

View File

@@ -431,7 +431,7 @@ _0806A650:
bne _0806A6D2
adds r0, r6, 0
adds r1, r6, 0
bl sub_807A290
bl SendNonVolatileEndMessage
b _0806A6D2
_0806A664:
cmp r1, 0
@@ -1157,7 +1157,7 @@ sub_806ABAC:
bne _0806ABD4
adds r0, r6, 0
adds r1, r4, 0
bl sub_807A290
bl SendNonVolatileEndMessage
_0806ABD4:
adds r0, r4, 0
movs r1, 0x40
@@ -1172,7 +1172,7 @@ _0806ABD4:
bne _0806ABF4
adds r0, r6, 0
adds r1, r4, 0
bl sub_807A400
bl SendVolatileEndMessage
_0806ABF4:
adds r0, r4, 0
movs r1, 0x42
@@ -1187,7 +1187,7 @@ _0806ABF4:
bne _0806AC14
adds r0, r6, 0
adds r1, r4, 0
bl sub_807A290
bl SendNonVolatileEndMessage
_0806AC14:
adds r0, r4, 0
movs r1, 0x29
@@ -1202,7 +1202,7 @@ _0806AC14:
bne _0806AC34
adds r0, r6, 0
adds r1, r4, 0
bl sub_807A400
bl SendVolatileEndMessage
_0806AC34:
adds r0, r4, 0
movs r1, 0x36
@@ -1232,7 +1232,7 @@ _0806AC66:
adds r1, r4, 0
movs r2, 0
movs r3, 0x1
bl sub_807A124
bl SendSleepEndMessage
_0806AC72:
adds r0, r4, 0
movs r1, 0x41
@@ -1265,7 +1265,7 @@ _0806AC92:
bhi _0806ACB8
adds r0, r6, 0
adds r1, r4, 0
bl sub_807A290
bl SendNonVolatileEndMessage
_0806ACB8:
adds r0, r4, 0
movs r1, 0x25
@@ -1284,7 +1284,7 @@ _0806ACB8:
bne _0806ACE0
adds r0, r6, 0
adds r1, r4, 0
bl sub_807A4C8
bl SendProtectionEndMessage
_0806ACE0:
pop {r4-r6}
pop {r0}

View File

@@ -1232,7 +1232,7 @@ _0806D9D4:
bne _0806D9E6
mov r0, r9
adds r1, r7, 0
bl sub_807A7C8
bl SendTransformEndMessage
_0806D9E6:
mov r0, r8
cmp r0, 0
@@ -1692,7 +1692,7 @@ _0806DD62:
mov r0, r9
adds r1, r7, 0
movs r2, 0x3
bl sub_807A5D0
bl SendWaitingEndMessage
b _0806DDA2
.align 2, 0
_0806DD80: .4byte gDungeonGlobalData
@@ -1706,7 +1706,7 @@ _0806DD94:
mov r0, r9
adds r1, r7, 0
movs r2, 0x2
bl sub_807A5D0
bl SendWaitingEndMessage
_0806DDA2:
adds r0, r7, 0
bl sub_8078084
@@ -1854,7 +1854,7 @@ _0806DEC8:
mov r0, r9
adds r1, r7, 0
movs r2, 0x3
bl sub_807A5D0
bl SendWaitingEndMessage
b _0806DEF2
.align 2, 0
_0806DED4: .4byte gTeamInventory_203B460
@@ -1867,7 +1867,7 @@ _0806DEE4:
mov r0, r9
adds r1, r7, 0
movs r2, 0x2
bl sub_807A5D0
bl SendWaitingEndMessage
_0806DEF2:
adds r0, r7, 0
bl sub_8078084

View File

@@ -678,293 +678,4 @@ _08070820: .4byte gDungeonGlobalData
_08070824: .4byte 0x0000066e
thumb_func_end GetMovementSpeed
thumb_func_start sub_8070828
sub_8070828:
push {r4-r6,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r6, r1, 24
movs r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08070840
movs r0, 0
b _080708AE
_08070840:
adds r0, r4, 0
movs r1, 0x1B
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0807085E
adds r0, r4, 0
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bne _0807085E
movs r5, 0x1
_0807085E:
adds r0, r4, 0
movs r1, 0x4A
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0807087C
adds r0, r4, 0
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0807087C
movs r5, 0x1
_0807087C:
cmp r6, 0
beq _080708A0
ldr r0, [r4, 0x70]
movs r1, 0x40
adds r2, r5, 0
bl SetVisualFlags
lsls r0, 24
cmp r0, 0
beq _080708A0
adds r0, r4, 0
bl sub_80429B4
ldr r0, _080708A8
ldr r1, [r0]
adds r0, r4, 0
bl SendMessage
_080708A0:
cmp r5, 0
bne _080708AC
movs r0, 0x1
b _080708AE
.align 2, 0
_080708A8: .4byte gUnknown_80FEE80
_080708AC:
movs r0, 0x2
_080708AE:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8070828
thumb_func_start SetMessageArgument_2
SetMessageArgument_2:
push {r4,r5,lr}
adds r3, r0, 0
adds r4, r2, 0
ldr r0, _080708E8
ldr r2, [r0]
ldr r5, _080708EC
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, 0
bne _080708DC
adds r5, 0x6
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, 0
bne _080708DC
adds r0, r1, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x1
bne _080708F4
_080708DC:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _080708F4
ldr r0, _080708F0
b _08070900
.align 2, 0
_080708E8: .4byte gDungeonGlobalData
_080708EC: .4byte 0x0001820a
_080708F0: .4byte gUnknown_80F8988
_080708F4:
adds r0, r1, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _08070910
ldr r0, _0807090C
_08070900:
ldr r1, [r0]
adds r0, r3, 0
bl strcpy
b _0807095A
.align 2, 0
_0807090C: .4byte gUnknown_80F8968
_08070910:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08070942
adds r0, r1, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _0807092A
adds r0, r1, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _08070936
_0807092A:
movs r0, 0x4
ldrsh r1, [r1, r0]
adds r0, r3, 0
bl CopyYellowSpeciesNametoBuffer
b _0807095A
_08070936:
movs r5, 0x4
ldrsh r1, [r1, r5]
adds r0, r3, 0
bl CopyCyanSpeciesNametoBuffer
b _0807095A
_08070942:
ldr r2, _08070960
ldrb r1, [r1, 0xA]
movs r0, 0x64
muls r0, r1
ldr r1, _08070964
adds r0, r1
ldr r1, [r2]
adds r1, r0
adds r0, r3, 0
adds r2, r4, 0
bl sub_808D9DC
_0807095A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08070960: .4byte gRecruitedPokemonRef
_08070964: .4byte 0x00008df8
thumb_func_end SetMessageArgument_2
thumb_func_start sub_8070968
sub_8070968:
push {r4,lr}
adds r4, r0, 0
adds r3, r2, 0
adds r0, r1, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _08070990
ldr r1, _08070988
adds r2, 0x30
ldr r0, _0807098C
ldr r3, [r0]
adds r0, r4, 0
bl sprintf_2
b _080709BA
.align 2, 0
_08070988: .4byte gUnknown_8106FA4
_0807098C: .4byte gUnknown_80F8974
_08070990:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _080709A2
movs r0, 0x4
ldrsh r1, [r1, r0]
adds r0, r4, 0
bl CopyCyanSpeciesNametoBuffer
b _080709BA
_080709A2:
ldr r2, _080709C0
ldrb r1, [r1, 0xA]
movs r0, 0x64
muls r0, r1
ldr r1, _080709C4
adds r0, r1
ldr r1, [r2]
adds r1, r0
adds r0, r4, 0
adds r2, r3, 0
bl sub_808D9DC
_080709BA:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080709C0: .4byte gRecruitedPokemonRef
_080709C4: .4byte 0x00008df8
thumb_func_end sub_8070968
thumb_func_start sub_80709C8
sub_80709C8:
push {r4,lr}
adds r3, r0, 0
ldr r0, _080709F8
ldr r2, [r0]
ldr r4, _080709FC
adds r0, r2, r4
ldrb r0, [r0]
cmp r0, 0
bne _080709EE
adds r4, 0x6
adds r0, r2, r4
ldrb r0, [r0]
cmp r0, 0
bne _080709EE
adds r0, r1, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x1
bne _08070A04
_080709EE:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08070A04
ldr r0, _08070A00
b _08070A10
.align 2, 0
_080709F8: .4byte gDungeonGlobalData
_080709FC: .4byte 0x0001820a
_08070A00: .4byte gUnknown_80F8994
_08070A04:
adds r0, r1, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x2
bne _08070A20
ldr r0, _08070A1C
_08070A10:
ldr r1, [r0]
adds r0, r3, 0
bl strcpy
b _08070A48
.align 2, 0
_08070A1C: .4byte gUnknown_80F8974
_08070A20:
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08070A32
movs r0, 0x4
ldrsh r1, [r1, r0]
adds r0, r3, 0
bl CopySpeciesNametoBuffer
b _08070A48
_08070A32:
ldr r2, _08070A50
ldrb r1, [r1, 0xA]
movs r0, 0x64
muls r0, r1
ldr r1, _08070A54
adds r0, r1
ldr r1, [r2]
adds r1, r0
adds r0, r3, 0
bl sub_808DA0C
_08070A48:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08070A50: .4byte gRecruitedPokemonRef
_08070A54: .4byte 0x00008df8
thumb_func_end sub_80709C8
.align 2, 0

View File

@@ -1880,7 +1880,7 @@ _08074C48:
adds r1, r7, 0
movs r2, 0x1
movs r3, 0x1
bl sub_807A124
bl SendSleepEndMessage
_08074C6E:
adds r0, r7, 0
bl EntityExists
@@ -1909,7 +1909,7 @@ _08074C88:
bne _08074CAA
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A290
bl SendNonVolatileEndMessage
_08074CAA:
adds r0, r7, 0
bl EntityExists
@@ -1967,7 +1967,7 @@ _08074D00:
bne _08074D22
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A400
bl SendVolatileEndMessage
_08074D22:
adds r0, r7, 0
bl EntityExists
@@ -1996,7 +1996,7 @@ _08074D3C:
bne _08074D5E
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A4C8
bl SendProtectionEndMessage
_08074D5E:
adds r0, r7, 0
bl EntityExists
@@ -2026,7 +2026,7 @@ _08074D78:
adds r0, r7, 0
adds r1, r7, 0
movs r2, 0
bl sub_807A5D0
bl SendWaitingEndMessage
_08074D9C:
adds r0, r7, 0
bl EntityExists
@@ -2055,7 +2055,7 @@ _08074DB6:
bne _08074DD8
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A6C8
bl SendLinkedEndMessage
_08074DD8:
adds r0, r7, 0
bl EntityExists
@@ -2084,7 +2084,7 @@ _08074DF2:
bne _08074E14
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A734
bl SendMoveEndMessage
_08074E14:
adds r0, r7, 0
bl EntityExists
@@ -2113,7 +2113,7 @@ _08074E2E:
bne _08074E50
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A7C8
bl SendTransformEndMessage
_08074E50:
adds r0, r7, 0
bl EntityExists
@@ -2142,7 +2142,7 @@ _08074E6A:
bne _08074E8C
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A888
bl SendEyesightEndMessage
_08074E8C:
adds r0, r7, 0
bl EntityExists
@@ -2169,7 +2169,7 @@ _08074E9A:
bne _08074EC6
adds r0, r7, 0
adds r1, r7, 0
bl sub_807A924
bl SendMuzzledEndMessage
_08074EC6:
adds r0, r7, 0
bl EntityExists

View File

@@ -5,145 +5,6 @@
.text
thumb_func_start sub_8075BF4
sub_8075BF4:
push {r4-r7,lr}
adds r5, r0, 0
adds r4, r1, 0
movs r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08075C0A
movs r0, 0
b _08075C52
_08075C0A:
ldr r6, [r5, 0x70]
adds r1, r6, 0
adds r1, 0xA8
ldrb r0, [r1]
cmp r0, 0x3
beq _08075C48
cmp r0, 0x1
beq _08075C44
movs r0, 0x1
strb r0, [r1]
cmp r4, 0x7F
beq _08075C3C
adds r0, r5, 0
movs r1, 0x2F
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _08075C3C
lsrs r0, r4, 31
adds r0, r4, r0
asrs r4, r0, 1
cmp r4, 0
bgt _08075C3C
movs r4, 0x1
_08075C3C:
adds r0, r6, 0
adds r0, 0xA9
strb r4, [r0]
b _08075C4A
_08075C44:
movs r7, 0x1
b _08075C4A
_08075C48:
movs r7, 0x2
_08075C4A:
adds r0, r5, 0
bl DungeonEntityUpdateStatusSprites
adds r0, r7, 0
_08075C52:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8075BF4
thumb_func_start sub_8075C58
sub_8075C58:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r0, 0
adds r4, r1, 0
mov r8, r2
lsls r3, 24
lsrs r5, r3, 24
adds r7, r5, 0
movs r2, 0x1
adds r3, r5, 0
bl sub_8075CFC
lsls r0, 24
cmp r0, 0
bne _08075CEC
ldr r0, [r4, 0x70]
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x2
bne _08075C90
cmp r5, 0
beq _08075CEC
ldr r0, _08075C8C
b _08075CCE
.align 2, 0
_08075C8C: .4byte gUnknown_80FB380
_08075C90:
cmp r0, 0x5
bne _08075CA0
cmp r7, 0
beq _08075CEC
ldr r0, _08075C9C
b _08075CCE
.align 2, 0
_08075C9C: .4byte gUnknown_80FB384
_08075CA0:
adds r0, r4, 0
bl sub_8041AF4
adds r0, r4, 0
mov r1, r8
bl sub_8075BF4
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0
movs r1, 0x8
bl sub_806CE68
cmp r5, 0x1
bne _08075CC8
ldr r0, _08075CC4
b _08075CCE
.align 2, 0
_08075CC4: .4byte gUnknown_80FB338
_08075CC8:
cmp r5, 0x2
bne _08075CE0
ldr r0, _08075CDC
_08075CCE:
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
b _08075CEC
.align 2, 0
_08075CDC: .4byte gUnknown_80FB35C
_08075CE0:
ldr r0, _08075CF8
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
_08075CEC:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08075CF8: .4byte gUnknown_80FB318
thumb_func_end sub_8075C58
thumb_func_start sub_8075CFC
sub_8075CFC:
push {r4-r7,lr}

File diff suppressed because it is too large Load Diff

344
asm/code_8077274_1.s Normal file
View File

@@ -0,0 +1,344 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_807AB38
sub_807AB38:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1A8
adds r2, r0, 0
lsls r1, 24
lsrs r4, r1, 24
ldr r0, [r2, 0x70]
ldrb r0, [r0, 0x6]
cmp r0, 0
beq _0807AB54
b _0807ADA6
_0807AB54:
adds r0, r2, 0
str r2, [sp, 0x1A4]
bl GetMapTileForDungeonEntity_2
ldrh r1, [r0]
movs r0, 0x40
ands r0, r1
ldr r2, [sp, 0x1A4]
cmp r0, 0
bne _0807AB6A
b _0807ADA6
_0807AB6A:
ldr r3, _0807AC10
ldr r0, [r3]
ldr r5, _0807AC14
adds r1, r0, r5
ldrb r0, [r1]
cmp r0, 0
beq _0807AB7A
b _0807ADA6
_0807AB7A:
movs r0, 0x1
strb r0, [r1]
ldr r3, [r3]
ldr r1, _0807AC18
adds r0, r3, r1
ldrb r1, [r0]
cmp r1, 0xFF
bne _0807AB8C
b _0807ADA6
_0807AB8C:
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
ldr r5, _0807AC1C
adds r0, r5
adds r3, r0
movs r0, 0
mov r8, r0
cmp r4, 0
beq _0807AC20
movs r1, 0x6
ldrsh r0, [r2, r1]
subs r6, r0, 0x4
adds r0, 0x4
cmp r6, r0
ble _0807ABAE
b _0807ACB4
_0807ABAE:
movs r4, 0x4
ldrsh r0, [r2, r4]
subs r4, r0, 0x4
adds r0, 0x4
adds r5, r6, 0x1
mov r9, r5
cmp r4, r0
bgt _0807AC00
mov r1, r8
lsls r0, r1, 2
mov r1, sp
adds r5, r0, r1
_0807ABC6:
adds r0, r4, 0
adds r1, r6, 0
str r2, [sp, 0x1A4]
bl GetMapTile_2
adds r1, r0, 0
ldr r0, [r1, 0x10]
ldr r2, [sp, 0x1A4]
cmp r0, 0
bne _0807ABF4
ldrh r1, [r1]
movs r0, 0x3
ands r0, r1
cmp r0, 0x1
bne _0807ABF4
mov r0, r8
cmp r0, 0x63
bgt _0807ABF4
strh r4, [r5]
strh r6, [r5, 0x2]
adds r5, 0x4
movs r1, 0x1
add r8, r1
_0807ABF4:
adds r4, 0x1
movs r1, 0x4
ldrsh r0, [r2, r1]
adds r0, 0x4
cmp r4, r0
ble _0807ABC6
_0807AC00:
mov r6, r9
movs r4, 0x6
ldrsh r0, [r2, r4]
adds r0, 0x4
cmp r6, r0
ble _0807ABAE
b _0807ACB4
.align 2, 0
_0807AC10: .4byte gDungeonGlobalData
_0807AC14: .4byte 0x00000671
_0807AC18: .4byte 0x00003a0c
_0807AC1C: .4byte 0x000104c4
_0807AC20:
movs r5, 0x4
ldrsh r0, [r2, r5]
subs r1, r0, 0x4
movs r5, 0x2
ldrsh r4, [r3, r5]
mov r10, r4
cmp r10, r1
bge _0807AC32
mov r10, r1
_0807AC32:
adds r1, r0, 0x5
movs r0, 0x6
ldrsh r7, [r3, r0]
cmp r7, r1
ble _0807AC3E
adds r7, r1, 0
_0807AC3E:
movs r1, 0x6
ldrsh r0, [r2, r1]
subs r2, r0, 0x4
movs r4, 0x4
ldrsh r1, [r3, r4]
cmp r1, r2
bge _0807AC4E
adds r1, r2, 0
_0807AC4E:
adds r0, 0x5
movs r5, 0x8
ldrsh r2, [r3, r5]
cmp r2, r0
ble _0807AC5A
adds r2, r0, 0
_0807AC5A:
adds r6, r1, 0
cmp r6, r2
bge _0807ACB4
_0807AC60:
mov r4, r10
adds r0, r6, 0x1
mov r9, r0
cmp r4, r7
bge _0807ACAE
mov r1, r8
lsls r0, r1, 2
mov r1, sp
adds r5, r0, r1
_0807AC72:
adds r0, r4, 0
adds r1, r6, 0
str r2, [sp, 0x1A4]
bl GetMapTile_2
adds r1, r0, 0
ldr r0, [r1, 0x10]
ldr r2, [sp, 0x1A4]
cmp r0, 0
bne _0807ACA8
ldrh r1, [r1]
movs r0, 0x3
ands r0, r1
cmp r0, 0x1
bne _0807ACA8
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0807ACA8
mov r0, r8
cmp r0, 0x63
bgt _0807ACA8
strh r4, [r5]
strh r6, [r5, 0x2]
adds r5, 0x4
movs r1, 0x1
add r8, r1
_0807ACA8:
adds r4, 0x1
cmp r4, r7
blt _0807AC72
_0807ACAE:
mov r6, r9
cmp r6, r2
blt _0807AC60
_0807ACB4:
ldr r0, _0807AD74
movs r2, 0
ldrsh r0, [r0, r2]
ldr r1, _0807AD78
movs r4, 0
ldrsh r1, [r1, r4]
bl DungeonRandomRange
adds r7, r0, 0
cmp r7, r8
blt _0807ACCC
mov r7, r8
_0807ACCC:
movs r6, 0
cmp r6, r7
bge _0807ADA0
mov r10, r6
_0807ACD4:
mov r0, r8
bl DungeonRandomCapped
adds r2, r0, 0
movs r3, 0
cmp r3, r8
bge _0807AD0C
lsls r0, r2, 2
mov r5, sp
adds r1, r5, r0
movs r4, 0
ldrsh r1, [r1, r4]
adds r5, r0, 0
cmp r1, 0
bne _0807AD1C
_0807ACF2:
adds r2, 0x1
cmp r2, r8
blt _0807ACFA
movs r2, 0
_0807ACFA:
adds r3, 0x1
cmp r3, r8
bge _0807AD0C
lsls r0, r2, 2
add r0, sp
movs r5, 0
ldrsh r0, [r0, r5]
cmp r0, 0
beq _0807ACF2
_0807AD0C:
lsls r0, r2, 2
mov r2, sp
adds r1, r2, r0
movs r4, 0
ldrsh r1, [r1, r4]
adds r5, r0, 0
cmp r1, 0
beq _0807ADA0
_0807AD1C:
movs r0, 0x1
bl sub_803D970
add r4, sp, 0x190
movs r1, 0
strh r0, [r4]
mov r0, r10
strh r0, [r4, 0x8]
strb r1, [r4, 0x2]
mov r1, r10
str r1, [r4, 0x4]
movs r0, 0x1
strb r0, [r4, 0x10]
mov r2, sp
adds r1, r2, r5
ldrh r0, [r1]
strh r0, [r4, 0xC]
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xE]
movs r5, 0
ldrsh r0, [r4, r5]
movs r1, 0x1
bl sub_806AA0C
lsls r0, 24
adds r6, 0x1
mov r9, r6
cmp r0, 0
beq _0807AD9A
adds r0, r4, 0
movs r1, 0
bl sub_806B7F8
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0807AD9A
movs r0, 0xC8
lsls r0, 8
str r0, [r4, 0x1C]
movs r5, 0
b _0807AD84
.align 2, 0
_0807AD74: .4byte gUnknown_80F4DA2
_0807AD78: .4byte gUnknown_80F4DA4
_0807AD7C:
movs r0, 0x57
bl sub_803E46C
adds r5, 0x1
_0807AD84:
cmp r5, 0x63
bgt _0807AD96
ldr r0, [r4, 0x1C]
movs r1, 0xAA
bl sub_8009DA4
str r0, [r4, 0x1C]
cmp r0, 0xFF
bgt _0807AD7C
_0807AD96:
mov r0, r10
str r0, [r4, 0x1C]
_0807AD9A:
mov r6, r9
cmp r6, r7
blt _0807ACD4
_0807ADA0:
movs r0, 0x1
bl sub_804178C
_0807ADA6:
add sp, 0x1A8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_807AB38
.align 2,0

View File

@@ -1,26 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_807BB78
sub_807BB78:
ldr r3, [r0, 0x70]
adds r1, r3, 0
adds r1, 0x78
movs r2, 0
strb r2, [r1]
adds r1, 0x10
ldr r0, [r0, 0x4]
str r0, [r1]
adds r0, r3, 0
adds r0, 0x80
str r2, [r0]
subs r0, 0x4
strh r2, [r0]
bx lr
thumb_func_end sub_807BB78
.align 2, 0

View File

@@ -6,8 +6,8 @@
gUnknown_80F59C8: @ 80F59C8
.incbin "baserom.gba", 0xF59C8, 0x348
.global gUnknown_80F5D10
gUnknown_80F5D10: @ 80F5D10
.global gNaturePowerMoveTable
gNaturePowerMoveTable: @ 80F5D10
.incbin "baserom.gba", 0xF5D10, 0x260
.global gUnknown_80F5F70

View File

@@ -1,2 +1,3 @@
**/pokemon_found.inc
**/floor_id.inc
trap_data.inc

3702
data/dungeon/trap_data.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,337 +1,154 @@
@ Start of Traps Found (0x84c37b8)
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x05, 0x0d, 0x88, 0x13, 0xb4, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x1e
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x09, 0x9a, 0x0c, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x12, 0x7a, 0x14
.byte 0x50, 0x17, 0xe3, 0x18, 0x76, 0x1a, 0x9d, 0x1d, 0x00, 0x00, 0x8f, 0x1e, 0xc3, 0x20, 0xea, 0x23, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x08, 0x0d, 0x0e, 0xdd, 0x10
.byte 0x00, 0x00, 0x44, 0x12, 0x14, 0x15, 0x7b, 0x16, 0x03, 0x19, 0x6b, 0x1a, 0xd2, 0x1b, 0xa2, 0x1e, 0x00, 0x00, 0x7a, 0x1f, 0x71, 0x21, 0x41, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0xbf, 0x08, 0x93, 0x0e, 0x7e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x68, 0x14, 0xdd, 0x15, 0x7d, 0x18, 0xf2, 0x19, 0x67, 0x1b, 0x51, 0x1e, 0x00, 0x00, 0x31, 0x1f, 0x3b, 0x21, 0x26, 0x24
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x0a, 0xf2, 0x0f, 0x8a, 0x11, 0xaa, 0x13, 0x00, 0x00, 0x52, 0x16, 0x00, 0x00
.byte 0xa6, 0x17, 0xc7, 0x19, 0x00, 0x00, 0xc3, 0x1d, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x21, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x03
.byte 0x00, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x0b, 0x09, 0x4c, 0x0c, 0xa3, 0x10, 0x41, 0x14, 0x10, 0x16, 0xae, 0x19, 0xc4, 0x1a, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x03, 0x00, 0x00, 0xb7, 0x04, 0x15, 0x08, 0x73, 0x0b, 0xce, 0x0d, 0x83, 0x11, 0x88, 0x13, 0xe6, 0x16, 0x44, 0x1a, 0x9d, 0x1b, 0xf6, 0x1c, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x57, 0x04, 0x00, 0x00, 0xad, 0x05, 0x04, 0x09, 0x5a, 0x0c, 0xb1, 0x0e, 0x5c, 0x11, 0x5d, 0x13, 0xb4, 0x16
.byte 0x0b, 0x1a, 0xb6, 0x1b, 0x0c, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x30, 0x02, 0x50, 0x05, 0x40, 0x06, 0x80, 0x07, 0xa0, 0x0a, 0xc0, 0x0d
.byte 0xf0, 0x0f, 0x70, 0x12, 0x50, 0x14, 0x70, 0x17, 0x90, 0x1a, 0x70, 0x1c, 0xb0, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x02, 0xd9, 0x03, 0xce, 0x06
.byte 0xb2, 0x07, 0xe1, 0x08, 0xd6, 0x0b, 0xcc, 0x0e, 0xde, 0x10, 0x3c, 0x13, 0x03, 0x15, 0xf8, 0x17, 0xee, 0x1a, 0x00, 0x1d, 0x2f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x5a, 0x02, 0xd1, 0x03, 0xc1, 0x06, 0xa3, 0x07, 0xd0, 0x08, 0xc0, 0x0b, 0xaf, 0x0e, 0xbe, 0x10, 0x17, 0x13, 0xda, 0x14, 0xca, 0x17, 0xba, 0x1a, 0x14, 0x1d, 0x40, 0x1e, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x02, 0xca, 0x03, 0xb4, 0x06, 0x94, 0x07, 0xbf, 0x08, 0xa9, 0x0b, 0x93, 0x0e, 0x9e, 0x10, 0xf3, 0x12, 0xb3, 0x14, 0x9d, 0x17
.byte 0x87, 0x1a, 0x27, 0x1d, 0x51, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x02, 0xae, 0x03, 0x83, 0x06, 0x5c, 0x07, 0x7e, 0x08, 0x53, 0x0b, 0x27, 0x0e
.byte 0x22, 0x10, 0x66, 0x12, 0x19, 0x14, 0xee, 0x16, 0xc2, 0x19, 0x06, 0x1c, 0x28, 0x1d, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0xe2, 0x00, 0x5a, 0x02, 0x49, 0x05
.byte 0x2b, 0x06, 0x58, 0x07, 0x48, 0x0a, 0x37, 0x0d, 0x46, 0x0f, 0x9f, 0x11, 0x62, 0x13, 0x52, 0x16, 0x42, 0x19, 0x9c, 0x1b, 0xc8, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x98, 0x25, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0xf4, 0x00, 0x8a, 0x02, 0x00, 0x00, 0x7e, 0x03, 0xc4, 0x04, 0xf1, 0x07, 0x1e, 0x0b, 0x57, 0x0d, 0xe1, 0x0f, 0xc9, 0x11, 0xf6, 0x14, 0x23, 0x18, 0xad, 0x1a, 0xf2, 0x1b, 0x00, 0x00
.byte 0x00, 0x00, 0x79, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x7b, 0x09, 0xe5, 0x0c, 0x72, 0x11, 0x3d, 0x15, 0x22, 0x17
.byte 0xed, 0x1a, 0x10, 0x1c, 0x95, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x03, 0x00, 0x00, 0xed, 0x04, 0x72, 0x08, 0xf7, 0x0b
.byte 0x6e, 0x0e, 0x4d, 0x12, 0x69, 0x14, 0xee, 0x17, 0x73, 0x1b, 0xdb, 0x1c, 0x44, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x89, 0x04
.byte 0x00, 0x00, 0xee, 0x05, 0x6b, 0x09, 0xe8, 0x0c, 0x59, 0x0f, 0x23, 0x12, 0x3b, 0x14, 0xb7, 0x17, 0x34, 0x1b, 0xf3, 0x1c, 0x58, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0xfa, 0x00, 0x47, 0x02, 0x89, 0x05, 0x83, 0x06, 0xd0, 0x07, 0x11, 0x0b, 0x53, 0x0e, 0x9a, 0x10, 0x35, 0x13, 0x29, 0x15, 0x6a, 0x18, 0xab, 0x1b, 0x9f, 0x1d, 0xed, 0x1e, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x02, 0x00, 0x04, 0x13, 0x07, 0xff, 0x07, 0x3a, 0x09, 0x4e, 0x0c, 0x61, 0x0f, 0x88, 0x11, 0xfe, 0x13, 0xd7, 0x15, 0xea, 0x18
.byte 0xfd, 0x1b, 0x25, 0x1e, 0x5f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x02, 0xf8, 0x03, 0x05, 0x07, 0xef, 0x07, 0x28, 0x09, 0x35, 0x0c, 0x42, 0x0f
.byte 0x65, 0x11, 0xd6, 0x13, 0xab, 0x15, 0xb8, 0x18, 0xc5, 0x1b, 0x36, 0x1e, 0x6f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x02, 0xf0, 0x03, 0xf7, 0x06
.byte 0xe0, 0x07, 0x16, 0x09, 0x1d, 0x0c, 0x24, 0x0f, 0x43, 0x11, 0xaf, 0x13, 0x80, 0x15, 0x87, 0x18, 0x8e, 0x1b, 0x48, 0x1e, 0x7e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x5a, 0x02, 0xd1, 0x03, 0xc1, 0x06, 0xa3, 0x07, 0xd0, 0x08, 0xc0, 0x0b, 0xaf, 0x0e, 0xbe, 0x10, 0x17, 0x13, 0xda, 0x14, 0xca, 0x17, 0xba, 0x1a, 0x14, 0x1d, 0x40, 0x1e, 0x00, 0x00
.byte 0x00, 0x00, 0x98, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x1f, 0x01, 0x3f, 0x02, 0x7d, 0x04, 0xbc, 0x06, 0x00, 0x00, 0xfb, 0x08, 0x1a, 0x0a, 0x1f, 0x0c, 0x3f, 0x0d, 0x0b, 0x0f, 0x2a, 0x10
.byte 0x69, 0x12, 0x15, 0x13, 0xfb, 0x13, 0x3a, 0x16, 0x78, 0x18, 0xd1, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x17, 0x01, 0x2f, 0x02, 0x5d, 0x04, 0x8c, 0x06, 0xa3, 0x07, 0xd2, 0x09, 0xe9, 0x0a
.byte 0xe0, 0x0c, 0xf7, 0x0d, 0xb6, 0x0f, 0xce, 0x10, 0xfc, 0x12, 0xa4, 0x13, 0x83, 0x14, 0xb2, 0x16, 0xe1, 0x18, 0xe1, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x5a, 0x02, 0xb5, 0x04
.byte 0x0f, 0x07, 0x3c, 0x08, 0x97, 0x0a, 0xc4, 0x0b, 0xe2, 0x0d, 0x0f, 0x0f, 0x6a, 0x11, 0x97, 0x12, 0xf1, 0x14, 0xa6, 0x15, 0x97, 0x16, 0xf2, 0x18, 0x4c, 0x1b, 0xb6, 0x24, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x37, 0x01, 0x6d, 0x02, 0xda, 0x04, 0x47, 0x07, 0x7e, 0x08, 0xb4, 0x09, 0xeb, 0x0a, 0x1a, 0x0d, 0x51, 0x0e, 0xbe, 0x10, 0xf4, 0x11, 0x61, 0x14, 0x1c, 0x15, 0x14, 0x16, 0x81, 0x18
.byte 0xee, 0x1a, 0xa3, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0x6d, 0x03, 0xb6, 0x05, 0xff, 0x07, 0x23, 0x09, 0x6c, 0x0b, 0x90, 0x0c, 0x9f, 0x0e, 0xc3, 0x0f, 0x0c, 0x12, 0x30, 0x13
.byte 0x79, 0x15, 0x29, 0x16, 0x12, 0x17, 0x5b, 0x19, 0xa4, 0x1b, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x02, 0xa4, 0x03, 0x11, 0x06, 0x7e, 0x08, 0xb4, 0x09, 0x22, 0x0c, 0x58, 0x0d
.byte 0x87, 0x0f, 0xbe, 0x10, 0x2b, 0x13, 0x61, 0x14, 0xcf, 0x16, 0x89, 0x17, 0x81, 0x18, 0xee, 0x1a, 0x5c, 0x1d, 0xa3, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xda, 0x06, 0xff, 0x07, 0x48, 0x0a
.byte 0x90, 0x0c, 0xb5, 0x0d, 0xd9, 0x0e, 0xfe, 0x0f, 0x0c, 0x12, 0x30, 0x13, 0x79, 0x15, 0xe6, 0x18, 0x2f, 0x1b, 0xdf, 0x1b, 0xc8, 0x1c, 0x11, 0x1f, 0x5a, 0x21, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x04, 0x07, 0x30, 0x08, 0x97, 0x09, 0xee, 0x0b, 0x19, 0x0d, 0x45, 0x0e, 0x70, 0x0f, 0x8b, 0x11, 0xb6, 0x12, 0x0d, 0x15, 0x8f, 0x18, 0xe6, 0x1a, 0x9a, 0x1b, 0x89, 0x1c, 0xe0, 0x1e
.byte 0x37, 0x21, 0xb9, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x08, 0x89, 0x0c, 0xc9, 0x0d, 0xe0, 0x0f, 0xec, 0x10, 0xf7, 0x11, 0x00, 0x00, 0xd8, 0x13, 0xe4, 0x14, 0xfa, 0x16, 0x1c, 0x1a
.byte 0x33, 0x1c, 0xd4, 0x1c, 0xaa, 0x1d, 0xc0, 0x1f, 0xd7, 0x21, 0xf9, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x72, 0x08, 0xab, 0x0c, 0xf0, 0x0d, 0x0c, 0x10, 0x1a, 0x11, 0x29, 0x12, 0x00, 0x00
.byte 0x0f, 0x14, 0x1d, 0x15, 0xce, 0x16, 0xf9, 0x19, 0x15, 0x1c, 0xb7, 0x1c, 0x90, 0x1d, 0xac, 0x1f, 0xc9, 0x21, 0xf3, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xae, 0x08, 0x05, 0x0d, 0x53, 0x0e
.byte 0x0f, 0x10, 0x25, 0x11, 0x3b, 0x12, 0x00, 0x00, 0xc0, 0x13, 0x7c, 0x15, 0xc9, 0x16, 0x0b, 0x1a, 0x36, 0x1c, 0x00, 0x00, 0x62, 0x1e, 0xb9, 0x22, 0x00, 0x00, 0xfa, 0x25, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x15, 0x0b, 0xda, 0x0d, 0x84, 0x0f, 0x74, 0x11, 0x00, 0x00, 0xd7, 0x12, 0x00, 0x00, 0xc7, 0x14, 0xff, 0x16, 0xa8, 0x18, 0x32, 0x1e, 0xf8, 0x20, 0x00, 0x00, 0xbd, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0d, 0x2a, 0x10, 0x00, 0x00, 0x0d, 0x12, 0x00, 0x00, 0x66, 0x13, 0x00, 0x00, 0x48, 0x15, 0x70, 0x17, 0x0e, 0x19, 0x71, 0x1e
.byte 0x23, 0x21, 0x00, 0x00, 0xd4, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x0d, 0x0e, 0x10, 0x00, 0x00, 0xed, 0x11, 0x00, 0x00, 0x44, 0x13, 0x00, 0x00
.byte 0x23, 0x15, 0x47, 0x17, 0xe2, 0x18, 0x3c, 0x1e, 0xe9, 0x20, 0x00, 0x00, 0x96, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x0d, 0xd6, 0x0f, 0x00, 0x00
.byte 0xaf, 0x11, 0x00, 0x00, 0x01, 0x13, 0x00, 0x00, 0xda, 0x14, 0xf6, 0x16, 0x8c, 0x18, 0xd3, 0x1d, 0x77, 0x20, 0x00, 0x00, 0x1a, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0xa9, 0x0d, 0x64, 0x10, 0x00, 0x00, 0x4d, 0x12, 0x00, 0x00, 0xab, 0x13, 0x00, 0x00, 0x94, 0x15, 0xc4, 0x17, 0x67, 0x19, 0xde, 0x1e, 0x99, 0x21, 0x00, 0x00, 0x55, 0x24, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0d, 0xf2, 0x0f, 0x00, 0x00, 0xce, 0x11, 0x00, 0x00, 0x22, 0x13, 0x00, 0x00, 0xfe, 0x14, 0x1e, 0x17, 0xc7, 0x19, 0x17, 0x1f
.byte 0xbf, 0x21, 0x00, 0x00, 0x68, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x0d, 0x81, 0x10, 0x00, 0x00, 0x6e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x5b, 0x14, 0x8f, 0x16, 0x4f, 0x19, 0xcf, 0x1e, 0x90, 0x21, 0x00, 0x00, 0x50, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x08, 0x90, 0x0d, 0x47, 0x10
.byte 0x00, 0x00, 0xa2, 0x11, 0x58, 0x14, 0xb4, 0x15, 0x25, 0x18, 0x80, 0x19, 0xdb, 0x1a, 0xed, 0x1e, 0x00, 0x00, 0xbd, 0x1f, 0xa3, 0x21, 0x5a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x16, 0x09, 0x99, 0x0a, 0xa0, 0x0d, 0x00, 0x00, 0x24, 0x0f, 0x2b, 0x12, 0xaf, 0x13, 0x68, 0x16, 0xec, 0x17, 0x70, 0x19, 0xfa, 0x1d, 0x00, 0x00, 0xe3, 0x1e, 0x02, 0x21, 0x09, 0x24
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x08, 0x48, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x83, 0x0d, 0x73, 0x10, 0xea, 0x11, 0x8f, 0x14, 0xe9, 0x16, 0x61, 0x18, 0x40, 0x1e
.byte 0x00, 0x00, 0x22, 0x1f, 0x30, 0x21, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x09, 0xd5, 0x0e, 0x51, 0x10, 0xca, 0x12, 0x07, 0x14, 0x7f, 0x16, 0x00, 0x00
.byte 0xb9, 0x18, 0xb3, 0x1a, 0x00, 0x00, 0xa5, 0x1f, 0x00, 0x00, 0x63, 0x20, 0x1e, 0x22, 0x97, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0a, 0x6b, 0x0f, 0xf6, 0x10
.byte 0x04, 0x13, 0x4d, 0x14, 0xdf, 0x16, 0x00, 0x00, 0x28, 0x18, 0x37, 0x1a, 0x00, 0x00, 0x11, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x20, 0xc7, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0xc0, 0x0b, 0xaf, 0x0e, 0x73, 0x10, 0x81, 0x12, 0xf9, 0x13, 0xe9, 0x16, 0x00, 0x00, 0x61, 0x18, 0xba, 0x1a, 0x00, 0x00, 0x9a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x0c, 0x61, 0x0f, 0x00, 0x00, 0x88, 0x11, 0x12, 0x13, 0x25, 0x16, 0x00, 0x00, 0xaf, 0x17, 0x25, 0x1a, 0x00, 0x00, 0x4c, 0x20
.byte 0x00, 0x00, 0x00, 0x00, 0x5f, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0c, 0x42, 0x0f, 0x00, 0x00, 0x65, 0x11, 0xec, 0x12, 0xf9, 0x15, 0x00, 0x00
.byte 0x80, 0x17, 0xf1, 0x19, 0x00, 0x00, 0x0b, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x06, 0x0f, 0x00, 0x00
.byte 0x21, 0x11, 0xa1, 0x12, 0xa2, 0x15, 0x00, 0x00, 0x23, 0x17, 0x8a, 0x19, 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x22, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x80, 0x0c, 0xa0, 0x0f, 0x00, 0x00, 0xd0, 0x11, 0x60, 0x13, 0x80, 0x16, 0x00, 0x00, 0x10, 0x18, 0x90, 0x1a, 0x00, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x47, 0x10, 0x00, 0x00, 0x8e, 0x12, 0x00, 0x00, 0xcf, 0x15, 0x00, 0x00, 0x70, 0x17, 0x0b, 0x1a, 0x00, 0x00, 0x8d, 0x20
.byte 0x00, 0x00, 0x00, 0x00, 0xcf, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04, 0x95, 0x06, 0xc7, 0x08, 0xf9, 0x0a, 0x12, 0x0c
.byte 0x0c, 0x0e, 0xae, 0x10, 0xdf, 0x12, 0xf8, 0x13, 0x2a, 0x16, 0xd3, 0x16, 0xb3, 0x17, 0xe5, 0x19, 0x17, 0x1c, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x14, 0x02, 0x28, 0x04
.byte 0x3c, 0x06, 0x50, 0x08, 0x64, 0x0a, 0x6e, 0x0b, 0x4c, 0x0d, 0xcb, 0x0f, 0xde, 0x11, 0xe8, 0x12, 0xfc, 0x14, 0x9c, 0x15, 0x71, 0x16, 0x85, 0x18, 0x99, 0x1a, 0xe8, 0x22, 0xfc, 0x24, 0x10, 0x27
.byte 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04, 0x95, 0x06, 0x00, 0x00, 0xc7, 0x08, 0xe0, 0x09, 0xda, 0x0b, 0x7c, 0x0e, 0xae, 0x10, 0xc7, 0x11, 0xf8, 0x13, 0xa1, 0x14, 0x82, 0x15, 0xb3, 0x17
.byte 0xe5, 0x19, 0xac, 0x22, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00, 0x2a, 0x01, 0x53, 0x02, 0xa6, 0x04, 0xfa, 0x06, 0x00, 0x00, 0x4d, 0x09, 0x77, 0x0a, 0x8e, 0x0c, 0x59, 0x0f, 0xac, 0x11, 0xd5, 0x12
.byte 0x29, 0x15, 0xdb, 0x15, 0xc9, 0x16, 0x1d, 0x19, 0x70, 0x1b, 0xbd, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x22, 0x02, 0x45, 0x04, 0x67, 0x06, 0x8a, 0x08, 0xac, 0x0a, 0xbd, 0x0b
.byte 0xa9, 0x0d, 0x39, 0x10, 0x5b, 0x12, 0x6d, 0x13, 0x8f, 0x15, 0x33, 0x16, 0x0e, 0x17, 0x30, 0x19, 0x53, 0x1b, 0xee, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x03, 0x1a, 0x07, 0xa7, 0x0a
.byte 0x00, 0x00, 0x00, 0x00, 0x34, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x11, 0x4f, 0x15, 0x00, 0x00, 0x69, 0x1c, 0x83, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x48, 0x0a, 0xb5, 0x0d, 0x22, 0x11, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x14, 0x00, 0x00, 0xa5, 0x17, 0x5b, 0x19, 0x12, 0x1b, 0x7f, 0x1e, 0x00, 0x00, 0x86, 0x1f, 0xec, 0x21, 0x59, 0x25
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x16, 0x09, 0x24, 0x0f, 0x2b, 0x12, 0x00, 0x00, 0xaf, 0x13, 0xb6, 0x16, 0x00, 0x00, 0x70, 0x19, 0xf3, 0x1a, 0x77, 0x1c, 0x7e, 0x1f
.byte 0x00, 0x00, 0x67, 0x20, 0x85, 0x22, 0x8c, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x08, 0x93, 0x0e, 0x7e, 0x11, 0x00, 0x00, 0xf3, 0x12, 0xdd, 0x15, 0x00, 0x00
.byte 0x7d, 0x18, 0xf2, 0x19, 0x67, 0x1b, 0xc6, 0x1f, 0x00, 0x00, 0xa6, 0x20, 0xb1, 0x22, 0x9b, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x09, 0x7d, 0x0b, 0xc6, 0x0e
.byte 0x00, 0x00, 0x6a, 0x10, 0xb2, 0x13, 0x00, 0x00, 0xa6, 0x16, 0x4a, 0x18, 0xef, 0x19, 0xdb, 0x1e, 0x00, 0x00, 0xd7, 0x1f, 0x23, 0x22, 0x6c, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x87, 0x09, 0x1e, 0x0b, 0x05, 0x0d, 0x00, 0x00, 0x9c, 0x0e, 0xc9, 0x11, 0x00, 0x00, 0xa5, 0x14, 0x2f, 0x17, 0xc5, 0x18, 0x1f, 0x1f, 0x00, 0x00, 0x13, 0x20, 0x4c, 0x22, 0x79, 0x25
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x0a, 0xd6, 0x0f, 0x6b, 0x11, 0x0f, 0x14, 0x00, 0x00, 0xb3, 0x16, 0x00, 0x00, 0x13, 0x19, 0x2f, 0x1b, 0x00, 0x00, 0x77, 0x20
.byte 0x00, 0x00, 0x42, 0x21, 0x1a, 0x23, 0xbe, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x08, 0x0d, 0x0e, 0xdd, 0x10, 0x00, 0x00, 0x00, 0x00, 0xac, 0x13, 0x14, 0x15
.byte 0x9b, 0x17, 0x03, 0x19, 0x6b, 0x1a, 0xa2, 0x1e, 0x00, 0x00, 0x7a, 0x1f, 0x71, 0x21, 0x41, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x07, 0xc0, 0x0a, 0x56, 0x0e
.byte 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x00, 0x00, 0x25, 0x15, 0xf0, 0x16, 0xba, 0x18, 0x50, 0x1c, 0x00, 0x00, 0x1a, 0x1e, 0x7b, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x4d, 0x06, 0x9a, 0x0c, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x12, 0x00, 0x00, 0xbd, 0x15, 0x50, 0x17, 0xe3, 0x18, 0x9d, 0x1d, 0x00, 0x00, 0x30, 0x1f, 0xea, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x08, 0x93, 0x0e, 0x7e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x68, 0x14, 0x00, 0x00, 0x08, 0x17, 0x7d, 0x18, 0xf2, 0x19, 0x51, 0x1e
.byte 0x00, 0x00, 0xc6, 0x1f, 0x26, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x07, 0xf7, 0x09
.byte 0x8d, 0x0d, 0x56, 0x12, 0x52, 0x16, 0x50, 0x18, 0x4d, 0x1c, 0x7f, 0x1d, 0x17, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x03
.byte 0x00, 0x00, 0x29, 0x05, 0xd8, 0x08, 0x88, 0x0c, 0x1c, 0x0f, 0x2a, 0x13, 0x60, 0x15, 0x0f, 0x19, 0xbe, 0x1c, 0x38, 0x1e, 0xb1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0xbf, 0x04, 0x00, 0x00, 0x35, 0x06, 0xdb, 0x09, 0x82, 0x0d, 0x10, 0x10, 0xfc, 0x12, 0x2d, 0x15, 0xd3, 0x18, 0x7a, 0x1c, 0x4d, 0x1e, 0xc3, 0x1f, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x61, 0x02, 0xc6, 0x05, 0xcb, 0x06, 0x27, 0x08, 0x8d, 0x0b, 0xf2, 0x0e, 0x53, 0x11, 0x0a, 0x14, 0x14, 0x16, 0x7a, 0x19
.byte 0xdf, 0x1c, 0xe9, 0x1e, 0x45, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x2a, 0x04, 0x5d, 0x07, 0x53, 0x08, 0x9b, 0x09, 0xcf, 0x0c, 0x02, 0x10
.byte 0x40, 0x12, 0xd0, 0x14, 0xbc, 0x16, 0xef, 0x19, 0x23, 0x1d, 0x61, 0x1f, 0xa9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x02, 0x21, 0x04, 0x4e, 0x07
.byte 0x42, 0x08, 0x87, 0x09, 0xb4, 0x0c, 0xe1, 0x0f, 0x1a, 0x12, 0xa5, 0x14, 0x8c, 0x16, 0xb9, 0x19, 0xe6, 0x1c, 0x71, 0x1f, 0xb6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x85, 0x02, 0x18, 0x04, 0x3f, 0x07, 0x31, 0x08, 0x73, 0x09, 0x9a, 0x0c, 0xc0, 0x0f, 0xf5, 0x11, 0x7a, 0x14, 0x5e, 0x16, 0x84, 0x19, 0xab, 0x1c, 0x81, 0x1f, 0xc3, 0x20, 0x00, 0x00
.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x02, 0xf8, 0x03, 0x05, 0x07, 0xef, 0x07, 0x28, 0x09, 0x35, 0x0c, 0x42, 0x0f, 0x65, 0x11, 0xd6, 0x13, 0xab, 0x15, 0xb8, 0x18
.byte 0xc5, 0x1b, 0x36, 0x1e, 0x6f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x89, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0xf4, 0x00, 0x8a, 0x02, 0xb7, 0x05, 0xab, 0x06, 0xf1, 0x07, 0x1e, 0x0b, 0x4b, 0x0e
.byte 0x84, 0x10, 0x0e, 0x13, 0xf6, 0x14, 0x23, 0x18, 0x50, 0x1b, 0xda, 0x1d, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x79, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x13, 0x01, 0xde, 0x02, 0x00, 0x00
.byte 0xf1, 0x03, 0x00, 0x00, 0x87, 0x07, 0x1c, 0x0b, 0x9e, 0x0d, 0x7c, 0x10, 0xa3, 0x12, 0x38, 0x16, 0xce, 0x19, 0xab, 0x1c, 0x1a, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x45, 0x25, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0x21, 0x01, 0x42, 0x02, 0x84, 0x04, 0xc6, 0x06, 0x00, 0x00, 0x08, 0x09, 0x29, 0x0a, 0x31, 0x0c, 0xe7, 0x0e, 0x29, 0x11, 0x4a, 0x12, 0x8c, 0x14, 0x3a, 0x15, 0x21, 0x16, 0x63, 0x18
.byte 0xa5, 0x1a, 0xce, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x02, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0xd0, 0x07, 0x6b, 0x0a, 0x05, 0x0d, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x14, 0x02, 0x28, 0x04, 0x3c, 0x06, 0x50, 0x08, 0x64, 0x0a, 0x6e, 0x0b
.byte 0x4c, 0x0d, 0xcb, 0x0f, 0xde, 0x11, 0xe8, 0x12, 0xfc, 0x14, 0x9c, 0x15, 0x71, 0x16, 0x85, 0x18, 0x99, 0x1a, 0xfc, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0xf9, 0x01, 0xf2, 0x03
.byte 0xeb, 0x05, 0xe4, 0x07, 0xdd, 0x09, 0xda, 0x0a, 0xa0, 0x0c, 0xfe, 0x0e, 0xf7, 0x10, 0xf4, 0x11, 0xed, 0x13, 0x85, 0x14, 0x4f, 0x15, 0x48, 0x17, 0x41, 0x19, 0x1e, 0x23, 0x17, 0x25, 0x10, 0x27
.byte 0x00, 0x00, 0xbc, 0x00, 0xf4, 0x01, 0x65, 0x04, 0x21, 0x05, 0x1b, 0x06, 0x8c, 0x08, 0xfd, 0x0a, 0xb2, 0x0c, 0xa6, 0x0e, 0x1d, 0x10, 0x8e, 0x12, 0x00, 0x00, 0x82, 0x14, 0x7c, 0x15, 0xed, 0x17
.byte 0x00, 0x00, 0x22, 0x24, 0x5b, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x47, 0x01, 0xd4, 0x03, 0x9e, 0x05, 0xa3, 0x06, 0x31, 0x09, 0x00, 0x00, 0xfa, 0x0a, 0x05, 0x0d, 0x8d, 0x0e, 0x1b, 0x11
.byte 0x00, 0x00, 0xa9, 0x13, 0xae, 0x14, 0x3c, 0x17, 0x00, 0x00, 0x00, 0x24, 0x46, 0x25, 0x10, 0x27, 0x00, 0x00, 0x98, 0x04, 0x31, 0x09, 0xc9, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x62, 0x12, 0xae, 0x14, 0x47, 0x19, 0xdf, 0x1d, 0x78, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04
.byte 0x95, 0x06, 0x00, 0x00, 0xc7, 0x08, 0xe0, 0x09, 0xda, 0x0b, 0x7c, 0x0e, 0xae, 0x10, 0xc7, 0x11, 0xf8, 0x13, 0xa1, 0x14, 0x82, 0x15, 0xb3, 0x17, 0xe5, 0x19, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x5f, 0x08, 0xf3, 0x0d, 0x52, 0x16, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x50, 0x02, 0x9f, 0x04, 0xef, 0x06, 0x00, 0x00, 0x3f, 0x09, 0x67, 0x0a, 0x7b, 0x0c, 0xa3, 0x0d, 0x7c, 0x0f, 0xa4, 0x10
.byte 0xcc, 0x11, 0x7e, 0x12, 0x6a, 0x13, 0xba, 0x15, 0x0a, 0x18, 0xc0, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x8c, 0x05, 0xc5, 0x07, 0xfd, 0x09, 0x00, 0x00, 0x35, 0x0c, 0x51, 0x0d
.byte 0x50, 0x0f, 0x6d, 0x10, 0xa5, 0x12, 0xc1, 0x13, 0xf9, 0x15, 0xa3, 0x16, 0x87, 0x17, 0xbf, 0x19, 0xf7, 0x1b, 0xd8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0xb6, 0x05, 0xff, 0x07
.byte 0x48, 0x0a, 0x00, 0x00, 0x6c, 0x0b, 0x90, 0x0c, 0x9f, 0x0e, 0xc3, 0x0f, 0x0c, 0x12, 0x30, 0x13, 0x79, 0x15, 0x29, 0x16, 0x12, 0x17, 0x5b, 0x19, 0xa4, 0x1b, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x28, 0x02, 0x79, 0x06, 0xa2, 0x08, 0xca, 0x0a, 0x00, 0x00, 0xf3, 0x0c, 0x07, 0x0e, 0xf8, 0x0f, 0x0d, 0x11, 0x35, 0x13, 0x49, 0x14, 0x72, 0x16, 0x18, 0x17, 0xf5, 0x17, 0x1d, 0x1a
.byte 0x46, 0x1c, 0xe8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0xda, 0x06, 0x23, 0x09, 0x6c, 0x0b, 0x00, 0x00, 0xb5, 0x0d, 0xd9, 0x0e, 0xe7, 0x10, 0x0c, 0x12, 0x55, 0x14, 0x79, 0x15
.byte 0xc2, 0x17, 0x71, 0x18, 0x5b, 0x19, 0xa4, 0x1b, 0xed, 0x1d, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x79, 0x06, 0xca, 0x0a, 0xf3, 0x0c, 0x1b, 0x0f, 0x00, 0x00, 0x30, 0x10, 0x44, 0x11
.byte 0x35, 0x13, 0x49, 0x14, 0x72, 0x16, 0xaf, 0x19, 0xd7, 0x1b, 0x7d, 0x1c, 0x5a, 0x1d, 0x82, 0x1f, 0xab, 0x21, 0xe8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x3c, 0x08, 0x97, 0x0a
.byte 0xf1, 0x0c, 0x00, 0x00, 0x1e, 0x0e, 0x4c, 0x0f, 0x6a, 0x11, 0x97, 0x12, 0xf1, 0x14, 0x79, 0x18, 0xd3, 0x1a, 0x88, 0x1b, 0x79, 0x1c, 0xd4, 0x1e, 0x2e, 0x21, 0xb6, 0x24, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0x53, 0x07, 0x8c, 0x08, 0x03, 0x0a, 0x74, 0x0c, 0x00, 0x00, 0xac, 0x0d, 0xe5, 0x0e, 0x17, 0x11, 0x0b, 0x13, 0x7c, 0x15, 0x5e, 0x1a, 0xcf, 0x1c, 0x8b, 0x1d, 0x85, 0x1e, 0xf6, 0x20
.byte 0x00, 0x00, 0x9f, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xee, 0x08, 0x65, 0x0d, 0xbb, 0x0e, 0xf7, 0x10, 0x00, 0x00, 0x15, 0x12, 0x00, 0x00, 0x17, 0x14, 0xe0, 0x15, 0x1b, 0x18, 0x92, 0x1c
.byte 0xb0, 0x1d, 0x5b, 0x1e, 0x40, 0x1f, 0x7b, 0x21, 0x00, 0x00, 0xd5, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x8c, 0x0d, 0xe7, 0x0e, 0x29, 0x11, 0x00, 0x00, 0x4a, 0x12, 0x00, 0x00
.byte 0x52, 0x14, 0x21, 0x16, 0xef, 0x17, 0x73, 0x1c, 0x94, 0x1d, 0x42, 0x1e, 0x29, 0x1f, 0x6b, 0x21, 0x00, 0x00, 0xce, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x09, 0xf3, 0x0d, 0x59, 0x0f
.byte 0x35, 0x11, 0x00, 0x00, 0x5e, 0x12, 0x00, 0x00, 0x88, 0x13, 0x64, 0x15, 0xc9, 0x16, 0x46, 0x1a, 0x70, 0x1b, 0x00, 0x00, 0xc3, 0x1d, 0x6a, 0x22, 0x00, 0x00, 0xe6, 0x25, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0xa9, 0x0b, 0x93, 0x0e, 0x53, 0x10, 0x5d, 0x12, 0x00, 0x00, 0xd3, 0x13, 0x00, 0x00, 0x48, 0x15, 0x9d, 0x17, 0x5d, 0x19, 0x31, 0x1f, 0xa6, 0x20, 0x00, 0x00, 0x90, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0c, 0x42, 0x0f, 0x00, 0x00, 0x65, 0x11, 0x00, 0x00, 0xec, 0x12, 0x00, 0x00, 0x72, 0x14, 0xe3, 0x16, 0xb8, 0x18, 0xd3, 0x1e
.byte 0x59, 0x20, 0x00, 0x00, 0x67, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0c, 0x24, 0x0f, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0xc6, 0x12, 0x00, 0x00
.byte 0x4a, 0x14, 0xb6, 0x16, 0x87, 0x18, 0x95, 0x1e, 0x19, 0x20, 0x00, 0x00, 0x20, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x0b, 0xe9, 0x0e, 0x00, 0x00
.byte 0xff, 0x10, 0x00, 0x00, 0x7d, 0x12, 0x00, 0x00, 0xfb, 0x13, 0x5d, 0x16, 0x27, 0x18, 0x1e, 0x1e, 0x9c, 0x1f, 0x00, 0x00, 0x97, 0x22, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x67, 0x0c, 0x80, 0x0f, 0x00, 0x00, 0xac, 0x11, 0x00, 0x00, 0x39, 0x13, 0x00, 0x00, 0xc5, 0x14, 0x40, 0x17, 0x1d, 0x19, 0x50, 0x1f, 0xdd, 0x20, 0x00, 0x00, 0xf6, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x06, 0x0f, 0x00, 0x00, 0x21, 0x11, 0x00, 0x00, 0xa1, 0x12, 0x00, 0x00, 0x22, 0x14, 0x89, 0x16, 0x8a, 0x19, 0x8d, 0x1f
.byte 0x0e, 0x21, 0x00, 0x00, 0x0f, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0c, 0xa0, 0x0f, 0x00, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x60, 0x13, 0xe0, 0x15, 0x00, 0x19, 0x40, 0x1f, 0xd0, 0x20, 0x00, 0x00, 0xf0, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xda, 0x0d, 0x9f, 0x10
.byte 0x90, 0x12, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0xd3, 0x17, 0x36, 0x19, 0x99, 0x1a, 0xc0, 0x1e, 0x00, 0x00, 0x23, 0x20, 0x4b, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x4d, 0x09, 0xda, 0x0a, 0xf3, 0x0d, 0x1f, 0x10, 0x00, 0x00, 0x39, 0x13, 0x00, 0x00, 0x03, 0x16, 0x90, 0x17, 0x1d, 0x19, 0xc3, 0x1d, 0x00, 0x00, 0x50, 0x1f, 0xf6, 0x23, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x84, 0x0a, 0x52, 0x0c, 0x6c, 0x0e, 0x00, 0x00, 0x6e, 0x11, 0x00, 0x00, 0x22, 0x14, 0x89, 0x16, 0x0a, 0x18, 0x0c, 0x1e
.byte 0x00, 0x00, 0x8d, 0x1f, 0x0f, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x06, 0x02, 0x0c, 0x04, 0x12, 0x06, 0x19, 0x08, 0x1f, 0x0a, 0x22, 0x0b
.byte 0xf4, 0x0c, 0x62, 0x0f, 0x68, 0x11, 0x6b, 0x12, 0x71, 0x14, 0x0d, 0x15, 0xdc, 0x15, 0xe2, 0x17, 0xe8, 0x19, 0x0a, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0xed, 0x01, 0xd9, 0x03
.byte 0xc6, 0x05, 0xb2, 0x07, 0x9f, 0x09, 0x95, 0x0a, 0x51, 0x0c, 0xa0, 0x0e, 0x8c, 0x10, 0x83, 0x11, 0x6f, 0x13, 0x03, 0x14, 0xc8, 0x14, 0xb5, 0x16, 0xa1, 0x18, 0x37, 0x23, 0x23, 0x25, 0x10, 0x27
.byte 0x00, 0x00, 0xb6, 0x00, 0xe5, 0x01, 0x43, 0x04, 0xf9, 0x04, 0xeb, 0x05, 0x49, 0x08, 0xa7, 0x0a, 0x50, 0x0c, 0x34, 0x0e, 0xa0, 0x0f, 0xfe, 0x11, 0x00, 0x00, 0xe3, 0x13, 0xd5, 0x14, 0x33, 0x17
.byte 0x00, 0x00, 0x39, 0x24, 0x68, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0xb5, 0x03, 0x70, 0x05, 0x6e, 0x06, 0xe6, 0x08, 0x00, 0x00, 0xa2, 0x0a, 0x9c, 0x0c, 0x18, 0x0e, 0x91, 0x10
.byte 0x00, 0x00, 0x09, 0x13, 0x07, 0x14, 0x7f, 0x16, 0x00, 0x00, 0x19, 0x24, 0x55, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x01, 0xaf, 0x03, 0x68, 0x05, 0xa2, 0x06, 0x17, 0x09, 0x00, 0x00
.byte 0xcf, 0x0a, 0xc6, 0x0c, 0x40, 0x0e, 0xb5, 0x10, 0x00, 0x00, 0x2a, 0x13, 0x25, 0x14, 0x9a, 0x16, 0x00, 0x00, 0x1d, 0x24, 0x58, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x31, 0x01, 0x93, 0x03
.byte 0x3d, 0x05, 0x6e, 0x06, 0xd0, 0x08, 0x00, 0x00, 0x7b, 0x0a, 0x63, 0x0c, 0xd1, 0x0d, 0x32, 0x10, 0x00, 0x00, 0xc5, 0x13, 0xb9, 0x14, 0x1b, 0x17, 0x00, 0x00, 0x34, 0x24, 0x65, 0x25, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x3e, 0x01, 0xbb, 0x03, 0x79, 0x05, 0xb8, 0x06, 0x35, 0x09, 0x00, 0x00, 0xf3, 0x0a, 0xf0, 0x0c, 0x6e, 0x0e, 0xeb, 0x10, 0x00, 0x00, 0xe9, 0x12, 0xe8, 0x13, 0x64, 0x16
.byte 0x00, 0x00, 0x14, 0x24, 0x52, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x54, 0x03, 0x1b, 0x05, 0x37, 0x06, 0x6f, 0x08, 0x00, 0x00, 0xfd, 0x09, 0xc3, 0x0b, 0x18, 0x0d, 0x89, 0x11
.byte 0x00, 0x00, 0x00, 0x00, 0xc1, 0x13, 0x31, 0x18, 0x00, 0x00, 0x66, 0x24, 0x82, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0xb5, 0x03, 0x70, 0x05, 0xad, 0x06, 0xa7, 0x08, 0x00, 0x00
.byte 0x62, 0x0a, 0x5d, 0x0c, 0xd8, 0x0d, 0x51, 0x10, 0x00, 0x00, 0x00, 0x00, 0xca, 0x12, 0xc2, 0x15, 0xbc, 0x17, 0x55, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00
.byte 0x68, 0x03, 0xb8, 0x04, 0xd1, 0x06, 0x00, 0x00, 0xa7, 0x08, 0xc0, 0x0a, 0x52, 0x0c, 0xf2, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x91, 0x11, 0xb6, 0x14, 0xcf, 0x16, 0x3a, 0x25, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x63, 0x03, 0xb0, 0x04, 0xc5, 0x06, 0x00, 0x00, 0x98, 0x08, 0xad, 0x0a, 0x3d, 0x0c, 0xd8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x73, 0x11, 0xd5, 0x14
.byte 0xeb, 0x16, 0x3d, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x57, 0x03, 0xa0, 0x04, 0xaf, 0x06, 0x00, 0x00, 0x7b, 0x08, 0x89, 0x0a, 0x14, 0x0c, 0xa6, 0x0e
.byte 0x00, 0x00, 0x00, 0x00, 0x38, 0x11, 0x13, 0x15, 0x21, 0x17, 0x43, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x74, 0x03, 0xc8, 0x04, 0xe9, 0x06, 0x00, 0x00
.byte 0xc5, 0x08, 0xe5, 0x0a, 0x7d, 0x0c, 0x26, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xce, 0x11, 0xfe, 0x14, 0x96, 0x16, 0x34, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x01, 0x00, 0x00
.byte 0x81, 0x03, 0xd9, 0x04, 0x01, 0x07, 0x00, 0x00, 0xe4, 0x08, 0x0c, 0x0b, 0xa9, 0x0c, 0x5b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x12, 0xbe, 0x14, 0x5c, 0x16, 0x2d, 0x25, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0xa5, 0x03, 0xf3, 0x04, 0x08, 0x07, 0x00, 0x00, 0xdb, 0x08, 0xf0, 0x0a, 0x8b, 0x0d, 0x25, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x5b, 0x15
.byte 0xeb, 0x16, 0x3d, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x9f, 0x03, 0xea, 0x04, 0xfc, 0x06, 0x00, 0x00, 0xcc, 0x08, 0xdd, 0x0a, 0x74, 0x0d, 0x0a, 0x10
.byte 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x36, 0x15, 0xc4, 0x16, 0xfe, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0xac, 0x03, 0xfb, 0x04, 0x8e, 0x06, 0x00, 0x00
.byte 0x64, 0x08, 0x7d, 0x0a, 0x1c, 0x0d, 0xbb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x12, 0xf9, 0x14, 0x8c, 0x16, 0xf7, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00
.byte 0x24, 0x04, 0x6f, 0x05, 0xfc, 0x06, 0x00, 0x00, 0xcc, 0x08, 0xdd, 0x0a, 0x74, 0x0d, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x36, 0x15, 0xc4, 0x16, 0xfe, 0x24, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, 0xe3, 0x05, 0x00, 0x00, 0xc2, 0x07, 0xe6, 0x09, 0x93, 0x0c, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xed, 0x11, 0x9a, 0x14
.byte 0x35, 0x16, 0xec, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x02, 0x00, 0x00, 0x94, 0x04, 0x00, 0x00, 0xa8, 0x05, 0x00, 0x00, 0x8b, 0x07, 0xb3, 0x09, 0x64, 0x0c, 0x16, 0x0f
.byte 0x00, 0x00, 0x00, 0x00, 0xc8, 0x11, 0x79, 0x14, 0x17, 0x16, 0xe8, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x02, 0x00, 0x00, 0xc7, 0x04, 0x00, 0x00, 0xe7, 0x05, 0x00, 0x00
.byte 0xde, 0x07, 0x1e, 0x0a, 0xed, 0x0c, 0xbd, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x12, 0x5c, 0x15, 0x00, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00
.byte 0x80, 0x03, 0x00, 0x00, 0xaa, 0x04, 0x00, 0x00, 0xb4, 0x06, 0x09, 0x09, 0xf4, 0x0b, 0xde, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x11, 0xb3, 0x14, 0x00, 0x00, 0xbb, 0x24, 0x00, 0x00, 0x10, 0x27
.byte 0x00, 0x00, 0x31, 0x01, 0x62, 0x02, 0xc4, 0x04, 0x25, 0x07, 0x00, 0x00, 0x87, 0x09, 0xb8, 0x0a, 0xdd, 0x0c, 0x0e, 0x0e, 0xf5, 0x0f, 0x26, 0x11, 0x00, 0x00, 0xdd, 0x11, 0xd1, 0x12, 0x33, 0x15
.byte 0x95, 0x17, 0xae, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0xa9, 0x06, 0xe1, 0x08, 0x19, 0x0b, 0x00, 0x00, 0x35, 0x0c, 0x51, 0x0d, 0x50, 0x0f, 0x6d, 0x10, 0xa5, 0x12, 0xc1, 0x13
.byte 0xf9, 0x15, 0xa3, 0x16, 0x87, 0x17, 0xbf, 0x19, 0xf7, 0x1b, 0xd8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x0f, 0x07, 0x6a, 0x09, 0xc4, 0x0b, 0x00, 0x00, 0xf1, 0x0c, 0x1e, 0x0e
.byte 0x3d, 0x10, 0x6a, 0x11, 0xc4, 0x13, 0xf1, 0x14, 0x4c, 0x17, 0x01, 0x18, 0xf2, 0x18, 0x4c, 0x1b, 0xa6, 0x1d, 0xb6, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xae, 0x08, 0x05, 0x0d, 0x53, 0x0e
.byte 0x7e, 0x10, 0x00, 0x00, 0x94, 0x11, 0x00, 0x00, 0x88, 0x13, 0x44, 0x15, 0x70, 0x17, 0xc7, 0x1b, 0xf3, 0x1d, 0x99, 0x1e, 0x78, 0x1f, 0xa3, 0x21, 0x00, 0x00, 0xe4, 0x24, 0x10, 0x27, 0x00, 0x00
.byte 0x00, 0x00, 0xc7, 0x08, 0x2b, 0x0d, 0x7c, 0x0e, 0xae, 0x10, 0x00, 0x00, 0xc7, 0x11, 0x00, 0x00, 0xc0, 0x13, 0x82, 0x15, 0x43, 0x17, 0xa7, 0x1b, 0xd8, 0x1d, 0x81, 0x1e, 0x62, 0x1f, 0x94, 0x21
.byte 0x00, 0x00, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x96, 0x09, 0x61, 0x0e, 0xd1, 0x0f, 0xbc, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x12, 0xd9, 0x14, 0x4a, 0x16, 0xe2, 0x19
.byte 0x15, 0x1b, 0x00, 0x00, 0x7a, 0x1d, 0x45, 0x22, 0x00, 0x00, 0xdd, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0c, 0x24, 0x0f, 0xf5, 0x10, 0x14, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x97, 0x14, 0x03, 0x17, 0xd5, 0x18, 0xe3, 0x1e, 0x67, 0x20, 0x00, 0x00, 0x6e, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x0c, 0xe1, 0x0f, 0x00, 0x00
.byte 0x1a, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x13, 0x3b, 0x16, 0x23, 0x18, 0x7d, 0x1e, 0x13, 0x20, 0x00, 0x00, 0x40, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x9a, 0x0c, 0xc0, 0x0f, 0x00, 0x00, 0xf5, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x0d, 0x16, 0xf1, 0x17, 0x3e, 0x1e, 0xd1, 0x1f, 0x00, 0x00, 0xf8, 0x22, 0x10, 0x27
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x0c, 0x80, 0x0f, 0x00, 0x00, 0xac, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x13, 0xb4, 0x15, 0x90, 0x17, 0xc3, 0x1d
.byte 0x50, 0x1f, 0x00, 0x00, 0x6a, 0x22, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x0c, 0x24, 0x10, 0x00, 0x00, 0x67, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x14, 0x99, 0x16, 0x89, 0x18, 0xfe, 0x1e, 0x9b, 0x20, 0x00, 0x00, 0xd6, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
#include "trap_data.inc"
.global DungeonTrapsFoundTable
DungeonTrapsFoundTable:
.byte 0xb8, 0x37, 0x4c, 0x08
.byte 0xe0, 0x37, 0x4c, 0x08
.byte 0x08, 0x38, 0x4c, 0x08
.byte 0x30, 0x38, 0x4c, 0x08
.byte 0x58, 0x38, 0x4c, 0x08
.byte 0x80, 0x38, 0x4c, 0x08
.byte 0xa8, 0x38, 0x4c, 0x08
.byte 0xd0, 0x38, 0x4c, 0x08
.byte 0xf8, 0x38, 0x4c, 0x08
.byte 0x20, 0x39, 0x4c, 0x08
.byte 0x48, 0x39, 0x4c, 0x08
.byte 0x70, 0x39, 0x4c, 0x08
.byte 0x98, 0x39, 0x4c, 0x08
.byte 0xc0, 0x39, 0x4c, 0x08
.byte 0xe8, 0x39, 0x4c, 0x08
.byte 0x10, 0x3a, 0x4c, 0x08
.byte 0x38, 0x3a, 0x4c, 0x08
.byte 0x60, 0x3a, 0x4c, 0x08
.byte 0x88, 0x3a, 0x4c, 0x08
.byte 0xb0, 0x3a, 0x4c, 0x08
.byte 0xd8, 0x3a, 0x4c, 0x08
.byte 0x00, 0x3b, 0x4c, 0x08
.byte 0x28, 0x3b, 0x4c, 0x08
.byte 0x50, 0x3b, 0x4c, 0x08
.byte 0x78, 0x3b, 0x4c, 0x08
.byte 0xa0, 0x3b, 0x4c, 0x08
.byte 0xc8, 0x3b, 0x4c, 0x08
.byte 0xf0, 0x3b, 0x4c, 0x08
.byte 0x18, 0x3c, 0x4c, 0x08
.byte 0x40, 0x3c, 0x4c, 0x08
.byte 0x68, 0x3c, 0x4c, 0x08
.byte 0x90, 0x3c, 0x4c, 0x08
.byte 0xb8, 0x3c, 0x4c, 0x08
.byte 0xe0, 0x3c, 0x4c, 0x08
.byte 0x08, 0x3d, 0x4c, 0x08
.byte 0x30, 0x3d, 0x4c, 0x08
.byte 0x58, 0x3d, 0x4c, 0x08
.byte 0x80, 0x3d, 0x4c, 0x08
.byte 0xa8, 0x3d, 0x4c, 0x08
.byte 0xd0, 0x3d, 0x4c, 0x08
.byte 0xf8, 0x3d, 0x4c, 0x08
.byte 0x20, 0x3e, 0x4c, 0x08
.byte 0x48, 0x3e, 0x4c, 0x08
.byte 0x70, 0x3e, 0x4c, 0x08
.byte 0x98, 0x3e, 0x4c, 0x08
.byte 0xc0, 0x3e, 0x4c, 0x08
.byte 0xe8, 0x3e, 0x4c, 0x08
.byte 0x10, 0x3f, 0x4c, 0x08
.byte 0x38, 0x3f, 0x4c, 0x08
.byte 0x60, 0x3f, 0x4c, 0x08
.byte 0x88, 0x3f, 0x4c, 0x08
.byte 0xb0, 0x3f, 0x4c, 0x08
.byte 0xd8, 0x3f, 0x4c, 0x08
.byte 0x00, 0x40, 0x4c, 0x08
.byte 0x28, 0x40, 0x4c, 0x08
.byte 0x50, 0x40, 0x4c, 0x08
.byte 0x78, 0x40, 0x4c, 0x08
.byte 0xa0, 0x40, 0x4c, 0x08
.byte 0xc8, 0x40, 0x4c, 0x08
.byte 0xf0, 0x40, 0x4c, 0x08
.byte 0x18, 0x41, 0x4c, 0x08
.byte 0x40, 0x41, 0x4c, 0x08
.byte 0x68, 0x41, 0x4c, 0x08
.byte 0x90, 0x41, 0x4c, 0x08
.byte 0xb8, 0x41, 0x4c, 0x08
.byte 0xe0, 0x41, 0x4c, 0x08
.byte 0x08, 0x42, 0x4c, 0x08
.byte 0x30, 0x42, 0x4c, 0x08
.byte 0x58, 0x42, 0x4c, 0x08
.byte 0x80, 0x42, 0x4c, 0x08
.byte 0xa8, 0x42, 0x4c, 0x08
.byte 0xd0, 0x42, 0x4c, 0x08
.byte 0xf8, 0x42, 0x4c, 0x08
.byte 0x20, 0x43, 0x4c, 0x08
.byte 0x48, 0x43, 0x4c, 0x08
.byte 0x70, 0x43, 0x4c, 0x08
.byte 0x98, 0x43, 0x4c, 0x08
.byte 0xc0, 0x43, 0x4c, 0x08
.byte 0xe8, 0x43, 0x4c, 0x08
.byte 0x10, 0x44, 0x4c, 0x08
.byte 0x38, 0x44, 0x4c, 0x08
.byte 0x60, 0x44, 0x4c, 0x08
.byte 0x88, 0x44, 0x4c, 0x08
.byte 0xb0, 0x44, 0x4c, 0x08
.byte 0xd8, 0x44, 0x4c, 0x08
.byte 0x00, 0x45, 0x4c, 0x08
.byte 0x28, 0x45, 0x4c, 0x08
.byte 0x50, 0x45, 0x4c, 0x08
.byte 0x78, 0x45, 0x4c, 0x08
.byte 0xa0, 0x45, 0x4c, 0x08
.byte 0xc8, 0x45, 0x4c, 0x08
.byte 0xf0, 0x45, 0x4c, 0x08
.byte 0x18, 0x46, 0x4c, 0x08
.byte 0x40, 0x46, 0x4c, 0x08
.byte 0x68, 0x46, 0x4c, 0x08
.byte 0x90, 0x46, 0x4c, 0x08
.byte 0xb8, 0x46, 0x4c, 0x08
.byte 0xe0, 0x46, 0x4c, 0x08
.byte 0x08, 0x47, 0x4c, 0x08
.byte 0x30, 0x47, 0x4c, 0x08
.byte 0x58, 0x47, 0x4c, 0x08
.byte 0x80, 0x47, 0x4c, 0x08
.byte 0xa8, 0x47, 0x4c, 0x08
.byte 0xd0, 0x47, 0x4c, 0x08
.byte 0xf8, 0x47, 0x4c, 0x08
.byte 0x20, 0x48, 0x4c, 0x08
.byte 0x48, 0x48, 0x4c, 0x08
.byte 0x70, 0x48, 0x4c, 0x08
.byte 0x98, 0x48, 0x4c, 0x08
.byte 0xc0, 0x48, 0x4c, 0x08
.byte 0xe8, 0x48, 0x4c, 0x08
.byte 0x10, 0x49, 0x4c, 0x08
.byte 0x38, 0x49, 0x4c, 0x08
.byte 0x60, 0x49, 0x4c, 0x08
.byte 0x88, 0x49, 0x4c, 0x08
.byte 0xb0, 0x49, 0x4c, 0x08
.byte 0xd8, 0x49, 0x4c, 0x08
.byte 0x00, 0x4a, 0x4c, 0x08
.byte 0x28, 0x4a, 0x4c, 0x08
.byte 0x50, 0x4a, 0x4c, 0x08
.byte 0x78, 0x4a, 0x4c, 0x08
.byte 0xa0, 0x4a, 0x4c, 0x08
.byte 0xc8, 0x4a, 0x4c, 0x08
.byte 0xf0, 0x4a, 0x4c, 0x08
.byte 0x18, 0x4b, 0x4c, 0x08
.byte 0x40, 0x4b, 0x4c, 0x08
.byte 0x68, 0x4b, 0x4c, 0x08
.byte 0x90, 0x4b, 0x4c, 0x08
.byte 0xb8, 0x4b, 0x4c, 0x08
.byte 0xe0, 0x4b, 0x4c, 0x08
.byte 0x08, 0x4c, 0x4c, 0x08
.byte 0x30, 0x4c, 0x4c, 0x08
.byte 0x58, 0x4c, 0x4c, 0x08
.byte 0x80, 0x4c, 0x4c, 0x08
.byte 0xa8, 0x4c, 0x4c, 0x08
.byte 0xd0, 0x4c, 0x4c, 0x08
.byte 0xf8, 0x4c, 0x4c, 0x08
.byte 0x20, 0x4d, 0x4c, 0x08
.byte 0x48, 0x4d, 0x4c, 0x08
.byte 0x70, 0x4d, 0x4c, 0x08
.byte 0x98, 0x4d, 0x4c, 0x08
.byte 0xc0, 0x4d, 0x4c, 0x08
.byte 0xe8, 0x4d, 0x4c, 0x08
.byte 0x10, 0x4e, 0x4c, 0x08
.byte 0x38, 0x4e, 0x4c, 0x08
.byte 0x60, 0x4e, 0x4c, 0x08
.byte 0x88, 0x4e, 0x4c, 0x08
.byte 0xb0, 0x4e, 0x4c, 0x08
.4byte trap_found_out0
.4byte trap_found_out1
.4byte trap_found_out2
.4byte trap_found_out3
.4byte trap_found_out4
.4byte trap_found_out5
.4byte trap_found_out6
.4byte trap_found_out7
.4byte trap_found_out8
.4byte trap_found_out9
.4byte trap_found_out10
.4byte trap_found_out11
.4byte trap_found_out12
.4byte trap_found_out13
.4byte trap_found_out14
.4byte trap_found_out15
.4byte trap_found_out16
.4byte trap_found_out17
.4byte trap_found_out18
.4byte trap_found_out19
.4byte trap_found_out20
.4byte trap_found_out21
.4byte trap_found_out22
.4byte trap_found_out23
.4byte trap_found_out24
.4byte trap_found_out25
.4byte trap_found_out26
.4byte trap_found_out27
.4byte trap_found_out28
.4byte trap_found_out29
.4byte trap_found_out30
.4byte trap_found_out31
.4byte trap_found_out32
.4byte trap_found_out33
.4byte trap_found_out34
.4byte trap_found_out35
.4byte trap_found_out36
.4byte trap_found_out37
.4byte trap_found_out38
.4byte trap_found_out39
.4byte trap_found_out40
.4byte trap_found_out41
.4byte trap_found_out42
.4byte trap_found_out43
.4byte trap_found_out44
.4byte trap_found_out45
.4byte trap_found_out46
.4byte trap_found_out47
.4byte trap_found_out48
.4byte trap_found_out49
.4byte trap_found_out50
.4byte trap_found_out51
.4byte trap_found_out52
.4byte trap_found_out53
.4byte trap_found_out54
.4byte trap_found_out55
.4byte trap_found_out56
.4byte trap_found_out57
.4byte trap_found_out58
.4byte trap_found_out59
.4byte trap_found_out60
.4byte trap_found_out61
.4byte trap_found_out62
.4byte trap_found_out63
.4byte trap_found_out64
.4byte trap_found_out65
.4byte trap_found_out66
.4byte trap_found_out67
.4byte trap_found_out68
.4byte trap_found_out69
.4byte trap_found_out70
.4byte trap_found_out71
.4byte trap_found_out72
.4byte trap_found_out73
.4byte trap_found_out74
.4byte trap_found_out75
.4byte trap_found_out76
.4byte trap_found_out77
.4byte trap_found_out78
.4byte trap_found_out79
.4byte trap_found_out80
.4byte trap_found_out81
.4byte trap_found_out82
.4byte trap_found_out83
.4byte trap_found_out84
.4byte trap_found_out85
.4byte trap_found_out86
.4byte trap_found_out87
.4byte trap_found_out88
.4byte trap_found_out89
.4byte trap_found_out90
.4byte trap_found_out91
.4byte trap_found_out92
.4byte trap_found_out93
.4byte trap_found_out94
.4byte trap_found_out95
.4byte trap_found_out96
.4byte trap_found_out97
.4byte trap_found_out98
.4byte trap_found_out99
.4byte trap_found_out100
.4byte trap_found_out101
.4byte trap_found_out102
.4byte trap_found_out103
.4byte trap_found_out104
.4byte trap_found_out105
.4byte trap_found_out106
.4byte trap_found_out107
.4byte trap_found_out108
.4byte trap_found_out109
.4byte trap_found_out110
.4byte trap_found_out111
.4byte trap_found_out112
.4byte trap_found_out113
.4byte trap_found_out114
.4byte trap_found_out115
.4byte trap_found_out116
.4byte trap_found_out117
.4byte trap_found_out118
.4byte trap_found_out119
.4byte trap_found_out120
.4byte trap_found_out121
.4byte trap_found_out122
.4byte trap_found_out123
.4byte trap_found_out124
.4byte trap_found_out125
.4byte trap_found_out126
.4byte trap_found_out127
.4byte trap_found_out128
.4byte trap_found_out129
.4byte trap_found_out130
.4byte trap_found_out131
.4byte trap_found_out132
.4byte trap_found_out133
.4byte trap_found_out134
.4byte trap_found_out135
.4byte trap_found_out136
.4byte trap_found_out137
.4byte trap_found_out138
.4byte trap_found_out139
.4byte trap_found_out140
.4byte trap_found_out141
.4byte trap_found_out142
.4byte trap_found_out143
.4byte trap_found_out144
.4byte trap_found_out145
.4byte trap_found_out146
.4byte trap_found_out147

11
dungeon_trap.mk Executable file
View File

@@ -0,0 +1,11 @@
# Dungeon trap data
DUNGEONS_DIR = $(DATA_ASM_SUBDIR)/dungeon
DUNGEON_TRAP = $(DUNGEONS_DIR)/trap_data.inc
dungeon_trap: $(DUNGEON_TRAP);
$(DUNGEON_TRAP): $(DUNGEONS_DIR)/trap_data.json
$(DUNGEONJSON) trap pmd-red $<

53
include/code_8077274_1.h Normal file
View File

@@ -0,0 +1,53 @@
#ifndef GUARD_CODE_8077274_1_H
#define GUARD_CODE_8077274_1_H
void MuzzleTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void sub_8078E18(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void sub_8078F50(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void sub_8078FDC(struct DungeonEntity * pokemon, struct DungeonEntity * target, s16 param_3);
void IdentityItemHolders(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void BlindTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void CrossEyeVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void RestoreVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void RestorePPTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3);
void sub_80793B0(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3);
void sub_8079420(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3);
void sub_8079490(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3);
void sub_8079500(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3);
void LongTossStatusTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target);
void PierceStatusTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target);
void sub_8079618(struct DungeonEntity *pokemon, struct DungeonEntity *target, u8 newStatus, struct PokemonMove *move, u8 *message);
void sub_8079764(struct DungeonEntity * pokemon);
void sub_80797A0(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 newStatus);
void SafeguardStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void MistStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void WishStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void MagicCoatStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void LightScreenStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void ReflectStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void ProtectStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void MirrorCoatStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void EndureStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void MirrorMoveStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void Conversion2StatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void VitalThrowStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void sub_8079618(struct DungeonEntity * pokemon, struct DungeonEntity *target, u8 newStatus, struct PokemonMove *move, u8 *message);
void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 param_3, u8 param_4);
void sub_807A0CC(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void SendSleepEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 param_3, bool8 param_4);
void SendNonVolatileEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void SendImmobilizeEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target);
void SendVolatileEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target);
void SendProtectionEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target);
void SendWaitingEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 waitingStatus);
void SendLinkedEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void SendMoveEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void SendTransformEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target);
void SendEyesightEndMessage(struct DungeonEntity * pokemon,struct DungeonEntity * target);
void SendMuzzledEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target);
void sub_807A96C(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void sub_807A9B0(struct DungeonEntity * pokemon);
void sub_807A9D8(struct DungeonEntity *pokemon, struct DungeonEntity *target);
void sub_807AA30(void);
#endif // !GUARD_CODE_8077274_1_H

View File

@@ -4,5 +4,6 @@
#include "dungeon_entity.h"
void DecideAction(struct DungeonEntity *pokemon);
u8 sub_8075BF4(struct DungeonEntity * pokemon, s32 param_2);
#endif

View File

@@ -99,7 +99,9 @@ struct DungeonEntityData
/* 0x8C */ u8 IQSkillsSelected[4]; // IQ skills selected in the IQ skills menu.
/* 0x90 */ u8 IQSkillsEnabled[4];
/* 0x94 */ u8 tactic;
u8 fill95[0xA4 - 0x95];
u8 fill95[0x9C - 0x95];
/* 0x9C */ u32 unk9C;
/* 0xA0 */ u32 unkA0;
/* 0xA4 */ u8 clientType;
u8 fillA5[0xA8 - 0xA5];
// Statuses are split into groups based on which ones can't overlap.
@@ -133,7 +135,8 @@ struct DungeonEntityData
/* 0xCC */ u8 cursedDamageTimer;
u8 fillCD[0xD0 - 0xCD];
/* 0xD0 */ u8 linkedStatus;
u8 fillD1[0xD9 - 0xD1];
u8 fillD1[0xD8 - 0xD1];
/* 0xD8 */ u8 unkD8;
/* 0xD9 */ u8 linkedStatusTurnsLeft;
/* 0xDA */ u8 linkedStatusDamageTimer;
u8 fillDB;
@@ -146,8 +149,8 @@ struct DungeonEntityData
/* 0xE5 */ u8 transformStatusTurnsLeft;
u8 fillE6[0xE8 - 0xE6];
/* 0xE8 */ u8 eyesightStatus;
u8 fillE9;
/* 0xEA */ u8 eyesightStatusTurnsLeft;
/* 0xE9 */ u8 eyesightStatusTurnsLeft;
/* 0xEA */ u8 unkEA;
u8 fillEB;
/* 0xEC */ bool8 muzzledStatus;
/* 0xED */ u8 muzzledTurnsLeft;
@@ -168,7 +171,8 @@ struct DungeonEntityData
// This is done by going to the teammate's held item in the toolbox and selecting "Use".
/* 0xFC */ bool8 useHeldItem;
/* 0xFD */ u8 perishSongTimer; // When this reaches 0, the Pokémon faints from Perish Song. Doubles as a bool for whether the Pokémon is afflicted by Perish Song.
u8 fillFE[0x100 - 0xFE];
u8 unkFE;
u8 unkFF;
/* 0x100 */ u8 targetingDecoy; // If the Pokémon is targeting a decoy, this indicates whether the decoy target is a team or wild Pokémon.
/* 0x104 */ s32 movementSpeed;
// The turn counter for movement speed up/down is split into five timers each. Multiple timers are used if the Pokémon is affected by multiple
@@ -189,11 +193,15 @@ struct DungeonEntityData
u8 fill146;
/* 0x147 */ bool8 waiting; // True if an AI Pokémon decided to do nothing this turn.
/* 0x148 */ bool8 attacking;
u8 fill149[0x14E - 0x149];
/* 0x149 */ u8 unk149;
/* 0x14A */ u8 unk14A;
u8 fill14B[0x14E - 0x14B];
/* 0x14E */ u16 visualFlags;
/* 0x150 */ u16 previousVisualFlags;
/* 0x152 */ u8 unk152;
u8 fill153[0x15A - 0x153];
u8 fill153[0x158 - 0x153];
u8 unk158;
u8 unk159;
u8 unk15A;
u8 unk15B;
u8 unk15C;
@@ -265,7 +273,9 @@ struct DungeonEntity
/* 0x50 */ u16 spriteBaseForDirection;
u8 fill52[0x54 - 0x52];
/* 0x54 */ u16 spriteGlobalIndex;
u8 fill56[0x6A - 0x56];
u8 fill56[0x64 - 0x56];
u32 unk64;
u8 fill68[2];
/* 0x6A */ u8 unk6A;
/* 0x6A */ u8 unk6B;
/* 0x6C */ u8 facingDir;

View File

@@ -61,7 +61,8 @@ struct DungeonGlobalData
u8 fill673[0x674 - 0x673];
u8 unk674;
u8 unk675;
u8 unk676[0x68A - 0x676];
/* 0x676 */ bool8 itemHoldersIdentified;
u8 unk677[0x68A - 0x677];
/* 0x68A */ u8 unk68A;
u8 fill68B[0x363C - 0x68B];
/* 0x363C */ u8 expYieldRankings[NUM_SPECIES];
@@ -110,7 +111,11 @@ struct DungeonGlobalData
/* 0x1358C */ struct DungeonEntity *wildPokemon[DUNGEON_MAX_WILD_POKEMON];
/* 0x135CC */ struct DungeonEntity *allPokemon[DUNGEON_MAX_POKEMON]; // Contains both team and wild Pokémon
/* 0x1361C */ struct DungeonEntity *clientPokemon[2]; // Not sure how large this array is.
u8 fill13624[0x181E8 - 0x13624];
u8 fill13624[0x17B30 - 0x13624];
/* 0x17B30 */ u32 unk17B30;
/* 0x17B34 */ u8 fillunk1734[0x17B3C - 0x17B34];
/* 0x17B30 */ u32 unk17B3C;
u8 fill17B40[0x181E8 - 0x17B40];
/* 0x181E8 */ struct Position posScreenWorld;
/* 0x181EC */ struct Position prevPosScreenWorld;
/* 0x181F0 */ struct Position posScreenPixel;

View File

@@ -10,7 +10,7 @@ struct unkStruct_203B204
// size: 0x108
u32 unk0;
s32 currState;
u32 unk8;
u32 fallbackState;
u32 chosenAmount;
u32 unk10;
struct MenuItem unk14[8];

View File

@@ -20,6 +20,8 @@ void PlayFanfareSE(u16 songIndex, u16 volume);
void StopFanfareSE(u16 songIndex);
void FadeOutFanfareSE(u16 songIndex, u16 speed);
bool8 IsFanfareSEPlaying(u16 songIndex);
void SoundBiasReset(void);
void SoundBiasSet(void);
void nullsub_19(void);
void nullsub_20(u16 songIndex);

View File

@@ -190,6 +190,8 @@ void CopySpeciesNametoBuffer(u8 * buffer, s16 index);
void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index);
void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index);
void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum);
void sub_808D9DC(u8 *buffer, struct PokemonStruct2 *param_2, s32 colorNum);
void sub_808DA0C(u8 *buffer, struct PokemonStruct2 *param_2);
void PeekPokemonItem(s16 index_, struct HeldItem* item);
void GivePokemonItem(s16 index_, struct HeldItem* item);
bool8 IsPokemonRenamed(struct PokemonStruct* pokemon);

15
include/text_util.h Normal file
View File

@@ -0,0 +1,15 @@
#ifndef GUARD_TEXT_UTIL_H
#define GUARD_TEXT_UTIL_H
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
u32 sub_80922E4(u32 r0);
void CopyStringtoBuffer(u8 *buffer, u8 *string);
void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size);
const char *GetUnformattedTypeString(u8 type);
const char * GetFormattedTypeString(u8 type);
u8 sub_8092354(u8 index);
u8 sub_8092364(u8 index);
void CopyAbilityNametoBuffer(char *buffer, u8 index);
u8 *GetAbilityDescription(u8 index);
#endif

View File

@@ -243,10 +243,11 @@ SECTIONS {
asm/code_8075BA4.o(.text);
src/status.o(.text);
asm/code_8077274.o(.text);
src/code_8077274_1.o(.text);
asm/code_8077274_1.o(.text);
src/dungeon_ai_movement.o(.text);
asm/code_807B2D8.o(.text);
src/dungeon_ai_movement_1.o(.text);
asm/code_807BB78.o(.text);
src/dungeon_ai_attack.o(.text);
asm/code_807CABC.o(.text);
src/targeting_flags.o(.text);

View File

@@ -11,16 +11,12 @@ struct AdventureLog
/* 0x1A */ s16 unk1A;
/* 0x1C */ s16 unk1C;
/* 0x1E */ s16 currPage;
u16 unk20;
s16 unk20;
u8 fill22[0x34 - 0x22];
u32 unk34;
struct UnkTextStruct2 *unk38;
struct UnkTextStruct2 unk3C[3];
u8 fill84[0x9C - 0x84];
u8 unk9C;
/* 0x9D */ u8 currPage_u8;
u8 unk9E;
u8 unk9F;
struct UnkTextStruct2 unk3C[4];
u8 unk9C[4];
};
extern struct AdventureLog *gAdventureLog;
@@ -79,7 +75,7 @@ u32 CreateAdventureLogScreen(u32 param_1)
gAdventureLog->unk38 = &gAdventureLog->unk3C[param_1];
sub_8006518(gAdventureLog->unk3C);
gAdventureLog->unk3C[gAdventureLog->unk34] = gUnknown_80E2008;
gAdventureLog->unk38->unk14 = &gAdventureLog->unk9C;
gAdventureLog->unk38->unk14 = gAdventureLog->unk9C;
ResetUnusedInputStruct();
sub_800641C(gAdventureLog->unk3C,1,1);
@@ -134,10 +130,10 @@ void sub_8032084(void)
{
u32 sVar2;
gAdventureLog->unk9C = gAdventureLog->unk20;
gAdventureLog->currPage_u8 = gAdventureLog->currPage;
gAdventureLog->unk9E = 0xb;
gAdventureLog->unk9F = 0;
gAdventureLog->unk9C[0] = gAdventureLog->unk20;
gAdventureLog->unk9C[1]= gAdventureLog->currPage;
gAdventureLog->unk9C[2]= 0xb;
gAdventureLog->unk9C[3]= 0;
// So a sign extend..
sVar2 = sub_80095E4(gAdventureLog->unk1A,0xc) + 2 << 0x10;
// TODO needs asr r3, r0, r16
@@ -225,7 +221,7 @@ void DisplayAdventureLog(void)
// Draw Header
xxx_call_draw_string(r6, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0);
r4 += 4;
r6 = r4 + gAdventureLog->unk9E * 8;
r6 = r4 + gAdventureLog->unk9C[2] * 8;
// Draw Page #
sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34);

View File

@@ -3,9 +3,7 @@
#include "gba/gba.h"
#include "config.h"
#include "global.h"
extern void SoundBiasReset(void);
extern void SoundBiasSet(void);
#include "music.h"
extern u32 gUnknown_202DB60[2];
extern u16 gUnknown_202DB30[2][8];

View File

@@ -13,13 +13,12 @@
struct unkStruct_203B258
{
// size: 0xA0
u8 fill0[0x14];
u32 unk14;
u8 fill0[0x18];
u16 unk18;
u16 unk1A;
u16 unk1C;
u16 unk1E;
u16 unk20;
s16 unk1C;
s16 unk1E;
s16 unk20;
u16 unk22;
u8 unk24[0x34 - 0x24];
u32 unk34;

View File

@@ -7,6 +7,7 @@
#include "dungeon_random.h"
#include "number_util.h"
#include "moves.h"
#include "code_8077274_1.h"
extern u8 *gUnknown_80F89F4[];
extern u8 gAvailablePokemonNames[0x58];
@@ -40,18 +41,11 @@ extern void sub_8076D10(struct DungeonEntity *pokemon, struct DungeonEntity *r1)
extern void LevelDownTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32 r2);
extern void sub_8078B5C(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32);
extern void SetMessageArgument(u8 *buffer, struct DungeonEntity *r1, u32);
extern void sub_807A290(struct DungeonEntity *pokemon, struct DungeonEntity *r1);
extern void sub_80522F4(struct DungeonEntity *pokemon, struct DungeonEntity *r1, const char[]);
extern void RestoreVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1);
extern void sub_8077910(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u32);
extern void sub_80791D8(struct DungeonEntity *pokemon, struct DungeonEntity *r1);
extern void BlindTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1);
extern void HealTargetHP(struct DungeonEntity *pokemon, struct DungeonEntity *r1, s16, s16, u32);
extern void sub_80792F8(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32);
extern void sub_8079F20(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u8);
extern void sub_806F370(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
extern void sub_8078A58(struct DungeonEntity *, struct DungeonEntity *, s16, u32);
extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*);
extern s32 sub_8042520(struct DungeonEntity *);
struct DungeonEntity *sub_80696FC(struct DungeonEntity *);
extern void sub_80943A0(void*, s32);
@@ -79,7 +73,7 @@ void sub_804839C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
void sub_80483C4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
sub_80792F8(pokemon, target, 999);
RestorePPTarget(pokemon, target, 999);
}
void sub_80483D4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
@@ -94,7 +88,7 @@ void sub_80483F4(struct DungeonEntity *pokemon, struct DungeonEntity *target)
void sub_8048400(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
sub_80791D8(pokemon, target);
CrossEyeVisionTarget(pokemon, target);
}
void sub_804840C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
@@ -110,7 +104,7 @@ void sub_804841C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
void sub_8048428(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
if(target->entityData->nonVolatileStatus == NON_VOLATILE_STATUS_PARALYZED)
sub_807A290(pokemon, target);
SendNonVolatileEndMessage(pokemon, target);
else
// Pointer to "But nothing happened!"
sub_80522F4(pokemon, target, *gUnknown_80F89F4);
@@ -119,7 +113,7 @@ void sub_8048428(struct DungeonEntity *pokemon, struct DungeonEntity *target)
void sub_8048450(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
if((u8)(target->entityData->nonVolatileStatus - 2) <= 1)
sub_807A290(pokemon, target);
SendNonVolatileEndMessage(pokemon, target);
else
// Pointer to "But nothing happened!"
sub_80522F4(pokemon, target, *gUnknown_80F89F4);
@@ -164,7 +158,7 @@ void sub_80484DC(struct DungeonEntity *pokemon, struct DungeonEntity *target)
void sub_80484E8(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
if(target->entityData->nonVolatileStatus == NON_VOLATILE_STATUS_BURNED)
sub_807A290(pokemon, target);
SendNonVolatileEndMessage(pokemon, target);
else
{
SetMessageArgument(gAvailablePokemonNames, target, 0);

View File

@@ -2,6 +2,7 @@
#include "constants/status.h"
#include "dungeon_global_data.h"
#include "dungeon_entity.h"
#include "code_8077274_1.h"
#include "moves.h"
#include "status_checks_1.h"
#include "weather.h"
@@ -11,7 +12,7 @@ extern u8 gAvailablePokemonNames[];
extern s16 gUnknown_80F4DB6;
extern u16 gUnknown_80F4F42;
extern u32 gUnknown_80FAC88;
extern u8 *gUnknown_80FAC88;
extern u8 *gUnknown_80FD018[];
extern u8 *gUnknown_80FCFBC[];
extern u8 *gUnknown_80FCFE4[];
@@ -42,14 +43,12 @@ extern void sub_80768DC(struct DungeonEntity *, struct DungeonEntity *, u32, u32
extern void sub_80772C0(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u32);
extern u8 sub_807EAA0(u32, u32);
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, const char[]);
extern void sub_8079F20(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32);
extern void sub_8077434(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 , u32, u32);
extern s32 sub_80556BC(struct DungeonEntity *, struct DungeonEntity *, u8, u32, u32, u32);
extern u8 sub_805727C(struct DungeonEntity *, struct DungeonEntity *, s16);
extern u32 sub_8055640(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32);
extern void sub_80779F0(struct DungeonEntity *, struct DungeonEntity *, u32, u32);
extern void sub_8078968(struct DungeonEntity *r0, struct DungeonEntity *r1);
extern void sub_8079618(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u32);
extern void sub_8077AE4(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32);
extern void sub_8077084(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32, u32);
@@ -122,10 +121,10 @@ bool32 sub_8057948(struct DungeonEntity *pokemon, struct DungeonEntity *target)
return TRUE;
}
bool32 sub_8057954(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 param_3)
bool32 sub_8057954(struct DungeonEntity *pokemon, struct DungeonEntity *target, struct PokemonMove *move)
{
// {ARG_POKEMON_0} is enraged
sub_8079618(pokemon,target,0xc,param_3,gUnknown_80FAC88);
sub_8079618(pokemon,target,0xc,move,gUnknown_80FAC88);
return TRUE;
}

View File

@@ -11,6 +11,7 @@
#include "pokemon.h"
#include "weather.h"
#include "gUnknown_203B46C.h"
#include "text_util.h"
extern struct UnkSaveStruct1 *gUnknown_203B46C;
@@ -30,7 +31,6 @@ extern u8 *gUnknown_80FCC7C[];
extern u8 *gUnknown_80FCCAC[];
extern u8 *gUnknown_80FDCC8[];
extern u8* GetUnformattedTypeString(s16);
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
void sub_80522F4(struct DungeonEntity *r0, struct DungeonEntity *r1, const char r2[]);
extern void sub_8042900(struct DungeonEntity *r0);

1724
src/code_8077274_1.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,14 @@
#include "global.h"
#include "dungeon_ai.h"
#include "constants/ability.h"
#include "constants/dungeon_action.h"
#include "constants/direction.h"
#include "constants/iq_skill.h"
#include "constants/status.h"
#include "constants/targeting.h"
#include "code_80521D0.h"
#include "code_8077274_1.h"
#include "dungeon_action.h"
#include "dungeon_ai_attack.h"
#include "dungeon_ai_items.h"
@@ -26,8 +28,13 @@
extern char gAvailablePokemonNames[];
extern char *gPtrCouldntBeUsedMessage;
extern char *gPtrItsaMonsterHouseMessage;
extern u8 *gUnknown_80FB380[];
extern u8 *gUnknown_80FB384[];
extern u8 *gUnknown_80FB338[];
extern u8 *gUnknown_80FB318[];
extern u8 *gUnknown_80FB35C[];
extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*);
extern void DungeonEntityUpdateStatusSprites(struct DungeonEntity *);
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
extern u8 sub_8044B28(void);
extern void sub_807AB38(struct DungeonEntity *, u32);
@@ -35,6 +42,10 @@ extern void sub_8041888(u32);
extern u8 sub_803F428(s16 *);
extern void sub_803E708(u32, u32);
extern struct DungeonEntity *GetLeaderEntity();
extern u8 sub_8075CFC(struct DungeonEntity *, struct DungeonEntity *, u32, u32);
extern void sub_8041AF4(struct DungeonEntity *);
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u8 *);
extern void sub_806CE68(struct DungeonEntity *, s32);
u32 sub_8075818(struct DungeonEntity *entity)
{
@@ -284,3 +295,65 @@ void sub_8075BA4(struct DungeonEntity *param_1,char param_2)
TargetTileInFront(param_1);
}
}
u8 sub_8075BF4(struct DungeonEntity * pokemon, s32 sleepTurns)
{
struct DungeonEntityData *entityData;
u32 uVar4;
uVar4 = 0;
if (!EntityExists(pokemon)){
return uVar4;
}
else
{
entityData = pokemon->entityData;
if(entityData->sleepStatus != SLEEP_STATUS_NIGHTMARE && entityData->sleepStatus != SLEEP_STATUS_SLEEP)
{
entityData->sleepStatus = SLEEP_STATUS_SLEEP;
if ((sleepTurns != 0x7f) && HasAbility(pokemon, ABILITY_EARLY_BIRD) &&
(sleepTurns = sleepTurns / 2, sleepTurns < 1)) {
sleepTurns = 1;
}
entityData->sleepStatusTurnsLeft = sleepTurns;
}
else if(entityData->sleepStatus == SLEEP_STATUS_SLEEP)
uVar4 = 1;
else if(entityData->sleepStatus == SLEEP_STATUS_NIGHTMARE)
uVar4 = 2;
DungeonEntityUpdateStatusSprites(pokemon);
}
return uVar4;
}
void sub_8075C58(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 param_3, u8 param_4)
{
u8 sleepStatus;
u8 cVar2;
if (sub_8075CFC(pokemon,target,1,param_4) == '\0') {
sleepStatus = target->entityData->sleepStatus;
if (sleepStatus == SLEEP_STATUS_SLEEPLESS) {
if (param_4)
sub_80522F4(pokemon,target,*gUnknown_80FB380);
}
else if (sleepStatus == SLEEP_STATUS_NAPPING) {
if (param_4)
sub_80522F4(pokemon,target,*gUnknown_80FB384);
}
else {
sub_8041AF4(target);
cVar2 = sub_8075BF4(target,param_3);
sub_806CE68(target,8);
if (cVar2 == 1)
sub_80522F4(pokemon,target,*gUnknown_80FB338);
else if (cVar2 == 2)
sub_80522F4(pokemon,target,*gUnknown_80FB35C);
else
sub_80522F4(pokemon,target,*gUnknown_80FB318);
}
}
}

View File

@@ -618,3 +618,14 @@ bool8 Wander(struct DungeonEntity *pokemon)
"_0807BB74: .4byte gAdjacentTileOffsets");
}
#endif
void sub_807BB78(struct DungeonEntity *pokemon)
{
struct DungeonEntityData *entityData;
entityData = pokemon->entityData;
entityData->movementAction = 0;
entityData->targetMovePosition = pokemon->posWorld;
entityData->targetPokemon = 0;
entityData->targetPokemonSpawnIndex = 0;
}

View File

@@ -100,7 +100,7 @@ void sub_8016B00(void)
s32 auStack8;
if (sub_80144A4(&auStack8) == 0) {
UpdateFelicityBankState(gUnknown_203B204->unk8);
UpdateFelicityBankState(gUnknown_203B204->fallbackState);
}
}
@@ -109,7 +109,7 @@ void sub_8016B24(void)
s32 auStack8;
if (sub_80144A4(&auStack8) == 4) {
UpdateFelicityBankState(gUnknown_203B204->unk8);
UpdateFelicityBankState(gUnknown_203B204->fallbackState);
}
}

View File

@@ -9,6 +9,7 @@
#include "subStruct_203B240.h"
#include "team_inventory.h"
#include "code_800D090.h"
#include "text_util.h"
#include <stddef.h>
@@ -45,9 +46,8 @@ extern s32 sub_8090FEC(s32 a1, u8* a2, u8 a3);
extern void sub_80073B8(u32);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
extern void sub_80078A4(u32, u32, u32, u32, u32);
extern u8* GetUnformattedTypeString(s16);
extern void sub_80073E0(u32);
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3);
extern void SortGreenKecleonShopInventory();
bool8 AddPurpleKecleonShopItem(u8);
@@ -704,7 +704,7 @@ u32 sub_80913E0(struct ItemSlot* slot, u32 a2, struct subStruct_203B240 ** a3)
struct PokemonMove *buffer8 = (struct PokemonMove*) (buffer88 + 0x50); // field in struct
u16 move = GetItemMove(slot->itemIndex);
u8 moves_data;
u8* typestring;
const u8* typestring;
u32 result;
InitPokemonMove(buffer8, move);

View File

@@ -111,13 +111,13 @@ void sub_80177F8(void)
void sub_8017828(void)
{
s32 local_8;
s32 menuAction;
if (sub_80144A4(&local_8) == 0) {
if (local_8 != 1) {
gUnknown_203B208->unk18 = local_8;
if (sub_80144A4(&menuAction) == 0) {
if (menuAction != 1) {
gUnknown_203B208->unk18 = menuAction;
}
switch(local_8)
switch(menuAction)
{
case 2:
if (GetNumberOfFilledInventorySlots() == 0) {
@@ -158,10 +158,10 @@ void sub_8017828(void)
void sub_80178D0(void)
{
s32 local_18;
s32 menuAction;
if (sub_80144A4(&local_18) == 0) {
switch(local_18)
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
MoveToStorage(&gUnknown_203B208->unkC);
@@ -179,25 +179,25 @@ void sub_80178D0(void)
void sub_8017928(void)
{
int local_c;
int menuAction;
u32 itemindex;
u32 numItems;
struct HeldItem_Alt local_8;
struct HeldItem_Alt item;
if (sub_80144A4(&local_c) == 0) {
switch(local_c)
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
gTeamInventory_203B460->teamStorage[gUnknown_203B208->unkC.itemIndex] -= gUnknown_203B208->unkC.numItems;
itemindex = gUnknown_203B208->unkC.itemIndex;
local_8.temp.full_bits = (local_8.temp.full_bits & 0xffffff00) | itemindex;
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | itemindex;
numItems = gUnknown_203B208->unkC.numItems << 8;
local_8.temp.full_bits = (local_8.temp.full_bits & 0xffff00ff) | numItems;
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | numItems;
AddHeldItemToInventory((struct HeldItem *)&local_8);
AddHeldItemToInventory((struct HeldItem *)&item);
UpdateKangaskhanStorageState(0x1d);
break;
case 1:
@@ -211,10 +211,10 @@ void sub_8017928(void)
void sub_80179A8(void)
{
s32 iVar1;
s32 local_18;
s32 menuAction;
if (sub_80144A4(&local_18) == 0) {
switch(local_18)
if (sub_80144A4(&menuAction) == 0) {
switch(menuAction)
{
case 4:
for(iVar1 = 0; iVar1 < INVENTORY_SIZE; iVar1++)
@@ -240,38 +240,38 @@ void sub_80179A8(void)
void sub_8017A1C(void)
{
u8 iVar2_u8;
u32 uVar4;
u8 itemID_u8;
u32 numItems_cast;
s32 itemID;
int local_18;
int menuAction;
u16 cast;
struct HeldItem_Alt local_14;
struct HeldItem_Alt item;
if (sub_80144A4(&local_18) == 0) {
if (sub_80144A4(&menuAction) == 0) {
switch(local_18)
switch(menuAction)
{
case 4:
for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
iVar2_u8 = itemID;
itemID_u8 = itemID;
if (sub_801CFE0(itemID) != 0) {
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffffff00) | iVar2_u8;
if (IsThrowableItem(local_14.temp.norm.itemIndex)) {
uVar4 = gTeamInventory_203B460->teamStorage[local_14.temp.norm.itemIndex];
if (uVar4 > 99) {
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | 0x6300;
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | itemID_u8;
if (IsThrowableItem(item.temp.norm.itemIndex)) {
numItems_cast = gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex];
if (numItems_cast > 99) {
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | 0x6300;
}
else {
cast = uVar4 << 8;
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | cast;
cast = numItems_cast << 8;
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | cast;
}
}
else {
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | 0x100;
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | 0x100;
}
gTeamInventory_203B460->teamStorage[local_14.temp.norm.itemIndex] -= local_14.temp.norm.numItems;
AddHeldItemToInventory((struct HeldItem *)&local_14);
gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] -= item.temp.norm.numItems;
AddHeldItemToInventory((struct HeldItem *)&item);
}
}
FillInventoryGaps();

View File

@@ -130,20 +130,20 @@ void sub_80186F8(void)
{
struct HeldItem_Alt item;
u16 cast;
s32 iVar6;
u8 iVar6_32;
s32 itemID;
u8 itemID_u8;
switch(sub_801CA08(1))
{
case 3:
if(sub_801CFB8() != 0)
{
for(iVar6 = 0; iVar6 < NUMBER_OF_ITEM_IDS; iVar6++)
for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
iVar6_32 = iVar6; // dumb cast needed to match
if(sub_801CFE0(iVar6) != 0)
itemID_u8 = itemID; // dumb cast needed to match
if(sub_801CFE0(itemID) != 0)
{
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | iVar6_32;
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | itemID_u8;
if(IsThrowableItem(item.temp.norm.itemIndex))
if(gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] > 0x63)
{
@@ -244,17 +244,17 @@ void sub_8018854(void)
void sub_8018904(void)
{
s32 temp;
s32 menuAction;
temp = 0;
menuAction = 0;
sub_801A6E8(0);
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &temp);
if(temp != 1) gUnknown_203B20C->unk18 = temp;
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
if(menuAction != 1) gUnknown_203B20C->unk18 = menuAction;
}
switch(temp)
switch(menuAction)
{
case 2:
if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->unk8.itemIndex))
@@ -290,19 +290,19 @@ void sub_8018904(void)
void sub_80189C8(void)
{
struct HeldItem_Alt item;
s32 temp;
s32 menuAction;
u32 itemsCast;
u32 indexCast;
temp = 0;
menuAction = 0;
sub_801CA08(0);
if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0)
{
sub_8013114(&gUnknown_203B20C->unk70, &temp);
if(temp != 1) gUnknown_203B20C->unk1C = temp;
sub_8013114(&gUnknown_203B20C->unk70, &menuAction);
if(menuAction != 1) gUnknown_203B20C->unk1C = menuAction;
}
switch(temp)
switch(menuAction)
{
case 3:
if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)

View File

@@ -67,12 +67,7 @@ struct unkStruct_203B214
{;
// size: 0xA0
u8 fill0[0x18];
// NOTE: has to be packed here so it doesn't take 4 bytes..
union __attribute__ ((__packed__)) temp2
{
u16 unk18;
u8 unk18_u8;
} temp;
u16 unk18;
s16 unk1A;
s16 unk1C;
s16 unk1E;
@@ -521,7 +516,7 @@ u32 sub_8019E40(u32 r0)
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B214->unk3C, 1, 1);
sub_8013818(gUnknown_203B214, xxx_count_inv_unk230(), 0xA, r0);
gUnknown_203B214->temp.unk18 = gUnknown_203B218;
gUnknown_203B214->unk18 = gUnknown_203B218;
sub_8013984((u8 *)gUnknown_203B214);
sub_801A064();
sub_801A0D8();
@@ -586,7 +581,7 @@ u32 sub_8019EDC(u8 r0)
u8 sub_8019FB0(void)
{
return (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + gUnknown_203B214->temp.unk18_u8;
return (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + (u8)gUnknown_203B214->unk18;
}
void sub_8019FCC(u32 r0)
@@ -609,7 +604,7 @@ void sub_801A010(void)
{
if(gUnknown_203B214 != NULL)
{
gUnknown_203B218 = gUnknown_203B214->temp.unk18;
gUnknown_203B218 = gUnknown_203B214->unk18;
gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = gUnknown_80DB8B4;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B214->unk3C, 1, 1);
@@ -748,7 +743,7 @@ u32 sub_801A20C(u32 r0)
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B21C->unk3C, 1, 1);
sub_8013818(gUnknown_203B21C, xxx_count_non_empty_inv_unk250_8091A48(), 0xA, r0);
gUnknown_203B21C->temp.unk18 = gUnknown_203B220;
gUnknown_203B21C->unk18 = gUnknown_203B220;
sub_8013984((u8 *)gUnknown_203B21C);
sub_801A430();
sub_801A4A4();
@@ -813,7 +808,7 @@ u32 sub_801A2A8(u8 r0)
u8 sub_801A37C(void)
{
return (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + gUnknown_203B21C->temp.unk18_u8;
return (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + gUnknown_203B21C->unk18;
}
void sub_801A398(u32 r0)
@@ -836,7 +831,7 @@ void sub_801A3DC(void)
{
if(gUnknown_203B21C != NULL)
{
gUnknown_203B220 = gUnknown_203B21C->temp.unk18;
gUnknown_203B220 = gUnknown_203B21C->unk18;
gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = gUnknown_80DB8FC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B21C->unk3C, 1, 1);

View File

@@ -8,6 +8,82 @@
#include "dungeon_util.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_random.h"
#include "dungeon_global_data.h"
extern bool8 sub_8044B28(void);
extern void sub_80429C8(struct DungeonEntity *r0);
extern u16 gNaturePowerMoveTable[];
bool8 sub_80571F0(struct DungeonEntity * pokemon, struct PokemonMove *move)
{
u16 moveID;
s32 tileset;
struct DungeonEntityData *entityData;
entityData = pokemon->entityData;
if (entityData->unkFF == 1) {
moveID = move->moveID;
if ((moveID == MOVE_SKY_UPPERCUT) || (moveID == MOVE_TWISTER) || (moveID == MOVE_GUST) || (moveID == MOVE_THUNDER))
return FALSE;
else
return TRUE;
}
else if (entityData->unkFF == 2) {
if (entityData->chargingStatus == CHARGING_STATUS_DIVE) {
if (move->moveID == MOVE_WHIRLPOOL || move->moveID == MOVE_SURF) return FALSE;
}
else if (entityData->chargingStatus == CHARGING_STATUS_DIG) {
moveID = move->moveID;
if (moveID == MOVE_EARTHQUAKE || moveID == MOVE_MAGNITUDE) return FALSE;
if (moveID == MOVE_NATURE_POWER) {
tileset = gDungeonGlobalData->tileset;
if (tileset < 0) {
tileset = 0;
}
if (0x4a < tileset) {
tileset = 0x4a;
}
if (gNaturePowerMoveTable[tileset << 2] == MOVE_EARTHQUAKE) return FALSE;
}
}
return TRUE;
}
return FALSE;
}
bool8 sub_805727C(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 chance)
{
bool8 uVar2;
if (!sub_8044B28() && EntityExists(pokemon) && EntityExists(target) &&
(target->entityData->unk158 != 0) &&
(target->entityData->HP != 0)) {
if (chance != 0) {
if (HasAbility(pokemon, ABILITY_SERENE_GRACE)) {
uVar2 = RollPercentChance_2(chance * 2);
}
else
{
uVar2 = RollPercentChance_2(chance);
}
}
else
{
uVar2 = TRUE;
}
if ((uVar2 != 0) && (pokemon != target) && HasAbility(target, ABILITY_SHIELD_DUST))
{
sub_80429C8(target);
end:
return FALSE;
}
else
return uVar2;
}
goto end;
}
bool8 sub_8057308(struct DungeonEntity *pokemon, s32 chance)
{

View File

@@ -5,21 +5,20 @@
#include "music.h"
#include "input.h"
#include "constants/bg_music.h"
#include "random.h"
extern bool8 EnableInterrupts(void);
extern bool8 DisableInterrupts(void);
extern void SoundBiasReset();
extern void SoundBiasSet();
extern void AckInterrupt(u16);
extern void nullsub_25(void);
void nullsub_18(void);
void UpdateSound(void);
void nullsub_21(u16);
extern void Random();
extern void sub_800BA5C();
void sub_800BA5C();
void xxx_update_bg_sound_input();
void SoundVSync();
void BlinkSavingIcon();
typedef void (*IntrCallback)(void);
extern IntrCallback gIntrCallbacks[];
@@ -84,9 +83,6 @@ enum
NUM_BGS
};
void SoundVSync();
extern void BlinkSavingIcon();
void UnusedIntrFunc(void)
{
}

View File

@@ -9,6 +9,7 @@
#include "memory.h"
#include "gUnknown_203B46C.h"
#include "text.h"
#include "text_util.h"
#include "menu.h"
enum
@@ -46,7 +47,6 @@ extern void sub_8014248(const char *text, u32, u32, const struct MenuItem *r0, u
extern u32 sub_80144A4(s32 *);
extern void CopyStringtoBuffer(char *r0, char *r1);
extern void sub_801602C(u32, char *r0);
extern u32 sub_8016080(void);

View File

@@ -281,22 +281,22 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32
sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
}
void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum)
void sub_808D9DC(u8 *buffer, struct PokemonStruct2 *param_2, s32 colorNum)
{
u8 nameBuffer [20];
sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH);
sub_80922B4(nameBuffer, param_2->name, POKEMON_NAME_LENGTH);
if (colorNum == COLOR_WHITE) {
colorNum = COLOR_YELLOW;
}
sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
}
void sub_808DA0C(u8 *buffer, u8 *param_2)
void sub_808DA0C(u8 *buffer, struct PokemonStruct2 *param_2)
{
u8 nameBuffer [20];
sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH);
sub_80922B4(nameBuffer, param_2->name, POKEMON_NAME_LENGTH);
sprintf_2(buffer,gUnknown_8107638,nameBuffer); // %s
}

View File

@@ -2,6 +2,7 @@
#include "status_checker.h"
#include "code_80521D0.h"
#include "code_8077274_1.h"
#include "constants/move_id.h"
#include "constants/status.h"
#include "constants/type.h"
@@ -24,8 +25,6 @@
extern void sub_807F43C(struct DungeonEntity *, struct DungeonEntity *);
extern void sub_8078F50(struct DungeonEntity *, struct DungeonEntity *);
extern void sub_8077E4C(struct DungeonEntity *, struct DungeonEntity *);
extern void sub_8079570(struct DungeonEntity *, struct DungeonEntity *);
extern void sub_80795C4(struct DungeonEntity *, struct DungeonEntity *);
extern void sub_807DC68(struct DungeonEntity *, struct DungeonEntity *);
extern void sub_8077BB4(struct DungeonEntity *, struct DungeonEntity *, u8);
extern void sub_8078A58(struct DungeonEntity *, struct DungeonEntity *, s16, u32);
@@ -281,13 +280,13 @@ bool8 sub_805C474(struct DungeonEntity *pokemon, struct DungeonEntity *target)
bool8 sub_805C480(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
sub_8079570(pokemon, target);
LongTossStatusTarget(pokemon, target);
return TRUE;
}
bool8 sub_805C48C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
{
sub_80795C4(pokemon, target);
PierceStatusTarget(pokemon, target);
return TRUE;
}

View File

@@ -1,7 +1,124 @@
#include "global.h"
#include "status_checks_1.h"
#include "constants/ability.h"
#include "constants/status.h"
#include "constants/weather.h"
#include "dungeon_global_data.h"
#include "dungeon_pokemon_attributes.h"
#include "dungeon_util.h"
#include "code_800D090.h"
#include "code_80521D0.h"
#include "pokemon.h"
#include "weather.h"
extern void sub_80429B4(struct DungeonEntity *r0);
extern u8 *gUnknown_80FEE80[];
extern u8 *gUnknown_80F8974[];
extern u8 *gUnknown_80F8994[];
extern u8 *gUnknown_80F8968[];
extern u8 *gUnknown_80F8988[];
extern u8 gUnknown_8106FA4[];
u8 sub_8070828(struct DungeonEntity *pokemon, bool8 displayMessage)
{
bool8 flag;
flag = FALSE;
if (!EntityExists(pokemon)) {
return 0;
}
else {
if ((HasAbility(pokemon, ABILITY_SWIFT_SWIM)) && (GetWeather(pokemon) == WEATHER_RAIN)) {
flag = TRUE;
}
if ((HasAbility(pokemon, ABILITY_CHLOROPHYLL)) && (GetWeather(pokemon) == WEATHER_SUNNY)) {
flag = TRUE;
}
if (displayMessage && SetVisualFlags(pokemon->entityData, 0x40, flag)) {
sub_80429B4(pokemon);
SendMessage(pokemon, *gUnknown_80FEE80);
}
if (flag) {
return 2;
}
else {
return 1;
}
}
}
void SetMessageArgument_2(u8 *buffer, struct DungeonEntityData *param_2, s32 colorNum)
{
if (((gDungeonGlobalData->displayBlinker ||
gDungeonGlobalData->displayCrossEyed) ||
(param_2->transformStatus == TRANSFORM_STATUS_INVISIBLE)) &&
(param_2->isEnemy))
{
strcpy(buffer, *gUnknown_80F8988);
}
else
{
if (param_2->waitingStatus == WAITING_STATUS_DECOY) {
strcpy(buffer, *gUnknown_80F8968);
}
else
{
if (param_2->isEnemy) {
if ((param_2->joinLocation == 0x4A) || (param_2->clientType == CLIENT_TYPE_CLIENT)) {
CopyYellowSpeciesNametoBuffer(buffer, param_2->transformSpecies);
}
else
CopyCyanSpeciesNametoBuffer(buffer, param_2->transformSpecies);
}
else
{
sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[param_2->partyIndex],colorNum);
}
}
}
}
void sub_8070968(u8 *buffer, struct DungeonEntityData *entityData, s32 colorNum)
{
if (entityData->waitingStatus == WAITING_STATUS_DECOY) {
sprintf_2(buffer, gUnknown_8106FA4, colorNum + 0x30, *gUnknown_80F8974);
}
else if (entityData->isEnemy) {
CopyCyanSpeciesNametoBuffer(buffer, entityData->transformSpecies);
}
else {
sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[entityData->partyIndex], colorNum);
}
}
void sub_80709C8(u8 *buffer, struct DungeonEntityData *entityData)
{
if (((gDungeonGlobalData->displayBlinker ||
gDungeonGlobalData->displayCrossEyed) ||
(entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)) &&
(entityData->isEnemy))
{
strcpy(buffer, *gUnknown_80F8994);
}
else
{
if (entityData->waitingStatus == WAITING_STATUS_DECOY) {
strcpy(buffer, *gUnknown_80F8974);
}
else
{
if (entityData->isEnemy) {
CopySpeciesNametoBuffer(buffer, entityData->transformSpecies);
}
else
{
sub_808DA0C(buffer, &gRecruitedPokemonRef->pokemon2[entityData->partyIndex]);
}
}
}
}
bool8 HasNegativeStatus(struct DungeonEntity *pokemon)
{

View File

@@ -3,6 +3,7 @@
#include "pokemon.h"
#include "file_system.h"
#include "item.h"
#include "input.h"
#include "sub_8095228.h"
#include "wonder_mail.h"
#include "memory.h"
@@ -33,7 +34,6 @@ extern u32 sub_8095324(u32);
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
extern void nullsub_130(void);
extern void sub_8028348(void);
extern void ResetUnusedInputStruct();
extern void sub_803084C();
extern u32 sub_8030768(u32);
extern s8 sub_80307EC();
@@ -69,7 +69,6 @@ extern s32 sub_8001658(u32, u32);
extern u8 sub_8099B94();
extern void sub_8099A5C(u32, u32, u32*);
extern void sub_8099AFC(u32, u32, u32*);
extern void ResetUnusedInputStruct();
extern void sub_8099690(u32);
extern void sub_8031E10(void);
extern void sub_803084C(void);

View File

@@ -212,10 +212,10 @@ bool8 sub_802C4A4(void)
return TRUE;
}
u32 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
bool8 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
{
if (HasNoAcceptedJobs()) {
return 0;
return FALSE;
}
else
{
@@ -238,7 +238,7 @@ u32 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3)
sub_8013984(&gUnknown_203B2E8->unk8);
sub_802C6DC();
sub_802C750();
return 1;
return TRUE;
}
}
@@ -418,16 +418,16 @@ bool8 HasNoAcceptedJobs(void)
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
if(!IsJobSlotEmpty(index))
return 0;
return FALSE;
}
return 1;
return TRUE;
}
u32 sub_802C860(u32 r0)
bool8 sub_802C860(u32 r0)
{
if(HasNoAcceptedJobs())
{
return 0;
return FALSE;
}
else
{
@@ -435,7 +435,7 @@ u32 sub_802C860(u32 r0)
gUnknown_203B2F0->unk68 = 0;
gUnknown_203B2F0->unk0 = r0;
sub_802C910(0);
return 1;
return TRUE;
}
}

View File

@@ -445,7 +445,7 @@ void HandleMissionReward(void)
const char *rankString;
u8 uVar7;
struct unkStruct_8090F58 local_20;
struct ItemSlot_Alt local_14;
struct ItemSlot_Alt item;
u32 numItems;
u32 index_cast;
u32 index_cast2;
@@ -526,22 +526,22 @@ void HandleMissionReward(void)
// Cast ItemIndex
index_cast = uVar7 << 16;
local_14.temp.full_bits = (local_14.temp.full_bits & 0xff00ffff) | index_cast;
item.temp.full_bits = (item.temp.full_bits & 0xff00ffff) | index_cast;
index_cast2 = local_14.temp.full_bits >> 16;
index_cast2 = item.temp.full_bits >> 16;
if (IsThrowableItem(index_cast2)) {
// Cast number items
numItems = (gUnknown_203B310->unk10->numItems << 8);
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | numItems;
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | numItems;
}
else {
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | 0;
item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | 0;
}
local_14.temp.full_bits = (local_14.temp.full_bits & 0xffffff00) | ITEM_FLAG_EXISTS;
item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | ITEM_FLAG_EXISTS;
local_20.unk0 = 0;
local_20.unk4 = 0;
local_20.unk8 = 1;
sub_8090E14(gUnknown_202DEA8,(struct ItemSlot *)&local_14,&local_20);
sub_8090E14(gUnknown_202DEA8,(struct ItemSlot *)&item,&local_20);
if (gUnknown_203B310->displayClientDialogueSprite) {
sub_80141B4(gUnknown_80E0640,0,&gUnknown_203B310->faceFile,0x10d);
gUnknown_203B310->nextState = 5;

View File

@@ -35,7 +35,7 @@ bool8 sub_8030D40(u8 param_1, s32 param_2)
sub_8006518(gUnknown_203B324->unk18);
gUnknown_203B324->unk18[gUnknown_203B324->unk10] = gUnknown_80E091C;
sub_8030DD4();
return 1;
return TRUE;
}
u8 sub_8030DA0(void)

View File

@@ -75,7 +75,7 @@ bool8 sub_8030F58(u32 wonderMailMode)
MemoryFill8((u8 *)gUnknown_203B328,0,sizeof(struct unkStruct_203B328));
}
gUnknown_203B328->wonderMailMode = wonderMailMode;
iVar3 = GetDialogueSpriteDataPtr(0x130);
iVar3 = GetDialogueSpriteDataPtr(SPECIES_PELIPPER);
gUnknown_203B328->faceFile = iVar3;
gUnknown_203B328->faceData = iVar3->data;
gUnknown_203B328->unk114 = 0;
@@ -102,7 +102,7 @@ bool8 sub_8030F58(u32 wonderMailMode)
gUnknown_203B328->state = 0;
sub_80306A8(wonderMailMode,0,0,8);
}
return 1;
return TRUE;
}
s32 sub_8031050(void)

View File

@@ -127,13 +127,13 @@ void sub_802DF88(void);
void sub_802DF14(void);
void sub_801317C(void);
u32 sub_802DB28(u8 jobSlot, u8 param_2)
bool8 sub_802DB28(u8 jobSlot, u8 param_2)
{
char local_18 [8];
sub_8096AF8(local_18,jobSlot,param_2);
if (local_18[0] == '\0') {
return 0;
return FALSE;
}
else {
ResetUnusedInputStruct();
@@ -154,7 +154,7 @@ u32 sub_802DB28(u8 jobSlot, u8 param_2)
gUnknown_203B2FC->faceData = gUnknown_203B2FC->faceFile->data;
}
sub_802DC28(0);
return 1;
return TRUE;
}
}

View File

@@ -271,12 +271,12 @@ void HandleWonderMailMainScreen(void)
if (sub_80144A4(&menuAction) == 0) {
gUnknown_203B3E8->unk24C = 10;
switch(menuAction) {
case 3:
case WONDER_MAIL_GAME_LINK:
case 4:
gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_GAME_LINK;
SetWonderMailMainMenuState(GAME_LINK_CABLE_MENU);
break;
case 5:
case WONDER_MAIL_PASSWORD:
gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_PASSWORD;
SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY);
break;

View File

@@ -292,6 +292,215 @@ string generate_pokemon_table_text(Json map_data) {
return text.str();
}
string generate_trap_table_text(Json map_data) {
ostringstream text;
int probability_total;
text << "@ This is auto-generated by trap_found.json.\n";
for (Json data_entry : map_data.array_items()) {
probability_total = 0;
text << ".global " << data_entry["name"].string_value() << "\n";
text << data_entry["name"].string_value() << ":\n";
text << ".2byte ";
probability_total += data_entry["traps"]["Trip Trap"].int_value();
if(data_entry["traps"]["Trip Trap"].int_value() == 0)
{
text << "0x00";
}
else
{
text << probability_total;
}
probability_total += data_entry["traps"]["Mud Trap"].int_value();
if(data_entry["traps"]["Mud Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Sticky Trap"].int_value();
if(data_entry["traps"]["Sticky Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Grimy Trap"].int_value();
if(data_entry["traps"]["Grimy Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Summon Trap"].int_value();
if(data_entry["traps"]["Summon Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Pitfall Trap"].int_value();
if(data_entry["traps"]["Pitfall Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Warp Trap"].int_value();
if(data_entry["traps"]["Warp Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Gust Trap"].int_value();
if(data_entry["traps"]["Gust Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Spin Trap"].int_value();
if(data_entry["traps"]["Spin Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Slumber Trap"].int_value();
if(data_entry["traps"]["Slumber Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Slow Trap"].int_value();
if(data_entry["traps"]["Slow Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Seal Trap"].int_value();
if(data_entry["traps"]["Seal Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Poison Trap"].int_value();
if(data_entry["traps"]["Poison Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Selfdestruct Trap"].int_value();
if(data_entry["traps"]["Selfdestruct Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Explosion Trap"].int_value();
if(data_entry["traps"]["Explosion Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["PP-Zero Trap"].int_value();
if(data_entry["traps"]["PP-Zero Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Chestnut Trap"].int_value();
if(data_entry["traps"]["Chestnut Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Wonder Tile"].int_value();
if(data_entry["traps"]["Wonder Tile"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Pokemon Trap"].int_value();
if(data_entry["traps"]["Pokemon Trap"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
probability_total += data_entry["traps"]["Spiked Tile"].int_value();
if(data_entry["traps"]["Spiked Tile"].int_value() == 0)
{
text << ", " << "0x00";
}
else
{
text << ", " << probability_total;
}
// Append null entry to end
text << "\n";
}
text << TABLE_END;
return text.str();
}
string generate_floorID_table_text(Json map_data) {
ostringstream text;
@@ -804,8 +1013,10 @@ int main(int argc, char *argv[]) {
process_json(filepath, "item_data.inc", generate_item_data_text);
} else if (mode == "move") {
process_json(filepath, "move_data.inc", generate_move_data_text);
} else if (mode == "trap") {
process_json(filepath, "trap_data.inc", generate_trap_table_text);
} else {
FATAL_ERROR("ERROR: <mode> must be 'layouts', 'map', 'groups', 'dungeon', 'floor', 'species', 'item', or 'move'.\n");
FATAL_ERROR("ERROR: <mode> must be 'layouts', 'map', 'groups', 'dungeon', 'floor', 'species', 'item', 'move', or 'trap'.\n");
}
}