Adding a stable MissingNo, and fixing a few minor things

This commit is contained in:
MementoMartha 2022-10-31 23:09:41 +00:00
parent bb319e89b3
commit 1e7613f804
28 changed files with 67 additions and 16 deletions

View file

@ -65,7 +65,7 @@ New areas
QoL Enhancements QoL Enhancements
==== ====
- All 212 (current) Pokemon can be obtained without the use of trading or glitches, including Mew! - All 217 (current) Pokemon can be obtained without the use of trading or glitches, including Mew!
- Fast text has no frame delay between text scrolling, doubling the scroll speed. It's also been made the default option, so you don't need to go into the Options menu for it. - Fast text has no frame delay between text scrolling, doubling the scroll speed. It's also been made the default option, so you don't need to go into the Options menu for it.
- Trainer DVs are perfect-15s. - Trainer DVs are perfect-15s.
- The protagonist is referred to in a gender neutral manner. - The protagonist is referred to in a gender neutral manner.
@ -133,6 +133,7 @@ Known Bugs
- Occasionally, menu text sets itself to scroll. - Occasionally, menu text sets itself to scroll.
- Some sprites in the Celadon University area spawn bugged out on certain emulators. - Some sprites in the Celadon University area spawn bugged out on certain emulators.
- Battling multiple of the trainers in Celadon University causes a crash when attempting to go to Route 16 - Battling multiple of the trainers in Celadon University causes a crash when attempting to go to Route 16
- The lone Rocket in Viridian Gym's basement needs to be directly spoken to to be battled
Credits Credits
==== ====

View file

@ -3,7 +3,8 @@
; - BaseStats (see data/pokemon/base_stats.asm) ; - BaseStats (see data/pokemon/base_stats.asm)
; - MonPartyData (see data/pokemon/menu_icons.asm) ; - MonPartyData (see data/pokemon/menu_icons.asm)
; - MonsterPalettes (see data/pokemon/palettes.asm) ; - MonsterPalettes (see data/pokemon/palettes.asm)
const_def 1 const_def
const DEX_MISSINGNO ; 0
const DEX_BULBASAUR ; 1 const DEX_BULBASAUR ; 1
const DEX_IVYSAUR ; 2 const DEX_IVYSAUR ; 2
const DEX_VENUSAUR ; 3 const DEX_VENUSAUR ; 3
@ -225,4 +226,4 @@
const DEX_MEWTWO ; 150 const DEX_MEWTWO ; 150
const DEX_MEW ; 151 const DEX_MEW ; 151
DEF NUM_POKEMON EQU const_value - 1 DEF NUM_POKEMON EQU const_value

View file

@ -240,6 +240,7 @@
; const MIME_JR ; $E7 ; const MIME_JR ; $E7
; const HAPPINY ; $E8 ; const HAPPINY ; $E8
; const MUNCHLAX ; $E9 ; const MUNCHLAX ; $E9
const MISSINGNO ; $EA
DEF NUM_POKEMON_INDEXES EQU const_value - 1 DEF NUM_POKEMON_INDEXES EQU const_value - 1

View file

@ -2,7 +2,7 @@ RocketHideoutB1F_Object:
db $2e ; border block db $2e ; border block
def_warp_events def_warp_events
warp_event 5, 4, VIRIDIAN_GYM, 2 warp_event 5, 4, VIRIDIAN_GYM, 3
warp_event 17, 4, VIRIDIAN_CITY, 6 warp_event 17, 4, VIRIDIAN_CITY, 6
def_bg_events def_bg_events

View file

@ -217,4 +217,7 @@ INCLUDE "data/pokemon/base_stats/dragonair.asm"
INCLUDE "data/pokemon/base_stats/dragonite.asm" INCLUDE "data/pokemon/base_stats/dragonite.asm"
INCLUDE "data/pokemon/base_stats/mewtwo.asm" INCLUDE "data/pokemon/base_stats/mewtwo.asm"
INCLUDE "data/pokemon/base_stats/mew.asm" INCLUDE "data/pokemon/base_stats/mew.asm"
assert_table_length NUM_POKEMON assert_table_length NUM_POKEMON - 1 ; discount MissingNo
MissingnoBaseStats::
INCLUDE "data/pokemon/base_stats/missingno.asm"

