mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-25 20:04:29 -05:00
Merge pull request #512 from PikalaxALT/pokemon_storage_system
[Merge if you so choose] Pokemon Storage System
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -3,685 +3,6 @@
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_083B600C:: @ 83B600C
|
||||
.4byte PCText_WithdrawPoke, PCText_MovePokeToParty
|
||||
.4byte PCText_DepositPoke, PCText_StorePokeInBox
|
||||
.4byte PCText_MovePoke, PCText_OrganizeBoxesParty
|
||||
.4byte PCText_SeeYa, PCText_ReturnToPrevMenu
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B602C:: @ 83B602C
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B6034:: @ 83B6034
|
||||
obj_image_anim_frame 4, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B603C:: @ 83B603C
|
||||
obj_image_anim_frame 6, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B6044:: @ 83B6044
|
||||
obj_image_anim_frame 10, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_83B604C:: @ 83B604C
|
||||
.4byte gSpriteAnim_83B602C
|
||||
.4byte gSpriteAnim_83B6034
|
||||
.4byte gSpriteAnim_83B603C
|
||||
.4byte gSpriteAnim_83B6044
|
||||
|
||||
.align 2
|
||||
gSpriteAffineAnim_83B605C:: @ 83B605C
|
||||
obj_rot_scal_anim_frame 0xE0, 0xE0, 0, 0
|
||||
obj_rot_scal_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAffineAnimTable_83B606C:: @ 83B606C
|
||||
.4byte gSpriteAffineAnim_83B605C
|
||||
|
||||
.align 2
|
||||
gBoxSelectionPopupPalette:: @ 83B6070
|
||||
.incbin "graphics/pokemon_storage/box_selection_popup.gbapal"
|
||||
|
||||
.align 2
|
||||
gBoxSelectionPopupCenterTiles:: @ 83B6090
|
||||
.incbin "graphics/pokemon_storage/box_selection_popup_center.4bpp"
|
||||
|
||||
.align 2
|
||||
gBoxSelectionPopupSidesTiles:: @ 83B6890
|
||||
.incbin "graphics/pokemon_storage/box_selection_popup_sides.4bpp"
|
||||
|
||||
.align 2
|
||||
gPokemonStorageScrollingBGPalette:: @ 83B6A10
|
||||
.incbin "graphics/pokemon_storage/scrolling_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gPokemonStorageScrollingBGTile:: @ 83B6A30
|
||||
.incbin "graphics/pokemon_storage/scrolling_bg.4bpp"
|
||||
|
||||
.align 2
|
||||
gPokemonStorageScrollingBGTilemap:: @ 83B6A50
|
||||
.incbin "graphics/pokemon_storage/scrolling_bg_map.bin.lz"
|
||||
|
||||
@ unused tilemap?
|
||||
.2byte 0x1281
|
||||
.2byte 0x1282
|
||||
.2byte 0x1283
|
||||
.2byte 0x1284
|
||||
.2byte 0x1285
|
||||
.2byte 0x1286
|
||||
.2byte 0x1287
|
||||
.2byte 0x1288
|
||||
.2byte 0x128C
|
||||
.2byte 0x128D
|
||||
.2byte 0x128E
|
||||
.2byte 0x128F
|
||||
.2byte 0x1290
|
||||
.2byte 0x1291
|
||||
.2byte 0x1292
|
||||
.2byte 0x1293
|
||||
.2byte 0x0281
|
||||
.2byte 0x0282
|
||||
.2byte 0x0283
|
||||
.2byte 0x0284
|
||||
.2byte 0x0285
|
||||
.2byte 0x0286
|
||||
.2byte 0x0287
|
||||
.2byte 0x0288
|
||||
.2byte 0x028C
|
||||
.2byte 0x028D
|
||||
.2byte 0x028E
|
||||
.2byte 0x028F
|
||||
.2byte 0x0290
|
||||
.2byte 0x0291
|
||||
.2byte 0x0292
|
||||
.2byte 0x0293
|
||||
.2byte 0x12AD
|
||||
.2byte 0x12AE
|
||||
.2byte 0x12A8
|
||||
.2byte 0x12A8
|
||||
|
||||
.align 2
|
||||
WaveformPalette: @ 83B6B94
|
||||
.incbin "graphics/pokemon_storage/waveform.gbapal"
|
||||
|
||||
.align 2
|
||||
WaveformTiles: @ 83B6BB4
|
||||
.incbin "graphics/pokemon_storage/waveform.4bpp"
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6D74:: @ 83B6D74
|
||||
.incbin "graphics/pokemon_storage/83B6D74.gbapal"
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6D94:: @ 83B6D94
|
||||
.incbin "graphics/pokemon_storage/83B6D94.gbapal"
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6DB4:: @ 83B6DB4
|
||||
.4byte gSharedMem
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6DB8:: @ 83B6DB8
|
||||
.4byte gTileBuffer
|
||||
|
||||
.align 2
|
||||
gWaveformSpritePalette:: @ 83B6DBC
|
||||
obj_pal WaveformPalette, 56013
|
||||
|
||||
.align 2
|
||||
gWaveformSpriteSheet:: @ 83B6DC4
|
||||
obj_tiles WaveformTiles, 0x1C0, 5
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6DCC:: @ 83B6DCC
|
||||
obj_tiles gSharedMem + 0x2784, 0x800, 2
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6DD4:: @ 83B6DD4
|
||||
obj_pal gSharedMem + 0x2704, 56007
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_83B6DDC:: @ 83B6DDC
|
||||
spr_template 2, 56007, gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
.align 2
|
||||
gUnknown_083B6DF4:: @ 83B6DF4
|
||||
.4byte PCText_ExitBox, 0
|
||||
.4byte PCText_WhatYouDo, 0
|
||||
.4byte PCText_PickATheme, 0
|
||||
.4byte PCText_PickAWallpaper, 0
|
||||
.4byte PCText_IsSelected, 1
|
||||
.4byte PCText_JumpToWhichBox, 0
|
||||
.4byte PCText_DepositInWhichBox, 0
|
||||
.4byte PCText_WasDeposited, 1
|
||||
.4byte PCText_BoxIsFull, 0
|
||||
.4byte PCText_ReleasePoke, 0
|
||||
.4byte PCText_WasReleased, 4
|
||||
.4byte PCText_ByeBye, 6
|
||||
.4byte PCText_MarkPoke, 0
|
||||
.4byte PCText_LastPoke, 0
|
||||
.4byte PCText_PartyFull, 0
|
||||
.4byte PCText_HoldingPoke, 0
|
||||
.4byte PCText_WhichOneWillTake, 0
|
||||
.4byte PCText_CantReleaseEgg, 0
|
||||
.4byte PCText_ContinueBox, 0
|
||||
.4byte PCText_CameBack, 1
|
||||
.4byte PCText_Worried, 0
|
||||
.4byte PCText_Surprise, 0
|
||||
.4byte PCText_PleaseRemoveMail, 0
|
||||
|
||||
.align 2
|
||||
gOamData_83B6EAC:: @ 83B6EAC
|
||||
.2byte 0x0000
|
||||
.2byte 0xC000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gOamData_83B6EB4:: @ 83B6EB4
|
||||
.2byte 0x4000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B6EBC:: @ 83B6EBC
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B6EC4:: @ 83B6EC4
|
||||
obj_image_anim_frame 2, 8
|
||||
obj_image_anim_frame 4, 8
|
||||
obj_image_anim_frame 6, 8
|
||||
obj_image_anim_jump 0
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B6ED4:: @ 83B6ED4
|
||||
obj_image_anim_frame 8, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83B6EDC:: @ 83B6EDC
|
||||
obj_image_anim_frame 10, 8
|
||||
obj_image_anim_frame 4, 8
|
||||
obj_image_anim_frame 12, 8
|
||||
obj_image_anim_jump 0
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_83B6EEC:: @ 83B6EEC
|
||||
.4byte gSpriteAnim_83B6EBC
|
||||
.4byte gSpriteAnim_83B6EC4
|
||||
.4byte gSpriteAnim_83B6ED4
|
||||
.4byte gSpriteAnim_83B6EDC
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_83B6EFC:: @ 83B6EFC
|
||||
spr_template 5, 56013, gOamData_83B6EB4, gSpriteAnimTable_83B6EEC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_83B6F14:: @ 83B6F14
|
||||
spr_template 15, 56000, gOamData_83B6F2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
.align 2
|
||||
gOamData_83B6F2C:: @ 83B6F2C
|
||||
.2byte 0x0000
|
||||
.2byte 0x8000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gSpriteAffineAnim_83B6F34:: @ 83B6F34
|
||||
obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 120
|
||||
obj_rot_scal_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAffineAnim_83B6F44:: @ 83B6F44
|
||||
obj_rot_scal_anim_frame 0x10, 0x10, 0, 0
|
||||
obj_rot_scal_anim_frame 0x10, 0x10, 0, 15
|
||||
obj_rot_scal_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAffineAnimTable_83B6F5C:: @ 83B6F5C
|
||||
.4byte gSpriteAffineAnim_83B6F34
|
||||
.4byte gSpriteAffineAnim_83B6F44
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Forest: @ 83B6F64
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/forest_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/forest_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Forest: @ 83B6FC4
|
||||
.incbin "graphics/pokemon_storage/forest.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Forest: @ 83B7394
|
||||
.incbin "graphics/pokemon_storage/forest.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_City: @ 83B7470
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/city_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/city_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_City: @ 83B74D0
|
||||
.incbin "graphics/pokemon_storage/city.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_City: @ 83B76D8
|
||||
.incbin "graphics/pokemon_storage/city.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Desert: @ 83B7788
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/desert_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/desert_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Desert: @ 83B77E8
|
||||
.incbin "graphics/pokemon_storage/desert.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Desert: @ 83B7AD4
|
||||
.incbin "graphics/pokemon_storage/desert.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Savanna: @ 83B7BB8
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/savanna_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/savanna_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Savanna: @ 83B7C18
|
||||
.incbin "graphics/pokemon_storage/savanna.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Savanna: @ 83B7E38
|
||||
.incbin "graphics/pokemon_storage/savanna.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Crag: @ 83B7F04
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/crag_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/crag_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Crag: @ 83B7F64
|
||||
.incbin "graphics/pokemon_storage/crag.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Crag: @ 83B82B4
|
||||
.incbin "graphics/pokemon_storage/crag.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Volcano: @ 83B838C
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/volcano_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/volcano_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Volcano: @ 83B83EC
|
||||
.incbin "graphics/pokemon_storage/volcano.4bpp.lz"
|
||||
|
||||
.space 4
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Volcano: @ 83B8720
|
||||
.incbin "graphics/pokemon_storage/volcano.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Snow: @ 83B87F8
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/snow_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/snow_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Snow: @ 83B8858
|
||||
.incbin "graphics/pokemon_storage/snow.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Snow: @ 83B8B10
|
||||
.incbin "graphics/pokemon_storage/snow.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Cave: @ 83B8BDC
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/cave_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/cave_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Cave: @ 83B8C3C
|
||||
.incbin "graphics/pokemon_storage/cave.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Cave: @ 83B8F80
|
||||
.incbin "graphics/pokemon_storage/cave.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Beach: @ 83B905C
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/beach_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/beach_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Beach: @ 83B90BC
|
||||
.incbin "graphics/pokemon_storage/beach.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Beach: @ 83B9440
|
||||
.incbin "graphics/pokemon_storage/beach.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Seafloor: @ 83B9528
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/seafloor_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/seafloor_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Seafloor: @ 83B9588
|
||||
.incbin "graphics/pokemon_storage/seafloor.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Seafloor: @ 83B983C
|
||||
.incbin "graphics/pokemon_storage/seafloor.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_River: @ 83B9918
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/river_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/river_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_River: @ 83B9978
|
||||
.incbin "graphics/pokemon_storage/river.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_River: @ 83B9C0C
|
||||
.incbin "graphics/pokemon_storage/river.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Sky: @ 83B9CF8
|
||||
.incbin "graphics/pokemon_storage/box_bg1.gbapal"
|
||||
.incbin "graphics/pokemon_storage/sky_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/sky_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Sky: @ 83B9D58
|
||||
.incbin "graphics/pokemon_storage/sky.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Sky: @ 83B9FF0
|
||||
.incbin "graphics/pokemon_storage/sky.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Polkadot: @ 83BA0D0
|
||||
.incbin "graphics/pokemon_storage/box_bg2.gbapal"
|
||||
.incbin "graphics/pokemon_storage/polkadot_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/polkadot_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Polkadot: @ 83BA130
|
||||
.incbin "graphics/pokemon_storage/polkadot.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Polkadot: @ 83BA32C
|
||||
.incbin "graphics/pokemon_storage/polkadot.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Pokecenter: @ 83BA3E4
|
||||
.incbin "graphics/pokemon_storage/box_bg2.gbapal"
|
||||
.incbin "graphics/pokemon_storage/pokecenter_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/pokecenter_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Pokecenter: @ 83BA444
|
||||
.incbin "graphics/pokemon_storage/pokecenter.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Pokecenter: @ 83BA7E8
|
||||
.incbin "graphics/pokemon_storage/pokecenter.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Machine: @ 83BA8FC
|
||||
.incbin "graphics/pokemon_storage/box_bg3.gbapal"
|
||||
.incbin "graphics/pokemon_storage/machine_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/machine_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Machine: @ 83BA95C
|
||||
.incbin "graphics/pokemon_storage/machine.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Machine: @ 83BAC4C
|
||||
.incbin "graphics/pokemon_storage/machine.bin.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperPalettes_Plain: @ 83BAD18
|
||||
.incbin "graphics/pokemon_storage/box_bg4.gbapal"
|
||||
.incbin "graphics/pokemon_storage/plain_frame.gbapal"
|
||||
.incbin "graphics/pokemon_storage/plain_bg.gbapal"
|
||||
|
||||
.align 2
|
||||
gWallpaperTiles_Plain: @ 83BAD78
|
||||
.incbin "graphics/pokemon_storage/plain.4bpp.lz"
|
||||
|
||||
.align 2
|
||||
gWallpaperTilemap_Plain: @ 83BAE74
|
||||
.incbin "graphics/pokemon_storage/plain.bin.lz"
|
||||
|
||||
@ 12×18 tilemap
|
||||
.incbin "graphics/unused/tilemap_3BAEF8.bin"
|
||||
|
||||
.align 1
|
||||
gUnknown_083BB0A8:: @ 83BB0A8
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
.2byte 0x1CE7, 0x7FFF
|
||||
|
||||
.align 2
|
||||
gWallpaperTable:: @ 83BB0E8
|
||||
@ Forest
|
||||
.4byte gWallpaperTiles_Forest
|
||||
.4byte 0x3D0
|
||||
.4byte gWallpaperTilemap_Forest
|
||||
.4byte gWallpaperPalettes_Forest
|
||||
|
||||
@ City
|
||||
.4byte gWallpaperTiles_City
|
||||
.4byte 0x208
|
||||
.4byte gWallpaperTilemap_City
|
||||
.4byte gWallpaperPalettes_City
|
||||
|
||||
@ Desert
|
||||
.4byte gWallpaperTiles_Desert
|
||||
.4byte 0x2EC
|
||||
.4byte gWallpaperTilemap_Desert
|
||||
.4byte gWallpaperPalettes_Desert
|
||||
|
||||
@ Savanna
|
||||
.4byte gWallpaperTiles_Savanna
|
||||
.4byte 0x220
|
||||
.4byte gWallpaperTilemap_Savanna
|
||||
.4byte gWallpaperPalettes_Savanna
|
||||
|
||||
@ Crag
|
||||
.4byte gWallpaperTiles_Crag
|
||||
.4byte 0x350
|
||||
.4byte gWallpaperTilemap_Crag
|
||||
.4byte gWallpaperPalettes_Crag
|
||||
|
||||
@ Volcano
|
||||
.4byte gWallpaperTiles_Volcano
|
||||
.4byte 0x334
|
||||
.4byte gWallpaperTilemap_Volcano
|
||||
.4byte gWallpaperPalettes_Volcano
|
||||
|
||||
@ Snow
|
||||
.4byte gWallpaperTiles_Snow
|
||||
.4byte 0x2B8
|
||||
.4byte gWallpaperTilemap_Snow
|
||||
.4byte gWallpaperPalettes_Snow
|
||||
|
||||
@ Cave
|
||||
.4byte gWallpaperTiles_Cave
|
||||
.4byte 0x344
|
||||
.4byte gWallpaperTilemap_Cave
|
||||
.4byte gWallpaperPalettes_Cave
|
||||
|
||||
@ Beach
|
||||
.4byte gWallpaperTiles_Beach
|
||||
.4byte 0x384
|
||||
.4byte gWallpaperTilemap_Beach
|
||||
.4byte gWallpaperPalettes_Beach
|
||||
|
||||
@ Seafloor
|
||||
.4byte gWallpaperTiles_Seafloor
|
||||
.4byte 0x2B4
|
||||
.4byte gWallpaperTilemap_Seafloor
|
||||
.4byte gWallpaperPalettes_Seafloor
|
||||
|
||||
@ River
|
||||
.4byte gWallpaperTiles_River
|
||||
.4byte 0x294
|
||||
.4byte gWallpaperTilemap_River
|
||||
.4byte gWallpaperPalettes_River
|
||||
|
||||
@ Sky
|
||||
.4byte gWallpaperTiles_Sky
|
||||
.4byte 0x298
|
||||
.4byte gWallpaperTilemap_Sky
|
||||
.4byte gWallpaperPalettes_Sky
|
||||
|
||||
@ Polkadot
|
||||
.4byte gWallpaperTiles_Polkadot
|
||||
.4byte 0x1FC
|
||||
.4byte gWallpaperTilemap_Polkadot
|
||||
.4byte gWallpaperPalettes_Polkadot
|
||||
|
||||
@ Pokecenter
|
||||
.4byte gWallpaperTiles_Pokecenter
|
||||
.4byte 0x3A4
|
||||
.4byte gWallpaperTilemap_Pokecenter
|
||||
.4byte gWallpaperPalettes_Pokecenter
|
||||
|
||||
@ Machine
|
||||
.4byte gWallpaperTiles_Machine
|
||||
.4byte 0x2F0
|
||||
.4byte gWallpaperTilemap_Machine
|
||||
.4byte gWallpaperPalettes_Machine
|
||||
|
||||
@ Plain
|
||||
.4byte gWallpaperTiles_Plain
|
||||
.4byte 0xFC
|
||||
.4byte gWallpaperTilemap_Plain
|
||||
.4byte gWallpaperPalettes_Plain
|
||||
|
||||
PCPal_Arrow:
|
||||
.incbin "graphics/pokemon_storage/arrow.gbapal"
|
||||
PCGfx_Arrow:
|
||||
.incbin "graphics/pokemon_storage/arrow.4bpp"
|
||||
|
||||
.align 2
|
||||
gUnknown_083BB288:: @ 83BB288
|
||||
obj_tiles PCGfx_Arrow, 128, 0x0006
|
||||
|
||||
.align 2
|
||||
gUnknown_083BB290:: @ 83BB290
|
||||
obj_pal PCPal_Arrow, 0xDACF
|
||||
|
||||
.align 2
|
||||
gOamData_83BB298:: @ 83BB298
|
||||
.2byte 0x4000
|
||||
.2byte 0x8000
|
||||
.2byte 0x0800
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83BB2A0:: @ 83BB2A0
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83BB2A8:: @ 83BB2A8
|
||||
obj_image_anim_frame 8, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_83BB2B0:: @ 83BB2B0
|
||||
.4byte gSpriteAnim_83BB2A0
|
||||
.4byte gSpriteAnim_83BB2A8
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_83BB2B8:: @ 83BB2B8
|
||||
spr_template 3, 56008, gOamData_83BB298, gSpriteAnimTable_83BB2B0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
.align 2
|
||||
gOamData_83BB2D0:: @ 83BB2D0
|
||||
.2byte 0x8000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0800
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83BB2D8:: @ 83BB2D8
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_83BB2E0:: @ 83BB2E0
|
||||
obj_image_anim_frame 2, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_83BB2E8:: @ 83BB2E8
|
||||
.4byte gSpriteAnim_83BB2D8
|
||||
.4byte gSpriteAnim_83BB2E0
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_83BB2F0:: @ 83BB2F0
|
||||
spr_template 6, 56015, gOamData_83BB2D0, gSpriteAnimTable_83BB2E8, NULL, gDummySpriteAffineAnimTable, sub_809A8C8
|
||||
|
||||
.align 2
|
||||
HandCursorPalette: @ 83BB308
|
||||
.incbin "graphics/pokemon_storage/hand_cursor_pal.bin"
|
||||
|
||||
.align 2
|
||||
HandCursorAltPalette: @ 83BB328
|
||||
.incbin "graphics/pokemon_storage/hand_cursor_alt_pal.bin"
|
||||
|
||||
.align 2
|
||||
HandCursorTiles: @ 83BB348
|
||||
.incbin "graphics/pokemon_storage/hand_cursor.4bpp"
|
||||
|
||||
.align 2
|
||||
HandCursorShadowTiles: @ 83BBB48
|
||||
.incbin "graphics/pokemon_storage/hand_cursor_shadow.4bpp"
|
||||
|
||||
.align 2
|
||||
gUnknown_083BBBC8:: @ 83BBBC8
|
||||
.4byte sub_809B150
|
||||
.4byte sub_809B1D8
|
||||
.4byte sub_809B24C
|
||||
|
||||
.align 2
|
||||
gUnknown_083BBBD4:: @ 83BBBD4
|
||||
.4byte sub_809C464, 0
|
||||
|
||||
11
include/credits.h
Normal file
11
include/credits.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef GUARD_credits_H
|
||||
#define GUARD_credits_H
|
||||
|
||||
// Exported type declarations
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
void sub_81439D0(void);
|
||||
|
||||
#endif //GUARD_credits_H
|
||||
@@ -127,17 +127,12 @@ extern u8 gUnknown_020388F5;
|
||||
extern u8 gUnknown_020388F6;
|
||||
extern u8 gUnknown_020388D6[16];
|
||||
extern u8 gUnknown_020388E6[12];
|
||||
extern u16 gSpecialVar_0x8004;
|
||||
extern u16 gSpecialVar_0x8005;
|
||||
extern u16 gSpecialVar_0x8006;
|
||||
extern u16 gSpecialVar_0x8007;
|
||||
extern u16 gUnknown_020391A4;
|
||||
extern u16 gUnknown_020391A6;
|
||||
extern u8 gUnknown_020391A8;
|
||||
extern u8 gUnknown_020391A9;
|
||||
extern u8 gUnknown_020391AA;
|
||||
extern u8 gUnknown_02039234;
|
||||
extern void (*gFieldCallback)(void);
|
||||
extern const struct YesNoFuncTable gUnknown_083EC96C[];
|
||||
extern struct UnkStruct_020391B4 gUnknown_020391B4[16];
|
||||
|
||||
@@ -160,7 +155,6 @@ extern const struct YesNoFuncTable gUnknown_083ECAA0;
|
||||
extern u8 sub_8134194(u8); // src/decoration_inventory
|
||||
extern bool8 sub_81341D4(void); // src/decoration_inventory
|
||||
extern void sub_8134104(u8); // src/decoration_inventory
|
||||
extern bool8 IsWeatherNotFadingIn(void);
|
||||
extern void sub_8109DAC(u8); // src/trader
|
||||
extern void ReshowPlayerPC(u8); // src/player_pc
|
||||
void Task_SecretBasePC_Decoration(u8);
|
||||
|
||||
@@ -28,6 +28,7 @@ extern u8 gSharedMem[];
|
||||
#define ewram0_9(i) (u8 *)(ewram_addr + (i * 0x20))
|
||||
#define ewram0_10 (*(struct UnknownPokenav0*)(gSharedMem + 0))
|
||||
#define ewram0_11 (*(struct UnknownPokenav0_1*)(gSharedMem + 0))
|
||||
#define ePokemonStorageSystem (*(struct PokemonStorageSystemData *)(gSharedMem + 0))
|
||||
#define ewram4 (*(struct UnknownStruct8 *)(gSharedMem + 0x4))
|
||||
#define ewram520 ((struct UnknownStruct7 *)(gSharedMem + 0x00520))
|
||||
#define ewram520_2 (u8 *)(ewram_addr + 0x520)
|
||||
@@ -38,10 +39,6 @@ extern u8 gSharedMem[];
|
||||
#define ewram01000 (*(struct Unk2001000 *)(gSharedMem + 0x1000))
|
||||
#define ewramBerryPicTemp (gSharedMem + 0x1000)
|
||||
#define EWRAM_1000 (*(struct Struct2001000 *)(gSharedMem + 0x1000))
|
||||
#define gUnk20011fa (u8 *)(&gSharedMem[0x11FA])
|
||||
#define gUnk2002694 (u8 *)(&gSharedMem[0x2694])
|
||||
#define gUnk20026A6 (u8 *)(&gSharedMem[0x26A6])
|
||||
#define gUnk20026e4 (u8 *)(&gSharedMem[0x26E4])
|
||||
#define ewram4000 (gSharedMem + 0x4000)
|
||||
#define gUnknown_02007000 (*(ewramStruct_02007000 *)(gSharedMem + 0x7000))
|
||||
#define ARRAY_2007800 ((struct EasyChatPair *)(gSharedMem + 0x7800))
|
||||
@@ -251,6 +248,7 @@ extern u8 gSharedMem[];
|
||||
#define ewram1C000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000))
|
||||
#define ewram1c000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000)) // FIXME, names too similar
|
||||
#define eHallOfFameMons1 (struct HallofFameMons*)(&gSharedMem[0x1C000])
|
||||
#define eHOFPCScreenEffect (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000))
|
||||
#define EWRAM_1C800 (*(struct Unk201C800 *)(gSharedMem + 0x1C800))
|
||||
#define ewram1D000 ((struct Pokemon *)(gSharedMem + 0x1D000))
|
||||
#define ewram1D000_2 ((u16 *)(gSharedMem + 0x1D000))
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
#define DmaClearLarge(dmaNum, dest, size, block, bit) \
|
||||
{ \
|
||||
const void *_dest = dest; \
|
||||
void *_dest = dest; \
|
||||
u32 _size = size; \
|
||||
while (1) \
|
||||
{ \
|
||||
|
||||
@@ -2739,7 +2739,15 @@ extern const u16 gCableCar_Pal[];
|
||||
extern const u16 gCableCarBG_Pal[];
|
||||
extern const u8 gCableCarBG_Gfx[];
|
||||
|
||||
// data/graphics.s
|
||||
extern const u8 gPSSMenuHeader_Gfx[];
|
||||
extern const u8 gPSSMenuHeader_Tilemap[];
|
||||
extern const u16 gPSSMenu1_Pal[];
|
||||
extern const u16 gPSSMenu2_Pal[];
|
||||
extern const u8 gPSSMenuMisc_Gfx[];
|
||||
extern const u8 gPSSMenuMisc_Tilemap[];
|
||||
extern const u16 gPSSMenu3_Pal[];
|
||||
extern const u16 gPSSMenu4_Pal[];
|
||||
|
||||
extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_000;
|
||||
extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_001;
|
||||
extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_002;
|
||||
|
||||
12
include/hof_pc.h
Normal file
12
include/hof_pc.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef GUARD_hof_pc_H
|
||||
#define GUARD_hof_pc_H
|
||||
|
||||
// Exported type declarations
|
||||
|
||||
// Exported RAM declarations
|
||||
|
||||
// Exported ROM declarations
|
||||
|
||||
void ReturnFromHallOfFamePC(void);
|
||||
|
||||
#endif //GUARD_hof_pc_H
|
||||
@@ -51,6 +51,8 @@ extern bool8 gLinkVSyncDisabled;
|
||||
extern const u8 gGameVersion;
|
||||
extern const u8 gGameLanguage;
|
||||
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
|
||||
void AgbMain(void);
|
||||
void SetMainCallback2(MainCallback callback);
|
||||
void InitKeys(void);
|
||||
|
||||
31
include/mon_markings.h
Normal file
31
include/mon_markings.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef POKERUBY_MON_MARKINGS_H
|
||||
#define POKERUBY_MON_MARKINGS_H
|
||||
|
||||
struct PokemonMarkMenu
|
||||
{
|
||||
/*0x0000*/ u16 baseTileTag;
|
||||
/*0x0002*/ u16 basePaletteTag;
|
||||
/*0x0004*/ u8 markings; // bit flags
|
||||
/*0x0005*/ s8 cursorPos;
|
||||
/*0x0006*/ bool8 markingsArray[4];
|
||||
/*0x000A*/ u8 cursorBaseY;
|
||||
/*0x000B*/ bool8 spriteSheetLoadRequired;
|
||||
/*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
|
||||
/*0x0014*/ struct Sprite *menuMarkingSprites[4];
|
||||
/*0x0024*/ struct Sprite *menuTextSprite;
|
||||
/*0x0028*/ const u8 *frameTiles;
|
||||
/*0x002C*/ const u16 *framePalette;
|
||||
/*0x0030*/ u8 menuWindowSpriteTiles[0x1000];
|
||||
/*0x1030*/ u8 filler1030[0x80];
|
||||
/*0x10B0*/ u8 tileLoadState;
|
||||
}; // 10b4
|
||||
|
||||
void sub_80F727C(struct PokemonMarkMenu *ptr);
|
||||
void sub_80F7404(void);
|
||||
void sub_80F7418(u8 markings, s16 x, s16 y);
|
||||
void sub_80F7470(void);
|
||||
bool8 sub_80F7500(void);
|
||||
struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, const u16 *palette);
|
||||
void sub_80F7A10(u8 markings, void *dest);
|
||||
|
||||
#endif //POKERUBY_MON_MARKINGS_H
|
||||
21
include/pc_screen_effect.h
Normal file
21
include/pc_screen_effect.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef GUARD_PC_SCREEN_EFFECT_H
|
||||
#define GUARD_PC_SCREEN_EFFECT_H
|
||||
|
||||
struct PCScreenEffectStruct
|
||||
{
|
||||
/*0x00*/ u16 tileTag;
|
||||
/*0x02*/ u16 paletteTag;
|
||||
/*0x04*/ u16 unk04;
|
||||
/*0x06*/ u16 unk06;
|
||||
/*0x08*/ u16 unk08;
|
||||
/*0x0A*/ u16 unk0A;
|
||||
/*0x0C*/ s16 unk0C;
|
||||
/*0x10*/ u32 selectedPalettes;
|
||||
};
|
||||
|
||||
void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct);
|
||||
bool8 sub_80C5DCC(void);
|
||||
void sub_80C5E38(struct PCScreenEffectStruct *unkStruct);
|
||||
bool8 sub_80C5F98(void);
|
||||
|
||||
#endif //GUARD_PC_SCREEN_EFFECT_H
|
||||
@@ -428,10 +428,10 @@ struct BattleMove
|
||||
|
||||
struct PokemonStorage
|
||||
{
|
||||
/*0x00*/ u8 currentBox;
|
||||
/*0x01*/ struct BoxPokemon boxes[14][30];
|
||||
u8 boxNames[14][9];
|
||||
u8 unkArray[14];
|
||||
/*0x0000*/ u8 currentBox;
|
||||
/*0x0004*/ struct BoxPokemon boxes[14][30];
|
||||
/*0x8344*/ u8 boxNames[14][9];
|
||||
/*0x83c2*/ u8 wallpaper[14];
|
||||
};
|
||||
|
||||
struct SpindaSpot
|
||||
@@ -522,7 +522,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src);
|
||||
void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
|
||||
u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
|
||||
void CalculateMonStats(struct Pokemon *mon);
|
||||
void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest);
|
||||
void ExpandBoxMon(const struct BoxPokemon *src, struct Pokemon *dest);
|
||||
u8 GetLevelFromMonExp(struct Pokemon *mon);
|
||||
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
|
||||
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
|
||||
@@ -627,9 +627,8 @@ void RandomlyGivePartyPokerus(struct Pokemon *party);
|
||||
void PartySpreadPokerus(struct Pokemon *party);
|
||||
|
||||
struct Sprite *sub_80F7920(u16, u16, const u16 *);
|
||||
void BoxMonRestorePP(struct BoxPokemon *);
|
||||
|
||||
bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
|
||||
|
||||
|
||||
|
||||
#endif // GUARD_POKEMON_H
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef GUARD_POKEMON_ICON_H
|
||||
#define GUARD_POKEMON_ICON_H
|
||||
|
||||
extern const u8 * const gMonIconTable[];
|
||||
extern const u8 gMonIconPaletteIndices[];
|
||||
|
||||
u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
|
||||
u8 UpdateMonIconFrame(struct Sprite *sprite);
|
||||
u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4);
|
||||
@@ -12,5 +15,6 @@ void sub_809D580(u16);
|
||||
void sub_809D608(u16);
|
||||
void sub_809D62C(struct Sprite *sprite);
|
||||
void sub_809D824(struct Sprite *sprite, u8 animNum);
|
||||
u16 mon_icon_convert_unown_species_id(u16 species, u32 personality);
|
||||
|
||||
#endif // GUARD_POKEMON_ICON_H
|
||||
|
||||
@@ -1,8 +1,302 @@
|
||||
#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H
|
||||
#define GUARD_POKEMON_STORAGE_SYSTEM_H
|
||||
|
||||
#include "pc_screen_effect.h"
|
||||
#include "mon_markings.h"
|
||||
|
||||
enum {
|
||||
PC_TEXT_EXIT_BOX,
|
||||
PC_TEXT_WHAT_YOU_DO,
|
||||
PC_TEXT_PICK_A_THEME,
|
||||
PC_TEXT_PICK_A_WALLPAPER,
|
||||
PC_TEXT_IS_SELECTED,
|
||||
PC_TEXT_JUMP_TO_WHICH_BOX,
|
||||
PC_TEXT_DEPOSIT_IN_WHICH_BOX,
|
||||
PC_TEXT_WAS_DEPOSITED,
|
||||
PC_TEXT_BOX_IS_FULL,
|
||||
PC_TEXT_RELEASE_POKE,
|
||||
PC_TEXT_WAS_RELEASED,
|
||||
PC_TEXT_BYE_BYE,
|
||||
PC_TEXT_MARK_POKE,
|
||||
PC_TEXT_LAST_POKE,
|
||||
PC_TEXT_PARTY_FULL,
|
||||
PC_TEXT_HOLDING_POKE,
|
||||
PC_TEXT_WHICH_ONE_WILL_TAKE,
|
||||
PC_TEXT_CANT_RELEASE_EGG,
|
||||
PC_TEXT_CONTINUE_BOX,
|
||||
PC_TEXT_CAME_BACK,
|
||||
PC_TEXT_WORRIED,
|
||||
PC_TEXT_SURPRISE,
|
||||
PC_TEXT_PLEASE_REMOVE_MAIL
|
||||
};
|
||||
|
||||
enum {
|
||||
PC_TEXT_FMT_NORMAL,
|
||||
PC_TEXT_FMT_MON_NAME,
|
||||
PC_TEXT_FMT_UNK_02,
|
||||
PC_TEXT_FMT_UNK_03,
|
||||
PC_TEXT_FMT_MON_NAME_2,
|
||||
PC_TEXT_FMT_UNK_05,
|
||||
PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK
|
||||
};
|
||||
|
||||
struct StorageAction {
|
||||
const u8 *text;
|
||||
u8 format;
|
||||
};
|
||||
|
||||
struct PSS_MenuStringPtrs {
|
||||
const u8 *text;
|
||||
const u8 *desc;
|
||||
};
|
||||
|
||||
struct UnkStruct_2000028 {
|
||||
void *unk_00;
|
||||
void *unk_04;
|
||||
u16 unk_08;
|
||||
u16 unk_0a;
|
||||
void (*unk_0c)(struct UnkStruct_2000028 *data);
|
||||
};
|
||||
|
||||
struct UnkStruct_2000020 {
|
||||
struct UnkStruct_2000028 *unk_00;
|
||||
u8 unk_04;
|
||||
u8 unk_05;
|
||||
};
|
||||
|
||||
struct UnkPSSStruct_2002370 {
|
||||
struct Sprite *unk_0000;
|
||||
struct Sprite *unk_0004[4];
|
||||
u32 unk_0014[3];
|
||||
struct Sprite *unk_0020[2];
|
||||
u8 filler_0028[0x214];
|
||||
u8 curBox;
|
||||
u8 unk_023d;
|
||||
u8 unk_023e;
|
||||
u16 unk_0240;
|
||||
u16 unk_0242;
|
||||
}; // 0244
|
||||
|
||||
struct PokemonStorageSystemData {
|
||||
void (*unk_0000)(void);
|
||||
u8 unk_0004;
|
||||
u8 unk_0005;
|
||||
u8 unk_0006;
|
||||
u8 unk_0007;
|
||||
u16 unk_0008;
|
||||
u16 unk_000a;
|
||||
struct PCScreenEffectStruct unk_000c;
|
||||
struct UnkStruct_2000020 unk_0020;
|
||||
struct UnkStruct_2000028 unk_0028[8];
|
||||
u16 unk_00a8[0x400];
|
||||
u16 unk_08a8;
|
||||
u16 unk_08aa;
|
||||
u8 unk_08ac;
|
||||
u8 unk_08ad;
|
||||
u8 unk_08ae;
|
||||
u8 unk_08af;
|
||||
u8 unk_08b0;
|
||||
bool8 unk_08b1;
|
||||
s16 unk_08b2;
|
||||
u16 unk_08b4;
|
||||
u16 unk_08b6;
|
||||
u16 unk_08b8;
|
||||
bool8 unk_08ba;
|
||||
u8 unk_08bb;
|
||||
u16 unk_08bc;
|
||||
u16 unk_08be;
|
||||
u16 unk_08c0;
|
||||
u16 unk_08c2;
|
||||
u16 unk_08c4;
|
||||
u16 unk_08c6;
|
||||
u16 unk_08c8;
|
||||
u8 unk_08ca[0x400];
|
||||
u8 unk_0cca;
|
||||
u16 unk_0ccc[0x10];
|
||||
u16 unk_0cec;
|
||||
u16 unk_0cee;
|
||||
struct Sprite *unk_0cf0[2];
|
||||
struct Sprite *unk_0cf8[2];
|
||||
struct Sprite *unk_0d00[2];
|
||||
u32 unk_0d08;
|
||||
u8 filler_0d0c[0x50];
|
||||
u16 unk_0d5c;
|
||||
s16 unk_0d5e;
|
||||
s16 unk_0d60;
|
||||
u16 unk_0d62[360];
|
||||
u8 unk_1032;
|
||||
struct Sprite *unk_1034;
|
||||
struct Sprite *unk_1038[6]; // party
|
||||
struct Sprite *unk_1050[30]; // box
|
||||
struct Sprite **unk_10c8;
|
||||
struct Sprite **unk_10cc;
|
||||
u16 unk_10d0[40];
|
||||
u16 unk_1120[40];
|
||||
u8 unk_1170;
|
||||
u8 unk_1171;
|
||||
u16 unk_1172;
|
||||
s16 unk_1174;
|
||||
s16 unk_1176;
|
||||
u16 unk_1178;
|
||||
u8 unk_117a;
|
||||
s8 unk_117b;
|
||||
u8 unk_117c;
|
||||
u8 unk_117d;
|
||||
u8 filler_117e[0x42];
|
||||
struct Sprite *unk_11c0;
|
||||
struct Sprite *unk_11c4;
|
||||
s32 unk_11c8;
|
||||
s32 unk_11cc;
|
||||
s32 unk_11d0;
|
||||
s32 unk_11d4;
|
||||
s16 unk_11d8;
|
||||
s16 unk_11da;
|
||||
u16 unk_11dc;
|
||||
s8 unk_11de;
|
||||
s8 unk_11df;
|
||||
u8 unk_11e0;
|
||||
u8 unk_11e1;
|
||||
u8 unk_11e2;
|
||||
u8 unk_11e3;
|
||||
u8 filler_11e4[4];
|
||||
const u8 *unk_11e8;
|
||||
u32 unk_11ec;
|
||||
u16 unk_11f0;
|
||||
u16 unk_11f2;
|
||||
u8 filler_11f4[2];
|
||||
u8 unk_11f6;
|
||||
u8 unk_11f7;
|
||||
u8 unk_11f8;
|
||||
u8 unk_11f9;
|
||||
u8 unk_11fa[0x15];
|
||||
u8 unk_120f[0x25];
|
||||
u8 unk_1234[0x25];
|
||||
u8 unk_1259[0x21];
|
||||
u8 unk_127a[0x2a];
|
||||
bool8 (*unk_12a4)(void);
|
||||
u8 unk_12a8;
|
||||
u8 unk_12a9;
|
||||
struct Sprite *unk_12ac;
|
||||
struct Sprite *unk_12b0[2];
|
||||
u16 *unk_12b8;
|
||||
struct PokemonMarkMenu unk_12bc;
|
||||
struct UnkPSSStruct_2002370 unk_2370;
|
||||
struct Pokemon unk_25b4;
|
||||
struct Pokemon unk_2618;
|
||||
u8 unk_267c;
|
||||
u8 unk_267d;
|
||||
u8 unk_267e;
|
||||
u8 unk_267f;
|
||||
s8 unk_2680;
|
||||
s8 unk_2681;
|
||||
s8 unk_2682;
|
||||
s8 unk_2683;
|
||||
u16 unk_2684;
|
||||
u16 unk_2686[3];
|
||||
u8 unk_268c;
|
||||
u8 unk_268d;
|
||||
u8 unk_268e;
|
||||
union {
|
||||
struct Pokemon *pokemon;
|
||||
struct BoxPokemon *box;
|
||||
} unk_2690;
|
||||
u8 unk_2694[18];
|
||||
u8 unk_26a6[62];
|
||||
u8 unk_26e4[0x16];
|
||||
u16 unk_26fa;
|
||||
u16 *unk_26fc;
|
||||
struct Sprite *unk_2700;
|
||||
u16 unk_2704[0x10];
|
||||
u8 filler_2724[0x60];
|
||||
u8 unk_2784[0x800];
|
||||
u8 filler_2f84[0x1800];
|
||||
u8 unk_4784[0x800];
|
||||
};
|
||||
|
||||
extern u16 gUnknown_02039760[0x600];
|
||||
extern struct UnkPSSStruct_2002370 *gUnknown_02038478;
|
||||
extern struct PokemonStorageSystemData *const gPokemonStorageSystemPtr;
|
||||
extern u8 *const gUnknown_083B6DB8;
|
||||
|
||||
u8 StorageSystemGetPartySize(void);
|
||||
s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId);
|
||||
u8 CountAlivePartyMonsExceptOne(u8 toSkip);
|
||||
u8 CountPokemonInBoxN(u8 boxId);
|
||||
void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3);
|
||||
void sub_809634C(u8 curBox);
|
||||
u8 sub_8096368(void);
|
||||
void sub_809635C(void);
|
||||
void sub_8096310(void);
|
||||
void sub_80961A8(void);
|
||||
void task_intro_29(u8 whichMenu);
|
||||
void ResetPokemonStorageSystem(void);
|
||||
void BoxMonRestorePP(struct BoxPokemon *);
|
||||
void party_compaction(void);
|
||||
void ResetPSSMonIconSprites(void);
|
||||
void SpawnBoxIconSprites(u8 boxId);
|
||||
u8 get_preferred_box(void);
|
||||
void sub_8098BF0(void);
|
||||
void sub_8098D20(u8 monId);
|
||||
bool8 sub_80990AC(void);
|
||||
void sub_8099200(bool8 a0);
|
||||
void sub_8099310(void);
|
||||
bool8 sub_8099374(void);
|
||||
void sub_8099480(void);
|
||||
void sub_80994A8(s16 a0);
|
||||
void sub_8099520(u8 a0);
|
||||
void sub_809954C(void);
|
||||
void sub_8099584(u8 a0, u8 a1);
|
||||
void sub_809960C(u8 a0, u8 a1);
|
||||
void sub_80996B0(u8 a0, u8 a1);
|
||||
bool8 sub_809971C(void);
|
||||
void sub_809981C(u8 mode, u8 idx);
|
||||
bool8 sub_80998D8(void);
|
||||
void sub_8099920(void);
|
||||
void sub_8099958(void);
|
||||
bool8 sub_8099990(void);
|
||||
struct Sprite *sub_809A9A0(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
|
||||
void sub_8099BF8(u8 a0);
|
||||
void sub_8099C70(u8 whichBox);
|
||||
bool8 sub_8099D34(void);
|
||||
void sub_8099DCC(u8 a0);
|
||||
bool8 sub_8099E08(void);
|
||||
void sub_809A860(bool8 a0);
|
||||
void sub_809AA24(void);
|
||||
void sub_809AA98(void);
|
||||
bool8 sub_809AC00(void);
|
||||
void sub_809B0C0(u8 a0);
|
||||
void sub_809B0D4(void);
|
||||
void sub_809B0E0(void);
|
||||
u8 sub_809B0F4(void);
|
||||
void sub_809B068(void);
|
||||
void sub_809B100(u8 a0);
|
||||
bool8 sub_809B130(void);
|
||||
void sub_809B440(void);
|
||||
bool8 sub_809B62C(u8);
|
||||
void sub_809B6BC(void);
|
||||
void sub_809B6DC(void);
|
||||
bool8 sub_809B734(void);
|
||||
void sub_809B760(void);
|
||||
void sub_809B7AC(void);
|
||||
void sub_809B7D4(void);
|
||||
s8 sub_809B960(void);
|
||||
void sub_809BB90(void);
|
||||
void sub_809BBC0(void);
|
||||
void sub_809BC18(void);
|
||||
void sub_809BD14(void);
|
||||
s16 party_compaction(void);
|
||||
void sub_809BDD8(u8 markings);
|
||||
bool8 sub_809BE80(void);
|
||||
bool8 sub_809BEBC(void);
|
||||
bool8 sub_809BF20(void);
|
||||
bool8 sub_809BF48(void);
|
||||
u8 sub_809CA40(void);
|
||||
void sub_809CDCC(void);
|
||||
void sub_809CDEC(u8 a0);
|
||||
void sub_809CE84(void);
|
||||
s16 sub_809CF30(void);
|
||||
void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000028 *a1, u8 a2);
|
||||
void sub_809CFF0(void);
|
||||
void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);
|
||||
void sub_809D104(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);
|
||||
void sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height);
|
||||
|
||||
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
|
||||
|
||||
@@ -235,6 +235,7 @@ extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
|
||||
extern s16 gSpriteCoordOffsetX;
|
||||
extern s16 gSpriteCoordOffsetY;
|
||||
extern u8 gReservedSpritePaletteCount;
|
||||
extern u16 gReservedSpriteTileCount;
|
||||
|
||||
extern u8 gOamLimit;
|
||||
|
||||
|
||||
@@ -253,4 +253,6 @@ void Text_StripExtCtrlCodes(u8 *str);
|
||||
s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2);
|
||||
u8 sub_8004FD0(struct Window *win, u8 *dest, const u8 *src, u16 tileDataStartOffset, u8 left, u16 top, u8 width, u32 a8);
|
||||
|
||||
extern const u16 gUnknownPalette_81E6692[];
|
||||
|
||||
#endif // GUARD_TEXT_H
|
||||
|
||||
@@ -128,9 +128,12 @@ SECTIONS {
|
||||
src/engine/save_menu_util.o(.text);
|
||||
src/battle/battle_party_menu.o(.text);
|
||||
asm/unk_text_8095904.o(.text);
|
||||
asm/pokemon_storage_system.o(.text);
|
||||
src/pokemon/pokemon_storage_system.o(.text);
|
||||
asm/pokemon_storage_system.o(.text_8098A38);
|
||||
src/pokemon/pokemon_storage_system_2.o(.text);
|
||||
src/pokemon/pokemon_storage_system_3.o(.text);
|
||||
src/pokemon/pokemon_storage_system_4.o(.text);
|
||||
src/pokemon/pokemon_storage_system_5.o(.text);
|
||||
asm/pokemon_storage_system.o(.text);
|
||||
src/pokemon/pokemon_icon.o(.text);
|
||||
src/pokemon/pokemon_summary_screen.o(.text);
|
||||
src/field/script_movement.o(.text);
|
||||
@@ -555,6 +558,11 @@ SECTIONS {
|
||||
src/pokemon/pokedex.o(.rodata);
|
||||
src/engine/trainer_card.o(.rodata);
|
||||
src/battle/battle_party_menu.o(.rodata);
|
||||
src/pokemon/pokemon_storage_system.o(.rodata);
|
||||
src/pokemon/pokemon_storage_system_2.o(.rodata);
|
||||
src/pokemon/pokemon_storage_system_3.o(.rodata);
|
||||
src/pokemon/pokemon_storage_system_4.o(.rodata);
|
||||
src/pokemon/pokemon_storage_system_5.o(.rodata);
|
||||
data/pokemon_storage_system.o(.rodata);
|
||||
src/pokemon/pokemon_icon.o(.rodata);
|
||||
src/pokemon/pokemon_summary_screen.o(.rodata);
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
#define COLUMN_COUNT 10
|
||||
#endif
|
||||
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
|
||||
extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
|
||||
|
||||
const u8 gSpriteImage_83CE094[] = INCBIN_U8("graphics/naming_screen/pc_icon/0.4bpp");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "decoration.h"
|
||||
#include "event_data.h"
|
||||
#include "field_fadetransition.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "palette.h"
|
||||
#include "party_menu.h"
|
||||
#include "pokemon_menu.h"
|
||||
#include "field_weather.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_summary_screen.h"
|
||||
#include "overworld.h"
|
||||
|
||||
@@ -205,7 +205,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DayCare * daycare, u8 slot)
|
||||
|
||||
GetBoxMonNick(&daycare->mons[slot], gStringVar1);
|
||||
species = GetBoxMonData(&daycare->mons[slot], MON_DATA_SPECIES);
|
||||
sub_803B4B4(&daycare->mons[slot], &pokemon);
|
||||
ExpandBoxMon(&daycare->mons[slot], &pokemon);
|
||||
|
||||
if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "field_map_obj.h"
|
||||
#include "util.h"
|
||||
#include "field_effect_helpers.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
|
||||
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
|
||||
|
||||
|
||||
@@ -2,18 +2,7 @@
|
||||
#include "main.h"
|
||||
#include "palette.h"
|
||||
#include "sprite.h"
|
||||
|
||||
struct UnkStruct
|
||||
{
|
||||
/*0x00*/ u16 tileTag;
|
||||
/*0x02*/ u16 paletteTag;
|
||||
/*0x04*/ u16 unk04;
|
||||
/*0x06*/ u16 unk06;
|
||||
/*0x08*/ u16 unk08;
|
||||
/*0x0A*/ u16 unk0A;
|
||||
/*0x0C*/ s16 unk0C;
|
||||
/*0x10*/ u32 selectedPalettes;
|
||||
};
|
||||
#include "pc_screen_effect.h"
|
||||
|
||||
void sub_80C603C(void);
|
||||
void sub_80C6078(void);
|
||||
@@ -30,7 +19,7 @@ extern const u16 gUnknownPal_083D18EC[16];
|
||||
|
||||
extern const u8 gUnknownGfx_083D190C[128];
|
||||
|
||||
EWRAM_DATA struct UnkStruct *gUnknown_020387EC = NULL;
|
||||
EWRAM_DATA struct PCScreenEffectStruct *gUnknown_020387EC = NULL;
|
||||
|
||||
const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 };
|
||||
|
||||
@@ -58,7 +47,7 @@ const struct SpriteTemplate gSpriteTemplate_83D18C0 =
|
||||
sub_80C6130,
|
||||
};
|
||||
|
||||
void sub_80C5CD4(struct UnkStruct *unkStruct)
|
||||
void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
|
||||
20
src/field/pokedex_area_screen.c
Normal file
20
src/field/pokedex_area_screen.c
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
EWRAM_DATA u16 gUnknown_02039260 = 0;
|
||||
EWRAM_DATA u16 gUnknown_02039262 = 0;
|
||||
EWRAM_DATA u16 gUnknown_02039264 = 0;
|
||||
EWRAM_DATA u16 gUnknown_02039266 = 0;
|
||||
EWRAM_DATA u16 gUnknown_02039268 = 0;
|
||||
EWRAM_DATA u16 gUnknown_0203926A = 0;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
// .rodata
|
||||
|
||||
// .text
|
||||
16
src/field/pokenav.c
Normal file
16
src/field/pokenav.c
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
EWRAM_DATA u8 gUnknown_020388B0[4] = {};
|
||||
EWRAM_DATA u16 gUnknown_020388B4 = 0;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
// .rodata
|
||||
|
||||
// .text
|
||||
@@ -104,7 +104,6 @@ static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL;
|
||||
EWRAM_DATA u8 gPokeblockMonID = 0;
|
||||
EWRAM_DATA s16 gPokeblockGain = 0;
|
||||
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
extern u16 gSpecialVar_ItemId; // FIXME: remove after merge of #349 Pokeblock
|
||||
|
||||
static void launch_c3_walk_stairs_and_run_once(void (*const)(void));
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "mon_markings.h"
|
||||
|
||||
#ifdef GERMAN
|
||||
#define MENU_TEXT_SPRITE_X_OFFSET 24
|
||||
@@ -12,25 +13,6 @@
|
||||
#define MENU_TEXT_SPRITE_X_OFFSET 32
|
||||
#endif
|
||||
|
||||
struct PokemonMarkMenu
|
||||
{
|
||||
/*0x0000*/ u16 baseTileTag;
|
||||
/*0x0002*/ u16 basePaletteTag;
|
||||
/*0x0004*/ u8 markings; // bit flags
|
||||
/*0x0005*/ s8 cursorPos;
|
||||
/*0x0006*/ bool8 markingsArray[4];
|
||||
/*0x000A*/ u8 cursorBaseY;
|
||||
/*0x000B*/ bool8 spriteSheetLoadRequired;
|
||||
/*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
|
||||
/*0x0014*/ struct Sprite *menuMarkingSprites[4];
|
||||
/*0x0024*/ struct Sprite *menuTextSprite;
|
||||
/*0x0028*/ const u8 *frameTiles;
|
||||
/*0x002C*/ const u16 *framePalette;
|
||||
/*0x0030*/ u8 menuWindowSpriteTiles[0x1000];
|
||||
/*0x1030*/ u8 filler1030[0x80];
|
||||
/*0x10B0*/ u8 tileLoadState;
|
||||
};
|
||||
|
||||
extern u8 gPokenavConditionMenuMisc_Gfx[];
|
||||
extern u16 gUnknown_08E966B8[];
|
||||
|
||||
|
||||
@@ -524,7 +524,7 @@ void CalculateMonStats(struct Pokemon *mon)
|
||||
SetMonData(mon, MON_DATA_HP, ¤tHP);
|
||||
}
|
||||
|
||||
void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest)
|
||||
void ExpandBoxMon(const struct BoxPokemon *src, struct Pokemon *dest)
|
||||
{
|
||||
u32 value = 0;
|
||||
dest->box = *src;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "constants/hold_effects.h"
|
||||
#include "constants/moves.h"
|
||||
#include "battle.h"
|
||||
#include "battle_util.h"
|
||||
#include "data2.h"
|
||||
@@ -569,7 +570,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
|
||||
u16 *moves = (u16 *)data;
|
||||
s32 i = 0;
|
||||
|
||||
while (moves[i] != 355)
|
||||
while (moves[i] != NUM_MOVES)
|
||||
{
|
||||
u16 move = moves[i];
|
||||
if (substruct1->moves[0] == move
|
||||
|
||||
@@ -1,93 +1,606 @@
|
||||
#include "global.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "palette.h"
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "field_weather.h"
|
||||
#include "overworld.h"
|
||||
#include "field_fadetransition.h"
|
||||
#include "menu.h"
|
||||
#include "main.h"
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
#include "ewram.h"
|
||||
#include "event_data.h"
|
||||
#include "script.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
|
||||
struct StorageAction {
|
||||
u8 *text;
|
||||
u8 format;
|
||||
};
|
||||
|
||||
extern const struct StorageAction gUnknown_083B6DF4[];
|
||||
void StorageSystemCreatePrimaryMenu(u8 whichMenu);
|
||||
void sub_80963D0(u8 curBox);
|
||||
void sub_809658C(void);
|
||||
void sub_80965F8(void);
|
||||
void sub_809662C(void);
|
||||
void sub_809665C(void);
|
||||
void sub_80966F4(const u8 *sourceString, u16 x, u16 y);
|
||||
void sub_8096784(struct Sprite *sprite);
|
||||
|
||||
EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
|
||||
EWRAM_DATA u8 gUnknown_02038470[3] = {};
|
||||
EWRAM_DATA u8 gUnknown_02038473 = 0;
|
||||
EWRAM_DATA u8 gUnknown_02038474 = 0;
|
||||
EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL;
|
||||
|
||||
void sub_8098898(u8 index) {
|
||||
u8 *ptr;
|
||||
const struct PSS_MenuStringPtrs gUnknown_083B600C[] = {
|
||||
{PCText_WithdrawPoke, PCText_MovePokeToParty},
|
||||
{PCText_DepositPoke, PCText_StorePokeInBox},
|
||||
{PCText_MovePoke, PCText_OrganizeBoxesParty},
|
||||
{PCText_SeeYa, PCText_ReturnToPrevMenu}
|
||||
};
|
||||
|
||||
Menu_DrawStdWindowFrame(10, 16, 29, 19);
|
||||
const union AnimCmd gSpriteAnim_83B602C[] = {
|
||||
ANIMCMD_FRAME( 0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
switch (gUnknown_083B6DF4[index].format)
|
||||
const union AnimCmd gSpriteAnim_83B6034[] = {
|
||||
ANIMCMD_FRAME( 4, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd gSpriteAnim_83B603C[] = {
|
||||
ANIMCMD_FRAME( 6, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd gSpriteAnim_83B6044[] = {
|
||||
ANIMCMD_FRAME(10, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd *const gSpriteAnimTable_83B604C[] = {
|
||||
gSpriteAnim_83B602C,
|
||||
gSpriteAnim_83B6034,
|
||||
gSpriteAnim_83B603C,
|
||||
gSpriteAnim_83B6044
|
||||
};
|
||||
|
||||
const union AffineAnimCmd gSpriteAffineAnim_83B605C[] = {
|
||||
AFFINEANIMCMD_FRAME(0xe0, 0xe0, 0, 0),
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gSpriteAffineAnimTable_83B606C[] = {
|
||||
gSpriteAffineAnim_83B605C
|
||||
};
|
||||
|
||||
const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal");
|
||||
|
||||
const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
|
||||
|
||||
const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
|
||||
|
||||
u8 CountPokemonInBoxN(u8 boxId)
|
||||
{
|
||||
u16 i;
|
||||
u16 count;
|
||||
|
||||
for (i = 0, count = 0; i < 30; i++)
|
||||
{
|
||||
|
||||
case 2:
|
||||
ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
|
||||
ptr = StringCopy(ptr, gUnk20011fa);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
|
||||
ptr = StringCopy(ptr, gUnk20026e4);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
// {var} + " is selected."
|
||||
ptr = StringCopy(gUnk2002694, gUnk20011fa);
|
||||
ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
// {var} + " was released."
|
||||
ptr = StringCopy(gUnk2002694, gUnk20026e4);
|
||||
#if ENGLISH
|
||||
ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text);
|
||||
#elif GERMAN
|
||||
ptr = de_sub_8073174(gUnk2002694, gUnknown_083B6DF4[index].text);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 3:
|
||||
{
|
||||
u8 *stringLength;
|
||||
u8 *text;
|
||||
|
||||
text = gUnknown_083B6DF4[index].text;
|
||||
stringLength = &text[StringLength(text)] + 1;
|
||||
|
||||
ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
|
||||
ptr = StringCopy(ptr, gUnk20011fa);
|
||||
ptr = StringCopy(ptr, stringLength);
|
||||
if (GetBoxMonData(gPokemonStorage.boxes[boxId] + i, MON_DATA_SPECIES) != 0)
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 30; i++)
|
||||
{
|
||||
if (GetBoxMonData(gPokemonStorage.boxes[boxId] + i, MON_DATA_SPECIES) == 0)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
u8 GetNumValidDaycarePartyMons(void)
|
||||
{
|
||||
u16 i;
|
||||
u16 count;
|
||||
|
||||
for (i = 0, count = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
struct Pokemon *pokemon = gPlayerParty + i;
|
||||
if (GetMonData(pokemon, MON_DATA_SPECIES) != 0 && !GetMonData(pokemon, MON_DATA_IS_EGG))
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
u8 CountAlivePartyMonsExceptOne(u8 toSkip)
|
||||
{
|
||||
u16 i;
|
||||
u16 count;
|
||||
|
||||
for (i = 0, count = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (i != toSkip)
|
||||
{
|
||||
struct Pokemon *pokemon = gPlayerParty + i;
|
||||
if (GetMonData(pokemon, MON_DATA_SPECIES) != 0 && !GetMonData(pokemon, MON_DATA_IS_EGG) && GetMonData(pokemon, MON_DATA_HP) != 0)
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
u8 CountAlivePartyMonsExceptSelectedOne(void)
|
||||
{
|
||||
return CountAlivePartyMonsExceptOne(gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
u8 StorageSystemGetPartySize(void)
|
||||
{
|
||||
u16 i;
|
||||
u16 count;
|
||||
|
||||
for (i = 0, count = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != 0)
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
u8 *unref_sub_8095C60(u8 *dest, const u8 *src, u16 pad)
|
||||
{
|
||||
u8 *_dest = StringCopy(dest, src);
|
||||
while (_dest < dest + pad)
|
||||
{
|
||||
*_dest++ = CHAR_SPACE;
|
||||
}
|
||||
*_dest = EOS;
|
||||
return _dest;
|
||||
}
|
||||
|
||||
void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
dest_width *= 2;
|
||||
dest += dest_top * 0x20 + dest_left;
|
||||
src += src_top * src_width + src_left;
|
||||
for (i = 0; i < dest_height; i++)
|
||||
{
|
||||
CpuCopy16(src, dest, dest_width);
|
||||
dest += 0x20;
|
||||
src += src_width;
|
||||
}
|
||||
}
|
||||
|
||||
#define MAX_DMA_BLOCK_SIZE 0x1000
|
||||
#define Dma3FillLarge_(value, dest, size, bit) \
|
||||
{ \
|
||||
void *_dest = dest; \
|
||||
u32 _size = size; \
|
||||
while (1) \
|
||||
{ \
|
||||
if (_size <= MAX_DMA_BLOCK_SIZE) \
|
||||
{ \
|
||||
DmaFill##bit(3, value, _dest, _size); \
|
||||
break; \
|
||||
} \
|
||||
DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \
|
||||
_dest += MAX_DMA_BLOCK_SIZE; \
|
||||
_size -= MAX_DMA_BLOCK_SIZE; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16)
|
||||
#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32)
|
||||
|
||||
void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
dest += dest_top * 0x20 + dest_left;
|
||||
width *= 2;
|
||||
for (i = 0; i < height; dest += 0x20, i++)
|
||||
Dma3FillLarge16_(0, dest, width);
|
||||
}
|
||||
|
||||
s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode)
|
||||
{
|
||||
s16 i;
|
||||
s16 direction;
|
||||
if (mode == 0 || mode == 2)
|
||||
{
|
||||
direction = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = -1;
|
||||
}
|
||||
if (mode == 2 || mode == 3)
|
||||
{
|
||||
for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction)
|
||||
{
|
||||
if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction)
|
||||
{
|
||||
if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0 && !GetBoxMonData(box + i, MON_DATA_IS_EGG))
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void StorageSystemClearMessageWindow(void)
|
||||
{
|
||||
Menu_BlankWindowRect(2, 15, 27, 18);
|
||||
}
|
||||
|
||||
void Task_PokemonStorageSystem(u8 taskId)
|
||||
{
|
||||
struct Task *task = gTasks + taskId;
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
StorageSystemCreatePrimaryMenu(task->data[1]);
|
||||
Menu_DisplayDialogueFrame();
|
||||
Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (IsWeatherNotFadingIn())
|
||||
{
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
task->data[2] = Menu_ProcessInput();
|
||||
switch(task->data[2])
|
||||
{
|
||||
case -2:
|
||||
task->data[3] = task->data[1];
|
||||
if (gMain.newKeys & DPAD_UP && --task->data[3] < 0)
|
||||
task->data[3] = 3;
|
||||
|
||||
if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 3)
|
||||
task->data[3] = 0;
|
||||
if (task->data[1] != task->data[3])
|
||||
{
|
||||
task->data[1] = task->data[3];
|
||||
StorageSystemClearMessageWindow();
|
||||
Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
|
||||
}
|
||||
break;
|
||||
case -1:
|
||||
case 3:
|
||||
Menu_DestroyCursor();
|
||||
Menu_EraseWindowRect(0, 0, 13, 9);
|
||||
ScriptContext2_Disable();
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
default:
|
||||
if (task->data[2] == 0 && StorageSystemGetPartySize() == PARTY_SIZE)
|
||||
{
|
||||
StorageSystemClearMessageWindow();
|
||||
Menu_PrintText(gPCText_PartyFull2, 2, 15);
|
||||
task->data[0] = 3;
|
||||
}
|
||||
else if (task->data[2] == 1 && StorageSystemGetPartySize() == 1)
|
||||
{
|
||||
StorageSystemClearMessageWindow();
|
||||
Menu_PrintText(gPCText_OnlyOne, 2, 15);
|
||||
task->data[0] = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
FadeScreen(1, 0);
|
||||
task->data[0] = 4;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
{
|
||||
StorageSystemClearMessageWindow();
|
||||
Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_UP)
|
||||
{
|
||||
if (--task->data[1] < 0)
|
||||
task->data[1] = 3;
|
||||
Menu_MoveCursor(-1);
|
||||
task->data[1] = Menu_GetCursorPos();
|
||||
StorageSystemClearMessageWindow();
|
||||
Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_DOWN)
|
||||
{
|
||||
if (++task->data[1] > 3)
|
||||
task->data[1] = 0;
|
||||
Menu_MoveCursor(1);
|
||||
task->data[1] = Menu_GetCursorPos();
|
||||
StorageSystemClearMessageWindow();
|
||||
Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
task_intro_29(task->data[2]);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ShowPokemonStorageSystem(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_PokemonStorageSystem, 80);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void FieldCB_ReturnToOverworld(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_PokemonStorageSystem, 80);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = gUnknown_02038474;
|
||||
pal_fill_black();
|
||||
}
|
||||
|
||||
void StorageSystemCreatePrimaryMenu(u8 whichMenu)
|
||||
{
|
||||
Menu_DrawStdWindowFrame(0, 0, 13, 9);
|
||||
Menu_PrintItems(1, 1, 4, (const struct MenuAction *)gUnknown_083B600C);
|
||||
InitMenu(0, 1, 1, 4, whichMenu, 12);
|
||||
}
|
||||
|
||||
void sub_80961A8(void)
|
||||
{
|
||||
gUnknown_02038474 = gPokemonStorageSystemPtr->unk_0005;
|
||||
gFieldCallback = FieldCB_ReturnToOverworld;
|
||||
SetMainCallback2(c2_exit_to_overworld_2_switch);
|
||||
}
|
||||
|
||||
void ResetPokemonStorageSystem(void)
|
||||
{
|
||||
u16 boxId;
|
||||
u16 boxMon;
|
||||
|
||||
gPokemonStorage.currentBox = 0;
|
||||
for (boxId = 0; boxId < 14; boxId++)
|
||||
{
|
||||
for (boxMon = 0; boxMon < 30; boxMon++)
|
||||
{
|
||||
ZeroBoxMonData(gPokemonStorage.boxes[boxId] + boxMon);
|
||||
}
|
||||
}
|
||||
for (boxId = 0; boxId < 14; boxId++)
|
||||
{
|
||||
u8 *dest = StringCopy(gPokemonStorage.boxNames[boxId], gPCText_BOX);
|
||||
ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2);
|
||||
}
|
||||
for (boxId = 0; boxId < 14; boxId++)
|
||||
{
|
||||
gPokemonStorage.wallpaper[boxId] = boxId & 0x03;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3)
|
||||
{
|
||||
struct SpritePalette palette = {
|
||||
gBoxSelectionPopupPalette, palTag
|
||||
};
|
||||
struct SpriteSheet sheets[] = {
|
||||
{gBoxSelectionPopupCenterTiles, 0x800, tileTag},
|
||||
{gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1},
|
||||
{}
|
||||
};
|
||||
LoadSpritePalette(&palette);
|
||||
LoadSpriteSheets(sheets);
|
||||
gUnknown_02038478 = a0;
|
||||
a0->unk_0240 = tileTag;
|
||||
a0->unk_0242 = palTag;
|
||||
a0->unk_023e = a3;
|
||||
}
|
||||
|
||||
void sub_8096310(void)
|
||||
{
|
||||
FreeSpritePaletteByTag(gUnknown_02038478->unk_0242);
|
||||
FreeSpriteTilesByTag(gUnknown_02038478->unk_0240);
|
||||
FreeSpriteTilesByTag(gUnknown_02038478->unk_0240 + 1);
|
||||
}
|
||||
|
||||
void sub_809634C(u8 curBox)
|
||||
{
|
||||
sub_80963D0(curBox);
|
||||
}
|
||||
|
||||
void sub_809635C(void)
|
||||
{
|
||||
sub_809658C();
|
||||
}
|
||||
|
||||
u8 sub_8096368(void)
|
||||
{
|
||||
if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return 201;
|
||||
}
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gUnknown_02038478->curBox;
|
||||
}
|
||||
if (gMain.newKeys & DPAD_LEFT)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_809662C();
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_RIGHT)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_80965F8();
|
||||
}
|
||||
return 200;
|
||||
}
|
||||
|
||||
void sub_80963D0(u8 curBox)
|
||||
{
|
||||
u16 i;
|
||||
u8 spriteId;
|
||||
struct SpriteTemplate template;
|
||||
struct OamData oamData = {};
|
||||
oamData.size = 3;
|
||||
oamData.paletteNum = 1;
|
||||
template = (struct SpriteTemplate){
|
||||
0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
};
|
||||
|
||||
gUnknown_02038478->curBox = curBox;
|
||||
template.tileTag = gUnknown_02038478->unk_0240;
|
||||
template.paletteTag = gUnknown_02038478->unk_0242;
|
||||
|
||||
spriteId = CreateSprite(&template, 0xA0, 0x60, 0);
|
||||
gUnknown_02038478->unk_0000 = gSprites + spriteId;
|
||||
|
||||
oamData.shape = ST_OAM_V_RECTANGLE;
|
||||
oamData.size = 1;
|
||||
template.tileTag = gUnknown_02038478->unk_0240 + 1;
|
||||
template.anims = gSpriteAnimTable_83B604C;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
u16 r5;
|
||||
spriteId = CreateSprite(&template, 0x7c, 0x50, gUnknown_02038478->unk_023e);
|
||||
gUnknown_02038478->unk_0004[i] = gSprites + spriteId;
|
||||
r5 = 0;
|
||||
if (i & 2)
|
||||
{
|
||||
gUnknown_02038478->unk_0004[i]->pos1.x = 0xc4;
|
||||
r5 = 2;
|
||||
}
|
||||
if (i & 1)
|
||||
{
|
||||
gUnknown_02038478->unk_0004[i]->pos1.y = 0x70;
|
||||
gUnknown_02038478->unk_0004[i]->oam.size = 0;
|
||||
r5++;
|
||||
}
|
||||
StartSpriteAnim(gUnknown_02038478->unk_0004[i], r5);
|
||||
}
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
gUnknown_02038478->unk_0020[i] = sub_809A9A0(72 * i + 0x7c, 0x58, i, 0, gUnknown_02038478->unk_023e);
|
||||
if (gUnknown_02038478->unk_0020[i])
|
||||
{
|
||||
gUnknown_02038478->unk_0020[i]->data[0] = (i == 0 ? -1 : 1);
|
||||
gUnknown_02038478->unk_0020[i]->callback = sub_8096784;
|
||||
}
|
||||
}
|
||||
sub_809665C();
|
||||
}
|
||||
|
||||
void sub_809658C(void)
|
||||
{
|
||||
u16 i;
|
||||
if (gUnknown_02038478->unk_0000)
|
||||
{
|
||||
DestroySprite(gUnknown_02038478->unk_0000);
|
||||
gUnknown_02038478->unk_0000 = NULL;
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (gUnknown_02038478->unk_0004[i])
|
||||
{
|
||||
DestroySprite(gUnknown_02038478->unk_0004[i]);
|
||||
gUnknown_02038478->unk_0004[i] = NULL;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
if (gUnknown_02038478->unk_0020[i])
|
||||
DestroySprite(gUnknown_02038478->unk_0020[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80965F8(void)
|
||||
{
|
||||
if (++gUnknown_02038478->curBox > 13)
|
||||
gUnknown_02038478->curBox = 0;
|
||||
sub_809665C();
|
||||
}
|
||||
|
||||
void sub_809662C(void)
|
||||
{
|
||||
gUnknown_02038478->curBox = (gUnknown_02038478->curBox == 0 ? 13 : gUnknown_02038478->curBox - 1);
|
||||
sub_809665C();
|
||||
}
|
||||
|
||||
void sub_809665C(void)
|
||||
{
|
||||
u8 nPokemonInBox = CountPokemonInBoxN(gUnknown_02038478->curBox);
|
||||
u8 *stringVar = gStringVar1;
|
||||
|
||||
stringVar[0] = EXT_CTRL_CODE_BEGIN;
|
||||
stringVar[1] = 0x04; // EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW
|
||||
stringVar[2] = 0x0F; // TEXT_COLOR_WHITE2
|
||||
stringVar[3] = 0x01; // TEXT_COLOR_DARK_GREY
|
||||
stringVar[4] = 0x0E; // TEXT_COLOR_LIGHT_BLUE
|
||||
stringVar += 5;
|
||||
|
||||
stringVar = StringCopy(stringVar, gPokemonStorage.boxNames[gUnknown_02038478->curBox]);
|
||||
|
||||
stringVar[0] = CHAR_NEWLINE;
|
||||
stringVar[1] = EXT_CTRL_CODE_BEGIN;
|
||||
stringVar[2] = 0x11; // EXT_CTRL_CODE_CLEAR
|
||||
if (nPokemonInBox < 10)
|
||||
stringVar[3] = 0x28;
|
||||
else
|
||||
stringVar[3] = 0x22;
|
||||
stringVar += 4;
|
||||
|
||||
stringVar = ConvertIntToDecimalString(stringVar, nPokemonInBox);
|
||||
|
||||
stringVar[0] = CHAR_SLASH;
|
||||
stringVar[1] = CHAR_0 + 3;
|
||||
stringVar[2] = CHAR_0 + 0;
|
||||
stringVar[3] = EOS;
|
||||
sub_80966F4(gStringVar1, 0, 1);
|
||||
}
|
||||
|
||||
void sub_80966F4(const u8 *sourceString, u16 x, u16 y)
|
||||
{
|
||||
u16 *vdest = (u16 *)(BG_CHAR_ADDR(4) + (GetSpriteTileStartByTag(gUnknown_02038478->unk_0240) * 32) + y * 256 + x * 32);
|
||||
u8 *tileBuff = gUnknown_083B6DB8;
|
||||
DmaFill16(3, 0x1111, tileBuff, 0x400);
|
||||
Text_InitWindow8004E3C(&gWindowTemplate_81E6D38, tileBuff, sourceString);
|
||||
DmaCopy16(3, tileBuff, vdest, 0x400);
|
||||
}
|
||||
|
||||
void sub_8096784(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->data[1] > 3)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->pos2.x += sprite->data[0];
|
||||
if (++sprite->data[2] > 5)
|
||||
{
|
||||
sprite->data[2] = 0;
|
||||
sprite->pos2.x = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
// "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1)
|
||||
{
|
||||
u8 *stringLength;
|
||||
u8 *text;
|
||||
|
||||
text = gUnknown_083B6DF4[index].text;
|
||||
stringLength = &text[StringLength(text)] - 1;
|
||||
|
||||
ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
|
||||
ptr = StringCopy(ptr - 1, gUnk20026e4);
|
||||
ptr = StringCopy(ptr, stringLength);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0:
|
||||
default:
|
||||
ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
|
||||
break;
|
||||
}
|
||||
|
||||
while (ptr < gUnk20026A6)
|
||||
{
|
||||
ptr[0] = CHAR_SPACE;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
ptr[0] = EOS;
|
||||
Menu_PrintText(gUnk2002694, 11, 17);
|
||||
}
|
||||
|
||||
2063
src/pokemon/pokemon_storage_system_2.c
Normal file
2063
src/pokemon/pokemon_storage_system_2.c
Normal file
File diff suppressed because it is too large
Load Diff
655
src/pokemon/pokemon_storage_system_3.c
Normal file
655
src/pokemon/pokemon_storage_system_3.c
Normal file
@@ -0,0 +1,655 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "constants/species.h"
|
||||
#include "sprite.h"
|
||||
#include "trig.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
static void sub_8098E68(struct Sprite *sprite);
|
||||
static void sub_8099388(struct Sprite *sprite, u16 a1);
|
||||
static void sub_80993F4(struct Sprite *sprite);
|
||||
static void sub_80999C4(struct Sprite *sprite);
|
||||
static struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority);
|
||||
static void PSS_DestroyMonIconSprite(struct Sprite *sprite);
|
||||
|
||||
// .rodata
|
||||
|
||||
const struct OamData gOamData_83B6F2C;
|
||||
|
||||
// .text
|
||||
|
||||
u8 get_preferred_box(void)
|
||||
{
|
||||
return gPokemonStorage.currentBox;
|
||||
}
|
||||
|
||||
void ResetPSSMonIconSprites(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
sub_809D51C();
|
||||
for (i = 0; i < 40; i++)
|
||||
gPokemonStorageSystemPtr->unk_10d0[i] = 0;
|
||||
for (i = 0; i < 40; i++)
|
||||
gPokemonStorageSystemPtr->unk_1120[i] = 0;
|
||||
for (i = 0; i < 6; i++)
|
||||
gPokemonStorageSystemPtr->unk_1038[i] = NULL;
|
||||
for (i = 0; i < 30; i++)
|
||||
gPokemonStorageSystemPtr->unk_1050[i] = NULL;
|
||||
gPokemonStorageSystemPtr->unk_1034 = NULL;
|
||||
gPokemonStorageSystemPtr->unk_0d5c = 0;
|
||||
}
|
||||
|
||||
void sub_8098BF0(void)
|
||||
{
|
||||
u32 personality = GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_PERSONALITY);
|
||||
gPokemonStorageSystemPtr->unk_1034 = PSS_SpawnMonIconSprite(GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_SPECIES2), personality, 0, 0, 1, 7);
|
||||
gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
|
||||
}
|
||||
|
||||
void SpawnBoxIconSprites(u8 boxId)
|
||||
{
|
||||
struct BoxPokemon *box = gPokemonStorage.boxes[boxId];
|
||||
u16 i;
|
||||
u16 k = 0;
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
u16 j;
|
||||
for (j = 0; j < 6; j++)
|
||||
{
|
||||
u16 species = GetBoxMonData(box, MON_DATA_SPECIES2);
|
||||
if (species != SPECIES_NONE)
|
||||
gPokemonStorageSystemPtr->unk_1050[k] = PSS_SpawnMonIconSprite(species, GetBoxMonData(box, MON_DATA_PERSONALITY), 24 * j + 0x64, 24 * i + 0x2c, 2, 18 - j);
|
||||
else
|
||||
gPokemonStorageSystemPtr->unk_1050[k] = NULL;
|
||||
box++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8098D20(u8 monId)
|
||||
{
|
||||
struct BoxPokemon *mon = gPokemonStorage.boxes[get_preferred_box()] + monId;
|
||||
u16 species = GetBoxMonData(mon, MON_DATA_SPECIES2);
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
s16 x = 24 * (monId % 6) + 0x64;
|
||||
s16 y = 24 * (monId / 6) + 0x2c;
|
||||
gPokemonStorageSystemPtr->unk_1050[monId] = PSS_SpawnMonIconSprite(species, GetBoxMonData(mon, MON_DATA_PERSONALITY), x, y, 2, 18 - (monId % 6));
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8098DE0(s16 a0)
|
||||
{
|
||||
u16 monId;
|
||||
for (monId = 0; monId < 30; monId++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1050[monId])
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1050[monId]->data[2] = a0;
|
||||
gPokemonStorageSystemPtr->unk_1050[monId]->data[4] = 1;
|
||||
gPokemonStorageSystemPtr->unk_1050[monId]->callback = sub_8098E68;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8098E24(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[1] != 0)
|
||||
{
|
||||
sprite->data[1]--;
|
||||
sprite->pos1.x += sprite->data[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1178--;
|
||||
sprite->pos1.x = sprite->data[3];
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8098E68(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[4] != 0)
|
||||
{
|
||||
sprite->data[4]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += sprite->data[2];
|
||||
sprite->data[5] = sprite->pos1.x + sprite->pos2.x;
|
||||
if (sprite->data[5] < 0x45 || sprite->data[5] > 0xfb)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8098EA0(u8 col)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1050[col])
|
||||
{
|
||||
PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1050[col]);
|
||||
gPokemonStorageSystemPtr->unk_1050[col] = NULL;
|
||||
}
|
||||
col += 6;
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_8098EE0(u8 col, u16 a1, s16 a2)
|
||||
{
|
||||
u16 i;
|
||||
u16 x;
|
||||
u16 y;
|
||||
u8 count;
|
||||
u8 x1;
|
||||
u16 curX;
|
||||
|
||||
y = 0x2c;
|
||||
x = 24 * col + 0x64;
|
||||
curX = x - (a1 + 1) * a2;
|
||||
x1 = 18 - col;
|
||||
count = 0;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
u16 species = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + col, MON_DATA_SPECIES2);
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1050[col] = PSS_SpawnMonIconSprite(species, GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + col, MON_DATA_PERSONALITY), curX, y, 2, x1);
|
||||
if (gPokemonStorageSystemPtr->unk_1050[col])
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1050[col]->data[1] = a1;
|
||||
gPokemonStorageSystemPtr->unk_1050[col]->data[2] = a2;
|
||||
gPokemonStorageSystemPtr->unk_1050[col]->data[3] = x;
|
||||
gPokemonStorageSystemPtr->unk_1050[col]->callback = sub_8098E24;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
col += 6;
|
||||
y += 24;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void sub_809900C(u8 a0, s8 a1)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_117c = 0;
|
||||
gPokemonStorageSystemPtr->unk_117d = a0;
|
||||
gPokemonStorageSystemPtr->unk_117b = a1;
|
||||
gPokemonStorageSystemPtr->unk_1172 = 32;
|
||||
gPokemonStorageSystemPtr->unk_1176 = -6 * a1;
|
||||
gPokemonStorageSystemPtr->unk_1178 = 0;
|
||||
if (a1 > 0)
|
||||
gPokemonStorageSystemPtr->unk_117a = 0;
|
||||
else
|
||||
gPokemonStorageSystemPtr->unk_117a = 5;
|
||||
gPokemonStorageSystemPtr->unk_1174 = 24 * gPokemonStorageSystemPtr->unk_117a + 0x64;
|
||||
sub_8098DE0(gPokemonStorageSystemPtr->unk_1176);
|
||||
}
|
||||
|
||||
bool8 sub_80990AC(void)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1172)
|
||||
gPokemonStorageSystemPtr->unk_1172--;
|
||||
switch (gPokemonStorageSystemPtr->unk_117c)
|
||||
{
|
||||
case 0:
|
||||
gPokemonStorageSystemPtr->unk_1174 += gPokemonStorageSystemPtr->unk_1176;
|
||||
if (gPokemonStorageSystemPtr->unk_1174 < 0x41 || gPokemonStorageSystemPtr->unk_1174 > 0xfb)
|
||||
{
|
||||
sub_8098EA0(gPokemonStorageSystemPtr->unk_117a);
|
||||
gPokemonStorageSystemPtr->unk_1174 += 24 * gPokemonStorageSystemPtr->unk_117b;
|
||||
gPokemonStorageSystemPtr->unk_117c++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
gPokemonStorageSystemPtr->unk_1174 += gPokemonStorageSystemPtr->unk_1176;
|
||||
gPokemonStorageSystemPtr->unk_1178 += sub_8098EE0(gPokemonStorageSystemPtr->unk_117a, gPokemonStorageSystemPtr->unk_1172, gPokemonStorageSystemPtr->unk_1176);
|
||||
if ((gPokemonStorageSystemPtr->unk_117b > 0 && gPokemonStorageSystemPtr->unk_117a == 5) || (gPokemonStorageSystemPtr->unk_117b < 0 && gPokemonStorageSystemPtr->unk_117a == 0))
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_117c++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_117a += gPokemonStorageSystemPtr->unk_117b;
|
||||
gPokemonStorageSystemPtr->unk_117c = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (gPokemonStorageSystemPtr->unk_1178 == 0)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1172++;
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8099200(bool8 a0)
|
||||
{
|
||||
u16 count;
|
||||
u16 i;
|
||||
u16 species = GetMonData(gPlayerParty + 0, MON_DATA_SPECIES2);
|
||||
u32 personality = GetMonData(gPlayerParty + 0, MON_DATA_PERSONALITY);
|
||||
gPokemonStorageSystemPtr->unk_1038[0] = PSS_SpawnMonIconSprite(species, personality, 0x68, 0x40, 1, 11);
|
||||
count = 1;
|
||||
for (i = 1; i < PARTY_SIZE; i++)
|
||||
{
|
||||
species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES2);
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
personality = GetMonData(gPlayerParty + i, MON_DATA_PERSONALITY);
|
||||
gPokemonStorageSystemPtr->unk_1038[i] = PSS_SpawnMonIconSprite(species, personality, 0x98, (i - 1) * 24 + 0x10, 1, 11);
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1038[i] = NULL;
|
||||
}
|
||||
}
|
||||
if (!a0)
|
||||
{
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
// this routine assumes party_compaction has been called
|
||||
gPokemonStorageSystemPtr->unk_1038[i]->pos1.y -= 0xa0;
|
||||
gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8099310(void)
|
||||
{
|
||||
u16 i;
|
||||
u16 count;
|
||||
|
||||
gPokemonStorageSystemPtr->unk_1171 = 0;
|
||||
for (i = 0, count = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1038[i])
|
||||
{
|
||||
if (i != count)
|
||||
{
|
||||
sub_8099388(gPokemonStorageSystemPtr->unk_1038[i], count);
|
||||
gPokemonStorageSystemPtr->unk_1038[i] = NULL;
|
||||
gPokemonStorageSystemPtr->unk_1171++;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_8099374(void)
|
||||
{
|
||||
return gPokemonStorageSystemPtr->unk_1171;
|
||||
}
|
||||
|
||||
static void sub_8099388(struct Sprite *sprite, u16 a1)
|
||||
{
|
||||
s16 r3;
|
||||
s16 r4;
|
||||
|
||||
sprite->data[1] = a1;
|
||||
if (a1 == 0)
|
||||
{
|
||||
r3 = 0x68;
|
||||
r4 = 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
r3 = 0x98;
|
||||
r4 = 24 * (a1 - 1) + 0x10;
|
||||
}
|
||||
sprite->data[2] = sprite->pos1.x << 3;
|
||||
sprite->data[3] = sprite->pos1.y << 3;
|
||||
sprite->data[4] = (r3 * 8 - sprite->data[2]) / 8;
|
||||
sprite->data[5] = (r4 * 8 - sprite->data[3]) / 8;
|
||||
sprite->data[6] = 8;
|
||||
sprite->callback = sub_80993F4;
|
||||
}
|
||||
|
||||
static void sub_80993F4(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[6])
|
||||
{
|
||||
sprite->data[2] += sprite->data[4];
|
||||
sprite->data[3] += sprite->data[5];
|
||||
sprite->pos1.x = sprite->data[2] >> 3;
|
||||
sprite->pos1.y = sprite->data[3] >> 3;
|
||||
sprite->data[6]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sprite->data[1] == 0)
|
||||
{
|
||||
sprite->pos1.x = 0x68;
|
||||
sprite->pos1.y = 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x = 0x98;
|
||||
sprite->pos1.y = (sprite->data[1] - 1) * 24 + 0x10;
|
||||
}
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
gPokemonStorageSystemPtr->unk_1038[sprite->data[1]] = sprite;
|
||||
gPokemonStorageSystemPtr->unk_1171--;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8099480(void)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1034)
|
||||
{
|
||||
PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1034);
|
||||
gPokemonStorageSystemPtr->unk_1034 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80994A8(s16 y)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1038[i])
|
||||
{
|
||||
s16 yy;
|
||||
gPokemonStorageSystemPtr->unk_1038[i]->pos1.y += y;
|
||||
yy = gPokemonStorageSystemPtr->unk_1038[i]->pos1.y + gPokemonStorageSystemPtr->unk_1038[i]->pos2.y + gPokemonStorageSystemPtr->unk_1038[i]->centerToCornerVecY;
|
||||
if (yy < -0x10 || yy > 0xb0)
|
||||
gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
|
||||
else
|
||||
gPokemonStorageSystemPtr->unk_1038[i]->invisible = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8099520(u8 a0)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1038[a0])
|
||||
{
|
||||
PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1038[a0]);
|
||||
gPokemonStorageSystemPtr->unk_1038[a0] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_809954C(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1038[i])
|
||||
{
|
||||
PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1038[i]);
|
||||
gPokemonStorageSystemPtr->unk_1038[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8099584(u8 a0, u8 a1)
|
||||
{
|
||||
if (a0 == 0)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1038[a1];
|
||||
gPokemonStorageSystemPtr->unk_1038[a1] = NULL;
|
||||
}
|
||||
else if (a0 == 1)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1050[a1];
|
||||
gPokemonStorageSystemPtr->unk_1050[a1] = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
|
||||
gPokemonStorageSystemPtr->unk_1034->oam.priority = 1;
|
||||
gPokemonStorageSystemPtr->unk_1034->subpriority = 7;
|
||||
}
|
||||
|
||||
void sub_809960C(u8 a0, u8 a1)
|
||||
{
|
||||
if (a0 == 14)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1038[a1] = gPokemonStorageSystemPtr->unk_1034;
|
||||
gPokemonStorageSystemPtr->unk_1038[a1]->oam.priority = 1;
|
||||
gPokemonStorageSystemPtr->unk_1038[a1]->subpriority = 11;
|
||||
}
|
||||
else
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1050[a1] = gPokemonStorageSystemPtr->unk_1034;
|
||||
gPokemonStorageSystemPtr->unk_1050[a1]->oam.priority = 2;
|
||||
gPokemonStorageSystemPtr->unk_1050[a1]->subpriority = 18 - (a1 % 6);
|
||||
}
|
||||
gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy;
|
||||
gPokemonStorageSystemPtr->unk_1034 = NULL;
|
||||
}
|
||||
|
||||
void sub_80996B0(u8 a0, u8 a1)
|
||||
{
|
||||
if (a0 == 14)
|
||||
gPokemonStorageSystemPtr->unk_10c8 = gPokemonStorageSystemPtr->unk_1038 + a1;
|
||||
else
|
||||
gPokemonStorageSystemPtr->unk_10c8 = gPokemonStorageSystemPtr->unk_1050 + a1;
|
||||
gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy;
|
||||
gPokemonStorageSystemPtr->unk_1170 = 0;
|
||||
}
|
||||
|
||||
bool8 sub_809971C(void)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1170 == 16)
|
||||
return FALSE;
|
||||
gPokemonStorageSystemPtr->unk_1170++;
|
||||
if (gPokemonStorageSystemPtr->unk_1170 & 1)
|
||||
{
|
||||
(*gPokemonStorageSystemPtr->unk_10c8)->pos1.y--;
|
||||
gPokemonStorageSystemPtr->unk_1034->pos1.y++;
|
||||
}
|
||||
(*gPokemonStorageSystemPtr->unk_10c8)->pos2.x = gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16;
|
||||
gPokemonStorageSystemPtr->unk_1034->pos2.x = -(gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16);
|
||||
if (gPokemonStorageSystemPtr->unk_1170 == 8)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1034->oam.priority = (*gPokemonStorageSystemPtr->unk_10c8)->oam.priority;
|
||||
gPokemonStorageSystemPtr->unk_1034->subpriority = (*gPokemonStorageSystemPtr->unk_10c8)->subpriority;
|
||||
(*gPokemonStorageSystemPtr->unk_10c8)->oam.priority = 1;
|
||||
(*gPokemonStorageSystemPtr->unk_10c8)->subpriority = 7;
|
||||
}
|
||||
if (gPokemonStorageSystemPtr->unk_1170 == 16)
|
||||
{
|
||||
struct Sprite *sprite = gPokemonStorageSystemPtr->unk_1034;
|
||||
gPokemonStorageSystemPtr->unk_1034 = *(gPokemonStorageSystemPtr->unk_10c8);
|
||||
(*gPokemonStorageSystemPtr->unk_10c8) = sprite;
|
||||
gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
|
||||
(*gPokemonStorageSystemPtr->unk_10c8)->callback = SpriteCallbackDummy;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[];
|
||||
|
||||
void sub_809981C(u8 mode, u8 idx)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
gPokemonStorageSystemPtr->unk_10cc = gPokemonStorageSystemPtr->unk_1038 + idx;
|
||||
break;
|
||||
case 1:
|
||||
gPokemonStorageSystemPtr->unk_10cc = gPokemonStorageSystemPtr->unk_1050 + idx;
|
||||
break;
|
||||
case 2:
|
||||
gPokemonStorageSystemPtr->unk_10cc = &gPokemonStorageSystemPtr->unk_1034;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (*gPokemonStorageSystemPtr->unk_10cc)
|
||||
{
|
||||
InitSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc);
|
||||
(*gPokemonStorageSystemPtr->unk_10cc)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
(*gPokemonStorageSystemPtr->unk_10cc)->affineAnims = gSpriteAffineAnimTable_83B6F5C;
|
||||
StartSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc, 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80998D8(void)
|
||||
{
|
||||
if (*gPokemonStorageSystemPtr->unk_10cc == NULL || (*gPokemonStorageSystemPtr->unk_10cc)->invisible)
|
||||
return FALSE;
|
||||
if ((*gPokemonStorageSystemPtr->unk_10cc)->affineAnimEnded)
|
||||
{
|
||||
(*gPokemonStorageSystemPtr->unk_10cc)->invisible = TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8099920(void)
|
||||
{
|
||||
if (*gPokemonStorageSystemPtr->unk_10cc)
|
||||
{
|
||||
FreeOamMatrix((*gPokemonStorageSystemPtr->unk_10cc)->oam.matrixNum);
|
||||
PSS_DestroyMonIconSprite(*gPokemonStorageSystemPtr->unk_10cc);
|
||||
*gPokemonStorageSystemPtr->unk_10cc = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8099958(void)
|
||||
{
|
||||
if (*gPokemonStorageSystemPtr->unk_10cc)
|
||||
{
|
||||
(*gPokemonStorageSystemPtr->unk_10cc)->invisible = FALSE;
|
||||
StartSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc, 1);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8099990(void)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_10cc == NULL)
|
||||
return FALSE;
|
||||
if ((*gPokemonStorageSystemPtr->unk_10cc)->affineAnimEnded)
|
||||
gPokemonStorageSystemPtr->unk_10cc = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void sub_80999C4(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x;
|
||||
sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + gPokemonStorageSystemPtr->unk_11c0->pos2.y + 4;
|
||||
}
|
||||
|
||||
static u16 PSS_LoadSpeciesIconGfx(u16 a0)
|
||||
{
|
||||
u16 i;
|
||||
u16 retval;
|
||||
|
||||
for (i = 0; i < 40; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1120[i] == a0)
|
||||
break;
|
||||
}
|
||||
if (i == 40)
|
||||
{
|
||||
for (i = 0; i < 40; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1120[i] == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i != 40)
|
||||
{
|
||||
gPokemonStorageSystemPtr->unk_1120[i] = a0;
|
||||
gPokemonStorageSystemPtr->unk_10d0[i]++;
|
||||
retval = i * 16;
|
||||
CpuCopy32(gMonIconTable[a0], BG_CHAR_ADDR(4) + 32 * retval, 0x200);
|
||||
return retval;
|
||||
}
|
||||
return 0xFFFF;
|
||||
}
|
||||
|
||||
static void PSS_ForgetSpeciesIcon(u16 a0)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 40; i++)
|
||||
{
|
||||
if (gPokemonStorageSystemPtr->unk_1120[i] == a0)
|
||||
{
|
||||
if (--gPokemonStorageSystemPtr->unk_10d0[i] == 0)
|
||||
gPokemonStorageSystemPtr->unk_1120[i] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority)
|
||||
{
|
||||
struct SpriteTemplate template = {
|
||||
0x000f,
|
||||
0xdac0,
|
||||
&gOamData_83B6F2C,
|
||||
gDummySpriteAnimTable,
|
||||
NULL,
|
||||
gDummySpriteAffineAnimTable,
|
||||
SpriteCallbackDummy
|
||||
};
|
||||
u16 tileNum;
|
||||
u8 spriteId;
|
||||
|
||||
species = mon_icon_convert_unown_species_id(species, personality);
|
||||
template.paletteTag = 0xdac0 + gMonIconPaletteIndices[species];
|
||||
tileNum = PSS_LoadSpeciesIconGfx(species);
|
||||
if (tileNum == 0xFFFF)
|
||||
return NULL;
|
||||
spriteId = CreateSprite(&template, x, y, subpriority);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
{
|
||||
PSS_ForgetSpeciesIcon(species);
|
||||
return NULL;
|
||||
}
|
||||
gSprites[spriteId].oam.tileNum = tileNum;
|
||||
gSprites[spriteId].oam.priority = priority;
|
||||
gSprites[spriteId].data[0] = species;
|
||||
return gSprites + spriteId;
|
||||
}
|
||||
|
||||
static void PSS_DestroyMonIconSprite(struct Sprite *sprite)
|
||||
{
|
||||
PSS_ForgetSpeciesIcon(sprite->data[0]);
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
const struct OamData gOamData_83B6F2C = {
|
||||
.size = 2
|
||||
};
|
||||
|
||||
const union AffineAnimCmd gSpriteAffineAnim_83B6F34[] = {
|
||||
AFFINEANIMCMD_FRAME(-2, -2, 0, 120),
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
const union AffineAnimCmd gSpriteAffineAnim_83B6F44[] = {
|
||||
AFFINEANIMCMD_FRAME(16, 16, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(16, 16, 0, 15),
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[] = {
|
||||
gSpriteAffineAnim_83B6F34,
|
||||
gSpriteAffineAnim_83B6F44
|
||||
};
|
||||
2844
src/pokemon/pokemon_storage_system_4.c
Normal file
2844
src/pokemon/pokemon_storage_system_4.c
Normal file
File diff suppressed because it is too large
Load Diff
16
src/pokemon/pokemon_storage_system_5.c
Normal file
16
src/pokemon/pokemon_storage_system_5.c
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
EWRAM_DATA struct UnkStruct_2000020 *gUnknown_020384EC = NULL;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
// .rodata
|
||||
|
||||
// .text
|
||||
@@ -144,7 +144,6 @@ extern const u8 gUnknown_08E74E88[];
|
||||
extern const u8 gUnknown_08E73508[];
|
||||
extern const u8 gStatusScreen_Gfx[];
|
||||
extern const u8 gFontDefaultPalette[];
|
||||
extern const u8 gUnknownPalette_81E6692[];
|
||||
extern const u8 gAbilityNames[][13];
|
||||
extern const u8 * const gAbilityDescriptions[];
|
||||
extern const u8 * const gContestEffectStrings[];
|
||||
@@ -931,21 +930,21 @@ static bool8 LoadPokemonSummaryScreenGraphics(void)
|
||||
|
||||
static void sub_809E044(void)
|
||||
{
|
||||
LoadPalette(&gUnknownPalette_81E6692[28], 129, 2);
|
||||
LoadPalette(&gUnknownPalette_81E6692[30], 136, 2);
|
||||
LoadPalette(&gUnknownPalette_81E6692[28], 143, 2);
|
||||
LoadPalette(&gUnknownPalette_81E6692[30], 137, 2);
|
||||
LoadPalette(&gUnknownPalette_81E6692[12], 209, 4);
|
||||
LoadPalette(&gUnknownPalette_81E6692[20], 211, 4);
|
||||
LoadPalette(&gUnknownPalette_81E6692[28], 213, 4);
|
||||
LoadPalette(&gUnknownPalette_81E6692[12], 215, 4);
|
||||
LoadPalette(&gUnknownPalette_81E6692[8], 217, 4);
|
||||
LoadPalette(&gUnknownPalette_81E6692[16], 219, 4);
|
||||
LoadPalette(&gUnknownPalette_81E6692[4], 221, 2);
|
||||
LoadPalette(&gUnknownPalette_81E6692[6], 222, 2);
|
||||
LoadPalette(&gUnknownPalette_81E6692[2], 223, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 14, 129, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 15, 136, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 14, 143, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 15, 137, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 6, 209, 4);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 10, 211, 4);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 14, 213, 4);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 6, 215, 4);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 4, 217, 4);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 8, 219, 4);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 2, 221, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 3, 222, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 1, 223, 2);
|
||||
LoadPalette(gFontDefaultPalette, 240, 32);
|
||||
LoadPalette(&gUnknownPalette_81E6692[6], 249, 2);
|
||||
LoadPalette(gUnknownPalette_81E6692 + 3, 249, 2);
|
||||
}
|
||||
|
||||
static void SummaryScreenExit(u8 taskId)
|
||||
@@ -2245,7 +2244,7 @@ static void sub_809F678(struct Pokemon *mon)
|
||||
else
|
||||
{
|
||||
struct BoxPokemon *mons = pssData.monList.boxMons;
|
||||
sub_803B4B4(&mons[pssData.monIndex], mon);
|
||||
ExpandBoxMon(&mons[pssData.monIndex], mon);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,6 @@ extern const u16 gPokenavConditionSearch2_Pal[];
|
||||
extern const u8 gUnknown_083E0334[];
|
||||
extern const u16 gUnknown_083E02B4[];
|
||||
extern const u8 gPokenavConditionSearch2_Gfx[];
|
||||
extern const u8 gUnknownPalette_81E6692[];
|
||||
extern const u8 gUnknown_083E0254[];
|
||||
extern const u8 gUnknown_08E9FEB4[];
|
||||
extern const u8 gUnknown_083E01AC[];
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
#include "random.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "trig.h"
|
||||
#include "hof_pc.h"
|
||||
#include "credits.h"
|
||||
#include "pc_screen_effect.h"
|
||||
#include "ewram.h"
|
||||
|
||||
static EWRAM_DATA u32 sUnknown_0203931C = 0;
|
||||
@@ -88,15 +91,6 @@ static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID
|
||||
static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3);
|
||||
static bool8 sub_81438C4(void);
|
||||
|
||||
// functions from different files
|
||||
void sub_81439D0(void);
|
||||
void sub_80C5CD4(void*); // ?
|
||||
void sub_80C5E38(void*); // ?
|
||||
bool8 sub_80C5DCC(void);
|
||||
bool8 sub_80C5F98(void);
|
||||
void ReturnFromHallOfFamePC(void);
|
||||
u16 SpeciesToPokedexNum(u16 species);
|
||||
|
||||
// data and gfx
|
||||
|
||||
static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet =
|
||||
@@ -130,9 +124,9 @@ static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] =
|
||||
{-41, 214, 184, 64}
|
||||
};
|
||||
|
||||
static const struct HallofFameMon sDummyFameMon =
|
||||
{
|
||||
0x3EA03EA, 0, 0, 0, {0}
|
||||
static const struct PCScreenEffectStruct sPCScreenEffectTemplate = {
|
||||
.tileTag = 0x3ea,
|
||||
.paletteTag = 0x3ea
|
||||
};
|
||||
|
||||
static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5};
|
||||
@@ -800,20 +794,15 @@ void sub_81428CC(void)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
struct HallofFameMons* fameMons;
|
||||
REG_BLDCNT = 0;
|
||||
REG_BLDALPHA = 0;
|
||||
REG_BLDY = 0;
|
||||
sub_81435B8();
|
||||
|
||||
REG_BLDCNT = 0;
|
||||
REG_BLDALPHA = 0;
|
||||
REG_BLDY = 0;
|
||||
sub_81435B8();
|
||||
eHOFPCScreenEffect = sPCScreenEffectTemplate;
|
||||
|
||||
fameMons = eHallOfFameMons1;
|
||||
fameMons->mons[0] = sDummyFameMon;
|
||||
|
||||
sub_80C5CD4(fameMons);
|
||||
gMain.state++;
|
||||
}
|
||||
sub_80C5CD4(&eHOFPCScreenEffect);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
AnimateSprites();
|
||||
@@ -1022,12 +1011,9 @@ static void sub_8142DF4(u8 taskID)
|
||||
|
||||
static void sub_8142F78(u8 taskID)
|
||||
{
|
||||
struct HallofFameMons* fameMons;
|
||||
|
||||
CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
|
||||
fameMons = eHallOfFameMons1;
|
||||
fameMons->mons[0] = sDummyFameMon;
|
||||
sub_80C5E38(fameMons);
|
||||
eHOFPCScreenEffect = sPCScreenEffectTemplate;
|
||||
sub_80C5E38(&eHOFPCScreenEffect);
|
||||
gTasks[taskID].func = sub_8142FCC;
|
||||
}
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ SYMBOL(gEggHatchData, 4)
|
||||
// load_save.c
|
||||
SYMBOL(gFlashMemoryPresent, 4)
|
||||
|
||||
// ???
|
||||
// trade.c
|
||||
SYMBOL(gUnknown_03004824, 4)
|
||||
SYMBOL(gUnknown_03004828, 4)
|
||||
. += 0x4;
|
||||
@@ -204,15 +204,20 @@ SYMBOL(gUnknown_03005CE4, 4)
|
||||
SYMBOL(gUnknown_03005CE8, 4)
|
||||
SYMBOL(gUnknown_03005CEC, 4)
|
||||
|
||||
// ???
|
||||
// pokemon_summary_screen.o
|
||||
SYMBOL(gUnknown_03005CF0, 4)
|
||||
|
||||
// huh?
|
||||
. = ALIGN(16);
|
||||
|
||||
// item_menu.c
|
||||
gFieldItemUseCallback = .;
|
||||
. += 0x10;
|
||||
gBagPocketScrollStates = .;
|
||||
. += 0x14;
|
||||
SYMBOL(gCurrentBagPocketItemSlots, 4)
|
||||
|
||||
// contest.c
|
||||
SYMBOL(gContestRngValue, 4)
|
||||
|
||||
// record_mixing.c
|
||||
@@ -226,8 +231,10 @@ SYMBOL(gSoundTestCryNum, 4)
|
||||
SYMBOL(gUnknown_03005D38, 4)
|
||||
. += 0x64; // huge gap?
|
||||
|
||||
// ???
|
||||
// mauville_man.c
|
||||
SYMBOL(gUnknown_03005DA0, 0x48)
|
||||
|
||||
// cute_sketch.c
|
||||
SYMBOL(gUnknown_03005DE8, 4)
|
||||
SYMBOL(gUnknown_03005DEC, 4)
|
||||
SYMBOL(gUnknown_03005DF0, 4)
|
||||
@@ -249,7 +256,7 @@ SYMBOL(gUnknown_03005E90, 4)
|
||||
// evolution_scene.c
|
||||
SYMBOL(gCB2_AfterEvolution, 4)
|
||||
|
||||
// ???
|
||||
// pokedex_cry_screen.c
|
||||
SYMBOL(gUnknown_03005E98, 4)
|
||||
|
||||
// save.c
|
||||
@@ -268,7 +275,7 @@ SYMBOL(gGameContinueCallback, 4)
|
||||
SYMBOL(gIntroFrameCounter, 4)
|
||||
SYMBOL(gMultibootProgramStruct, 44)
|
||||
|
||||
// ???
|
||||
// battle_anim_813F0F4.c
|
||||
SYMBOL(gUnknown_03005F0C, 4)
|
||||
SYMBOL(gUnknown_03005F10, 4)
|
||||
gUnknown_03005F14 = .;
|
||||
|
||||
@@ -326,61 +326,10 @@ gBattleMonForms = .; /* 2024E84 */
|
||||
. = ALIGN(4); src/pokemon/pokedex.o(ewram_data);
|
||||
. = ALIGN(4); src/engine/trainer_card.o(ewram_data);
|
||||
. = ALIGN(4); src/pokemon/pokemon_storage_system.o(ewram_data);
|
||||
|
||||
/* still pokemon_storage_system */
|
||||
|
||||
. = ALIGN(4);
|
||||
gUnknown_02038470 = .; /* 2038470 */
|
||||
. += 0x3;
|
||||
|
||||
gUnknown_02038473 = .; /* 2038473 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_02038474 = .; /* 2038474 */
|
||||
. += 0x4;
|
||||
|
||||
gUnknown_02038478 = .; /* 2038478 */
|
||||
. += 0x4;
|
||||
|
||||
gUnknown_0203847C = .; /* 203847C */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_0203847D = .; /* 203847D */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_0203847E = .; /* 203847E */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_0203847F = .; /* 203847F */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_02038480 = .; /* 2038480 */
|
||||
. += 0x64;
|
||||
|
||||
gUnknown_020384E4 = .; /* 20384E4 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_020384E5 = .; /* 20384E5 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_020384E6 = .; /* 20384E6 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_020384E7 = .; /* 20384E7 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_020384E8 = .; /* 20384E8 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_020384E9 = .; /* 20384E9 */
|
||||
. += 0x1;
|
||||
|
||||
gUnknown_020384EA = .; /* 20384EA */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_020384EC = .; /* 20384EC */
|
||||
. += 0x4;
|
||||
|
||||
. = ALIGN(4); src/pokemon/pokemon_storage_system_2.o(ewram_data);
|
||||
. = ALIGN(4); src/pokemon/pokemon_storage_system_3.o(ewram_data);
|
||||
. = ALIGN(4); src/pokemon/pokemon_storage_system_4.o(ewram_data);
|
||||
. = ALIGN(4); src/pokemon/pokemon_storage_system_5.o(ewram_data);
|
||||
. = ALIGN(4); src/pokemon/pokemon_summary_screen.o(ewram_data);
|
||||
. = ALIGN(4); src/field/script_movement.o(ewram_data);
|
||||
. = ALIGN(4); src/field/map_name_popup.o(ewram_data);
|
||||
@@ -397,16 +346,7 @@ gUnknown_020384EC = .; /* 20384EC */
|
||||
. = ALIGN(4); src/field/rotating_gate.o(ewram_data);
|
||||
. = ALIGN(4); src/field/safari_zone.o(ewram_data);
|
||||
. = ALIGN(4); src/easy_chat_2.o(ewram_data);
|
||||
|
||||
/* pokenav */
|
||||
|
||||
. = ALIGN(4);
|
||||
gUnknown_020388B0 = .; /* 20388B0 */
|
||||
. += 0x4;
|
||||
|
||||
gUnknown_020388B4 = .; /* 20388B4 */
|
||||
. += 0x4;
|
||||
|
||||
. = ALIGN(4); src/field/pokenav.o(ewram_data);
|
||||
. = ALIGN(4); src/pokemon/mon_markings.o(ewram_data);
|
||||
. = ALIGN(4); src/field/mauville_man.o(ewram_data);
|
||||
. = ALIGN(4); src/field/menu_helpers.o(ewram_data);
|
||||
@@ -416,28 +356,7 @@ gUnknown_020388B4 = .; /* 20388B4 */
|
||||
. = ALIGN(4); src/rom6.o(ewram_data);
|
||||
. = ALIGN(4); src/field/pokeblock.o(ewram_data);
|
||||
. = ALIGN(4); src/field/field_specials.o(ewram_data);
|
||||
|
||||
/* pokedex_area_screen */
|
||||
|
||||
. = ALIGN(4);
|
||||
gUnknown_02039260 = .; /* 2039260 */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_02039262 = .; /* 2039262 */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_02039264 = .; /* 2039264 */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_02039266 = .; /* 2039266 */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_02039268 = .; /* 2039268 */
|
||||
. += 0x2;
|
||||
|
||||
gUnknown_0203926A = .; /* 203926A */
|
||||
. += 0x2;
|
||||
|
||||
. = ALIGN(4); src/field/pokedex_area_screen.o(ewram_data);
|
||||
. = ALIGN(4); src/battle/battle_message.o(ewram_data);
|
||||
. = ALIGN(4); src/field/choose_party.o(ewram_data);
|
||||
. = ALIGN(4); src/scene/cable_car.o(ewram_data);
|
||||
|
||||
Reference in New Issue
Block a user