lots of bug fixes

added a log for them in the readme
This commit is contained in:
May Evans 2022-08-31 15:18:16 +01:00
parent 7c6bbb630f
commit 648289d4a9
12 changed files with 61 additions and 19 deletions

View file

@ -2,6 +2,30 @@ Kanto Expansion Pak
=================== ===================
This is a ROM Hack of Pokémon Red and Blue, aiming to expand the dex with This is a ROM Hack of Pokémon Red and Blue, aiming to expand the dex with
QoL Enhancements
====
- PC added to Celadon Hotel where the event usually is. Why not?
- Artificial Save Delay has been removed.
Bug Fixes
====
May non-multiplayer, non-battle related bugs have been fixed. The aforementioned have been preserved for the RBY battle experience. Bugs that are fixed are ones that objectively hurt the gameplay experience.
- Blaine is no longer addicted to Super Potions.
- CoolTrainerF no longer switches a lot.
- Transformed Pokemon aren't presumed to be Dittos! (very important given Animon)
- Status curing items don't remove modifiers anymore.
- Learning new moves plays the sound in the correct bank.
- Falling through a hole on a bike now properly resets the music, as you fall off a bike when going down.
- Using an Escape Rope no longer shows weird characters on DMG and spins correctly on DMG.
- The Item Finder will correctly find items at X/Y 0.0
- Glitch Pokémon will no longer corrupt the Hall of Fame.
- Strength smoke puffs now show properly.
- Game Corner slots no longer load too many tiles; the lucky machine stops when it should if there's a 7, few other objective issues. Also, the 40-coin hidden item is fixed.
- 2 invisible stars that show on the title screen are cut off; also, the "presents" logo from RG is re-used!
- The healing machine animates correctly!
- Using Minimize or Substitute, looking at the Pokedex, and then battling won't cause sprite corruption.
and more!
Credits Credits
==== ====
* Plague von Karma - Creator of the Showdown Mod, Developer * Plague von Karma - Creator of the Showdown Mod, Developer
@ -11,11 +35,11 @@ Credits
* Paulluxx - Showdown Mod assistance * Paulluxx - Showdown Mod assistance
* DuoM2 - Showdown Mod assistance * DuoM2 - Showdown Mod assistance
* Albatross - Much of the new sprites used in the hack * Albatross - Much of the new sprites used in the hack
* ZumiIsawhat? - Restorations of beta OST
* Helix Chamber, RacieBeep, et al - Prototype Pokémon sprites * Helix Chamber, RacieBeep, et al - Prototype Pokémon sprites
* pret et al - Pokémon Red and Blue Disassembly Project * pret et al - Pokémon Red and Blue Disassembly Project, many tutorials helped us!
Original README.md proceeding; Original README.md proceeding;
====
# Pokémon Red and Blue [![Build Status][ci-badge]][ci] # Pokémon Red and Blue [![Build Status][ci-badge]][ci]
This is a disassembly of Pokémon Red and Blue. This is a disassembly of Pokémon Red and Blue.

View file

@ -1339,8 +1339,7 @@ AdjustOAMBlockYPos2:
add b add b
cp 112 cp 112
jr c, .skipSettingPreviousEntrysAttribute jr c, .skipSettingPreviousEntrysAttribute
dec hl ld a, 160 ; fixes the smoke puff bug - PvK
ld a, 160 ; bug, sets previous OAM entry's attribute
ld [hli], a ld [hli], a
.skipSettingPreviousEntrysAttribute .skipSettingPreviousEntrysAttribute
ld [hl], a ld [hl], a

View file

@ -2375,6 +2375,8 @@ PartyMenuOrRockOrRun:
predef StatusScreen predef StatusScreen
predef StatusScreen2 predef StatusScreen2
; now we need to reload the enemy mon pic ; now we need to reload the enemy mon pic
ld a, 1
ldh [hWhoseTurn], a
ld a, [wEnemyBattleStatus2] ld a, [wEnemyBattleStatus2]
bit HAS_SUBSTITUTE_UP, a ; does the enemy mon have a substitute? bit HAS_SUBSTITUTE_UP, a ; does the enemy mon have a substitute?
ld hl, AnimationSubstitute ld hl, AnimationSubstitute

View file