View file

@ -239,4 +239,5 @@ CryData::
; mon_cry SFX_CRY_00, $00, $00 ; Mime Jr. ; mon_cry SFX_CRY_00, $00, $00 ; Mime Jr.
; mon_cry SFX_CRY_00, $00, $00 ; Happiny ; mon_cry SFX_CRY_00, $00, $00 ; Happiny
; mon_cry SFX_CRY_00, $00, $00 ; Munchlax ; mon_cry SFX_CRY_00, $00, $00 ; Munchlax
mon_cry SFX_CRY_00, $00, $00 ; MissingNo.
assert_table_length NUM_POKEMON_INDEXES assert_table_length NUM_POKEMON_INDEXES

View file

@ -220,6 +220,7 @@ PokedexEntryPointers:
dw BetobebiiDexEntry dw BetobebiiDexEntry
dw MagnezoneDexEntry dw MagnezoneDexEntry
dw PorygonZDexEntry dw PorygonZDexEntry
dw MissingNoDexEntry
assert_table_length NUM_POKEMON_INDEXES assert_table_length NUM_POKEMON_INDEXES
; string: species name ; string: species name

View file

@ -220,4 +220,5 @@ PokedexOrder:
db DEX_BETOBEBII db DEX_BETOBEBII
db DEX_MAGNEZONE db DEX_MAGNEZONE
db DEX_PORYGONZ db DEX_PORYGONZ
db DEX_MISSINGNO
assert_table_length NUM_POKEMON_INDEXES assert_table_length NUM_POKEMON_INDEXES

View file

@ -223,6 +223,7 @@ EvosMovesPointerTable:
dw BetobebiiEvosMoves dw BetobebiiEvosMoves
dw MagnezoneEvosMoves dw MagnezoneEvosMoves
dw PorygonZEvosMoves dw PorygonZEvosMoves
dw MissingNoEvosMoves
assert_table_length NUM_POKEMON_INDEXES assert_table_length NUM_POKEMON_INDEXES
RhydonEvosMoves: RhydonEvosMoves:
@ -2824,6 +2825,12 @@ PorygonZEvosMoves:
db 50, AMNESIA ; will replace with nasty plot db 50, AMNESIA ; will replace with nasty plot
db 0 db 0
MissingNoEvosMoves:
; Evolutions
db 0
; Learnset
db 0
;ArticunoGEvosMoves: ;ArticunoGEvosMoves:
; Evolutions ; Evolutions
; db 0 ; db 0

View file

@ -1,5 +1,6 @@
MonPartyData: MonPartyData:
nybble_array MonPartyData nybble_array MonPartyData
nybble ICON_MON ; MissingNo.
nybble ICON_GRASS ; Bulbasaur nybble ICON_GRASS ; Bulbasaur
nybble ICON_GRASS ; Ivysaur nybble ICON_GRASS ; Ivysaur
nybble ICON_GRASS ; Venusaur nybble ICON_GRASS ; Venusaur

View file

@ -220,5 +220,6 @@ MonsterNames::
db "BETOBEBII@" db "BETOBEBII@"
db "MAGNEZONE@" db "MAGNEZONE@"
db "PORYGON-Z@" db "PORYGON-Z@"
db "MISSINGNO."
assert_table_length NUM_POKEMON_INDEXES assert_table_length NUM_POKEMON_INDEXES

View file

@ -218,4 +218,4 @@ MonsterPalettes:
db PAL_BROWNMON ; DRAGONITE db PAL_BROWNMON ; DRAGONITE
db PAL_MEWMON ; MEWTWO db PAL_MEWMON ; MEWTWO
db PAL_MEWMON ; MEW db PAL_MEWMON ; MEW
assert_table_length NUM_POKEMON + 1 assert_table_length NUM_POKEMON

View file

