This commit is contained in:
Sanky 2013-05-07 14:23:10 +02:00
commit acdb00c5dc
215 changed files with 28769 additions and 2363 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# No monkey business with line endings
* -text

6
.gitignore vendored
View File

@ -26,8 +26,10 @@ extras/*.json
# for any of the poor souls with save game files in their working directory
baserom.sgm
baserom.sav
pokered.sgm
pokered.sav
baserom.rtc
pokecrystal.sgm
pokecrystal.sav
pokecrystal.rtc
# for vim configuration
# url: http://www.vim.org/scripts/script.php?script_id=441

View File

@ -1,4 +1,21 @@
# Linux
# Getting Started
Compiling requires a certain Pokemon Crystal ROM:
```
Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc
md5: 9f2922b235a5eeb78d65594e82ef5dde
```
Save it as `baserom.gbc` in the repository.
Feel free to ask us on nucleus.kafuka.org #skeetendo if something goes wrong (remember to tell where)!
Don't know how to use IRC? Try [mibbit](http://chat.mibbit.com/?server=nucleus.kafuka.org&channel=#skeetendo).
## Linux
```bash
sudo apt-get install make gcc bison git python python-setuptools
@ -24,153 +41,38 @@ cd pokecrystal
# install python requirements
pip install -r requirements.txt
```
To compile the ROM from ASM source:
```
make clean && make
```
# Windows
Follow these instructions to install `pokecrystal` on Microsoft Windows. Once
installed, you can run `make` to compile `main.asm` into a ROM.
## Installing cygwin
Cygwin provides a virtual linux environment on Windows systems. Just get
`setup.exe`: http://cygwin.com/install.html
During the install:
1. Keep the defaults.
2. It shouldn't matter which mirror you choose, but http://mirrors.kernel.org
seems to work.
3. Select the packages listed below.
You'll be presented with a package selection screen. Select the following
packages (hint: there's a search box).
1. `python` (installed by default)
2. `gcc` and `gcc-core` (under devel)
3. `byacc` (under devel)
4. `make` (under devel)
5. `wget` (under web)
6. `git` (under devel)
7. `mercurial` (optional, if you wish to work with pokered as well)
Let cygwin finish the install. Might take a sec while all packages are
downloading.
## Installing other requirements
Launch cygwin (bash). Maybe you know your way around the linux terminal. If not, a
crash course:
```bash
# list files in current directory
ls
# show current directory
pwd
# change directory
cd /away/we/go
```
The next step is building `rgbds`, the GB assembler. Type:
```bash
# download rgbds source code
git clone git://github.com/bentley/rgbds.git
# compile rgbds
cd rgbds
YACC=byacc make
# make rgbds accessible for all time
export PATH=$PATH:`pwd`
echo "export PATH=$PATH:`pwd`" >> ~/.bashrc
# check if rgbasm is installed now
which rgbasm
```
If that fails (it shouldn't), you can download binaries like so:
```bash
# download rgbds binaries
wget http://diyhpl.us/~bryan/irc/pokered/rgbds/rgbds.zip --output-document=rgbds.zip
# unzip
unzip rgbds.zip
# make rgbds accessible for all time
export PATH=$PATH:`pwd`/rgbds
echo "export PATH=$PATH:`pwd`/rgbds" >> ~/.bashrc
# clean up that zip file
rm rgbds.zip
```
The next step is to install `unittest2`, unless you installed python2.7
earlier:
```bash
cd ~
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
easy_install unittest2
```
Now you should be able to build `pokecrystal` for the first time:
```bash
cd ~
git clone git://github.com/kanzure/pokecrystal.git
cd pokecrystal
```
The final requirement is downloading a certain Pokemon Crystal ROM:
```
Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc
md5: 9f2922b235a5eeb78d65594e82ef5dde
```
Save it as `C:\cygwin\home\(your username)\pokecrystal\baserom.gbc`. You can
check the md5 of a file by typing `md5sum baserom.gbc`.
To compile the ROM from ASM source, type:
```bash
make
```
That will take between 3 and 15 seconds, depending on your computer. If you see
`cmp baserom.gbc pokecrystal.gbc` as the last line, the build was successful!
Rejoice!
`cmp baserom.gbc pokecrystal.gbc` as the last line, the build was successful! Rejoice!
Now you may try messing around with `main.asm`, or just do whatever you wanted
to.
To build again, you should use the following command:
## Windows
```bash
make clean && make
```
Set up [GitHub for Windows](http://windows.github.com/) and clone this repository.
Feel free to ask us on nucleus.kafuka.org #skeetendo if something goes wrong
(remember to tell where)! Don't know how to use IRC? Try
[mibbit](http://mibbit.com/) or something.
If you haven't already, get [Python 2.7](http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi) ([64-bit](http://www.python.org/ftp/python/2.7.3/python-2.7.3.amd64.msi)).
# Contributing changes
Extract the following files from the [RGBDS](https://github.com/downloads/bentley/rgbds/rgbds-0.0.1.zip) package into the repository:
`rgbasm.exe`
`rgbds.exe`
`rgbfix.exe`
`rgblink.exe`
## Setting up a public git repo
Install [make](http://gnuwin32.sourceforge.net/downlinks/make.php) for Windows.
To compile the ROM from ASM source, run `pokecrystal.bat`.
That will take between 3 and 15 seconds, depending on your computer. If you see
`FC: no differences encountered`, the build was successful! Rejoice!
Now you may try messing around with `main.asm`, or just do whatever you wanted to.
# Contributions are welcome!
For those uninitiated with git-based collaboration, and who do not want to setup a server to host git repositories, use GitHub. Register on GitHub and follow [this tutorial to setup ssh keys](https://help.github.com/articles/generating-ssh-keys). Then go to [the pokecrystal repo](https://github.com/kanzure/pokecrystal) and click the giant "fork" button. This will bring you to a page with some instructions regarding `git remote` (follow these steps in your pokecrystal folder).

View File

@ -1,6 +1,7 @@
.SUFFIXES: .asm .tx .o .gbc .png .2bpp .lz
TEXTFILES = text/sweethoney.tx \
TEXTFILES = \
text/sweethoney.tx \
text/phone/bill.tx \
text/phone/elm.tx \
text/phone/mom.tx \
@ -10,7 +11,8 @@ TEXTFILES = text/sweethoney.tx \
text/common_3.tx \
main.tx
VERTGFX = gfx/pics/%.png \
VERTGFX = \
gfx/pics/%.png \
gfx/trainers/%.png
HORIZGFX = $(filter-out gfx/%.png, $(VERTGFX))
@ -24,10 +26,16 @@ HORIZGFX = $(filter-out gfx/%.png, $(VERTGFX))
# so take care to reorganize accordingly
all: pokecrystal.gbc
cmp baserom.gbc $<
win: pokecrystal.gbc
fc baserom.gbc $<
clean:
rm -f main.tx pokecrystal.o pokecrystal.gbc ${TEXTFILES}
winclean:
del main.tx pokecrystal.o pokecrystal.gbc .\text\sweethoney.tx .\text\phone\bill.tx .\text\phone\elm.tx .\text\phone\mom.tx .\text\phone\trainers1.tx .\text\common.tx .\text\common_2.tx .\text\common_3.tx
pokecrystal.o: pokecrystal.asm constants.asm wram.asm ${TEXTFILES}
rgbasm -o pokecrystal.o pokecrystal.asm
@ -38,21 +46,20 @@ pokecrystal.o: pokecrystal.asm constants.asm wram.asm ${TEXTFILES}
pokecrystal.gbc: pokecrystal.o
rgblink -o $@ $<
rgbfix -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@
cmp baserom.gbc $@
lzs: ${VERTGFX} ${HORIZGFX}
pngs:
cd extras; python gfx.py mass-decompress; python gfx.py dump-pngs
cd extras && python gfx.py mass-decompress && python gfx.py dump-pngs
front.png: tiles.png
cd extras; python gfx.py png-to-lz --front $@ $(OBJECT_DIRECTORY)/tiles.2bpp
cd extras && python gfx.py png-to-lz --front $@ $(OBJECT_DIRECTORY)/tiles.2bpp
tiles.png:
cd extras; python gfx.py png-to-2bpp $@
.png: ${VERTGFX}
cd extras; python gfx.py png-to-lz --vert $@
.png: ${HORIZGFX}
cd extras; python gfx.py png-to-lz $@
cd extras && python gfx.py png-to-2bpp $@
.png:: ${VERTGFX}
cd extras && python gfx.py png-to-lz --vert $@
.png:: ${HORIZGFX}
cd extras && python gfx.py png-to-lz $@

View File

@ -4,65 +4,30 @@ This is a hand-crafted disassembly of Pokémon Crystal.
The source code in this project successfully converts back into a ROM image. All source code is meticulously commented.
## Base ROM
The following ROM is required for compiling:
```
Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc
md5: 9f2922b235a5eeb78d65594e82ef5dde
```
Eventually this will not be necessary.
## Installing
Simple.
``` bash
sudo apt-get install make gcc bison git python python-setuptools
# unittest2 is required if using python2.6
sudo easy_install unittest2
sudo easy_install pip
# download rgbds source code
git clone git://github.com/bentley/rgbds.git
# compile rgbds
cd rgbds
make
sudo make install
# check if rgbasm is installed now
which rgbasm
# download pokecrystal
git clone https://github.com/kanzure/pokecrystal.git
cd pokecrystal
pip install -r requirements.txt
make clean && make
```
Also, there are [Windows installation instructions](https://github.com/kanzure/pokecrystal/blob/master/INSTALL.md).
## Assembling
* To assemble, first install RGBDS and put it in your path. The version of RGBDS needed is [rgbds-linux](https://github.com/bentley/rgbds/).
* Next, copy the Pokémon ROM to this directory as "baserom.gbc".
* Then run "make" in your shell.
* This will output a file named "pokecrystal.gbc".
## See also
* disassembly of [Pokémon Red](http://bitbucket.org/iimarckus/pokered).
## Contributing
* Hang out with us on IRC, nucleus.kafuka.org #skeetendo ([or use mibbit](http://chat.mibbit.com/?server=nucleus.kafuka.org&channel=#skeetendo))
* Hang out with us on IRC:
`nucleus.kafuka.org #skeetendo`
(or use [mibbit](http://chat.mibbit.com/?server=nucleus.kafuka.org&channel=#skeetendo)).
* Are we missing something? Make a pull request! Contributions are welcome.
* Tackle some [issues](https://github.com/kanzure/pokecrystal/issues)!

View File

@ -1,212 +1,213 @@
; e927c
dbw $3c, $4b3f ; dex fanfare 50-79
dbw $3c, $4c2f ; item
dbw $3c, $4c89 ; caught mon
dbw $3c, $4941 ; pokeballs placed on table
dbw $3c, $4947 ; potion
dbw $3c, $494a ; full heal
dbw $3c, $494d ; menu
dbw $3c, $4950 ; read text
dbw $3c, $4950 ; read text
dbw $3c, $4bd5 ; dex fanfare 20-49
dbw $3c, $4cea ; dex fanfare 80-109
dbw $3c, $4953 ; poison
dbw $3c, $4956 ; got safari balls
dbw $3c, $4959 ; boot pc
dbw $3c, $495c ; shut down pc
dbw $3c, $495f ; choose pc option
dbw $3c, $4962 ; bide / escape rope
dbw $3c, $4965 ; push button
dbw $3c, $4968 ; second part of itemfinder
dbw $3c, $496b ; warp to
dbw $3c, $496e ; warp from
dbw $3c, $4971 ; change dex mode
dbw $3c, $4974 ; jump over ledge
dbw $3c, $4977 ; grass rustle
dbw $3c, $497a ; fly
dbw $3c, $497d ; wrong
dbw $3c, $4983 ; squeak
dbw $3c, $4986 ; strength
dbw $3c, $4989 ; boat
dbw $3c, $498f ; wall open
dbw $3c, $4992 ; place puzzle piece down
dbw $3c, $4995 ; enter door
dbw $3c, $4998 ; switch pokemon
dbw $3c, $499e ; score tally? ; sounds like something out of game corner
dbw $3c, $49a4 ; buy/sell
dbw $3c, $49ad ; exit building
dbw $3c, $49aa ; bump
dbw $3c, $49b0 ; save
dbw $3c, $49f8 ; pokeflute
dbw $3c, $49fb ; elevator end
dbw $3c, $49fe ; throw ball
dbw $3c, $4a04 ; smokescreen
dbw $3c, $4a0a ; ; something skidding on water?
dbw $3c, $4a10 ; run
dbw $3c, $4a13 ; slot machine start
dbw $3c, $4dbe ; fanfare
dbw $3c, $4a3d ; peck
dbw $3c, $4a40 ; kinesis
dbw $3c, $4a43 ; lick
dbw $3c, $4a46 ; pound
dbw $3c, $4a49 ; move puzzle piece
dbw $3c, $4a4c ; comet punch
dbw $3c, $4a4f ; mega punch
dbw $3c, $4a52 ; scratch
dbw $3c, $4a55 ; vicegrip
dbw $3c, $4a58 ; razor wind
dbw $3c, $4a5b ; cut
dbw $3c, $4a5e ; wing attack
dbw $3c, $4a61 ; whirlwind
dbw $3c, $4a64 ; bind
dbw $3c, $4a67 ; vine whip
dbw $3c, $4a6a ; double kick
dbw $3c, $4a6d ; mega kick
dbw $3c, $4a70 ; headbutt
dbw $3c, $4a73 ; horn attack
dbw $3c, $4a76 ; tackle
dbw $3c, $4a79 ; poison sting
dbw $3c, $4a7c ; poisonpowder
dbw $3c, $4a7f ; doubleslap
dbw $3c, $4a82 ; bite
dbw $3c, $4a88 ; jump kick
dbw $3c, $4a8b ; stomp
dbw $3c, $4a8e ; tail whip
dbw $3c, $4a91 ; karate chop
dbw $3c, $4a94 ; submission
dbw $3c, $4a97 ; water gun
dbw $3c, $4a9d ; swords dance
dbw $3c, $4aa0 ; thunder
dbw $3c, $4aa3 ; supersonic
dbw $3c, $4aac ; leer
dbw $3c, $4ab5 ; ember
dbw $3c, $4abb ; bubblebeam
dbw $3c, $4ac4 ; hydro pump
dbw $3c, $4aca ; surf
dbw $3c, $4ad3 ; psybeam
dbw $3c, $4adc ; leech seed
dbw $3c, $4ae5 ; thundershock
dbw $3c, $4aee ; psychic
dbw $3c, $4af7 ; screech
dbw $3c, $4afd ; bone club
dbw $3c, $4b03 ; sharpen
dbw $3c, $4b09 ; egg bomb
dbw $3c, $4b12 ; sing
dbw $3c, $4b18 ; sky attack
dbw $3c, $4b21 ; hyper beam
dbw $3c, $4b24 ; shine
dbw $3c, $4a1c ;
dbw $3c, $4a1f ; $60
dbw $3c, $4a22 ; tap
dbw $3c, $4a25 ; tap
dbw $3c, $4a28 ; burn ; that is not a burn
dbw $3c, $4a2b ; title screen sound
dbw $3c, $4a2e ; similar to $60
dbw $3c, $4a31 ; get coin from slots
dbw $3c, $4a34 ; pay day
dbw $3c, $4a3a ; metronome
dbw $3c, $4a19 ; call
dbw $3c, $4b2d ; hang up
dbw $3c, $4b30 ; no signal
dbw $3c, $4b2a ; sandstorm
dbw $3c, $4b33 ; elevator
dbw $3c, $52b4 ; protect
dbw $3c, $52f6 ; sketch
dbw $3c, $5314 ; rain dance
dbw $3c, $5334 ; aeroblast
dbw $3c, $5352 ; spark
dbw $3c, $5360 ; curse
dbw $3c, $537d ; rage
dbw $3c, $539c ; thief
dbw $3c, $53b0 ; thief
dbw $3c, $53ca ; spider web
dbw $3c, $53f7 ; mind reader
dbw $3c, $541d ; nighmare
dbw $3c, $5453 ; snore
dbw $3c, $5469 ; sweet kiss
dbw $3c, $547f ; sweet kiss
dbw $3c, $54a5 ; belly drum
dbw $3c, $54ba ;
dbw $3c, $54d0 ; sludge bomb
dbw $3c, $54f5 ; foresight
dbw $3c, $5515 ; spite
dbw $3c, $553a ; outrage
dbw $3c, $554d ; perish song
dbw $3c, $5570 ; giga drain
dbw $3c, $55b4 ; attract
dbw $3c, $55cc ; kinesis
dbw $3c, $55de ; zap cannon
dbw $3c, $55ef ; mean look
dbw $3c, $5621 ; heal bell
dbw $3c, $5637 ; return
dbw $3c, $5653 ; exp bar
dbw $3c, $567f ; milk drink
dbw $3c, $569f ; present
dbw $3c, $56b9 ; morning sun
dbw $3c, $4b3f ; level up
dbw $3c, $4b86 ; key item
dbw $3c, $4d56 ; fanfare
dbw $3c, $4dc7 ; register phone #
dbw $3c, $4e26 ; 3rd place
dbw $3c, $4e66 ; get egg from daycare man
dbw $3c, $4e66 ; get egg from daycare lady
dbw $3c, $4edc ; move deleted
dbw $3c, $4f5e ; 2nd place
dbw $3c, $4fe2 ; 1st place
dbw $3c, $5069 ; choose a card
dbw $3c, $5104 ; get tm
dbw $3c, $517d ; get badge
dbw $3c, $5236 ; quit slots
dbw $3c, $5775 ; nothing
dbw $3c, $5878 ; dex fanfare <20
dbw $3c, $58d2 ; dex fanfare 140-169
dbw $3c, $5951 ; dex fanfare 170-199
dbw $3c, $59d6 ; dex fanfare 200-229
dbw $3c, $5a66 ; dex fanfare >=230
dbw $3c, $5784 ; evolved
dbw $3c, $579b ; master ball
dbw $3c, $57c0 ; egg crack
dbw $3c, $57d9 ; charizard fireball (gs intro)
dbw $3c, $57ff ; pokemon appears (gs intro)
dbw $3c, $5818 ; flash
dbw $3c, $5846 ; game freak logo
dbw $3c, $5b33 ; not very effective
dbw $3c, $5b40 ; damage
dbw $3c, $5b50 ; super effective
dbw $3c, $5b63 ; ball bounce
dbw $3c, $56df ; moonlight
dbw $3c, $56fd ; encore
dbw $3c, $5721 ; beat up
dbw $3c, $574c ; batom pass
dbw $3c, $4944 ; ball wiggle
dbw $3c, $5734 ; sweet scent
dbw $3c, $5bb3 ; sweet scent
dbw $3c, $5bec ; hit end of exp bar
dbw $3c, $5c10 ; give trademon
dbw $3c, $5c3e ; get trademon
dbw $3c, $5c6c ; train arrived
dbw $3c, $675b ; stop slot
dbw $3c, $5cb4 ; 2 boops
dbw $3c, $6769 ; glass ting
dbw $3c, $6773 ; 2 glass ting
dbw $3c, $4b3f ; Dex Fanfare 50-79
dbw $3c, $4c2f ; Item
dbw $3c, $4c89 ; Caught Mon
dbw $3c, $4941 ; Pokeballs Placed On Table
dbw $3c, $4947 ; Potion
dbw $3c, $494a ; Full Heal
dbw $3c, $494d ; Menu
dbw $3c, $4950 ; Read Text
dbw $3c, $4950 ; Read Text 2
dbw $3c, $4bd5 ; Dex Fanfare 20-49
dbw $3c, $4cea ; Dex Fanfare 80-109
dbw $3c, $4953 ; Poison
dbw $3c, $4956 ; Got Safari Balls
dbw $3c, $4959 ; Boot Pc
dbw $3c, $495c ; Shut Down Pc
dbw $3c, $495f ; Choose Pc Option
dbw $3c, $4962 ; Escape Rope
dbw $3c, $4965 ; Push Button
dbw $3c, $4968 ; Second Part Of Itemfinder
dbw $3c, $496b ; Warp To
dbw $3c, $496e ; Warp From
dbw $3c, $4971 ; Change Dex Mode
dbw $3c, $4974 ; Jump Over Ledge
dbw $3c, $4977 ; Grass Rustle
dbw $3c, $497a ; Fly
dbw $3c, $497d ; Wrong
dbw $3c, $4983 ; Squeak
dbw $3c, $4986 ; Strength
dbw $3c, $4989 ; Boat
dbw $3c, $498f ; Wall Open
dbw $3c, $4992 ; Place Puzzle Piece Down
dbw $3c, $4995 ; Enter Door
dbw $3c, $4998 ; Switch Pokemon
dbw $3c, $499e ; Tally
dbw $3c, $49a4 ; Transaction
dbw $3c, $49ad ; Exit Building
dbw $3c, $49aa ; Bump
dbw $3c, $49b0 ; Save
dbw $3c, $49f8 ; Pokeflute
dbw $3c, $49fb ; Elevator End
dbw $3c, $49fe ; Throw Ball
dbw $3c, $4a04 ; Ball Poof
dbw $3c, $4a0a ; Unknown 3A
dbw $3c, $4a10 ; Run
dbw $3c, $4a13 ; Slot Machine Start
dbw $3c, $4dbe ; Fanfare
dbw $3c, $4a3d ; Peck
dbw $3c, $4a40 ; Kinesis
dbw $3c, $4a43 ; Lick
dbw $3c, $4a46 ; Pound
dbw $3c, $4a49 ; Move Puzzle Piece
dbw $3c, $4a4c ; Comet Punch
dbw $3c, $4a4f ; Mega Punch
dbw $3c, $4a52 ; Scratch
dbw $3c, $4a55 ; Vicegrip
dbw $3c, $4a58 ; Razor Wind
dbw $3c, $4a5b ; Cut
dbw $3c, $4a5e ; Wing Attack
dbw $3c, $4a61 ; Whirlwind
dbw $3c, $4a64 ; Bind
dbw $3c, $4a67 ; Vine Whip
dbw $3c, $4a6a ; Double Kick
dbw $3c, $4a6d ; Mega Kick
dbw $3c, $4a70 ; Headbutt
dbw $3c, $4a73 ; Horn Attack
dbw $3c, $4a76 ; Tackle
dbw $3c, $4a79 ; Poison Sting
dbw $3c, $4a7c ; Powder
dbw $3c, $4a7f ; Doubleslap
dbw $3c, $4a82 ; Bite
dbw $3c, $4a88 ; Jump Kick
dbw $3c, $4a8b ; Stomp
dbw $3c, $4a8e ; Tail Whip
dbw $3c, $4a91 ; Karate Chop
dbw $3c, $4a94 ; Submission
dbw $3c, $4a97 ; Water Gun
dbw $3c, $4a9d ; Swords Dance
dbw $3c, $4aa0 ; Thunder
dbw $3c, $4aa3 ; Supersonic
dbw $3c, $4aac ; Leer
dbw $3c, $4ab5 ; Ember
dbw $3c, $4abb ; Bubblebeam
dbw $3c, $4ac4 ; Hydro Pump
dbw $3c, $4aca ; Surf
dbw $3c, $4ad3 ; Psybeam
dbw $3c, $4adc ; Charge
dbw $3c, $4ae5 ; Thundershock
dbw $3c, $4aee ; Psychic
dbw $3c, $4af7 ; Screech
dbw $3c, $4afd ; Bone Club
dbw $3c, $4b03 ; Sharpen
dbw $3c, $4b09 ; Egg Bomb
dbw $3c, $4b12 ; Sing
dbw $3c, $4b18 ; Hyper Beam
dbw $3c, $4b21 ; Shine
dbw $3c, $4b24 ; Unknown 5F
dbw $3c, $4a1c ; Unknown 60
dbw $3c, $4a1f ; Unknown 61
dbw $3c, $4a22 ; Unknown 62
dbw $3c, $4a25 ; Unknown 63
dbw $3c, $4a28 ; Burn
dbw $3c, $4a2b ; Title Screen Entrance
dbw $3c, $4a2e ; Unknown 66
dbw $3c, $4a31 ; Get Coin From Slots
dbw $3c, $4a34 ; Pay Day
dbw $3c, $4a3a ; Metronome
dbw $3c, $4a19 ; Call
dbw $3c, $4b2d ; Hang Up
dbw $3c, $4b30 ; No Signal
dbw $3c, $4b2a ; Sandstorm
dbw $3c, $4b33 ; Elevator
dbw $3c, $52b4 ; Protect
dbw $3c, $52f6 ; Sketch
dbw $3c, $5314 ; Rain Dance
dbw $3c, $5334 ; Aeroblast
dbw $3c, $5352 ; Spark
dbw $3c, $5360 ; Curse
dbw $3c, $537d ; Rage
dbw $3c, $539c ; Thief
dbw $3c, $53b0 ; Thief 2
dbw $3c, $53ca ; Spider Web
dbw $3c, $53f7 ; Mind Reader
dbw $3c, $541d ; Nightmare
dbw $3c, $5453 ; Snore
dbw $3c, $5469 ; Sweet Kiss
dbw $3c, $547f ; Sweet Kiss 2
dbw $3c, $54a5 ; Belly Drum
dbw $3c, $54ba ; Unknown 7F
dbw $3c, $54d0 ; Sludge Bomb
dbw $3c, $54f5 ; Foresight
dbw $3c, $5515 ; Spite
dbw $3c, $553a ; Outrage
dbw $3c, $554d ; Perish Song
dbw $3c, $5570 ; Giga Drain
dbw $3c, $55b4 ; Attract
dbw $3c, $55cc ; Kinesis 2
dbw $3c, $55de ; Zap Cannon
dbw $3c, $55ef ; Mean Look
dbw $3c, $5621 ; Heal Bell
dbw $3c, $5637 ; Return
dbw $3c, $5653 ; Exp Bar
dbw $3c, $567f ; Milk Drink
dbw $3c, $569f ; Present
dbw $3c, $56b9 ; Morning Sun
dbw $3c, $4b3f ; Level Up
dbw $3c, $4b86 ; Key Item
dbw $3c, $4d56 ; Fanfare 2
dbw $3c, $4dc7 ; Register Phone #
dbw $3c, $4e26 ; 3Rd Place
dbw $3c, $4e66 ; Get Egg From Daycare Man
dbw $3c, $4e66 ; Get Egg From Daycare Lady
dbw $3c, $4edc ; Move Deleted
dbw $3c, $4f5e ; 2Nd Place
dbw $3c, $4fe2 ; 1St Place
dbw $3c, $5069 ; Choose A Card
dbw $3c, $5104 ; Get Tm
dbw $3c, $517d ; Get Badge
dbw $3c, $5236 ; Quit Slots
dbw $3c, $5775 ; Egg Crack
dbw $3c, $5878 ; Dex Fanfare < 20
dbw $3c, $58d2 ; Dex Fanfare 140-169
dbw $3c, $5951 ; Dex Fanfare 170-199
dbw $3c, $59d6 ; Dex Fanfare 200-229
dbw $3c, $5a66 ; Dex Fanfare 230 +
dbw $3c, $5784 ; Evolved
dbw $3c, $579b ; Master Ball
dbw $3c, $57c0 ; Egg Hatch
dbw $3c, $57d9 ; Gs Intro Charizard Fireball
dbw $3c, $57ff ; Gs Intro Pokemon Appears
dbw $3c, $5818 ; Flash
dbw $3c, $5846 ; Game Freak Logo Gs
dbw $3c, $5b33 ; Not Very Effective
dbw $3c, $5b40 ; Damage
dbw $3c, $5b50 ; Super Effective
dbw $3c, $5b63 ; Ball Bounce
dbw $3c, $56df ; Moonlight
dbw $3c, $56fd ; Encore
dbw $3c, $5721 ; Beat Up
dbw $3c, $574c ; Baton Pass
dbw $3c, $4944 ; Ball Wiggle
dbw $3c, $5734 ; Sweet Scent
dbw $3c, $5bb3 ; Sweet Scent 2
dbw $3c, $5bec ; Hit End Of Exp Bar
dbw $3c, $5c10 ; Give Trademon
dbw $3c, $5c3e ; Get Trademon
dbw $3c, $5c6c ; Train Arrived
dbw $3c, $675b ; Stop Slot
dbw $3c, $5cb4 ; 2 Boops
dbw $3c, $6769 ; Glass Ting
dbw $3c, $6773 ; Glass Ting 2
; Crystal adds the following SFX:
dbw $5e, $582d ; intro unown 1
dbw $5e, $583e ; intro unown 2
dbw $5e, $584f ; intro unown 3
dbw $5e, $586e ; boop
dbw $5e, $5888 ; game freak ditto transform
dbw $5e, $58a0 ; intro suicune 1
dbw $5e, $58aa ; intro pichu
dbw $5e, $58c0 ; intro suicune 2
dbw $5e, $58f4 ; intro suicune 3
dbw $5e, $5907 ; game freak ditto bounce
dbw $5e, $591d ; intro suicune 4
dbw $5e, $5942 ; game freak presents
dbw $5e, $5961 ; tingle
dbw $3c, $5cd0 ; sand?
dbw $5e, $597c ; two pc beeps
dbw $5e, $5992 ; 4 note ditty
dbw $5e, $59cb ; twinkle
dbw $5e, $582d ; Intro Unown 1
dbw $5e, $583e ; Intro Unown 2
dbw $5e, $584f ; Intro Unown 3
dbw $5e, $586e ; Ditto Pop Up
dbw $5e, $5888 ; Ditto Transform
dbw $5e, $58a0 ; Intro Suicune 1
dbw $5e, $58aa ; Intro Pichu
dbw $5e, $58c0 ; Intro Suicune 2
dbw $5e, $58f4 ; Intro Suicune 3
dbw $5e, $5907 ; Ditto Bounce
dbw $5e, $591d ; Intro Suicune 4
dbw $5e, $5942 ; Game Freak Presents
dbw $5e, $5961 ; Tingle
dbw $3c, $5cd0 ; Unknown Cb
dbw $5e, $597c ; Two Pc Beeps
dbw $5e, $5992 ; 4 Note Ditty
dbw $5e, $59cb ; Twinkle
; e94e9

3362
battle/ai/scoring.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,177 @@
; 3fd28
dw BattleCommand01 ; 34084
dw BattleCommand02 ; 343db
dw BattleCommand03 ; 34541
dw BattleCommand04 ; 34555
dw BattleCommand05 ; 34631
dw BattleCommand06 ; 352dc
dw BattleCommand07 ; 346d2
dw BattleCommand08 ; 34cfd
dw BattleCommand09 ; 34d32
dw BattleCommand0a ; 34eee
dw BattleCommand0b ; 34f60
dw BattleCommand0c ; 35004
dw BattleCommand0d ; 35023
dw BattleCommand0e ; 3505e
dw BattleCommand0f ; 35175
dw BattleCommand10 ; 351ad
dw BattleCommand11 ; 351c0
dw BattleCommand12 ; 35250
dw BattleCommand13 ; 35eee
dw BattleCommand14 ; 35e5c
dw BattleCommand15 ; 35fff
dw BattleCommand16 ; 36008
dw BattleCommand17 ; 3608c
dw BattleCommand18 ; 36102
dw BattleCommand19 ; 36165
dw BattleCommand1a ; 37380
dw BattleCommand1b ; 373c9
dw BattleCommand1c ; 361e4
dw BattleCommand1d ; 362e3
dw BattleCommand1e ; 3705c
dw BattleCommand1f ; 3707f
dw BattleCommand20 ; 3710e
dw BattleCommand21 ; 36671
dw BattleCommand22 ; 366e5
dw BattleCommand23 ; 3680f
dw BattleCommand24 ; 369b6
dw BattleCommand25 ; 36aa0
dw BattleCommand26 ; 36af3
dw BattleCommand27 ; 36cb2
dw BattleCommand28 ; 36c7e
dw BattleCommand29 ; 36c98
dw BattleCommand2a ; 36d3b
dw BattleCommand2b ; 36d1d
dw BattleCommand2c ; 3713e
dw BattleCommand2d ; 371cd
dw BattleCommand2e ; 372fc
dw BattleCommand2f ; 35f2c
dw BattleCommand30 ; 36dc7
dw BattleCommand31 ; 36e7c
dw BattleCommand32 ; 36f0b
dw BattleCommand33 ; 36f46
dw BattleCommand34 ; 37418
dw BattleCommand35 ; 36f9d
dw BattleCommand36 ; 36fe1
dw BattleCommand37 ; 36fed
dw BattleCommand38 ; 37e85
dw BattleCommand39 ; 36b4d
dw BattleCommand3a ; 36b3a
dw BattleCommand3b ; 36c2d
dw BattleCommand3c ; 36c2c
dw BattleCommand3d ; 36751
dw BattleCommand3e ; 3671a
dw BattleCommand3f ; 35726
dw BattleCommand40 ; 35813
dw BattleCommand41 ; 35864
dw BattleCommand42 ; 35926
dw BattleCommand43 ; 359d0
dw BattleCommand44 ; 359e6
dw BattleCommand45 ; 35a53
dw BattleCommand46 ; 35a74
dw BattleCommand47 ; 35b16
dw BattleCommand48 ; 35b33
dw BattleCommand49 ; 35bff
dw BattleCommand4a ; 35c0f
dw BattleCommand4b ; 35c94
dw BattleCommand4c ; 35cc9
dw BattleCommand4d ; 36ac9
dw BattleCommand4e ; 346b2
dw BattleCommand4f ; 346cd
dw BattleCommand50 ; 37492
dw BattleCommand51 ; 37517
dw BattleCommand52 ; 37536
dw BattleCommand53 ; 37563
dw BattleCommand54 ; 37588
dw BattleCommand55 ; 37618
dw BattleCommand56 ; 37683
dw BattleCommand57 ; 376a0
dw BattleCommand58 ; 376c2
dw BattleCommand59 ; 376f8
dw BattleCommand5a ; 3766f
dw BattleCommand5b ; 37718
dw BattleCommand5c ; 37734
dw BattleCommand5d ; 37791
dw BattleCommand5e ; 37792
dw BattleCommand5f ; 377ce
dw BattleCommand60 ; 3784b
dw BattleCommand61 ; 37874
dw BattleCommand62 ; 35612
dw BattleCommand63 ; 3790e
dw BattleCommand64 ; 37939
dw BattleCommand65 ; 37972
dw BattleCommand66 ; 37991
dw BattleCommand67 ; 379c9
dw BattleCommand68 ; 37b1d
dw BattleCommand69 ; 37b39
dw BattleCommand6a ; 37b74
dw BattleCommand6b ; 37b78
dw BattleCommand6c ; 37b7c
dw BattleCommand6d ; 37be8
dw BattleCommand6e ; 37bf4
dw BattleCommand6f ; 37c07
dw BattleCommand70 ; 361ac
dw BattleCommand71 ; 361b0
dw BattleCommand72 ; 361b4
dw BattleCommand73 ; 361b8
dw BattleCommand74 ; 361bc
dw BattleCommand75 ; 361c0
dw BattleCommand76 ; 361c4
dw BattleCommand77 ; 361c8
dw BattleCommand78 ; 361cc
dw BattleCommand79 ; 361d0
dw BattleCommand7a ; 361d4
dw BattleCommand7b ; 361d8
dw BattleCommand7c ; 361dc
dw BattleCommand7d ; 361e0
dw BattleCommand7e ; 362ad
dw BattleCommand7f ; 362b1
dw BattleCommand80 ; 362b5
dw BattleCommand81 ; 362b9
dw BattleCommand82 ; 362bd
dw BattleCommand83 ; 362c1
dw BattleCommand84 ; 362c5
dw BattleCommand85 ; 362c9
dw BattleCommand86 ; 362cd
dw BattleCommand87 ; 362d1
dw BattleCommand88 ; 362d5
dw BattleCommand89 ; 362d9
dw BattleCommand8a ; 362dd
dw BattleCommand8b ; 362e1
dw BattleCommand8c ; 363b8
dw BattleCommand8d ; 363e9
dw BattleCommand8e ; 3644c
dw BattleCommand8f ; 3646a
dw BattleCommand90 ; 34ecc
dw BattleCommand91 ; 34fdb
dw BattleCommand92 ; 34fd1
dw BattleCommand93 ; 34ffd
dw BattleCommand94 ; 36a82
dw BattleCommand95 ; 37c1a
dw BattleCommand96 ; 37c55
dw BattleCommand97 ; 36f1d
dw BattleCommand98 ; 36f25
dw BattleCommand99 ; 36f2f
dw BattleCommand9a ; 37c95
dw BattleCommand9b ; 37d0d
dw BattleCommand9c ; 37d34
dw BattleCommand9d ; 37ce6
dw BattleCommand9e ; 37d02
dw BattleCommand9f ; 37d94
dw BattleCommanda0 ; 36778
dw BattleCommanda1 ; 35461
dw BattleCommanda2 ; 3527b
dw BattleCommanda3 ; 34833
dw BattleCommanda4 ; 36500
dw BattleCommanda5 ; 35165
dw BattleCommanda6 ; 365af
dw BattleCommanda7 ; 365c3
dw BattleCommanda8 ; 355b5
dw BattleCommanda9 ; 355d5
dw BattleCommandaa ; 37e80
dw BattleCommandab ; 34f57
dw BattleCommandac ; 3658f
dw BattleCommandad ; 351a5
dw BattleCommandae ; 35197
dw BattleCommandaf ; 365a7
; 3fe86

11209
battle/effect_commands.asm Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,158 @@
dw NormalHit
dw DoSleep
dw PoisonHit
dw LeechHit
dw BurnHit
dw FreezeHit
dw ParalyzeHit
dw Explosion
dw DreamEater
dw MirrorMove
dw AttackUp
dw DefenseUp
dw SpeedUp
dw Growth
dw SpecialDefenseUp
dw AccuracyUp
dw EvasionUp
dw NormalHit
dw Growl
dw DefenseDown
dw StringShot
dw SpecialAttackDown
dw SpecialDefenseDown
dw AccuracyDown
dw SweetScent
dw Haze
dw Bide
dw Rampage
dw Whirlwind
dw MultiHit
dw Conversion
dw FlinchHit
dw Heal
dw Toxic
dw PayDay
dw LightScreen
dw TriAttack
dw NormalHit
dw OHKOHit
dw RazorWind
dw SuperFang
dw StaticDamage
dw Bind
dw NormalHit
dw MultiHit
dw NormalHit
dw Mist
dw FocusEnergy
dw RecoilHit
dw DoConfuse
dw SwordsDance
dw DefenseUp2
dw Agility
dw SpecialAttackUp2
dw Amnesia
dw AccuracyUp2
dw EvasionUp2
dw Transform
dw Charm
dw Screech
dw SpeedDown2
dw SpecialAttackDown2
dw SpecialDefenseDown2
dw AccuracyDown2
dw EvasionDown2
dw Reflect
dw DoPoison
dw DoParalyze
dw AuroraBeam
dw DefenseDownHit
dw SpeedDownHit
dw SpecialAttackDownHit
dw SpecialDefenseDownHit
dw AccuracyDownHit
dw EvasionDownHit
dw SkyAttack
dw ConfuseHit
dw Twineedle
dw NormalHit
dw Substitute
dw HyperBeam
dw Rage
dw Mimic
dw Metronome
dw LeechSeed
dw Splash
dw Disable
dw StaticDamage
dw Psywave
dw Counter
dw Encore
dw PainSplit
dw Snore
dw Conversion2
dw LockOn
dw Sketch
dw DefrostOpponent
dw SleepTalk
dw DestinyBond
dw Reversal
dw Spite
dw FalseSwipe
dw HealBell
dw NormalHit
dw TripleKick
dw Thief
dw MeanLook
dw Nightmare
dw FlameWheel
dw Curse
dw NormalHit
dw Protect
dw Spikes
dw Foresight
dw PerishSong
dw Sandstorm
dw Endure
dw Rollout
dw Swagger
dw FuryCutter
dw Attract
dw Return
dw Present
dw Frustration
dw Safeguard
dw SacredFire
dw Magnitude
dw BatonPass
dw Pursuit
dw RapidSpin
dw NormalHit
dw NormalHit
dw MorningSun
dw Synthesis
dw Moonlight
dw HiddenPower
dw RainDance
dw SunnyDay
dw SteelWing
dw MetalClaw
dw Ancientpower
dw FakeOut
dw BellyDrum
dw PsychUp
dw MirrorCoat
dw SkullBash
dw Twister
dw Earthquake
dw FutureSight
dw Gust
dw Stomp
dw Solarbeam
dw Thunder
dw Teleport
dw BeatUp
dw Fly
dw DefenseCurl

View File

@ -1,257 +1,258 @@
; Characteristics of each move
; animation, effect, power, type, accuracy, PP, effect chance
Move0:
db POUND, $00, 40, NORMAL, $ff, 35, $00
Move1:
db KARATE_CHOP, $00, 50, FIGHTING, $ff, 25, $00
db DOUBLESLAP, $1d, 15, NORMAL, $d8, 10, $00
db COMET_PUNCH, $1d, 18, NORMAL, $d8, 15, $00
db MEGA_PUNCH, $00, 80, NORMAL, $d8, 20, $00
db PAY_DAY, $22, 40, NORMAL, $ff, 20, $00
db FIRE_PUNCH, $04, 75, FIRE, $ff, 15, $19
db ICE_PUNCH, $05, 75, ICE, $ff, 15, $19
db THUNDERPUNCH, $06, 75, ELECTRIC, $ff, 15, $19
db SCRATCH, $00, 40, NORMAL, $ff, 35, $00
db VICEGRIP, $00, 55, NORMAL, $ff, 30, $00
db GUILLOTINE, $26, 0, NORMAL, $4c, 5, $00
db RAZOR_WIND, $27, 80, NORMAL, $bf, 10, $00
db SWORDS_DANCE, $32, 0, NORMAL, $ff, 30, $00
db CUT, $00, 50, NORMAL, $f2, 30, $00
db GUST, $95, 40, FLYING, $ff, 35, $00
db WING_ATTACK, $00, 60, FLYING, $ff, 35, $00
db WHIRLWIND, $1c, 0, NORMAL, $ff, 20, $00
db FLY, $9b, 70, FLYING, $f2, 15, $00
db BIND, $2a, 15, NORMAL, $bf, 20, $00
db SLAM, $00, 80, NORMAL, $bf, 20, $00
db VINE_WHIP, $00, 35, GRASS, $ff, 10, $00
db STOMP, $96, 65, NORMAL, $ff, 20, $4c
db DOUBLE_KICK, $2c, 30, FIGHTING, $ff, 30, $00
db MEGA_KICK, $00, 120, NORMAL, $bf, 5, $00
db JUMP_KICK, $2d, 70, FIGHTING, $f2, 25, $00
db ROLLING_KICK, $1f, 60, FIGHTING, $d8, 15, $4c
db SAND_ATTACK, $17, 0, GROUND, $ff, 15, $00
db HEADBUTT, $1f, 70, NORMAL, $ff, 15, $4c
db HORN_ATTACK, $00, 65, NORMAL, $ff, 25, $00
db FURY_ATTACK, $1d, 15, NORMAL, $d8, 20, $00
db HORN_DRILL, $26, 1, NORMAL, $4c, 5, $00
db TACKLE, $00, 35, NORMAL, $f2, 35, $00
db BODY_SLAM, $06, 85, NORMAL, $ff, 15, $4c
db WRAP, $2a, 15, NORMAL, $d8, 20, $00
db TAKE_DOWN, $30, 90, NORMAL, $d8, 20, $00
db THRASH, $1b, 90, NORMAL, $ff, 20, $00
db DOUBLE_EDGE, $30, 120, NORMAL, $ff, 15, $00
db TAIL_WHIP, $13, 0, NORMAL, $ff, 30, $00
db POISON_STING, $02, 15, POISON, $ff, 35, $4c
db TWINEEDLE, $4d, 25, BUG, $ff, 20, $33
db PIN_MISSILE, $1d, 14, BUG, $d8, 20, $00
db LEER, $13, 0, NORMAL, $ff, 30, $00
db BITE, $1f, 60, DARK, $ff, 25, $4c
db GROWL, $12, 0, NORMAL, $ff, 40, $00
db ROAR, $1c, 0, NORMAL, $ff, 20, $00
db SING, $01, 0, NORMAL, $8c, 15, $00
db SUPERSONIC, $31, 0, NORMAL, $8c, 20, $00
db SONICBOOM, $29, 20, NORMAL, $e5, 20, $00
db DISABLE, $56, 0, NORMAL, $8c, 20, $00
db ACID, $45, 40, POISON, $ff, 30, $19
db EMBER, $04, 40, FIRE, $ff, 25, $19
db FLAMETHROWER, $04, 95, FIRE, $ff, 15, $19
db MIST, $2e, 0, ICE, $ff, 30, $00
db WATER_GUN, $00, 40, WATER, $ff, 25, $00
db HYDRO_PUMP, $00, 120, WATER, $cc, 5, $00
db SURF, $00, 95, WATER, $ff, 15, $00
db ICE_BEAM, $05, 95, ICE, $ff, 10, $19
db BLIZZARD, $05, 120, ICE, $b2, 5, $19
db PSYBEAM, $4c, 65, PSYCHIC, $ff, 20, $19
db BUBBLEBEAM, $46, 65, WATER, $ff, 20, $19
db AURORA_BEAM, $44, 65, ICE, $ff, 20, $19
db HYPER_BEAM, $50, 150, NORMAL, $e5, 5, $00
db PECK, $00, 35, FLYING, $ff, 35, $00
db DRILL_PECK, $00, 80, FLYING, $ff, 20, $00
db SUBMISSION, $30, 80, FIGHTING, $cc, 25, $00
db LOW_KICK, $1f, 50, FIGHTING, $e5, 20, $4c
db COUNTER, $59, 1, FIGHTING, $ff, 20, $00
db SEISMIC_TOSS, $57, 1, FIGHTING, $ff, 20, $00
db STRENGTH, $00, 80, NORMAL, $ff, 15, $00
db ABSORB, $03, 20, GRASS, $ff, 20, $00
db MEGA_DRAIN, $03, 40, GRASS, $ff, 10, $00
db LEECH_SEED, $54, 0, GRASS, $e5, 10, $00
db GROWTH, $0d, 0, NORMAL, $ff, 40, $00
db RAZOR_LEAF, $00, 55, GRASS, $f2, 25, $00
db SOLARBEAM, $97, 120, GRASS, $ff, 10, $00
db POISONPOWDER, $42, 0, POISON, $bf, 35, $00
db STUN_SPORE, $43, 0, GRASS, $bf, 30, $00
db SLEEP_POWDER, $01, 0, GRASS, $bf, 15, $00
db PETAL_DANCE, $1b, 70, GRASS, $ff, 20, $00
db STRING_SHOT, $14, 0, BUG, $f2, 40, $00
db DRAGON_RAGE, $29, 40, DRAGON, $ff, 10, $00
db FIRE_SPIN, $2a, 15, FIRE, $b2, 15, $00
db THUNDERSHOCK, $06, 40, ELECTRIC, $ff, 30, $19
db THUNDERBOLT, $06, 95, ELECTRIC, $ff, 15, $19
db THUNDER_WAVE, $43, 0, ELECTRIC, $ff, 20, $00
db THUNDER, $98, 120, ELECTRIC, $b2, 10, $4c
db ROCK_THROW, $00, 50, ROCK, $e5, 15, $00
db EARTHQUAKE, $93, 100, GROUND, $ff, 10, $00
db FISSURE, $26, 1, GROUND, $4c, 5, $00
db DIG, $9b, 60, GROUND, $ff, 10, $00
db TOXIC, $21, 0, POISON, $d8, 10, $00
db CONFUSION, $4c, 50, PSYCHIC, $ff, 25, $19
db PSYCHIC_M, $48, 90, PSYCHIC, $ff, 10, $19
db HYPNOSIS, $01, 0, PSYCHIC, $99, 20, $00
db MEDITATE, $0a, 0, PSYCHIC, $ff, 40, $00
db AGILITY, $34, 0, PSYCHIC, $ff, 30, $00
db QUICK_ATTACK, $67, 40, NORMAL, $ff, 30, $00
db RAGE, $51, 20, NORMAL, $ff, 20, $00
db TELEPORT, $99, 0, PSYCHIC, $ff, 20, $00
db NIGHT_SHADE, $57, 1, GHOST, $ff, 15, $00
db MIMIC, $52, 0, NORMAL, $ff, 10, $00
db SCREECH, $3b, 0, NORMAL, $d8, 40, $00
db DOUBLE_TEAM, $10, 0, NORMAL, $ff, 15, $00
db RECOVER, $20, 0, NORMAL, $ff, 20, $00
db HARDEN, $0b, 0, NORMAL, $ff, 30, $00
db MINIMIZE, $10, 0, NORMAL, $ff, 20, $00
db SMOKESCREEN, $17, 0, NORMAL, $ff, 20, $00
db CONFUSE_RAY, $31, 0, GHOST, $ff, 10, $00
db WITHDRAW, $0b, 0, WATER, $ff, 40, $00
db DEFENSE_CURL, $9c, 0, NORMAL, $ff, 40, $00
db BARRIER, $33, 0, PSYCHIC, $ff, 30, $00
db LIGHT_SCREEN, $23, 0, PSYCHIC, $ff, 30, $00
db HAZE, $19, 0, ICE, $ff, 30, $00
db REFLECT, $41, 0, PSYCHIC, $ff, 20, $00
db FOCUS_ENERGY, $2f, 0, NORMAL, $ff, 30, $00
db BIDE, $1a, 0, NORMAL, $ff, 10, $00
db METRONOME, $53, 0, NORMAL, $ff, 10, $00
db MIRROR_MOVE, $09, 0, FLYING, $ff, 20, $00
db SELFDESTRUCT, $07, 200, NORMAL, $ff, 5, $00
db EGG_BOMB, $00, 100, NORMAL, $bf, 10, $00
db LICK, $06, 20, GHOST, $ff, 30, $4c
db SMOG, $02, 20, POISON, $b2, 20, $66
db SLUDGE, $02, 65, POISON, $ff, 20, $4c
db BONE_CLUB, $1f, 65, GROUND, $d8, 20, $19
db FIRE_BLAST, $04, 120, FIRE, $d8, 5, $19
db WATERFALL, $00, 80, WATER, $ff, 15, $00
db CLAMP, $2a, 35, WATER, $bf, 10, $00
db SWIFT, $11, 60, NORMAL, $ff, 20, $00
db SKULL_BASH, $91, 100, NORMAL, $ff, 15, $00
db SPIKE_CANNON, $1d, 20, NORMAL, $ff, 15, $00
db CONSTRICT, $46, 10, NORMAL, $ff, 35, $19
db AMNESIA, $36, 0, PSYCHIC, $ff, 20, $00
db KINESIS, $17, 0, PSYCHIC, $cc, 15, $00
db SOFTBOILED, $20, 0, NORMAL, $ff, 10, $00
db HI_JUMP_KICK, $2d, 85, FIGHTING, $e5, 20, $00
db GLARE, $43, 0, NORMAL, $bf, 30, $00
db DREAM_EATER, $08, 100, PSYCHIC, $ff, 15, $00
db POISON_GAS, $42, 0, POISON, $8c, 40, $00
db BARRAGE, $1d, 15, NORMAL, $d8, 20, $00
db LEECH_LIFE, $03, 20, BUG, $ff, 15, $00
db LOVELY_KISS, $01, 0, NORMAL, $bf, 10, $00
db SKY_ATTACK, $4b, 140, FLYING, $e5, 5, $00
db TRANSFORM, $39, 0, NORMAL, $ff, 10, $00
db BUBBLE, $46, 20, WATER, $ff, 30, $19
db DIZZY_PUNCH, $4c, 70, NORMAL, $ff, 10, $33
db SPORE, $01, 0, GRASS, $ff, 15, $00
db FLASH, $17, 0, NORMAL, $b2, 20, $00
db PSYWAVE, $58, 1, PSYCHIC, $cc, 15, $00
db SPLASH, $55, 0, NORMAL, $ff, 40, $00
db ACID_ARMOR, $33, 0, POISON, $ff, 40, $00
db CRABHAMMER, $00, 90, WATER, $d8, 10, $00
db EXPLOSION, $07, 250, NORMAL, $ff, 5, $00
db FURY_SWIPES, $1d, 18, NORMAL, $cc, 15, $00
db BONEMERANG, $2c, 50, GROUND, $e5, 10, $00
db REST, $20, 0, PSYCHIC, $ff, 10, $00
db ROCK_SLIDE, $1f, 75, ROCK, $e5, 10, $4c
db HYPER_FANG, $1f, 80, NORMAL, $e5, 15, $19
db SHARPEN, $0a, 0, NORMAL, $ff, 30, $00
db CONVERSION, $1e, 0, NORMAL, $ff, 30, $00
db TRI_ATTACK, $24, 80, NORMAL, $ff, 10, $33
db SUPER_FANG, $28, 1, NORMAL, $e5, 10, $00
db SLASH, $00, 70, NORMAL, $ff, 20, $00
db SUBSTITUTE, $4f, 0, NORMAL, $ff, 10, $00
db STRUGGLE, $30, 50, NORMAL, $ff, 1, $00
db SKETCH, $5f, 0, NORMAL, $ff, 1, $00
db TRIPLE_KICK, $68, 10, FIGHTING, $e5, 10, $00
db THIEF, $69, 40, DARK, $ff, 10, $ff
db SPIDER_WEB, $6a, 0, BUG, $ff, 10, $00
db MIND_READER, $5e, 0, NORMAL, $ff, 5, $00
db NIGHTMARE, $6b, 0, GHOST, $ff, 15, $00
db FLAME_WHEEL, $6c, 60, FIRE, $ff, 25, $19
db SNORE, $5c, 40, NORMAL, $ff, 15, $4c
db CURSE, $6d, 0, CURSE_T, $ff, 10, $00
db FLAIL, $63, 1, NORMAL, $ff, 15, $00
db CONVERSION2, $5d, 0, NORMAL, $ff, 30, $00
db AEROBLAST, $00, 100, FLYING, $f2, 5, $00
db COTTON_SPORE, $3c, 0, GRASS, $d8, 40, $00
db REVERSAL, $63, 1, FIGHTING, $ff, 15, $00
db SPITE, $64, 0, GHOST, $ff, 10, $00
db POWDER_SNOW, $05, 40, ICE, $ff, 25, $19
db PROTECT, $6f, 0, NORMAL, $ff, 10, $00
db MACH_PUNCH, $67, 40, FIGHTING, $ff, 30, $00
db SCARY_FACE, $3c, 0, NORMAL, $e5, 10, $00
db FAINT_ATTACK, $11, 60, DARK, $ff, 20, $00
db SWEET_KISS, $31, 0, NORMAL, $bf, 10, $00
db BELLY_DRUM, $8e, 0, NORMAL, $ff, 10, $00
db SLUDGE_BOMB, $02, 90, POISON, $ff, 10, $4c
db MUD_SLAP, $49, 20, GROUND, $ff, 10, $ff
db OCTAZOOKA, $49, 65, WATER, $d8, 10, $7f
db SPIKES, $70, 0, GROUND, $ff, 20, $00
db ZAP_CANNON, $06, 100, ELECTRIC, $7f, 5, $ff
db FORESIGHT, $71, 0, NORMAL, $ff, 40, $00
db DESTINY_BOND, $62, 0, GHOST, $ff, 5, $00
db PERISH_SONG, $72, 0, NORMAL, $ff, 5, $00
db ICY_WIND, $46, 55, ICE, $f2, 15, $ff
db DETECT, $6f, 0, FIGHTING, $ff, 5, $00
db BONE_RUSH, $1d, 25, GROUND, $cc, 10, $00
db LOCK_ON, $5e, 0, NORMAL, $ff, 5, $00
db OUTRAGE, $1b, 90, DRAGON, $ff, 15, $00
db SANDSTORM, $73, 0, ROCK, $ff, 10, $00
db GIGA_DRAIN, $03, 60, GRASS, $ff, 5, $00
db ENDURE, $74, 0, NORMAL, $ff, 10, $00
db CHARM, $3a, 0, NORMAL, $ff, 20, $00
db ROLLOUT, $75, 30, ROCK, $e5, 20, $00
db FALSE_SWIPE, $65, 40, NORMAL, $ff, 40, $00
db SWAGGER, $76, 0, NORMAL, $e5, 15, $ff
db MILK_DRINK, $20, 0, NORMAL, $ff, 10, $00
db SPARK, $06, 65, ELECTRIC, $ff, 20, $4c
db FURY_CUTTER, $77, 10, BUG, $f2, 20, $00
db STEEL_WING, $8a, 70, STEEL, $e5, 25, $19
db MEAN_LOOK, $6a, 0, NORMAL, $ff, 5, $00
db ATTRACT, $78, 0, NORMAL, $ff, 15, $00
db SLEEP_TALK, $61, 0, NORMAL, $ff, 10, $00
db HEAL_BELL, $66, 0, NORMAL, $ff, 5, $00
db RETURN, $79, 1, NORMAL, $ff, 20, $00
db PRESENT, $7a, 1, NORMAL, $e5, 15, $00
db FRUSTRATION, $7b, 1, NORMAL, $ff, 20, $00
db SAFEGUARD, $7c, 0, NORMAL, $ff, 25, $00
db PAIN_SPLIT, $5b, 0, NORMAL, $ff, 20, $00
db SACRED_FIRE, $7d, 100, FIRE, $f2, 5, $7f
db MAGNITUDE, $7e, 1, GROUND, $ff, 30, $00
db DYNAMICPUNCH, $4c, 100, FIGHTING, $7f, 5, $ff
db MEGAHORN, $00, 120, BUG, $d8, 10, $00
db DRAGONBREATH, $06, 60, DRAGON, $ff, 20, $4c
db BATON_PASS, $7f, 0, NORMAL, $ff, 40, $00
db ENCORE, $5a, 0, NORMAL, $ff, 5, $00
db PURSUIT, $80, 40, DARK, $ff, 20, $00
db RAPID_SPIN, $81, 20, NORMAL, $ff, 40, $00
db SWEET_SCENT, $18, 0, NORMAL, $ff, 20, $00
db IRON_TAIL, $45, 100, STEEL, $bf, 15, $4c
db METAL_CLAW, $8b, 50, STEEL, $f2, 35, $19
db VITAL_THROW, $11, 70, FIGHTING, $ff, 10, $00
db MORNING_SUN, $84, 0, NORMAL, $ff, 5, $00
db SYNTHESIS, $85, 0, GRASS, $ff, 5, $00
db MOONLIGHT, $86, 0, NORMAL, $ff, 5, $00
db HIDDEN_POWER, $87, 1, NORMAL, $ff, 15, $00
db CROSS_CHOP, $00, 100, FIGHTING, $cc, 5, $00
db TWISTER, $92, 40, DRAGON, $ff, 20, $33
db RAIN_DANCE, $88, 0, WATER, $e5, 5, $00
db SUNNY_DAY, $89, 0, FIRE, $e5, 5, $00
db CRUNCH, $48, 80, DARK, $ff, 15, $33
db MIRROR_COAT, $90, 1, PSYCHIC, $ff, 20, $00
db PSYCH_UP, $8f, 0, NORMAL, $ff, 10, $00
db EXTREMESPEED, $67, 80, NORMAL, $ff, 5, $00
db ANCIENTPOWER, $8c, 60, ROCK, $ff, 5, $19
db SHADOW_BALL, $48, 80, GHOST, $ff, 15, $33
db FUTURE_SIGHT, $94, 80, PSYCHIC, $e5, 15, $00
db ROCK_SMASH, $45, 20, FIGHTING, $ff, 15, $7f
db WHIRLPOOL, $2a, 15, WATER, $b2, 15, $00
db BEAT_UP, $9a, 10, DARK, $ff, 10, $00
Move1:
db POUND, EFFECT_NORMAL_HIT, 40, NORMAL, $ff, 35, $00
Move2:
db KARATE_CHOP, EFFECT_NORMAL_HIT, 50, FIGHTING, $ff, 25, $00
db DOUBLESLAP, EFFECT_MULTI_HIT, 15, NORMAL, $d8, 10, $00
db COMET_PUNCH, EFFECT_MULTI_HIT, 18, NORMAL, $d8, 15, $00
db MEGA_PUNCH, EFFECT_NORMAL_HIT, 80, NORMAL, $d8, 20, $00
db PAY_DAY, EFFECT_PAY_DAY, 40, NORMAL, $ff, 20, $00
db FIRE_PUNCH, EFFECT_BURN_HIT, 75, FIRE, $ff, 15, $19
db ICE_PUNCH, EFFECT_FREEZE_HIT, 75, ICE, $ff, 15, $19
db THUNDERPUNCH, EFFECT_PARALYZE_HIT, 75, ELECTRIC, $ff, 15, $19
db SCRATCH, EFFECT_NORMAL_HIT, 40, NORMAL, $ff, 35, $00
db VICEGRIP, EFFECT_NORMAL_HIT, 55, NORMAL, $ff, 30, $00
db GUILLOTINE, EFFECT_OHKO, 0, NORMAL, $4c, 5, $00
db RAZOR_WIND, EFFECT_RAZOR_WIND, 80, NORMAL, $bf, 10, $00
db SWORDS_DANCE, EFFECT_ATTACK_UP_2, 0, NORMAL, $ff, 30, $00
db CUT, EFFECT_NORMAL_HIT, 50, NORMAL, $f2, 30, $00
db GUST, EFFECT_GUST, 40, FLYING, $ff, 35, $00
db WING_ATTACK, EFFECT_NORMAL_HIT, 60, FLYING, $ff, 35, $00
db WHIRLWIND, EFFECT_WHIRLWIND, 0, NORMAL, $ff, 20, $00
db FLY, EFFECT_FLY, 70, FLYING, $f2, 15, $00
db BIND, EFFECT_BIND, 15, NORMAL, $bf, 20, $00
db SLAM, EFFECT_NORMAL_HIT, 80, NORMAL, $bf, 20, $00
db VINE_WHIP, EFFECT_NORMAL_HIT, 35, GRASS, $ff, 10, $00
db STOMP, EFFECT_STOMP, 65, NORMAL, $ff, 20, $4c
db DOUBLE_KICK, EFFECT_DOUBLE_HIT, 30, FIGHTING, $ff, 30, $00
db MEGA_KICK, EFFECT_NORMAL_HIT, 120, NORMAL, $bf, 5, $00
db JUMP_KICK, EFFECT_JUMP_KICK, 70, FIGHTING, $f2, 25, $00
db ROLLING_KICK, EFFECT_FLINCH_HIT, 60, FIGHTING, $d8, 15, $4c
db SAND_ATTACK, EFFECT_ACCURACY_DOWN, 0, GROUND, $ff, 15, $00
db HEADBUTT, EFFECT_FLINCH_HIT, 70, NORMAL, $ff, 15, $4c
db HORN_ATTACK, EFFECT_NORMAL_HIT, 65, NORMAL, $ff, 25, $00
db FURY_ATTACK, EFFECT_MULTI_HIT, 15, NORMAL, $d8, 20, $00
db HORN_DRILL, EFFECT_OHKO, 1, NORMAL, $4c, 5, $00
db TACKLE, EFFECT_NORMAL_HIT, 35, NORMAL, $f2, 35, $00
db BODY_SLAM, EFFECT_PARALYZE_HIT, 85, NORMAL, $ff, 15, $4c
db WRAP, EFFECT_BIND, 15, NORMAL, $d8, 20, $00
db TAKE_DOWN, EFFECT_RECOIL_HIT, 90, NORMAL, $d8, 20, $00
db THRASH, EFFECT_RAMPAGE, 90, NORMAL, $ff, 20, $00
db DOUBLE_EDGE, EFFECT_RECOIL_HIT, 120, NORMAL, $ff, 15, $00
db TAIL_WHIP, EFFECT_DEFENSE_DOWN, 0, NORMAL, $ff, 30, $00
db POISON_STING, EFFECT_POISON_HIT, 15, POISON, $ff, 35, $4c
db TWINEEDLE, EFFECT_TWINEEDLE, 25, BUG, $ff, 20, $33
db PIN_MISSILE, EFFECT_MULTI_HIT, 14, BUG, $d8, 20, $00
db LEER, EFFECT_DEFENSE_DOWN, 0, NORMAL, $ff, 30, $00
db BITE, EFFECT_FLINCH_HIT, 60, DARK, $ff, 25, $4c
db GROWL, EFFECT_ATTACK_DOWN, 0, NORMAL, $ff, 40, $00
db ROAR, EFFECT_WHIRLWIND, 0, NORMAL, $ff, 20, $00
db SING, EFFECT_SLEEP, 0, NORMAL, $8c, 15, $00
db SUPERSONIC, EFFECT_CONFUSE, 0, NORMAL, $8c, 20, $00
db SONICBOOM, EFFECT_STATIC_DAMAGE, 20, NORMAL, $e5, 20, $00
db DISABLE, EFFECT_DISABLE, 0, NORMAL, $8c, 20, $00
db ACID, EFFECT_DEFENSE_DOWN_HIT, 40, POISON, $ff, 30, $19
db EMBER, EFFECT_BURN_HIT, 40, FIRE, $ff, 25, $19
db FLAMETHROWER, EFFECT_BURN_HIT, 95, FIRE, $ff, 15, $19
db MIST, EFFECT_MIST, 0, ICE, $ff, 30, $00
db WATER_GUN, EFFECT_NORMAL_HIT, 40, WATER, $ff, 25, $00
db HYDRO_PUMP, EFFECT_NORMAL_HIT, 120, WATER, $cc, 5, $00
db SURF, EFFECT_NORMAL_HIT, 95, WATER, $ff, 15, $00
db ICE_BEAM, EFFECT_FREEZE_HIT, 95, ICE, $ff, 10, $19
db BLIZZARD, EFFECT_FREEZE_HIT, 120, ICE, $b2, 5, $19
db PSYBEAM, EFFECT_CONFUSE_HIT, 65, PSYCHIC, $ff, 20, $19
db BUBBLEBEAM, EFFECT_SPEED_DOWN_HIT, 65, WATER, $ff, 20, $19
db AURORA_BEAM, EFFECT_ATTACK_DOWN_HIT, 65, ICE, $ff, 20, $19
db HYPER_BEAM, EFFECT_HYPER_BEAM, 150, NORMAL, $e5, 5, $00
db PECK, EFFECT_NORMAL_HIT, 35, FLYING, $ff, 35, $00
db DRILL_PECK, EFFECT_NORMAL_HIT, 80, FLYING, $ff, 20, $00
db SUBMISSION, EFFECT_RECOIL_HIT, 80, FIGHTING, $cc, 25, $00
db LOW_KICK, EFFECT_FLINCH_HIT, 50, FIGHTING, $e5, 20, $4c
db COUNTER, EFFECT_COUNTER, 1, FIGHTING, $ff, 20, $00
db SEISMIC_TOSS, EFFECT_LEVEL_DAMAGE, 1, FIGHTING, $ff, 20, $00
db STRENGTH, EFFECT_NORMAL_HIT, 80, NORMAL, $ff, 15, $00
db ABSORB, EFFECT_LEECH_HIT, 20, GRASS, $ff, 20, $00
db MEGA_DRAIN, EFFECT_LEECH_HIT, 40, GRASS, $ff, 10, $00
db LEECH_SEED, EFFECT_LEECH_SEED, 0, GRASS, $e5, 10, $00
db GROWTH, EFFECT_SP_ATTACK_UP, 0, NORMAL, $ff, 40, $00
db RAZOR_LEAF, EFFECT_NORMAL_HIT, 55, GRASS, $f2, 25, $00
db SOLARBEAM, EFFECT_SOLARBEAM, 120, GRASS, $ff, 10, $00
db POISONPOWDER, EFFECT_POISON, 0, POISON, $bf, 35, $00
db STUN_SPORE, EFFECT_PARALYZE, 0, GRASS, $bf, 30, $00
db SLEEP_POWDER, EFFECT_SLEEP, 0, GRASS, $bf, 15, $00
db PETAL_DANCE, EFFECT_RAMPAGE, 70, GRASS, $ff, 20, $00
db STRING_SHOT, EFFECT_SPEED_DOWN, 0, BUG, $f2, 40, $00
db DRAGON_RAGE, EFFECT_STATIC_DAMAGE, 40, DRAGON, $ff, 10, $00
db FIRE_SPIN, EFFECT_BIND, 15, FIRE, $b2, 15, $00
db THUNDERSHOCK, EFFECT_PARALYZE_HIT, 40, ELECTRIC, $ff, 30, $19
db THUNDERBOLT, EFFECT_PARALYZE_HIT, 95, ELECTRIC, $ff, 15, $19
db THUNDER_WAVE, EFFECT_PARALYZE, 0, ELECTRIC, $ff, 20, $00
db THUNDER, EFFECT_THUNDER, 120, ELECTRIC, $b2, 10, $4c
db ROCK_THROW, EFFECT_NORMAL_HIT, 50, ROCK, $e5, 15, $00
db EARTHQUAKE, EFFECT_EARTHQUAKE, 100, GROUND, $ff, 10, $00
db FISSURE, EFFECT_OHKO, 1, GROUND, $4c, 5, $00
db DIG, EFFECT_FLY, 60, GROUND, $ff, 10, $00
db TOXIC, EFFECT_TOXIC, 0, POISON, $d8, 10, $00
db CONFUSION, EFFECT_CONFUSE_HIT, 50, PSYCHIC, $ff, 25, $19
db PSYCHIC_M, EFFECT_SP_DEFENSE_DOWN_HIT, 90, PSYCHIC, $ff, 10, $19
db HYPNOSIS, EFFECT_SLEEP, 0, PSYCHIC, $99, 20, $00
db MEDITATE, EFFECT_ATTACK_UP, 0, PSYCHIC, $ff, 40, $00
db AGILITY, EFFECT_SPEED_UP_2, 0, PSYCHIC, $ff, 30, $00
db QUICK_ATTACK, EFFECT_PRIORITY_HIT, 40, NORMAL, $ff, 30, $00
db RAGE, EFFECT_RAGE, 20, NORMAL, $ff, 20, $00
db TELEPORT, EFFECT_TELEPORT, 0, PSYCHIC, $ff, 20, $00
db NIGHT_SHADE, EFFECT_LEVEL_DAMAGE, 1, GHOST, $ff, 15, $00
db MIMIC, EFFECT_MIMIC, 0, NORMAL, $ff, 10, $00
db SCREECH, EFFECT_DEFENSE_DOWN_2, 0, NORMAL, $d8, 40, $00
db DOUBLE_TEAM, EFFECT_EVASION_UP, 0, NORMAL, $ff, 15, $00
db RECOVER, EFFECT_HEAL, 0, NORMAL, $ff, 20, $00
db HARDEN, EFFECT_DEFENSE_UP, 0, NORMAL, $ff, 30, $00
db MINIMIZE, EFFECT_EVASION_UP, 0, NORMAL, $ff, 20, $00
db SMOKESCREEN, EFFECT_ACCURACY_DOWN, 0, NORMAL, $ff, 20, $00
db CONFUSE_RAY, EFFECT_CONFUSE, 0, GHOST, $ff, 10, $00
db WITHDRAW, EFFECT_DEFENSE_UP, 0, WATER, $ff, 40, $00
db DEFENSE_CURL, EFFECT_DEFENSE_CURL, 0, NORMAL, $ff, 40, $00
db BARRIER, EFFECT_DEFENSE_UP_2, 0, PSYCHIC, $ff, 30, $00
db LIGHT_SCREEN, EFFECT_LIGHT_SCREEN, 0, PSYCHIC, $ff, 30, $00
db HAZE, EFFECT_HAZE, 0, ICE, $ff, 30, $00
db REFLECT, EFFECT_REFLECT, 0, PSYCHIC, $ff, 20, $00
db FOCUS_ENERGY, EFFECT_FOCUS_ENERGY, 0, NORMAL, $ff, 30, $00
db BIDE, EFFECT_BIDE, 0, NORMAL, $ff, 10, $00
db METRONOME, EFFECT_METRONOME, 0, NORMAL, $ff, 10, $00
db MIRROR_MOVE, EFFECT_MIRROR_MOVE, 0, FLYING, $ff, 20, $00
db SELFDESTRUCT, EFFECT_EXPLOSION, 200, NORMAL, $ff, 5, $00
db EGG_BOMB, EFFECT_NORMAL_HIT, 100, NORMAL, $bf, 10, $00
db LICK, EFFECT_PARALYZE_HIT, 20, GHOST, $ff, 30, $4c
db SMOG, EFFECT_POISON_HIT, 20, POISON, $b2, 20, $66
db SLUDGE, EFFECT_POISON_HIT, 65, POISON, $ff, 20, $4c
db BONE_CLUB, EFFECT_FLINCH_HIT, 65, GROUND, $d8, 20, $19
db FIRE_BLAST, EFFECT_BURN_HIT, 120, FIRE, $d8, 5, $19
db WATERFALL, EFFECT_NORMAL_HIT, 80, WATER, $ff, 15, $00
db CLAMP, EFFECT_BIND, 35, WATER, $bf, 10, $00
db SWIFT, EFFECT_ALWAYS_HIT, 60, NORMAL, $ff, 20, $00
db SKULL_BASH, EFFECT_SKULL_BASH, 100, NORMAL, $ff, 15, $00
db SPIKE_CANNON, EFFECT_MULTI_HIT, 20, NORMAL, $ff, 15, $00
db CONSTRICT, EFFECT_SPEED_DOWN_HIT, 10, NORMAL, $ff, 35, $19
db AMNESIA, EFFECT_SP_DEFENSE_UP_2, 0, PSYCHIC, $ff, 20, $00
db KINESIS, EFFECT_ACCURACY_DOWN, 0, PSYCHIC, $cc, 15, $00
db SOFTBOILED, EFFECT_HEAL, 0, NORMAL, $ff, 10, $00
db HI_JUMP_KICK, EFFECT_JUMP_KICK, 85, FIGHTING, $e5, 20, $00
db GLARE, EFFECT_PARALYZE, 0, NORMAL, $bf, 30, $00
db DREAM_EATER, EFFECT_DREAM_EATER, 100, PSYCHIC, $ff, 15, $00
db POISON_GAS, EFFECT_POISON, 0, POISON, $8c, 40, $00
db BARRAGE, EFFECT_MULTI_HIT, 15, NORMAL, $d8, 20, $00
db LEECH_LIFE, EFFECT_LEECH_HIT, 20, BUG, $ff, 15, $00
db LOVELY_KISS, EFFECT_SLEEP, 0, NORMAL, $bf, 10, $00
db SKY_ATTACK, EFFECT_SKY_ATTACK, 140, FLYING, $e5, 5, $00
db TRANSFORM, EFFECT_TRANSFORM, 0, NORMAL, $ff, 10, $00
db BUBBLE, EFFECT_SPEED_DOWN_HIT, 20, WATER, $ff, 30, $19
db DIZZY_PUNCH, EFFECT_CONFUSE_HIT, 70, NORMAL, $ff, 10, $33
db SPORE, EFFECT_SLEEP, 0, GRASS, $ff, 15, $00
db FLASH, EFFECT_ACCURACY_DOWN, 0, NORMAL, $b2, 20, $00
db PSYWAVE, EFFECT_PSYWAVE, 1, PSYCHIC, $cc, 15, $00
db SPLASH, EFFECT_SPLASH, 0, NORMAL, $ff, 40, $00
db ACID_ARMOR, EFFECT_DEFENSE_UP_2, 0, POISON, $ff, 40, $00
db CRABHAMMER, EFFECT_NORMAL_HIT, 90, WATER, $d8, 10, $00
db EXPLOSION, EFFECT_EXPLOSION, 250, NORMAL, $ff, 5, $00
db FURY_SWIPES, EFFECT_MULTI_HIT, 18, NORMAL, $cc, 15, $00
db BONEMERANG, EFFECT_DOUBLE_HIT, 50, GROUND, $e5, 10, $00
db REST, EFFECT_HEAL, 0, PSYCHIC, $ff, 10, $00
db ROCK_SLIDE, EFFECT_FLINCH_HIT, 75, ROCK, $e5, 10, $4c
db HYPER_FANG, EFFECT_FLINCH_HIT, 80, NORMAL, $e5, 15, $19
db SHARPEN, EFFECT_ATTACK_UP, 0, NORMAL, $ff, 30, $00
db CONVERSION, EFFECT_CONVERSION, 0, NORMAL, $ff, 30, $00
db TRI_ATTACK, EFFECT_TRI_ATTACK, 80, NORMAL, $ff, 10, $33
db SUPER_FANG, EFFECT_SUPER_FANG, 1, NORMAL, $e5, 10, $00
db SLASH, EFFECT_NORMAL_HIT, 70, NORMAL, $ff, 20, $00
db SUBSTITUTE, EFFECT_SUBSTITUTE, 0, NORMAL, $ff, 10, $00
db STRUGGLE, EFFECT_RECOIL_HIT, 50, NORMAL, $ff, 1, $00
db SKETCH, EFFECT_SKETCH, 0, NORMAL, $ff, 1, $00
db TRIPLE_KICK, EFFECT_TRIPLE_KICK, 10, FIGHTING, $e5, 10, $00
db THIEF, EFFECT_THIEF, 40, DARK, $ff, 10, $ff
db SPIDER_WEB, EFFECT_MEAN_LOOK, 0, BUG, $ff, 10, $00
db MIND_READER, EFFECT_LOCK_ON, 0, NORMAL, $ff, 5, $00
db NIGHTMARE, EFFECT_NIGHTMARE, 0, GHOST, $ff, 15, $00
db FLAME_WHEEL, EFFECT_FLAME_WHEEL, 60, FIRE, $ff, 25, $19
db SNORE, EFFECT_SNORE, 40, NORMAL, $ff, 15, $4c
db CURSE, EFFECT_CURSE, 0, CURSE_T, $ff, 10, $00
db FLAIL, EFFECT_REVERSAL, 1, NORMAL, $ff, 15, $00
db CONVERSION2, EFFECT_CONVERSION2, 0, NORMAL, $ff, 30, $00
db AEROBLAST, EFFECT_NORMAL_HIT, 100, FLYING, $f2, 5, $00
db COTTON_SPORE, EFFECT_SPEED_DOWN_2, 0, GRASS, $d8, 40, $00
db REVERSAL, EFFECT_REVERSAL, 1, FIGHTING, $ff, 15, $00
db SPITE, EFFECT_SPITE, 0, GHOST, $ff, 10, $00
db POWDER_SNOW, EFFECT_FREEZE_HIT, 40, ICE, $ff, 25, $19
db PROTECT, EFFECT_PROTECT, 0, NORMAL, $ff, 10, $00
db MACH_PUNCH, EFFECT_PRIORITY_HIT, 40, FIGHTING, $ff, 30, $00
db SCARY_FACE, EFFECT_SPEED_DOWN_2, 0, NORMAL, $e5, 10, $00
db FAINT_ATTACK, EFFECT_ALWAYS_HIT, 60, DARK, $ff, 20, $00
db SWEET_KISS, EFFECT_CONFUSE, 0, NORMAL, $bf, 10, $00
db BELLY_DRUM, EFFECT_BELLY_DRUM, 0, NORMAL, $ff, 10, $00
db SLUDGE_BOMB, EFFECT_POISON_HIT, 90, POISON, $ff, 10, $4c
db MUD_SLAP, EFFECT_ACCURACY_DOWN_HIT, 20, GROUND, $ff, 10, $ff
db OCTAZOOKA, EFFECT_ACCURACY_DOWN_HIT, 65, WATER, $d8, 10, $7f
db SPIKES, EFFECT_SPIKES, 0, GROUND, $ff, 20, $00
db ZAP_CANNON, EFFECT_PARALYZE_HIT, 100, ELECTRIC, $7f, 5, $ff
db FORESIGHT, EFFECT_FORESIGHT, 0, NORMAL, $ff, 40, $00
db DESTINY_BOND, EFFECT_DESTINY_BOND, 0, GHOST, $ff, 5, $00
db PERISH_SONG, EFFECT_PERISH_SONG, 0, NORMAL, $ff, 5, $00
db ICY_WIND, EFFECT_SPEED_DOWN_HIT, 55, ICE, $f2, 15, $ff
db DETECT, EFFECT_PROTECT, 0, FIGHTING, $ff, 5, $00
db BONE_RUSH, EFFECT_MULTI_HIT, 25, GROUND, $cc, 10, $00
db LOCK_ON, EFFECT_LOCK_ON, 0, NORMAL, $ff, 5, $00
db OUTRAGE, EFFECT_RAMPAGE, 90, DRAGON, $ff, 15, $00
db SANDSTORM, EFFECT_SANDSTORM, 0, ROCK, $ff, 10, $00
db GIGA_DRAIN, EFFECT_LEECH_HIT, 60, GRASS, $ff, 5, $00
db ENDURE, EFFECT_ENDURE, 0, NORMAL, $ff, 10, $00
db CHARM, EFFECT_ATTACK_DOWN_2, 0, NORMAL, $ff, 20, $00
db ROLLOUT, EFFECT_ROLLOUT, 30, ROCK, $e5, 20, $00
db FALSE_SWIPE, EFFECT_FALSE_SWIPE, 40, NORMAL, $ff, 40, $00
db SWAGGER, EFFECT_SWAGGER, 0, NORMAL, $e5, 15, $ff
db MILK_DRINK, EFFECT_HEAL, 0, NORMAL, $ff, 10, $00
db SPARK, EFFECT_PARALYZE_HIT, 65, ELECTRIC, $ff, 20, $4c
db FURY_CUTTER, EFFECT_FURY_CUTTER, 10, BUG, $f2, 20, $00
db STEEL_WING, EFFECT_STEEL_WING, 70, STEEL, $e5, 25, $19
db MEAN_LOOK, EFFECT_MEAN_LOOK, 0, NORMAL, $ff, 5, $00
db ATTRACT, EFFECT_ATTRACT, 0, NORMAL, $ff, 15, $00
db SLEEP_TALK, EFFECT_SLEEP_TALK, 0, NORMAL, $ff, 10, $00
db HEAL_BELL, EFFECT_HEAL_BELL, 0, NORMAL, $ff, 5, $00
db RETURN, EFFECT_RETURN, 1, NORMAL, $ff, 20, $00
db PRESENT, EFFECT_PRESENT, 1, NORMAL, $e5, 15, $00
db FRUSTRATION, EFFECT_FRUSTRATION, 1, NORMAL, $ff, 20, $00
db SAFEGUARD, EFFECT_SAFEGUARD, 0, NORMAL, $ff, 25, $00
db PAIN_SPLIT, EFFECT_PAIN_SPLIT, 0, NORMAL, $ff, 20, $00
db SACRED_FIRE, EFFECT_SACRED_FIRE, 100, FIRE, $f2, 5, $7f
db MAGNITUDE, EFFECT_MAGNITUDE, 1, GROUND, $ff, 30, $00
db DYNAMICPUNCH, EFFECT_CONFUSE_HIT, 100, FIGHTING, $7f, 5, $ff
db MEGAHORN, EFFECT_NORMAL_HIT, 120, BUG, $d8, 10, $00
db DRAGONBREATH, EFFECT_PARALYZE_HIT, 60, DRAGON, $ff, 20, $4c
db BATON_PASS, EFFECT_BATON_PASS, 0, NORMAL, $ff, 40, $00
db ENCORE, EFFECT_ENCORE, 0, NORMAL, $ff, 5, $00
db PURSUIT, EFFECT_PURSUIT, 40, DARK, $ff, 20, $00
db RAPID_SPIN, EFFECT_RAPID_SPIN, 20, NORMAL, $ff, 40, $00
db SWEET_SCENT, EFFECT_EVASION_DOWN, 0, NORMAL, $ff, 20, $00
db IRON_TAIL, EFFECT_DEFENSE_DOWN_HIT, 100, STEEL, $bf, 15, $4c
db METAL_CLAW, EFFECT_METAL_CLAW, 50, STEEL, $f2, 35, $19
db VITAL_THROW, EFFECT_ALWAYS_HIT, 70, FIGHTING, $ff, 10, $00
db MORNING_SUN, EFFECT_MORNING_SUN, 0, NORMAL, $ff, 5, $00
db SYNTHESIS, EFFECT_SYNTHESIS, 0, GRASS, $ff, 5, $00
db MOONLIGHT, EFFECT_MOONLIGHT, 0, NORMAL, $ff, 5, $00
db HIDDEN_POWER, EFFECT_HIDDEN_POWER, 1, NORMAL, $ff, 15, $00
db CROSS_CHOP, EFFECT_NORMAL_HIT, 100, FIGHTING, $cc, 5, $00
db TWISTER, EFFECT_TWISTER, 40, DRAGON, $ff, 20, $33
db RAIN_DANCE, EFFECT_RAIN_DANCE, 0, WATER, $e5, 5, $00
db SUNNY_DAY, EFFECT_SUNNY_DAY, 0, FIRE, $e5, 5, $00
db CRUNCH, EFFECT_SP_DEFENSE_DOWN_HIT, 80, DARK, $ff, 15, $33
db MIRROR_COAT, EFFECT_MIRROR_COAT, 1, PSYCHIC, $ff, 20, $00
db PSYCH_UP, EFFECT_PSYCH_UP, 0, NORMAL, $ff, 10, $00
db EXTREMESPEED, EFFECT_PRIORITY_HIT, 80, NORMAL, $ff, 5, $00
db ANCIENTPOWER, EFFECT_ANCIENTPOWER, 60, ROCK, $ff, 5, $19
db SHADOW_BALL, EFFECT_SP_DEFENSE_DOWN_HIT, 80, GHOST, $ff, 15, $33
db FUTURE_SIGHT, EFFECT_FUTURE_SIGHT, 80, PSYCHIC, $e5, 15, $00
db ROCK_SMASH, EFFECT_DEFENSE_DOWN_HIT, 20, FIGHTING, $ff, 15, $7f
db WHIRLPOOL, EFFECT_BIND, 15, WATER, $b2, 15, $00
db BEAT_UP, EFFECT_BEAT_UP, 10, DARK, $ff, 10, $00

View File

@ -1464,6 +1464,26 @@ MAP_ROUTE_30_BERRY_SPEECH_HOUSE EQU $09
MAP_MR_POKEMONS_HOUSE EQU $0a
MAP_ROUTE_31_VIOLET_GATE EQU $0b
; elevator floors
_B4F EQU $0
_B3F EQU $1
_B2F EQU $2
_B1F EQU $3
_1F EQU $4
_2F EQU $5
_3F EQU $6
_4F EQU $7
_5F EQU $8
_6F EQU $9
_7F EQU $a
_8F EQU $b
_9F EQU $c
_10F EQU $d
_11F EQU $e
_ROOF EQU $f
; item constants
NO_ITEM EQU $00
MASTER_BALL EQU $01
@ -1689,6 +1709,58 @@ HM_05 EQU $F7
HM_06 EQU $F8
HM_07 EQU $F9
NUM_TMS EQU HM_01 - TM_01 - 2
; pockets
ITEM EQU 1
KEY_ITEM EQU 2
BALL EQU 3
TM_HM EQU 4
; item actions
CANT_SELECT EQU %01000000
CANT_TOSS EQU %10000000
; held item effects
HELD_BERRY EQU $01
HELD_LEFTOVERS EQU $03
HELD_RESTORE_PP EQU $06
HELD_CLEANSE_TAG EQU $08
HELD_HEAL_POISON EQU $0a
HELD_HEAL_FREEZE EQU $0b
HELD_HEAL_BURN EQU $0c
HELD_HEAL_SLEEP EQU $0d
HELD_HEAL_PARALYZE EQU $0e
HELD_HEAL_STATUS EQU $0f
HELD_HEAL_CONFUSION EQU $10
HELD_METAL_POWDER EQU $2a
HELD_NORMAL_BOOST EQU $32
HELD_FIGHTING_BOOST EQU $33
HELD_FLYING_BOOST EQU $34
HELD_POISON_BOOST EQU $35
HELD_GROUND_BOOST EQU $36
HELD_ROCK_BOOST EQU $37
HELD_BUG_BOOST EQU $38
HELD_GHOST_BOOST EQU $39
HELD_FIRE_BOOST EQU $3a
HELD_WATER_BOOST EQU $3b
HELD_GRASS_BOOST EQU $3c
HELD_ELECTRIC_BOOST EQU $3d
HELD_PSYCHIC_BOOST EQU $3e
HELD_ICE_BOOST EQU $3f
HELD_DRAGON_BOOST EQU $40
HELD_DARK_BOOST EQU $41
HELD_STEEL_BOOST EQU $42
HELD_ESCAPE EQU $48
HELD_CRITICAL_UP EQU $49
HELD_QUICK_CLAW EQU $4a
HELD_TRADE_EVOLVE EQU $4b
HELD_AMULET_COIN EQU $4c
HELD_BRIGHTPOWDER EQU $4d
HELD_FOCUS_BAND EQU $4f
; days of the week
SUNDAY EQU $00
MONDAY EQU $01
@ -2336,7 +2408,9 @@ EVOLVE_TRADE EQU 3
EVOLVE_HAPPINESS EQU 4
EVOLVE_STAT EQU 5
BASE_HAPPINESS EQU 70
; happiness evolution triggers
HAPPINESS_TO_EVOLVE EQU 220
TR_ANYTIME EQU 1
TR_MORNDAY EQU 2
TR_NITE EQU 3
@ -3249,6 +3323,221 @@ MUSIC_SUICUNE_BATTLE EQU 100
MUSIC_BATTLE_TOWER_LOBBY EQU 101
MUSIC_MOBILE_CENTER EQU 102
MUSIC_MAHOGANY_MART EQU 100 ; grandfathered from gold
; sfx
SFX_DEX_FANFARE_50_79 EQU $00
SFX_ITEM EQU $01
SFX_CAUGHT_MON EQU $02
SFX_POKEBALLS_PLACED_ON_TABLE EQU $03
SFX_POTION EQU $04
SFX_FULL_HEAL EQU $05
SFX_MENU EQU $06
SFX_READ_TEXT EQU $07
SFX_READ_TEXT_2 EQU $08
SFX_DEX_FANFARE_20_49 EQU $09
SFX_DEX_FANFARE_80_109 EQU $0a
SFX_POISON EQU $0b
SFX_GOT_SAFARI_BALLS EQU $0c
SFX_BOOT_PC EQU $0d
SFX_SHUT_DOWN_PC EQU $0e
SFX_CHOOSE_PC_OPTION EQU $0f
SFX_ESCAPE_ROPE EQU $10
SFX_PUSH_BUTTON EQU $11
SFX_SECOND_PART_OF_ITEMFINDER EQU $12
SFX_WARP_TO EQU $13
SFX_WARP_FROM EQU $14
SFX_CHANGE_DEX_MODE EQU $15
SFX_JUMP_OVER_LEDGE EQU $16
SFX_GRASS_RUSTLE EQU $17
SFX_FLY EQU $18
SFX_WRONG EQU $19
SFX_SQUEAK EQU $1a
SFX_STRENGTH EQU $1b
SFX_BOAT EQU $1c
SFX_WALL_OPEN EQU $1d
SFX_PLACE_PUZZLE_PIECE_DOWN EQU $1e
SFX_ENTER_DOOR EQU $1f
SFX_SWITCH_POKEMON EQU $20
SFX_TALLY EQU $21
SFX_TRANSACTION EQU $22
SFX_EXIT_BUILDING EQU $23
SFX_BUMP EQU $24
SFX_SAVE EQU $25
SFX_POKEFLUTE EQU $26
SFX_ELEVATOR_END EQU $27
SFX_THROW_BALL EQU $28
SFX_BALL_POOF EQU $29
SFX_UNKNOWN_3A EQU $2a
SFX_RUN EQU $2b
SFX_SLOT_MACHINE_START EQU $2c
SFX_FANFARE EQU $2d
SFX_PECK EQU $2e
SFX_KINESIS EQU $2f
SFX_LICK EQU $30
SFX_POUND EQU $31
SFX_MOVE_PUZZLE_PIECE EQU $32
SFX_COMET_PUNCH EQU $33
SFX_MEGA_PUNCH EQU $34
SFX_SCRATCH EQU $35
SFX_VICEGRIP EQU $36
SFX_RAZOR_WIND EQU $37
SFX_CUT EQU $38
SFX_WING_ATTACK EQU $39
SFX_WHIRLWIND EQU $3a
SFX_BIND EQU $3b
SFX_VINE_WHIP EQU $3c
SFX_DOUBLE_KICK EQU $3d
SFX_MEGA_KICK EQU $3e
SFX_HEADBUTT EQU $3f
SFX_HORN_ATTACK EQU $40
SFX_TACKLE EQU $41
SFX_POISON_STING EQU $42
SFX_POWDER EQU $43
SFX_DOUBLESLAP EQU $44
SFX_BITE EQU $45
SFX_JUMP_KICK EQU $46
SFX_STOMP EQU $47
SFX_TAIL_WHIP EQU $48
SFX_KARATE_CHOP EQU $49
SFX_SUBMISSION EQU $4a
SFX_WATER_GUN EQU $4b
SFX_SWORDS_DANCE EQU $4c
SFX_THUNDER EQU $4d
SFX_SUPERSONIC EQU $4e
SFX_LEER EQU $4f
SFX_EMBER EQU $50
SFX_BUBBLEBEAM EQU $51
SFX_HYDRO_PUMP EQU $52
SFX_SURF EQU $53
SFX_PSYBEAM EQU $54
SFX_CHARGE EQU $55
SFX_THUNDERSHOCK EQU $56
SFX_PSYCHIC EQU $57
SFX_SCREECH EQU $58
SFX_BONE_CLUB EQU $59
SFX_SHARPEN EQU $5a
SFX_EGG_BOMB EQU $5b
SFX_SING EQU $5c
SFX_HYPER_BEAM EQU $5d
SFX_SHINE EQU $5e
SFX_UNKNOWN_5F EQU $5f
SFX_UNKNOWN_60 EQU $60
SFX_UNKNOWN_61 EQU $61
SFX_UNKNOWN_62 EQU $62
SFX_UNKNOWN_63 EQU $63
SFX_BURN EQU $64
SFX_TITLE_SCREEN_ENTRANCE EQU $65
SFX_UNKNOWN_66 EQU $66
SFX_GET_COIN_FROM_SLOTS EQU $67
SFX_PAY_DAY EQU $68
SFX_METRONOME EQU $69
SFX_CALL EQU $6a
SFX_HANG_UP EQU $6b
SFX_NO_SIGNAL EQU $6c
SFX_SANDSTORM EQU $6d
SFX_ELEVATOR EQU $6e
SFX_PROTECT EQU $6f
SFX_SKETCH EQU $70
SFX_RAIN_DANCE EQU $71
SFX_AEROBLAST EQU $72
SFX_SPARK EQU $73
SFX_CURSE EQU $74
SFX_RAGE EQU $75
SFX_THIEF EQU $76
SFX_THIEF_2 EQU $77
SFX_SPIDER_WEB EQU $78
SFX_MIND_READER EQU $79
SFX_NIGHTMARE EQU $7a
SFX_SNORE EQU $7b
SFX_SWEET_KISS EQU $7c
SFX_SWEET_KISS_2 EQU $7d
SFX_BELLY_DRUM EQU $7e
SFX_UNKNOWN_7F EQU $7f
SFX_SLUDGE_BOMB EQU $80
SFX_FORESIGHT EQU $81
SFX_SPITE EQU $82
SFX_OUTRAGE EQU $83
SFX_PERISH_SONG EQU $84
SFX_GIGA_DRAIN EQU $85
SFX_ATTRACT EQU $86
SFX_KINESIS_2 EQU $87
SFX_ZAP_CANNON EQU $88
SFX_MEAN_LOOK EQU $89
SFX_HEAL_BELL EQU $8a
SFX_RETURN EQU $8b
SFX_EXP_BAR EQU $8c
SFX_MILK_DRINK EQU $8d
SFX_PRESENT EQU $8e
SFX_MORNING_SUN EQU $8f
SFX_LEVEL_UP EQU $90
SFX_KEY_ITEM EQU $91
SFX_FANFARE_2 EQU $92
SFX_REGISTER_PHONE_# EQU $93
SFX_3RD_PLACE EQU $94
SFX_GET_EGG_FROM_DAYCARE_MAN EQU $95
SFX_GET_EGG_FROM_DAYCARE_LADY EQU $96
SFX_MOVE_DELETED EQU $97
SFX_2ND_PLACE EQU $98
SFX_1ST_PLACE EQU $99
SFX_CHOOSE_A_CARD EQU $9a
SFX_GET_TM EQU $9b
SFX_GET_BADGE EQU $9c
SFX_QUIT_SLOTS EQU $9d
SFX_EGG_CRACK EQU $9e
SFX_DEX_FANFARE_LESS_THAN_20 EQU $9f
SFX_DEX_FANFARE_140_169 EQU $a0
SFX_DEX_FANFARE_170_199 EQU $a1
SFX_DEX_FANFARE_200_229 EQU $a2
SFX_DEX_FANFARE_230_PLUS EQU $a3
SFX_EVOLVED EQU $a4
SFX_MASTER_BALL EQU $a5
SFX_EGG_HATCH EQU $a6
SFX_GS_INTRO_CHARIZARD_FIREBALL EQU $a7
SFX_GS_INTRO_POKEMON_APPEARS EQU $a8
SFX_FLASH EQU $a9
SFX_GAME_FREAK_LOGO_GS EQU $aa
SFX_NOT_VERY_EFFECTIVE EQU $ab
SFX_DAMAGE EQU $ac
SFX_SUPER_EFFECTIVE EQU $ad
SFX_BALL_BOUNCE EQU $ae
SFX_MOONLIGHT EQU $af
SFX_ENCORE EQU $b0
SFX_BEAT_UP EQU $b1
SFX_BATON_PASS EQU $b2
SFX_BALL_WIGGLE EQU $b3
SFX_SWEET_SCENT EQU $b4
SFX_SWEET_SCENT_2 EQU $b5
SFX_HIT_END_OF_EXP_BAR EQU $b6
SFX_GIVE_TRADEMON EQU $b7
SFX_GET_TRADEMON EQU $b8
SFX_TRAIN_ARRIVED EQU $b9
SFX_STOP_SLOT EQU $ba
SFX_2_BOOPS EQU $bb
SFX_GLASS_TING EQU $bc
SFX_GLASS_TING_2 EQU $bd
SFX_INTRO_UNOWN_1 EQU $be
SFX_INTRO_UNOWN_2 EQU $bf
SFX_INTRO_UNOWN_3 EQU $c0
SFX_DITTO_POP_UP EQU $c1
SFX_DITTO_TRANSFORM EQU $c2
SFX_INTRO_SUICUNE_1 EQU $c3
SFX_INTRO_PICHU EQU $c4
SFX_INTRO_SUICUNE_2 EQU $c5
SFX_INTRO_SUICUNE_3 EQU $c6
SFX_DITTO_BOUNCE EQU $c7
SFX_INTRO_SUICUNE_4 EQU $c8
SFX_GAME_FREAK_PRESENTS EQU $c9
SFX_TINGLE EQU $ca
SFX_UNKNOWN_CB EQU $cb
SFX_TWO_PC_BEEPS EQU $cc
SFX_4_NOTE_DITTY EQU $cd
SFX_TWINKLE EQU $ce
; sound
_4CH1 EQU $c0
_3CH1 EQU $80
@ -3326,6 +3615,8 @@ SPECIAL_BIKESURFMUSIC EQU $003c
SPECIAL_LOADFACESTEP EQU $003f
SPECIAL_GIVESHUCKLE EQU $004b
SPECIAL_SNORLAXAWAKE EQU $0060
SPECIAL_GAMEBOYCHECK EQU $0066
@ -3354,12 +3645,20 @@ SPECIAL_MONCHECK EQU $0097
; predefs
PREDEF_FLAG EQU $03
PREDEF_FILLPP EQU $05
PREDEF_ADDPARTYMON EQU $06
PREDEF_FILLSTATS EQU $0C
PREDEF_FILLMOVES EQU $1B
PREDEF_GETUNOWNLETTER EQU $2D
; flag manipulation
RESET_FLAG EQU 0
SET_FLAG EQU 1
CHECK_FLAG EQU 2
; script vars
NUM_VARS EQU $1b
VAR_MOVEMENT EQU $08
@ -3416,6 +3715,256 @@ BATTLETYPE_FORCEITEM EQU $0a
BATTLETYPE_SUICUNE EQU $0c
; battle variables
BATTLE_VARS_SUBSTATUS1 EQU 0
BATTLE_VARS_SUBSTATUS2 EQU 1
BATTLE_VARS_SUBSTATUS3 EQU 2
BATTLE_VARS_SUBSTATUS4 EQU 3
BATTLE_VARS_SUBSTATUS5 EQU 4
BATTLE_VARS_SUBSTATUS1_OPP EQU 5
BATTLE_VARS_SUBSTATUS2_OPP EQU 6
BATTLE_VARS_SUBSTATUS3_OPP EQU 7
BATTLE_VARS_SUBSTATUS4_OPP EQU 8
BATTLE_VARS_SUBSTATUS5_OPP EQU 9
BATTLE_VARS_STATUS EQU 10
BATTLE_VARS_STATUS_OPP EQU 11
BATTLE_VARS_MOVE_ANIM EQU 12
BATTLE_VARS_MOVE_EFFECT EQU 13
BATTLE_VARS_MOVE_POWER EQU 14
BATTLE_VARS_MOVE_TYPE EQU 15
BATTLE_VARS_MOVE EQU 16
BATTLE_VARS_LAST_COUNTER_MOVE EQU 17
BATTLE_VARS_LAST_COUNTER_MOVE_OPP EQU 18
BATTLE_VARS_LAST_MOVE EQU 19
BATTLE_VARS_LAST_MOVE_OPP EQU 20
SUBSTATUS_IN_LOVE EQU 7
SUBSTATUS_ENCORED EQU 6
SUBSTATUS_ENDURE EQU 5
SUBSTATUS_PERISH EQU 4
SUBSTATUS_IDENTIFIED EQU 3
SUBSTATUS_PROTECT EQU 2
SUBSTATUS_CURSE EQU 1
SUBSTATUS_NIGHTMARE EQU 0
SUBSTATUS_CURLED EQU 0
SUBSTATUS_CONFUSED EQU 7
SUBSTATUS_FLYING EQU 6
SUBSTATUS_UNDERGROUND EQU 5
SUBSTATUS_CHARGED EQU 4
SUBSTATUS_FLINCHED EQU 3
SUBSTATUS_ROLLOUT EQU 1
SUBSTATUS_BIDE EQU 0
SUBSTATUS_LEECH_SEED EQU 7
SUBSTATUS_RAGE EQU 6
SUBSTATUS_RECHARGE EQU 5
SUBSTATUS_SUBSTITUTE EQU 4
SUBSTATUS_FOCUS_ENERGY EQU 2
SUBSTATUS_MIST EQU 1
SUBSTATUS_UNLEASH EQU 0
SUBSTATUS_CANT_RUN EQU 7
SUBSTATUS_DESTINY_BOND EQU 6
SUBSTATUS_LOCK_ON EQU 5
SUBSTATUS_TOXIC EQU 0
SCREENS_REFLECT EQU 4
SCREENS_LIGHT_SCREEN EQU 3
SCREENS_SAFEGUARD EQU 2
SCREENS_SPIKES EQU 0
; status
SLP EQU 7 ; 7 turns
PSN EQU 3
BRN EQU 4
FRZ EQU 5
PAR EQU 6
; move effects
EFFECT_NORMAL_HIT EQU $00
EFFECT_SLEEP EQU $01
EFFECT_POISON_HIT EQU $02
EFFECT_LEECH_HIT EQU $03
EFFECT_BURN_HIT EQU $04
EFFECT_FREEZE_HIT EQU $05
EFFECT_PARALYZE_HIT EQU $06
EFFECT_EXPLOSION EQU $07
EFFECT_DREAM_EATER EQU $08
EFFECT_MIRROR_MOVE EQU $09
EFFECT_ATTACK_UP EQU $0a
EFFECT_DEFENSE_UP EQU $0b
EFFECT_SPEED_UP EQU $0c
EFFECT_SP_ATTACK_UP EQU $0d
EFFECT_SP_DEFENSE_UP EQU $0e
EFFECT_ACCURACY_UP EQU $0f
EFFECT_EVASION_UP EQU $10
EFFECT_ALWAYS_HIT EQU $11
EFFECT_ATTACK_DOWN EQU $12
EFFECT_DEFENSE_DOWN EQU $13
EFFECT_SPEED_DOWN EQU $14
EFFECT_SP_ATTACK_DOWN EQU $15
EFFECT_SP_DEFENSE_DOWN EQU $16
EFFECT_ACCURACY_DOWN EQU $17
EFFECT_EVASION_DOWN EQU $18
EFFECT_HAZE EQU $19
EFFECT_BIDE EQU $1a
EFFECT_RAMPAGE EQU $1b
EFFECT_WHIRLWIND EQU $1c
EFFECT_MULTI_HIT EQU $1d
EFFECT_CONVERSION EQU $1e
EFFECT_FLINCH_HIT EQU $1f
EFFECT_HEAL EQU $20
EFFECT_TOXIC EQU $21
EFFECT_PAY_DAY EQU $22
EFFECT_LIGHT_SCREEN EQU $23
EFFECT_TRI_ATTACK EQU $24
EFFECT_UNUSED_25 EQU $25 ; unused
EFFECT_OHKO EQU $26
EFFECT_RAZOR_WIND EQU $27
EFFECT_SUPER_FANG EQU $28
EFFECT_STATIC_DAMAGE EQU $29
EFFECT_BIND EQU $2a
EFFECT_UNUSED_2B EQU $2b ; unused
EFFECT_DOUBLE_HIT EQU $2c
EFFECT_JUMP_KICK EQU $2d
EFFECT_MIST EQU $2e
EFFECT_FOCUS_ENERGY EQU $2f
EFFECT_RECOIL_HIT EQU $30
EFFECT_CONFUSE EQU $31
EFFECT_ATTACK_UP_2 EQU $32
EFFECT_DEFENSE_UP_2 EQU $33
EFFECT_SPEED_UP_2 EQU $34
EFFECT_SP_ATTACK_UP_2 EQU $35
EFFECT_SP_DEFENSE_UP_2 EQU $36
EFFECT_ACCURACY_UP_2 EQU $37
EFFECT_EVASION_UP_2 EQU $38
EFFECT_TRANSFORM EQU $39
EFFECT_ATTACK_DOWN_2 EQU $3a
EFFECT_DEFENSE_DOWN_2 EQU $3b
EFFECT_SPEED_DOWN_2 EQU $3c
EFFECT_SP_ATTACK_DOWN_2 EQU $3d
EFFECT_SP_DEFENSE_DOWN_2 EQU $3e
EFFECT_ACCURACY_DOWN_2 EQU $3f
EFFECT_EVASION_DOWN_2 EQU $40
EFFECT_REFLECT EQU $41
EFFECT_POISON EQU $42
EFFECT_PARALYZE EQU $43
EFFECT_ATTACK_DOWN_HIT EQU $44
EFFECT_DEFENSE_DOWN_HIT EQU $45
EFFECT_SPEED_DOWN_HIT EQU $46
EFFECT_SP_ATTACK_DOWN_HIT EQU $47
EFFECT_SP_DEFENSE_DOWN_HIT EQU $48
EFFECT_ACCURACY_DOWN_HIT EQU $49
EFFECT_EVASION_DOWN_HIT EQU $4a
EFFECT_SKY_ATTACK EQU $4b
EFFECT_CONFUSE_HIT EQU $4c
EFFECT_TWINEEDLE EQU $4d
EFFECT_UNUSED_4E EQU $4e ; unused
EFFECT_SUBSTITUTE EQU $4f
EFFECT_HYPER_BEAM EQU $50
EFFECT_RAGE EQU $51
EFFECT_MIMIC EQU $52
EFFECT_METRONOME EQU $53
EFFECT_LEECH_SEED EQU $54
EFFECT_SPLASH EQU $55
EFFECT_DISABLE EQU $56
EFFECT_LEVEL_DAMAGE EQU $57
EFFECT_PSYWAVE EQU $58
EFFECT_COUNTER EQU $59
EFFECT_ENCORE EQU $5a
EFFECT_PAIN_SPLIT EQU $5b
EFFECT_SNORE EQU $5c
EFFECT_CONVERSION2 EQU $5d
EFFECT_LOCK_ON EQU $5e
EFFECT_SKETCH EQU $5f
EFFECT_DEFROST_OPPONENT EQU $60
EFFECT_SLEEP_TALK EQU $61
EFFECT_DESTINY_BOND EQU $62
EFFECT_REVERSAL EQU $63
EFFECT_SPITE EQU $64
EFFECT_FALSE_SWIPE EQU $65
EFFECT_HEAL_BELL EQU $66
EFFECT_PRIORITY_HIT EQU $67
EFFECT_TRIPLE_KICK EQU $68
EFFECT_THIEF EQU $69
EFFECT_MEAN_LOOK EQU $6a
EFFECT_NIGHTMARE EQU $6b
EFFECT_FLAME_WHEEL EQU $6c
EFFECT_CURSE EQU $6d
EFFECT_UNUSED_6E EQU $6e ; unused
EFFECT_PROTECT EQU $6f
EFFECT_SPIKES EQU $70
EFFECT_FORESIGHT EQU $71
EFFECT_PERISH_SONG EQU $72
EFFECT_SANDSTORM EQU $73
EFFECT_ENDURE EQU $74
EFFECT_ROLLOUT EQU $75
EFFECT_SWAGGER EQU $76
EFFECT_FURY_CUTTER EQU $77
EFFECT_ATTRACT EQU $78
EFFECT_RETURN EQU $79
EFFECT_PRESENT EQU $7a
EFFECT_FRUSTRATION EQU $7b
EFFECT_SAFEGUARD EQU $7c
EFFECT_SACRED_FIRE EQU $7d
EFFECT_MAGNITUDE EQU $7e
EFFECT_BATON_PASS EQU $7f
EFFECT_PURSUIT EQU $80
EFFECT_RAPID_SPIN EQU $81
EFFECT_UNUSED_82 EQU $82 ; unused
EFFECT_UNUSED_83 EQU $83 ; unused
EFFECT_MORNING_SUN EQU $84
EFFECT_SYNTHESIS EQU $85
EFFECT_MOONLIGHT EQU $86
EFFECT_HIDDEN_POWER EQU $87
EFFECT_RAIN_DANCE EQU $88
EFFECT_SUNNY_DAY EQU $89
EFFECT_STEEL_WING EQU $8a
EFFECT_METAL_CLAW EQU $8b
EFFECT_ANCIENTPOWER EQU $8c
EFFECT_FAKE_OUT EQU $8d
EFFECT_BELLY_DRUM EQU $8e
EFFECT_PSYCH_UP EQU $8f
EFFECT_MIRROR_COAT EQU $90
EFFECT_SKULL_BASH EQU $91
EFFECT_TWISTER EQU $92
EFFECT_EARTHQUAKE EQU $93
EFFECT_FUTURE_SIGHT EQU $94
EFFECT_GUST EQU $95
EFFECT_STOMP EQU $96
EFFECT_SOLARBEAM EQU $97
EFFECT_THUNDER EQU $98
EFFECT_TELEPORT EQU $99
EFFECT_BEAT_UP EQU $9a
EFFECT_FLY EQU $9b
EFFECT_DEFENSE_CURL EQU $9c
; battle animations
; animations below fc are 1:1 with move constants
ANIM_CONFUSED EQU $103
ANIM_SLEEP EQU $104
ANIM_INLOVE EQU $10a
WEATHER_RAIN EQU 1
WEATHER_SUN EQU 2
WEATHER_SANDSTORM EQU 3
WEATHER_RAIN_END EQU 4
WEATHER_SUN_END EQU 5
WEATHER_SANDSTORM_END EQU 6
; joypad
BUTTONS EQU %00010000
D_PAD EQU %00100000

View File

@ -98,6 +98,8 @@ chars = {
0xE9: "&",
0xEA: "é",
0xEB: "",
0xED: "",
0xEE: "",
0xEF: "",
0xF0: "¥",
0xF1: "×",

View File

@ -1471,7 +1471,7 @@ ScriptPointerLabelAfterBank.parse = _parse_script_pointer_bytes
class PointerLabelToScriptPointer(PointerLabelParam):
def parse(self):
PointerLabelParam.parse(self)
address = calculate_pointer_from_bytes_at(self.address, bank=self.bank)
address = calculate_pointer_from_bytes_at(self.parsed_address, bank=self.bank)
address2 = calculate_pointer_from_bytes_at(address, bank="reverse") # maybe not "reverse"?
self.script = parse_script_engine_script_at(address2, origin=False, map_group=self.map_group, map_id=self.map_id, force=self.force, debug=self.debug)
@ -2912,7 +2912,7 @@ music_command_enders = [0xEA, 0xEB, 0xEE, 0xFC, 0xFF,]
# special case for 0xFD (if loopchannel.count = 0, break)
def create_music_command_classes(debug=False):
klasses = [GivePoke]
klasses = []
for (byte, cmd) in music_commands_new.items():
cmd_name = cmd[0].replace(" ", "_")
params = {"id": byte, "size": 1, "end": byte in music_command_enders, "macro_name": cmd_name}
@ -2938,6 +2938,221 @@ def create_music_command_classes(debug=False):
return klasses
music_classes = create_music_command_classes()
effect_commands = {
0x1: ['checkturn'],
0x2: ['checkobedience'],
0x3: ['usedmovetext'],
0x4: ['doturn'],
0x5: ['critical'],
0x6: ['damagestats'],
0x7: ['stab'],
0x8: ['damagevariation'],
0x9: ['checkhit'],
0xa: ['effect0x0a'],
0xb: ['effect0x0b'],
0xc: ['effect0x0c'],
0xd: ['resulttext'],
0xe: ['checkfaint'],
0xf: ['criticaltext'],
0x10: ['supereffectivetext'],
0x11: ['checkdestinybond'],
0x12: ['buildopponentrage'],
0x13: ['poisontarget'],
0x14: ['sleeptarget'],
0x15: ['draintarget'],
0x16: ['eatdream'],
0x17: ['burntarget'],
0x18: ['freezetarget'],
0x19: ['paralyzetarget'],
0x1a: ['selfdestruct'],
0x1b: ['mirrormove'],
0x1c: ['statup'],
0x1d: ['statdown'],
0x1e: ['payday'],
0x1f: ['conversion'],
0x20: ['resetstats'],
0x21: ['storeenergy'],
0x22: ['unleashenergy'],
0x23: ['forceswitch'],
0x24: ['endloop'],
0x25: ['flinchtarget'],
0x26: ['ohko'],
0x27: ['recoil'],
0x28: ['mist'],
0x29: ['focusenergy'],
0x2a: ['confuse'],
0x2b: ['confusetarget'],
0x2c: ['heal'],
0x2d: ['transform'],
0x2e: ['screen'],
0x2f: ['poison'],
0x30: ['paralyze'],
0x31: ['substitute'],
0x32: ['rechargenextturn'],
0x33: ['mimic'],
0x34: ['metronome'],
0x35: ['leechseed'],
0x36: ['splash'],
0x37: ['disable'],
0x38: ['cleartext'],
0x39: ['charge'],
0x3a: ['checkcharge'],
0x3b: ['traptarget'],
0x3c: ['effect0x3c'],
0x3d: ['rampage'],
0x3e: ['checkrampage'],
0x3f: ['constantdamage'],
0x40: ['counter'],
0x41: ['encore'],
0x42: ['painsplit'],
0x43: ['snore'],
0x44: ['conversion2'],
0x45: ['lockon'],
0x46: ['sketch'],
0x47: ['defrostopponent'],
0x48: ['sleeptalk'],
0x49: ['destinybond'],
0x4a: ['spite'],
0x4b: ['falseswipe'],
0x4c: ['healbell'],
0x4d: ['kingsrock'],
0x4e: ['triplekick'],
0x4f: ['kickcounter'],
0x50: ['thief'],
0x51: ['arenatrap'],
0x52: ['nightmare'],
0x53: ['defrost'],
0x54: ['curse'],
0x55: ['protect'],
0x56: ['spikes'],
0x57: ['foresight'],
0x58: ['perishsong'],
0x59: ['startsandstorm'],
0x5a: ['endure'],
0x5b: ['checkcurl'],
0x5c: ['rolloutpower'],
0x5d: ['effect0x5d'],
0x5e: ['furycutter'],
0x5f: ['attract'],
0x60: ['happinesspower'],
0x61: ['present'],
0x62: ['damagecalc'],
0x63: ['frustrationpower'],
0x64: ['safeguard'],
0x65: ['checksafeguard'],
0x66: ['getmagnitude'],
0x67: ['batonpass'],
0x68: ['pursuit'],
0x69: ['clearhazards'],
0x6a: ['healmorn'],
0x6b: ['healday'],
0x6c: ['healnite'],
0x6d: ['hiddenpower'],
0x6e: ['startrain'],
0x6f: ['startsun'],
0x70: ['attackup'],
0x71: ['defenseup'],
0x72: ['speedup'],
0x73: ['specialattackup'],
0x74: ['specialdefenseup'],
0x75: ['accuracyup'],
0x76: ['evasionup'],
0x77: ['attackup2'],
0x78: ['defenseup2'],
0x79: ['speedup2'],
0x7a: ['specialattackup2'],
0x7b: ['specialdefenseup2'],
0x7c: ['accuracyup2'],
0x7d: ['evasionup2'],
0x7e: ['attackdown'],
0x7f: ['defensedown'],
0x80: ['speeddown'],
0x81: ['specialattackdown'],
0x82: ['specialdefensedown'],
0x83: ['accuracydown'],
0x84: ['evasiondown'],
0x85: ['attackdown2'],
0x86: ['defensedown2'],
0x87: ['speeddown2'],
0x88: ['specialattackdown2'],
0x89: ['specialdefensedown2'],
0x8a: ['accuracydown2'],
0x8b: ['evasiondown2'],
0x8c: ['statmessageuser'],
0x8d: ['statmessagetarget'],
0x8e: ['statupfailtext'],
0x8f: ['statdownfailtext'],
0x90: ['effectchance'],
0x91: ['effect0x91'],
0x92: ['effect0x92'],
0x93: ['switchturn'],
0x94: ['fakeout'],
0x95: ['bellydrum'],
0x96: ['psychup'],
0x97: ['rage'],
0x98: ['doubleflyingdamage'],
0x99: ['doubleundergrounddamage'],
0x9a: ['mirrorcoat'],
0x9b: ['checkfuturesight'],
0x9c: ['futuresight'],
0x9d: ['doubleminimizedamage'],
0x9e: ['skipsuncharge'],
0x9f: ['thunderaccuracy'],
0xa0: ['teleport'],
0xa1: ['beatup'],
0xa2: ['ragedamage'],
0xa3: ['effect0xa3'],
0xa4: ['allstatsup'],
0xa5: ['effect0xa5'],
0xa6: ['effect0xa6'],
0xa7: ['effect0xa7'],
0xa8: ['effect0xa8'],
0xa9: ['clearmissdamage'],
0xaa: ['wait'],
0xab: ['hittarget'],
0xac: ['tristatuschance'],
0xad: ['supereffectivelooptext'],
0xae: ['startloop'],
0xaf: ['curl'],
0xfe: ['endturn'],
0xff: ['endmove'],
}
effect_command_enders = [0xFF,]
def create_effect_command_classes(debug=False):
klasses = []
for (byte, cmd) in effect_commands.items():
cmd_name = cmd[0].replace(" ", "_")
params = {
"id": byte,
"size": 1,
"end": byte in effect_command_enders,
"macro_name": cmd_name
}
params["param_types"] = {}
if len(cmd) > 1:
param_types = cmd[1:]
for (i, each) in enumerate(param_types):
thing = {"name": each[0], "class": each[1]}
params["param_types"][i] = thing
if debug:
print "each is: " + str(each)
print "thing[class] is: " + str(thing["class"])
params["size"] += thing["class"].size
klass_name = cmd_name+"Command"
klass = classobj(klass_name, (Command,), params)
globals()[klass_name] = klass
klasses.append(klass)
# later an individual klass will be instantiated to handle something
return klasses
effect_classes = create_effect_command_classes()
def generate_macros(filename="../script_macros.asm"):
"""generates all macros based on commands
this is dumped into script_macros.asm"""
@ -6201,7 +6416,7 @@ def parse_map_header_by_id(*args, **kwargs):
elif len(args) == 1 and type(args[0]) == str:
map_group = int(args[0].split(".")[0])
map_id = int(args[0].split(".")[1])
else:
elif map_group == None and map_id == None:
raise Exception("dunno what to do with input")
offset = map_names[map_group]["offset"]
map_header_offset = offset + ((map_id - 1) * map_header_byte_size)

View File

@ -1436,8 +1436,8 @@ def mass_to_colored_png(debug=False):
for name in files:
if debug: print os.path.splitext(name), os.path.join(root, name)
if os.path.splitext(name)[1] == '.2bpp':
if name[:5]+'.pal' in files:
to_png(os.path.join(root, name), None, os.path.join(root, name[:-5]+'.pal'))
if os.path.splitext(name)[0]+'.pal' in files:
to_png(os.path.join(root, name), None, os.path.join(root, os.path.splitext(name)[0]+'.pal'))
else:
to_png(os.path.join(root, name))
@ -1459,26 +1459,26 @@ def mass_to_colored_png(debug=False):
def mass_decompress(debug=False):
for root, dirs, files in os.walk('../gfx/'):
for file in files:
if 'lz' in file:
for name in files:
if 'lz' in name:
if '/pics' in root:
if 'front' in file:
if 'front' in name:
id = root.split('pics/')[1][:3]
if id != 'egg':
with open(root+'/'+file, 'rb') as lz: de = Decompressed(lz.read(), 'vert', sizes[int(id)-1])
with open(os.path.join(root, name), 'rb') as lz: de = Decompressed(lz.read(), 'vert', sizes[int(id)-1])
else:
with open(root+'/'+file, 'rb') as lz: de = Decompressed(lz.read(), 'vert', 4)
to_file(root+'/'+'front.2bpp', de.pic)
to_file(root+'/'+'tiles.2bpp', de.animtiles)
elif 'back' in file:
with open(root+'/'+file, 'rb') as lz: de = Decompressed(lz.read(), 'vert')
to_file(root+'/'+'back.2bpp', de.output)
with open(os.path.join(root, name), 'rb') as lz: de = Decompressed(lz.read(), 'vert', 4)
to_file(os.path.join(root, 'front.2bpp'), de.pic)
to_file(os.path.join(root, 'tiles.2bpp'), de.animtiles)
elif 'back' in name:
with open(os.path.join(root, name), 'rb') as lz: de = Decompressed(lz.read(), 'vert')
to_file(os.path.join(root, 'back.2bpp'), de.output)
elif '/trainers' in root or '/fx' in root:
with open(root+'/'+file, 'rb') as lz: de = Decompressed(lz.read(), 'vert')
to_file(root+'/'+file[:-3]+'.2bpp', de.output)
with open(os.path.join(root, name), 'rb') as lz: de = Decompressed(lz.read(), 'vert')
to_file(os.path.join(root, os.path.splitext(name)[0]+'.2bpp'), de.output)
else:
with open(root+'/'+file, 'rb') as lz: de = Decompressed(lz.read())
to_file(root+file[:-3]+'.2bpp', de.output)
with open(os.path.join(root, name), 'rb') as lz: de = Decompressed(lz.read())
to_file(os.path.join(root, os.path.splitext(name)[0]+'.2bpp'), de.output)
def append_terminator_to_lzs(directory):
# fix lzs that were extracted with a missing terminator

View File

@ -104,6 +104,11 @@ Gb.loadVBA()
from vba_config import *
try:
import vba_keyboard as keyboard
except ImportError:
print "Not loading the keyboard module (which uses networkx)."
if not os.path.exists(rom_path):
raise Exception("rom_path is not configured properly; edit vba_config.py?")
@ -163,10 +168,14 @@ def button_combiner(buttons):
buttons.replace("select", "")
result |= button_masks["select"]
if isinstance(buttons, list):
if len(buttons) > 9:
raise Exception("can't combine more than 9 buttons at a time")
for each in buttons:
result |= button_masks[each]
print "button: " + str(result)
#print "button: " + str(result)
return result
def load_rom(path=None):
@ -434,6 +443,69 @@ def press(buttons, steplimit=1):
for step_counter in range(0, steplimit):
Gb.step(number)
def get_buttons():
"""
Returns the currentButtons[0] value (an integer with bits set for which
buttons are currently pressed).
"""
return Gb.getCurrentButtons()
class State(RomList):
name = None
class Recording:
def __init__(self):
self.frames = []
self.states = {}
def _get_frame_count(self):
return len(self.frames)
frame_count = property(fget=_get_frame_count)
def save(self, name=None):
"""
Saves the current state.
"""
state = State(get_state())
state.name = name
self.states[self.frame_count] = state
def load(self, name):
"""
Loads a state by name in the state list.
"""
for state in self.states.items():
if state.name == name:
set_state(state)
return state
return False
def step(self, stepcount=1, first_frame=0, replay=False):
"""
Records button presses for each frame.
"""
if replay:
stepcount = len(self.frames[first_name:])
for counter in range(first_frame, stepcount):
if replay:
press(self.frames[counter], steplimit=0)
else:
self.frames.append(get_buttons())
nstep(1)
def replay_from(self, thing):
"""
Replays based on a State or the name of a saved state.
"""
if isinstance(thing, State):
set_state(thing)
else:
thing = self.load(thing)
frame_id = self.states.index(thing)
self.step(first_frame=frame_id, replay=True)
class Registers:
order = [
"pc",
@ -564,6 +636,66 @@ def call(bank, address):
else:
registers["pc"] = address
class cheats:
"""
Helpers to manage the cheating infrastructure.
import vba; vba.load_rom(); vba.cheats.add_gameshark("0100CFCF", "text speedup 1"); vba.cheats.add_gameshark("0101CCCF", "text speedup 2"); vba.go()
"""
@staticmethod
def enable(id):
"""
void gbCheatEnable(int i)
"""
Gb.cheatEnable(id)
@staticmethod
def disable(id):
"""
void gbCheatDisable(int i)
"""
Gb.cheatDisable(id)
@staticmethod
def load_file(filename):
"""
Loads a .clt file. By default each cheat is disabled.
"""
Gb.loadCheatsFromFile(filename)
@staticmethod
def remove_all():
"""
Removes all cheats from memory.
void gbCheatRemoveAll()
"""
Gb.cheatRemoveAll()
@staticmethod
def remove_cheat(id):
"""
Removes a specific cheat from memory by id.
void gbCheatRemove(int i)
"""
Gb.cheatRemove(id)
@staticmethod
def add_gamegenie(code, description=""):
"""
void gbAddGgCheat(const char *code, const char *desc)
"""
Gb.cheatAddGamegenie(code, description)
@staticmethod
def add_gameshark(code, description=""):
"""
gbAddGsCheat(const char *code, const char *desc)
"""
Gb.cheatAddGameshark(code, description)
class crystal:
"""
Just a simple namespace to store a bunch of functions for Pokémon Crystal.
@ -766,6 +898,25 @@ class crystal:
return output
@staticmethod
def keyboard_apply(button_sequence):
"""
Applies a sequence of buttons to the on-screen keyboard.
"""
for buttons in button_sequence:
press(buttons)
nstep(2)
press([])
@staticmethod
def write(something="TrAiNeR"):
"""
Uses a planning algorithm to type out a word in the most efficient way
possible.
"""
button_sequence = keyboard.plan_typing(something)
crystal.keyboard_apply([[x] for x in button_sequence])
@staticmethod
def set_partymon2():
"""
@ -836,6 +987,14 @@ class TestEmulator(unittest.TestCase):
self.assertTrue("TRAINER" in text)
class TestWriter(unittest.TestCase):
def test_very_basic(self):
button_sequence = keyboard.plan_typing("an")
expected_result = ["select", "a", "d", "r", "r", "r", "r", "a"]
self.assertEqual(len(expected_result), len(button_sequence))
self.assertEqual(expected_result, button_sequence)
if __name__ == "__main__":
unittest.main()

View File

@ -2,13 +2,10 @@
# -*- encoding: utf-8 -*-
import os
# by default we assume the user has things in their $HOME
home = os.path.expanduser("~") # or System.getProperty("user.home")
# by default we assume the user has vba in pokecrystal/extras
project_path = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))
# and that the pokecrystal project folder is in there somewhere
project_path = os.path.join(home, os.path.join("code", "pokecrystal"))
# save states are in ~/code/pokecrystal/save-states/
# save states are in pokecrystal/save-states/
save_state_path = os.path.join(project_path, "save-states")
# where is your rom?

563
extras/vba_keyboard.py Normal file
View File

@ -0,0 +1,563 @@
# -*- encoding: utf-8 -*-
"""
This file constructs a networkx.DiGraph object called graph, which can be used
to find the shortest path of keypresses on the keyboard to type a word.
"""
import itertools
import networkx
graph = networkx.DiGraph()
graph_data = """
A a select
A B r
A I l
A lower-upper-column-1 u
A J d
B b select
B A l
B C r
B lower-upper-column-2 u
B K d
C c select
C D r
C B l
C lower-upper-column-3 u
C L d
D d select
D E r
D C l
D del-upper-column-1 u
D M d
E e select
E del-upper-column-2 u
E N d
E D l
E F r
F f select
F del-upper-column-3 u
F O d
F E l
F G r
G g select
G end-upper-column-1 u
G P d
G F l
G H r
H h select
H end-upper-column-2 u
H Q d
H G l
H I r
I i select
I end-upper-column-3 u
I R d
I H l
I A r
J j select
J A u
J S d
J R l
J K r
K k select
K B u
K T d
K J l
K L r
L l select
L C u
L U d
L K l
L M r
M m select
M D u
M V d
M L l
M N r
N n select
N E u
N W d
N M l
N O r
O o select
O F u
O X d
O N l
O P r
P p select
P G u
P Y d
P O l
P Q r
Q q select
Q H u
Q Z d
Q P l
Q R r
R r select
R I u
R space-upper-x8-y2 d
R Q l
R J r
S s select
S J u
S - d
S space-upper-x8-y2 l
T t select
T K u
T ? d
T S l
T U r
U u select
U L u
U ! d
U T l
U V r
V v select
V M u
V / d
V U l
V W r
W w select
W N u
W . d
W V l
W X r
X x select
X O u
X , d
X W l
X Y r
Y y select
Y P u
Y space-upper-x6-y3 d
Y X l
Y Z r
Z z select
Z Q u
Z space-upper-x7-y3 d
Z Y l
Z space-upper-x8-y2 r
end-upper-column-1 lower-upper-column-1 r
end-upper-column-2 lower-upper-column-1 r
end-upper-column-3 lower-upper-column-1 r
end-upper-column-1 del-upper-column-1 l
end-upper-column-2 del-upper-column-1 l
end-upper-column-3 del-upper-column-1 l
lower-upper-column-1 end-upper-column-1 l
lower-upper-column-2 end-upper-column-1 l
lower-upper-column-3 end-upper-column-1 l
lower-upper-column-1 del-upper-column-1 r
lower-upper-column-2 del-upper-column-1 r
lower-upper-column-3 del-upper-column-1 r
del-upper-column-1 lower-upper-column-1 l
del-upper-column-2 lower-upper-column-1 l
del-upper-column-3 lower-upper-column-1 l
del-upper-column-1 end-upper-column-1 r
del-upper-column-2 end-upper-column-1 r
del-upper-column-3 end-upper-column-1 r
lower-upper-column-1 A d
lower-upper-column-2 B d
lower-upper-column-3 C d
lower-upper-column-1 - u
lower-upper-column-2 ? u
lower-upper-column-3 ! u
del-upper-column-1 D d
del-upper-column-2 E d
del-upper-column-3 F d
del-upper-column-1 / u
del-upper-column-2 . u
del-upper-column-3 , u
end-upper-column-1 G d
end-upper-column-2 H d
end-upper-column-3 I d
end-upper-column-1 space-upper-x6-y3 u
end-upper-column-2 space-upper-x7-y3 u
end-upper-column-3 space-upper-x8-y3 u
space-upper-x8-y2 space-lower-x8-y2 select
space-upper-x8-y2 R u
space-upper-x8-y2 space-upper-x8-y3 d
space-upper-x8-y2 Z l
space-upper-x8-y2 S r
space-upper-x8-y3 MN select
space-upper-x8-y3 space-upper-x8-y2 u
space-upper-x8-y3 end-upper-column-3 d
space-upper-x8-y3 space-upper-x7-y3 l
space-upper-x8-y3 - r
space-upper-x7-y3 PK select
space-upper-x7-y3 Z u
space-upper-x7-y3 end-upper-column-2 d
space-upper-x7-y3 space-upper-x6-y3 l
space-upper-x7-y3 space-upper-x8-y3 r
space-upper-x6-y3 ] select
space-upper-x6-y3 Y u
space-upper-x6-y3 end-upper-column-1 d
space-upper-x6-y3 , l
space-upper-x6-y3 space-upper-x7-y3 r
end-upper-column-1 end-lower-column-1 select
end-upper-column-2 end-lower-column-2 select
end-upper-column-3 end-lower-column-3 select
lower-upper-column-1 lower-lower-column-1 select
lower-upper-column-2 lower-lower-column-2 select
lower-upper-column-3 lower-lower-column-3 select
del-upper-column-1 del-lower-column-1 select
del-upper-column-2 del-lower-column-2 select
del-upper-column-3 del-lower-column-3 select
lower-lower-column-1 × u
lower-lower-column-2 ( u
lower-lower-column-3 ) u
lower-lower-column-1 a d
lower-lower-column-2 b d
lower-lower-column-3 c d
end-lower-column-1 ] u
end-lower-column-2 PK u
end-lower-column-3 MN u
end-lower-column-1 g d
end-lower-column-2 h d
end-lower-column-3 i d
del-lower-column-1 : u
del-lower-column-2 ; u
del-lower-column-3 [ u
del-lower-column-1 d d
del-lower-column-2 e d
del-lower-column-3 f d
- × select
- S u
- lower-upper-column-1 d
- space-upper-x8-y3 l
- ? r
? ( select
? T u
? lower-upper-column-2 d
? - l
? ! r
! ) select
! U u
! lower-upper-column-3 d
! ? l
! / r
/ : select
/ V u
/ del-upper-column-1 d
/ ! l
/ . r
. ; select
. W u
. del-upper-column-2 d
. / l
. , r
, [ select
, X u
, del-upper-column-3 d
, . l
, space-upper-x6-y3 r
× - select
× s u
× upper-lower-column-1 d
× MN l
× ( r
( ? select
( t u
( upper-lower-column-2 d
( × l
( ) r
) ! select
) u u
) upper-lower-column-3 d
) ( l
) : r
: / select
: v u
: del-lower-column-1 d
: ) l
: ; r
; . select
; w u
; del-lower-column-2 d
; : l
; [ r
[ , select
[ x u
[ del-lower-column-3 d
[ ; l
[ ] r
] space-upper-x6-y3 select
] y u
] end-lower-column-1 d
] [ l
] PK r
PK space-upper-x7-y3 select
PK z u
PK end-lower-column-2 d
PK ] l
PK MN r
MN space-upper-x8-y3 select
MN space-lower-x8-y2 u
MN end-lower-column-3 d
MN PK l
MN × r
space-lower-x8-y2 space-upper-x8-y2 select
space-lower-x8-y2 r u
space-lower-x8-y2 MN d
space-lower-x8-y2 z l
space-lower-x8-y2 s r
a A select
a upper-lower-column-1 u
a j d
a i l
a b r
b B select
b upper-lower-column-2 u
b k d
b a l
b c r
c C select
c upper-lower-column-3 u
c l d
c b l
c d r
d D select
d del-lower-column-1 u
d m d
d c l
d e r
e E select
e del-lower-column-2 u
e n d
e d l
e f r
f F select
f del-lower-column-3 u
f o d
f e l
f g r
g G select
g end-lower-column-1 u
g p d
g f l
g h r
h H select
h end-lower-column-2 u
h q d
h g l
h i r
i I select
i end-lower-column-3 u
i r d
i h l
i a r
j J select
j a u
j s d
j r l
j k r
k K select
k b u
k t d
k j l
k l r
l L select
l c u
l u d
l k l
l m r
m M select
m d u
m v d
m l l
m n r
n N select
n e u
n w d
n m l
n o r
o O select
o f u
o x d
o n l
o p r
p P select
p g u
p y d
p o l
p q r
q Q select
q h u
q z d
q p l
q r r
r R select
r i u
r space-lower-x8-y2 d
r q l
r j r
s S select
s j u
s × d
s space-lower-x8-y2 l
s t r
t T select
t k u
t ( d
t s l
t u r
u U select
u l u
u ) d
u t l
u v r
v V select
v m u
v : d
v u l
v w r
w W select
w n u
w ; d
w v l
w x r
x X select
x o u
x [ d
x w l
x y r
y Y select
y p u
y ] d
y x l
y z r
z Z select
z q u
z PK d
z y l
z space-lower-x8-y2 r"""
for line in graph_data.split("\n"):
if line == "":
continue
elif line[0] == "#":
continue
(node1, node2, edge_name) = line.split(" ")
graph.add_edge(node1, node2, key=edge_name)
#print "Adding edge ("+edge_name+") "+node1+" -> "+node2
def shortest_path(node1, node2):
"""
Figures out the shortest list of button presses to move from one letter to
another.
"""
buttons = []
last = None
path = networkx.shortest_path(graph, node1, node2)
for each in path:
if last != None:
buttons.append(convert_nodes_to_button_press(last, each))
last = each
return buttons
#return [convert_nodes_to_button_press(node3, node4) for (node3, node4) in zip(*(iter(networkx.shortest_path(graph, node1, node2)),) * 2)]
def convert_nodes_to_button_press(node1, node2):
"""
Determines the button necessary to switch from node1 to node2.
"""
print "getting button press for state transition: " + node1 + " -> " + node2
return graph.get_edge_data(node1, node2)["key"]
def plan_typing(text, current="A"):
"""
Plans a sequence of button presses to spell out the given text.
"""
buttons = []
for target in text:
if target == current:
buttons.append("a")
else:
print "Finding the shortest path between " + current + " and " + target
more_buttons = shortest_path(current, target)
buttons.extend(more_buttons)
buttons.append("a")
current = target
return buttons

View File

@ -1,5 +1,26 @@
; Graciously aped from http://nocash.emubase.de/pandocs.htm .
; MBC3
MBC3SRamEnable EQU $0000
MBC3RomBank EQU $2000
MBC3SRamBank EQU $4000
MBC3LatchClock EQU $6000
MBC3RTC EQU $a000
SRAM_DISABLE EQU $00
SRAM_ENABLE EQU $0a
RTC_S EQU $08 ; Seconds 0-59 (0-3Bh)
RTC_M EQU $09 ; Minutes 0-59 (0-3Bh)
RTC_H EQU $0a ; Hours 0-23 (0-17h)
RTC_DL EQU $0b ; Lower 8 bits of Day Counter (0-FFh)
RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
; Bit 0 Most significant bit of Day Counter (Bit 8)
; Bit 6 Halt (0=Active, 1=Stop Timer)
; Bit 7 Day Counter Carry Bit (1=Counter Overflow)
; Hardware registers
rJOYP EQU $ff00 ; Joypad (R/W)
rSB EQU $ff01 ; Serial transfer data (R/W)
rSC EQU $ff02 ; Serial Transfer Control (R/W)

60
hram.asm Normal file
View File

@ -0,0 +1,60 @@
hPushOAM EQU $ff80
hBuffer EQU $ff8b
hRTCDayHi EQU $ff8d
hRTCDayLo EQU $ff8e
hRTCHours EQU $ff8f
hRTCMinutes EQU $ff90
hRTCSeconds EQU $ff91
hHours EQU $ff94
hMinutes EQU $ff96
hSeconds EQU $ff98
hROMBank EQU $ff9d
hJoypadReleased EQU $ffa2
hJoypadPressed EQU $ffa3
hJoypadDown EQU $ffa4
hJoypadSum EQU $ffa5
hJoyReleased EQU $ffa6
hJoyPressed EQU $ffa7
hJoyDown EQU $ffa8
hPastLeadingZeroes EQU $ffb3
hDividend EQU $ffb3
hDivisor EQU $ffb7
hQuotient EQU $ffb4
hMultiplicand EQU $ffb4
hMultiplier EQU $ffb7
hProduct EQU $ffb3
hMathBuffer EQU $ffb8
hLCDStatCustom EQU $ffc6
hBGMapMode EQU $ffd4
hBGMapThird EQU $ffd5
hBGMapAddress EQU $ffd6
hOAMUpdate EQU $ffd8
hSPBuffer EQU $ffd9
hBGMapUpdate EQU $ffdb
hTileAnimFrame EQU $ffdf
hRandomAdd EQU $ffe1
hRandomSub EQU $ffe2
hBattleTurn EQU $ffe4
hCGBPalUpdate EQU $ffe5
hCGB EQU $ffe6
hSGB EQU $ffe7
hDMATransfer EQU $ffe8

2053
items/item_attributes.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -9,9 +9,9 @@ JoypadInt: ; 92e
ClearJoypadPublic: ; 92f
xor a
; Pressed this frame (delta)
ld [$ffa7], a
ld [hJoyPressed], a
; Currently pressed
ld [$ffa8], a
ld [hJoyDown], a
ret
; 935
@ -22,10 +22,10 @@ Joypad: ; 935
; Updates:
; $ffa2: released this frame (delta)
; $ffa3: pressed this frame (delta)
; $ffa4: currently pressed
; $ffa5: pressed so far
; hJoypadReleased: released this frame (delta)
; hJoypadPressed: pressed this frame (delta)
; hJoypadDown: currently pressed
; hJoypadSum: pressed so far
; Any of these three bits can be used to disable input.
ld a, [$cfbe]
@ -76,27 +76,27 @@ Joypad: ; 935
ld [rJOYP], a
; To get the delta we xor the last frame's input with the new one.
ld a, [$ffa4] ; last frame
ld a, [hJoypadDown] ; last frame
ld e, a
xor b
ld d, a
; Released this frame:
and e
ld [$ffa2], a
ld [hJoypadReleased], a
; Pressed this frame:
ld a, d
and b
ld [$ffa3], a
ld [hJoypadPressed], a
; Add any new presses to the list of collective presses:
ld c, a
ld a, [$ffa5]
ld a, [hJoypadSum]
or c
ld [$ffa5], a
ld [hJoypadSum], a
; Currently pressed:
ld a, b
ld [$ffa4], a
ld [hJoypadDown], a
; Now that we have the input, we can do stuff with it.
@ -110,11 +110,11 @@ Joypad: ; 935
GetJoypadPublic: ; 984
; Update mirror joypad input from $ffa4 (real input)
; Update mirror joypad input from hJoypadDown (real input)
; $ffa6: released this frame (delta)
; $ffa7: pressed this frame (delta)
; $ffa8: currently pressed
; hJoyReleased: released this frame (delta)
; hJoyPressed: pressed this frame (delta)
; hJoyDown: currently pressed
; bit 0 A
; 1 B
@ -137,28 +137,28 @@ GetJoypadPublic: ; 984
jr z, .auto
; To get deltas, take this and last frame's input.
ld a, [$ffa4] ; real input
ld a, [hJoypadDown] ; real input
ld b, a
ld a, [$ffa8] ; last frame mirror
ld a, [hJoyDown] ; last frame mirror
ld e, a
; Released this frame:
xor b
ld d, a
and e
ld [$ffa6], a
ld [hJoyReleased], a
; Pressed this frame:
ld a, d
and b
ld [$ffa7], a
ld [hJoyPressed], a
; It looks like the collective presses got commented out here.
ld c, a
; Currently pressed:
ld a, b
ld [$ffa8], a ; frame input
ld [hJoyDown], a ; frame input
.quit
pop bc
@ -174,7 +174,7 @@ GetJoypadPublic: ; 984
; A value of $ff will immediately end the stream.
; Read from the input stream.
ld a, [$ff9d]
ld a, [hROMBank]
push af
ld a, [AutoInputBank]
rst Bankswitch
@ -232,8 +232,8 @@ GetJoypadPublic: ; 984
pop af
rst Bankswitch
ld a, b
ld [$ffa7], a ; pressed
ld [$ffa8], a ; input
ld [hJoyPressed], a ; pressed
ld [hJoyDown], a ; input
jr .quit
; 9ee
@ -251,9 +251,9 @@ StartAutoInput: ; 9ee
ld [AutoInputLength], a
; Reset input mirrors.
xor a
ld [$ffa7], a ; pressed this frame
ld [$ffa6], a ; released this frame
ld [$ffa8], a ; currently pressed
ld [hJoyPressed], a ; pressed this frame
ld [hJoyReleased], a ; released this frame
ld [hJoyDown], a ; currently pressed
ld a, AUTO_INPUT
ld [InputType], a

5876
main.asm

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ BattleTower1F_MapScriptHeader: ; 0x9e393
; triggers
dw UnknownScript_0x9e39d, $0000
dw $63d3, $0000
dw UnknownScript_0x9e3d3, $0000
; callback count
db 0
@ -39,6 +39,7 @@ UnknownScript_0x9e3c7: ; 0x9e3c7
special $0086
UnknownScript_0x9e3d1: ; 0x9e3d1
dotrigger $1
UnknownScript_0x9e3d3: ; 0x9e3d3
end
; 0x9e3d4
@ -57,7 +58,7 @@ UnknownScript_0x9e3e0: ; 0x9e3e0
UnknownScript_0x9e3e2: ; 0x9e3e2
writebyte $2
special $0086
if_equal $3, $74e4 ; wtf ?
if_equal $3, BattleTowerBattleRoomScript_0x9f4e4
loadfont
2writetext UnknownText_0x9e5ab
keeptextopen
@ -119,7 +120,7 @@ UnknownScript_0x9e454: ; 0x9e454
warpsound
disappear $2
stopfollow
applymovement $0, $6576
applymovement $0, MovementData_0x9e576
warpcheck
end
; 0x9e47a
@ -177,9 +178,21 @@ UnknownScript_0x9e4bb: ; 0x9e4bb
end
; 0x9e4be
INCBIN "baserom.gbc",$9e4be,$9e4e4 - $9e4be
UnknownScript_0x9e4e4: ; 0x9e4e4
UnknownScript_0x9e4be: ; 0x9e4be
2writetext UnknownText_0x9ef1f
yesorno
iffalse UnknownScript_0x9e3fc
special $0004
iffalse UnknownScript_0x9e3fc
writebyte $1
special $0086
special $0075
if_equal $a, UnknownScript_0x9e3fc
if_not_equal $0, UnknownScript_0x9e550
2writetext UnknownText_0x9e9eb
spriteface $2, $2
2writetext UnknownText_0x9ea1b
closetext
spriteface $2, $0
loadmovesprites
@ -282,6 +295,7 @@ MovementData_0x9e571: ; 0x9e571
step_up
step_up
step_up
MovementData_0x9e576: ; 0x9e576
step_up
step_end
; 0x9e578

View File

@ -108,6 +108,7 @@ UnknownScript_0x9f4d9: ; 0x9f4d9
pause 60
special $002f
warpfacing $1, GROUP_BATTLE_TOWER_1F, MAP_BATTLE_TOWER_1F, $7, $7
BattleTowerBattleRoomScript_0x9f4e4: ; 0x9f4e4
loadfont
2writetext UnknownText_0x9eaef
2jump UnknownScript_0x9e47a
@ -136,7 +137,12 @@ UnknownScript_0x9f4f7: ; 0x9f4f7
end
; 0x9f50b
INCBIN "baserom.gbc",$9f50b,$9f52e-$9f50b
UnknownText_0x9f50b: ; 0x9f50b
db $0, "You'll be returned", $4f
db "after you SAVE.", $57
; 0x9f52e
BattleTowerBattleRoom_MapEventHeader: ; 0x9f52e
; filler

View File

@ -21,11 +21,25 @@ UnknownScript_0x9f5c0: ; 0x9f5c0
UnknownScript_0x9f5c1: ; 0x9f5c1
follow $2, $0
3callasm $27, $75cb
3callasm BANK(Function_0x9f5cb), Function_0x9f5cb
2jump UnknownScript_0x9f5dc
; 0x9f5cb
INCBIN "baserom.gbc",$9f5cb,$9f5dc - $9f5cb
Function_0x9f5cb: ; 0x9f5cb
ld a, [rSVBK]
push af
ld a, 3
ld [rSVBK], a
ld a, [$d800]
ld [ScriptVar], a
pop af
ld [rSVBK], a
ret
; 0x9f5dc
UnknownScript_0x9f5dc: ; 0x9f5dc
if_equal $3, UnknownScript_0x9f603

View File

@ -0,0 +1 @@
 ,+

10
maps/BetaAzaleaTown.blk Normal file
View File

@ -0,0 +1,10 @@
aaaaaaaaFDaaaaaaaaaaaaaaaaaFDaaaaaaaaaaaaaaaaaFHIIaaaaaaBaaaFaaaaaaFaFaaaHJGFee>aacaaaFaaaadeefaaaaFGbaaaaaaaaFDaaaaaaaFaaDaU
aaaaaaaHIY
aaaaaaa~zU
aaaaaaa5Y
aaaaa@AAAA5z
vvvUaaaaaaaaaaa552955zvvvvvvvvvv
aa55551111111111111
a555555555555555552
a

View File

@ -0,0 +1 @@
hqqqqqqqqqqqqqqqqqqqhqorrrrrrrrrnqqqqqqqhqiaKeWaKeWahqqqqqqqhqieKaWWWaeWhqorrnqqhqiaWWKWeaWehqi !hqqhqiKWWeeaWWahqi$%hqqhqieKeaWWeeehqi$%hqqhqiaKaWeeWaahqi$%hqqlrmKeWWaWeWahqi()hqqKaWKaWaeWlrmtuhqqWWWWWWKaWWWWWWhqqhqqlrrG

1
maps/BetaBlank.blk Normal file
View File

@ -0,0 +1 @@


8
maps/BetaCave.blk Normal file
View File

@ -0,0 +1,8 @@
 






 

5
maps/BetaCave2.blk Normal file
View File

@ -0,0 +1,5 @@
 
(+
)*

  

18
maps/BetaCaveTestMap.blk Normal file
View File

@ -0,0 +1,18 @@
 
;<  ; 6<

 589:




 5 

   

5  

   
 
 5 6
  

View File

@ -0,0 +1 @@
? +,/

View File

@ -0,0 +1,9 @@
aaaaaaaa
a6
a6YEa6Y,-6YG./a52vUa551
aaaaa5555
aaaa

View File

@ -0,0 +1 @@
aaaaXaaTyaaX5ETy5Tv455aTvvyfaXYaaXYEaaeaaa

View File

@ -0,0 +1,2 @@
 
 

View File

@ -0,0 +1,2 @@

 

View File

@ -0,0 +1 @@
 

View File

@ -0,0 +1 @@
  

1
maps/BetaElevator.blk Normal file
View File

@ -0,0 +1 @@
&$$$%$$$$$$$$$$$$$$$$$$

15
maps/BetaEmptyHouse.blk Normal file
View File

@ -0,0 +1,15 @@
 
  
 

  
 
  
  
  
 %
 

View File

@ -0,0 +1,10 @@
FD
JHU !Y$#Y"HEzv%&IIIIIIIIJII55)* @-.EAAAAAAAAAA FIHIJEEvvU55YY@AEYDFYHFzU5
B @55
F~D

1
maps/BetaHerosHouse.blk Normal file
View File

@ -0,0 +1 @@
 ! "

1
maps/BetaHouse.blk Normal file
View File

@ -0,0 +1 @@
*+,*-.12/0/

1
maps/BetaHouse2.blk Normal file
View File

@ -0,0 +1 @@
?',9..',9

1
maps/BetaIlexForest.blk Normal file
View File

@ -0,0 +1 @@
hqqqqqihqqqqqilrrsm

1
maps/BetaLakeOfRage.blk Normal file
View File

@ -0,0 +1 @@
\^af\a\^afG^f\\f>^fTU^abfd?fdTvyY>dG\fd\X55Ya^d?f^Tvy55Y<d`f\\Ty555Y`f]\?\aX555Y\\^?Tvvy555Y^<fTvy555555Y^bd\bf^X5555555Ydf\ffTy5555555Y\b\af\fX55555Ya^d<d\daX555Yfd\\G`f^^\<G^\<bad>>e\adfa

View File

@ -0,0 +1 @@
`N=`RZW,-G./WEZWWG?

1
maps/BetaNewBarkTown.blk Normal file
View File

@ -0,0 +1 @@
^]?II~IDGaaHTvEX5@~~{XDGGXHIIIIIIIaXvvvvvvvvv1

4
maps/BetaOlivineCity.blk Normal file
View File

@ -0,0 +1,4 @@
FDIJHIIIFDFZFDFDFFZFFZFFDFFZFAABFZFFDF|}FTvvvvvvvvvUDF|}FXYX55YDF|}FXYX55YHIIIJ|}FXYX556vvv
JXYX5545552
Xzvvvvy55255552vvvy555 555550555552995555~5555:5555

View File

@ -0,0 +1,2 @@

  ! &! &

View File

@ -0,0 +1 @@
012!

View File

@ -0,0 +1 @@
  '

View File

@ -0,0 +1 @@
'

View File

@ -0,0 +1,5 @@

:?  <? )
 ? )  ==   >> "! 89  *> *   89 :?:? )  ;?;? )  ? <?<? )  ? )   ? 
 ) * ,-.,//////////-

View File

@ -0,0 +1,4 @@

 

 >:)   ><) >>    )89      >>   8: ::?   ?< <<?  * ? )     * ),/////////////-

View File

@ -0,0 +1,5 @@
 +=1,////? 
=== :?5////4 ??? <?10 5// )==   >>:) 5//////>89<) 
,/////- >>>> 1 8899///=
5///->:?  1 =
 ><?  >? ? ,/////-,////-

View File

@ -0,0 +1,7 @@
!
ohi
omhi!nm7:~nm'nm'nm'nm'nm'nm'nm'nm
^
noo !hihi

View File

@ -0,0 +1,3 @@
     
 
  

View File

@ -0,0 +1,9 @@
 

 

 
 
 



View File

@ -0,0 +1,7 @@
 
  

  

 


View File

@ -0,0 +1,9 @@
 

 


    

       

View File

@ -0,0 +1,4 @@
 
            
 
 

View File

@ -0,0 +1,8 @@
 

 

    
  
 


View File

@ -0,0 +1,5 @@
  
   
 
   
   

View File

@ -0,0 +1 @@
    

View File

@ -0,0 +1 @@


View File

@ -0,0 +1 @@


View File

@ -0,0 +1 @@


View File

@ -0,0 +1 @@

1
maps/BetaTeakCity.blk Normal file
View File

@ -0,0 +1 @@
?eeeeeeeeeeeb !bb$%b>$%`&;',-&'`$%`*"+#/*+aE$%dg,-b()#/tuWZWVWVWVWZ@AABGTU !FXY$%&'XYa$%*+VVZVVVVVVZaa()EatuIIJ~{@AAAAA HII

1
maps/BetaUnknown.blk Normal file
View File

@ -0,0 +1 @@
(

7
maps/BetaVioletCity.blk Normal file
View File

@ -0,0 +1,7 @@
??&;'TU&;'b?*"+XY*"+?=G^bXYTU]]]]]]]]]]]]]XYXYXYb`b !`GbD$%F`
&;'
bD()F`G*"+
eeebDtuF`

AEA
bpk`bsm`=]E`G`G?e`b`?eeeeeeeeeef`b

View File

@ -11,11 +11,59 @@ BlackthornGym2F_MapScriptHeader: ; 0x195722
; 0x195727
UnknownScript_0x195727: ; 0x195727
writecmdqueue $572b
writecmdqueue CmdQueue_0x19572b
return
; 0x19572b
INCBIN "baserom.gbc",$19572b,$33
CmdQueue_0x19572b: ; 0x19572b
dbw 2, StoneTable_0x195730 ; check if any stones are sitting on a warp
db 0, 0 ; filler
; 0x195730
StoneTable_0x195730: ; 0x195730
db 5, 4 ; warp, person
dw UnknownScript_0x19573d
db 3, 5 ; warp, person
dw UnknownScript_0x195742
db 4, 6 ; warp, person
dw UnknownScript_0x195747
db $ff ; end
; 0x19573d
UnknownScript_0x19573d: ; 0x19573d
disappear 4
2jump UnknownScript_0x19574c
; 0x195742
UnknownScript_0x195742: ; 0x195742
disappear 5
2jump UnknownScript_0x19574c
; 0x195747
UnknownScript_0x195747: ; 0x195747
disappear 6
2jump UnknownScript_0x19574c
; 0x19574c
UnknownScript_0x19574c: ; 0x19574c
pause 30
2call UnknownScript_0x195758
loadfont
2writetext UnknownText_0x1958a5
closetext
loadmovesprites
end
; 0x195758
UnknownScript_0x195758: ; 0x195758
playsound $001b
earthquake 80
end
; 0x19575e
UnknownScript_0x19575e: ; 0x19575e
jumpstd $000e

View File

@ -28,7 +28,7 @@ MapCeladonDeptStore6FSignpost5Script: ; 0x71180
2writetext UnknownText_0x71250
UnknownScript_0x71184: ; 0x71184
special $0051
loadmenudata $5203
loadmenudata MenuDataHeader_0x71203
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x7119a
@ -89,8 +89,24 @@ UnknownScript_0x711fc: ; 0x711fc
2jump UnknownScript_0x71184
; 0x71203
; menu data
INCBIN "baserom.gbc",$71203,$47
MenuDataHeader_0x71203: ; 0x71203
db $40 ; flags
db 02, 00 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x7120b
db 1 ; default option
; 0x7120b
MenuData2_0x7120b: ; 0x7120b
db $80 ; flags
db 4 ; items
db "FRESH WATER ¥200@"
db "SODA POP ¥300@"
db "LEMONADE ¥350@"
db "CANCEL@"
; 0x71249
MapCeladonDeptStore6FSignpost0Script: ; 0x7124a
jumptext UnknownText_0x7133e

View File

@ -8,7 +8,7 @@ CeladonDeptStoreElevator_MapScriptHeader: ; 0x713ab
MapCeladonDeptStoreElevatorSignpost0Script: ; 0x713ad
loadfont
elevator $53be
elevator Elevator_0x713be
loadmovesprites
iffalse UnknownScript_0x713bd
pause 5
@ -19,19 +19,18 @@ UnknownScript_0x713bd: ; 0x713bd
end
; 0x713be
; elevator
UnknownText_0x713be: ; 0x713be
text_waitbutton
text_box $1504, 5, 5
store_at $615
text_waitbutton
store_at $715
text_dunno2
store_at $815
start_asm
; 0x713d0
INCBIN "baserom.gbc",$713d0,$713d8 - $713d0
Elevator_0x713be: ; 0x713be
db 6 ; floors
db _1F, 4, GROUP_CELADON_DEPT_STORE_1F, MAP_CELADON_DEPT_STORE_1F
db _2F, 3, GROUP_CELADON_DEPT_STORE_2F, MAP_CELADON_DEPT_STORE_2F
db _3F, 3, GROUP_CELADON_DEPT_STORE_3F, MAP_CELADON_DEPT_STORE_3F
db _4F, 3, GROUP_CELADON_DEPT_STORE_4F, MAP_CELADON_DEPT_STORE_4F
db _5F, 3, GROUP_CELADON_DEPT_STORE_5F, MAP_CELADON_DEPT_STORE_5F
db _6F, 2, GROUP_CELADON_DEPT_STORE_6F, MAP_CELADON_DEPT_STORE_6F
db $ff ; end
; 0x713d8
CeladonDeptStoreElevator_MapEventHeader: ; 0x713d8
; filler

View File

@ -24,7 +24,7 @@ MapCeladonGameCornerPrizeRoomSignpost0Script: ; 0x726ef
2writetext UnknownText_0x72974
UnknownScript_0x726fd: ; 0x726fd
special $004f
loadmenudata $6790
loadmenudata MenuDataHeader_0x72790
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x72714
@ -111,8 +111,24 @@ UnknownScript_0x7278a: ; 0x7278a
end
; 0x72790
; menu data
INCBIN "baserom.gbc",$72790,$38
MenuDataHeader_0x72790: ; 0x72790
db $40 ; flags
db 02, 00 ; start coords
db 11, 15 ; end coords
dw MenuData2_0x72798
db 1 ; default option
; 0x72798
MenuData2_0x72798: ; 0x72798
db $80 ; flags
db 4 ; items
db "TM32 1500@"
db "TM29 3500@"
db "TM15 7500@"
db "CANCEL@"
; 0x727c8
MapCeladonGameCornerPrizeRoomSignpost1Script: ; 0x727c8
faceplayer
@ -124,7 +140,7 @@ MapCeladonGameCornerPrizeRoomSignpost1Script: ; 0x727c8
UnknownScript_0x727d3: ; 0x727d3
2writetext UnknownText_0x72974
special $004f
loadmenudata $6877
loadmenudata MenuDataHeader_0x72877
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x727ed
@ -190,8 +206,24 @@ UnknownScript_0x72849: ; 0x72849
2jump UnknownScript_0x727d3
; 0x72877
; menu data
INCBIN "baserom.gbc",$72877,$41
MenuDataHeader_0x72877: ; 0x72877
db $40 ; flags
db 02, 00 ; start coords
db 11, 17 ; end coords
dw MenuData2_0x7287f
db 1 ; default option
; 0x7287f
MenuData2_0x7287f: ; 0x7287f
db $80 ; flags
db 4 ; items
db "PIKACHU 2222@"
db "PORYGON 5555@"
db "LARVITAR 8888@"
db "CANCEL@"
; 0x728b8
UnknownText_0x728b8: ; 0x728b8
db $0, "I wanted PORYGON,", $4f

View File

@ -29,7 +29,7 @@ UnknownScript_0x18d030: ; 0x18d030
setbit1 $0001
2writetext UnknownText_0x18d3bc
keeptextopen
loadmenudata $5215
loadmenudata MenuDataHeader_0x18d215
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x18d0a9
@ -42,7 +42,7 @@ UnknownScript_0x18d049: ; 0x18d049
setbit1 $0002
2writetext UnknownText_0x18d3d3
keeptextopen
loadmenudata $5234
loadmenudata MenuDataHeader_0x18d234
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x18d0a9
@ -52,7 +52,7 @@ UnknownScript_0x18d061: ; 0x18d061
setbit1 $0003
2writetext UnknownText_0x18d3f3
keeptextopen
loadmenudata $5258
loadmenudata MenuDataHeader_0x18d258
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x18d0cb
@ -62,7 +62,7 @@ UnknownScript_0x18d079: ; 0x18d079
setbit1 $0004
2writetext UnknownText_0x18d420
keeptextopen
loadmenudata $5283
loadmenudata MenuDataHeader_0x18d283
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x18d0a9
@ -72,7 +72,7 @@ UnknownScript_0x18d091: ; 0x18d091
setbit1 $0005
2writetext UnknownText_0x18d44a
keeptextopen
loadmenudata $52a5
loadmenudata MenuDataHeader_0x18d2a5
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x18d0cb
@ -274,7 +274,91 @@ UnknownScript_0x18d20d: ; 0x18d20d
end
; 0x18d215
INCBIN "baserom.gbc",$18d215,$aa
MenuDataHeader_0x18d215: ; 0x18d215
db $40 ; flags
db 04, 08 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x18d21d
db 1 ; default option
; 0x18d21d
MenuData2_0x18d21d: ; 0x18d21d
db $81 ; flags
db 3 ; items
db "Pal@"
db "Underling@"
db "Friend@"
; 0x18d234
MenuDataHeader_0x18d234: ; 0x18d234
db $40 ; flags
db 04, 09 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x18d23c
db 1 ; default option
; 0x18d23c
MenuData2_0x18d23c: ; 0x18d23c
db $81 ; flags
db 3 ; items
db "Strategy@"
db "Raising@"
db "Cheating@"
; 0x18d258
MenuDataHeader_0x18d258: ; 0x18d258
db $40 ; flags
db 04, 05 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x18d260
db 1 ; default option
; 0x18d260
MenuData2_0x18d260: ; 0x18d260
db $81 ; flags
db 3 ; items
db "Weak person@"
db "Tough person@"
db "Anybody@"
; 0x18d283
MenuDataHeader_0x18d283: ; 0x18d283
db $40 ; flags
db 04, 08 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x18d28b
db 1 ; default option
; 0x18d28b
MenuData2_0x18d28b: ; 0x18d28b
db $81 ; flags
db 3 ; items
db "Love@"
db "Violence@"
db "Knowledge@"
; 0x18d2a5
MenuDataHeader_0x18d2a5: ; 0x18d2a5
db $40 ; flags
db 04, 12 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x18d2ad
db 1 ; default option
; 0x18d2ad
MenuData2_0x18d2ad: ; 0x18d2ad
db $81 ; flags
db 3 ; items
db "Tough@"
db "Both@"
db "Weak@"
; 0x18d2bf
MovementData_0x18d2bf: ; 0x18d2bf
slow_step_up

View File

@ -143,9 +143,7 @@ CooltrainerfCaraScript: ; 0x18c92a
end
; 0x18c932
INCBIN "baserom.gbc",$18c932,$14
TrainerTwinsLeaandpia1: ; 0x18c946
TrainerTwinsLeaandpia1: ; 0x18c932
; bit/flag number
dw $5bf
@ -156,17 +154,45 @@ TrainerTwinsLeaandpia1: ; 0x18c946
dw TwinsLeaandpia1SeenText
; text when trainer beaten
;dw TwinsLeaandpia1BeatenText
dw $4f06
dw TwinsLeaandpia1BeatenText
; script when lost
dw $0000
; script when talk again
dw TwinsLeaandpia1Script
; 0x18c93e
TwinsLeaandpia1Script: ; 0x18c93e
talkaftercancel
loadfont
2writetext UnknownText_0x18ced3
closetext
loadmovesprites
end
; 0x18c946
TrainerTwinsLeaandpia2: ; 0x18c946
; bit/flag number
dw $5bf
; trainer group && trainer id
db TWINS, LEAANDPIA1
; text when seen
dw TwinsLeaandpia2SeenText
; text when trainer beaten
dw TwinsLeaandpia2BeatenText
; script when lost
dw $0000
; script when talk again
dw TwinsLeaandpia2Script
; 0x18c952
TwinsLeaandpia1Script: ; 0x18c952
TwinsLeaandpia2Script: ; 0x18c952
talkaftercancel
loadfont
2writetext UnknownText_0x18cf0f
@ -395,7 +421,7 @@ UnknownText_0x18ce11: ; 0x18ce11
db "approval.", $57
; 0x18ceab
UnknownText_0x18ceab: ; 0x18ceab
TwinsLeaandpia1SeenText: ; 0x18ceab
db $0, "It's a stranger we", $4f
db "don't know.", $57
; 0x18cec9
@ -409,11 +435,11 @@ UnknownText_0x18ced3: ; 0x18ced3
db "to battle LANCE.", $57
; 0x18cef8
TwinsLeaandpia1SeenText: ; 0x18cef8
TwinsLeaandpia2SeenText: ; 0x18cef8
db $0, "Who are you?", $57
; 0x18cf06
UnknownText_0x18cf06: ; 0x18cf06
TwinsLeaandpia2BeatenText: ; 0x18cf06
db $0, "Meanie.", $57
; 0x18cf0f
@ -464,7 +490,7 @@ DragonsDenB1F_MapEventHeader: ; 0x18cf73
person_event $23, 12, 24, $7, $0, 255, 255, $82, 4, TrainerCooltrainermDarin, $ffff
person_event $24, 12, 12, $6, $0, 255, 255, $82, 3, TrainerCooltrainerfCara, $ffff
person_event $26, 21, 8, $9, $0, 255, 255, $82, 1, $4932, $ffff
person_event $26, 22, 8, $9, $0, 255, 255, $82, 1, TrainerTwinsLeaandpia1, $ffff
person_event $26, 22, 8, $9, $0, 255, 255, $82, 1, TrainerTwinsLeaandpia2, $ffff
person_event $54, 8, 34, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c9a1, $07bf
person_event $54, 24, 9, $1, $0, 255, 255, $1, 0, ItemFragment_0x18c9a3, $07c0
; 0x18d014

View File

@ -65,7 +65,7 @@ MapEarlsPokemonAcademySignpost3Script: ; 0x68a9f
loadfont
2writetext UnknownText_0x68eb2
UnknownScript_0x68aa3: ; 0x68aa3
loadmenudata $4ae1
loadmenudata MenuDataHeader_0x68ae1
interpretmenu
writebackup
if_equal $1, UnknownScript_0x68abe
@ -107,8 +107,32 @@ UnknownScript_0x68ada: ; 0x68ada
2jump UnknownScript_0x68aa3
; 0x68ae1
; menu data
INCBIN "baserom.gbc",$68ae1,$2a
MenuDataHeader_0x68ae1: ; 0x68ae1
db $40 ; flags
db 00, 00 ; start coords
db 08, 11 ; end coords
dw MenuData2_0x68ae9
db 1 ; default option
; 0x68ae9
MenuData2_0x68ae9: ; 0x68ae9
db $80 ; flags
dn 3, 2 ; rows, columns
db 5 ; spacing
dbw BANK(UnknownText_0x68af2), UnknownText_0x68af2
dbw $1a, $0000
; 0x68af2
UnknownText_0x68af2: ; 0x68af2
db "PSN@"
db "PAR@"
db "SLP@"
db "BRN@"
db "FRZ@"
db "QUIT@"
; 0x68b0b
UnknownScript_0x68b0b: ; 0x68b0b
loadfont

View File

@ -56,7 +56,7 @@ UnknownScript_0x198909: ; 0x198909
checkcoins 4000
if_equal $2, UnknownScript_0x1989dd
2writetext UnknownText_0x1990ce
loadmenudata $4967
loadmenudata MenuDataHeader_0x198967
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x19893a
@ -89,7 +89,24 @@ UnknownScript_0x198958: ; 0x198958
2jump UnknownScript_0x1989d7
; 0x198967
INCBIN "baserom.gbc",$198967,$33
MenuDataHeader_0x198967: ; 0x198967
db $40 ; flags
db 02, 00 ; start coords
db 11, 15 ; end coords
dw MenuData2_0x19896f
db 1 ; default option
; 0x19896f
MenuData2_0x19896f: ; 0x19896f
db $80 ; flags
db 4 ; items
db "FLAMETHROWER@"
db "THUNDERBOLT@"
db "ICE BEAM@"
db "CANCEL@"
; 0x19899a
UnknownScript_0x19899a: ; 0x19899a
2writetext UnknownText_0x1990b4

View File

@ -11,7 +11,7 @@ MapGoldenrodDeptStore6FSignpost5Script: ; 0x563f5
2writetext UnknownText_0x564cb
UnknownScript_0x563f9: ; 0x563f9
special $0051
loadmenudata $6478
loadmenudata MenuDataHeader_0x56478
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x5640f
@ -72,8 +72,24 @@ UnknownScript_0x56471: ; 0x56471
2jump UnknownScript_0x563f9
; 0x56478
; menu data
INCBIN "baserom.gbc",$56478,$564bf - $56478
MenuDataHeader_0x56478: ; 0x56478
db $40 ; flags
db 02, 00 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x56480
db 1 ; default option
; 0x56480
MenuData2_0x56480: ; 0x56480
db $80 ; flags
db 4 ; items
db "FRESH WATER ¥200@"
db "SODA POP ¥300@"
db "LEMONADE ¥350@"
db "CANCEL@"
; 0x564bf
UnknownScript_0x564bf: ; 0x564bf
jumptextfaceplayer UnknownText_0x5654b

View File

@ -8,7 +8,7 @@ GoldenrodDeptStoreElevator_MapScriptHeader: ; 0x56697
MapGoldenrodDeptStoreElevatorSignpost0Script: ; 0x56699
loadfont
elevator $66e0
elevator Elevator_0x566e0
loadmovesprites
iffalse UnknownScript_0x566df
pause 5
@ -48,7 +48,19 @@ UnknownScript_0x566df: ; 0x566df
end
; 0x566e0
INCBIN "baserom.gbc",$566e0,$566fe - $566e0
Elevator_0x566e0: ; 0x566e0
db 7 ; floors
db _B1F, 2, GROUP_GOLDENROD_DEPT_STORE_B1F, MAP_GOLDENROD_DEPT_STORE_B1F
db _1F, 4, GROUP_GOLDENROD_DEPT_STORE_1F, MAP_GOLDENROD_DEPT_STORE_1F
db _2F, 3, GROUP_GOLDENROD_DEPT_STORE_2F, MAP_GOLDENROD_DEPT_STORE_2F
db _3F, 3, GROUP_GOLDENROD_DEPT_STORE_3F, MAP_GOLDENROD_DEPT_STORE_3F
db _4F, 3, GROUP_GOLDENROD_DEPT_STORE_4F, MAP_GOLDENROD_DEPT_STORE_4F
db _5F, 3, GROUP_GOLDENROD_DEPT_STORE_5F, MAP_GOLDENROD_DEPT_STORE_5F
db _6F, 2, GROUP_GOLDENROD_DEPT_STORE_6F, MAP_GOLDENROD_DEPT_STORE_6F
db $ff ; end
; 0x566fe
GoldenrodDeptStoreElevator_MapEventHeader: ; 0x566fe
; filler

View File

@ -55,7 +55,7 @@ UnknownScript_0x56c28: ; 0x56c28
2writetext UnknownText_0x56e8b
UnknownScript_0x56c36: ; 056c36
special $004f
loadmenudata $6cc9
loadmenudata MenuDataHeader_0x56cc9
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x56c4d
@ -142,8 +142,24 @@ UnknownScript_0x56cc3: ; 0x56cc3
end
; 0x56cc9
; menu data
INCBIN "baserom.gbc",$56cc9,$38
MenuDataHeader_0x56cc9: ; 0x56cc9
db $40 ; flags
db 02, 00 ; start coords
db 11, 15 ; end coords
dw MenuData2_0x56cd1
db 1 ; default option
; 0x56cd1
MenuData2_0x56cd1: ; 0x56cd1
db $80 ; flags
db 4 ; items
db "TM25 5500@"
db "TM14 5500@"
db "TM38 5500@"
db "CANCEL@"
; 0x56d01
UnknownScript_0x56d01: ; 0x56d01
faceplayer
@ -155,7 +171,7 @@ UnknownScript_0x56d01: ; 0x56d01
UnknownScript_0x56d0c: ; 0x56d0c
2writetext UnknownText_0x56e8b
special $004f
loadmenudata $6db0
loadmenudata MenuDataHeader_0x56db0
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x56d26
@ -221,8 +237,24 @@ UnknownScript_0x56d82: ; 0x56d82
2jump UnknownScript_0x56d0c
; 0x56db0
; menu data
INCBIN "baserom.gbc",$56db0,$56df1 - $56db0
MenuDataHeader_0x56db0: ; 0x56db0
db $40 ; flags
db 02, 00 ; start coords
db 11, 17 ; end coords
dw MenuData2_0x56db8
db 1 ; default option
; 0x56db8
MenuData2_0x56db8: ; 0x56db8
db $80 ; flags
db 4 ; items
db "ABRA 100@"
db "CUBONE 800@"
db "WOBBUFFET 1500@"
db "CANCEL@"
; 0x56df1
UnknownScript_0x56df1: ; 0x56df1
faceplayer

View File

@ -24,7 +24,7 @@ MapGoldenrodPokeComCenter2FMobileSignpost0Script: ; 0x625da
closetext
UnknownScript_0x625df: ; 0x625df
reloadmappart
loadmenudata $6602
loadmenudata MenuDataHeader_0x62602
interpretmenu2
writebackup
if_equal $1, UnknownScript_0x625f0
@ -51,7 +51,23 @@ UnknownScript_0x62600: ; 0x62600
end
; 0x62602
INCBIN "baserom.gbc",$62602,$62624 - $62602
MenuDataHeader_0x62602: ; 0x62602
db $40 ; flags
db 00, 00 ; start coords
db 08, 15 ; end coords
dw MenuData2_0x6260a
db 1 ; default option
; 0x6260a
MenuData2_0x6260a: ; 0x6260a
db $80 ; flags
db 3 ; items
db "# つうしん クラブ@" ; # COM CLUB
db "モバイルセンター@" ; MOBILE CENTER
db "やめる@" ; QUIT
; 0x62624
MapGoldenrodPokeComCenter2FMobileSignpost1Script: ; 0x62624
loadfont
@ -86,8 +102,23 @@ UnknownScript_0x6264a: ; 0x6264a
end
; 0x6264c
; menu data
INCBIN "baserom.gbc",$6264c,$25
MenuDataHeader_0x6264c: ; 0x6264c
db $40 ; flags
db 00, 00 ; start coords
db 08, 15 ; end coords
dw MenuData2_0x62654
db 1 ; default option
; 0x62654
MenuData2_0x62654: ; 0x62654
db $80 ; flags
db 3 ; items
db "でんわ",$1f,"つかうとき@" ; Use phone
db "でんわ",$4a,"つながらないとき@" ; Don't use phone
db "やめる@" ; QUIT
; 0x62673
MapGoldenrodPokeComCenter2FMobileSignpost2Script: ; 0x62671
jumptext UnknownText_0x62b26

View File

@ -123,10 +123,6 @@ HallOfFame_MapEventHeader: ; 0x181678
; 0x181695
; Pokedex entries I
; 001-064
INCLUDE "stats/pokedex/entries_1.asm"

View File

@ -11,11 +11,71 @@ IcePathB1F_MapScriptHeader: ; 0x7e4b9
; 0x7e4be
UnknownScript_0x7e4be: ; 0x7e4be
writecmdqueue $64c2
writecmdqueue CmdQueue_0x7e4c2
return
; 0x7e4c2
INCBIN "baserom.gbc",$7e4c2,$7e50a - $7e4c2
CmdQueue_0x7e4c2: ; 0x7e4c2
dbw 2, StoneTable_0x7e4c7 ; check if any stones are sitting on a warp
db 0, 0 ; filler
; 0x7e4c7
StoneTable_0x7e4c7: ; 0x7e4c7
db 3, 2 ; warp, person
dw UnknownScript_0x7e4d8
db 4, 3 ; warp, person
dw UnknownScript_0x7e4e0
db 5, 4 ; warp, person
dw UnknownScript_0x7e4e8
db 6, 5 ; warp, person
dw UnknownScript_0x7e4f0
db $ff ; end
; 0x7e4d8
UnknownScript_0x7e4d8: ; 0x7e4d8
disappear 2
clearbit1 $070d
2jump UnknownScript_0x7e4f8
; 0x7e4e0
UnknownScript_0x7e4e0: ; 0x7e4e0
disappear 3
clearbit1 $070e
2jump UnknownScript_0x7e4f8
; 0x7e4e8
UnknownScript_0x7e4e8: ; 0x7e4e8
disappear 4
clearbit1 $070f
2jump UnknownScript_0x7e4f8
; 0x7e4f0
UnknownScript_0x7e4f0: ; 0x7e4f0
disappear 5
clearbit1 $0710
2jump UnknownScript_0x7e4f8
; 0x7e4f8
UnknownScript_0x7e4f8: ; 0x7e4f8
pause 30
2call UnknownScript_0x7e504
loadfont
2writetext UnknownText_0x7e512
closetext
loadmovesprites
end
; 0x7e504
UnknownScript_0x7e504: ; 0x7e504
playsound $001b
earthquake 80
end
; 0x7e50a
UnknownScript_0x7e50a: ; 0x7e50a
jumpstd $000e
@ -30,7 +90,12 @@ MapIcePathB1FSignpostItem0: ; 0x7e50f
db MAX_POTION
; 0x7e512
INCBIN "baserom.gbc",$7e512,$1b
UnknownText_0x7e512: ; 0x7e512
db $0, "The boulder fell", $4f
db "through.", $57
; 0x7e52d
IcePathB1F_MapEventHeader: ; 0x7e52d
; filler

View File

@ -34,7 +34,9 @@ UnknownScript_0x7abc5: ; 0x7abc5
return
; 0x7abc9
INCBIN "baserom.gbc",$7abc9,$7abcc - $7abc9
db 0, 0, 0 ; filler
UnknownScript_0x7abcc: ; 0x7abcc
describedecoration $1

View File

@ -16,7 +16,7 @@ UnknownScript_0x9d278: ; 0x9d278
2writetext UnknownText_0x9d303
yesorno
iffalse UnknownScript_0x9d2b6
special $004b
special SPECIAL_GIVESHUCKLE
iffalse UnknownScript_0x9d2b0
2writetext UnknownText_0x9d3ed
keeptextopen

View File

@ -141,22 +141,37 @@ PsychicNathanScript: ; 0x58095
end
; 0x5809d
UnknownScript_0x5809d: ; 0x5809d
musicfadeout $2905, $1
; 0x580a2
; probably not a script?
UnknownScript_0x580a2: ; 0x580a2
db $e5
itemtotext THUNDERSTONE, $42
2call $a900
pokenamemem EXEGGCUTE, $47
TrainerSuperNerdStan: ; 0x5809d
; bit/flag number
dw $581
; trainer group && trainer id
db SUPER_NERD, STAN
; text when seen
dw UnknownText_0x581e5
; text when trainer beaten
dw UnknownText_0x58217
; script when lost
dw $0000
; script when talk again
dw UnknownScript_0x580a9
; 0x580a9
UnknownScript_0x580a9: ; 0x580a9
talkaftercancel
loadfont
2writetext UnknownText_0x58250
closetext
loadmovesprites
end
; 0x580b1
MapRuinsofAlphOutsideSignpost0Script: ; 0x580b1
jumptext UnknownText_0x58325
; 0x580b4

View File

@ -1,4 +1,5 @@
INCLUDE "wram.asm"
INCLUDE "constants.asm"
INCLUDE "gbhw.asm"
INCLUDE "hram.asm"
INCLUDE "main.tx"

3
pokecrystal.bat Normal file
View File

@ -0,0 +1,3 @@
@set PATH=%PATH%;C:\Program Files (x86)\GnuWin32\bin\;C:\Python27\
@make winclean && make win
@pause

View File

@ -18,6 +18,7 @@ from extras.crystal import (
text_command_classes,
movement_command_classes,
music_classes,
effect_classes,
)
even_more_macros = [
@ -34,6 +35,7 @@ macros += even_more_macros
macros += [each[1] for each in text_command_classes]
macros += movement_command_classes
macros += music_classes
macros += effect_classes
# show lines before preprocessing in stdout
show_original_lines = False
@ -285,6 +287,7 @@ chars = {
"é": 0xEA,
"": 0xEB,
"": 0xED,
"": 0xEE,
"": 0xEF,
"¥": 0xF0,
"×": 0xF1,

View File

@ -252,7 +252,7 @@ Script_jumptextfaceplayer: ; 0x96e45
ld [$d450], a
ld b, $25
ld hl, $6e79
jp $759d
jp ScriptJump
; 0x96e5f
Script_jumptext: ; 0x96e5f
@ -268,7 +268,7 @@ Script_jumptext: ; 0x96e5f
ld [$d450], a
ld b, $25
ld hl, $6e7a
jp $759d
jp ScriptJump
; 0x96e79
INCBIN "baserom.gbc",$96e79,$96e81 - $96e79
@ -286,7 +286,7 @@ Script_3jumptext: ; 0x96e81
ld [$d450], a
ld b, $25
ld hl, $6e7a
jp $759d
jp ScriptJump
; 0x96e9b
Script_2writetext: ; 0x96e9b
@ -550,13 +550,13 @@ Script_specialsound: ; 0x96fe4
ld hl, $543d
rst $8
ld a, [$d142]
cp $4
ld de, $009b
jr z, .asm_96ff7 ; 0x96ff2 $3
ld de, $0001
.asm_96ff7
cp TM_HM
ld de, SFX_GET_TM
jr z, .play
ld de, SFX_ITEM
.play
call StartSFX
call $3c55
call WaitSFX
ret
; 0x96ffe
@ -681,7 +681,7 @@ Script_describedecoration: ; 0x970df
rst $8
ld h, d
ld l, e
jp $759d
jp ScriptJump
; 0x970ee
Script_fruittree: ; 0x970ee
@ -690,10 +690,10 @@ Script_fruittree: ; 0x970ee
; tree_id (SingleByteParam)
call GetScriptByte
ld [$d03e], a
ld b, $11
ld hl, $4000
jp $759d
ld [CurFruitTree], a
ld b, BANK(FruitTreeScript)
ld hl, FruitTreeScript
jp ScriptJump
; 0x970fc
Script_loadwilddata: ; 0x970fc
@ -743,7 +743,7 @@ Script_scripttalkafter: ; 0x97125
ld l, a
ld a, [$d03e]
ld b, a
jp $759d
jp ScriptJump
; 0x97132
Script_trainerstatus: ; 0x97132
@ -877,7 +877,7 @@ Script_playsound: ; 0x971b7
Script_waitbutton: ; 0x971c3
; script command 0x86
call $3c55
call WaitSFX
ret
; 0x971c7
@ -1417,7 +1417,7 @@ Script_returnafterbattle: ; 0x97459
jr nz, .asm_97470 ; 0x97466 $8
ld b, $4
ld hl, $64c1
jp $759d
jp ScriptJump
.asm_97470
bit 0, d
jr z, .asm_9747c ; 0x97472 $8
@ -1510,14 +1510,14 @@ ScriptCall: ; 0x974cb
ld [hli], a
ld a, [ScriptPos]
ld [hli], a
ld a, [$d43b]
ld a, [ScriptPos + 1]
ld [hl], a
ld a, b
ld [ScriptBank], a
ld a, e
ld [ScriptPos], a
ld a, d
ld [$d43b], a
ld [ScriptPos + 1], a
ret
; 0x974f3
@ -1539,7 +1539,7 @@ Script_2jump: ; 0x974fe
ld h, a
ld a, [ScriptBank]
ld b, a
jp $759d
jp ScriptJump
; 0x9750d
Script_3jump: ; 0x9750d
@ -1553,7 +1553,7 @@ Script_3jump: ; 0x9750d
ld l, a
call GetScriptByte
ld h, a
jp $759d
jp ScriptJump
; 0x9751c
Script_2ptjump: ; 0x9751c
@ -1570,7 +1570,7 @@ Script_2ptjump: ; 0x9751c
ld a, [hli]
ld h, [hl]
ld l, a
jp $759d
jp ScriptJump
; 0x9752c
Script_iffalse: ; 0x9752c
@ -1655,7 +1655,7 @@ Script_jumpstd: ; 0x9756e
; predefined_script (MultiByteParam)
call $757b
jr Unknown_9759d ; 0x97571 $2a
jr ScriptJump ; 0x97571 $2a
; 0x97573
Script_callstd: ; 0x97573
@ -1693,13 +1693,13 @@ Unknown_97596: ; 0x97596
ret
; 0x9759d
Unknown_9759d: ; 0x9759d
ScriptJump: ; 0x9759d
ld a, b
ld [ScriptBank], a
ld a, l
ld [ScriptPos], a
ld a, h
ld [$d43b], a
ld [ScriptPos + 1], a
ret
; 0x975aa
@ -3041,7 +3041,7 @@ Unknown_0x97b9a: ; 0x97b9a
ld [ScriptPos], a
ld a, [hl]
ld d, a
ld [$d43b], a
ld [ScriptPos + 1], a
and a
ret
.asm_97bbe

File diff suppressed because it is too large Load Diff

502
stats/wild/fish.asm Normal file
View File

@ -0,0 +1,502 @@
FishAction: ; 92402
; Using a fishing rod.
; Fish for monsters with rod e in encounter group d.
; Return monster e at level d.
push af
push bc
push hl
; Get the fishing group for this map.
ld b, e
call GetFishGroupHeader
ld hl, FishGroupHeaders
; encounter chance
add hl, de
; pointer to old rod data
add hl, de
add hl, de
; pointer to good rod data
add hl, de
add hl, de
; pointer to super rod data
add hl, de
add hl, de
call Fish
pop hl
pop bc
pop af
ret
; 9241a
Fish: ; 9241a
; Grandfathered from Red.
; Fish for monsters with rod b from encounter data in FishGroup at hl.
; Return monster e at level d.
call RNG
; Got a bite?
cp [hl]
jr nc, .NoBite
; Get encounter data by rod:
; 0: Old
; 1: Good
; 2: Super
inc hl
ld e, b
ld d, 0
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
; Encounter chance for this monster:
call RNG
.CheckEncounter
cp [hl]
jr z, .ReadMon
jr c, .ReadMon
; Next monster...
inc hl
inc hl
inc hl
jr .CheckEncounter
.ReadMon
; We're done with the encounter chance
inc hl
; Species 0 triggers a read from a time-based encounter table.
ld a, [hli]
ld d, a
and a
call z, .TimeEncounter
; Level
ld e, [hl]
ret
.NoBite
ld de, 0
ret
.TimeEncounter
; The level byte is repurposed as the index for the new table.
ld e, [hl]
ld d, 0
ld hl, TimeFishGroups
add hl, de
add hl, de
add hl, de
add hl, de
; One nightmon, then one daymon
ld a, [TimeOfDay]
and 3
cp NITE
jr c, .TimeSpecies
inc hl
inc hl
.TimeSpecies
ld d, [hl]
inc hl
ret
; 9245b
GetFishGroupHeader: ; 9245b
; Return fishing encounter group header d in de.
push hl
ld hl, $dc1e
bit 2, [hl]
pop hl
jr z, .end
; Groups 11 and 12 have special attributes.
ld a, d
cp 11
jr z, .group11
cp 12
jr z, .group12
.end
dec d
ld e, d
ld d, 0
ret
.group11
ld a, [$dfce]
cp 1
jr nz, .end
ld d, 6
jr .end
.group12
ld a, [$dfce]
cp 2
jr nz, .end
ld d, 7
jr .end
; 92488
FishGroupHeaders:
FishGroup1Header: ; 92488
db $80 ; 50%
dw FishGroup1_Old
dw FishGroup1_Good
dw FishGroup1_Super
FishGroup2Header: ; 9248f
db $80 ; 50%
dw FishGroup2_Old
dw FishGroup2_Good
dw FishGroup2_Super
FishGroup3Header: ; 92496
db $80 ; 50%
dw FishGroup3_Old
dw FishGroup3_Good
dw FishGroup3_Super
FishGroup4Header: ; 9249d
db $80 ; 50%
dw FishGroup4_Old
dw FishGroup4_Good
dw FishGroup4_Super
FishGroup5Header: ; 924a4
db $80 ; 50%
dw FishGroup5_Old
dw FishGroup5_Good
dw FishGroup5_Super
FishGroup6Header: ; 924ab
db $80 ; 50%
dw FishGroup6_Old
dw FishGroup6_Good
dw FishGroup6_Super
FishGroup7Header: ; 924b2
db $80 ; 50%
dw FishGroup7_Old
dw FishGroup7_Good
dw FishGroup7_Super
FishGroup8Header: ; 924b9
db $80 ; 50%
dw FishGroup8_Old
dw FishGroup8_Good
dw FishGroup8_Super
FishGroup9Header: ; 924c0
db $80 ; 50%
dw FishGroup9_Old
dw FishGroup9_Good
dw FishGroup9_Super
FishGroup10Header: ; 924c7
db $80 ; 50%
dw FishGroup10_Old
dw FishGroup10_Good
dw FishGroup10_Super
FishGroup11Header: ; 924ce
db $80 ; 50%
dw FishGroup11_Old
dw FishGroup11_Good
dw FishGroup11_Super
FishGroup12Header: ; 924d5
db $80 ; 50%
dw FishGroup12_Old
dw FishGroup12_Good
dw FishGroup12_Super
FishGroup13Header: ; 924dc
db $80 ; 50%
dw FishGroup11_Old
dw FishGroup11_Good
dw FishGroup11_Super
FishGroup1:
FishGroup1_Old: ; 924e3
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, KRABBY, 10
FishGroup1_Good: ; 924ec
db $59, MAGIKARP, 20
db $b2, KRABBY, 20
db $e6, KRABBY, 20
db $ff, $0, 0
FishGroup1_Super: ; 924f8
db $66, KRABBY, 40
db $b2, $0, 1
db $e6, KRABBY, 40
db $ff, KINGLER, 40
FishGroup2:
FishGroup2_Old: ; 92504
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, TENTACOOL, 10
FishGroup2_Good: ; 9250d
db $59, MAGIKARP, 20
db $b2, TENTACOOL, 20
db $e6, CHINCHOU, 20
db $ff, $0, 2
FishGroup2_Super: ; 92519
db $66, CHINCHOU, 40
db $b2, $0, 3
db $e6, TENTACRUEL, 40
db $ff, LANTURN, 40
FishGroup3:
FishGroup3_Old: ; 92525
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, GOLDEEN, 10
FishGroup3_Good: ; 9252e
db $59, MAGIKARP, 20
db $b2, GOLDEEN, 20
db $e6, GOLDEEN, 20
db $ff, $0, 4
FishGroup3_Super: ; 9253a
db $66, GOLDEEN, 40
db $b2, $0, 5
db $e6, MAGIKARP, 40
db $ff, SEAKING, 40
FishGroup4:
FishGroup4_Old: ; 92546
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, POLIWAG, 10
FishGroup4_Good: ; 9254f
db $59, MAGIKARP, 20
db $b2, POLIWAG, 20
db $e6, POLIWAG, 20
db $ff, $0, 6
FishGroup4_Super: ; 9255b
db $66, POLIWAG, 40
db $b2, $0, 7
db $e6, MAGIKARP, 40
db $ff, POLIWAG, 40
FishGroup5:
FishGroup5_Old: ; 92567
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, MAGIKARP, 10
FishGroup5_Good: ; 92570
db $59, MAGIKARP, 20
db $b2, MAGIKARP, 20
db $e6, MAGIKARP, 20
db $ff, $0, 8
FishGroup5_Super: ; 9257c
db $66, MAGIKARP, 40
db $b2, $0, 9
db $e6, MAGIKARP, 40
db $ff, DRAGONAIR, 40
FishGroup6:
FishGroup6_Old: ; 92588
db $b3, MAGIKARP, 5
db $d9, MAGIKARP, 5
db $ff, QWILFISH, 5
FishGroup6_Good: ; 92591
db $59, MAGIKARP, 20
db $b2, QWILFISH, 20
db $e6, QWILFISH, 20
db $ff, $0, 10
FishGroup6_Super: ; 9259d
db $66, QWILFISH, 40
db $b2, $0, 11
db $e6, QWILFISH, 40
db $ff, QWILFISH, 40
FishGroup7:
FishGroup7_Old: ; 925a9
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, REMORAID, 10
FishGroup7_Good: ; 925b2
db $59, MAGIKARP, 20
db $b2, REMORAID, 20
db $e6, REMORAID, 20
db $ff, $0, 12
FishGroup7_Super: ; 925be
db $66, REMORAID, 40
db $b2, $0, 13
db $e6, REMORAID, 40
db $ff, REMORAID, 40
FishGroup8:
FishGroup8_Old: ; 925ca
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, MAGIKARP, 10
FishGroup8_Good: ; 925d3
db $59, MAGIKARP, 20
db $b2, MAGIKARP, 20
db $e6, MAGIKARP, 20
db $ff, $0, 14
FishGroup8_Super: ; 925df
db $66, MAGIKARP, 40
db $b2, $0, 15
db $e6, MAGIKARP, 40
db $ff, MAGIKARP, 40
FishGroup9:
FishGroup9_Old: ; 925eb
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, MAGIKARP, 10
FishGroup9_Good: ; 925f4
db $59, MAGIKARP, 10
db $b2, MAGIKARP, 10
db $e6, MAGIKARP, 10
db $ff, $0, 16
FishGroup9_Super: ; 92600
db $66, MAGIKARP, 10
db $b2, $0, 17
db $e6, MAGIKARP, 10
db $ff, DRAGONAIR, 10
FishGroup10:
FishGroup10_Old: ; 9260c
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, KRABBY, 10
FishGroup10_Good: ; 92615
db $59, MAGIKARP, 20
db $b2, KRABBY, 20
db $e6, KRABBY, 20
db $ff, $0, 18
FishGroup10_Super: ; 92621
db $66, KRABBY, 40
db $b2, $0, 19
db $e6, KINGLER, 40
db $ff, SEADRA, 40
FishGroup11:
FishGroup11_Old: ; 9262d
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, TENTACOOL, 10
FishGroup11_Good: ; 92636
db $59, MAGIKARP, 20
db $b2, TENTACOOL, 20
db $e6, TENTACOOL, 20
db $ff, $0, 20
FishGroup11_Super: ; 92642
db $66, TENTACOOL, 40
db $b2, $0, 21
db $e6, MAGIKARP, 40
db $ff, QWILFISH, 40
FishGroup12:
FishGroup12_Old: ; 9264e
db $b3, MAGIKARP, 10
db $d9, MAGIKARP, 10
db $ff, POLIWAG, 10
FishGroup12_Good: ; 92657
db $59, MAGIKARP, 20
db $b2, POLIWAG, 20
db $e6, POLIWAG, 20
db $ff, $0, 6
FishGroup12_Super: ; 92663
db $66, POLIWAG, 40
db $b2, $0, 7
db $e6, MAGIKARP, 40
db $ff, REMORAID, 40
; 9266f
TimeFishGroups: ; 9266f
; 0
db CORSOLA, 20 ; nite
db STARYU, 20 ; day
; 1
db CORSOLA, 40 ; nite
db STARYU, 40 ; day
; 2
db SHELLDER, 20 ; nite
db SHELLDER, 20 ; day
; 3
db SHELLDER, 40 ; nite
db SHELLDER, 40 ; day
; 4
db GOLDEEN, 20 ; nite
db GOLDEEN, 20 ; day
; 5
db GOLDEEN, 40 ; nite
db GOLDEEN, 40 ; day
; 6
db POLIWAG, 20 ; nite
db POLIWAG, 20 ; day
; 7
db POLIWAG, 40 ; nite
db POLIWAG, 40 ; day
; 8
db DRATINI, 20 ; nite
db DRATINI, 20 ; day
; 9
db DRATINI, 40 ; nite
db DRATINI, 40 ; day
; 10
db QWILFISH, 20 ; nite
db QWILFISH, 20 ; day
; 11
db QWILFISH, 40 ; nite
db QWILFISH, 40 ; day
; 12
db REMORAID, 20 ; nite
db REMORAID, 20 ; day
; 13
db REMORAID, 40 ; nite
db REMORAID, 40 ; day
; 14
db GYARADOS, 20 ; nite
db GYARADOS, 20 ; day
; 15
db GYARADOS, 40 ; nite
db GYARADOS, 40 ; day
; 16
db DRATINI, 10 ; nite
db DRATINI, 10 ; day
; 17
db DRATINI, 10 ; nite
db DRATINI, 10 ; day
; 18
db HORSEA, 20 ; nite
db HORSEA, 20 ; day
; 19
db HORSEA, 40 ; nite
db HORSEA, 40 ; day
; 20
db TENTACOOL, 20 ; nite
db TENTACOOL, 20 ; day
; 21
db TENTACOOL, 40 ; nite
db TENTACOOL, 40 ; day
; 926c7

BIN
tilesets/00_collision.bin Normal file

Binary file not shown.

BIN
tilesets/00_metatiles.bin Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More