@ -77,7 +77,7 @@ HiddenCoins:
cp 20 cp 20
jr z, .bcd20 jr z, .bcd20
cp 40 cp 40
jr z, .bcd20 ; should be bcd40 jr z, .bcd40 ; fixes the 40 coin stash thing - PvK
jr .bcd100 jr .bcd100
.bcd10 .bcd10
ld a, $10 ld a, $10
@ -87,7 +87,7 @@ HiddenCoins:
ld a, $20 ld a, $20
ldh [hCoins + 1], a ldh [hCoins + 1], a
jr .bcdDone jr .bcdDone
.bcd40 ; due to a typo, this is never used .bcd40
ld a, $40 ld a, $40
ldh [hCoins + 1], a ldh [hCoins + 1], a
jr .bcdDone jr .bcdDone

View file

@ -27,7 +27,9 @@ HiddenItemNear:
ld a, [wYCoord] ld a, [wYCoord]
call Sub5ClampTo0 call Sub5ClampTo0
cp d cp d
jr z, .y_zflag ; starts to fix the y/x coord 0 no find bug - PvK
jr nc, .loop jr nc, .loop
y_zflag
ld a, [wYCoord] ld a, [wYCoord]
add 4 add 4
cp d cp d
@ -35,7 +37,9 @@ HiddenItemNear:
ld a, [wXCoord] ld a, [wXCoord]
call Sub5ClampTo0 call Sub5ClampTo0
cp e cp e
jr z, .x_zflag
jr nc, .loop jr nc, .loop
.x_zflag
ld a, [wXCoord] ld a, [wXCoord]
add 5 add 5
cp e cp e
@ -45,7 +49,7 @@ HiddenItemNear:
Sub5ClampTo0: Sub5ClampTo0:
; subtract 5 but clamp to 0 ; subtract 5 but clamp to 0
sub 5 sub 4
cp $f0 cp $f0
ret c ret c
xor a xor a

View file

@ -326,9 +326,7 @@ DisplayNamingScreen:
LoadEDTile: LoadEDTile:
ld de, ED_Tile ld de, ED_Tile
ld hl, vFont tile $70 ld hl, vFont tile $70
ld bc, (ED_TileEnd - ED_Tile) / $8 lb bc, BANK(ED_Tile), (ED_TileEnd - ED_Tile) / $8 ; bad emulators work fine w/ this
; to fix the graphical bug on poor emulators
;lb bc, BANK(ED_Tile), (ED_TileEnd - ED_Tile) / $8
jp CopyVideoDataDouble jp CopyVideoDataDouble
ED_Tile: ED_Tile:

View file

@ -124,7 +124,7 @@ AnimateShootingStar:
ld a, [wMoveDownSmallStarsOAMCount] ld a, [wMoveDownSmallStarsOAMCount]
cp 24 cp 24
jr z, .next2 jr z, .next2
add 6 ; should be 4, but the extra 2 aren't visible on screen add 4 ; fixes the invisible extra 2 stars that can take up ram
ld [wMoveDownSmallStarsOAMCount], a ld [wMoveDownSmallStarsOAMCount], a
.next2 .next2
call MoveDownSmallStars call MoveDownSmallStars

View file

@ -1,7 +1,7 @@
AnimateHealingMachine: AnimateHealingMachine:
ld de, PokeCenterFlashingMonitorAndHealBall ld de, PokeCenterFlashingMonitorAndHealBall
ld hl, vChars0 tile $7c ld hl, vChars0 tile $7c
lb bc, BANK(PokeCenterFlashingMonitorAndHealBall), 3 ; should be 2 lb bc, BANK(PokeCenterFlashingMonitorAndHealBall), 2 ; fixed from 3 - PvK
call CopyVideoData call CopyVideoData
ld hl, wUpdateSpritesEnabled ld hl, wUpdateSpritesEnabled
ld a, [hl] ld a, [hl]

View file