@ -323,7 +323,9 @@ EngineerData:
db 18, MAGNEMITE, MAGNEMITE, MAGNETON, 0 db 18, MAGNEMITE, MAGNEMITE, MAGNETON, 0
UnusedJugglerData: UnusedJugglerData:
; none ; db $FF, 7, KONYA, 7, EEVEE, 10, LICKITUNG, 0
; post-game rematch team (currently unused)
; db $FF, 66, PERSIAN, 67, TAUROS, 67, MADAAMU, 66, BLISSEY, 67, SNORLAX, 70, LICKILICKY, 0
FisherData: FisherData:
; SS Anne 2F Rooms ; SS Anne 2F Rooms

View file

@ -8,7 +8,7 @@ WildDataPointers:
dw NothingWildMons ; VERMILION_CITY dw NothingWildMons ; VERMILION_CITY
dw NothingWildMons ; CELADON_CITY dw NothingWildMons ; CELADON_CITY
dw NothingWildMons ; FUCHSIA_CITY dw NothingWildMons ; FUCHSIA_CITY
dw NothingWildMons ; CINNABAR_ISLAND dw CinnabarWildMons ; CINNABAR_ISLAND
dw NothingWildMons ; INDIGO_PLATEAU dw NothingWildMons ; INDIGO_PLATEAU
dw NothingWildMons ; SAFFRON_CITY dw NothingWildMons ; SAFFRON_CITY
dw NothingWildMons ; CITRINE_CITY dw NothingWildMons ; CITRINE_CITY
@ -263,6 +263,7 @@ WildDataPointers:
; level, species (ten times) ; level, species (ten times)
INCLUDE "data/wild/maps/nothing.asm" INCLUDE "data/wild/maps/nothing.asm"
INCLUDE "data/wild/maps/CinnabarIsland.asm"
INCLUDE "data/wild/maps/Route1.asm" INCLUDE "data/wild/maps/Route1.asm"
INCLUDE "data/wild/maps/Route2.asm" INCLUDE "data/wild/maps/Route2.asm"
INCLUDE "data/wild/maps/Route22.asm" INCLUDE "data/wild/maps/Route22.asm"

View file

@ -0,0 +1,16 @@
CinnabarWildMons: ; This is used purely for testing MissingNo.
def_grass_wildmons 0 ; encounter rate
end_grass_wildmons
def_water_wildmons 20 ; encounter rate
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
db 80, MISSINGNO
end_water_wildmons

View file

@ -57,6 +57,8 @@ SetPokedexOwnedFlag:
ld [wd11e], a ld [wd11e], a
predef IndexToPokedex predef IndexToPokedex
ld a, [wd11e] ld a, [wd11e]
and a
ret z ; do nothing for missingno
dec a dec a
ld c, a ld c, a
ld hl, wPokedexOwned ld hl, wPokedexOwned

View file

@ -262,7 +262,6 @@ GetPartyMonSpriteID:
predef IndexToPokedex predef IndexToPokedex
ld a, [wd11e] ld a, [wd11e]
ld c, a ld c, a
dec a
srl a srl a
ld hl, MonPartyData ld hl, MonPartyData
ld e, a ld e, a

View file

@ -540,6 +540,8 @@ ItemUseBall:
; Add the caught Pokémon to the Pokédex. ; Add the caught Pokémon to the Pokédex.
predef IndexToPokedex predef IndexToPokedex
ld a, [wd11e] ld a, [wd11e]
and a ; is it missingno?
jr z, .skipShowingPokedexData ; don't mark in pokedex if so
dec a dec a
ld c, a ld c, a
ld b, FLAG_TEST ld b, FLAG_TEST

View file

@ -86,6 +86,8 @@ _AddPartyMon::
predef IndexToPokedex predef IndexToPokedex
pop de pop de
ld a, [wd11e] ld a, [wd11e]
and a
jr z, .noMarkSeen ; if it's missingno don't do any pokedex actions
dec a dec a
ld c, a ld c, a
ld b, FLAG_TEST ld b, FLAG_TEST
@ -102,7 +104,7 @@ _AddPartyMon::
pop bc pop bc
ld hl, wPokedexSeen ld hl, wPokedexSeen
call FlagAction call FlagAction
.noMarkSeen
pop hl pop hl
push hl push hl

