diff --git a/extras/gbz80disasm.py b/extras/gbz80disasm.py index 385f89035..48739e03f 100644 --- a/extras/gbz80disasm.py +++ b/extras/gbz80disasm.py @@ -593,7 +593,7 @@ def asm_label(address): # why using a random value when you can use the address? return ".ASM_" + hex(address)[2:] -def output_bank_opcodes(original_offset, max_byte_count=0x4000): +def output_bank_opcodes(original_offset, max_byte_count=0x4000, debug = False): #fs = current_address #b = bank_byte #in = input_data -- rom @@ -601,11 +601,14 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000): #i = offset #ad = end_address #a, oa = current_byte_number - + + load_labels() + load_rom() + bank_id = 0 if original_offset > 0x8000: bank_id = original_offset / 0x4000 - print "bank id is: " + str(bank_id) + if debug: print "bank id is: " + str(bank_id) last_hl_address = None #for when we're scanning the main map script last_a_address = None @@ -843,7 +846,7 @@ def all_outstanding_labels_are_reverse(byte_labels, offset): if not label_id < offset: return False return True + + if __name__ == "__main__": - load_labels() - load_rom() print output_bank_opcodes(int(sys.argv[1], 16))[0] diff --git a/main.asm b/main.asm index 688a4c1ba..accdef483 100644 --- a/main.asm +++ b/main.asm @@ -11414,7 +11414,7 @@ INCBIN "baserom.gbc",$3ddc8,$3e8eb - $3ddc8 Function3e8eb: ; 3e8eb ;part of battle init xor a - ld hl, EnemyMonSpecies2 + ld hl, EnemyMonSpecies ld bc, $0027 call ByteFill ld a, [InLinkBattle] @@ -11423,8 +11423,8 @@ Function3e8eb: ; 3e8eb ld a, [$cfc0] bit 0, a jp nz, $5abd - ld a, [EnemyMonSpecies] - ld [EnemyMonSpecies2], a + ld a, [TempEnemyMonSpecies] + ld [EnemyMonSpecies], a ld [$cf60], a ld [$d108], a call $3856 @@ -11515,7 +11515,7 @@ Function3e8eb: ; 3e8eb ld a, [$d22d] dec a jr nz, .asm_3ea1a - ld a, [EnemyMonSpecies] + ld a, [TempEnemyMonSpecies] cp a, UNOWN jr nz, .notunown ld hl, EnemyMonDVs @@ -11524,7 +11524,7 @@ Function3e8eb: ; 3e8eb call CheckUnownLetter jr c, .asm_3e9a0 .notunown - ld a, [EnemyMonSpecies] + ld a, [TempEnemyMonSpecies] cp a, MAGIKARP jr nz, .asm_3ea1a ld de, EnemyMonDVs @@ -11679,7 +11679,7 @@ Function3e8eb: ; 3e8eb inc de ld a, [$d240] ld [de], a - ld a, [EnemyMonSpecies] + ld a, [TempEnemyMonSpecies] ld [$d265], a call $343b ld a, [$d22d] @@ -11689,7 +11689,7 @@ Function3e8eb: ; 3e8eb ld de, $c616 ld bc, $000b call CopyBytes - ld a, [EnemyMonSpecies] + ld a, [TempEnemyMonSpecies] dec a ld c, a ld b, $01 @@ -11715,7 +11715,7 @@ CheckSleepingTreeMon: ; 3eb38 jr z, .check ld hl, SleepingTreeMonNiteTable .check - ld a, [EnemyMonSpecies] + ld a, [TempEnemyMonSpecies] ld de, $0001 call IsInArray ret c diff --git a/wram.asm b/wram.asm index 78b4a405e..65a366796 100644 --- a/wram.asm +++ b/wram.asm @@ -1,3 +1,8 @@ +SECTION "stack",BSS[$c000] + ds 256 +Stack: ; c0ff + + SECTION "audio",BSS[$c100] MusicPlaying: ; c100 ; nonzero if playing @@ -239,7 +244,10 @@ MusicNoiseSampleSet: ; c2a4 ds 1 SFXNoiseSampleSet: ; c2a5 ds 1 -; c2a6 +Danger: ; c2a6 +; bit 7: on/off +; bit 4: pitch +; bit 0-3: counter ds 1 MusicFade: ; c2a7 ; fades volume over x frames @@ -271,13 +279,16 @@ CryTracks ; c2bd CurSFX: ; c2bf ; id of sfx currently playing ds 1 +CurMusic: ; c2c0 +; id of music currently playing + ds 1 SECTION "linkbattle",BSS[$c2dc] - -InLinkBattle: ; 0xc2dc +InLinkBattle: ; c2dc ds 1 ; nonzero when in a link battle + SECTION "tiles",BSS[$c2fa] TileDown: ; c2fa ds 1 @@ -297,12 +308,71 @@ TilePermissions: ; c2fe ; bit 0: right ds 1 -SECTION "BattleMons",BSS[$c62a] -BattleMonSpecies: ; c62a +SECTION "gfx",BSS[$c400] + +Sprites: ; c400 +; 4 bytes per sprite +; 40 sprites +; struct: +; y in pixels +; x in pixels +; tile id +; attributes: +; bit 7: priority +; bit 6: y flip +; bit 5: x flip +; bit 4: pal # (non-cgb) +; bit 3: vram bank (cgb only) +; bit 2-0: pal # (cgb only) + ds 160 + +TileMap: ; c4a0 +; 20x18 grid of 8x8 tiles + ds 360 + + +SECTION "BattleMons",BSS[$c608] + +EnemyMoveStruct: +EnemyMoveAnimation: ; c608 ds 1 +EnemyMoveEffect: ; c609 ds 1 -BattleMonSpecies2: ; c62c +EnemyMovePower: ; c60a + ds 1 +EnemyMoveType: ; c60b + ds 1 +EnemyMoveAccuracy: ; c60c + ds 1 +EnemyMovePP: ; c60d + ds 1 +EnemyMoveEffectChance: ; c60e + ds 1 + +PlayerMoveStruct: +PlayerMoveAnimation: ; c60f + ds 1 +PlayerMoveEffect: ; c610 + ds 1 +PlayerMovePower: ; c611 + ds 1 +PlayerMoveType: ; c612 + ds 1 +PlayerMoveAccuracy: ; c613 + ds 1 +PlayerMovePP: ; c614 + ds 1 +PlayerMoveEffectChance: ; c615 + ds 1 + +EnemyMonNick: ; c616 + ds 11 +BattleMonNick: ; c621 + ds 11 + + +BattleMonSpecies: ; c62c ds 1 BattleMonItem: ; c62d ds 1 @@ -357,11 +427,250 @@ BattleMonSpclAtk: ; c646 BattleMonSpclDef: ; c648 ds 2 -SECTION "prng",BSS[$c6e5] -LinkBattleRNCount: ; c6e5 + ds 25 + +CurOTMon: ; c663 + ds 1 + + ds 4 + +PlayerSubStatus1: ; c668 +; bit +; 7 attract +; 6 encore +; 5 endure +; 4 perish song +; 3 +; 2 protect +; 1 curse +; 0 nightmare + ds 1 +PlayerSubStatus2: ; c669 +; unknown + ds 1 +PlayerSubStatus3: ; c66a +; bit +; 7 confusion +; 6 +; 5 +; 4 charged +; 3 +; 2 +; 1 rollout +; 0 bide + ds 1 +PlayerSubStatus4: ; c66b +; bit +; 7 leech seed +; 6 +; 5 recharge +; 4 substitute +; 3 +; 2 +; 1 +; 0 + ds 1 +PlayerSubStatus5: ; c66c +; unknown ds 1 -SECTION "Engine",BSS[$cfcc] +EnemySubStatus1: ; c66d +; see PlayerSubStatus1 + ds 1 +EnemySubstatus2: ; c66e +; see PlayerSubStatus2 + ds 1 +EnemySubStatus3: ; c66f +; see PlayerSubStatus3 + ds 1 +EnemySubStatus4: ; c670 +; see PlayerSubStatus4 + ds 1 +EnemySubStatus5: ; c671 +; see PlayerSubStatus5 + ds 1 + + ds 4 + +PlayerEncoreCount: ; c676 + ds 1 +PlayerPerishCount: ; c677 + ds 1 + + ds 5 + +EnemyEncoreCount: ; c67e + ds 1 +EnemyPerishCount: ; c67f + ds 1 + + ds 2 + +PlayerDamageTaken: ; c682 + ds 2 +EnemyDamageTaken: ; c684 + ds 2 + + ds 4 + +BattleScriptBuffer: ; c68a + ds 40 + +BattleScriptBufferLocLo: ; c6b2 + ds 1 +BattleScriptBufferLocHi: ; c6b3 + ds 1 + + ds 24 + +PlayerStatLevels: ; c6cc +; 07 neutral + ds 8 +EnemyStatLevels: ; c6d4 +; 07 neutral + ds 8 + +EnemyTurnsTaken: ; c6dc + ds 1 +PlayerTurnsTaken: ; c6dd + ds 1 + + ds 5 + +CurPlayerMove: ; c6e3 + ds 1 +CurEnemyMove: ; c6e4 + ds 1 + +LinkBattleRNCount: ; c6e5 +; how far through the prng stream + ds 1 + + ds 15 + +DisabledMove: ; c6f5 + ds 1 + + ds 2 + +; exists so you can't counter on switch +LastEnemyCounterMove: ; c6f8 + ds 1 +LastPlayerCounterMove: ; c6f9 + ds 1 + + ds 8 + +PlayerLightScreenCount: ; c702 + ds 1 +PlayerReflectCount: ; c703 + ds 1 + + ds 6 + +Weather: ; c70a +; 00 normal +; 01 rain +; 02 sun +; 03 sandstorm +; 04 rain stopped +; 05 sunliight faded +; 06 sandstorm subsided + ds 1 + +WeatherCount: ; c70b +; # turns remaining + ds 1 + + ds 6 + +PlayerUsedMoves: ; c712 +; add a move that has been used once by the player +; added in order of use + ds 4 + + ds 5 + +LastPlayerMove: ; c71b + ds 1 +LastEnemyMove: ; c71c + ds 1 + + +SECTION "gfx2",BSS[$c800] +OverworldMap: ; c800 + ds 1280 + +; cd00 + ds 32 + +BGMapBuffer: ; cd20 + ds 40 + +BGMapPalBuffer: ; cd48 + ds 40 + +BGMapBufferPtrs: ; cd70 +; 20 bg map addresses (16x8 tiles) + ds 40 + +SGBPredef: ; cd98 + ds 1 +PlayerHPPal: ; cd99 + ds 1 +EnemyHPPal: ; cd9a + ds 1 + + ds 62 + +AttrMap: ; cdd9 +; 20x18 grid of palettes for 8x8 tiles +; read horizontally from the top row +; bit 3: vram bank +; bit 0-2: palette id + ds 360 + + ds 30 + +MonType: ; cf5f +; 0 partymon +; 1 otpartymon +; 2 boxmon +; 3 ????mon +; 4 wildmon + ds 1 + +CurBattleSpecies: ; cf60 + ds 1 + + ds 33 + +TileY: ; cf82 + ds 1 +TileX: ; cf83 + ds 1 + + + +SECTION "VBlank",BSS[$cfb3] +VBlankOccurred: ; cfb3 + ds 1 + + +SECTION "Engine",BSS[$cfc2] +FXAnimID: +FXAnimIDLo: ; cfc2 + ds 1 +FXAnimIDHi: ; cfc3 + ds 1 + + ds 2 + +TileAnimationTimer: ; cfc6 + ds 1 + + ds 5 + Options: ; cfcc ; bit 0-2: number of frames to delay when printing text ; fast 1; mid 3; slow 5 @@ -392,16 +701,27 @@ Options2: ; cfd1 ; bit 1: menu account off/on ds 1 - ds 161 + ds 47 +; d000 + + ds 114 + StringBuffer1: ; d073 ds 19 StringBuffer2: ; d086 ds 19 StringBuffer3: ; d099 ds 19 - - ds 65 + + ds 40 + +CurBattleMon: ; d0d4 + ds 1 +CurMoveNum: ; d0d5 + ds 1 + + ds 23 VramState: ; d0ed ; bit 0: overworld sprite updating on/off @@ -426,7 +746,31 @@ CurPartyMon: ; d109 CurPartyLevel: ; d143 ds 1 - ds 166 + ds 149 + +TileSetHeader: +TileSetBank: ; d1d9 + ds 1 +TileSetAddress: ; d1da + ds 2 +TileSetBlocksBank: ; d1dc + ds 1 +TileSetBlocksAddress: ; d1dd + ds 2 +TileSetCollisionBank: ; d1df + ds 1 +TileSetCollisionAddress: ; d1e0 + ds 2 +TileSetAnim: ; d1e2 +; bank 3f + ds 2 +; unused ; d1e4 + ds 2 +TileSetPalettes: ; d1e6 +; bank 3f + ds 2 + + ds 2 Buffer1: MagikarpLength: @@ -440,12 +784,14 @@ SECTION "prng2",BSS[$d1fa] LinkBattleRNs: ; d1fa ds 10 -SECTION "EnemyMon",BSS[$d204] +SECTION "BattleMons2",BSS[$d204] -EnemyMonSpecies: ; d204 +TempEnemyMonSpecies: ; d204 ds 1 +TempBattleMonSpecies: ; d205 ds 1 -EnemyMonSpecies2: ; d206 + +EnemyMonSpecies: ; d206 ds 1 EnemyMonItem: ; d207 ds 1 @@ -509,20 +855,20 @@ EnemyMonSpclDef: ; d222 SECTION "Battle",BSS[$d22d] -BattleClass: ; d22d -; 0: wild battle -; 1: +IsInBattle: ; d22d +; 0: overworld +; 1: wild battle ; 2: trainer battle ds 1 ds 1 -OtherTrainerClass: ; 0xd22f +OtherTrainerClass: ; d22f ; class (Youngster, Bug Catcher, etc.) of opposing trainer ; 0 if opponent is a wild Pokémon, not a trainer ds 1 -BattleType: ; 0xd230 +BattleType: ; d230 ; $00 normal ; $01 ; $02 @@ -538,7 +884,7 @@ BattleType: ; 0xd230 ; $0c suicune ds 1 -OtherTrainerID: ; 0xd231 +OtherTrainerID: ; d231 ; which trainer of the class that you're fighting ; (Joey, Mikey, Albert, etc.) ds 1 @@ -555,7 +901,7 @@ CurBaseStats: ; d236 SECTION "TimeOfDay",BSS[$d269] -TimeOfDay: ; 0xd269 +TimeOfDay: ; d269 ; 0 if morn ; 1 if day ; 2 if nite @@ -1093,9 +1439,9 @@ OTPartyMon6Nickname: ; d421 SECTION "Player",BSS[$d47b] -PlayerID: ; 0xd47b +PlayerID: ; d47b ds 2 -PlayerName: ; 0xd47d +PlayerName: ; d47d ds 11 ds 46 @@ -1110,14 +1456,27 @@ StartMinute: ; d4b8 StartSecond: ; d4b9 ds 1 - ds 17 + ds 9 + +GameTimeCap: ; d4c3 + ds 1 +GameTimeHours: ; 14c4 + ds 2 +GameTimeMinutes: ; d4c6 + ds 1 +GameTimeSeconds: ; d4c7 + ds 1 +GameTimeFrames: ; d4c8 + ds 1 + + ds 2 CurDay: ; d4cb ds 1 ds 12 -PlayerSprite: ; 0xd4d8 +PlayerSprite: ; d4d8 ds 1 ds 5 @@ -1170,11 +1529,11 @@ PlayerState: ; d95d ds 1 SECTION "scriptram",BSS[$d962] -MooMooBerries: ; 0xd962 +MooMooBerries: ; d962 ds 1 ; how many berries fed to MooMoo -UndergroundSwitchPositions: ; 0xd963 +UndergroundSwitchPositions: ; d963 ds 1 ; which positions the switches are in -FarfetchdPosition: ; 0xd964 +FarfetchdPosition: ; d964 ds 1 ; which position the ilex farfetch'd is in SECTION "Events",BSS[$dad4] @@ -1197,490 +1556,490 @@ LugiaEvent: ; dad5 SECTION "BoxNames",BSS[$db75] ; 8 chars + $50 -Box1Name: ; 0xdb75 +Box1Name: ; db75 ds 9 -Box2Name: ; 0xdbce +Box2Name: ; dbce ds 9 -Box3Name: ; 0xdbd7 +Box3Name: ; dbd7 ds 9 -Box4Name: ; 0xdbe0 +Box4Name: ; dbe0 ds 9 -Box5Name: ; 0xdbe9 +Box5Name: ; dbe9 ds 9 -Box6Name: ; 0xdbf2 +Box6Name: ; dbf2 ds 9 -Box7Name: ; 0xdbfb +Box7Name: ; dbfb ds 9 -Box8Name: ; 0xdc04 +Box8Name: ; dc04 ds 9 -Box9Name: ; 0xdc0d +Box9Name: ; dc0d ds 9 -Box10Name: ; 0xdc16 +Box10Name: ; dc16 ds 9 -Box11Name: ; 0xdc1f +Box11Name: ; dc1f ds 9 -Box12Name: ; 0xdc28 +Box12Name: ; dc28 ds 9 -Box13Name: ; 0xdc31 +Box13Name: ; dc31 ds 9 -Box14Name: ; 0xdc3a +Box14Name: ; dc3a ds 9 SECTION "BackupMapInfo", BSS[$dcad] ; used on maps like second floor pokécenter, which are reused, so we know which ; map to return to -BackupMapGroup: ; 0xdcad +BackupMapGroup: ; dcad ds 1 -BackupMapNumber: ; 0xdcae +BackupMapNumber: ; dcae ds 1 SECTION "PlayerMapInfo", BSS[$dcb4] -WarpNumber: ; 0xdcb4 +WarpNumber: ; dcb4 ds 1 -MapGroup: ; 0xdcb5 +MapGroup: ; dcb5 ds 1 ; map group of current map -MapNumber: ; 0xdcb6 +MapNumber: ; dcb6 ds 1 ; map number of current map -YCoord: ; 0xdcb7 +YCoord: ; dcb7 ds 1 ; current y coordinate relative to top-left corner of current map -XCoord: ; 0xdcb8 +XCoord: ; dcb8 ds 1 ; current x coordinate relative to top-left corner of current map SECTION "PlayerParty",BSS[$dcd7] -PartyCount: ; 0xdcd7 +PartyCount: ; dcd7 ds 1 ; number of Pokémon in party -PartySpecies: ; 0xdcd8 +PartySpecies: ; dcd8 ds 6 ; species of each Pokémon in party -; 0xdcde +; dcde ds 1 ; any empty slots including the 7th must be FF ; or the routine will keep going PartyMons: PartyMon1: -PartyMon1Species: ; 0xdcdf +PartyMon1Species: ; dcdf ds 1 -PartyMon1Item: ; 0xdce0 +PartyMon1Item: ; dce0 ds 1 -PartyMon1Moves: ; 0xdce1 -PartyMon1Move1: ; 0xdce1 +PartyMon1Moves: ; dce1 +PartyMon1Move1: ; dce1 ds 1 -PartyMon1Move2: ; 0xdce2 +PartyMon1Move2: ; dce2 ds 1 -PartyMon1Move3: ; 0xdce3 +PartyMon1Move3: ; dce3 ds 1 -PartyMon1Move4: ; 0xdce4 +PartyMon1Move4: ; dce4 ds 1 -PartyMon1ID: ; 0xdce5 +PartyMon1ID: ; dce5 ds 2 -PartyMon1Exp: ; 0xdce7 +PartyMon1Exp: ; dce7 ds 3 -PartyMon1HPExp: ; 0xdcea +PartyMon1HPExp: ; dcea ds 2 -PartyMon1AtkExp: ; 0xdcec +PartyMon1AtkExp: ; dcec ds 2 -PartyMon1DefExp: ; 0xdcee +PartyMon1DefExp: ; dcee ds 2 -PartyMon1SpdExp: ; 0xdcf0 +PartyMon1SpdExp: ; dcf0 ds 2 -PartyMon1SpclExp: ; 0xdcf2 +PartyMon1SpclExp: ; dcf2 ds 2 -PartyMon1DVs: ; 0xdcf4 +PartyMon1DVs: ; dcf4 ds 2 ; Atk/Def/Spd/Spcl, HP is the high bits of these four nybbles -PartyMon1PP: ; 0xdcf6 +PartyMon1PP: ; dcf6 ds 4 -PartyMon1Happiness: ; 0xdcfa +PartyMon1Happiness: ; dcfa ds 1 -PartyMon1PokerusStatus: ; 0xdcfb +PartyMon1PokerusStatus: ; dcfb ds 1 -PartyMon1CaughtData: ; 0xdcfc -PartyMon1CaughtTime: ; 0xdcfc -PartyMon1CaughtLevel ; 0xdcfc +PartyMon1CaughtData: ; dcfc +PartyMon1CaughtTime: ; dcfc +PartyMon1CaughtLevel ; dcfc ds 1 -PartyMon1CaughtGender: ; 0xdcfd -PartyMon1CaughtLocation: ; 0xdcfd +PartyMon1CaughtGender: ; dcfd +PartyMon1CaughtLocation: ; dcfd ds 1 -PartyMon1Level: ; 0xdcfe +PartyMon1Level: ; dcfe ds 1 -PartyMon1Status: ; 0xdcff +PartyMon1Status: ; dcff ds 1 -; 0xdd00 unused +; dd00 unused ds 1 -PartyMon1CurHP: ; 0xdd01 +PartyMon1CurHP: ; dd01 ds 2 -PartyMon1MaxHP: ; 0xdd03 +PartyMon1MaxHP: ; dd03 ds 2 -PartyMon1Atk: ; 0xdd05 +PartyMon1Atk: ; dd05 ds 2 -PartyMon1Def: ; 0xdd07 +PartyMon1Def: ; dd07 ds 2 -PartyMon1Spd: ; 0xdd09 +PartyMon1Spd: ; dd09 ds 2 -PartyMon1SpclAtk: ; 0xdd0b +PartyMon1SpclAtk: ; dd0b ds 2 -PartyMon1SpclDef: ; 0xdd0d +PartyMon1SpclDef: ; dd0d ds 2 -PartyMon2: ; 0xdd0f -PartyMon2Species: ; 0xdd0f +PartyMon2: ; dd0f +PartyMon2Species: ; dd0f ds 1 -PartyMon2Item: ; 0xdd10 +PartyMon2Item: ; dd10 ds 1 -PartyMon2Moves: ; 0xdd11 -PartyMon2Move1: ; 0xdd11 +PartyMon2Moves: ; dd11 +PartyMon2Move1: ; dd11 ds 1 -PartyMon2Move2: ; 0xdd12 +PartyMon2Move2: ; dd12 ds 1 -PartyMon2Move3: ; 0xdd13 +PartyMon2Move3: ; dd13 ds 1 -PartyMon2Move4: ; 0xdd14 +PartyMon2Move4: ; dd14 ds 1 -PartyMon2ID: ; 0xdd15 +PartyMon2ID: ; dd15 ds 2 -PartyMon2Exp: ; 0xdd17 +PartyMon2Exp: ; dd17 ds 3 -PartyMon2HPExp: ; 0xdd1a +PartyMon2HPExp: ; dd1a ds 2 -PartyMon2AtkExp: ; 0xdd1c +PartyMon2AtkExp: ; dd1c ds 2 -PartyMon2DefExp: ; 0xdd1e +PartyMon2DefExp: ; dd1e ds 2 -PartyMon2SpdExp: ; 0xdd20 +PartyMon2SpdExp: ; dd20 ds 2 -PartyMon2SpclExp: ; 0xdd22 +PartyMon2SpclExp: ; dd22 ds 2 -PartyMon2DVs: ; 0xdd24 +PartyMon2DVs: ; dd24 ds 2 ; Atk/Def/Spd/Spcl, HP is the high bits of these four nybbles -PartyMon2PP: ; 0xdd26 +PartyMon2PP: ; dd26 ds 4 -PartyMon2Happiness: ; 0xdd2a +PartyMon2Happiness: ; dd2a ds 1 -PartyMon2PokerusStatus: ; 0xdd2b +PartyMon2PokerusStatus: ; dd2b ds 1 -PartyMon2CaughtData: ; 0xdd2c -PartyMon2CaughtTime: ; 0xdd2c -PartyMon2CaughtLevel ; 0xdd2c +PartyMon2CaughtData: ; dd2c +PartyMon2CaughtTime: ; dd2c +PartyMon2CaughtLevel ; dd2c ds 1 -PartyMon2CaughtGender: ; 0xdd2d -PartyMon2CaughtLocation: ; 0xdd2d +PartyMon2CaughtGender: ; dd2d +PartyMon2CaughtLocation: ; dd2d ds 1 -PartyMon2Level: ; 0xdd2e +PartyMon2Level: ; dd2e ds 1 -PartyMon2Status: ; 0xdd2f +PartyMon2Status: ; dd2f ds 1 -; 0xdd30 unused +; dd30 unused ds 1 -PartyMon2CurHP: ; 0xdd31 +PartyMon2CurHP: ; dd31 ds 2 -PartyMon2MaxHP: ; 0xdd33 +PartyMon2MaxHP: ; dd33 ds 2 -PartyMon2Atk: ; 0xdd35 +PartyMon2Atk: ; dd35 ds 2 -PartyMon2Def: ; 0xdd37 +PartyMon2Def: ; dd37 ds 2 -PartyMon2Spd: ; 0xdd39 +PartyMon2Spd: ; dd39 ds 2 -PartyMon2SpclAtk: ; 0xdd3b +PartyMon2SpclAtk: ; dd3b ds 2 -PartyMon2SpclDef: ; 0xdd3d +PartyMon2SpclDef: ; dd3d ds 2 -PartyMon3: ; 0xdd3f -PartyMon3Species: ; 0xdd3f +PartyMon3: ; dd3f +PartyMon3Species: ; dd3f ds 1 -PartyMon3Item: ; 0xdd40 +PartyMon3Item: ; dd40 ds 1 -PartyMon3Moves: ; 0xdd41 -PartyMon3Move1: ; 0xdd41 +PartyMon3Moves: ; dd41 +PartyMon3Move1: ; dd41 ds 1 -PartyMon3Move2: ; 0xdd42 +PartyMon3Move2: ; dd42 ds 1 -PartyMon3Move3: ; 0xdd43 +PartyMon3Move3: ; dd43 ds 1 -PartyMon3Move4: ; 0xdd44 +PartyMon3Move4: ; dd44 ds 1 -PartyMon3ID: ; 0xdd45 +PartyMon3ID: ; dd45 ds 2 -PartyMon3Exp: ; 0xdd47 +PartyMon3Exp: ; dd47 ds 3 -PartyMon3HPExp: ; 0xdd4a +PartyMon3HPExp: ; dd4a ds 2 -PartyMon3AtkExp: ; 0xdd4c +PartyMon3AtkExp: ; dd4c ds 2 -PartyMon3DefExp: ; 0xdd4e +PartyMon3DefExp: ; dd4e ds 2 -PartyMon3SpdExp: ; 0xdd50 +PartyMon3SpdExp: ; dd50 ds 2 -PartyMon3SpclExp: ; 0xdd52 +PartyMon3SpclExp: ; dd52 ds 2 -PartyMon3DVs: ; 0xdd54 +PartyMon3DVs: ; dd54 ds 2 ; Atk/Def/Spd/Spcl, HP is the high bits of these four nybbles -PartyMon3PP: ; 0xdd56 +PartyMon3PP: ; dd56 ds 4 -PartyMon3Happiness: ; 0xdd5a +PartyMon3Happiness: ; dd5a ds 1 -PartyMon3PokerusStatus: ; 0xdd5b +PartyMon3PokerusStatus: ; dd5b ds 1 -PartyMon3CaughtData: ; 0xdd5c -PartyMon3CaughtTime: ; 0xdd5c -PartyMon3CaughtLevel ; 0xdd5c +PartyMon3CaughtData: ; dd5c +PartyMon3CaughtTime: ; dd5c +PartyMon3CaughtLevel ; dd5c ds 1 -PartyMon3CaughtGender: ; 0xdd5d -PartyMon3CaughtLocation: ; 0xdd5d +PartyMon3CaughtGender: ; dd5d +PartyMon3CaughtLocation: ; dd5d ds 1 -PartyMon3Level: ; 0xdd5e +PartyMon3Level: ; dd5e ds 1 -PartyMon3Status: ; 0xdd5f +PartyMon3Status: ; dd5f ds 1 -; 0xdd60 unused +; dd60 unused ds 1 -PartyMon3CurHP: ; 0xdd61 +PartyMon3CurHP: ; dd61 ds 2 -PartyMon3MaxHP: ; 0xdd63 +PartyMon3MaxHP: ; dd63 ds 2 -PartyMon3Atk: ; 0xdd65 +PartyMon3Atk: ; dd65 ds 2 -PartyMon3Def: ; 0xdd67 +PartyMon3Def: ; dd67 ds 2 -PartyMon3Spd: ; 0xdd69 +PartyMon3Spd: ; dd69 ds 2 -PartyMon3SpclAtk: ; 0xdd6b +PartyMon3SpclAtk: ; dd6b ds 2 -PartyMon3SpclDef: ; 0xdd6d +PartyMon3SpclDef: ; dd6d ds 2 -PartyMon4: ; 0xdd6f -PartyMon4Species: ; 0xdd6f +PartyMon4: ; dd6f +PartyMon4Species: ; dd6f ds 1 -PartyMon4Item: ; 0xdd70 +PartyMon4Item: ; dd70 ds 1 -PartyMon4Moves: ; 0xdd71 -PartyMon4Move1: ; 0xdd71 +PartyMon4Moves: ; dd71 +PartyMon4Move1: ; dd71 ds 1 -PartyMon4Move2: ; 0xdd72 +PartyMon4Move2: ; dd72 ds 1 -PartyMon4Move3: ; 0xdd73 +PartyMon4Move3: ; dd73 ds 1 -PartyMon4Move4: ; 0xdd74 +PartyMon4Move4: ; dd74 ds 1 -PartyMon4ID: ; 0xdd75 +PartyMon4ID: ; dd75 ds 2 -PartyMon4Exp: ; 0xdd77 +PartyMon4Exp: ; dd77 ds 3 -PartyMon4HPExp: ; 0xdd7a +PartyMon4HPExp: ; dd7a ds 2 -PartyMon4AtkExp: ; 0xdd7c +PartyMon4AtkExp: ; dd7c ds 2 -PartyMon4DefExp: ; 0xdd7e +PartyMon4DefExp: ; dd7e ds 2 -PartyMon4SpdExp: ; 0xdd80 +PartyMon4SpdExp: ; dd80 ds 2 -PartyMon4SpclExp: ; 0xdd82 +PartyMon4SpclExp: ; dd82 ds 2 -PartyMon4DVs: ; 0xdd84 +PartyMon4DVs: ; dd84 ds 2 ; Atk/Def/Spd/Spcl, HP is the high bits of these four nybbles -PartyMon4PP: ; 0xdd86 +PartyMon4PP: ; dd86 ds 4 -PartyMon4Happiness: ; 0xdd8a +PartyMon4Happiness: ; dd8a ds 1 -PartyMon4PokerusStatus: ; 0xdd8b +PartyMon4PokerusStatus: ; dd8b ds 1 -PartyMon4CaughtData: ; 0xdd8c -PartyMon4CaughtTime: ; 0xdd8c -PartyMon4CaughtLevel ; 0xdd8c +PartyMon4CaughtData: ; dd8c +PartyMon4CaughtTime: ; dd8c +PartyMon4CaughtLevel ; dd8c ds 1 -PartyMon4CaughtGender: ; 0xdd8d -PartyMon4CaughtLocation: ; 0xdd8d +PartyMon4CaughtGender: ; dd8d +PartyMon4CaughtLocation: ; dd8d ds 1 -PartyMon4Level: ; 0xdd8e +PartyMon4Level: ; dd8e ds 1 -PartyMon4Status: ; 0xdd8f +PartyMon4Status: ; dd8f ds 1 -; 0xdd90 unused +; dd90 unused ds 1 -PartyMon4CurHP: ; 0xdd91 +PartyMon4CurHP: ; dd91 ds 2 -PartyMon4MaxHP: ; 0xdd93 +PartyMon4MaxHP: ; dd93 ds 2 -PartyMon4Atk: ; 0xdd95 +PartyMon4Atk: ; dd95 ds 2 -PartyMon4Def: ; 0xdd97 +PartyMon4Def: ; dd97 ds 2 -PartyMon4Spd: ; 0xdd99 +PartyMon4Spd: ; dd99 ds 2 -PartyMon4SpclAtk: ; 0xdd9b +PartyMon4SpclAtk: ; dd9b ds 2 -PartyMon4SpclDef: ; 0xdd9d +PartyMon4SpclDef: ; dd9d ds 2 -PartyMon5: ; 0xdd9f -PartyMon5Species: ; 0xdd9f +PartyMon5: ; dd9f +PartyMon5Species: ; dd9f ds 1 -PartyMon5Item: ; 0xdda0 +PartyMon5Item: ; dda0 ds 1 -PartyMon5Moves: ; 0xdda1 -PartyMon5Move1: ; 0xdda1 +PartyMon5Moves: ; dda1 +PartyMon5Move1: ; dda1 ds 1 -PartyMon5Move2: ; 0xdda2 +PartyMon5Move2: ; dda2 ds 1 -PartyMon5Move3: ; 0xdda3 +PartyMon5Move3: ; dda3 ds 1 -PartyMon5Move4: ; 0xdda4 +PartyMon5Move4: ; dda4 ds 1 -PartyMon5ID: ; 0xdda5 +PartyMon5ID: ; dda5 ds 2 -PartyMon5Exp: ; 0xdda7 +PartyMon5Exp: ; dda7 ds 3 -PartyMon5HPExp: ; 0xddaa +PartyMon5HPExp: ; ddaa ds 2 -PartyMon5AtkExp: ; 0xddac +PartyMon5AtkExp: ; ddac ds 2 -PartyMon5DefExp: ; 0xddae +PartyMon5DefExp: ; ddae ds 2 -PartyMon5SpdExp: ; 0xddb0 +PartyMon5SpdExp: ; ddb0 ds 2 -PartyMon5SpclExp: ; 0xddb2 +PartyMon5SpclExp: ; ddb2 ds 2 -PartyMon5DVs: ; 0xddb4 +PartyMon5DVs: ; ddb4 ds 2 ; Atk/Def/Spd/Spcl, HP is the high bits of these four nybbles -PartyMon5PP: ; 0xddb6 +PartyMon5PP: ; ddb6 ds 4 -PartyMon5Happiness: ; 0xddba +PartyMon5Happiness: ; ddba ds 1 -PartyMon5PokerusStatus: ; 0xddbb +PartyMon5PokerusStatus: ; ddbb ds 1 -PartyMon5CaughtData: ; 0xddbc -PartyMon5CaughtTime: ; 0xddbc -PartyMon5CaughtLevel ; 0xddbc +PartyMon5CaughtData: ; ddbc +PartyMon5CaughtTime: ; ddbc +PartyMon5CaughtLevel ; ddbc ds 1 -PartyMon5CaughtGender: ; 0xddbd -PartyMon5CaughtLocation: ; 0xddbd +PartyMon5CaughtGender: ; ddbd +PartyMon5CaughtLocation: ; ddbd ds 1 -PartyMon5Level: ; 0xddbe +PartyMon5Level: ; ddbe ds 1 -PartyMon5Status: ; 0xddbf +PartyMon5Status: ; ddbf ds 1 -; 0xddc0 unused +; ddc0 unused ds 1 -PartyMon5CurHP: ; 0xddc1 +PartyMon5CurHP: ; ddc1 ds 2 -PartyMon5MaxHP: ; 0xddc3 +PartyMon5MaxHP: ; ddc3 ds 2 -PartyMon5Atk: ; 0xddc5 +PartyMon5Atk: ; ddc5 ds 2 -PartyMon5Def: ; 0xddc7 +PartyMon5Def: ; ddc7 ds 2 -PartyMon5Spd: ; 0xddc9 +PartyMon5Spd: ; ddc9 ds 2 -PartyMon5SpclAtk: ; 0xddcb +PartyMon5SpclAtk: ; ddcb ds 2 -PartyMon5SpclDef: ; 0xddcd +PartyMon5SpclDef: ; ddcd ds 2 -PartyMon6: ; 0xddcf -PartyMon6Species: ; 0xddcf +PartyMon6: ; ddcf +PartyMon6Species: ; ddcf ds 1 -PartyMon6Item: ; 0xddd0 +PartyMon6Item: ; ddd0 ds 1 -PartyMon6Moves: ; 0xddd1 -PartyMon6Move1: ; 0xddd1 +PartyMon6Moves: ; ddd1 +PartyMon6Move1: ; ddd1 ds 1 -PartyMon6Move2: ; 0xddd2 +PartyMon6Move2: ; ddd2 ds 1 -PartyMon6Move3: ; 0xddd3 +PartyMon6Move3: ; ddd3 ds 1 -PartyMon6Move4: ; 0xddd4 +PartyMon6Move4: ; ddd4 ds 1 -PartyMon6ID: ; 0xddd5 +PartyMon6ID: ; ddd5 ds 2 -PartyMon6Exp: ; 0xddd7 +PartyMon6Exp: ; ddd7 ds 3 -PartyMon6HPExp: ; 0xddda +PartyMon6HPExp: ; ddda ds 2 -PartyMon6AtkExp: ; 0xdddc +PartyMon6AtkExp: ; dddc ds 2 -PartyMon6DefExp: ; 0xddde +PartyMon6DefExp: ; ddde ds 2 -PartyMon6SpdExp: ; 0xdde0 +PartyMon6SpdExp: ; dde0 ds 2 -PartyMon6SpclExp: ; 0xdde2 +PartyMon6SpclExp: ; dde2 ds 2 -PartyMon6DVs: ; 0xdde4 +PartyMon6DVs: ; dde4 ds 2 ; Atk/Def/Spd/Spcl, HP is the high bits of these four nybbles -PartyMon6PP: ; 0xdde6 +PartyMon6PP: ; dde6 ds 4 -PartyMon6Happiness: ; 0xddea +PartyMon6Happiness: ; ddea ds 1 -PartyMon6PokerusStatus: ; 0xddeb +PartyMon6PokerusStatus: ; ddeb ds 1 -PartyMon6CaughtData: ; 0xddec -PartyMon6CaughtTime: ; 0xddec -PartyMon6CaughtLevel ; 0xddec +PartyMon6CaughtData: ; ddec +PartyMon6CaughtTime: ; ddec +PartyMon6CaughtLevel ; ddec ds 1 -PartyMon6CaughtGender: ; 0xdded -PartyMon6CaughtLocation: ; 0xdded +PartyMon6CaughtGender: ; dded +PartyMon6CaughtLocation: ; dded ds 1 -PartyMon6Level: ; 0xddee +PartyMon6Level: ; ddee ds 1 -PartyMon6Status: ; 0xddef +PartyMon6Status: ; ddef ds 1 -; 0xddf0 unused +; ddf0 unused ds 1 -PartyMon6CurHP: ; 0xddf1 +PartyMon6CurHP: ; ddf1 ds 2 -PartyMon6MaxHP: ; 0xddf3 +PartyMon6MaxHP: ; ddf3 ds 2 -PartyMon6Atk: ; 0xddf5 +PartyMon6Atk: ; ddf5 ds 2 -PartyMon6Def: ; 0xddf7 +PartyMon6Def: ; ddf7 ds 2 -PartyMon6Spd: ; 0xddf9 +PartyMon6Spd: ; ddf9 ds 2 -PartyMon6SpclAtk: ; 0xddfb +PartyMon6SpclAtk: ; ddfb ds 2 -PartyMon6SpclDef: ; 0xddfd +PartyMon6SpclDef: ; ddfd ds 2 -PartyMon1OT: ; 0xddff +PartyMon1OT: ; ddff ds 11 -PartyMon2OT: ; 0xde0a +PartyMon2OT: ; de0a ds 11 -PartyMon3OT: ; 0xde15 +PartyMon3OT: ; de15 ds 11 -PartyMon4OT: ; 0xde20 +PartyMon4OT: ; de20 ds 11 -PartyMon5OT: ; 0xde2b +PartyMon5OT: ; de2b ds 11 -PartyMon6OT: ; 0xde36 +PartyMon6OT: ; de36 ds 11 -PartyMon1Nickname: ; 0xde41 +PartyMon1Nickname: ; de41 ds 11 -PartyMon2Nickname: ; 0xde4c +PartyMon2Nickname: ; de4c ds 11 -PartyMon3Nickname: ; 0xde57 +PartyMon3Nickname: ; de57 ds 11 -PartyMon4Nickname: ; 0xde62 +PartyMon4Nickname: ; de62 ds 11 -PartyMon5Nickname: ; 0xde6d +PartyMon5Nickname: ; de6d ds 11 -PartyMon6Nickname: ; 0xde78 +PartyMon6Nickname: ; de78 ds 11 SECTION "Pokedex",BSS[$de99]