@ -88,6 +88,7 @@ PlayerSpinWhileMovingDown:
ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimMaxY ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimMaxY
call GetPlayerTeleportAnimFrameDelay call GetPlayerTeleportAnimFrameDelay
ld [hl], a ; wPlayerSpinWhileMovingUpOrDownAnimFrameDelay ld [hl], a ; wPlayerSpinWhileMovingUpOrDownAnimFrameDelay
ld hl, wFacingDirectionList ; this fixes the jp characters on dmg/sgb - PvK
jp PlayerSpinWhileMovingUpOrDown jp PlayerSpinWhileMovingUpOrDown
_LeaveMapAnim:: _LeaveMapAnim::
@ -108,6 +109,7 @@ _LeaveMapAnim::
ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimMaxY ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimMaxY
call GetPlayerTeleportAnimFrameDelay call GetPlayerTeleportAnimFrameDelay
ld [hl], a ; wPlayerSpinWhileMovingUpOrDownAnimFrameDelay ld [hl], a ; wPlayerSpinWhileMovingUpOrDownAnimFrameDelay
ld hl, wFacingDirectionList ; this fixes the thing too - PvK
call PlayerSpinWhileMovingUpOrDown call PlayerSpinWhileMovingUpOrDown
call IsPlayerStandingOnWarpPadOrHole call IsPlayerStandingOnWarpPadOrHole
ld a, b ld a, b
@ -202,6 +204,9 @@ FlyAnimationScreenCoords2:
db $F0, $00 db $F0, $00
LeaveMapThroughHoleAnim: LeaveMapThroughHoleAnim:
ld a, [wLastMusicSoundID]
cp MUSIC_BIKE_RIDING
call z, PlayDefaultMusic ; this fixes the bike music persisting - PvK
ld a, $ff ld a, $ff
ld [wUpdateSpritesEnabled], a ; disable UpdateSprites ld [wUpdateSpritesEnabled], a ; disable UpdateSprites
; shift upper half of player's sprite down 8 pixels and hide lower half ; shift upper half of player's sprite down 8 pixels and hide lower half

View file

@ -304,7 +304,7 @@ SlotMachine_StopWheel1Early:
.loop .loop
ld a, [hli] ld a, [hli]
cp HIGH(SLOTS7) cp HIGH(SLOTS7)
jr c, .stopWheel ; condition never true jr z, .stopWheel ; now works properly - PvK
dec c dec c
jr nz, .loop jr nz, .loop
ret ret
@ -329,9 +329,13 @@ SlotMachine_StopWheel2Early:
; player's odds. ; player's odds.
.sevenAndBarMode .sevenAndBarMode
call SlotMachine_FindWheel1Wheel2Matches call SlotMachine_FindWheel1Wheel2Matches
ret nz
ld a, [de] ld a, [de]
cp HIGH(SLOTSBAR) + 1 cp HIGH(SLOTSBAR) + 1
ret nc jr c, .stopWheel
ld a, [wSlotMachineFlags]
bit 6, a
ret z
.stopWheel .stopWheel
xor a xor a
ld [wSlotMachineWheel2SlipCounter], a ld [wSlotMachineWheel2SlipCounter], a
@ -850,7 +854,7 @@ LoadSlotMachineTiles:
call DisableLCD call DisableLCD
ld hl, SlotMachineTiles2 ld hl, SlotMachineTiles2
ld de, vChars0 ld de, vChars0
ld bc, $1c tiles ; should be SlotMachineTiles2End - SlotMachineTiles2, or $18 tiles ld bc, SlotMachineTiles2End - SlotMachineTiles2 ; fixes loading too many tiles - PvK
ld a, BANK(SlotMachineTiles2) ld a, BANK(SlotMachineTiles2)
call FarCopyData2 call FarCopyData2
ld hl, SlotMachineTiles1 ld hl, SlotMachineTiles1
@ -860,7 +864,7 @@ LoadSlotMachineTiles:
call FarCopyData2 call FarCopyData2
ld hl, SlotMachineTiles2 ld hl, SlotMachineTiles2
ld de, vChars2 tile $25 ld de, vChars2 tile $25
ld bc, $1c tiles ; should be SlotMachineTiles2End - SlotMachineTiles2, or $18 tiles ld bc, SlotMachineTiles2End - SlotMachineTiles2
ld a, BANK(SlotMachineTiles2) ld a, BANK(SlotMachineTiles2)
call FarCopyData2 call FarCopyData2
ld hl, SlotMachineMap ld hl, SlotMachineMap

View file

@ -34,14 +34,20 @@ _UncompressSpriteData::
ld [wSpriteLoadFlags], a ld [wSpriteLoadFlags], a
call ReadNextInputByte ; first byte of input determines sprite width (high nybble) and height (low nybble) in tiles (8x8 pixels) call ReadNextInputByte ; first byte of input determines sprite width (high nybble) and height (low nybble) in tiles (8x8 pixels)
ld b, a ld b, a
and $f and $7 ; this stops the hall of fame from being corrupted by missingno. - PvK
jr nz, .skip1
inc a
.skip1
add a add a
add a add a
add a add a
ld [wSpriteHeight], a ld [wSpriteHeight], a
ld a, b ld a, b
swap a swap a
and $f and $7
jr nz, .skip2
inc a
.skip2
add a add a
add a add a
add a add a

View file

@ -1,2 +1,2 @@
 #