View file

@ -515,4 +515,6 @@ BetobebiiPicBack:: INCBIN "gfx/pokemon/back/betobebiib.pic"
MagnezonePicFront:: INCBIN "gfx/pokemon/front/magnezone.pic" MagnezonePicFront:: INCBIN "gfx/pokemon/front/magnezone.pic"
MagnezonePicBack:: INCBIN "gfx/pokemon/back/magnezoneb.pic" MagnezonePicBack:: INCBIN "gfx/pokemon/back/magnezoneb.pic"
PorygonZPicFront:: INCBIN "gfx/pokemon/front/porygonz.pic" PorygonZPicFront:: INCBIN "gfx/pokemon/front/porygonz.pic"
PorygonZPicBack:: INCBIN "gfx/pokemon/back/porygonzb.pic" PorygonZPicBack:: INCBIN "gfx/pokemon/back/porygonzb.pic"
MissingNoPicFront:: INCBIN "gfx/pokemon/front/missingno.pic"
MissingNoPicBack:: INCBIN "gfx/pokemon/back/missingnob.pic"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 919 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 B

After

Width:  |  Height:  |  Size: 651 B

BIN
gfx/trainers/chief.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

BIN
gfx/trainers/yujirou.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

View file

@ -100,9 +100,8 @@ LoadFrontSpriteByMonIndex::
ld [hl], b ld [hl], b
and a and a
pop hl pop hl
jr z, .invalidDexNumber ; dex #0 invalid
cp NUM_POKEMON + 1 cp NUM_POKEMON + 1
jr c, .validDexNumber ; dex >#151 invalid jr c, .validDexNumber ; dex numbers over normal limit invalid
.invalidDexNumber .invalidDexNumber
ld a, RHYDON ; $1 ld a, RHYDON ; $1
ld [wcf91], a ld [wcf91], a
@ -379,6 +378,8 @@ GetMonHeader::
jr z, .specialID jr z, .specialID
predef IndexToPokedex ; convert pokemon ID in [wd11e] to pokedex number predef IndexToPokedex ; convert pokemon ID in [wd11e] to pokedex number
ld a, [wd11e] ld a, [wd11e]
and a
jr z, .missingno ; index of 0 is missingno
dec a dec a
ld bc, BASE_DATA_SIZE ld bc, BASE_DATA_SIZE
ld hl, BaseStats ld hl, BaseStats
@ -387,6 +388,12 @@ GetMonHeader::
ld bc, BASE_DATA_SIZE ld bc, BASE_DATA_SIZE
call CopyData call CopyData
jr .done jr .done
.missingno
ld hl, MissingnoBaseStats
ld bc, BASE_DATA_SIZE
ld de, wMonHeader
call CopyData
jr .done
.specialID .specialID
ld hl, wMonHSpriteDim ld hl, wMonHSpriteDim
ld [hl], b ; write sprite dimensions ld [hl], b ; write sprite dimensions

View file

@ -1735,10 +1735,10 @@ SECTION "Main Data", WRAM0
wMainDataStart:: wMainDataStart::
wPokedexOwned:: flag_array NUM_POKEMON wPokedexOwned:: flag_array NUM_POKEMON - 1 ; discount MissingNo
wPokedexOwnedEnd:: wPokedexOwnedEnd::
wPokedexSeen:: flag_array NUM_POKEMON wPokedexSeen:: flag_array NUM_POKEMON - 1 ; discount MissingNo
wPokedexSeenEnd:: wPokedexSeenEnd::
ds 28 ;;;;;;; moved bag code lower down to make bigger bag space ds 28 ;;;;;;; moved bag code lower down to make bigger bag space

View file

@ -29,7 +29,7 @@ DirectorText:
ld b, wPokedexOwnedEnd - wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned
call CountSetBits call CountSetBits
ld a, [wNumSetBits] ld a, [wNumSetBits]
cp NUM_POKEMON - 1 ; discount Mew cp NUM_POKEMON - 1
jr nc, .completed_dex jr nc, .completed_dex
ld hl, .GameDesignerText ld hl, .GameDesignerText
jr .done jr .done