pokemon graphics data and makefile

This commit is contained in:
YamaArashi 2016-01-24 03:44:21 -08:00
parent aa3cafe9ba
commit 64814e1324
37 changed files with 17428 additions and 95 deletions

85
Makefile Normal file
View File

@ -0,0 +1,85 @@
AS := pokeas
ASFLAGS := -mcpu=arm7tdmi
CC := gbacc
CFLAGS := -mthumb-interwork -O2 -Iinclude
SHA1 := sha1sum -c
GFX := @tools/gbagfx/gbagfx
SCANINC := tools/scaninc/scaninc
# Clear the default suffixes.
.SUFFIXES:
# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
.PRECIOUS: %.1bpp %.4bpp %.8bpp %.gbapal %.lz
.PHONY: rom tools gbagfx scaninc clean compare deps
CSRCS := $(wildcard src/*.c)
OBJS := asm/rom.o
$(foreach obj, $(OBJS), \
$(eval $(obj)_deps := $(shell $(SCANINC) $(obj:.o=.s))) \
)
ROM := pokeruby.gba
ELF := $(ROM:.gba=.elf)
rom: $(ROM)
tools: gbagfx scaninc
gbagfx:
cd tools/gbagfx && make
scaninc:
cd tools/scaninc && make
# For contributors to make sure a change didn't affect the contents of the ROM.
compare: $(ROM)
@$(SHA1) rom.sha1
clean:
$(RM) $(ROM) $(ELF) $(OBJS)
$(RM) genasm/*
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
include graphics_file_rules.mk
%.png: ;
%.pal: ;
%.1bpp: %.png ; $(GFX) $< $@
%.4bpp: %.png ; $(GFX) $< $@
%.8bpp: %.png ; $(GFX) $< $@
%.gbapal: %.pal ; $(GFX) $< $@
%.lz: % ; $(GFX) $< $@
$(OBJS): $(CSRCS:src/%.c=genasm/%.s)
# TODO: fix this .syntax hack
genasm/prefix.tmp:
echo -e "\t.syntax divided" >$@
genasm/suffix.tmp:
echo -e "\t.syntax unified" >$@
genasm/%.s: src/%.c genasm/prefix.tmp genasm/suffix.tmp
mkdir -p genasm
$(CC) $(CFLAGS) -o $@.tmp $< -S
cat genasm/prefix.tmp $@.tmp genasm/suffix.tmp >$@.tmp2
perl fix_local_labels.pl $@.tmp2 $@
$(RM) $@.tmp $@.tmp2
%.o: %.s $$($$@_deps)
$(AS) $(ASFLAGS) -o $@ $<
# Link objects to produce the ROM.
$(ROM): $(OBJS)
./pokeld -T ld_script.txt -T wram_syms.txt -o $(ELF) $(OBJS)
./pokeobjcopy -O binary $(ELF) $(ROM)

138
asm/rom.s
View File

@ -23655,10 +23655,10 @@ sub_800B25C: ; 800B25C
pop {r1}
bx r1
.align 2
_0800B2B8: .4byte gUnknown_081E8E44
_0800B2B8: .4byte gMonFrontPicTable + 0xAF0
_0800B2BC: .4byte gUnknown_081E7C74
_0800B2C0: .4byte gUnknown_081FAF4C
_0800B2C4: .4byte gUnknown_081EB0A4
_0800B2C4: .4byte gMonPaletteTable + 0xAF0
_0800B2C8: .4byte 0x02024e8c
thumb_func_end sub_800B25C
@ -27933,7 +27933,7 @@ DecompressPicFromTable_2: ; 800D308
bl LZ77UnCompWram
b _0800D330
.align 2
_0800D324: .4byte gUnknown_081E8354
_0800D324: .4byte gMonFrontPicTable
_0800D328:
ldr r0, [r2]
adds r1, r3, 0
@ -28034,7 +28034,7 @@ _0800D3CA:
ldr r0, [r1]
b _0800D3F8
.align 2
_0800D3D8: .4byte gUnknown_081E97F4
_0800D3D8: .4byte gMonBackPicTable
_0800D3DC:
ldr r0, _0800D3E8
lsls r1, 3
@ -28042,7 +28042,7 @@ _0800D3DC:
ldr r0, [r1]
b _0800D3F8
.align 2
_0800D3E8: .4byte gUnknown_081E8354
_0800D3E8: .4byte gMonFrontPicTable
_0800D3EC:
movs r0, 0xCE
lsls r0, 1
@ -28055,7 +28055,7 @@ _0800D3F8:
bl LZ77UnCompWram
b _0800D40C
.align 2
_0800D400: .4byte gUnknown_081E8354
_0800D400: .4byte gMonFrontPicTable
_0800D404:
ldr r0, [r1]
adds r1, r5, 0
@ -99463,7 +99463,7 @@ _080317DC:
b _08031856
.align 2
_08031838: .4byte 0x02024e70
_0803183C: .4byte gUnknown_081E8354
_0803183C: .4byte gMonFrontPicTable
_08031840: .4byte gUnknown_081E7C74
_08031844: .4byte gUnknown_081FAF4C
_08031848: .4byte 0x02017800
@ -99627,7 +99627,7 @@ _08031944:
b _080319BE
.align 2
_080319A0: .4byte 0x02024e70
_080319A4: .4byte gUnknown_081E97F4
_080319A4: .4byte gMonBackPicTable
_080319A8: .4byte gUnknown_081E9114
_080319AC: .4byte gUnknown_081FAF4C
_080319B0: .4byte 0x02017800
@ -100516,7 +100516,7 @@ _08032088:
b _08032184
.align 2
_080320C0: .4byte 0x02019348
_080320C4: .4byte gUnknown_081E97F4
_080320C4: .4byte gMonBackPicTable
_080320C8: .4byte gUnknown_081E9114
_080320CC: .4byte gUnknown_081FAF4C
_080320D0:
@ -100612,7 +100612,7 @@ _08032184:
.align 2
_0803218C: .4byte 0x02024a6a
_08032190: .4byte 0x03004360
_08032194: .4byte gUnknown_081E97F4
_08032194: .4byte gMonBackPicTable
_08032198: .4byte gUnknown_081E9114
_0803219C: .4byte gUnknown_081FAF4C
_080321A0: .4byte 0x02024e70
@ -100788,7 +100788,7 @@ _080322F6:
.align 2
_08032308: .4byte 0x02024a6a
_0803230C: .4byte 0x030045c0
_08032310: .4byte gUnknown_081E8354
_08032310: .4byte gMonFrontPicTable
_08032314: .4byte gUnknown_081E7C74
_08032318: .4byte gUnknown_081FAF4C
_0803231C: .4byte 0x02024e70
@ -129766,7 +129766,7 @@ species_and_otid_get_pal: ; 804093C
ldr r0, [r0]
b _08040984
.align 2
_08040954: .4byte gUnknown_081EA5B4
_08040954: .4byte gMonPaletteTable
_08040958:
lsrs r0, r1, 16
ldr r2, _08040974
@ -129783,7 +129783,7 @@ _08040958:
b _08040980
.align 2
_08040974: .4byte 0x0000ffff
_08040978: .4byte gUnknown_081EA5B4
_08040978: .4byte gMonPaletteTable
_0804097C:
ldr r0, _0804098C
lsls r1, r5, 3
@ -129795,7 +129795,7 @@ _08040984:
pop {r1}
bx r1
.align 2
_0804098C: .4byte gUnknown_081EB374
_0804098C: .4byte gMonShinyPaletteTable
thumb_func_end species_and_otid_get_pal
thumb_func_start sub_8040990
@ -129846,7 +129846,7 @@ sub_80409C8: ; 80409C8
b _080409F4
.align 2
_080409E8: .4byte 0x0000ffff
_080409EC: .4byte gUnknown_081EA5B4
_080409EC: .4byte gMonPaletteTable
_080409F0:
lsls r0, r4, 3
ldr r1, _080409FC
@ -129856,7 +129856,7 @@ _080409F4:
pop {r1}
bx r1
.align 2
_080409FC: .4byte gUnknown_081EB374
_080409FC: .4byte gMonShinyPaletteTable
thumb_func_end sub_80409C8
thumb_func_start sub_8040A00
@ -134363,7 +134363,7 @@ _08042BB4:
bl LoadCompressedObjectPalette
b _08042C50
.align 2
_08042C04: .4byte gUnknown_081E8354
_08042C04: .4byte gMonFrontPicTable
_08042C08: .4byte gUnknown_081E7C74
_08042C0C: .4byte 0x02000000
_08042C10: .4byte gUnknown_081FAF4C
@ -151464,7 +151464,7 @@ _0804B330:
strh r5, [r0]
b _0804B3FA
.align 2
_0804B390: .4byte gUnknown_081E8354
_0804B390: .4byte gMonFrontPicTable
_0804B394: .4byte gUnknown_081E7C74
_0804B398: .4byte 0x02000000
_0804B39C: .4byte gUnknown_081FAF4C
@ -250864,7 +250864,7 @@ sub_8079F44: ; 8079F44
.align 2
_08079FE0: .4byte gUnknown_0837F5E0
_08079FE4: .4byte gUnknown_0837F5B0
_08079FE8: .4byte gUnknown_081E8354
_08079FE8: .4byte gMonFrontPicTable
_08079FEC: .4byte gUnknown_081E7C74
_08079FF0:
adds r0, r6, 0
@ -250926,7 +250926,7 @@ _0807A02E:
adds r2, r4
b _0807A09E
.align 2
_0807A068: .4byte gUnknown_081E97F4
_0807A068: .4byte gMonBackPicTable
_0807A06C: .4byte gUnknown_081E9114
_0807A070: .4byte 0x06010000
_0807A074: .4byte 0x040000d4
@ -275246,10 +275246,10 @@ sub_8085AD4: ; 8085AD4
pop {r1}
bx r1
.align 2
_08085B74: .4byte gUnknown_081E8354
_08085B74: .4byte gMonFrontPicTable
_08085B78: .4byte gUnknown_081E7C74
_08085B7C: .4byte gUnknown_081FAF4C
_08085B80: .4byte gUnknown_081EA5B4
_08085B80: .4byte gMonPaletteTable
_08085B84: .4byte 0x02024e8c
thumb_func_end sub_8085AD4
@ -275335,7 +275335,7 @@ sub_8085B88: ; 8085B88
pop {r1}
bx r1
.align 2
_08085C34: .4byte gUnknown_081E8354
_08085C34: .4byte gMonFrontPicTable
_08085C38: .4byte gUnknown_081E7C74
_08085C3C: .4byte gUnknown_081FAF4C
_08085C40: .4byte 0x02024e8c
@ -298870,7 +298870,7 @@ _0809178C:
pop {r0}
bx r0
.align 2
_080917C8: .4byte gUnknown_083B4EE4
_080917C8: .4byte gMonFootprintTable
thumb_func_end sub_8091738
thumb_func_start sub_80917CC
@ -299083,7 +299083,7 @@ sub_80918EC: ; 80918EC
bl DecompressPicFromTable_2
b _080919CE
.align 2
_0809194C: .4byte gUnknown_081E8354
_0809194C: .4byte gMonFrontPicTable
_08091950: .4byte gUnknown_081E7C74
_08091954: .4byte gUnknown_083B5584
_08091958:
@ -299113,7 +299113,7 @@ _08091958:
bl sub_800D378
b _080919CE
.align 2
_0809198C: .4byte gUnknown_081E8354
_0809198C: .4byte gMonFrontPicTable
_08091990: .4byte gUnknown_081E7C74
_08091994: .4byte gUnknown_083B5584
_08091998: .4byte 0x02024ea4
@ -299190,11 +299190,11 @@ _080919CE:
pop {r1}
bx r1
.align 2
_08091A30: .4byte gUnknown_081E8354
_08091A30: .4byte gMonFrontPicTable
_08091A34: .4byte gUnknown_081E7C74
_08091A38: .4byte gUnknown_083B5584
_08091A3C: .4byte 0x02024ea4
_08091A40: .4byte gUnknown_081EA5B4
_08091A40: .4byte gMonPaletteTable
_08091A44: .4byte 0x02024e8c
_08091A48: .4byte 0x02020004
thumb_func_end sub_80918EC
@ -312344,7 +312344,7 @@ sub_80981F0: ; 80981F0
b _080982A6
.align 2
_08098274: .4byte 0x02000000
_08098278: .4byte gUnknown_081E8354
_08098278: .4byte gMonFrontPicTable
_0809827C: .4byte gUnknown_081E7C74
_08098280: .4byte 0x00004784
_08098284: .4byte 0x00002784
@ -315463,7 +315463,7 @@ _08099A94:
bx r1
.align 2
_08099A9C: .4byte 0x000010d0
_08099AA0: .4byte gUnknown_083BBD20
_08099AA0: .4byte gMonIconTable
_08099AA4: .4byte 0x06010000
_08099AA8: .4byte 0x04000080
thumb_func_end sub_80999E8
@ -315601,7 +315601,7 @@ sub_8099AFC: ; 8099AFC
b _08099BD0
.align 2
_08099BAC: .4byte gUnknown_083B6F14
_08099BB0: .4byte gUnknown_083BC400
_08099BB0: .4byte gMonIconPaletteIndices
_08099BB4: .4byte 0x0000dac0
_08099BB8: .4byte 0x0000ffff
_08099BBC: .4byte 0x02020004
@ -322696,10 +322696,10 @@ sub_809D26C: ; 809D26C
bx r1
.align 2
_0809D2E0: .4byte gUnknown_083BC5E8
_0809D2E4: .4byte gUnknown_083BBD20
_0809D2E4: .4byte gMonIconTable
_0809D2E8: .4byte gUnknown_083BC62C
_0809D2EC: .4byte gUnknown_083BC660
_0809D2F0: .4byte gUnknown_083BC400
_0809D2F0: .4byte gMonIconPaletteIndices
_0809D2F4: .4byte 0x0000dac0
_0809D2F8: .4byte 0x02020004
thumb_func_end sub_809D26C
@ -322779,7 +322779,7 @@ _0809D35A:
_0809D38C: .4byte gUnknown_083BC5E8
_0809D390: .4byte gUnknown_083BC62C
_0809D394: .4byte gUnknown_083BC660
_0809D398: .4byte gUnknown_083BC400
_0809D398: .4byte gMonIconPaletteIndices
_0809D39C: .4byte 0x0000dac0
_0809D3A0: .4byte 0x02020004
thumb_func_end sub_809D2FC
@ -322843,10 +322843,10 @@ sub_809D3A4: ; 809D3A4
bx r1
.align 2
_0809D418: .4byte gUnknown_083BC5E8
_0809D41C: .4byte gUnknown_083BBD20
_0809D41C: .4byte gMonIconTable
_0809D420: .4byte gUnknown_083BC62C
_0809D424: .4byte gUnknown_083BC660
_0809D428: .4byte gUnknown_083BC400
_0809D428: .4byte gMonIconPaletteIndices
_0809D42C: .4byte 0x0000dac0
_0809D430: .4byte 0x02020004
thumb_func_end sub_809D3A4
@ -322975,7 +322975,7 @@ sub_809D4F4: ; 809D4F4
pop {r1}
bx r1
.align 2
_0809D50C: .4byte gUnknown_083BBD20
_0809D50C: .4byte gMonIconTable
thumb_func_end sub_809D4F4
thumb_func_start sub_809D510
@ -323004,7 +323004,7 @@ _0809D522:
pop {r0}
bx r0
.align 2
_0809D53C: .4byte gUnknown_083BC5B8
_0809D53C: .4byte gMonIconPaletteTable
thumb_func_end sub_809D51C
thumb_func_start sub_809D540
@ -323038,8 +323038,8 @@ _0809D572:
pop {r0}
bx r0
.align 2
_0809D578: .4byte gUnknown_083BC400
_0809D57C: .4byte gUnknown_083BC5B8
_0809D578: .4byte gMonIconPaletteIndices
_0809D57C: .4byte gMonIconPaletteTable
thumb_func_end sub_809D540
thumb_func_start sub_809D580
@ -323066,8 +323066,8 @@ _0809D5A6:
pop {r0}
bx r0
.align 2
_0809D5AC: .4byte gUnknown_083BC400
_0809D5B0: .4byte gUnknown_083BC5B8
_0809D5AC: .4byte gMonIconPaletteIndices
_0809D5B0: .4byte gMonIconPaletteTable
thumb_func_end sub_809D580
thumb_func_start sub_809D5B4
@ -323089,7 +323089,7 @@ _0809D5BA:
pop {r0}
bx r0
.align 2
_0809D5D4: .4byte gUnknown_083BC5B8
_0809D5D4: .4byte gMonIconPaletteTable
thumb_func_end sub_809D5B4
thumb_func_start sub_809D5D8
@ -323115,8 +323115,8 @@ _0809D5EA:
pop {r0}
bx r0
.align 2
_0809D600: .4byte gUnknown_083BC400
_0809D604: .4byte gUnknown_083BC5B8
_0809D600: .4byte gMonIconPaletteIndices
_0809D604: .4byte gMonIconPaletteTable
thumb_func_end sub_809D5D8
thumb_func_start sub_809D608
@ -323135,8 +323135,8 @@ sub_809D608: ; 809D608
pop {r0}
bx r0
.align 2
_0809D624: .4byte gUnknown_083BC400
_0809D628: .4byte gUnknown_083BC5B8
_0809D624: .4byte gMonIconPaletteIndices
_0809D628: .4byte gMonIconPaletteTable
thumb_func_end sub_809D608
thumb_func_start sub_809D62C
@ -327250,7 +327250,7 @@ _0809F6D2:
bl sub_800D334
b _0809F74E
.align 2
_0809F70C: .4byte gUnknown_081E8354
_0809F70C: .4byte gMonFrontPicTable
_0809F710: .4byte gUnknown_081E7C74
_0809F714: .4byte gUnknown_081FAF4C
_0809F718:
@ -358171,10 +358171,10 @@ sub_80AE908: ; 80AE908
.align 2
_080AE9D4: .4byte 0x02038570
_080AE9D8: .4byte 0x02038695
_080AE9DC: .4byte gUnknown_081E8354
_080AE9DC: .4byte gMonFrontPicTable
_080AE9E0: .4byte gUnknown_081E7C74
_080AE9E4: .4byte gUnknown_081FAF4C
_080AE9E8: .4byte gUnknown_081EA5B4
_080AE9E8: .4byte gMonPaletteTable
_080AE9EC: .4byte 0x02024e8c
_080AE9F0: .4byte 0x02020004
_080AE9F4: .4byte nullsub_2
@ -358279,7 +358279,7 @@ sub_80AE9FC: ; 80AE9FC
ldr r1, _080AEAE4
b _080AEAF0
.align 2
_080AEACC: .4byte gUnknown_081E97F4
_080AEACC: .4byte gMonBackPicTable
_080AEAD0: .4byte gUnknown_081E9114
_080AEAD4: .4byte gUnknown_081FAF4C
_080AEAD8: .4byte 0x02024e8c
@ -399653,7 +399653,7 @@ _080C2BC8: .4byte 0x03004240
_080C2BCC: .4byte 0x00005050
_080C2BD0: .4byte 0x02038690
_080C2BD4: .4byte 0x02038570
_080C2BD8: .4byte gUnknown_081E8354
_080C2BD8: .4byte gMonFrontPicTable
_080C2BDC: .4byte gUnknown_081E7C74
_080C2BE0: .4byte gUnknown_081FAF4C
_080C2BE4: .4byte 0x02000000
@ -400348,9 +400348,9 @@ _080C3116:
pop {r0}
bx r0
.align 2
_080C314C: .4byte gUnknown_083BC400
_080C314C: .4byte gMonIconPaletteIndices
_080C3150: .4byte 0x02038570
_080C3154: .4byte gUnknown_08E966D8
_080C3154: .4byte gMonIconPalettes
thumb_func_end sub_80C310C
thumb_func_start sub_80C3158
@ -404511,7 +404511,7 @@ _080C513C: .4byte sub_80C5190
_080C5140: .4byte 0x02038570
_080C5144: .4byte 0x0202e8d0
_080C5148: .4byte 0x03004b20
_080C514C: .4byte gUnknown_081E8354
_080C514C: .4byte gMonFrontPicTable
_080C5150: .4byte gUnknown_081E7C74
_080C5154: .4byte gUnknown_081FAF4C
_080C5158: .4byte 0x02024e8c
@ -502283,7 +502283,7 @@ _080F48D0:
_080F48E0: .4byte gUnknown_083DFEC4
_080F48E4: .4byte 0x0000893f
_080F48E8: .4byte 0x0000893d
_080F48EC: .4byte gUnknown_081E8354
_080F48EC: .4byte gMonFrontPicTable
_080F48F0: .4byte gUnknown_081E7C74
_080F48F4: .4byte 0x000131e4
_080F48F8: .4byte 0x0000d1e4
@ -540409,7 +540409,7 @@ sub_8106AC4: ; 8106AC4
.align 2
_08106B28: .4byte 0x03005e8c
_08106B2C: .4byte 0x03005e90
_08106B30: .4byte gUnknown_081E8354
_08106B30: .4byte gMonFrontPicTable
_08106B34: .4byte gUnknown_081E7C74
_08106B38: .4byte gUnknown_081FAF4C
_08106B3C: .4byte 0x03005e10
@ -540446,7 +540446,7 @@ _08106B74:
pop {r0}
bx r0
.align 2
_08106B80: .4byte gUnknown_081E97F4
_08106B80: .4byte gMonBackPicTable
_08106B84: .4byte gUnknown_081E9114
_08106B88: .4byte gUnknown_081FAF4C
_08106B8C: .4byte 0x03005e10
@ -548148,10 +548148,10 @@ sub_810A580: ; 810A580
pop {r1}
bx r1
.align 2
_0810A610: .4byte gUnknown_081E8354
_0810A610: .4byte gMonFrontPicTable
_0810A614: .4byte gUnknown_081E7C74
_0810A618: .4byte gUnknown_081FAF4C
_0810A61C: .4byte gUnknown_081EA5B4
_0810A61C: .4byte gMonPaletteTable
_0810A620: .4byte 0x02024e8c
_0810A624: .4byte 0x02020004
_0810A628: .4byte nullsub_72
@ -563350,7 +563350,7 @@ _08111C44: .4byte 0x030028f8
_08111C48: .4byte 0x020231cc
_08111C4C: .4byte 0x020232cc
_08111C50: .4byte gSpeciesNames
_08111C54: .4byte gUnknown_081E8354
_08111C54: .4byte gMonFrontPicTable
_08111C58: .4byte gUnknown_081E7C74
_08111C5C: .4byte gUnknown_081FAF4C
_08111C60: .4byte 0x02024e8c
@ -563559,7 +563559,7 @@ _08111E48: .4byte 0x030041b8
_08111E4C: .4byte 0x03004210
_08111E50: .4byte 0x0300428c
_08111E54: .4byte 0x030028f8
_08111E58: .4byte gUnknown_081E8354
_08111E58: .4byte gMonFrontPicTable
_08111E5C: .4byte gUnknown_081E7C74
_08111E60: .4byte gUnknown_081FAF4C
_08111E64: .4byte 0x02024e8c
@ -563753,7 +563753,7 @@ _08111FE2:
adds r1, r0
b _0811208E
.align 2
_08112034: .4byte gUnknown_081E8354
_08112034: .4byte gMonFrontPicTable
_08112038: .4byte gUnknown_081E7C74
_0811203C: .4byte gUnknown_081FAF4C
_08112040: .4byte 0x03001770
@ -563992,7 +563992,7 @@ _08112238: .4byte 0x020232cc
_0811223C: .4byte gSpeciesNames
_08112240: .4byte 0x020211c8
_08112244: .4byte 0x02014800
_08112248: .4byte gUnknown_081E8354
_08112248: .4byte gMonFrontPicTable
_0811224C: .4byte gUnknown_081E7C74
_08112250: .4byte gUnknown_081FAF4C
_08112254: .4byte 0x02024e8c
@ -651072,7 +651072,7 @@ sub_813CE88: ; 813CE88
bl sub_800D378
b _0813CF1C
.align 2
_0813CEE4: .4byte gUnknown_081E8354
_0813CEE4: .4byte gMonFrontPicTable
_0813CEE8: .4byte gUnknown_081E7C74
_0813CEEC: .4byte gUnknown_0840B5A0
_0813CEF0:
@ -651153,7 +651153,7 @@ _0813CF1C:
pop {r1}
bx r1
.align 2
_0813CF90: .4byte gUnknown_081E97F4
_0813CF90: .4byte gMonBackPicTable
_0813CF94: .4byte gUnknown_081E9114
_0813CF98: .4byte gUnknown_0840B5A0
_0813CF9C: .4byte 0x0000ffff
@ -664434,7 +664434,7 @@ sub_81436BC: ; 81436BC
pop {r1}
bx r1
.align 2
_08143790: .4byte gUnknown_081E8354
_08143790: .4byte gMonFrontPicTable
_08143794: .4byte gUnknown_081E7C74
_08143798: .4byte gUnknown_0840B5A0
_0814379C: .4byte 0x02024e8c
@ -668485,7 +668485,7 @@ _081456FC:
bx r1
.align 2
_081457E8: .4byte 0x02024ea4
_081457EC: .4byte gUnknown_081E8354
_081457EC: .4byte gMonFrontPicTable
_081457F0: .4byte gUnknown_081E7C74
_081457F4: .4byte gUnknown_0840B5A0
_081457F8: .4byte 0x0000ffff
@ -672819,7 +672819,7 @@ _08147B70:
bl sub_800D334
b _08147C40
.align 2
_08147BAC: .4byte gUnknown_081E8354
_08147BAC: .4byte gMonFrontPicTable
_08147BB0: .4byte gUnknown_081E7C74
_08147BB4: .4byte gUnknown_081FAF4C
_08147BB8:

View File

@ -374,26 +374,23 @@ gUnknown_081E7C64: ; 81E7C64
gUnknown_081E7C74: ; 81E7C74
.incbin "baserom.gba", 0x001e7c74, 0x6e0
gUnknown_081E8354: ; 81E8354
.incbin "baserom.gba", 0x001e8354, 0xaf0
gUnknown_081E8E44: ; 81E8E44
.incbin "baserom.gba", 0x001e8e44, 0x2d0
; 81E8354
.include "data/graphics/pokemon/front_pic_table.s"
gUnknown_081E9114: ; 81E9114
.incbin "baserom.gba", 0x001e9114, 0x6e0
gUnknown_081E97F4: ; 81E97F4
.incbin "baserom.gba", 0x001e97f4, 0xdc0
; 81E97F4
.include "data/graphics/pokemon/back_pic_table.s"
gUnknown_081EA5B4: ; 81EA5B4
.incbin "baserom.gba", 0x001ea5b4, 0xaf0
; 81EA5B4
.include "data/graphics/pokemon/palette_table.s"
gUnknown_081EB0A4: ; 81EB0A4
.incbin "baserom.gba", 0x001eb0a4, 0x2d0
; 81EB374
.include "data/graphics/pokemon/shiny_palette_table.s"
gUnknown_081EB374: ; 81EB374
.incbin "baserom.gba", 0x001eb374, 0xf30
; 81EC134
.incbin "baserom.gba", 0x001EC134, 0x170
gUnknown_081EC2A4: ; 81EC2A4
.incbin "baserom.gba", 0x001ec2a4, 0x14c
@ -2490,8 +2487,8 @@ gUnknown_083B1858: ; 83B1858
gUnknown_083B4EC4: ; 83B4EC4
.incbin "baserom.gba", 0x003b4ec4, 0x20
gUnknown_083B4EE4: ; 83B4EE4
.incbin "baserom.gba", 0x003b4ee4, 0x674
; 83B4EE4
.include "data/graphics/pokemon/footprint_table.s"
gUnknown_083B5558: ; 83B5558
.incbin "baserom.gba", 0x003b5558, 0x2c
@ -2700,14 +2697,14 @@ gUnknown_083BBC88: ; 83BBC88
gUnknown_083BBCA0: ; 83BBCA0
.incbin "baserom.gba", 0x003bbca0, 0x80
gUnknown_083BBD20: ; 83BBD20
.incbin "baserom.gba", 0x003bbd20, 0x6e0
; 83BBD20
.include "data/graphics/pokemon/icon_table.s"
gUnknown_083BC400: ; 83BC400
.incbin "baserom.gba", 0x003bc400, 0x1b8
; 83BC400
.include "data/graphics/pokemon/icon_palette_indices.s"
gUnknown_083BC5B8: ; 83BC5B8
.incbin "baserom.gba", 0x003bc5b8, 0x30
; 83BC5B8
.include "data/graphics/pokemon/icon_palette_table.s"
gUnknown_083BC5E8: ; 83BC5E8
.incbin "baserom.gba", 0x003bc5e8, 0x44
@ -7858,7 +7855,13 @@ gUnknown_08D004E0: ; 8D004E0
.incbin "baserom.gba", 0x00d004e0, 0x44
gUnknown_08D00524: ; 8D00524
.incbin "baserom.gba", 0x00d00524, 0x2bac
.incbin "baserom.gba", 0x00d00524, 0x1000
; 8D01524
.include "data/graphics/pokemon/circled_question_mark_graphics.s"
; 8D019E4
.incbin "baserom.gba", 0xd019e4, 0x16EC
gUnknown_08D030D0: ; 8D030D0
.incbin "baserom.gba", 0x00d030d0, 0x6b78
@ -8002,7 +8005,22 @@ gUnknown_08D2EDFC: ; 8D2EDFC
.incbin "baserom.gba", 0x00d2edfc, 0x4c
gUnknown_08D2EE48: ; 8D2EE48
.incbin "baserom.gba", 0x00d2ee48, 0x12ebc8
.incbin "baserom.gba", 0x00d2ee48, 0xF44
; 8D2FD8C
.include "data/graphics/pokemon/graphics.s"
.incbin "baserom.gba", 0xe48d38, 0x148b8
.align 2
gMonIcon_QuestionMark: ; 8E5D5F0
.incbin "graphics/pokemon/question_mark/icon.4bpp"
.align 2
gMonFootprint_QuestionMark: ; 8E5D9F0
.incbin "graphics/pokemon/question_mark/footprint.1bpp"
gUnknown_08E5DA10: ; 8E5DA10
.incbin "baserom.gba", 0x00e5da10, 0xe8
@ -8113,7 +8131,13 @@ gUnknown_08E6978C: ; 8E6978C
.incbin "baserom.gba", 0x00e6978c, 0xf78
gUnknown_08E6A704: ; 8E6A704
.incbin "baserom.gba", 0x00e6a704, 0x19fc
.incbin "baserom.gba", 0x00e6a704, 0xD8
gMonIcon_Egg: ; 8E6A7DC
.incbin "graphics/pokemon/egg/icon.4bpp"
; 8E6ABDC
.incbin "baserom.gba", 0x00E6ABDC, 0x1524
gUnknown_08E6C100: ; 8E6C100
.incbin "baserom.gba", 0x00e6c100, 0x820
@ -8451,8 +8475,10 @@ gUnknown_08E964B8: ; 8E964B8
gUnknown_08E966B8: ; 8E966B8
.incbin "baserom.gba", 0x00e966b8, 0x20
gUnknown_08E966D8: ; 8E966D8
.incbin "baserom.gba", 0x00e966d8, 0x60
gMonIconPalettes: ; 8E966D8
.incbin "graphics/pokemon_icon_palettes/0.gbapal"
.incbin "graphics/pokemon_icon_palettes/1.gbapal"
.incbin "graphics/pokemon_icon_palettes/2.gbapal"
gUnknown_08E96738: ; 8E96738
.incbin "baserom.gba", 0x00e96738, 0x150

View File

@ -0,0 +1,443 @@
.align 2
gMonBackPicTable: ; 81E97F4
obj_tiles gMonBackPic_CircledQuestionMark, 0x800, 0
obj_tiles gMonBackPic_Bulbasaur, 0x800, 1
obj_tiles gMonBackPic_Ivysaur, 0x800, 2
obj_tiles gMonBackPic_Venusaur, 0x800, 3
obj_tiles gMonBackPic_Charmander, 0x800, 4
obj_tiles gMonBackPic_Charmeleon, 0x800, 5
obj_tiles gMonBackPic_Charizard, 0x800, 6
obj_tiles gMonBackPic_Squirtle, 0x800, 7
obj_tiles gMonBackPic_Wartortle, 0x800, 8
obj_tiles gMonBackPic_Blastoise, 0x800, 9
obj_tiles gMonBackPic_Caterpie, 0x800, 10
obj_tiles gMonBackPic_Metapod, 0x800, 11
obj_tiles gMonBackPic_Butterfree, 0x800, 12
obj_tiles gMonBackPic_Weedle, 0x800, 13
obj_tiles gMonBackPic_Kakuna, 0x800, 14
obj_tiles gMonBackPic_Beedrill, 0x800, 15
obj_tiles gMonBackPic_Pidgey, 0x800, 16
obj_tiles gMonBackPic_Pidgeotto, 0x800, 17
obj_tiles gMonBackPic_Pidgeot, 0x800, 18
obj_tiles gMonBackPic_Rattata, 0x800, 19
obj_tiles gMonBackPic_Raticate, 0x800, 20
obj_tiles gMonBackPic_Spearow, 0x800, 21
obj_tiles gMonBackPic_Fearow, 0x800, 22
obj_tiles gMonBackPic_Ekans, 0x800, 23
obj_tiles gMonBackPic_Arbok, 0x800, 24
obj_tiles gMonBackPic_Pikachu, 0x800, 25
obj_tiles gMonBackPic_Raichu, 0x800, 26
obj_tiles gMonBackPic_Sandshrew, 0x800, 27
obj_tiles gMonBackPic_Sandslash, 0x800, 28
obj_tiles gMonBackPic_NidoranF, 0x800, 29
obj_tiles gMonBackPic_Nidorina, 0x800, 30
obj_tiles gMonBackPic_Nidoqueen, 0x800, 31
obj_tiles gMonBackPic_NidoranM, 0x800, 32
obj_tiles gMonBackPic_Nidorino, 0x800, 33
obj_tiles gMonBackPic_Nidoking, 0x800, 34
obj_tiles gMonBackPic_Clefairy, 0x800, 35
obj_tiles gMonBackPic_Clefable, 0x800, 36
obj_tiles gMonBackPic_Vulpix, 0x800, 37
obj_tiles gMonBackPic_Ninetales, 0x800, 38
obj_tiles gMonBackPic_Jigglypuff, 0x800, 39
obj_tiles gMonBackPic_Wigglytuff, 0x800, 40
obj_tiles gMonBackPic_Zubat, 0x800, 41
obj_tiles gMonBackPic_Golbat, 0x800, 42
obj_tiles gMonBackPic_Oddish, 0x800, 43
obj_tiles gMonBackPic_Gloom, 0x800, 44
obj_tiles gMonBackPic_Vileplume, 0x800, 45
obj_tiles gMonBackPic_Paras, 0x800, 46
obj_tiles gMonBackPic_Parasect, 0x800, 47
obj_tiles gMonBackPic_Venonat, 0x800, 48
obj_tiles gMonBackPic_Venomoth, 0x800, 49
obj_tiles gMonBackPic_Diglett, 0x800, 50
obj_tiles gMonBackPic_Dugtrio, 0x800, 51
obj_tiles gMonBackPic_Meowth, 0x800, 52
obj_tiles gMonBackPic_Persian, 0x800, 53
obj_tiles gMonBackPic_Psyduck, 0x800, 54
obj_tiles gMonBackPic_Golduck, 0x800, 55
obj_tiles gMonBackPic_Mankey, 0x800, 56
obj_tiles gMonBackPic_Primeape, 0x800, 57
obj_tiles gMonBackPic_Growlithe, 0x800, 58
obj_tiles gMonBackPic_Arcanine, 0x800, 59
obj_tiles gMonBackPic_Poliwag, 0x800, 60
obj_tiles gMonBackPic_Poliwhirl, 0x800, 61
obj_tiles gMonBackPic_Poliwrath, 0x800, 62
obj_tiles gMonBackPic_Abra, 0x800, 63
obj_tiles gMonBackPic_Kadabra, 0x800, 64
obj_tiles gMonBackPic_Alakazam, 0x800, 65
obj_tiles gMonBackPic_Machop, 0x800, 66
obj_tiles gMonBackPic_Machoke, 0x800, 67
obj_tiles gMonBackPic_Machamp, 0x800, 68
obj_tiles gMonBackPic_Bellsprout, 0x800, 69
obj_tiles gMonBackPic_Weepinbell, 0x800, 70
obj_tiles gMonBackPic_Victreebel, 0x800, 71
obj_tiles gMonBackPic_Tentacool, 0x800, 72
obj_tiles gMonBackPic_Tentacruel, 0x800, 73
obj_tiles gMonBackPic_Geodude, 0x800, 74
obj_tiles gMonBackPic_Graveler, 0x800, 75
obj_tiles gMonBackPic_Golem, 0x800, 76
obj_tiles gMonBackPic_Ponyta, 0x800, 77
obj_tiles gMonBackPic_Rapidash, 0x800, 78
obj_tiles gMonBackPic_Slowpoke, 0x800, 79
obj_tiles gMonBackPic_Slowbro, 0x800, 80
obj_tiles gMonBackPic_Magnemite, 0x800, 81
obj_tiles gMonBackPic_Magneton, 0x800, 82
obj_tiles gMonBackPic_Farfetchd, 0x800, 83
obj_tiles gMonBackPic_Doduo, 0x800, 84
obj_tiles gMonBackPic_Dodrio, 0x800, 85
obj_tiles gMonBackPic_Seel, 0x800, 86
obj_tiles gMonBackPic_Dewgong, 0x800, 87
obj_tiles gMonBackPic_Grimer, 0x800, 88
obj_tiles gMonBackPic_Muk, 0x800, 89
obj_tiles gMonBackPic_Shellder, 0x800, 90
obj_tiles gMonBackPic_Cloyster, 0x800, 91
obj_tiles gMonBackPic_Gastly, 0x800, 92
obj_tiles gMonBackPic_Haunter, 0x800, 93
obj_tiles gMonBackPic_Gengar, 0x800, 94
obj_tiles gMonBackPic_Onix, 0x800, 95
obj_tiles gMonBackPic_Drowzee, 0x800, 96
obj_tiles gMonBackPic_Hypno, 0x800, 97
obj_tiles gMonBackPic_Krabby, 0x800, 98
obj_tiles gMonBackPic_Kingler, 0x800, 99
obj_tiles gMonBackPic_Voltorb, 0x800, 100
obj_tiles gMonBackPic_Electrode, 0x800, 101
obj_tiles gMonBackPic_Exeggcute, 0x800, 102
obj_tiles gMonBackPic_Exeggutor, 0x800, 103
obj_tiles gMonBackPic_Cubone, 0x800, 104
obj_tiles gMonBackPic_Marowak, 0x800, 105
obj_tiles gMonBackPic_Hitmonlee, 0x800, 106
obj_tiles gMonBackPic_Hitmonchan, 0x800, 107
obj_tiles gMonBackPic_Lickitung, 0x800, 108
obj_tiles gMonBackPic_Koffing, 0x800, 109
obj_tiles gMonBackPic_Weezing, 0x800, 110
obj_tiles gMonBackPic_Rhyhorn, 0x800, 111
obj_tiles gMonBackPic_Rhydon, 0x800, 112
obj_tiles gMonBackPic_Chansey, 0x800, 113
obj_tiles gMonBackPic_Tangela, 0x800, 114
obj_tiles gMonBackPic_Kangaskhan, 0x800, 115
obj_tiles gMonBackPic_Horsea, 0x800, 116
obj_tiles gMonBackPic_Seadra, 0x800, 117
obj_tiles gMonBackPic_Goldeen, 0x800, 118
obj_tiles gMonBackPic_Seaking, 0x800, 119
obj_tiles gMonBackPic_Staryu, 0x800, 120
obj_tiles gMonBackPic_Starmie, 0x800, 121
obj_tiles gMonBackPic_Mrmime, 0x800, 122
obj_tiles gMonBackPic_Scyther, 0x800, 123
obj_tiles gMonBackPic_Jynx, 0x800, 124
obj_tiles gMonBackPic_Electabuzz, 0x800, 125
obj_tiles gMonBackPic_Magmar, 0x800, 126
obj_tiles gMonBackPic_Pinsir, 0x800, 127
obj_tiles gMonBackPic_Tauros, 0x800, 128
obj_tiles gMonBackPic_Magikarp, 0x800, 129
obj_tiles gMonBackPic_Gyarados, 0x800, 130
obj_tiles gMonBackPic_Lapras, 0x800, 131
obj_tiles gMonBackPic_Ditto, 0x800, 132
obj_tiles gMonBackPic_Eevee, 0x800, 133
obj_tiles gMonBackPic_Vaporeon, 0x800, 134
obj_tiles gMonBackPic_Jolteon, 0x800, 135
obj_tiles gMonBackPic_Flareon, 0x800, 136
obj_tiles gMonBackPic_Porygon, 0x800, 137
obj_tiles gMonBackPic_Omanyte, 0x800, 138
obj_tiles gMonBackPic_Omastar, 0x800, 139
obj_tiles gMonBackPic_Kabuto, 0x800, 140
obj_tiles gMonBackPic_Kabutops, 0x800, 141
obj_tiles gMonBackPic_Aerodactyl, 0x800, 142
obj_tiles gMonBackPic_Snorlax, 0x800, 143
obj_tiles gMonBackPic_Articuno, 0x800, 144
obj_tiles gMonBackPic_Zapdos, 0x800, 145
obj_tiles gMonBackPic_Moltres, 0x800, 146
obj_tiles gMonBackPic_Dratini, 0x800, 147
obj_tiles gMonBackPic_Dragonair, 0x800, 148
obj_tiles gMonBackPic_Dragonite, 0x800, 149
obj_tiles gMonBackPic_Mewtwo, 0x800, 150
obj_tiles gMonBackPic_Mew, 0x800, 151
obj_tiles gMonBackPic_Chikorita, 0x800, 152
obj_tiles gMonBackPic_Bayleef, 0x800, 153
obj_tiles gMonBackPic_Meganium, 0x800, 154
obj_tiles gMonBackPic_Cyndaquil, 0x800, 155
obj_tiles gMonBackPic_Quilava, 0x800, 156
obj_tiles gMonBackPic_Typhlosion, 0x800, 157
obj_tiles gMonBackPic_Totodile, 0x800, 158
obj_tiles gMonBackPic_Croconaw, 0x800, 159
obj_tiles gMonBackPic_Feraligatr, 0x800, 160
obj_tiles gMonBackPic_Sentret, 0x800, 161
obj_tiles gMonBackPic_Furret, 0x800, 162
obj_tiles gMonBackPic_Hoothoot, 0x800, 163
obj_tiles gMonBackPic_Noctowl, 0x800, 164
obj_tiles gMonBackPic_Ledyba, 0x800, 165
obj_tiles gMonBackPic_Ledian, 0x800, 166
obj_tiles gMonBackPic_Spinarak, 0x800, 167
obj_tiles gMonBackPic_Ariados, 0x800, 168
obj_tiles gMonBackPic_Crobat, 0x800, 169
obj_tiles gMonBackPic_Chinchou, 0x800, 170
obj_tiles gMonBackPic_Lanturn, 0x800, 171
obj_tiles gMonBackPic_Pichu, 0x800, 172
obj_tiles gMonBackPic_Cleffa, 0x800, 173
obj_tiles gMonBackPic_Igglybuff, 0x800, 174
obj_tiles gMonBackPic_Togepi, 0x800, 175
obj_tiles gMonBackPic_Togetic, 0x800, 176
obj_tiles gMonBackPic_Natu, 0x800, 177
obj_tiles gMonBackPic_Xatu, 0x800, 178
obj_tiles gMonBackPic_Mareep, 0x800, 179
obj_tiles gMonBackPic_Flaaffy, 0x800, 180
obj_tiles gMonBackPic_Ampharos, 0x800, 181
obj_tiles gMonBackPic_Bellossom, 0x800, 182
obj_tiles gMonBackPic_Marill, 0x800, 183
obj_tiles gMonBackPic_Azumarill, 0x800, 184
obj_tiles gMonBackPic_Sudowoodo, 0x800, 185
obj_tiles gMonBackPic_Politoed, 0x800, 186
obj_tiles gMonBackPic_Hoppip, 0x800, 187
obj_tiles gMonBackPic_Skiploom, 0x800, 188
obj_tiles gMonBackPic_Jumpluff, 0x800, 189
obj_tiles gMonBackPic_Aipom, 0x800, 190
obj_tiles gMonBackPic_Sunkern, 0x800, 191
obj_tiles gMonBackPic_Sunflora, 0x800, 192
obj_tiles gMonBackPic_Yanma, 0x800, 193
obj_tiles gMonBackPic_Wooper, 0x800, 194
obj_tiles gMonBackPic_Quagsire, 0x800, 195
obj_tiles gMonBackPic_Espeon, 0x800, 196
obj_tiles gMonBackPic_Umbreon, 0x800, 197
obj_tiles gMonBackPic_Murkrow, 0x800, 198
obj_tiles gMonBackPic_Slowking, 0x800, 199
obj_tiles gMonBackPic_Misdreavus, 0x800, 200
obj_tiles gMonBackPic_UnownA, 0x800, 201
obj_tiles gMonBackPic_Wobbuffet, 0x800, 202
obj_tiles gMonBackPic_Girafarig, 0x800, 203
obj_tiles gMonBackPic_Pineco, 0x800, 204
obj_tiles gMonBackPic_Forretress, 0x800, 205
obj_tiles gMonBackPic_Dunsparce, 0x800, 206
obj_tiles gMonBackPic_Gligar, 0x800, 207
obj_tiles gMonBackPic_Steelix, 0x800, 208
obj_tiles gMonBackPic_Snubbull, 0x800, 209
obj_tiles gMonBackPic_Granbull, 0x800, 210
obj_tiles gMonBackPic_Qwilfish, 0x800, 211
obj_tiles gMonBackPic_Scizor, 0x800, 212
obj_tiles gMonBackPic_Shuckle, 0x800, 213
obj_tiles gMonBackPic_Heracross, 0x800, 214
obj_tiles gMonBackPic_Sneasel, 0x800, 215
obj_tiles gMonBackPic_Teddiursa, 0x800, 216
obj_tiles gMonBackPic_Ursaring, 0x800, 217
obj_tiles gMonBackPic_Slugma, 0x800, 218
obj_tiles gMonBackPic_Magcargo, 0x800, 219
obj_tiles gMonBackPic_Swinub, 0x800, 220
obj_tiles gMonBackPic_Piloswine, 0x800, 221
obj_tiles gMonBackPic_Corsola, 0x800, 222
obj_tiles gMonBackPic_Remoraid, 0x800, 223
obj_tiles gMonBackPic_Octillery, 0x800, 224
obj_tiles gMonBackPic_Delibird, 0x800, 225
obj_tiles gMonBackPic_Mantine, 0x800, 226
obj_tiles gMonBackPic_Skarmory, 0x800, 227
obj_tiles gMonBackPic_Houndour, 0x800, 228
obj_tiles gMonBackPic_Houndoom, 0x800, 229
obj_tiles gMonBackPic_Kingdra, 0x800, 230
obj_tiles gMonBackPic_Phanpy, 0x800, 231
obj_tiles gMonBackPic_Donphan, 0x800, 232
obj_tiles gMonBackPic_Porygon2, 0x800, 233
obj_tiles gMonBackPic_Stantler, 0x800, 234
obj_tiles gMonBackPic_Smeargle, 0x800, 235
obj_tiles gMonBackPic_Tyrogue, 0x800, 236
obj_tiles gMonBackPic_Hitmontop, 0x800, 237
obj_tiles gMonBackPic_Smoochum, 0x800, 238
obj_tiles gMonBackPic_Elekid, 0x800, 239
obj_tiles gMonBackPic_Magby, 0x800, 240
obj_tiles gMonBackPic_Miltank, 0x800, 241
obj_tiles gMonBackPic_Blissey, 0x800, 242
obj_tiles gMonBackPic_Raikou, 0x800, 243
obj_tiles gMonBackPic_Entei, 0x800, 244
obj_tiles gMonBackPic_Suicune, 0x800, 245
obj_tiles gMonBackPic_Larvitar, 0x800, 246
obj_tiles gMonBackPic_Pupitar, 0x800, 247
obj_tiles gMonBackPic_Tyranitar, 0x800, 248
obj_tiles gMonBackPic_Lugia, 0x800, 249
obj_tiles gMonBackPic_HoOh, 0x800, 250
obj_tiles gMonBackPic_Celebi, 0x800, 251
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 252
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 253
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 254
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 255
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 256
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 257
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 258
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 259
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 260
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 261
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 262
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 263
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 264
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 265
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 266
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 267
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 268
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 269
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 270
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 271
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 272
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 273
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 274
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 275
obj_tiles gMonBackPic_DoubleQuestionMark, 0x800, 276
obj_tiles gMonBackPic_Treecko, 0x800, 277
obj_tiles gMonBackPic_Grovyle, 0x800, 278
obj_tiles gMonBackPic_Sceptile, 0x800, 279
obj_tiles gMonBackPic_Torchic, 0x800, 280
obj_tiles gMonBackPic_Combusken, 0x800, 281
obj_tiles gMonBackPic_Blaziken, 0x800, 282
obj_tiles gMonBackPic_Mudkip, 0x800, 283
obj_tiles gMonBackPic_Marshtomp, 0x800, 284
obj_tiles gMonBackPic_Swampert, 0x800, 285
obj_tiles gMonBackPic_Poochyena, 0x800, 286
obj_tiles gMonBackPic_Mightyena, 0x800, 287
obj_tiles gMonBackPic_Zigzagoon, 0x800, 288
obj_tiles gMonBackPic_Linoone, 0x800, 289
obj_tiles gMonBackPic_Wurmple, 0x800, 290
obj_tiles gMonBackPic_Silcoon, 0x800, 291
obj_tiles gMonBackPic_Beautifly, 0x800, 292
obj_tiles gMonBackPic_Cascoon, 0x800, 293
obj_tiles gMonBackPic_Dustox, 0x800, 294
obj_tiles gMonBackPic_Lotad, 0x800, 295
obj_tiles gMonBackPic_Lombre, 0x800, 296
obj_tiles gMonBackPic_Ludicolo, 0x800, 297
obj_tiles gMonBackPic_Seedot, 0x800, 298
obj_tiles gMonBackPic_Nuzleaf, 0x800, 299
obj_tiles gMonBackPic_Shiftry, 0x800, 300
obj_tiles gMonBackPic_Nincada, 0x800, 301
obj_tiles gMonBackPic_Ninjask, 0x800, 302
obj_tiles gMonBackPic_Shedinja, 0x800, 303
obj_tiles gMonBackPic_Taillow, 0x800, 304
obj_tiles gMonBackPic_Swellow, 0x800, 305
obj_tiles gMonBackPic_Shroomish, 0x800, 306
obj_tiles gMonBackPic_Breloom, 0x800, 307
obj_tiles gMonBackPic_Spinda, 0x800, 308
obj_tiles gMonBackPic_Wingull, 0x800, 309
obj_tiles gMonBackPic_Pelipper, 0x800, 310
obj_tiles gMonBackPic_Surskit, 0x800, 311
obj_tiles gMonBackPic_Masquerain, 0x800, 312
obj_tiles gMonBackPic_Wailmer, 0x800, 313
obj_tiles gMonBackPic_Wailord, 0x800, 314
obj_tiles gMonBackPic_Skitty, 0x800, 315
obj_tiles gMonBackPic_Delcatty, 0x800, 316
obj_tiles gMonBackPic_Kecleon, 0x800, 317
obj_tiles gMonBackPic_Baltoy, 0x800, 318
obj_tiles gMonBackPic_Claydol, 0x800, 319
obj_tiles gMonBackPic_Nosepass, 0x800, 320
obj_tiles gMonBackPic_Torkoal, 0x800, 321
obj_tiles gMonBackPic_Sableye, 0x800, 322
obj_tiles gMonBackPic_Barboach, 0x800, 323
obj_tiles gMonBackPic_Whiscash, 0x800, 324
obj_tiles gMonBackPic_Luvdisc, 0x800, 325
obj_tiles gMonBackPic_Corphish, 0x800, 326
obj_tiles gMonBackPic_Crawdaunt, 0x800, 327
obj_tiles gMonBackPic_Feebas, 0x800, 328
obj_tiles gMonBackPic_Milotic, 0x800, 329
obj_tiles gMonBackPic_Carvanha, 0x800, 330
obj_tiles gMonBackPic_Sharpedo, 0x800, 331
obj_tiles gMonBackPic_Trapinch, 0x800, 332
obj_tiles gMonBackPic_Vibrava, 0x800, 333
obj_tiles gMonBackPic_Flygon, 0x800, 334
obj_tiles gMonBackPic_Makuhita, 0x800, 335
obj_tiles gMonBackPic_Hariyama, 0x800, 336
obj_tiles gMonBackPic_Electrike, 0x800, 337
obj_tiles gMonBackPic_Manectric, 0x800, 338
obj_tiles gMonBackPic_Numel, 0x800, 339
obj_tiles gMonBackPic_Camerupt, 0x800, 340
obj_tiles gMonBackPic_Spheal, 0x800, 341
obj_tiles gMonBackPic_Sealeo, 0x800, 342
obj_tiles gMonBackPic_Walrein, 0x800, 343
obj_tiles gMonBackPic_Cacnea, 0x800, 344
obj_tiles gMonBackPic_Cacturne, 0x800, 345
obj_tiles gMonBackPic_Snorunt, 0x800, 346
obj_tiles gMonBackPic_Glalie, 0x800, 347
obj_tiles gMonBackPic_Lunatone, 0x800, 348
obj_tiles gMonBackPic_Solrock, 0x800, 349
obj_tiles gMonBackPic_Azurill, 0x800, 350
obj_tiles gMonBackPic_Spoink, 0x800, 351
obj_tiles gMonBackPic_Grumpig, 0x800, 352
obj_tiles gMonBackPic_Plusle, 0x800, 353
obj_tiles gMonBackPic_Minun, 0x800, 354
obj_tiles gMonBackPic_Mawile, 0x800, 355
obj_tiles gMonBackPic_Meditite, 0x800, 356
obj_tiles gMonBackPic_Medicham, 0x800, 357
obj_tiles gMonBackPic_Swablu, 0x800, 358
obj_tiles gMonBackPic_Altaria, 0x800, 359
obj_tiles gMonBackPic_Wynaut, 0x800, 360
obj_tiles gMonBackPic_Duskull, 0x800, 361
obj_tiles gMonBackPic_Dusclops, 0x800, 362
obj_tiles gMonBackPic_Roselia, 0x800, 363
obj_tiles gMonBackPic_Slakoth, 0x800, 364
obj_tiles gMonBackPic_Vigoroth, 0x800, 365
obj_tiles gMonBackPic_Slaking, 0x800, 366
obj_tiles gMonBackPic_Gulpin, 0x800, 367
obj_tiles gMonBackPic_Swalot, 0x800, 368
obj_tiles gMonBackPic_Tropius, 0x800, 369
obj_tiles gMonBackPic_Whismur, 0x800, 370
obj_tiles gMonBackPic_Loudred, 0x800, 371
obj_tiles gMonBackPic_Exploud, 0x800, 372
obj_tiles gMonBackPic_Clamperl, 0x800, 373
obj_tiles gMonBackPic_Huntail, 0x800, 374
obj_tiles gMonBackPic_Gorebyss, 0x800, 375
obj_tiles gMonBackPic_Absol, 0x800, 376
obj_tiles gMonBackPic_Shuppet, 0x800, 377
obj_tiles gMonBackPic_Banette, 0x800, 378
obj_tiles gMonBackPic_Seviper, 0x800, 379
obj_tiles gMonBackPic_Zangoose, 0x800, 380
obj_tiles gMonBackPic_Relicanth, 0x800, 381
obj_tiles gMonBackPic_Aron, 0x800, 382
obj_tiles gMonBackPic_Lairon, 0x800, 383
obj_tiles gMonBackPic_Aggron, 0x800, 384
obj_tiles gMonBackPic_Castform, 0x800, 385
obj_tiles gMonBackPic_Volbeat, 0x800, 386
obj_tiles gMonBackPic_Illumise, 0x800, 387
obj_tiles gMonBackPic_Lileep, 0x800, 388
obj_tiles gMonBackPic_Cradily, 0x800, 389
obj_tiles gMonBackPic_Anorith, 0x800, 390
obj_tiles gMonBackPic_Armaldo, 0x800, 391
obj_tiles gMonBackPic_Ralts, 0x800, 392
obj_tiles gMonBackPic_Kirlia, 0x800, 393
obj_tiles gMonBackPic_Gardevoir, 0x800, 394
obj_tiles gMonBackPic_Bagon, 0x800, 395
obj_tiles gMonBackPic_Shelgon, 0x800, 396
obj_tiles gMonBackPic_Salamence, 0x800, 397
obj_tiles gMonBackPic_Beldum, 0x800, 398
obj_tiles gMonBackPic_Metang, 0x800, 399
obj_tiles gMonBackPic_Metagross, 0x800, 400
obj_tiles gMonBackPic_Regirock, 0x800, 401
obj_tiles gMonBackPic_Regice, 0x800, 402
obj_tiles gMonBackPic_Registeel, 0x800, 403
obj_tiles gMonBackPic_Kyogre, 0x800, 404
obj_tiles gMonBackPic_Groudon, 0x800, 405
obj_tiles gMonBackPic_Rayquaza, 0x800, 406
obj_tiles gMonBackPic_Latias, 0x800, 407
obj_tiles gMonBackPic_Latios, 0x800, 408
obj_tiles gMonBackPic_Jirachi, 0x800, 409
obj_tiles gMonBackPic_Deoxys, 0x800, 410
obj_tiles gMonBackPic_Chimecho, 0x800, 411
obj_tiles gMonPic_Egg, 0x800, 412
obj_tiles gMonBackPic_UnownB, 0x800, 413
obj_tiles gMonBackPic_UnownC, 0x800, 414
obj_tiles gMonBackPic_UnownD, 0x800, 415
obj_tiles gMonBackPic_UnownE, 0x800, 416
obj_tiles gMonBackPic_UnownF, 0x800, 417
obj_tiles gMonBackPic_UnownG, 0x800, 418
obj_tiles gMonBackPic_UnownH, 0x800, 419
obj_tiles gMonBackPic_UnownI, 0x800, 420
obj_tiles gMonBackPic_UnownJ, 0x800, 421
obj_tiles gMonBackPic_UnownK, 0x800, 422
obj_tiles gMonBackPic_UnownL, 0x800, 423
obj_tiles gMonBackPic_UnownM, 0x800, 424
obj_tiles gMonBackPic_UnownN, 0x800, 425
obj_tiles gMonBackPic_UnownO, 0x800, 426
obj_tiles gMonBackPic_UnownP, 0x800, 427
obj_tiles gMonBackPic_UnownQ, 0x800, 428
obj_tiles gMonBackPic_UnownR, 0x800, 429
obj_tiles gMonBackPic_UnownS, 0x800, 430
obj_tiles gMonBackPic_UnownT, 0x800, 431
obj_tiles gMonBackPic_UnownU, 0x800, 432
obj_tiles gMonBackPic_UnownV, 0x800, 433
obj_tiles gMonBackPic_UnownW, 0x800, 434
obj_tiles gMonBackPic_UnownX, 0x800, 435
obj_tiles gMonBackPic_UnownY, 0x800, 436
obj_tiles gMonBackPic_UnownZ, 0x800, 437
obj_tiles gMonBackPic_UnownExclamationMark, 0x800, 438
obj_tiles gMonBackPic_UnownQuestionMark, 0x800, 439

View File

@ -0,0 +1,19 @@
.align 2
gMonFrontPic_CircledQuestionMark: ; 8D01524
.incbin "graphics/pokemon/circled_question_mark/front.4bpp.lz"
.align 2
gMonBackPic_CircledQuestionMark: ; 8D0176C
.incbin "graphics/pokemon/circled_question_mark/back.4bpp.lz"
.align 2
gMonPalette_CircledQuestionMark: ; 8D019B4
.incbin "graphics/pokemon/circled_question_mark/normal.gbapal.lz"
.align 2
gMonShinyPalette_CircledQuestionMark: ; 8D019CC
.incbin "graphics/pokemon/circled_question_mark/shiny.gbapal.lz"

View File

@ -0,0 +1,416 @@
.align 2
gMonFootprintTable: ; 83B4EE4
.4byte gMonFootprint_Bulbasaur
.4byte gMonFootprint_Bulbasaur
.4byte gMonFootprint_Ivysaur
.4byte gMonFootprint_Venusaur
.4byte gMonFootprint_Charmander
.4byte gMonFootprint_Charmeleon
.4byte gMonFootprint_Charizard
.4byte gMonFootprint_Squirtle
.4byte gMonFootprint_Wartortle
.4byte gMonFootprint_Blastoise
.4byte gMonFootprint_Caterpie
.4byte gMonFootprint_Metapod
.4byte gMonFootprint_Butterfree
.4byte gMonFootprint_Weedle
.4byte gMonFootprint_Kakuna
.4byte gMonFootprint_Beedrill
.4byte gMonFootprint_Pidgey
.4byte gMonFootprint_Pidgeotto
.4byte gMonFootprint_Pidgeot
.4byte gMonFootprint_Rattata
.4byte gMonFootprint_Raticate
.4byte gMonFootprint_Spearow
.4byte gMonFootprint_Fearow
.4byte gMonFootprint_Ekans
.4byte gMonFootprint_Arbok
.4byte gMonFootprint_Pikachu
.4byte gMonFootprint_Raichu
.4byte gMonFootprint_Sandshrew
.4byte gMonFootprint_Sandslash
.4byte gMonFootprint_NidoranF
.4byte gMonFootprint_Nidorina
.4byte gMonFootprint_Nidoqueen
.4byte gMonFootprint_NidoranM
.4byte gMonFootprint_Nidorino
.4byte gMonFootprint_Nidoking
.4byte gMonFootprint_Clefairy
.4byte gMonFootprint_Clefable
.4byte gMonFootprint_Vulpix
.4byte gMonFootprint_Ninetales
.4byte gMonFootprint_Jigglypuff
.4byte gMonFootprint_Wigglytuff
.4byte gMonFootprint_Zubat
.4byte gMonFootprint_Golbat
.4byte gMonFootprint_Oddish
.4byte gMonFootprint_Gloom
.4byte gMonFootprint_Vileplume
.4byte gMonFootprint_Paras
.4byte gMonFootprint_Parasect
.4byte gMonFootprint_Venonat
.4byte gMonFootprint_Venomoth
.4byte gMonFootprint_Diglett
.4byte gMonFootprint_Dugtrio
.4byte gMonFootprint_Meowth
.4byte gMonFootprint_Persian
.4byte gMonFootprint_Psyduck
.4byte gMonFootprint_Golduck
.4byte gMonFootprint_Mankey
.4byte gMonFootprint_Primeape
.4byte gMonFootprint_Growlithe
.4byte gMonFootprint_Arcanine
.4byte gMonFootprint_Poliwag
.4byte gMonFootprint_Poliwhirl
.4byte gMonFootprint_Poliwrath
.4byte gMonFootprint_Abra
.4byte gMonFootprint_Kadabra
.4byte gMonFootprint_Alakazam
.4byte gMonFootprint_Machop
.4byte gMonFootprint_Machoke
.4byte gMonFootprint_Machamp
.4byte gMonFootprint_Bellsprout
.4byte gMonFootprint_Weepinbell
.4byte gMonFootprint_Victreebel
.4byte gMonFootprint_Tentacool
.4byte gMonFootprint_Tentacruel
.4byte gMonFootprint_Geodude
.4byte gMonFootprint_Graveler
.4byte gMonFootprint_Golem
.4byte gMonFootprint_Ponyta
.4byte gMonFootprint_Rapidash
.4byte gMonFootprint_Slowpoke
.4byte gMonFootprint_Slowbro
.4byte gMonFootprint_Magnemite
.4byte gMonFootprint_Magneton
.4byte gMonFootprint_Farfetchd
.4byte gMonFootprint_Doduo
.4byte gMonFootprint_Dodrio
.4byte gMonFootprint_Seel
.4byte gMonFootprint_Dewgong
.4byte gMonFootprint_Grimer
.4byte gMonFootprint_Muk
.4byte gMonFootprint_Shellder
.4byte gMonFootprint_Cloyster
.4byte gMonFootprint_Gastly
.4byte gMonFootprint_Haunter
.4byte gMonFootprint_Gengar
.4byte gMonFootprint_Onix
.4byte gMonFootprint_Drowzee
.4byte gMonFootprint_Hypno
.4byte gMonFootprint_Krabby
.4byte gMonFootprint_Kingler
.4byte gMonFootprint_Voltorb
.4byte gMonFootprint_Electrode
.4byte gMonFootprint_Exeggcute
.4byte gMonFootprint_Exeggutor
.4byte gMonFootprint_Cubone
.4byte gMonFootprint_Marowak
.4byte gMonFootprint_Hitmonlee
.4byte gMonFootprint_Hitmonchan
.4byte gMonFootprint_Lickitung
.4byte gMonFootprint_Koffing
.4byte gMonFootprint_Weezing
.4byte gMonFootprint_Rhyhorn
.4byte gMonFootprint_Rhydon
.4byte gMonFootprint_Chansey
.4byte gMonFootprint_Tangela
.4byte gMonFootprint_Kangaskhan
.4byte gMonFootprint_Horsea
.4byte gMonFootprint_Seadra
.4byte gMonFootprint_Goldeen
.4byte gMonFootprint_Seaking
.4byte gMonFootprint_Staryu
.4byte gMonFootprint_Starmie
.4byte gMonFootprint_Mrmime
.4byte gMonFootprint_Scyther
.4byte gMonFootprint_Jynx
.4byte gMonFootprint_Electabuzz
.4byte gMonFootprint_Magmar
.4byte gMonFootprint_Pinsir
.4byte gMonFootprint_Tauros
.4byte gMonFootprint_Magikarp
.4byte gMonFootprint_Gyarados
.4byte gMonFootprint_Lapras
.4byte gMonFootprint_Ditto
.4byte gMonFootprint_Eevee
.4byte gMonFootprint_Vaporeon
.4byte gMonFootprint_Jolteon
.4byte gMonFootprint_Flareon
.4byte gMonFootprint_Porygon
.4byte gMonFootprint_Omanyte
.4byte gMonFootprint_Omastar
.4byte gMonFootprint_Kabuto
.4byte gMonFootprint_Kabutops
.4byte gMonFootprint_Aerodactyl
.4byte gMonFootprint_Snorlax
.4byte gMonFootprint_Articuno
.4byte gMonFootprint_Zapdos
.4byte gMonFootprint_Moltres
.4byte gMonFootprint_Dratini
.4byte gMonFootprint_Dragonair
.4byte gMonFootprint_Dragonite
.4byte gMonFootprint_Mewtwo
.4byte gMonFootprint_Mew
.4byte gMonFootprint_Chikorita
.4byte gMonFootprint_Bayleef
.4byte gMonFootprint_Meganium
.4byte gMonFootprint_Cyndaquil
.4byte gMonFootprint_Quilava
.4byte gMonFootprint_Typhlosion
.4byte gMonFootprint_Totodile
.4byte gMonFootprint_Croconaw
.4byte gMonFootprint_Feraligatr
.4byte gMonFootprint_Sentret
.4byte gMonFootprint_Furret
.4byte gMonFootprint_Hoothoot
.4byte gMonFootprint_Noctowl
.4byte gMonFootprint_Ledyba
.4byte gMonFootprint_Ledian
.4byte gMonFootprint_Spinarak
.4byte gMonFootprint_Ariados
.4byte gMonFootprint_Crobat
.4byte gMonFootprint_Chinchou
.4byte gMonFootprint_Lanturn
.4byte gMonFootprint_Pichu
.4byte gMonFootprint_Cleffa
.4byte gMonFootprint_Igglybuff
.4byte gMonFootprint_Togepi
.4byte gMonFootprint_Togetic
.4byte gMonFootprint_Natu
.4byte gMonFootprint_Xatu
.4byte gMonFootprint_Mareep
.4byte gMonFootprint_Flaaffy
.4byte gMonFootprint_Ampharos
.4byte gMonFootprint_Bellossom
.4byte gMonFootprint_Marill
.4byte gMonFootprint_Azumarill
.4byte gMonFootprint_Sudowoodo
.4byte gMonFootprint_Politoed
.4byte gMonFootprint_Hoppip
.4byte gMonFootprint_Skiploom
.4byte gMonFootprint_Jumpluff
.4byte gMonFootprint_Aipom
.4byte gMonFootprint_Sunkern
.4byte gMonFootprint_Sunflora
.4byte gMonFootprint_Yanma
.4byte gMonFootprint_Wooper
.4byte gMonFootprint_Quagsire
.4byte gMonFootprint_Espeon
.4byte gMonFootprint_Umbreon
.4byte gMonFootprint_Murkrow
.4byte gMonFootprint_Slowking
.4byte gMonFootprint_Misdreavus
.4byte gMonFootprint_Unown
.4byte gMonFootprint_Wobbuffet
.4byte gMonFootprint_Girafarig
.4byte gMonFootprint_Pineco
.4byte gMonFootprint_Forretress
.4byte gMonFootprint_Dunsparce
.4byte gMonFootprint_Gligar
.4byte gMonFootprint_Steelix
.4byte gMonFootprint_Snubbull
.4byte gMonFootprint_Granbull
.4byte gMonFootprint_Qwilfish
.4byte gMonFootprint_Scizor
.4byte gMonFootprint_Shuckle
.4byte gMonFootprint_Heracross
.4byte gMonFootprint_Sneasel
.4byte gMonFootprint_Teddiursa
.4byte gMonFootprint_Ursaring
.4byte gMonFootprint_Slugma
.4byte gMonFootprint_Magcargo
.4byte gMonFootprint_Swinub
.4byte gMonFootprint_Piloswine
.4byte gMonFootprint_Corsola
.4byte gMonFootprint_Remoraid
.4byte gMonFootprint_Octillery
.4byte gMonFootprint_Delibird
.4byte gMonFootprint_Mantine
.4byte gMonFootprint_Skarmory
.4byte gMonFootprint_Houndour
.4byte gMonFootprint_Houndoom
.4byte gMonFootprint_Kingdra
.4byte gMonFootprint_Phanpy
.4byte gMonFootprint_Donphan
.4byte gMonFootprint_Porygon2
.4byte gMonFootprint_Stantler
.4byte gMonFootprint_Smeargle
.4byte gMonFootprint_Tyrogue
.4byte gMonFootprint_Hitmontop
.4byte gMonFootprint_Smoochum
.4byte gMonFootprint_Elekid
.4byte gMonFootprint_Magby
.4byte gMonFootprint_Miltank
.4byte gMonFootprint_Blissey
.4byte gMonFootprint_Raikou
.4byte gMonFootprint_Entei
.4byte gMonFootprint_Suicune
.4byte gMonFootprint_Larvitar
.4byte gMonFootprint_Pupitar
.4byte gMonFootprint_Tyranitar
.4byte gMonFootprint_Lugia
.4byte gMonFootprint_HoOh
.4byte gMonFootprint_Celebi
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_QuestionMark
.4byte gMonFootprint_Treecko
.4byte gMonFootprint_Grovyle
.4byte gMonFootprint_Sceptile
.4byte gMonFootprint_Torchic
.4byte gMonFootprint_Combusken
.4byte gMonFootprint_Blaziken
.4byte gMonFootprint_Mudkip
.4byte gMonFootprint_Marshtomp
.4byte gMonFootprint_Swampert
.4byte gMonFootprint_Poochyena
.4byte gMonFootprint_Mightyena
.4byte gMonFootprint_Zigzagoon
.4byte gMonFootprint_Linoone
.4byte gMonFootprint_Wurmple
.4byte gMonFootprint_Silcoon
.4byte gMonFootprint_Beautifly
.4byte gMonFootprint_Cascoon
.4byte gMonFootprint_Dustox
.4byte gMonFootprint_Lotad
.4byte gMonFootprint_Lombre
.4byte gMonFootprint_Ludicolo
.4byte gMonFootprint_Seedot
.4byte gMonFootprint_Nuzleaf
.4byte gMonFootprint_Shiftry
.4byte gMonFootprint_Nincada
.4byte gMonFootprint_Ninjask
.4byte gMonFootprint_Shedinja
.4byte gMonFootprint_Taillow
.4byte gMonFootprint_Swellow
.4byte gMonFootprint_Shroomish
.4byte gMonFootprint_Breloom
.4byte gMonFootprint_Spinda
.4byte gMonFootprint_Wingull
.4byte gMonFootprint_Pelipper
.4byte gMonFootprint_Surskit
.4byte gMonFootprint_Masquerain
.4byte gMonFootprint_Wailmer
.4byte gMonFootprint_Wailord
.4byte gMonFootprint_Skitty
.4byte gMonFootprint_Delcatty
.4byte gMonFootprint_Kecleon
.4byte gMonFootprint_Baltoy
.4byte gMonFootprint_Claydol
.4byte gMonFootprint_Nosepass
.4byte gMonFootprint_Torkoal
.4byte gMonFootprint_Sableye
.4byte gMonFootprint_Barboach
.4byte gMonFootprint_Whiscash
.4byte gMonFootprint_Luvdisc
.4byte gMonFootprint_Corphish
.4byte gMonFootprint_Crawdaunt
.4byte gMonFootprint_Feebas
.4byte gMonFootprint_Milotic
.4byte gMonFootprint_Carvanha
.4byte gMonFootprint_Sharpedo
.4byte gMonFootprint_Trapinch
.4byte gMonFootprint_Vibrava
.4byte gMonFootprint_Flygon
.4byte gMonFootprint_Makuhita
.4byte gMonFootprint_Hariyama
.4byte gMonFootprint_Electrike
.4byte gMonFootprint_Manectric
.4byte gMonFootprint_Numel
.4byte gMonFootprint_Camerupt
.4byte gMonFootprint_Spheal
.4byte gMonFootprint_Sealeo
.4byte gMonFootprint_Walrein
.4byte gMonFootprint_Cacnea
.4byte gMonFootprint_Cacturne
.4byte gMonFootprint_Snorunt
.4byte gMonFootprint_Glalie
.4byte gMonFootprint_Lunatone
.4byte gMonFootprint_Solrock
.4byte gMonFootprint_Azurill
.4byte gMonFootprint_Spoink
.4byte gMonFootprint_Grumpig
.4byte gMonFootprint_Plusle
.4byte gMonFootprint_Minun
.4byte gMonFootprint_Mawile
.4byte gMonFootprint_Meditite
.4byte gMonFootprint_Medicham
.4byte gMonFootprint_Swablu
.4byte gMonFootprint_Altaria
.4byte gMonFootprint_Wynaut
.4byte gMonFootprint_Duskull
.4byte gMonFootprint_Dusclops
.4byte gMonFootprint_Roselia
.4byte gMonFootprint_Slakoth
.4byte gMonFootprint_Vigoroth
.4byte gMonFootprint_Slaking
.4byte gMonFootprint_Gulpin
.4byte gMonFootprint_Swalot
.4byte gMonFootprint_Tropius
.4byte gMonFootprint_Whismur
.4byte gMonFootprint_Loudred
.4byte gMonFootprint_Exploud
.4byte gMonFootprint_Clamperl
.4byte gMonFootprint_Huntail
.4byte gMonFootprint_Gorebyss
.4byte gMonFootprint_Absol
.4byte gMonFootprint_Shuppet
.4byte gMonFootprint_Banette
.4byte gMonFootprint_Seviper
.4byte gMonFootprint_Zangoose
.4byte gMonFootprint_Relicanth
.4byte gMonFootprint_Aron
.4byte gMonFootprint_Lairon
.4byte gMonFootprint_Aggron
.4byte gMonFootprint_Castform
.4byte gMonFootprint_Volbeat
.4byte gMonFootprint_Illumise
.4byte gMonFootprint_Lileep
.4byte gMonFootprint_Cradily
.4byte gMonFootprint_Anorith
.4byte gMonFootprint_Armaldo
.4byte gMonFootprint_Ralts
.4byte gMonFootprint_Kirlia
.4byte gMonFootprint_Gardevoir
.4byte gMonFootprint_Bagon
.4byte gMonFootprint_Shelgon
.4byte gMonFootprint_Salamence
.4byte gMonFootprint_Beldum
.4byte gMonFootprint_Metang
.4byte gMonFootprint_Metagross
.4byte gMonFootprint_Regirock
.4byte gMonFootprint_Regice
.4byte gMonFootprint_Registeel
.4byte gMonFootprint_Kyogre
.4byte gMonFootprint_Groudon
.4byte gMonFootprint_Rayquaza
.4byte gMonFootprint_Latias
.4byte gMonFootprint_Latios
.4byte gMonFootprint_Jirachi
.4byte gMonFootprint_Deoxys
.4byte gMonFootprint_Chimecho
.4byte gMonFootprint_Bulbasaur

View File

@ -0,0 +1,443 @@
.align 2
gMonFrontPicTable: ; 81E8354
obj_tiles gMonFrontPic_CircledQuestionMark, 0x800, 0
obj_tiles gMonFrontPic_Bulbasaur, 0x800, 1
obj_tiles gMonFrontPic_Ivysaur, 0x800, 2
obj_tiles gMonFrontPic_Venusaur, 0x800, 3
obj_tiles gMonFrontPic_Charmander, 0x800, 4
obj_tiles gMonFrontPic_Charmeleon, 0x800, 5
obj_tiles gMonFrontPic_Charizard, 0x800, 6
obj_tiles gMonFrontPic_Squirtle, 0x800, 7
obj_tiles gMonFrontPic_Wartortle, 0x800, 8
obj_tiles gMonFrontPic_Blastoise, 0x800, 9
obj_tiles gMonFrontPic_Caterpie, 0x800, 10
obj_tiles gMonFrontPic_Metapod, 0x800, 11
obj_tiles gMonFrontPic_Butterfree, 0x800, 12
obj_tiles gMonFrontPic_Weedle, 0x800, 13
obj_tiles gMonFrontPic_Kakuna, 0x800, 14
obj_tiles gMonFrontPic_Beedrill, 0x800, 15
obj_tiles gMonFrontPic_Pidgey, 0x800, 16
obj_tiles gMonFrontPic_Pidgeotto, 0x800, 17
obj_tiles gMonFrontPic_Pidgeot, 0x800, 18
obj_tiles gMonFrontPic_Rattata, 0x800, 19
obj_tiles gMonFrontPic_Raticate, 0x800, 20
obj_tiles gMonFrontPic_Spearow, 0x800, 21
obj_tiles gMonFrontPic_Fearow, 0x800, 22
obj_tiles gMonFrontPic_Ekans, 0x800, 23
obj_tiles gMonFrontPic_Arbok, 0x800, 24
obj_tiles gMonFrontPic_Pikachu, 0x800, 25
obj_tiles gMonFrontPic_Raichu, 0x800, 26
obj_tiles gMonFrontPic_Sandshrew, 0x800, 27
obj_tiles gMonFrontPic_Sandslash, 0x800, 28
obj_tiles gMonFrontPic_NidoranF, 0x800, 29
obj_tiles gMonFrontPic_Nidorina, 0x800, 30
obj_tiles gMonFrontPic_Nidoqueen, 0x800, 31
obj_tiles gMonFrontPic_NidoranM, 0x800, 32
obj_tiles gMonFrontPic_Nidorino, 0x800, 33
obj_tiles gMonFrontPic_Nidoking, 0x800, 34
obj_tiles gMonFrontPic_Clefairy, 0x800, 35
obj_tiles gMonFrontPic_Clefable, 0x800, 36
obj_tiles gMonFrontPic_Vulpix, 0x800, 37
obj_tiles gMonFrontPic_Ninetales, 0x800, 38
obj_tiles gMonFrontPic_Jigglypuff, 0x800, 39
obj_tiles gMonFrontPic_Wigglytuff, 0x800, 40
obj_tiles gMonFrontPic_Zubat, 0x800, 41
obj_tiles gMonFrontPic_Golbat, 0x800, 42
obj_tiles gMonFrontPic_Oddish, 0x800, 43
obj_tiles gMonFrontPic_Gloom, 0x800, 44
obj_tiles gMonFrontPic_Vileplume, 0x800, 45
obj_tiles gMonFrontPic_Paras, 0x800, 46
obj_tiles gMonFrontPic_Parasect, 0x800, 47
obj_tiles gMonFrontPic_Venonat, 0x800, 48
obj_tiles gMonFrontPic_Venomoth, 0x800, 49
obj_tiles gMonFrontPic_Diglett, 0x800, 50
obj_tiles gMonFrontPic_Dugtrio, 0x800, 51
obj_tiles gMonFrontPic_Meowth, 0x800, 52
obj_tiles gMonFrontPic_Persian, 0x800, 53
obj_tiles gMonFrontPic_Psyduck, 0x800, 54
obj_tiles gMonFrontPic_Golduck, 0x800, 55
obj_tiles gMonFrontPic_Mankey, 0x800, 56
obj_tiles gMonFrontPic_Primeape, 0x800, 57
obj_tiles gMonFrontPic_Growlithe, 0x800, 58
obj_tiles gMonFrontPic_Arcanine, 0x800, 59
obj_tiles gMonFrontPic_Poliwag, 0x800, 60
obj_tiles gMonFrontPic_Poliwhirl, 0x800, 61
obj_tiles gMonFrontPic_Poliwrath, 0x800, 62
obj_tiles gMonFrontPic_Abra, 0x800, 63
obj_tiles gMonFrontPic_Kadabra, 0x800, 64
obj_tiles gMonFrontPic_Alakazam, 0x800, 65
obj_tiles gMonFrontPic_Machop, 0x800, 66
obj_tiles gMonFrontPic_Machoke, 0x800, 67
obj_tiles gMonFrontPic_Machamp, 0x800, 68
obj_tiles gMonFrontPic_Bellsprout, 0x800, 69
obj_tiles gMonFrontPic_Weepinbell, 0x800, 70
obj_tiles gMonFrontPic_Victreebel, 0x800, 71
obj_tiles gMonFrontPic_Tentacool, 0x800, 72
obj_tiles gMonFrontPic_Tentacruel, 0x800, 73
obj_tiles gMonFrontPic_Geodude, 0x800, 74
obj_tiles gMonFrontPic_Graveler, 0x800, 75
obj_tiles gMonFrontPic_Golem, 0x800, 76
obj_tiles gMonFrontPic_Ponyta, 0x800, 77
obj_tiles gMonFrontPic_Rapidash, 0x800, 78
obj_tiles gMonFrontPic_Slowpoke, 0x800, 79
obj_tiles gMonFrontPic_Slowbro, 0x800, 80
obj_tiles gMonFrontPic_Magnemite, 0x800, 81
obj_tiles gMonFrontPic_Magneton, 0x800, 82
obj_tiles gMonFrontPic_Farfetchd, 0x800, 83
obj_tiles gMonFrontPic_Doduo, 0x800, 84
obj_tiles gMonFrontPic_Dodrio, 0x800, 85
obj_tiles gMonFrontPic_Seel, 0x800, 86
obj_tiles gMonFrontPic_Dewgong, 0x800, 87
obj_tiles gMonFrontPic_Grimer, 0x800, 88
obj_tiles gMonFrontPic_Muk, 0x800, 89
obj_tiles gMonFrontPic_Shellder, 0x800, 90
obj_tiles gMonFrontPic_Cloyster, 0x800, 91
obj_tiles gMonFrontPic_Gastly, 0x800, 92
obj_tiles gMonFrontPic_Haunter, 0x800, 93
obj_tiles gMonFrontPic_Gengar, 0x800, 94
obj_tiles gMonFrontPic_Onix, 0x800, 95
obj_tiles gMonFrontPic_Drowzee, 0x800, 96
obj_tiles gMonFrontPic_Hypno, 0x800, 97
obj_tiles gMonFrontPic_Krabby, 0x800, 98
obj_tiles gMonFrontPic_Kingler, 0x800, 99
obj_tiles gMonFrontPic_Voltorb, 0x800, 100
obj_tiles gMonFrontPic_Electrode, 0x800, 101
obj_tiles gMonFrontPic_Exeggcute, 0x800, 102
obj_tiles gMonFrontPic_Exeggutor, 0x800, 103
obj_tiles gMonFrontPic_Cubone, 0x800, 104
obj_tiles gMonFrontPic_Marowak, 0x800, 105
obj_tiles gMonFrontPic_Hitmonlee, 0x800, 106
obj_tiles gMonFrontPic_Hitmonchan, 0x800, 107
obj_tiles gMonFrontPic_Lickitung, 0x800, 108
obj_tiles gMonFrontPic_Koffing, 0x800, 109
obj_tiles gMonFrontPic_Weezing, 0x800, 110
obj_tiles gMonFrontPic_Rhyhorn, 0x800, 111
obj_tiles gMonFrontPic_Rhydon, 0x800, 112
obj_tiles gMonFrontPic_Chansey, 0x800, 113
obj_tiles gMonFrontPic_Tangela, 0x800, 114
obj_tiles gMonFrontPic_Kangaskhan, 0x800, 115
obj_tiles gMonFrontPic_Horsea, 0x800, 116
obj_tiles gMonFrontPic_Seadra, 0x800, 117
obj_tiles gMonFrontPic_Goldeen, 0x800, 118
obj_tiles gMonFrontPic_Seaking, 0x800, 119
obj_tiles gMonFrontPic_Staryu, 0x800, 120
obj_tiles gMonFrontPic_Starmie, 0x800, 121
obj_tiles gMonFrontPic_Mrmime, 0x800, 122
obj_tiles gMonFrontPic_Scyther, 0x800, 123
obj_tiles gMonFrontPic_Jynx, 0x800, 124
obj_tiles gMonFrontPic_Electabuzz, 0x800, 125
obj_tiles gMonFrontPic_Magmar, 0x800, 126
obj_tiles gMonFrontPic_Pinsir, 0x800, 127
obj_tiles gMonFrontPic_Tauros, 0x800, 128
obj_tiles gMonFrontPic_Magikarp, 0x800, 129
obj_tiles gMonFrontPic_Gyarados, 0x800, 130
obj_tiles gMonFrontPic_Lapras, 0x800, 131
obj_tiles gMonFrontPic_Ditto, 0x800, 132
obj_tiles gMonFrontPic_Eevee, 0x800, 133
obj_tiles gMonFrontPic_Vaporeon, 0x800, 134
obj_tiles gMonFrontPic_Jolteon, 0x800, 135
obj_tiles gMonFrontPic_Flareon, 0x800, 136
obj_tiles gMonFrontPic_Porygon, 0x800, 137
obj_tiles gMonFrontPic_Omanyte, 0x800, 138
obj_tiles gMonFrontPic_Omastar, 0x800, 139
obj_tiles gMonFrontPic_Kabuto, 0x800, 140
obj_tiles gMonFrontPic_Kabutops, 0x800, 141
obj_tiles gMonFrontPic_Aerodactyl, 0x800, 142
obj_tiles gMonFrontPic_Snorlax, 0x800, 143
obj_tiles gMonFrontPic_Articuno, 0x800, 144
obj_tiles gMonFrontPic_Zapdos, 0x800, 145
obj_tiles gMonFrontPic_Moltres, 0x800, 146
obj_tiles gMonFrontPic_Dratini, 0x800, 147
obj_tiles gMonFrontPic_Dragonair, 0x800, 148
obj_tiles gMonFrontPic_Dragonite, 0x800, 149
obj_tiles gMonFrontPic_Mewtwo, 0x800, 150
obj_tiles gMonFrontPic_Mew, 0x800, 151
obj_tiles gMonFrontPic_Chikorita, 0x800, 152
obj_tiles gMonFrontPic_Bayleef, 0x800, 153
obj_tiles gMonFrontPic_Meganium, 0x800, 154
obj_tiles gMonFrontPic_Cyndaquil, 0x800, 155
obj_tiles gMonFrontPic_Quilava, 0x800, 156
obj_tiles gMonFrontPic_Typhlosion, 0x800, 157
obj_tiles gMonFrontPic_Totodile, 0x800, 158
obj_tiles gMonFrontPic_Croconaw, 0x800, 159
obj_tiles gMonFrontPic_Feraligatr, 0x800, 160
obj_tiles gMonFrontPic_Sentret, 0x800, 161
obj_tiles gMonFrontPic_Furret, 0x800, 162
obj_tiles gMonFrontPic_Hoothoot, 0x800, 163
obj_tiles gMonFrontPic_Noctowl, 0x800, 164
obj_tiles gMonFrontPic_Ledyba, 0x800, 165
obj_tiles gMonFrontPic_Ledian, 0x800, 166
obj_tiles gMonFrontPic_Spinarak, 0x800, 167
obj_tiles gMonFrontPic_Ariados, 0x800, 168
obj_tiles gMonFrontPic_Crobat, 0x800, 169
obj_tiles gMonFrontPic_Chinchou, 0x800, 170
obj_tiles gMonFrontPic_Lanturn, 0x800, 171
obj_tiles gMonFrontPic_Pichu, 0x800, 172
obj_tiles gMonFrontPic_Cleffa, 0x800, 173
obj_tiles gMonFrontPic_Igglybuff, 0x800, 174
obj_tiles gMonFrontPic_Togepi, 0x800, 175
obj_tiles gMonFrontPic_Togetic, 0x800, 176
obj_tiles gMonFrontPic_Natu, 0x800, 177
obj_tiles gMonFrontPic_Xatu, 0x800, 178
obj_tiles gMonFrontPic_Mareep, 0x800, 179
obj_tiles gMonFrontPic_Flaaffy, 0x800, 180
obj_tiles gMonFrontPic_Ampharos, 0x800, 181
obj_tiles gMonFrontPic_Bellossom, 0x800, 182
obj_tiles gMonFrontPic_Marill, 0x800, 183
obj_tiles gMonFrontPic_Azumarill, 0x800, 184
obj_tiles gMonFrontPic_Sudowoodo, 0x800, 185
obj_tiles gMonFrontPic_Politoed, 0x800, 186
obj_tiles gMonFrontPic_Hoppip, 0x800, 187
obj_tiles gMonFrontPic_Skiploom, 0x800, 188
obj_tiles gMonFrontPic_Jumpluff, 0x800, 189
obj_tiles gMonFrontPic_Aipom, 0x800, 190
obj_tiles gMonFrontPic_Sunkern, 0x800, 191
obj_tiles gMonFrontPic_Sunflora, 0x800, 192
obj_tiles gMonFrontPic_Yanma, 0x800, 193
obj_tiles gMonFrontPic_Wooper, 0x800, 194
obj_tiles gMonFrontPic_Quagsire, 0x800, 195
obj_tiles gMonFrontPic_Espeon, 0x800, 196
obj_tiles gMonFrontPic_Umbreon, 0x800, 197
obj_tiles gMonFrontPic_Murkrow, 0x800, 198
obj_tiles gMonFrontPic_Slowking, 0x800, 199
obj_tiles gMonFrontPic_Misdreavus, 0x800, 200
obj_tiles gMonFrontPic_UnownA, 0x800, 201
obj_tiles gMonFrontPic_Wobbuffet, 0x800, 202
obj_tiles gMonFrontPic_Girafarig, 0x800, 203
obj_tiles gMonFrontPic_Pineco, 0x800, 204
obj_tiles gMonFrontPic_Forretress, 0x800, 205
obj_tiles gMonFrontPic_Dunsparce, 0x800, 206
obj_tiles gMonFrontPic_Gligar, 0x800, 207
obj_tiles gMonFrontPic_Steelix, 0x800, 208
obj_tiles gMonFrontPic_Snubbull, 0x800, 209
obj_tiles gMonFrontPic_Granbull, 0x800, 210
obj_tiles gMonFrontPic_Qwilfish, 0x800, 211
obj_tiles gMonFrontPic_Scizor, 0x800, 212
obj_tiles gMonFrontPic_Shuckle, 0x800, 213
obj_tiles gMonFrontPic_Heracross, 0x800, 214
obj_tiles gMonFrontPic_Sneasel, 0x800, 215
obj_tiles gMonFrontPic_Teddiursa, 0x800, 216
obj_tiles gMonFrontPic_Ursaring, 0x800, 217
obj_tiles gMonFrontPic_Slugma, 0x800, 218
obj_tiles gMonFrontPic_Magcargo, 0x800, 219
obj_tiles gMonFrontPic_Swinub, 0x800, 220
obj_tiles gMonFrontPic_Piloswine, 0x800, 221
obj_tiles gMonFrontPic_Corsola, 0x800, 222
obj_tiles gMonFrontPic_Remoraid, 0x800, 223
obj_tiles gMonFrontPic_Octillery, 0x800, 224
obj_tiles gMonFrontPic_Delibird, 0x800, 225
obj_tiles gMonFrontPic_Mantine, 0x800, 226
obj_tiles gMonFrontPic_Skarmory, 0x800, 227
obj_tiles gMonFrontPic_Houndour, 0x800, 228
obj_tiles gMonFrontPic_Houndoom, 0x800, 229
obj_tiles gMonFrontPic_Kingdra, 0x800, 230
obj_tiles gMonFrontPic_Phanpy, 0x800, 231
obj_tiles gMonFrontPic_Donphan, 0x800, 232
obj_tiles gMonFrontPic_Porygon2, 0x800, 233
obj_tiles gMonFrontPic_Stantler, 0x800, 234
obj_tiles gMonFrontPic_Smeargle, 0x800, 235
obj_tiles gMonFrontPic_Tyrogue, 0x800, 236
obj_tiles gMonFrontPic_Hitmontop, 0x800, 237
obj_tiles gMonFrontPic_Smoochum, 0x800, 238
obj_tiles gMonFrontPic_Elekid, 0x800, 239
obj_tiles gMonFrontPic_Magby, 0x800, 240
obj_tiles gMonFrontPic_Miltank, 0x800, 241
obj_tiles gMonFrontPic_Blissey, 0x800, 242
obj_tiles gMonFrontPic_Raikou, 0x800, 243
obj_tiles gMonFrontPic_Entei, 0x800, 244
obj_tiles gMonFrontPic_Suicune, 0x800, 245
obj_tiles gMonFrontPic_Larvitar, 0x800, 246
obj_tiles gMonFrontPic_Pupitar, 0x800, 247
obj_tiles gMonFrontPic_Tyranitar, 0x800, 248
obj_tiles gMonFrontPic_Lugia, 0x800, 249
obj_tiles gMonFrontPic_HoOh, 0x800, 250
obj_tiles gMonFrontPic_Celebi, 0x800, 251
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 252
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 253
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 254
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 255
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 256
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 257
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 258
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 259
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 260
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 261
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 262
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 263
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 264
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 265
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 266
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 267
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 268
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 269
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 270
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 271
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 272
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 273
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 274
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 275
obj_tiles gMonFrontPic_DoubleQuestionMark, 0x800, 276
obj_tiles gMonFrontPic_Treecko, 0x800, 277
obj_tiles gMonFrontPic_Grovyle, 0x800, 278
obj_tiles gMonFrontPic_Sceptile, 0x800, 279
obj_tiles gMonFrontPic_Torchic, 0x800, 280
obj_tiles gMonFrontPic_Combusken, 0x800, 281
obj_tiles gMonFrontPic_Blaziken, 0x800, 282
obj_tiles gMonFrontPic_Mudkip, 0x800, 283
obj_tiles gMonFrontPic_Marshtomp, 0x800, 284
obj_tiles gMonFrontPic_Swampert, 0x800, 285
obj_tiles gMonFrontPic_Poochyena, 0x800, 286
obj_tiles gMonFrontPic_Mightyena, 0x800, 287
obj_tiles gMonFrontPic_Zigzagoon, 0x800, 288
obj_tiles gMonFrontPic_Linoone, 0x800, 289
obj_tiles gMonFrontPic_Wurmple, 0x800, 290
obj_tiles gMonFrontPic_Silcoon, 0x800, 291
obj_tiles gMonFrontPic_Beautifly, 0x800, 292
obj_tiles gMonFrontPic_Cascoon, 0x800, 293
obj_tiles gMonFrontPic_Dustox, 0x800, 294
obj_tiles gMonFrontPic_Lotad, 0x800, 295
obj_tiles gMonFrontPic_Lombre, 0x800, 296
obj_tiles gMonFrontPic_Ludicolo, 0x800, 297
obj_tiles gMonFrontPic_Seedot, 0x800, 298
obj_tiles gMonFrontPic_Nuzleaf, 0x800, 299
obj_tiles gMonFrontPic_Shiftry, 0x800, 300
obj_tiles gMonFrontPic_Nincada, 0x800, 301
obj_tiles gMonFrontPic_Ninjask, 0x800, 302
obj_tiles gMonFrontPic_Shedinja, 0x800, 303
obj_tiles gMonFrontPic_Taillow, 0x800, 304
obj_tiles gMonFrontPic_Swellow, 0x800, 305
obj_tiles gMonFrontPic_Shroomish, 0x800, 306
obj_tiles gMonFrontPic_Breloom, 0x800, 307
obj_tiles gMonFrontPic_Spinda, 0x800, 308
obj_tiles gMonFrontPic_Wingull, 0x800, 309
obj_tiles gMonFrontPic_Pelipper, 0x800, 310
obj_tiles gMonFrontPic_Surskit, 0x800, 311
obj_tiles gMonFrontPic_Masquerain, 0x800, 312
obj_tiles gMonFrontPic_Wailmer, 0x800, 313
obj_tiles gMonFrontPic_Wailord, 0x800, 314
obj_tiles gMonFrontPic_Skitty, 0x800, 315
obj_tiles gMonFrontPic_Delcatty, 0x800, 316
obj_tiles gMonFrontPic_Kecleon, 0x800, 317
obj_tiles gMonFrontPic_Baltoy, 0x800, 318
obj_tiles gMonFrontPic_Claydol, 0x800, 319
obj_tiles gMonFrontPic_Nosepass, 0x800, 320
obj_tiles gMonFrontPic_Torkoal, 0x800, 321
obj_tiles gMonFrontPic_Sableye, 0x800, 322
obj_tiles gMonFrontPic_Barboach, 0x800, 323
obj_tiles gMonFrontPic_Whiscash, 0x800, 324
obj_tiles gMonFrontPic_Luvdisc, 0x800, 325
obj_tiles gMonFrontPic_Corphish, 0x800, 326
obj_tiles gMonFrontPic_Crawdaunt, 0x800, 327
obj_tiles gMonFrontPic_Feebas, 0x800, 328
obj_tiles gMonFrontPic_Milotic, 0x800, 329
obj_tiles gMonFrontPic_Carvanha, 0x800, 330
obj_tiles gMonFrontPic_Sharpedo, 0x800, 331
obj_tiles gMonFrontPic_Trapinch, 0x800, 332
obj_tiles gMonFrontPic_Vibrava, 0x800, 333
obj_tiles gMonFrontPic_Flygon, 0x800, 334
obj_tiles gMonFrontPic_Makuhita, 0x800, 335
obj_tiles gMonFrontPic_Hariyama, 0x800, 336
obj_tiles gMonFrontPic_Electrike, 0x800, 337
obj_tiles gMonFrontPic_Manectric, 0x800, 338
obj_tiles gMonFrontPic_Numel, 0x800, 339
obj_tiles gMonFrontPic_Camerupt, 0x800, 340
obj_tiles gMonFrontPic_Spheal, 0x800, 341
obj_tiles gMonFrontPic_Sealeo, 0x800, 342
obj_tiles gMonFrontPic_Walrein, 0x800, 343
obj_tiles gMonFrontPic_Cacnea, 0x800, 344
obj_tiles gMonFrontPic_Cacturne, 0x800, 345
obj_tiles gMonFrontPic_Snorunt, 0x800, 346
obj_tiles gMonFrontPic_Glalie, 0x800, 347
obj_tiles gMonFrontPic_Lunatone, 0x800, 348
obj_tiles gMonFrontPic_Solrock, 0x800, 349
obj_tiles gMonFrontPic_Azurill, 0x800, 350
obj_tiles gMonFrontPic_Spoink, 0x800, 351
obj_tiles gMonFrontPic_Grumpig, 0x800, 352
obj_tiles gMonFrontPic_Plusle, 0x800, 353
obj_tiles gMonFrontPic_Minun, 0x800, 354
obj_tiles gMonFrontPic_Mawile, 0x800, 355
obj_tiles gMonFrontPic_Meditite, 0x800, 356
obj_tiles gMonFrontPic_Medicham, 0x800, 357
obj_tiles gMonFrontPic_Swablu, 0x800, 358
obj_tiles gMonFrontPic_Altaria, 0x800, 359
obj_tiles gMonFrontPic_Wynaut, 0x800, 360
obj_tiles gMonFrontPic_Duskull, 0x800, 361
obj_tiles gMonFrontPic_Dusclops, 0x800, 362
obj_tiles gMonFrontPic_Roselia, 0x800, 363
obj_tiles gMonFrontPic_Slakoth, 0x800, 364
obj_tiles gMonFrontPic_Vigoroth, 0x800, 365
obj_tiles gMonFrontPic_Slaking, 0x800, 366
obj_tiles gMonFrontPic_Gulpin, 0x800, 367
obj_tiles gMonFrontPic_Swalot, 0x800, 368
obj_tiles gMonFrontPic_Tropius, 0x800, 369
obj_tiles gMonFrontPic_Whismur, 0x800, 370
obj_tiles gMonFrontPic_Loudred, 0x800, 371
obj_tiles gMonFrontPic_Exploud, 0x800, 372
obj_tiles gMonFrontPic_Clamperl, 0x800, 373
obj_tiles gMonFrontPic_Huntail, 0x800, 374
obj_tiles gMonFrontPic_Gorebyss, 0x800, 375
obj_tiles gMonFrontPic_Absol, 0x800, 376
obj_tiles gMonFrontPic_Shuppet, 0x800, 377
obj_tiles gMonFrontPic_Banette, 0x800, 378
obj_tiles gMonFrontPic_Seviper, 0x800, 379
obj_tiles gMonFrontPic_Zangoose, 0x800, 380
obj_tiles gMonFrontPic_Relicanth, 0x800, 381
obj_tiles gMonFrontPic_Aron, 0x800, 382
obj_tiles gMonFrontPic_Lairon, 0x800, 383
obj_tiles gMonFrontPic_Aggron, 0x800, 384
obj_tiles gMonFrontPic_Castform, 0x800, 385
obj_tiles gMonFrontPic_Volbeat, 0x800, 386
obj_tiles gMonFrontPic_Illumise, 0x800, 387
obj_tiles gMonFrontPic_Lileep, 0x800, 388
obj_tiles gMonFrontPic_Cradily, 0x800, 389
obj_tiles gMonFrontPic_Anorith, 0x800, 390
obj_tiles gMonFrontPic_Armaldo, 0x800, 391
obj_tiles gMonFrontPic_Ralts, 0x800, 392
obj_tiles gMonFrontPic_Kirlia, 0x800, 393
obj_tiles gMonFrontPic_Gardevoir, 0x800, 394
obj_tiles gMonFrontPic_Bagon, 0x800, 395
obj_tiles gMonFrontPic_Shelgon, 0x800, 396
obj_tiles gMonFrontPic_Salamence, 0x800, 397
obj_tiles gMonFrontPic_Beldum, 0x800, 398
obj_tiles gMonFrontPic_Metang, 0x800, 399
obj_tiles gMonFrontPic_Metagross, 0x800, 400
obj_tiles gMonFrontPic_Regirock, 0x800, 401
obj_tiles gMonFrontPic_Regice, 0x800, 402
obj_tiles gMonFrontPic_Registeel, 0x800, 403
obj_tiles gMonFrontPic_Kyogre, 0x800, 404
obj_tiles gMonFrontPic_Groudon, 0x800, 405
obj_tiles gMonFrontPic_Rayquaza, 0x800, 406
obj_tiles gMonFrontPic_Latias, 0x800, 407
obj_tiles gMonFrontPic_Latios, 0x800, 408
obj_tiles gMonFrontPic_Jirachi, 0x800, 409
obj_tiles gMonFrontPic_Deoxys, 0x800, 410
obj_tiles gMonFrontPic_Chimecho, 0x800, 411
obj_tiles gMonPic_Egg, 0x800, 412
obj_tiles gMonFrontPic_UnownB, 0x800, 413
obj_tiles gMonFrontPic_UnownC, 0x800, 414
obj_tiles gMonFrontPic_UnownD, 0x800, 415
obj_tiles gMonFrontPic_UnownE, 0x800, 416
obj_tiles gMonFrontPic_UnownF, 0x800, 417
obj_tiles gMonFrontPic_UnownG, 0x800, 418
obj_tiles gMonFrontPic_UnownH, 0x800, 419
obj_tiles gMonFrontPic_UnownI, 0x800, 420
obj_tiles gMonFrontPic_UnownJ, 0x800, 421
obj_tiles gMonFrontPic_UnownK, 0x800, 422
obj_tiles gMonFrontPic_UnownL, 0x800, 423
obj_tiles gMonFrontPic_UnownM, 0x800, 424
obj_tiles gMonFrontPic_UnownN, 0x800, 425
obj_tiles gMonFrontPic_UnownO, 0x800, 426
obj_tiles gMonFrontPic_UnownP, 0x800, 427
obj_tiles gMonFrontPic_UnownQ, 0x800, 428
obj_tiles gMonFrontPic_UnownR, 0x800, 429
obj_tiles gMonFrontPic_UnownS, 0x800, 430
obj_tiles gMonFrontPic_UnownT, 0x800, 431
obj_tiles gMonFrontPic_UnownU, 0x800, 432
obj_tiles gMonFrontPic_UnownV, 0x800, 433
obj_tiles gMonFrontPic_UnownW, 0x800, 434
obj_tiles gMonFrontPic_UnownX, 0x800, 435
obj_tiles gMonFrontPic_UnownY, 0x800, 436
obj_tiles gMonFrontPic_UnownZ, 0x800, 437
obj_tiles gMonFrontPic_UnownExclamationMark, 0x800, 438
obj_tiles gMonFrontPic_UnownQuestionMark, 0x800, 439

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,443 @@
.align 2
gMonIconPaletteIndices: ; 83BC400
.byte 0 ; ??????????
.byte 1 ; Bulbasaur
.byte 1 ; Ivysaur
.byte 1 ; Venusaur
.byte 0 ; Charmander
.byte 0 ; Charmeleon
.byte 0 ; Charizard
.byte 0 ; Squirtle
.byte 2 ; Wartortle
.byte 2 ; Blastoise
.byte 1 ; Caterpie
.byte 1 ; Metapod
.byte 0 ; Butterfree
.byte 1 ; Weedle
.byte 2 ; Kakuna
.byte 2 ; Beedrill
.byte 0 ; Pidgey
.byte 0 ; Pidgeotto
.byte 0 ; Pidgeot
.byte 2 ; Rattata
.byte 1 ; Raticate
.byte 0 ; Spearow
.byte 0 ; Fearow
.byte 2 ; Ekans
.byte 2 ; Arbok
.byte 2 ; Pikachu
.byte 0 ; Raichu
.byte 2 ; Sandshrew
.byte 2 ; Sandslash
.byte 2 ; Nidoran♀
.byte 2 ; Nidorina
.byte 2 ; Nidoqueen
.byte 2 ; Nidoran♂
.byte 2 ; Nidorino
.byte 2 ; Nidoking
.byte 0 ; Clefairy
.byte 0 ; Clefable
.byte 2 ; Vulpix
.byte 1 ; Ninetales
.byte 0 ; Jigglypuff
.byte 0 ; Wigglytuff
.byte 2 ; Zubat
.byte 2 ; Golbat
.byte 1 ; Oddish
.byte 0 ; Gloom
.byte 0 ; Vileplume
.byte 0 ; Paras
.byte 0 ; Parasect
.byte 0 ; Venonat
.byte 2 ; Venomoth
.byte 2 ; Diglett
.byte 2 ; Dugtrio
.byte 1 ; Meowth
.byte 1 ; Persian
.byte 1 ; Psyduck
.byte 2 ; Golduck
.byte 1 ; Mankey
.byte 2 ; Primeape
.byte 0 ; Growlithe
.byte 0 ; Arcanine
.byte 0 ; Poliwag
.byte 0 ; Poliwhirl
.byte 0 ; Poliwrath
.byte 2 ; Abra
.byte 2 ; Kadabra
.byte 2 ; Alakazam
.byte 0 ; Machop
.byte 2 ; Machoke
.byte 0 ; Machamp
.byte 1 ; Bellsprout
.byte 1 ; Weepinbell
.byte 1 ; Victreebel
.byte 2 ; Tentacool
.byte 2 ; Tentacruel
.byte 1 ; Geodude
.byte 1 ; Graveler
.byte 1 ; Golem
.byte 0 ; Ponyta
.byte 0 ; Rapidash
.byte 0 ; Slowpoke
.byte 0 ; Slowbro
.byte 0 ; Magnemite
.byte 0 ; Magneton
.byte 1 ; Farfetch'd
.byte 2 ; Doduo
.byte 2 ; Dodrio
.byte 2 ; Seel
.byte 2 ; Dewgong
.byte 2 ; Grimer
.byte 2 ; Muk
.byte 2 ; Shellder
.byte 2 ; Cloyster
.byte 2 ; Gastly
.byte 2 ; Haunter
.byte 2 ; Gengar
.byte 2 ; Onix
.byte 2 ; Drowzee
.byte 1 ; Hypno
.byte 2 ; Krabby
.byte 2 ; Kingler
.byte 0 ; Voltorb
.byte 0 ; Electrode
.byte 0 ; Exeggcute
.byte 1 ; Exeggutor
.byte 1 ; Cubone
.byte 1 ; Marowak
.byte 2 ; Hitmonlee
.byte 2 ; Hitmonchan
.byte 1 ; Lickitung
.byte 2 ; Koffing
.byte 2 ; Weezing
.byte 1 ; Rhyhorn
.byte 1 ; Rhydon
.byte 0 ; Chansey
.byte 0 ; Tangela
.byte 1 ; Kangaskhan
.byte 0 ; Horsea
.byte 0 ; Seadra
.byte 0 ; Goldeen
.byte 0 ; Seaking
.byte 2 ; Staryu
.byte 2 ; Starmie
.byte 0 ; Mr. mime
.byte 1 ; Scyther
.byte 2 ; Jynx
.byte 1 ; Electabuzz
.byte 0 ; Magmar
.byte 2 ; Pinsir
.byte 2 ; Tauros
.byte 0 ; Magikarp
.byte 0 ; Gyarados
.byte 2 ; Lapras
.byte 2 ; Ditto
.byte 2 ; Eevee
.byte 0 ; Vaporeon
.byte 0 ; Jolteon
.byte 0 ; Flareon
.byte 0 ; Porygon
.byte 0 ; Omanyte
.byte 0 ; Omastar
.byte 2 ; Kabuto
.byte 2 ; Kabutops
.byte 0 ; Aerodactyl
.byte 1 ; Snorlax
.byte 0 ; Articuno
.byte 0 ; Zapdos
.byte 0 ; Moltres
.byte 0 ; Dratini
.byte 0 ; Dragonair
.byte 2 ; Dragonite
.byte 2 ; Mewtwo
.byte 0 ; Mew
.byte 1 ; Chikorita
.byte 1 ; Bayleef
.byte 1 ; Meganium
.byte 1 ; Cyndaquil
.byte 1 ; Quilava
.byte 1 ; Typhlosion
.byte 2 ; Totodile
.byte 2 ; Croconaw
.byte 2 ; Feraligatr
.byte 2 ; Sentret
.byte 2 ; Furret
.byte 2 ; Hoothoot
.byte 2 ; Noctowl
.byte 0 ; Ledyba
.byte 0 ; Ledian
.byte 1 ; Spinarak
.byte 0 ; Ariados
.byte 2 ; Crobat
.byte 2 ; Chinchou
.byte 0 ; Lanturn
.byte 0 ; Pichu
.byte 0 ; Cleffa
.byte 1 ; Igglybuff
.byte 2 ; Togepi
.byte 2 ; Togetic
.byte 0 ; Natu
.byte 0 ; Xatu
.byte 2 ; Mareep
.byte 0 ; Flaaffy
.byte 0 ; Ampharos
.byte 1 ; Bellossom
.byte 2 ; Marill
.byte 2 ; Azumarill
.byte 1 ; Sudowoodo
.byte 1 ; Politoed
.byte 1 ; Hoppip
.byte 1 ; Skiploom
.byte 2 ; Jumpluff
.byte 2 ; Aipom
.byte 1 ; Sunkern
.byte 1 ; Sunflora
.byte 1 ; Yanma
.byte 0 ; Wooper
.byte 0 ; Quagsire
.byte 2 ; Espeon
.byte 2 ; Umbreon
.byte 2 ; Murkrow
.byte 0 ; Slowking
.byte 0 ; Misdreavus
.byte 0 ; Unown A
.byte 0 ; Wobbuffet
.byte 1 ; Girafarig
.byte 0 ; Pineco
.byte 2 ; Forretress
.byte 2 ; Dunsparce
.byte 2 ; Gligar
.byte 0 ; Steelix
.byte 0 ; Snubbull
.byte 2 ; Granbull
.byte 0 ; Qwilfish
.byte 0 ; Scizor
.byte 1 ; Shuckle
.byte 2 ; Heracross
.byte 0 ; Sneasel
.byte 0 ; Teddiursa
.byte 2 ; Ursaring
.byte 0 ; Slugma
.byte 0 ; Magcargo
.byte 2 ; Swinub
.byte 2 ; Piloswine
.byte 0 ; Corsola
.byte 0 ; Remoraid
.byte 0 ; Octillery
.byte 0 ; Delibird
.byte 2 ; Mantine
.byte 0 ; Skarmory
.byte 0 ; Houndour
.byte 0 ; Houndoom
.byte 0 ; Kingdra
.byte 0 ; Phanpy
.byte 0 ; Donphan
.byte 0 ; Porygon2
.byte 2 ; Stantler
.byte 1 ; Smeargle
.byte 2 ; Tyrogue
.byte 2 ; Hitmontop
.byte 1 ; Smoochum
.byte 1 ; Elekid
.byte 1 ; Magby
.byte 1 ; Miltank
.byte 1 ; Blissey
.byte 0 ; Raikou
.byte 2 ; Entei
.byte 0 ; Suicune
.byte 1 ; Larvitar
.byte 0 ; Pupitar
.byte 1 ; Tyranitar
.byte 0 ; Lugia
.byte 1 ; Ho-Oh
.byte 1 ; Celebi
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 0 ; ?
.byte 1 ; Treecko
.byte 0 ; Grovyle
.byte 1 ; Sceptile
.byte 0 ; Torchic
.byte 0 ; Combusken
.byte 0 ; Blaziken
.byte 0 ; Mudkip
.byte 0 ; Marshtomp
.byte 0 ; Swampert
.byte 2 ; Poochyena
.byte 2 ; Mightyena
.byte 2 ; Zigzagoon
.byte 2 ; Linoone
.byte 0 ; Wurmple
.byte 2 ; Silcoon
.byte 0 ; Beautifly
.byte 2 ; Cascoon
.byte 1 ; Dustox
.byte 1 ; Lotad
.byte 1 ; Lombre
.byte 1 ; Ludicolo
.byte 1 ; Seedot
.byte 1 ; Nuzleaf
.byte 0 ; Shiftry
.byte 1 ; Nincada
.byte 1 ; Ninjask
.byte 1 ; Shedinja
.byte 2 ; Taillow
.byte 2 ; Swellow
.byte 1 ; Shroomish
.byte 1 ; Breloom
.byte 1 ; Spinda
.byte 0 ; Wingull
.byte 0 ; Pelipper
.byte 2 ; Surskit
.byte 0 ; Masquerain
.byte 2 ; Wailmer
.byte 0 ; Wailord
.byte 0 ; Skitty
.byte 2 ; Delcatty
.byte 1 ; Kecleon
.byte 1 ; Baltoy
.byte 0 ; Claydol
.byte 0 ; Nosepass
.byte 1 ; Torkoal
.byte 2 ; Sableye
.byte 0 ; Barboach
.byte 0 ; Whiscash
.byte 0 ; Luvdisc
.byte 0 ; Corphish
.byte 0 ; Crawdaunt
.byte 2 ; Feebas
.byte 0 ; Milotic
.byte 0 ; Carvanha
.byte 0 ; Sharpedo
.byte 1 ; Trapinch
.byte 1 ; Vibrava
.byte 1 ; Flygon
.byte 2 ; Makuhita
.byte 1 ; Hariyama
.byte 1 ; Electrike
.byte 0 ; Manectric
.byte 1 ; Numel
.byte 0 ; Camerupt
.byte 2 ; Spheal
.byte 2 ; Sealeo
.byte 0 ; Walrein
.byte 1 ; Cacnea
.byte 1 ; Cacturne
.byte 2 ; Snorunt
.byte 0 ; Glalie
.byte 1 ; Lunatone
.byte 0 ; Solrock
.byte 2 ; Azurill
.byte 0 ; Spoink
.byte 2 ; Grumpig
.byte 0 ; Plusle
.byte 0 ; Minun
.byte 2 ; Mawile
.byte 0 ; Meditite
.byte 0 ; Medicham
.byte 0 ; Swablu
.byte 0 ; Altaria
.byte 0 ; Wynaut
.byte 0 ; Duskull
.byte 0 ; Dusclops
.byte 0 ; Roselia
.byte 2 ; Slakoth
.byte 2 ; Vigoroth
.byte 1 ; Slaking
.byte 1 ; Gulpin
.byte 2 ; Swalot
.byte 1 ; Tropius
.byte 0 ; Whismur
.byte 2 ; Loudred
.byte 2 ; Exploud
.byte 0 ; Clamperl
.byte 0 ; Huntail
.byte 0 ; Gorebyss
.byte 0 ; Absol
.byte 0 ; Shuppet
.byte 0 ; Banette
.byte 2 ; Seviper
.byte 0 ; Zangoose
.byte 1 ; Relicanth
.byte 2 ; Aron
.byte 2 ; Lairon
.byte 2 ; Aggron
.byte 0 ; Castform
.byte 0 ; Volbeat
.byte 2 ; Illumise
.byte 2 ; Lileep
.byte 0 ; Cradily
.byte 0 ; Anorith
.byte 0 ; Armaldo
.byte 1 ; Ralts
.byte 1 ; Kirlia
.byte 1 ; Gardevoir
.byte 2 ; Bagon
.byte 2 ; Shelgon
.byte 0 ; Salamence
.byte 0 ; Beldum
.byte 0 ; Metang
.byte 0 ; Metagross
.byte 2 ; Regirock
.byte 2 ; Regice
.byte 2 ; Registeel
.byte 2 ; Kyogre
.byte 0 ; Groudon
.byte 1 ; Rayquaza
.byte 0 ; Latias
.byte 2 ; Latios
.byte 0 ; Jirachi
.byte 0 ; Deoxys
.byte 0 ; Chimecho
.byte 1 ; Egg
.byte 0 ; Unown B
.byte 0 ; Unown C
.byte 0 ; Unown D
.byte 0 ; Unown E
.byte 0 ; Unown F
.byte 0 ; Unown G
.byte 0 ; Unown H
.byte 0 ; Unown I
.byte 0 ; Unown J
.byte 0 ; Unown K
.byte 0 ; Unown L
.byte 0 ; Unown M
.byte 0 ; Unown N
.byte 0 ; Unown O
.byte 0 ; Unown P
.byte 0 ; Unown Q
.byte 0 ; Unown R
.byte 0 ; Unown S
.byte 0 ; Unown T
.byte 0 ; Unown U
.byte 0 ; Unown V
.byte 0 ; Unown W
.byte 0 ; Unown X
.byte 0 ; Unown Y
.byte 0 ; Unown Z
.byte 0 ; Unown Exclamation Mark
.byte 0 ; Unown Question Mark

View File

@ -0,0 +1,12 @@
.align 2
gMonIconPaletteTable: ; 83BC5B8
obj_pal gMonIconPalettes + 0 * 32, 56000
obj_pal gMonIconPalettes + 1 * 32, 56001
obj_pal gMonIconPalettes + 2 * 32, 56002
; These palettes are actually part of the title screen BG palette and are not
; used for Pokémon icons.
obj_pal gMonIconPalettes + 3 * 32, 56003
obj_pal gMonIconPalettes + 4 * 32, 56004
obj_pal gMonIconPalettes + 5 * 32, 56005

View File

@ -0,0 +1,443 @@
.align 2
gMonIconTable: ; 83BBD20
.4byte gMonIcon_Bulbasaur
.4byte gMonIcon_Bulbasaur
.4byte gMonIcon_Ivysaur
.4byte gMonIcon_Venusaur
.4byte gMonIcon_Charmander
.4byte gMonIcon_Charmeleon
.4byte gMonIcon_Charizard
.4byte gMonIcon_Squirtle
.4byte gMonIcon_Wartortle
.4byte gMonIcon_Blastoise
.4byte gMonIcon_Caterpie
.4byte gMonIcon_Metapod
.4byte gMonIcon_Butterfree
.4byte gMonIcon_Weedle
.4byte gMonIcon_Kakuna
.4byte gMonIcon_Beedrill
.4byte gMonIcon_Pidgey
.4byte gMonIcon_Pidgeotto
.4byte gMonIcon_Pidgeot
.4byte gMonIcon_Rattata
.4byte gMonIcon_Raticate
.4byte gMonIcon_Spearow
.4byte gMonIcon_Fearow
.4byte gMonIcon_Ekans
.4byte gMonIcon_Arbok
.4byte gMonIcon_Pikachu
.4byte gMonIcon_Raichu
.4byte gMonIcon_Sandshrew
.4byte gMonIcon_Sandslash
.4byte gMonIcon_NidoranF
.4byte gMonIcon_Nidorina
.4byte gMonIcon_Nidoqueen
.4byte gMonIcon_NidoranM
.4byte gMonIcon_Nidorino
.4byte gMonIcon_Nidoking
.4byte gMonIcon_Clefairy
.4byte gMonIcon_Clefable
.4byte gMonIcon_Vulpix
.4byte gMonIcon_Ninetales
.4byte gMonIcon_Jigglypuff
.4byte gMonIcon_Wigglytuff
.4byte gMonIcon_Zubat
.4byte gMonIcon_Golbat
.4byte gMonIcon_Oddish
.4byte gMonIcon_Gloom
.4byte gMonIcon_Vileplume
.4byte gMonIcon_Paras
.4byte gMonIcon_Parasect
.4byte gMonIcon_Venonat
.4byte gMonIcon_Venomoth
.4byte gMonIcon_Diglett
.4byte gMonIcon_Dugtrio
.4byte gMonIcon_Meowth
.4byte gMonIcon_Persian
.4byte gMonIcon_Psyduck
.4byte gMonIcon_Golduck
.4byte gMonIcon_Mankey
.4byte gMonIcon_Primeape
.4byte gMonIcon_Growlithe
.4byte gMonIcon_Arcanine
.4byte gMonIcon_Poliwag
.4byte gMonIcon_Poliwhirl
.4byte gMonIcon_Poliwrath
.4byte gMonIcon_Abra
.4byte gMonIcon_Kadabra
.4byte gMonIcon_Alakazam
.4byte gMonIcon_Machop
.4byte gMonIcon_Machoke
.4byte gMonIcon_Machamp
.4byte gMonIcon_Bellsprout
.4byte gMonIcon_Weepinbell
.4byte gMonIcon_Victreebel
.4byte gMonIcon_Tentacool
.4byte gMonIcon_Tentacruel
.4byte gMonIcon_Geodude
.4byte gMonIcon_Graveler
.4byte gMonIcon_Golem
.4byte gMonIcon_Ponyta
.4byte gMonIcon_Rapidash
.4byte gMonIcon_Slowpoke
.4byte gMonIcon_Slowbro
.4byte gMonIcon_Magnemite
.4byte gMonIcon_Magneton
.4byte gMonIcon_Farfetchd
.4byte gMonIcon_Doduo
.4byte gMonIcon_Dodrio
.4byte gMonIcon_Seel
.4byte gMonIcon_Dewgong
.4byte gMonIcon_Grimer
.4byte gMonIcon_Muk
.4byte gMonIcon_Shellder
.4byte gMonIcon_Cloyster
.4byte gMonIcon_Gastly
.4byte gMonIcon_Haunter
.4byte gMonIcon_Gengar
.4byte gMonIcon_Onix
.4byte gMonIcon_Drowzee
.4byte gMonIcon_Hypno
.4byte gMonIcon_Krabby
.4byte gMonIcon_Kingler
.4byte gMonIcon_Voltorb
.4byte gMonIcon_Electrode
.4byte gMonIcon_Exeggcute
.4byte gMonIcon_Exeggutor
.4byte gMonIcon_Cubone
.4byte gMonIcon_Marowak
.4byte gMonIcon_Hitmonlee
.4byte gMonIcon_Hitmonchan
.4byte gMonIcon_Lickitung
.4byte gMonIcon_Koffing
.4byte gMonIcon_Weezing
.4byte gMonIcon_Rhyhorn
.4byte gMonIcon_Rhydon
.4byte gMonIcon_Chansey
.4byte gMonIcon_Tangela
.4byte gMonIcon_Kangaskhan
.4byte gMonIcon_Horsea
.4byte gMonIcon_Seadra
.4byte gMonIcon_Goldeen
.4byte gMonIcon_Seaking
.4byte gMonIcon_Staryu
.4byte gMonIcon_Starmie
.4byte gMonIcon_Mrmime
.4byte gMonIcon_Scyther
.4byte gMonIcon_Jynx
.4byte gMonIcon_Electabuzz
.4byte gMonIcon_Magmar
.4byte gMonIcon_Pinsir
.4byte gMonIcon_Tauros
.4byte gMonIcon_Magikarp
.4byte gMonIcon_Gyarados
.4byte gMonIcon_Lapras
.4byte gMonIcon_Ditto
.4byte gMonIcon_Eevee
.4byte gMonIcon_Vaporeon
.4byte gMonIcon_Jolteon
.4byte gMonIcon_Flareon
.4byte gMonIcon_Porygon
.4byte gMonIcon_Omanyte
.4byte gMonIcon_Omastar
.4byte gMonIcon_Kabuto
.4byte gMonIcon_Kabutops
.4byte gMonIcon_Aerodactyl
.4byte gMonIcon_Snorlax
.4byte gMonIcon_Articuno
.4byte gMonIcon_Zapdos
.4byte gMonIcon_Moltres
.4byte gMonIcon_Dratini
.4byte gMonIcon_Dragonair
.4byte gMonIcon_Dragonite
.4byte gMonIcon_Mewtwo
.4byte gMonIcon_Mew
.4byte gMonIcon_Chikorita
.4byte gMonIcon_Bayleef
.4byte gMonIcon_Meganium
.4byte gMonIcon_Cyndaquil
.4byte gMonIcon_Quilava
.4byte gMonIcon_Typhlosion
.4byte gMonIcon_Totodile
.4byte gMonIcon_Croconaw
.4byte gMonIcon_Feraligatr
.4byte gMonIcon_Sentret
.4byte gMonIcon_Furret
.4byte gMonIcon_Hoothoot
.4byte gMonIcon_Noctowl
.4byte gMonIcon_Ledyba
.4byte gMonIcon_Ledian
.4byte gMonIcon_Spinarak
.4byte gMonIcon_Ariados
.4byte gMonIcon_Crobat
.4byte gMonIcon_Chinchou
.4byte gMonIcon_Lanturn
.4byte gMonIcon_Pichu
.4byte gMonIcon_Cleffa
.4byte gMonIcon_Igglybuff
.4byte gMonIcon_Togepi
.4byte gMonIcon_Togetic
.4byte gMonIcon_Natu
.4byte gMonIcon_Xatu
.4byte gMonIcon_Mareep
.4byte gMonIcon_Flaaffy
.4byte gMonIcon_Ampharos
.4byte gMonIcon_Bellossom
.4byte gMonIcon_Marill
.4byte gMonIcon_Azumarill
.4byte gMonIcon_Sudowoodo
.4byte gMonIcon_Politoed
.4byte gMonIcon_Hoppip
.4byte gMonIcon_Skiploom
.4byte gMonIcon_Jumpluff
.4byte gMonIcon_Aipom
.4byte gMonIcon_Sunkern
.4byte gMonIcon_Sunflora
.4byte gMonIcon_Yanma
.4byte gMonIcon_Wooper
.4byte gMonIcon_Quagsire
.4byte gMonIcon_Espeon
.4byte gMonIcon_Umbreon
.4byte gMonIcon_Murkrow
.4byte gMonIcon_Slowking
.4byte gMonIcon_Misdreavus
.4byte gMonIcon_UnownA
.4byte gMonIcon_Wobbuffet
.4byte gMonIcon_Girafarig
.4byte gMonIcon_Pineco
.4byte gMonIcon_Forretress
.4byte gMonIcon_Dunsparce
.4byte gMonIcon_Gligar
.4byte gMonIcon_Steelix
.4byte gMonIcon_Snubbull
.4byte gMonIcon_Granbull
.4byte gMonIcon_Qwilfish
.4byte gMonIcon_Scizor
.4byte gMonIcon_Shuckle
.4byte gMonIcon_Heracross
.4byte gMonIcon_Sneasel
.4byte gMonIcon_Teddiursa
.4byte gMonIcon_Ursaring
.4byte gMonIcon_Slugma
.4byte gMonIcon_Magcargo
.4byte gMonIcon_Swinub
.4byte gMonIcon_Piloswine
.4byte gMonIcon_Corsola
.4byte gMonIcon_Remoraid
.4byte gMonIcon_Octillery
.4byte gMonIcon_Delibird
.4byte gMonIcon_Mantine
.4byte gMonIcon_Skarmory
.4byte gMonIcon_Houndour
.4byte gMonIcon_Houndoom
.4byte gMonIcon_Kingdra
.4byte gMonIcon_Phanpy
.4byte gMonIcon_Donphan
.4byte gMonIcon_Porygon2
.4byte gMonIcon_Stantler
.4byte gMonIcon_Smeargle
.4byte gMonIcon_Tyrogue
.4byte gMonIcon_Hitmontop
.4byte gMonIcon_Smoochum
.4byte gMonIcon_Elekid
.4byte gMonIcon_Magby
.4byte gMonIcon_Miltank
.4byte gMonIcon_Blissey
.4byte gMonIcon_Raikou
.4byte gMonIcon_Entei
.4byte gMonIcon_Suicune
.4byte gMonIcon_Larvitar
.4byte gMonIcon_Pupitar
.4byte gMonIcon_Tyranitar
.4byte gMonIcon_Lugia
.4byte gMonIcon_HoOh
.4byte gMonIcon_Celebi
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_QuestionMark
.4byte gMonIcon_Treecko
.4byte gMonIcon_Grovyle
.4byte gMonIcon_Sceptile
.4byte gMonIcon_Torchic
.4byte gMonIcon_Combusken
.4byte gMonIcon_Blaziken
.4byte gMonIcon_Mudkip
.4byte gMonIcon_Marshtomp
.4byte gMonIcon_Swampert
.4byte gMonIcon_Poochyena
.4byte gMonIcon_Mightyena
.4byte gMonIcon_Zigzagoon
.4byte gMonIcon_Linoone
.4byte gMonIcon_Wurmple
.4byte gMonIcon_Silcoon
.4byte gMonIcon_Beautifly
.4byte gMonIcon_Cascoon
.4byte gMonIcon_Dustox
.4byte gMonIcon_Lotad
.4byte gMonIcon_Lombre
.4byte gMonIcon_Ludicolo
.4byte gMonIcon_Seedot
.4byte gMonIcon_Nuzleaf
.4byte gMonIcon_Shiftry
.4byte gMonIcon_Nincada
.4byte gMonIcon_Ninjask
.4byte gMonIcon_Shedinja
.4byte gMonIcon_Taillow
.4byte gMonIcon_Swellow
.4byte gMonIcon_Shroomish
.4byte gMonIcon_Breloom
.4byte gMonIcon_Spinda
.4byte gMonIcon_Wingull
.4byte gMonIcon_Pelipper
.4byte gMonIcon_Surskit
.4byte gMonIcon_Masquerain
.4byte gMonIcon_Wailmer
.4byte gMonIcon_Wailord
.4byte gMonIcon_Skitty
.4byte gMonIcon_Delcatty
.4byte gMonIcon_Kecleon
.4byte gMonIcon_Baltoy
.4byte gMonIcon_Claydol
.4byte gMonIcon_Nosepass
.4byte gMonIcon_Torkoal
.4byte gMonIcon_Sableye
.4byte gMonIcon_Barboach
.4byte gMonIcon_Whiscash
.4byte gMonIcon_Luvdisc
.4byte gMonIcon_Corphish
.4byte gMonIcon_Crawdaunt
.4byte gMonIcon_Feebas
.4byte gMonIcon_Milotic
.4byte gMonIcon_Carvanha
.4byte gMonIcon_Sharpedo
.4byte gMonIcon_Trapinch
.4byte gMonIcon_Vibrava
.4byte gMonIcon_Flygon
.4byte gMonIcon_Makuhita
.4byte gMonIcon_Hariyama
.4byte gMonIcon_Electrike
.4byte gMonIcon_Manectric
.4byte gMonIcon_Numel
.4byte gMonIcon_Camerupt
.4byte gMonIcon_Spheal
.4byte gMonIcon_Sealeo
.4byte gMonIcon_Walrein
.4byte gMonIcon_Cacnea
.4byte gMonIcon_Cacturne
.4byte gMonIcon_Snorunt
.4byte gMonIcon_Glalie
.4byte gMonIcon_Lunatone
.4byte gMonIcon_Solrock
.4byte gMonIcon_Azurill
.4byte gMonIcon_Spoink
.4byte gMonIcon_Grumpig
.4byte gMonIcon_Plusle
.4byte gMonIcon_Minun
.4byte gMonIcon_Mawile
.4byte gMonIcon_Meditite
.4byte gMonIcon_Medicham
.4byte gMonIcon_Swablu
.4byte gMonIcon_Altaria
.4byte gMonIcon_Wynaut
.4byte gMonIcon_Duskull
.4byte gMonIcon_Dusclops
.4byte gMonIcon_Roselia
.4byte gMonIcon_Slakoth
.4byte gMonIcon_Vigoroth
.4byte gMonIcon_Slaking
.4byte gMonIcon_Gulpin
.4byte gMonIcon_Swalot
.4byte gMonIcon_Tropius
.4byte gMonIcon_Whismur
.4byte gMonIcon_Loudred
.4byte gMonIcon_Exploud
.4byte gMonIcon_Clamperl
.4byte gMonIcon_Huntail
.4byte gMonIcon_Gorebyss
.4byte gMonIcon_Absol
.4byte gMonIcon_Shuppet
.4byte gMonIcon_Banette
.4byte gMonIcon_Seviper
.4byte gMonIcon_Zangoose
.4byte gMonIcon_Relicanth
.4byte gMonIcon_Aron
.4byte gMonIcon_Lairon
.4byte gMonIcon_Aggron
.4byte gMonIcon_Castform
.4byte gMonIcon_Volbeat
.4byte gMonIcon_Illumise
.4byte gMonIcon_Lileep
.4byte gMonIcon_Cradily
.4byte gMonIcon_Anorith
.4byte gMonIcon_Armaldo
.4byte gMonIcon_Ralts
.4byte gMonIcon_Kirlia
.4byte gMonIcon_Gardevoir
.4byte gMonIcon_Bagon
.4byte gMonIcon_Shelgon
.4byte gMonIcon_Salamence
.4byte gMonIcon_Beldum
.4byte gMonIcon_Metang
.4byte gMonIcon_Metagross
.4byte gMonIcon_Regirock
.4byte gMonIcon_Regice
.4byte gMonIcon_Registeel
.4byte gMonIcon_Kyogre
.4byte gMonIcon_Groudon
.4byte gMonIcon_Rayquaza
.4byte gMonIcon_Latias
.4byte gMonIcon_Latios
.4byte gMonIcon_Jirachi
.4byte gMonIcon_Deoxys
.4byte gMonIcon_Chimecho
.4byte gMonIcon_Egg
.4byte gMonIcon_UnownB
.4byte gMonIcon_UnownC
.4byte gMonIcon_UnownD
.4byte gMonIcon_UnownE
.4byte gMonIcon_UnownF
.4byte gMonIcon_UnownG
.4byte gMonIcon_UnownH
.4byte gMonIcon_UnownI
.4byte gMonIcon_UnownJ
.4byte gMonIcon_UnownK
.4byte gMonIcon_UnownL
.4byte gMonIcon_UnownM
.4byte gMonIcon_UnownN
.4byte gMonIcon_UnownO
.4byte gMonIcon_UnownP
.4byte gMonIcon_UnownQ
.4byte gMonIcon_UnownR
.4byte gMonIcon_UnownS
.4byte gMonIcon_UnownT
.4byte gMonIcon_UnownU
.4byte gMonIcon_UnownV
.4byte gMonIcon_UnownW
.4byte gMonIcon_UnownX
.4byte gMonIcon_UnownY
.4byte gMonIcon_UnownZ
.4byte gMonIcon_UnownExclamationMark
.4byte gMonIcon_UnownQuestionMark

View File

@ -0,0 +1,443 @@
.align 2
gMonPaletteTable: ; 81EA5B4
obj_pal gMonPalette_CircledQuestionMark, 0
obj_pal gMonPalette_Bulbasaur, 1
obj_pal gMonPalette_Ivysaur, 2
obj_pal gMonPalette_Venusaur, 3
obj_pal gMonPalette_Charmander, 4
obj_pal gMonPalette_Charmeleon, 5
obj_pal gMonPalette_Charizard, 6
obj_pal gMonPalette_Squirtle, 7
obj_pal gMonPalette_Wartortle, 8
obj_pal gMonPalette_Blastoise, 9
obj_pal gMonPalette_Caterpie, 10
obj_pal gMonPalette_Metapod, 11
obj_pal gMonPalette_Butterfree, 12
obj_pal gMonPalette_Weedle, 13
obj_pal gMonPalette_Kakuna, 14
obj_pal gMonPalette_Beedrill, 15
obj_pal gMonPalette_Pidgey, 16
obj_pal gMonPalette_Pidgeotto, 17
obj_pal gMonPalette_Pidgeot, 18
obj_pal gMonPalette_Rattata, 19
obj_pal gMonPalette_Raticate, 20
obj_pal gMonPalette_Spearow, 21
obj_pal gMonPalette_Fearow, 22
obj_pal gMonPalette_Ekans, 23
obj_pal gMonPalette_Arbok, 24
obj_pal gMonPalette_Pikachu, 25
obj_pal gMonPalette_Raichu, 26
obj_pal gMonPalette_Sandshrew, 27
obj_pal gMonPalette_Sandslash, 28
obj_pal gMonPalette_NidoranF, 29
obj_pal gMonPalette_Nidorina, 30
obj_pal gMonPalette_Nidoqueen, 31
obj_pal gMonPalette_NidoranM, 32
obj_pal gMonPalette_Nidorino, 33
obj_pal gMonPalette_Nidoking, 34
obj_pal gMonPalette_Clefairy, 35
obj_pal gMonPalette_Clefable, 36
obj_pal gMonPalette_Vulpix, 37
obj_pal gMonPalette_Ninetales, 38
obj_pal gMonPalette_Jigglypuff, 39
obj_pal gMonPalette_Wigglytuff, 40
obj_pal gMonPalette_Zubat, 41
obj_pal gMonPalette_Golbat, 42
obj_pal gMonPalette_Oddish, 43
obj_pal gMonPalette_Gloom, 44
obj_pal gMonPalette_Vileplume, 45
obj_pal gMonPalette_Paras, 46
obj_pal gMonPalette_Parasect, 47
obj_pal gMonPalette_Venonat, 48
obj_pal gMonPalette_Venomoth, 49
obj_pal gMonPalette_Diglett, 50
obj_pal gMonPalette_Dugtrio, 51
obj_pal gMonPalette_Meowth, 52
obj_pal gMonPalette_Persian, 53
obj_pal gMonPalette_Psyduck, 54
obj_pal gMonPalette_Golduck, 55
obj_pal gMonPalette_Mankey, 56
obj_pal gMonPalette_Primeape, 57
obj_pal gMonPalette_Growlithe, 58
obj_pal gMonPalette_Arcanine, 59
obj_pal gMonPalette_Poliwag, 60
obj_pal gMonPalette_Poliwhirl, 61
obj_pal gMonPalette_Poliwrath, 62
obj_pal gMonPalette_Abra, 63
obj_pal gMonPalette_Kadabra, 64
obj_pal gMonPalette_Alakazam, 65
obj_pal gMonPalette_Machop, 66
obj_pal gMonPalette_Machoke, 67
obj_pal gMonPalette_Machamp, 68
obj_pal gMonPalette_Bellsprout, 69
obj_pal gMonPalette_Weepinbell, 70
obj_pal gMonPalette_Victreebel, 71
obj_pal gMonPalette_Tentacool, 72
obj_pal gMonPalette_Tentacruel, 73
obj_pal gMonPalette_Geodude, 74
obj_pal gMonPalette_Graveler, 75
obj_pal gMonPalette_Golem, 76
obj_pal gMonPalette_Ponyta, 77
obj_pal gMonPalette_Rapidash, 78
obj_pal gMonPalette_Slowpoke, 79
obj_pal gMonPalette_Slowbro, 80
obj_pal gMonPalette_Magnemite, 81
obj_pal gMonPalette_Magneton, 82
obj_pal gMonPalette_Farfetchd, 83
obj_pal gMonPalette_Doduo, 84
obj_pal gMonPalette_Dodrio, 85
obj_pal gMonPalette_Seel, 86
obj_pal gMonPalette_Dewgong, 87
obj_pal gMonPalette_Grimer, 88
obj_pal gMonPalette_Muk, 89
obj_pal gMonPalette_Shellder, 90
obj_pal gMonPalette_Cloyster, 91
obj_pal gMonPalette_Gastly, 92
obj_pal gMonPalette_Haunter, 93
obj_pal gMonPalette_Gengar, 94
obj_pal gMonPalette_Onix, 95
obj_pal gMonPalette_Drowzee, 96
obj_pal gMonPalette_Hypno, 97
obj_pal gMonPalette_Krabby, 98
obj_pal gMonPalette_Kingler, 99
obj_pal gMonPalette_Voltorb, 100
obj_pal gMonPalette_Electrode, 101
obj_pal gMonPalette_Exeggcute, 102
obj_pal gMonPalette_Exeggutor, 103
obj_pal gMonPalette_Cubone, 104
obj_pal gMonPalette_Marowak, 105
obj_pal gMonPalette_Hitmonlee, 106
obj_pal gMonPalette_Hitmonchan, 107
obj_pal gMonPalette_Lickitung, 108
obj_pal gMonPalette_Koffing, 109
obj_pal gMonPalette_Weezing, 110
obj_pal gMonPalette_Rhyhorn, 111
obj_pal gMonPalette_Rhydon, 112
obj_pal gMonPalette_Chansey, 113
obj_pal gMonPalette_Tangela, 114
obj_pal gMonPalette_Kangaskhan, 115
obj_pal gMonPalette_Horsea, 116
obj_pal gMonPalette_Seadra, 117
obj_pal gMonPalette_Goldeen, 118
obj_pal gMonPalette_Seaking, 119
obj_pal gMonPalette_Staryu, 120
obj_pal gMonPalette_Starmie, 121
obj_pal gMonPalette_Mrmime, 122
obj_pal gMonPalette_Scyther, 123
obj_pal gMonPalette_Jynx, 124
obj_pal gMonPalette_Electabuzz, 125
obj_pal gMonPalette_Magmar, 126
obj_pal gMonPalette_Pinsir, 127
obj_pal gMonPalette_Tauros, 128
obj_pal gMonPalette_Magikarp, 129
obj_pal gMonPalette_Gyarados, 130
obj_pal gMonPalette_Lapras, 131
obj_pal gMonPalette_Ditto, 132
obj_pal gMonPalette_Eevee, 133
obj_pal gMonPalette_Vaporeon, 134
obj_pal gMonPalette_Jolteon, 135
obj_pal gMonPalette_Flareon, 136
obj_pal gMonPalette_Porygon, 137
obj_pal gMonPalette_Omanyte, 138
obj_pal gMonPalette_Omastar, 139
obj_pal gMonPalette_Kabuto, 140
obj_pal gMonPalette_Kabutops, 141
obj_pal gMonPalette_Aerodactyl, 142
obj_pal gMonPalette_Snorlax, 143
obj_pal gMonPalette_Articuno, 144
obj_pal gMonPalette_Zapdos, 145
obj_pal gMonPalette_Moltres, 146
obj_pal gMonPalette_Dratini, 147
obj_pal gMonPalette_Dragonair, 148
obj_pal gMonPalette_Dragonite, 149
obj_pal gMonPalette_Mewtwo, 150
obj_pal gMonPalette_Mew, 151
obj_pal gMonPalette_Chikorita, 152
obj_pal gMonPalette_Bayleef, 153
obj_pal gMonPalette_Meganium, 154
obj_pal gMonPalette_Cyndaquil, 155
obj_pal gMonPalette_Quilava, 156
obj_pal gMonPalette_Typhlosion, 157
obj_pal gMonPalette_Totodile, 158
obj_pal gMonPalette_Croconaw, 159
obj_pal gMonPalette_Feraligatr, 160
obj_pal gMonPalette_Sentret, 161
obj_pal gMonPalette_Furret, 162
obj_pal gMonPalette_Hoothoot, 163
obj_pal gMonPalette_Noctowl, 164
obj_pal gMonPalette_Ledyba, 165
obj_pal gMonPalette_Ledian, 166
obj_pal gMonPalette_Spinarak, 167
obj_pal gMonPalette_Ariados, 168
obj_pal gMonPalette_Crobat, 169
obj_pal gMonPalette_Chinchou, 170
obj_pal gMonPalette_Lanturn, 171
obj_pal gMonPalette_Pichu, 172
obj_pal gMonPalette_Cleffa, 173
obj_pal gMonPalette_Igglybuff, 174
obj_pal gMonPalette_Togepi, 175
obj_pal gMonPalette_Togetic, 176
obj_pal gMonPalette_Natu, 177
obj_pal gMonPalette_Xatu, 178
obj_pal gMonPalette_Mareep, 179
obj_pal gMonPalette_Flaaffy, 180
obj_pal gMonPalette_Ampharos, 181
obj_pal gMonPalette_Bellossom, 182
obj_pal gMonPalette_Marill, 183
obj_pal gMonPalette_Azumarill, 184
obj_pal gMonPalette_Sudowoodo, 185
obj_pal gMonPalette_Politoed, 186
obj_pal gMonPalette_Hoppip, 187
obj_pal gMonPalette_Skiploom, 188
obj_pal gMonPalette_Jumpluff, 189
obj_pal gMonPalette_Aipom, 190
obj_pal gMonPalette_Sunkern, 191
obj_pal gMonPalette_Sunflora, 192
obj_pal gMonPalette_Yanma, 193
obj_pal gMonPalette_Wooper, 194
obj_pal gMonPalette_Quagsire, 195
obj_pal gMonPalette_Espeon, 196
obj_pal gMonPalette_Umbreon, 197
obj_pal gMonPalette_Murkrow, 198
obj_pal gMonPalette_Slowking, 199
obj_pal gMonPalette_Misdreavus, 200
obj_pal gMonPalette_Unown, 201
obj_pal gMonPalette_Wobbuffet, 202
obj_pal gMonPalette_Girafarig, 203
obj_pal gMonPalette_Pineco, 204
obj_pal gMonPalette_Forretress, 205
obj_pal gMonPalette_Dunsparce, 206
obj_pal gMonPalette_Gligar, 207
obj_pal gMonPalette_Steelix, 208
obj_pal gMonPalette_Snubbull, 209
obj_pal gMonPalette_Granbull, 210
obj_pal gMonPalette_Qwilfish, 211
obj_pal gMonPalette_Scizor, 212
obj_pal gMonPalette_Shuckle, 213
obj_pal gMonPalette_Heracross, 214
obj_pal gMonPalette_Sneasel, 215
obj_pal gMonPalette_Teddiursa, 216
obj_pal gMonPalette_Ursaring, 217
obj_pal gMonPalette_Slugma, 218
obj_pal gMonPalette_Magcargo, 219
obj_pal gMonPalette_Swinub, 220
obj_pal gMonPalette_Piloswine, 221
obj_pal gMonPalette_Corsola, 222
obj_pal gMonPalette_Remoraid, 223
obj_pal gMonPalette_Octillery, 224
obj_pal gMonPalette_Delibird, 225
obj_pal gMonPalette_Mantine, 226
obj_pal gMonPalette_Skarmory, 227
obj_pal gMonPalette_Houndour, 228
obj_pal gMonPalette_Houndoom, 229
obj_pal gMonPalette_Kingdra, 230
obj_pal gMonPalette_Phanpy, 231
obj_pal gMonPalette_Donphan, 232
obj_pal gMonPalette_Porygon2, 233
obj_pal gMonPalette_Stantler, 234
obj_pal gMonPalette_Smeargle, 235
obj_pal gMonPalette_Tyrogue, 236
obj_pal gMonPalette_Hitmontop, 237
obj_pal gMonPalette_Smoochum, 238
obj_pal gMonPalette_Elekid, 239
obj_pal gMonPalette_Magby, 240
obj_pal gMonPalette_Miltank, 241
obj_pal gMonPalette_Blissey, 242
obj_pal gMonPalette_Raikou, 243
obj_pal gMonPalette_Entei, 244
obj_pal gMonPalette_Suicune, 245
obj_pal gMonPalette_Larvitar, 246
obj_pal gMonPalette_Pupitar, 247
obj_pal gMonPalette_Tyranitar, 248
obj_pal gMonPalette_Lugia, 249
obj_pal gMonPalette_HoOh, 250
obj_pal gMonPalette_Celebi, 251
obj_pal gMonPalette_DoubleQuestionMark, 252
obj_pal gMonPalette_DoubleQuestionMark, 253
obj_pal gMonPalette_DoubleQuestionMark, 254
obj_pal gMonPalette_DoubleQuestionMark, 255
obj_pal gMonPalette_DoubleQuestionMark, 256
obj_pal gMonPalette_DoubleQuestionMark, 257
obj_pal gMonPalette_DoubleQuestionMark, 258
obj_pal gMonPalette_DoubleQuestionMark, 259
obj_pal gMonPalette_DoubleQuestionMark, 260
obj_pal gMonPalette_DoubleQuestionMark, 261
obj_pal gMonPalette_DoubleQuestionMark, 262
obj_pal gMonPalette_DoubleQuestionMark, 263
obj_pal gMonPalette_DoubleQuestionMark, 264
obj_pal gMonPalette_DoubleQuestionMark, 265
obj_pal gMonPalette_DoubleQuestionMark, 266
obj_pal gMonPalette_DoubleQuestionMark, 267
obj_pal gMonPalette_DoubleQuestionMark, 268
obj_pal gMonPalette_DoubleQuestionMark, 269
obj_pal gMonPalette_DoubleQuestionMark, 270
obj_pal gMonPalette_DoubleQuestionMark, 271
obj_pal gMonPalette_DoubleQuestionMark, 272
obj_pal gMonPalette_DoubleQuestionMark, 273
obj_pal gMonPalette_DoubleQuestionMark, 274
obj_pal gMonPalette_DoubleQuestionMark, 275
obj_pal gMonPalette_DoubleQuestionMark, 276
obj_pal gMonPalette_Treecko, 277
obj_pal gMonPalette_Grovyle, 278
obj_pal gMonPalette_Sceptile, 279
obj_pal gMonPalette_Torchic, 280
obj_pal gMonPalette_Combusken, 281
obj_pal gMonPalette_Blaziken, 282
obj_pal gMonPalette_Mudkip, 283
obj_pal gMonPalette_Marshtomp, 284
obj_pal gMonPalette_Swampert, 285
obj_pal gMonPalette_Poochyena, 286
obj_pal gMonPalette_Mightyena, 287
obj_pal gMonPalette_Zigzagoon, 288
obj_pal gMonPalette_Linoone, 289
obj_pal gMonPalette_Wurmple, 290
obj_pal gMonPalette_Silcoon, 291
obj_pal gMonPalette_Beautifly, 292
obj_pal gMonPalette_Cascoon, 293
obj_pal gMonPalette_Dustox, 294
obj_pal gMonPalette_Lotad, 295
obj_pal gMonPalette_Lombre, 296
obj_pal gMonPalette_Ludicolo, 297
obj_pal gMonPalette_Seedot, 298
obj_pal gMonPalette_Nuzleaf, 299
obj_pal gMonPalette_Shiftry, 300
obj_pal gMonPalette_Nincada, 301
obj_pal gMonPalette_Ninjask, 302
obj_pal gMonPalette_Shedinja, 303
obj_pal gMonPalette_Taillow, 304
obj_pal gMonPalette_Swellow, 305
obj_pal gMonPalette_Shroomish, 306
obj_pal gMonPalette_Breloom, 307
obj_pal gMonPalette_Spinda, 308
obj_pal gMonPalette_Wingull, 309
obj_pal gMonPalette_Pelipper, 310
obj_pal gMonPalette_Surskit, 311
obj_pal gMonPalette_Masquerain, 312
obj_pal gMonPalette_Wailmer, 313
obj_pal gMonPalette_Wailord, 314
obj_pal gMonPalette_Skitty, 315
obj_pal gMonPalette_Delcatty, 316
obj_pal gMonPalette_Kecleon, 317
obj_pal gMonPalette_Baltoy, 318
obj_pal gMonPalette_Claydol, 319
obj_pal gMonPalette_Nosepass, 320
obj_pal gMonPalette_Torkoal, 321
obj_pal gMonPalette_Sableye, 322
obj_pal gMonPalette_Barboach, 323
obj_pal gMonPalette_Whiscash, 324
obj_pal gMonPalette_Luvdisc, 325
obj_pal gMonPalette_Corphish, 326
obj_pal gMonPalette_Crawdaunt, 327
obj_pal gMonPalette_Feebas, 328
obj_pal gMonPalette_Milotic, 329
obj_pal gMonPalette_Carvanha, 330
obj_pal gMonPalette_Sharpedo, 331
obj_pal gMonPalette_Trapinch, 332
obj_pal gMonPalette_Vibrava, 333
obj_pal gMonPalette_Flygon, 334
obj_pal gMonPalette_Makuhita, 335
obj_pal gMonPalette_Hariyama, 336
obj_pal gMonPalette_Electrike, 337
obj_pal gMonPalette_Manectric, 338
obj_pal gMonPalette_Numel, 339
obj_pal gMonPalette_Camerupt, 340
obj_pal gMonPalette_Spheal, 341
obj_pal gMonPalette_Sealeo, 342
obj_pal gMonPalette_Walrein, 343
obj_pal gMonPalette_Cacnea, 344
obj_pal gMonPalette_Cacturne, 345
obj_pal gMonPalette_Snorunt, 346
obj_pal gMonPalette_Glalie, 347
obj_pal gMonPalette_Lunatone, 348
obj_pal gMonPalette_Solrock, 349
obj_pal gMonPalette_Azurill, 350
obj_pal gMonPalette_Spoink, 351
obj_pal gMonPalette_Grumpig, 352
obj_pal gMonPalette_Plusle, 353
obj_pal gMonPalette_Minun, 354
obj_pal gMonPalette_Mawile, 355
obj_pal gMonPalette_Meditite, 356
obj_pal gMonPalette_Medicham, 357
obj_pal gMonPalette_Swablu, 358
obj_pal gMonPalette_Altaria, 359
obj_pal gMonPalette_Wynaut, 360
obj_pal gMonPalette_Duskull, 361
obj_pal gMonPalette_Dusclops, 362
obj_pal gMonPalette_Roselia, 363
obj_pal gMonPalette_Slakoth, 364
obj_pal gMonPalette_Vigoroth, 365
obj_pal gMonPalette_Slaking, 366
obj_pal gMonPalette_Gulpin, 367
obj_pal gMonPalette_Swalot, 368
obj_pal gMonPalette_Tropius, 369
obj_pal gMonPalette_Whismur, 370
obj_pal gMonPalette_Loudred, 371
obj_pal gMonPalette_Exploud, 372
obj_pal gMonPalette_Clamperl, 373
obj_pal gMonPalette_Huntail, 374
obj_pal gMonPalette_Gorebyss, 375
obj_pal gMonPalette_Absol, 376
obj_pal gMonPalette_Shuppet, 377
obj_pal gMonPalette_Banette, 378
obj_pal gMonPalette_Seviper, 379
obj_pal gMonPalette_Zangoose, 380
obj_pal gMonPalette_Relicanth, 381
obj_pal gMonPalette_Aron, 382
obj_pal gMonPalette_Lairon, 383
obj_pal gMonPalette_Aggron, 384
obj_pal gMonPalette_Castform, 385
obj_pal gMonPalette_Volbeat, 386
obj_pal gMonPalette_Illumise, 387
obj_pal gMonPalette_Lileep, 388
obj_pal gMonPalette_Cradily, 389
obj_pal gMonPalette_Anorith, 390
obj_pal gMonPalette_Armaldo, 391
obj_pal gMonPalette_Ralts, 392
obj_pal gMonPalette_Kirlia, 393
obj_pal gMonPalette_Gardevoir, 394
obj_pal gMonPalette_Bagon, 395
obj_pal gMonPalette_Shelgon, 396
obj_pal gMonPalette_Salamence, 397
obj_pal gMonPalette_Beldum, 398
obj_pal gMonPalette_Metang, 399
obj_pal gMonPalette_Metagross, 400
obj_pal gMonPalette_Regirock, 401
obj_pal gMonPalette_Regice, 402
obj_pal gMonPalette_Registeel, 403
obj_pal gMonPalette_Kyogre, 404
obj_pal gMonPalette_Groudon, 405
obj_pal gMonPalette_Rayquaza, 406
obj_pal gMonPalette_Latias, 407
obj_pal gMonPalette_Latios, 408
obj_pal gMonPalette_Jirachi, 409
obj_pal gMonPalette_Deoxys, 410
obj_pal gMonPalette_Chimecho, 411
obj_pal gMonPalette_Egg, 412
obj_pal gMonPalette_Unown, 413
obj_pal gMonPalette_Unown, 414
obj_pal gMonPalette_Unown, 415
obj_pal gMonPalette_Unown, 416
obj_pal gMonPalette_Unown, 417
obj_pal gMonPalette_Unown, 418
obj_pal gMonPalette_Unown, 419
obj_pal gMonPalette_Unown, 420
obj_pal gMonPalette_Unown, 421
obj_pal gMonPalette_Unown, 422
obj_pal gMonPalette_Unown, 423
obj_pal gMonPalette_Unown, 424
obj_pal gMonPalette_Unown, 425
obj_pal gMonPalette_Unown, 426
obj_pal gMonPalette_Unown, 427
obj_pal gMonPalette_Unown, 428
obj_pal gMonPalette_Unown, 429
obj_pal gMonPalette_Unown, 430
obj_pal gMonPalette_Unown, 431
obj_pal gMonPalette_Unown, 432
obj_pal gMonPalette_Unown, 433
obj_pal gMonPalette_Unown, 434
obj_pal gMonPalette_Unown, 435
obj_pal gMonPalette_Unown, 436
obj_pal gMonPalette_Unown, 437
obj_pal gMonPalette_Unown, 438
obj_pal gMonPalette_Unown, 439

View File

@ -0,0 +1,443 @@
.align 2
gMonShinyPaletteTable: ; 81EB374
obj_pal gMonShinyPalette_CircledQuestionMark, 500
obj_pal gMonShinyPalette_Bulbasaur, 501
obj_pal gMonShinyPalette_Ivysaur, 502
obj_pal gMonShinyPalette_Venusaur, 503
obj_pal gMonShinyPalette_Charmander, 504
obj_pal gMonShinyPalette_Charmeleon, 505
obj_pal gMonShinyPalette_Charizard, 506
obj_pal gMonShinyPalette_Squirtle, 507
obj_pal gMonShinyPalette_Wartortle, 508
obj_pal gMonShinyPalette_Blastoise, 509
obj_pal gMonShinyPalette_Caterpie, 510
obj_pal gMonShinyPalette_Metapod, 511
obj_pal gMonShinyPalette_Butterfree, 512
obj_pal gMonShinyPalette_Weedle, 513
obj_pal gMonShinyPalette_Kakuna, 514
obj_pal gMonShinyPalette_Beedrill, 515
obj_pal gMonShinyPalette_Pidgey, 516
obj_pal gMonShinyPalette_Pidgeotto, 517
obj_pal gMonShinyPalette_Pidgeot, 518
obj_pal gMonShinyPalette_Rattata, 519
obj_pal gMonShinyPalette_Raticate, 520
obj_pal gMonShinyPalette_Spearow, 521
obj_pal gMonShinyPalette_Fearow, 522
obj_pal gMonShinyPalette_Ekans, 523
obj_pal gMonShinyPalette_Arbok, 524
obj_pal gMonShinyPalette_Pikachu, 525
obj_pal gMonShinyPalette_Raichu, 526
obj_pal gMonShinyPalette_Sandshrew, 527
obj_pal gMonShinyPalette_Sandslash, 528
obj_pal gMonShinyPalette_NidoranF, 529
obj_pal gMonShinyPalette_Nidorina, 530
obj_pal gMonShinyPalette_Nidoqueen, 531
obj_pal gMonShinyPalette_NidoranM, 532
obj_pal gMonShinyPalette_Nidorino, 533
obj_pal gMonShinyPalette_Nidoking, 534
obj_pal gMonShinyPalette_Clefairy, 535
obj_pal gMonShinyPalette_Clefable, 536
obj_pal gMonShinyPalette_Vulpix, 537
obj_pal gMonShinyPalette_Ninetales, 538
obj_pal gMonShinyPalette_Jigglypuff, 539
obj_pal gMonShinyPalette_Wigglytuff, 540
obj_pal gMonShinyPalette_Zubat, 541
obj_pal gMonShinyPalette_Golbat, 542
obj_pal gMonShinyPalette_Oddish, 543
obj_pal gMonShinyPalette_Gloom, 544
obj_pal gMonShinyPalette_Vileplume, 545
obj_pal gMonShinyPalette_Paras, 546
obj_pal gMonShinyPalette_Parasect, 547
obj_pal gMonShinyPalette_Venonat, 548
obj_pal gMonShinyPalette_Venomoth, 549
obj_pal gMonShinyPalette_Diglett, 550
obj_pal gMonShinyPalette_Dugtrio, 551
obj_pal gMonShinyPalette_Meowth, 552
obj_pal gMonShinyPalette_Persian, 553
obj_pal gMonShinyPalette_Psyduck, 554
obj_pal gMonShinyPalette_Golduck, 555
obj_pal gMonShinyPalette_Mankey, 556
obj_pal gMonShinyPalette_Primeape, 557
obj_pal gMonShinyPalette_Growlithe, 558
obj_pal gMonShinyPalette_Arcanine, 559
obj_pal gMonShinyPalette_Poliwag, 560
obj_pal gMonShinyPalette_Poliwhirl, 561
obj_pal gMonShinyPalette_Poliwrath, 562
obj_pal gMonShinyPalette_Abra, 563
obj_pal gMonShinyPalette_Kadabra, 564
obj_pal gMonShinyPalette_Alakazam, 565
obj_pal gMonShinyPalette_Machop, 566
obj_pal gMonShinyPalette_Machoke, 567
obj_pal gMonShinyPalette_Machamp, 568
obj_pal gMonShinyPalette_Bellsprout, 569
obj_pal gMonShinyPalette_Weepinbell, 570
obj_pal gMonShinyPalette_Victreebel, 571
obj_pal gMonShinyPalette_Tentacool, 572
obj_pal gMonShinyPalette_Tentacruel, 573
obj_pal gMonShinyPalette_Geodude, 574
obj_pal gMonShinyPalette_Graveler, 575
obj_pal gMonShinyPalette_Golem, 576
obj_pal gMonShinyPalette_Ponyta, 577
obj_pal gMonShinyPalette_Rapidash, 578
obj_pal gMonShinyPalette_Slowpoke, 579
obj_pal gMonShinyPalette_Slowbro, 580
obj_pal gMonShinyPalette_Magnemite, 581
obj_pal gMonShinyPalette_Magneton, 582
obj_pal gMonShinyPalette_Farfetchd, 583
obj_pal gMonShinyPalette_Doduo, 584
obj_pal gMonShinyPalette_Dodrio, 585
obj_pal gMonShinyPalette_Seel, 586
obj_pal gMonShinyPalette_Dewgong, 587
obj_pal gMonShinyPalette_Grimer, 588
obj_pal gMonShinyPalette_Muk, 589
obj_pal gMonShinyPalette_Shellder, 590
obj_pal gMonShinyPalette_Cloyster, 591
obj_pal gMonShinyPalette_Gastly, 592
obj_pal gMonShinyPalette_Haunter, 593
obj_pal gMonShinyPalette_Gengar, 594
obj_pal gMonShinyPalette_Onix, 595
obj_pal gMonShinyPalette_Drowzee, 596
obj_pal gMonShinyPalette_Hypno, 597
obj_pal gMonShinyPalette_Krabby, 598
obj_pal gMonShinyPalette_Kingler, 599
obj_pal gMonShinyPalette_Voltorb, 600
obj_pal gMonShinyPalette_Electrode, 601
obj_pal gMonShinyPalette_Exeggcute, 602
obj_pal gMonShinyPalette_Exeggutor, 603
obj_pal gMonShinyPalette_Cubone, 604
obj_pal gMonShinyPalette_Marowak, 605
obj_pal gMonShinyPalette_Hitmonlee, 606
obj_pal gMonShinyPalette_Hitmonchan, 607
obj_pal gMonShinyPalette_Lickitung, 608
obj_pal gMonShinyPalette_Koffing, 609
obj_pal gMonShinyPalette_Weezing, 610
obj_pal gMonShinyPalette_Rhyhorn, 611
obj_pal gMonShinyPalette_Rhydon, 612
obj_pal gMonShinyPalette_Chansey, 613
obj_pal gMonShinyPalette_Tangela, 614
obj_pal gMonShinyPalette_Kangaskhan, 615
obj_pal gMonShinyPalette_Horsea, 616
obj_pal gMonShinyPalette_Seadra, 617
obj_pal gMonShinyPalette_Goldeen, 618
obj_pal gMonShinyPalette_Seaking, 619
obj_pal gMonShinyPalette_Staryu, 620
obj_pal gMonShinyPalette_Starmie, 621
obj_pal gMonShinyPalette_Mrmime, 622
obj_pal gMonShinyPalette_Scyther, 623
obj_pal gMonShinyPalette_Jynx, 624
obj_pal gMonShinyPalette_Electabuzz, 625
obj_pal gMonShinyPalette_Magmar, 626
obj_pal gMonShinyPalette_Pinsir, 627
obj_pal gMonShinyPalette_Tauros, 628
obj_pal gMonShinyPalette_Magikarp, 629
obj_pal gMonShinyPalette_Gyarados, 630
obj_pal gMonShinyPalette_Lapras, 631
obj_pal gMonShinyPalette_Ditto, 632
obj_pal gMonShinyPalette_Eevee, 633
obj_pal gMonShinyPalette_Vaporeon, 634
obj_pal gMonShinyPalette_Jolteon, 635
obj_pal gMonShinyPalette_Flareon, 636
obj_pal gMonShinyPalette_Porygon, 637
obj_pal gMonShinyPalette_Omanyte, 638
obj_pal gMonShinyPalette_Omastar, 639
obj_pal gMonShinyPalette_Kabuto, 640
obj_pal gMonShinyPalette_Kabutops, 641
obj_pal gMonShinyPalette_Aerodactyl, 642
obj_pal gMonShinyPalette_Snorlax, 643
obj_pal gMonShinyPalette_Articuno, 644
obj_pal gMonShinyPalette_Zapdos, 645
obj_pal gMonShinyPalette_Moltres, 646
obj_pal gMonShinyPalette_Dratini, 647
obj_pal gMonShinyPalette_Dragonair, 648
obj_pal gMonShinyPalette_Dragonite, 649
obj_pal gMonShinyPalette_Mewtwo, 650
obj_pal gMonShinyPalette_Mew, 651
obj_pal gMonShinyPalette_Chikorita, 652
obj_pal gMonShinyPalette_Bayleef, 653
obj_pal gMonShinyPalette_Meganium, 654
obj_pal gMonShinyPalette_Cyndaquil, 655
obj_pal gMonShinyPalette_Quilava, 656
obj_pal gMonShinyPalette_Typhlosion, 657
obj_pal gMonShinyPalette_Totodile, 658
obj_pal gMonShinyPalette_Croconaw, 659
obj_pal gMonShinyPalette_Feraligatr, 660
obj_pal gMonShinyPalette_Sentret, 661
obj_pal gMonShinyPalette_Furret, 662
obj_pal gMonShinyPalette_Hoothoot, 663
obj_pal gMonShinyPalette_Noctowl, 664
obj_pal gMonShinyPalette_Ledyba, 665
obj_pal gMonShinyPalette_Ledian, 666
obj_pal gMonShinyPalette_Spinarak, 667
obj_pal gMonShinyPalette_Ariados, 668
obj_pal gMonShinyPalette_Crobat, 669
obj_pal gMonShinyPalette_Chinchou, 670
obj_pal gMonShinyPalette_Lanturn, 671
obj_pal gMonShinyPalette_Pichu, 672
obj_pal gMonShinyPalette_Cleffa, 673
obj_pal gMonShinyPalette_Igglybuff, 674
obj_pal gMonShinyPalette_Togepi, 675
obj_pal gMonShinyPalette_Togetic, 676
obj_pal gMonShinyPalette_Natu, 677
obj_pal gMonShinyPalette_Xatu, 678
obj_pal gMonShinyPalette_Mareep, 679
obj_pal gMonShinyPalette_Flaaffy, 680
obj_pal gMonShinyPalette_Ampharos, 681
obj_pal gMonShinyPalette_Bellossom, 682
obj_pal gMonShinyPalette_Marill, 683
obj_pal gMonShinyPalette_Azumarill, 684
obj_pal gMonShinyPalette_Sudowoodo, 685
obj_pal gMonShinyPalette_Politoed, 686
obj_pal gMonShinyPalette_Hoppip, 687
obj_pal gMonShinyPalette_Skiploom, 688
obj_pal gMonShinyPalette_Jumpluff, 689
obj_pal gMonShinyPalette_Aipom, 690
obj_pal gMonShinyPalette_Sunkern, 691
obj_pal gMonShinyPalette_Sunflora, 692
obj_pal gMonShinyPalette_Yanma, 693
obj_pal gMonShinyPalette_Wooper, 694
obj_pal gMonShinyPalette_Quagsire, 695
obj_pal gMonShinyPalette_Espeon, 696
obj_pal gMonShinyPalette_Umbreon, 697
obj_pal gMonShinyPalette_Murkrow, 698
obj_pal gMonShinyPalette_Slowking, 699
obj_pal gMonShinyPalette_Misdreavus, 700
obj_pal gMonShinyPalette_Unown, 701
obj_pal gMonShinyPalette_Wobbuffet, 702
obj_pal gMonShinyPalette_Girafarig, 703
obj_pal gMonShinyPalette_Pineco, 704
obj_pal gMonShinyPalette_Forretress, 705
obj_pal gMonShinyPalette_Dunsparce, 706
obj_pal gMonShinyPalette_Gligar, 707
obj_pal gMonShinyPalette_Steelix, 708
obj_pal gMonShinyPalette_Snubbull, 709
obj_pal gMonShinyPalette_Granbull, 710
obj_pal gMonShinyPalette_Qwilfish, 711
obj_pal gMonShinyPalette_Scizor, 712
obj_pal gMonShinyPalette_Shuckle, 713
obj_pal gMonShinyPalette_Heracross, 714
obj_pal gMonShinyPalette_Sneasel, 715
obj_pal gMonShinyPalette_Teddiursa, 716
obj_pal gMonShinyPalette_Ursaring, 717
obj_pal gMonShinyPalette_Slugma, 718
obj_pal gMonShinyPalette_Magcargo, 719
obj_pal gMonShinyPalette_Swinub, 720
obj_pal gMonShinyPalette_Piloswine, 721
obj_pal gMonShinyPalette_Corsola, 722
obj_pal gMonShinyPalette_Remoraid, 723
obj_pal gMonShinyPalette_Octillery, 724
obj_pal gMonShinyPalette_Delibird, 725
obj_pal gMonShinyPalette_Mantine, 726
obj_pal gMonShinyPalette_Skarmory, 727
obj_pal gMonShinyPalette_Houndour, 728
obj_pal gMonShinyPalette_Houndoom, 729
obj_pal gMonShinyPalette_Kingdra, 730
obj_pal gMonShinyPalette_Phanpy, 731
obj_pal gMonShinyPalette_Donphan, 732
obj_pal gMonShinyPalette_Porygon2, 733
obj_pal gMonShinyPalette_Stantler, 734
obj_pal gMonShinyPalette_Smeargle, 735
obj_pal gMonShinyPalette_Tyrogue, 736
obj_pal gMonShinyPalette_Hitmontop, 737
obj_pal gMonShinyPalette_Smoochum, 738
obj_pal gMonShinyPalette_Elekid, 739
obj_pal gMonShinyPalette_Magby, 740
obj_pal gMonShinyPalette_Miltank, 741
obj_pal gMonShinyPalette_Blissey, 742
obj_pal gMonShinyPalette_Raikou, 743
obj_pal gMonShinyPalette_Entei, 744
obj_pal gMonShinyPalette_Suicune, 745
obj_pal gMonShinyPalette_Larvitar, 746
obj_pal gMonShinyPalette_Pupitar, 747
obj_pal gMonShinyPalette_Tyranitar, 748
obj_pal gMonShinyPalette_Lugia, 749
obj_pal gMonShinyPalette_HoOh, 750
obj_pal gMonShinyPalette_Celebi, 751
obj_pal gMonShinyPalette_DoubleQuestionMark, 752
obj_pal gMonShinyPalette_DoubleQuestionMark, 753
obj_pal gMonShinyPalette_DoubleQuestionMark, 754
obj_pal gMonShinyPalette_DoubleQuestionMark, 755
obj_pal gMonShinyPalette_DoubleQuestionMark, 756
obj_pal gMonShinyPalette_DoubleQuestionMark, 757
obj_pal gMonShinyPalette_DoubleQuestionMark, 758
obj_pal gMonShinyPalette_DoubleQuestionMark, 759
obj_pal gMonShinyPalette_DoubleQuestionMark, 760
obj_pal gMonShinyPalette_DoubleQuestionMark, 761
obj_pal gMonShinyPalette_DoubleQuestionMark, 762
obj_pal gMonShinyPalette_DoubleQuestionMark, 763
obj_pal gMonShinyPalette_DoubleQuestionMark, 764
obj_pal gMonShinyPalette_DoubleQuestionMark, 765
obj_pal gMonShinyPalette_DoubleQuestionMark, 766
obj_pal gMonShinyPalette_DoubleQuestionMark, 767
obj_pal gMonShinyPalette_DoubleQuestionMark, 768
obj_pal gMonShinyPalette_DoubleQuestionMark, 769
obj_pal gMonShinyPalette_DoubleQuestionMark, 770
obj_pal gMonShinyPalette_DoubleQuestionMark, 771
obj_pal gMonShinyPalette_DoubleQuestionMark, 772
obj_pal gMonShinyPalette_DoubleQuestionMark, 773
obj_pal gMonShinyPalette_DoubleQuestionMark, 774
obj_pal gMonShinyPalette_DoubleQuestionMark, 775
obj_pal gMonShinyPalette_DoubleQuestionMark, 776
obj_pal gMonShinyPalette_Treecko, 777
obj_pal gMonShinyPalette_Grovyle, 778
obj_pal gMonShinyPalette_Sceptile, 779
obj_pal gMonShinyPalette_Torchic, 780
obj_pal gMonShinyPalette_Combusken, 781
obj_pal gMonShinyPalette_Blaziken, 782
obj_pal gMonShinyPalette_Mudkip, 783
obj_pal gMonShinyPalette_Marshtomp, 784
obj_pal gMonShinyPalette_Swampert, 785
obj_pal gMonShinyPalette_Poochyena, 786
obj_pal gMonShinyPalette_Mightyena, 787
obj_pal gMonShinyPalette_Zigzagoon, 788
obj_pal gMonShinyPalette_Linoone, 789
obj_pal gMonShinyPalette_Wurmple, 790
obj_pal gMonShinyPalette_Silcoon, 791
obj_pal gMonShinyPalette_Beautifly, 792
obj_pal gMonShinyPalette_Cascoon, 793
obj_pal gMonShinyPalette_Dustox, 794
obj_pal gMonShinyPalette_Lotad, 795
obj_pal gMonShinyPalette_Lombre, 796
obj_pal gMonShinyPalette_Ludicolo, 797
obj_pal gMonShinyPalette_Seedot, 798
obj_pal gMonShinyPalette_Nuzleaf, 799
obj_pal gMonShinyPalette_Shiftry, 800
obj_pal gMonShinyPalette_Nincada, 801
obj_pal gMonShinyPalette_Ninjask, 802
obj_pal gMonShinyPalette_Shedinja, 803
obj_pal gMonShinyPalette_Taillow, 804
obj_pal gMonShinyPalette_Swellow, 805
obj_pal gMonShinyPalette_Shroomish, 806
obj_pal gMonShinyPalette_Breloom, 807
obj_pal gMonShinyPalette_Spinda, 808
obj_pal gMonShinyPalette_Wingull, 809
obj_pal gMonShinyPalette_Pelipper, 810
obj_pal gMonShinyPalette_Surskit, 811
obj_pal gMonShinyPalette_Masquerain, 812
obj_pal gMonShinyPalette_Wailmer, 813
obj_pal gMonShinyPalette_Wailord, 814
obj_pal gMonShinyPalette_Skitty, 815
obj_pal gMonShinyPalette_Delcatty, 816
obj_pal gMonShinyPalette_Kecleon, 817
obj_pal gMonShinyPalette_Baltoy, 818
obj_pal gMonShinyPalette_Claydol, 819
obj_pal gMonShinyPalette_Nosepass, 820
obj_pal gMonShinyPalette_Torkoal, 821
obj_pal gMonShinyPalette_Sableye, 822
obj_pal gMonShinyPalette_Barboach, 823
obj_pal gMonShinyPalette_Whiscash, 824
obj_pal gMonShinyPalette_Luvdisc, 825
obj_pal gMonShinyPalette_Corphish, 826
obj_pal gMonShinyPalette_Crawdaunt, 827
obj_pal gMonShinyPalette_Feebas, 828
obj_pal gMonShinyPalette_Milotic, 829
obj_pal gMonShinyPalette_Carvanha, 830
obj_pal gMonShinyPalette_Sharpedo, 831
obj_pal gMonShinyPalette_Trapinch, 832
obj_pal gMonShinyPalette_Vibrava, 833
obj_pal gMonShinyPalette_Flygon, 834
obj_pal gMonShinyPalette_Makuhita, 835
obj_pal gMonShinyPalette_Hariyama, 836
obj_pal gMonShinyPalette_Electrike, 837
obj_pal gMonShinyPalette_Manectric, 838
obj_pal gMonShinyPalette_Numel, 839
obj_pal gMonShinyPalette_Camerupt, 840
obj_pal gMonShinyPalette_Spheal, 841
obj_pal gMonShinyPalette_Sealeo, 842
obj_pal gMonShinyPalette_Walrein, 843
obj_pal gMonShinyPalette_Cacnea, 844
obj_pal gMonShinyPalette_Cacturne, 845
obj_pal gMonShinyPalette_Snorunt, 846
obj_pal gMonShinyPalette_Glalie, 847
obj_pal gMonShinyPalette_Lunatone, 848
obj_pal gMonShinyPalette_Solrock, 849
obj_pal gMonShinyPalette_Azurill, 850
obj_pal gMonShinyPalette_Spoink, 851
obj_pal gMonShinyPalette_Grumpig, 852
obj_pal gMonShinyPalette_Plusle, 853
obj_pal gMonShinyPalette_Minun, 854
obj_pal gMonShinyPalette_Mawile, 855
obj_pal gMonShinyPalette_Meditite, 856
obj_pal gMonShinyPalette_Medicham, 857
obj_pal gMonShinyPalette_Swablu, 858
obj_pal gMonShinyPalette_Altaria, 859
obj_pal gMonShinyPalette_Wynaut, 860
obj_pal gMonShinyPalette_Duskull, 861
obj_pal gMonShinyPalette_Dusclops, 862
obj_pal gMonShinyPalette_Roselia, 863
obj_pal gMonShinyPalette_Slakoth, 864
obj_pal gMonShinyPalette_Vigoroth, 865
obj_pal gMonShinyPalette_Slaking, 866
obj_pal gMonShinyPalette_Gulpin, 867
obj_pal gMonShinyPalette_Swalot, 868
obj_pal gMonShinyPalette_Tropius, 869
obj_pal gMonShinyPalette_Whismur, 870
obj_pal gMonShinyPalette_Loudred, 871
obj_pal gMonShinyPalette_Exploud, 872
obj_pal gMonShinyPalette_Clamperl, 873
obj_pal gMonShinyPalette_Huntail, 874
obj_pal gMonShinyPalette_Gorebyss, 875
obj_pal gMonShinyPalette_Absol, 876
obj_pal gMonShinyPalette_Shuppet, 877
obj_pal gMonShinyPalette_Banette, 878
obj_pal gMonShinyPalette_Seviper, 879
obj_pal gMonShinyPalette_Zangoose, 880
obj_pal gMonShinyPalette_Relicanth, 881
obj_pal gMonShinyPalette_Aron, 882
obj_pal gMonShinyPalette_Lairon, 883
obj_pal gMonShinyPalette_Aggron, 884
obj_pal gMonShinyPalette_Castform, 885
obj_pal gMonShinyPalette_Volbeat, 886
obj_pal gMonShinyPalette_Illumise, 887
obj_pal gMonShinyPalette_Lileep, 888
obj_pal gMonShinyPalette_Cradily, 889
obj_pal gMonShinyPalette_Anorith, 890
obj_pal gMonShinyPalette_Armaldo, 891
obj_pal gMonShinyPalette_Ralts, 892
obj_pal gMonShinyPalette_Kirlia, 893
obj_pal gMonShinyPalette_Gardevoir, 894
obj_pal gMonShinyPalette_Bagon, 895
obj_pal gMonShinyPalette_Shelgon, 896
obj_pal gMonShinyPalette_Salamence, 897
obj_pal gMonShinyPalette_Beldum, 898
obj_pal gMonShinyPalette_Metang, 899
obj_pal gMonShinyPalette_Metagross, 900
obj_pal gMonShinyPalette_Regirock, 901
obj_pal gMonShinyPalette_Regice, 902
obj_pal gMonShinyPalette_Registeel, 903
obj_pal gMonShinyPalette_Kyogre, 904
obj_pal gMonShinyPalette_Groudon, 905
obj_pal gMonShinyPalette_Rayquaza, 906
obj_pal gMonShinyPalette_Latias, 907
obj_pal gMonShinyPalette_Latios, 908
obj_pal gMonShinyPalette_Jirachi, 909
obj_pal gMonShinyPalette_Deoxys, 910
obj_pal gMonShinyPalette_Chimecho, 911
obj_pal gMonPalette_Egg, 912
obj_pal gMonShinyPalette_Unown, 913
obj_pal gMonShinyPalette_Unown, 914
obj_pal gMonShinyPalette_Unown, 915
obj_pal gMonShinyPalette_Unown, 916
obj_pal gMonShinyPalette_Unown, 917
obj_pal gMonShinyPalette_Unown, 918
obj_pal gMonShinyPalette_Unown, 919
obj_pal gMonShinyPalette_Unown, 920
obj_pal gMonShinyPalette_Unown, 921
obj_pal gMonShinyPalette_Unown, 922
obj_pal gMonShinyPalette_Unown, 923
obj_pal gMonShinyPalette_Unown, 924
obj_pal gMonShinyPalette_Unown, 925
obj_pal gMonShinyPalette_Unown, 926
obj_pal gMonShinyPalette_Unown, 927
obj_pal gMonShinyPalette_Unown, 928
obj_pal gMonShinyPalette_Unown, 929
obj_pal gMonShinyPalette_Unown, 930
obj_pal gMonShinyPalette_Unown, 931
obj_pal gMonShinyPalette_Unown, 932
obj_pal gMonShinyPalette_Unown, 933
obj_pal gMonShinyPalette_Unown, 934
obj_pal gMonShinyPalette_Unown, 935
obj_pal gMonShinyPalette_Unown, 936
obj_pal gMonShinyPalette_Unown, 937
obj_pal gMonShinyPalette_Unown, 938
obj_pal gMonShinyPalette_Unown, 939

28
fix_local_labels.pl Normal file
View File

@ -0,0 +1,28 @@
use strict;
use warnings;
open(IN_FILE, $ARGV[0]);
open(OUT_FILE, ">", $ARGV[1]);
my @labels = ();
while (<IN_FILE>) {
if ($_ =~ /^\.(.+):/) {
push(@labels, $1);
}
}
seek IN_FILE, 0, 0;
while (<IN_FILE>) {
for (my $i = 0; $i < scalar(@labels); $i++) {
my $find = quotemeta '.' . $labels[$i];
my $replace = '$' . $labels[$i];
$_ =~ s/$find/$replace/;
}
print OUT_FILE $_;
}
close(IN_FILE);
close(OUT_FILE);

25
graphics_file_rules.mk Normal file
View File

@ -0,0 +1,25 @@
CASTFORMGFXDIR := graphics/pokemon/castform
$(CASTFORMGFXDIR)/back.4bpp: $(CASTFORMGFXDIR)/back_normal_form.4bpp \
$(CASTFORMGFXDIR)/back_sunny_form.4bpp \
$(CASTFORMGFXDIR)/back_rainy_form.4bpp \
$(CASTFORMGFXDIR)/back_snowy_form.4bpp
@cat $(CASTFORMGFXDIR)/back_normal_form.4bpp $(CASTFORMGFXDIR)/back_sunny_form.4bpp $(CASTFORMGFXDIR)/back_rainy_form.4bpp $(CASTFORMGFXDIR)/back_snowy_form.4bpp >$@
$(CASTFORMGFXDIR)/front.4bpp: $(CASTFORMGFXDIR)/front_normal_form.4bpp \
$(CASTFORMGFXDIR)/front_sunny_form.4bpp \
$(CASTFORMGFXDIR)/front_rainy_form.4bpp \
$(CASTFORMGFXDIR)/front_snowy_form.4bpp
@cat $(CASTFORMGFXDIR)/front_normal_form.4bpp $(CASTFORMGFXDIR)/front_sunny_form.4bpp $(CASTFORMGFXDIR)/front_rainy_form.4bpp $(CASTFORMGFXDIR)/front_snowy_form.4bpp >$@
$(CASTFORMGFXDIR)/normal.gbapal: $(CASTFORMGFXDIR)/normal_form.gbapal \
$(CASTFORMGFXDIR)/sunny_form.gbapal \
$(CASTFORMGFXDIR)/rainy_form.gbapal \
$(CASTFORMGFXDIR)/snowy_form.gbapal
@cat $(CASTFORMGFXDIR)/normal_form.gbapal $(CASTFORMGFXDIR)/sunny_form.gbapal $(CASTFORMGFXDIR)/rainy_form.gbapal $(CASTFORMGFXDIR)/snowy_form.gbapal >$@
$(CASTFORMGFXDIR)/shiny.gbapal: $(CASTFORMGFXDIR)/normal_form_shiny.gbapal \
$(CASTFORMGFXDIR)/sunny_form_shiny.gbapal \
$(CASTFORMGFXDIR)/rainy_form_shiny.gbapal \
$(CASTFORMGFXDIR)/snowy_form_shiny.gbapal
@cat $(CASTFORMGFXDIR)/normal_form_shiny.gbapal $(CASTFORMGFXDIR)/sunny_form_shiny.gbapal $(CASTFORMGFXDIR)/rainy_form_shiny.gbapal $(CASTFORMGFXDIR)/snowy_form_shiny.gbapal >$@

1
rom.sha1 Normal file
View File

@ -0,0 +1 @@
f28b6ffc97847e94a6c21a63cacf633ee5c8df1e pokeruby.gba

1
tools/gbagfx/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
gbagfx

19
tools/gbagfx/LICENSE Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 2015 YamaArashi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

15
tools/gbagfx/Makefile Normal file
View File

@ -0,0 +1,15 @@
CC = gcc
CFLAGS = -Wall -Wextra -std=c11 -O2
LIBS = -lz -lpng
SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c util.c font.c
.PHONY: clean
gbagfx: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h util.h font.h
$(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS)
clean:
$(RM) gbagfx gbagfx.exe

169
tools/gbagfx/convert_png.c Normal file
View File

@ -0,0 +1,169 @@
// Copyright (c) 2015 YamaArashi
#include <stdio.h>
#include <setjmp.h>
#include <png.h>
#include "global.h"
#include "convert_png.h"
#include "gfx.h"
void ReadPng(char *path, struct Image *image)
{
FILE *fp = fopen(path, "rb");
if (fp == NULL)
FATAL_ERROR("Failed to open \"%s\" for reading.\n", path);
unsigned char sig[8];
if (fread(sig, 8, 1, fp) != 1)
FATAL_ERROR("Failed to read PNG signature from \"%s\".\n", path);
if (png_sig_cmp(sig, 0, 8))
FATAL_ERROR("\"%s\" does not have a valid PNG signature.\n", path);
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (!png_ptr)
FATAL_ERROR("Failed to create PNG read struct.\n");
png_infop info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr)
FATAL_ERROR("Failed to create PNG info struct.\n");
if (setjmp(png_jmpbuf(png_ptr)))
FATAL_ERROR("Failed to init I/O for reading \"%s\".\n", path);
png_init_io(png_ptr, fp);
png_set_sig_bytes(png_ptr, 8);
png_read_info(png_ptr, info_ptr);
int bit_depth = png_get_bit_depth(png_ptr, info_ptr);
if (bit_depth != image->bitDepth)
FATAL_ERROR("\"%s\" has a bit depth of %d, but the expected bit depth is %d.\n", path, bit_depth, image->bitDepth);
int color_type = png_get_color_type(png_ptr, info_ptr);
if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE)
FATAL_ERROR("\"%s\" has an unsupported color type.\n", path);
// Check if the image has a palette so that we can tell if the colors need to be inverted later.
// Don't read the palette because it's not needed for now.
image->hasPalette = (color_type == PNG_COLOR_TYPE_PALETTE);
image->width = png_get_image_width(png_ptr, info_ptr);
image->height = png_get_image_height(png_ptr, info_ptr);
int rowbytes = png_get_rowbytes(png_ptr, info_ptr);
image->pixels = malloc(image->height * rowbytes);
if (image->pixels == NULL)
FATAL_ERROR("Failed to allocate pixel buffer.\n");
png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep));
if (row_pointers == NULL)
FATAL_ERROR("Failed to allocate row pointers.\n");
for (int i = 0; i < image->height; i++)
row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes));
if (setjmp(png_jmpbuf(png_ptr)))
FATAL_ERROR("Error reading from \"%s\".\n", path);
png_read_image(png_ptr, row_pointers);
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
free(row_pointers);
fclose(fp);
}
void SetPngPalette(png_structp png_ptr, png_infop info_ptr, struct Palette *palette)
{
png_colorp colors = malloc(palette->numColors * sizeof(png_color));
if (colors == NULL)
FATAL_ERROR("Failed to allocate PNG palette.\n");
for (int i = 0; i < palette->numColors; i++) {
colors[i].red = palette->colors[i].red;
colors[i].green = palette->colors[i].green;
colors[i].blue = palette->colors[i].blue;
}
png_set_PLTE(png_ptr, info_ptr, colors, palette->numColors);
free(colors);
}
void WritePng(char *path, struct Image *image)
{
FILE *fp = fopen(path, "wb");
if (fp == NULL)
FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (!png_ptr)
FATAL_ERROR("Failed to create PNG write struct.\n");
png_infop info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr)
FATAL_ERROR("Failed to create PNG info struct.\n");
if (setjmp(png_jmpbuf(png_ptr)))
FATAL_ERROR("Failed to init I/O for writing \"%s\".\n", path);
png_init_io(png_ptr, fp);
if (setjmp(png_jmpbuf(png_ptr)))
FATAL_ERROR("Error writing header for \"%s\".\n", path);
int color_type = image->hasPalette ? PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY;
png_set_IHDR(png_ptr, info_ptr, image->width, image->height,
image->bitDepth, color_type, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
if (image->hasPalette) {
SetPngPalette(png_ptr, info_ptr, &image->palette);
if (image->hasTransparency) {
png_byte trans = 0;
png_set_tRNS(png_ptr, info_ptr, &trans, 1, 0);
}
}
png_write_info(png_ptr, info_ptr);
png_bytepp row_pointers = malloc(image->height * sizeof(png_bytep));
if (row_pointers == NULL)
FATAL_ERROR("Failed to allocate row pointers.\n");
int rowbytes = png_get_rowbytes(png_ptr, info_ptr);
for (int i = 0; i < image->height; i++)
row_pointers[i] = (png_bytep)(image->pixels + (i * rowbytes));
if (setjmp(png_jmpbuf(png_ptr)))
FATAL_ERROR("Error writing \"%s\".\n", path);
png_write_image(png_ptr, row_pointers);
if (setjmp(png_jmpbuf(png_ptr)))
FATAL_ERROR("Error ending write of \"%s\".\n", path);
png_write_end(png_ptr, NULL);
fclose(fp);
png_destroy_write_struct(&png_ptr, &info_ptr);
free(row_pointers);
}

View File

@ -0,0 +1,11 @@
// Copyright (c) 2015 YamaArashi
#ifndef CONVERT_PNG_H
#define CONVERT_PNG_H
#include "gfx.h"
void ReadPng(char *path, struct Image *image);
void WritePng(char *path, struct Image *image);
#endif // CONVERT_PNG_H

326
tools/gbagfx/font.c Normal file
View File

@ -0,0 +1,326 @@
// Copyright (c) 2015 YamaArashi
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include "global.h"
#include "font.h"
#include "gfx.h"
#include "util.h"
unsigned char gFontPalette[][3] = {
{0x90, 0xC8, 0xFF}, // bg (saturated blue that contrasts well with the shadow color)
{0x38, 0x38, 0x38}, // fg (dark grey)
{0xD8, 0xD8, 0xD8}, // shadow (light grey)
{0xFF, 0xFF, 0xFF} // box (white)
};
static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
{
unsigned int srcPixelsOffset = 0;
for (unsigned int row = 0; row < numRows; row++) {
for (unsigned int column = 0; column < 16; column++) {
for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
for (unsigned int i = 0; i < 8; i++) {
unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
srcPixelsOffset += 2;
}
}
}
}
}
static void ConvertToLatinFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
{
unsigned int destPixelsOffset = 0;
for (unsigned int row = 0; row < numRows; row++) {
for (unsigned int column = 0; column < 16; column++) {
for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
for (unsigned int i = 0; i < 8; i++) {
unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
unsigned int srcPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
destPixelsOffset += 2;
}
}
}
}
}
static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
{
for (unsigned int row = 0; row < numRows; row++) {
for (unsigned int column = 0; column < 16; column++) {
unsigned int glyphIndex = (row * 16) + column;
for (unsigned int glyphTile = 0; glyphTile < 2; glyphTile++) {
unsigned int pixelsX = column * 8;
unsigned int srcPixelsOffset = 512 * (glyphIndex >> 4) + 16 * (glyphIndex & 0xF) + 256 * glyphTile;
for (unsigned int i = 0; i < 8; i++) {
unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i;
unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4);
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
srcPixelsOffset += 2;
}
}
}
}
}
static void ConvertToHalfwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
{
for (unsigned int row = 0; row < numRows; row++) {
for (unsigned int column = 0; column < 16; column++) {
unsigned int glyphIndex = (row * 16) + column;
for (unsigned int glyphTile = 0; glyphTile < 2; glyphTile++) {
unsigned int pixelsX = column * 8;
unsigned int destPixelsOffset = 512 * (glyphIndex >> 4) + 16 * (glyphIndex & 0xF) + 256 * glyphTile;
for (unsigned int i = 0; i < 8; i++) {
unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i;
unsigned int srcPixelsOffset = (pixelsY * 32) + (pixelsX / 4);
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
destPixelsOffset += 2;
}
}
}
}
}
static void ConvertFromFullwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
{
for (unsigned int row = 0; row < numRows; row++) {
for (unsigned int column = 0; column < 16; column++) {
unsigned int glyphIndex = (row * 16) + column;
for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
unsigned int srcPixelsOffset = 512 * (glyphIndex >> 3) + 32 * (glyphIndex & 7) + 256 * (glyphTile >> 1) + 16 * (glyphTile & 1);
for (unsigned int i = 0; i < 8; i++) {
unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
srcPixelsOffset += 2;
}
}
}
}
}
static void ConvertToFullwidthJapaneseFont(unsigned char *src, unsigned char *dest, unsigned int numRows)
{
for (unsigned int row = 0; row < numRows; row++) {
for (unsigned int column = 0; column < 16; column++) {
unsigned int glyphIndex = (row * 16) + column;
for (unsigned int glyphTile = 0; glyphTile < 4; glyphTile++) {
unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
unsigned int destPixelsOffset = 512 * (glyphIndex >> 3) + 32 * (glyphIndex & 7) + 256 * (glyphTile >> 1) + 16 * (glyphTile & 1);
for (unsigned int i = 0; i < 8; i++) {
unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
unsigned int srcPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
destPixelsOffset += 2;
}
}
}
}
}
static void SetFontPalette(struct Image *image)
{
image->hasPalette = true;
image->palette.numColors = 4;
for (int i = 0; i < image->palette.numColors; i++) {
image->palette.colors[i].red = gFontPalette[i][0];
image->palette.colors[i].green = gFontPalette[i][1];
image->palette.colors[i].blue = gFontPalette[i][2];
}
image->hasTransparency = false;
}
void ReadLatinFont(char *path, struct Image *image)
{
int fileSize;
unsigned char *buffer = ReadWholeFile(path, &fileSize);
int numGlyphs = fileSize / 64;
if (numGlyphs % 16 != 0)
FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
int numRows = numGlyphs / 16;
image->width = 256;
image->height = numRows * 16;
image->bitDepth = 2;
image->pixels = malloc(fileSize);
if (image->pixels == NULL)
FATAL_ERROR("Failed to allocate memory for font.\n");
ConvertFromLatinFont(buffer, image->pixels, numRows);
free(buffer);
SetFontPalette(image);
}
void WriteLatinFont(char *path, struct Image *image)
{
if (image->width != 256)
FATAL_ERROR("The width of the font image (%d) is not 256.\n", image->width);
if (image->height % 16 != 0)
FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height);
int numRows = image->height / 16;
int bufferSize = numRows * 16 * 64;
unsigned char *buffer = malloc(bufferSize);
if (buffer == NULL)
FATAL_ERROR("Failed to allocate memory for font.\n");
ConvertToLatinFont(image->pixels, buffer, numRows);
WriteWholeFile(path, buffer, bufferSize);
free(buffer);
}
void ReadHalfwidthJapaneseFont(char *path, struct Image *image)
{
int fileSize;
unsigned char *buffer = ReadWholeFile(path, &fileSize);
int glyphSize = 32;
if (fileSize % glyphSize != 0)
FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize);
int numGlyphs = fileSize / glyphSize;
if (numGlyphs % 16 != 0)
FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
int numRows = numGlyphs / 16;
image->width = 128;
image->height = numRows * 16;
image->bitDepth = 2;
image->pixels = malloc(fileSize);
if (image->pixels == NULL)
FATAL_ERROR("Failed to allocate memory for font.\n");
ConvertFromHalfwidthJapaneseFont(buffer, image->pixels, numRows);
free(buffer);
SetFontPalette(image);
}
void WriteHalfwidthJapaneseFont(char *path, struct Image *image)
{
if (image->width != 128)
FATAL_ERROR("The width of the font image (%d) is not 128.\n", image->width);
if (image->height % 16 != 0)
FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height);
int numRows = image->height / 16;
int bufferSize = numRows * 16 * 32;
unsigned char *buffer = malloc(bufferSize);
if (buffer == NULL)
FATAL_ERROR("Failed to allocate memory for font.\n");
ConvertToHalfwidthJapaneseFont(image->pixels, buffer, numRows);
WriteWholeFile(path, buffer, bufferSize);
free(buffer);
}
void ReadFullwidthJapaneseFont(char *path, struct Image *image)
{
int fileSize;
unsigned char *buffer = ReadWholeFile(path, &fileSize);
int numGlyphs = fileSize / 64;
if (numGlyphs % 16 != 0)
FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
int numRows = numGlyphs / 16;
image->width = 256;
image->height = numRows * 16;
image->bitDepth = 2;
image->pixels = malloc(fileSize);
if (image->pixels == NULL)
FATAL_ERROR("Failed to allocate memory for font.\n");
ConvertFromFullwidthJapaneseFont(buffer, image->pixels, numRows);
free(buffer);
SetFontPalette(image);
}
void WriteFullwidthJapaneseFont(char *path, struct Image *image)
{
if (image->width != 256)
FATAL_ERROR("The width of the font image (%d) is not 256.\n", image->width);
if (image->height % 16 != 0)
FATAL_ERROR("The height of the font image (%d) is not a multiple of 16.\n", image->height);
int numRows = image->height / 16;
int bufferSize = numRows * 16 * 64;
unsigned char *buffer = malloc(bufferSize);
if (buffer == NULL)
FATAL_ERROR("Failed to allocate memory for font.\n");
ConvertToFullwidthJapaneseFont(image->pixels, buffer, numRows);
WriteWholeFile(path, buffer, bufferSize);
free(buffer);
}

16
tools/gbagfx/font.h Normal file
View File

@ -0,0 +1,16 @@
// Copyright (c) 2015 YamaArashi
#ifndef FONT_H
#define FONT_H
#include <stdbool.h>
#include "gfx.h"
void ReadLatinFont(char *path, struct Image *image);
void WriteLatinFont(char *path, struct Image *image);
void ReadHalfwidthJapaneseFont(char *path, struct Image *image);
void WriteHalfwidthJapaneseFont(char *path, struct Image *image);
void ReadFullwidthJapaneseFont(char *path, struct Image *image);
void WriteFullwidthJapaneseFont(char *path, struct Image *image);
#endif // FONT_H

329
tools/gbagfx/gfx.c Normal file
View File

@ -0,0 +1,329 @@
// Copyright (c) 2015 YamaArashi
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include "global.h"
#include "gfx.h"
#include "util.h"
#define GET_GBA_PAL_RED(x) (((x) >> 0) & 0x1F)
#define GET_GBA_PAL_GREEN(x) (((x) >> 5) & 0x1F)
#define GET_GBA_PAL_BLUE(x) (((x) >> 10) & 0x1F)
#define SET_GBA_PAL(r, g, b) (((b) << 10) | ((g) << 5) | (r))
#define UPCONVERT_BIT_DEPTH(x) (((x) * 255) / 31)
#define DOWNCONVERT_BIT_DEPTH(x) ((x) / 8)
static void ConvertFromTiles1Bpp(unsigned char *src, unsigned char *dest, int numTiles, int tilesWidth, bool invertColors)
{
int tilesX = 0;
int tilesY = 0;
int pitch = tilesWidth;
for (int i = 0; i < numTiles; i++) {
for (int j = 0; j < 8; j++) {
int destY = tilesY * 8 + j;
int destX = tilesX;
unsigned char srcPixelOctet = *src++;
unsigned char *destPixelOctet = &dest[destY * pitch + destX];
for (int k = 0; k < 8; k++) {
*destPixelOctet <<= 1;
*destPixelOctet |= (srcPixelOctet & 1) ^ invertColors;
srcPixelOctet >>= 1;
}
}
tilesX++;
if (tilesX == tilesWidth) {
tilesX = 0;
tilesY++;
}
}
}
static void ConvertFromTiles4Bpp(unsigned char *src, unsigned char *dest, int numTiles, int tilesWidth, bool invertColors)
{
int tilesX = 0;
int tilesY = 0;
int pitch = tilesWidth * 4;
for (int i = 0; i < numTiles; i++) {
for (int j = 0; j < 8; j++) {
int destY = tilesY * 8 + j;
for (int k = 0; k < 4; k++) {
int destX = tilesX * 4 + k;
unsigned char srcPixelPair = *src++;
unsigned char leftPixel = srcPixelPair & 0xF;
unsigned char rightPixel = srcPixelPair >> 4;
if (invertColors) {
leftPixel = 15 - leftPixel;
rightPixel = 15 - rightPixel;
}
dest[destY * pitch + destX] = (leftPixel << 4) | rightPixel;
}
}
tilesX++;
if (tilesX == tilesWidth) {
tilesX = 0;
tilesY++;
}
}
}
static void ConvertFromTiles8Bpp(unsigned char *src, unsigned char *dest, int numTiles, int tilesWidth, bool invertColors)
{
int tilesX = 0;
int tilesY = 0;
int pitch = tilesWidth * 8;
for (int i = 0; i < numTiles; i++) {
for (int j = 0; j < 8; j++) {
int destY = tilesY * 8 + j;
for (int k = 0; k < 8; k++) {
int destX = tilesX * 8 + k;
unsigned char srcPixel = *src++;
if (invertColors)
srcPixel = 255 - srcPixel;
dest[destY * pitch + destX] = srcPixel;
}
}
tilesX++;
if (tilesX == tilesWidth) {
tilesX = 0;
tilesY++;
}
}
}
static void ConvertToTiles1Bpp(unsigned char *src, unsigned char *dest, int numTiles, int tilesWidth, bool invertColors)
{
int tilesX = 0;
int tilesY = 0;
int pitch = tilesWidth;
for (int i = 0; i < numTiles; i++) {
for (int j = 0; j < 8; j++) {
int srcY = tilesY * 8 + j;
int srcX = tilesX;
unsigned char srcPixelOctet = src[srcY * pitch + srcX];
unsigned char *destPixelOctet = dest++;
for (int k = 0; k < 8; k++) {
*destPixelOctet <<= 1;
*destPixelOctet |= (srcPixelOctet & 1) ^ invertColors;
srcPixelOctet >>= 1;
}
}
tilesX++;
if (tilesX == tilesWidth) {
tilesX = 0;
tilesY++;
}
}
}
static void ConvertToTiles4Bpp(unsigned char *src, unsigned char *dest, int numTiles, int tilesWidth, bool invertColors)
{
int tilesX = 0;
int tilesY = 0;
int pitch = tilesWidth * 4;
for (int i = 0; i < numTiles; i++) {
for (int j = 0; j < 8; j++) {
int srcY = tilesY * 8 + j;
for (int k = 0; k < 4; k++) {
int srcX = tilesX * 4 + k;
unsigned char srcPixelPair = src[srcY * pitch + srcX];
unsigned char leftPixel = srcPixelPair >> 4;
unsigned char rightPixel = srcPixelPair & 0xF;
if (invertColors) {
leftPixel = 15 - leftPixel;
rightPixel = 15 - rightPixel;
}
*dest++ = (rightPixel << 4) | leftPixel;
}
}
tilesX++;
if (tilesX == tilesWidth) {
tilesX = 0;
tilesY++;
}
}
}
static void ConvertToTiles8Bpp(unsigned char *src, unsigned char *dest, int numTiles, int tilesWidth, bool invertColors)
{
int tilesX = 0;
int tilesY = 0;
int pitch = tilesWidth * 8;
for (int i = 0; i < numTiles; i++) {
for (int j = 0; j < 8; j++) {
int srcY = tilesY * 8 + j;
for (int k = 0; k < 8; k++) {
int srcX = tilesX * 8 + k;
unsigned char srcPixel = src[srcY * pitch + srcX];
if (invertColors)
srcPixel = 255 - srcPixel;
*dest++ = srcPixel;
}
}
tilesX++;
if (tilesX == tilesWidth) {
tilesX = 0;
tilesY++;
}
}
}
void ReadImage(char *path, int tilesWidth, int bitDepth, struct Image *image, bool invertColors)
{
int tileSize = bitDepth * 8;
int fileSize;
unsigned char *buffer = ReadWholeFile(path, &fileSize);
int numTiles = fileSize / tileSize;
int tilesHeight = (numTiles + tilesWidth - 1) / tilesWidth;
image->width = tilesWidth * 8;
image->height = tilesHeight * 8;
image->bitDepth = bitDepth;
image->pixels = calloc(tilesWidth * tilesHeight, tileSize);
if (image->pixels == NULL)
FATAL_ERROR("Failed to allocate memory for pixels.\n");
switch (bitDepth) {
case 1:
ConvertFromTiles1Bpp(buffer, image->pixels, numTiles, tilesWidth, invertColors);
break;
case 4:
ConvertFromTiles4Bpp(buffer, image->pixels, numTiles, tilesWidth, invertColors);
break;
case 8:
ConvertFromTiles8Bpp(buffer, image->pixels, numTiles, tilesWidth, invertColors);
break;
}
free(buffer);
}
void WriteImage(char *path, int numTiles, int bitDepth, struct Image *image, bool invertColors)
{
int tileSize = bitDepth * 8;
if (image->width % 8 != 0)
FATAL_ERROR("The width in pixels (%d) isn't a multiple of 8.\n", image->width);
if (image->height % 8 != 0)
FATAL_ERROR("The height in pixels (%d) isn't a multiple of 8.\n", image->height);
int tilesWidth = image->width / 8;
int tilesHeight = image->height / 8;
int maxNumTiles = tilesWidth * tilesHeight;
if (numTiles == 0)
numTiles = maxNumTiles;
else if (numTiles > maxNumTiles)
FATAL_ERROR("The specified number of tiles (%d) is greater than the maximum possible value (%d).\n", numTiles, maxNumTiles);
int bufferSize = numTiles * tileSize;
unsigned char *buffer = malloc(bufferSize);
if (buffer == NULL)
FATAL_ERROR("Failed to allocate memory for pixels.\n");
switch (bitDepth) {
case 1:
ConvertToTiles1Bpp(image->pixels, buffer, numTiles, tilesWidth, invertColors);
break;
case 4:
ConvertToTiles4Bpp(image->pixels, buffer, numTiles, tilesWidth, invertColors);
break;
case 8:
ConvertToTiles8Bpp(image->pixels, buffer, numTiles, tilesWidth, invertColors);
break;
}
WriteWholeFile(path, buffer, bufferSize);
free(buffer);
}
void FreeImage(struct Image *image)
{
free(image->pixels);
image->pixels = NULL;
}
void ReadGbaPalette(char *path, struct Palette *palette)
{
int fileSize;
unsigned char *data = ReadWholeFile(path, &fileSize);
if (fileSize % 2 != 0)
FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize);
palette->numColors = fileSize / 2;
for (int i = 0; i < palette->numColors; i++) {
uint16_t paletteEntry = (data[i * 2 + 1] << 8) | data[i * 2];
palette->colors[i].red = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_RED(paletteEntry));
palette->colors[i].green = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_GREEN(paletteEntry));
palette->colors[i].blue = UPCONVERT_BIT_DEPTH(GET_GBA_PAL_BLUE(paletteEntry));
}
free(data);
}
void WriteGbaPalette(char *path, struct Palette *palette)
{
FILE *fp = fopen(path, "wb");
if (fp == NULL)
FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
for (int i = 0; i < palette->numColors; i++) {
unsigned char red = DOWNCONVERT_BIT_DEPTH(palette->colors[i].red);
unsigned char green = DOWNCONVERT_BIT_DEPTH(palette->colors[i].green);
unsigned char blue = DOWNCONVERT_BIT_DEPTH(palette->colors[i].blue);
uint16_t paletteEntry = SET_GBA_PAL(red, green, blue);
fputc(paletteEntry & 0xFF, fp);
fputc(paletteEntry >> 8, fp);
}
fclose(fp);
}

36
tools/gbagfx/gfx.h Normal file
View File

@ -0,0 +1,36 @@
// Copyright (c) 2015 YamaArashi
#ifndef GFX_H
#define GFX_H
#include <stdint.h>
#include <stdbool.h>
struct Color {
unsigned char red;
unsigned char green;
unsigned char blue;
};
struct Palette {
struct Color colors[256];
int numColors;
};
struct Image {
int width;
int height;
int bitDepth;
unsigned char *pixels;
bool hasPalette;
struct Palette palette;
bool hasTransparency;
};
void ReadImage(char *path, int tilesWidth, int bitDepth, struct Image *image, bool invertColors);
void WriteImage(char *path, int numTiles, int bitDepth, struct Image *image, bool invertColors);
void FreeImage(struct Image *image);
void ReadGbaPalette(char *path, struct Palette *palette);
void WriteGbaPalette(char *path, struct Palette *palette);
#endif // GFX_H

31
tools/gbagfx/global.h Normal file
View File

@ -0,0 +1,31 @@
// Copyright (c) 2015 YamaArashi
#ifndef GLOBAL_H
#define GLOBAL_H
#include <stdio.h>
#include <stdlib.h>
#ifdef _MSC_VER
#define FATAL_ERROR(format, ...) \
do { \
fprintf(stderr, format, __VA_ARGS__); \
exit(1); \
} while (0)
#define UNUSED
#else
#define FATAL_ERROR(format, ...) \
do { \
fprintf(stderr, format, ##__VA_ARGS__); \
exit(1); \
} while (0)
#define UNUSED __attribute__((__unused__))
#endif // _MSC_VER
#endif // GLOBAL_H

164
tools/gbagfx/jasc_pal.c Normal file
View File

@ -0,0 +1,164 @@
// Copyright (c) 2015 YamaArashi
#include <stdio.h>
#include <string.h>
#include "global.h"
#include "gfx.h"
#include "util.h"
// Read/write Paint Shop Pro palette files.
// Format of a Paint Shop Pro palette file, line by line:
// "JASC-PAL\r\n" (signature)
// "0100\r\n" (version; seems to always be "0100")
// "<NUMBER_OF_COLORS>\r\n" (number of colors in decimal)
//
// 16 or 256 times (depending on above line):
// "<RED> <GREEN> <BLUE>\r\n" (color entry)
//
// Each color component is a decimal number from 0 to 255.
// Examples:
// Black - "0 0 0\r\n"
// Blue - "0 0 255\r\n"
// Brown - "150 75 0\r\n"
#define MAX_LINE_LENGTH 11
void ReadJascPaletteLine(FILE *fp, char *line)
{
int c;
int length = 0;
for (;;) {
c = fgetc(fp);
if (c == '\r') {
c = fgetc(fp);
if (c != '\n')
FATAL_ERROR("CR line endings aren't supported.\n");
line[length] = 0;
return;
}
if (c == '\n')
FATAL_ERROR("LF line endings aren't supported.\n");
if (c == EOF)
FATAL_ERROR("Unexpected EOF. No CRLF at end of file.\n");
if (c == 0)
FATAL_ERROR("NUL character in file.\n");
if (length == MAX_LINE_LENGTH) {
line[length] = 0;
FATAL_ERROR("The line \"%s\" is too long.\n", line);
}
line[length++] = c;
}
}
void ReadJascPalette(char *path, struct Palette *palette)
{
char line[MAX_LINE_LENGTH + 1];
FILE *fp = fopen(path, "rb");
ReadJascPaletteLine(fp, line);
if (strcmp(line, "JASC-PAL") != 0)
FATAL_ERROR("Invalid JASC-PAL signature.\n");
ReadJascPaletteLine(fp, line);
if (strcmp(line, "0100") != 0)
FATAL_ERROR("Unsuported JASC-PAL version.\n");
ReadJascPaletteLine(fp, line);
if (!ParseNumber(line, NULL, 10, &palette->numColors))
FATAL_ERROR("Failed to parse number of colors.\n");
if (palette->numColors != 16 && palette->numColors != 256)
FATAL_ERROR("%d is an invalid number of colors. The number of colors must be 16 or 256.\n", palette->numColors);
for (int i = 0; i < palette->numColors; i++) {
ReadJascPaletteLine(fp, line);
char *s = line;
char *end;
int red;
int green;
int blue;
if (!ParseNumber(s, &end, 10, &red))
FATAL_ERROR("Failed to parse red color component.\n");
s = end;
if (*s != ' ')
FATAL_ERROR("Expected a space after red color component.\n");
s++;
if (*s < '0' || *s > '9')
FATAL_ERROR("Expected only a space between red and green color components.\n");
if (!ParseNumber(s, &end, 10, &green))
FATAL_ERROR("Failed to parse green color component.\n");
s = end;
if (*s != ' ')
FATAL_ERROR("Expected a space after green color component.\n");
s++;
if (*s < '0' || *s > '9')
FATAL_ERROR("Expected only a space between green and blue color components.\n");
if (!ParseNumber(s, &end, 10, &blue))
FATAL_ERROR("Failed to parse blue color component.\n");
if (*end != 0)
FATAL_ERROR("Garbage after blue color component.\n");
if (red < 0 || red > 255)
FATAL_ERROR("Red color component (%d) is outside the range [0, 255].\n", red);
if (green < 0 || green > 255)
FATAL_ERROR("Green color component (%d) is outside the range [0, 255].\n", green);
if (blue < 0 || blue > 255)
FATAL_ERROR("Blue color component (%d) is outside the range [0, 255].\n", blue);
palette->colors[i].red = red;
palette->colors[i].green = green;
palette->colors[i].blue = blue;
}
if (fgetc(fp) != EOF)
FATAL_ERROR("Garbage after color data.\n");
fclose(fp);
}
void WriteJascPalette(char *path, struct Palette *palette)
{
FILE *fp = fopen(path, "wb");
fputs("JASC-PAL\r\n", fp);
fputs("0100\r\n", fp);
fprintf(fp, "%d\r\n", palette->numColors);
for (int i = 0; i < palette->numColors; i++) {
struct Color *color = &palette->colors[i];
fprintf(fp, "%d %d %d\r\n", color->red, color->green, color->blue);
}
fclose(fp);
}

9
tools/gbagfx/jasc_pal.h Normal file
View File

@ -0,0 +1,9 @@
// Copyright (c) 2015 YamaArashi
#ifndef JASC_PAL_H
#define JASC_PAL_H
void ReadJascPalette(char *path, struct Palette *palette);
void WriteJascPalette(char *path, struct Palette *palette);
#endif // JASC_PAL_H

143
tools/gbagfx/lz.c Normal file
View File

@ -0,0 +1,143 @@
// Copyright (c) 2015 YamaArashi
#include <stdlib.h>
#include <stdbool.h>
#include "global.h"
#include "lz.h"
unsigned char *LZDecompress(unsigned char *src, int srcSize, int *uncompressedSize)
{
if (srcSize < 4)
return NULL;
int destSize = (src[3] << 16) | (src[2] << 8) | src[1];
unsigned char *dest = malloc(destSize);
if (dest == NULL)
return NULL;
int srcPos = 4;
int destPos = 0;
for (;;) {
if (srcPos >= srcSize)
return NULL;
unsigned char flags = src[srcPos++];
for (int i = 0; i < 8; i++) {
if (flags & 0x80) {
if (srcPos + 1 >= srcSize)
return NULL;
int blockSize = (src[srcPos] >> 4) + 3;
int blockDistance = (((src[srcPos] & 0xF) << 8) | src[srcPos + 1]) + 1;
srcPos += 2;
int blockPos = destPos - blockDistance;
if (destPos + blockSize > destSize || blockPos < 0)
return NULL;
for (int j = 0; j < blockSize; j++)
dest[destPos++] = dest[blockPos + j];
} else {
if (srcPos >= srcSize || destPos >= destSize)
return NULL;
dest[destPos++] = src[srcPos++];
}
if (destPos == destSize) {
*uncompressedSize = destSize;
return dest;
}
flags <<= 1;
}
}
}
unsigned char *LZCompress(unsigned char *src, int srcSize, int *compressedSize)
{
const int minDistance = 2; // for compatibility with LZ77UnCompVram()
if (srcSize <= 0)
return NULL;
int worstCaseDestSize = 4 + srcSize + ((srcSize + 7) / 8);
// Round up to the next multiple of four.
worstCaseDestSize = (worstCaseDestSize + 3) & ~3;
unsigned char *dest = malloc(worstCaseDestSize);
if (dest == NULL)
return NULL;
// header
dest[0] = 0x10; // LZ compression type
dest[1] = (unsigned char)srcSize;
dest[2] = (unsigned char)(srcSize >> 8);
dest[3] = (unsigned char)(srcSize >> 16);
int srcPos = 0;
int destPos = 4;
for (;;) {
unsigned char *flags = &dest[destPos++];
*flags = 0;
for (int i = 0; i < 8; i++) {
int bestBlockDistance = 0;
int bestBlockSize = 0;
int blockDistance = minDistance;
while (blockDistance <= srcPos && blockDistance <= 0x1000) {
int blockStart = srcPos - blockDistance;
int blockSize = 0;
while (blockSize < 18
&& srcPos + blockSize < srcSize
&& src[blockStart + blockSize] == src[srcPos + blockSize])
blockSize++;
if (blockSize > bestBlockSize) {
bestBlockDistance = blockDistance;
bestBlockSize = blockSize;
if (blockSize == 18)
break;
}
blockDistance++;
}
if (bestBlockSize >= 3) {
*flags |= (0x80 >> i);
srcPos += bestBlockSize;
bestBlockSize -= 3;
bestBlockDistance--;
dest[destPos++] = (bestBlockSize << 4) | ((unsigned int)bestBlockDistance >> 8);
dest[destPos++] = (unsigned char)bestBlockDistance;
} else {
dest[destPos++] = src[srcPos++];
}
if (srcPos == srcSize) {
// Pad to multiple of 4 bytes.
int remainder = destPos % 4;
if (remainder != 0) {
for (int i = 0; i < 4 - remainder; i++)
dest[destPos++] = 0;
}
*compressedSize = destPos;
return dest;
}
}
}
}

9
tools/gbagfx/lz.h Normal file
View File

@ -0,0 +1,9 @@
// Copyright (c) 2015 YamaArashi
#ifndef LZ_H
#define LZ_H
unsigned char *LZDecompress(unsigned char *src, int srcSize, int *uncompressedSize);
unsigned char *LZCompress(unsigned char *src, int srcSize, int *compressedSize);
#endif // LZ_H

307
tools/gbagfx/main.c Normal file
View File

@ -0,0 +1,307 @@
// Copyright (c) 2015 YamaArashi
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include "global.h"
#include "util.h"
#include "gfx.h"
#include "convert_png.h"
#include "jasc_pal.h"
#include "lz.h"
#include "font.h"
struct CommandHandler
{
const char *inputFileExtension;
const char *outputFileExtension;
void(*function)(char *inputPath, char *outputPath, int argc, char **argv);
};
void ConvertGbaToPng(char *inputPath, char *outputPath, int width, int bitDepth, char *paletteFilePath, bool hasTransparency)
{
struct Image image;
if (paletteFilePath != NULL) {
ReadGbaPalette(paletteFilePath, &image.palette);
image.hasPalette = true;
} else {
image.hasPalette = false;
}
ReadImage(inputPath, width, bitDepth, &image, !image.hasPalette);
image.hasTransparency = hasTransparency;
WritePng(outputPath, &image);
FreeImage(&image);
}
void ConvertPngToGba(char *inputPath, char *outputPath, int numTiles, int bitDepth)
{
struct Image image;
image.bitDepth = bitDepth;
ReadPng(inputPath, &image);
WriteImage(outputPath, numTiles, bitDepth, &image, !image.hasPalette);
FreeImage(&image);
}
void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **argv)
{
char *inputFileExtension = GetFileExtension(inputPath);
int bitDepth = inputFileExtension[0] - '0';
char *paletteFilePath;
bool hasPalette = false;
bool hasTransparency = false;
int width = 1;
for (int i = 3; i < argc; i++) {
char *option = argv[i];
if (strcmp(option, "-palette") == 0) {
if (i + 1 >= argc)
FATAL_ERROR("No palette file path following \"-palette\".\n");
i++;
paletteFilePath = argv[i];
hasPalette = true;
} else if (strcmp(option, "-object") == 0) {
hasTransparency = true;
} else if (strcmp(option, "-width") == 0) {
if (i + 1 >= argc)
FATAL_ERROR("No width following \"-width\".\n");
i++;
if (!ParseNumber(argv[i], NULL, 10, &width))
FATAL_ERROR("Failed to parse width.\n");
if (width < 1)
FATAL_ERROR("Width must be positive.\n");
} else {
FATAL_ERROR("Unrecognized option \"%s\".\n", option);
}
}
ConvertGbaToPng(inputPath, outputPath, width, bitDepth, hasPalette ? paletteFilePath : NULL, hasTransparency);
}
void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **argv)
{
char *outputFileExtension = GetFileExtension(outputPath);
int bitDepth = outputFileExtension[0] - '0';
int numTiles = 0;
for (int i = 3; i < argc; i++) {
char *option = argv[i];
if (strcmp(option, "-num_tiles") == 0) {
if (i + 1 >= argc)
FATAL_ERROR("No number of tiles following \"-num_tiles\".\n");
i++;
if (!ParseNumber(argv[i], NULL, 10, &numTiles))
FATAL_ERROR("Failed to parse number of tiles.\n");
if (numTiles < 1)
FATAL_ERROR("Number of tiles must be positive.\n");
} else {
FATAL_ERROR("Unrecognized option \"%s\".\n", option);
}
}
ConvertPngToGba(inputPath, outputPath, numTiles, bitDepth);
}
void HandleGbaToJascPaletteCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Palette palette;
ReadGbaPalette(inputPath, &palette);
WriteJascPalette(outputPath, &palette);
}
void HandleJascToGbaPaletteCommand(char *inputPath, char *outputPath, int argc, char **argv)
{
int numColors = 0;
for (int i = 3; i < argc; i++) {
char *option = argv[i];
if (strcmp(option, "-num_colors") == 0) {
if (i + 1 >= argc)
FATAL_ERROR("No number of colors following \"-num_colors\".\n");
i++;
if (!ParseNumber(argv[i], NULL, 10, &numColors))
FATAL_ERROR("Failed to parse number of colors.\n");
if (numColors < 1)
FATAL_ERROR("Number of colors must be positive.\n");
} else {
FATAL_ERROR("Unrecognized option \"%s\".\n", option);
}
}
struct Palette palette;
ReadJascPalette(inputPath, &palette);
if (numColors != 0)
palette.numColors = numColors;
WriteGbaPalette(outputPath, &palette);
}
void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
ReadLatinFont(inputPath, &image);
WritePng(outputPath, &image);
FreeImage(&image);
}
void HandlePngToLatinFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
image.bitDepth = 2;
ReadPng(inputPath, &image);
WriteLatinFont(outputPath, &image);
FreeImage(&image);
}
void HandleHalfwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
ReadHalfwidthJapaneseFont(inputPath, &image);
WritePng(outputPath, &image);
FreeImage(&image);
}
void HandlePngToHalfwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
image.bitDepth = 2;
ReadPng(inputPath, &image);
WriteHalfwidthJapaneseFont(outputPath, &image);
FreeImage(&image);
}
void HandleFullwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
ReadFullwidthJapaneseFont(inputPath, &image);
WritePng(outputPath, &image);
FreeImage(&image);
}
void HandlePngToFullwidthJapaneseFontCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
struct Image image;
image.bitDepth = 2;
ReadPng(inputPath, &image);
WriteFullwidthJapaneseFont(outputPath, &image);
FreeImage(&image);
}
void HandleLZCompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
int fileSize;
unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
int compressedSize;
unsigned char *compressedData = LZCompress(buffer, fileSize, &compressedSize);
free(buffer);
WriteWholeFile(outputPath, compressedData, compressedSize);
free(compressedData);
}
void HandleLZDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
{
int fileSize;
unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
int uncompressedSize;
unsigned char *uncompressedData = LZDecompress(buffer, fileSize, &uncompressedSize);
free(buffer);
WriteWholeFile(outputPath, uncompressedData, uncompressedSize);
free(uncompressedData);
}
int main(int argc, char **argv)
{
if (argc < 3)
FATAL_ERROR("Usage: gbagfx INPUT_PATH OUTPUT_PATH [options...]\n");
struct CommandHandler handlers[] =
{
{ "1bpp", "png", HandleGbaToPngCommand },
{ "4bpp", "png", HandleGbaToPngCommand },
{ "8bpp", "png", HandleGbaToPngCommand },
{ "png", "1bpp", HandlePngToGbaCommand },
{ "png", "4bpp", HandlePngToGbaCommand },
{ "png", "8bpp", HandlePngToGbaCommand },
{ "gbapal", "pal", HandleGbaToJascPaletteCommand },
{ "pal", "gbapal", HandleJascToGbaPaletteCommand },
{ "latfont", "png", HandleLatinFontToPngCommand },
{ "png", "latfont", HandlePngToLatinFontCommand },
{ "hwjpnfont", "png", HandleHalfwidthJapaneseFontToPngCommand },
{ "png", "hwjpnfont", HandlePngToHalfwidthJapaneseFontCommand },
{ "fwjpnfont", "png", HandleFullwidthJapaneseFontToPngCommand },
{ "png", "fwjpnfont", HandlePngToFullwidthJapaneseFontCommand },
{ NULL, "lz", HandleLZCompressCommand },
{ "lz", NULL, HandleLZDecompressCommand },
{ NULL, NULL, NULL }
};
char *inputPath = argv[1];
char *outputPath = argv[2];
char *inputFileExtension = GetFileExtension(inputPath);
char *outputFileExtension = GetFileExtension(outputPath);
if (inputFileExtension == NULL)
FATAL_ERROR("Input file \"%s\" has no extension.\n", inputPath);
if (outputFileExtension == NULL)
FATAL_ERROR("Output file \"%s\" has no extension.\n", outputPath);
for (int i = 0; handlers[i].function != NULL; i++) {
if ((handlers[i].inputFileExtension == NULL || strcmp(handlers[i].inputFileExtension, inputFileExtension) == 0)
&& (handlers[i].outputFileExtension == NULL || strcmp(handlers[i].outputFileExtension, outputFileExtension) == 0)) {
handlers[i].function(inputPath, outputPath, argc, argv);
return 0;
}
}
FATAL_ERROR("Don't know how to convert \"%s\" to \"%s\".\n", inputPath, outputPath);
}

98
tools/gbagfx/util.c Normal file
View File

@ -0,0 +1,98 @@
// Copyright (c) 2015 YamaArashi
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <errno.h>
#include <limits.h>
#include "global.h"
#include "util.h"
bool ParseNumber(char *s, char **end, int radix, int *intValue)
{
char *localEnd;
if (end == NULL)
end = &localEnd;
errno = 0;
const long longValue = strtol(s, end, radix);
if (*end == s)
return false; // not a number
if ((longValue == LONG_MIN || longValue == LONG_MAX) && errno == ERANGE)
return false;
if (longValue > INT_MAX)
return false;
if (longValue < INT_MIN)
return false;
*intValue = (int)longValue;
return true;
}
char *GetFileExtension(char *path)
{
char *extension = path;
while (*extension != 0)
extension++;
while (extension > path && *extension != '.')
extension--;
if (extension == path)
return NULL;
extension++;
if (*extension == 0)
return NULL;
return extension;
}
unsigned char *ReadWholeFile(char *path, int *size)
{
FILE *fp = fopen(path, "rb");
if (fp == NULL)
FATAL_ERROR("Failed to open \"%s\" for reading.\n", path);
fseek(fp, 0, SEEK_END);
*size = ftell(fp);
unsigned char *buffer = malloc(*size);
if (buffer == NULL)
FATAL_ERROR("Failed to allocate memory for reading \"%s\".\n", path);
rewind(fp);
if (fread(buffer, *size, 1, fp) != 1)
FATAL_ERROR("Failed to read \"%s\".\n", path);
fclose(fp);
return buffer;
}
void WriteWholeFile(char *path, void *buffer, int bufferSize)
{
FILE *fp = fopen(path, "wb");
if (fp == NULL)
FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
if (fwrite(buffer, bufferSize, 1, fp) != 1)
FATAL_ERROR("Failed to write to \"%s\".\n", path);
fclose(fp);
}

13
tools/gbagfx/util.h Normal file
View File

@ -0,0 +1,13 @@
// Copyright (c) 2015 YamaArashi
#ifndef UTIL_H
#define UTIL_H
#include <stdbool.h>
bool ParseNumber(char *s, char **end, int radix, int *intValue);
char *GetFileExtension(char *path);
unsigned char *ReadWholeFile(char *path, int *size);
void WriteWholeFile(char *path, void *buffer, int bufferSize);
#endif // UTIL_H

1
tools/scaninc/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
scaninc

19
tools/scaninc/LICENSE Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 2015 YamaArashi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

13
tools/scaninc/Makefile Normal file
View File

@ -0,0 +1,13 @@
CXX = g++
CXXFLAGS = -Wall -std=c++11 -O2
SRCS = scaninc.cpp
.PHONY: clean
scaninc: $(SRCS)
$(CXX) $(CXXFLAGS) $(SRCS) -o $@
clean:
$(RM) scaninc scaninc.exe

320
tools/scaninc/scaninc.cpp Normal file
View File

@ -0,0 +1,320 @@
// Copyright (c) 2015 YamaArashi
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <set>
#include <string>
#ifdef _MSC_VER
#define FATAL_INPUT_ERROR(format, ...) \
do { \
fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, __VA_ARGS__); \
exit(1); \
} while (0)
#define FATAL_ERROR(format, ...) \
do { \
fprintf(stderr, format, __VA_ARGS__); \
exit(1); \
} while (0)
#else
#define FATAL_INPUT_ERROR(format, ...) \
do { \
fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, ##__VA_ARGS__); \
exit(1); \
} while (0)
#define FATAL_ERROR(format, ...) \
do { \
fprintf(stderr, format, ##__VA_ARGS__); \
exit(1); \
} while (0)
#endif // _MSC_VER
#define SCANINC_MAX_PATH 255
enum class IncDirectiveType {
None,
Include,
Incbin
};
class AsmFile
{
public:
AsmFile(std::string path);
~AsmFile();
IncDirectiveType ReadUntilIncDirective(std::string &path);
private:
char *m_buffer;
int m_pos;
int m_size;
int m_lineNum;
std::string m_path;
int GetChar()
{
if (m_pos >= m_size)
return -1;
int c = m_buffer[m_pos++];
if (c == '\r') {
if (m_pos < m_size && m_buffer[m_pos++] == '\n') {
m_lineNum++;
return '\n';
} else {
FATAL_INPUT_ERROR("CR line endings are not supported\n");
}
}
if (c == '\n')
m_lineNum++;
return c;
}
// No newline translation because it's not needed for any use of this function.
int PeekChar()
{
if (m_pos >= m_size)
return -1;
return m_buffer[m_pos];
}
void SkipTabsAndSpaces()
{
while (m_pos < m_size && (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' '))
m_pos++;
}
bool MatchIncDirective(std::string directiveName, std::string &path)
{
int length = directiveName.length();
int i;
for (i = 0; i < length && m_pos + i < m_size; i++)
if (directiveName[i] != m_buffer[m_pos + i])
return false;
if (i < length)
return false;
m_pos += length;
SkipTabsAndSpaces();
if (GetChar() != '"')
FATAL_INPUT_ERROR("no path after \".%s\" directive\n", directiveName.c_str());
path = ReadPath();
return true;
}
std::string ReadPath();
void SkipEndOfLineComment();
void SkipMultiLineComment();
void SkipString();
};
AsmFile::AsmFile(std::string path)
{
m_path = path;
FILE *fp = fopen(path.c_str(), "rb");
if (fp == NULL)
FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str());
fseek(fp, 0, SEEK_END);
m_size = ftell(fp);
m_buffer = new char[m_size];
rewind(fp);
if (fread(m_buffer, m_size, 1, fp) != 1)
FATAL_ERROR("Failed to read \"%s\".\n", path.c_str());
fclose(fp);
m_pos = 0;
m_lineNum = 1;
}
AsmFile::~AsmFile()
{
delete[] m_buffer;
}
IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path)
{
// At the beginning of each loop iteration, the current file position
// should be at the start of a line or at the end of the file.
for (;;) {
SkipTabsAndSpaces();
IncDirectiveType incDirectiveType = IncDirectiveType::None;
if (PeekChar() == '.') {
m_pos++;
if (MatchIncDirective("incbin", path))
incDirectiveType = IncDirectiveType::Incbin;
else if (MatchIncDirective("include", path))
incDirectiveType = IncDirectiveType::Include;
}
for (;;) {
int c = GetChar();
if (c == -1)
return incDirectiveType;
if (c == ';') {
SkipEndOfLineComment();
break;
} else if (c == '/' && PeekChar() == '*') {
m_pos++;
SkipMultiLineComment();
} else if (c == '"') {
SkipString();
} else if (c == '\n') {
break;
}
}
if (incDirectiveType != IncDirectiveType::None)
return incDirectiveType;
}
}
std::string AsmFile::ReadPath()
{
int length = 0;
int startPos = m_pos;
for (;;) {
int c = GetChar();
if (c == '"')
break;
if (c == -1)
FATAL_INPUT_ERROR("unexpected EOF in include string\n");
if (c == 0)
FATAL_INPUT_ERROR("unexpected NUL character in include string\n");
if (c == '\n')
FATAL_INPUT_ERROR("unexpected end of line character in include string\n");
if (c == '\\') {
c = GetChar();
if (c != '"')
FATAL_INPUT_ERROR("unknown escape \"\\%c\" in include string\n", c);
}
length++;
if (length > SCANINC_MAX_PATH)
FATAL_INPUT_ERROR("path is too long");
}
return std::string(m_buffer, startPos, length);
}
void AsmFile::SkipEndOfLineComment()
{
int c;
do {
c = GetChar();
} while (c != -1 && c != '\n');
}
void AsmFile::SkipMultiLineComment()
{
for (;;) {
int c = GetChar();
if (c == '*') {
if (PeekChar() == '/') {
m_pos++;
return;
}
} else if (c == -1) {
return;
}
}
}
void AsmFile::SkipString()
{
for (;;) {
int c = GetChar();
if (c == '"')
break;
if (c == -1)
FATAL_INPUT_ERROR("unexpected EOF in string\n");
if (c == '\\') {
c = GetChar();
}
}
}
bool CanOpenFile(std::string path)
{
FILE *fp = fopen(path.c_str(), "rb");
if (fp == NULL)
return false;
fclose(fp);
return true;
}
int main(int argc, char **argv)
{
if (argc < 2)
FATAL_ERROR("Usage: scaninc ASM_FILE_PATH\n");
std::stack<std::string> filesToProcess;
std::set<std::string> dependencies;
filesToProcess.push(std::string(argv[1]));
while (!filesToProcess.empty()) {
AsmFile file(filesToProcess.top());
filesToProcess.pop();
IncDirectiveType incDirectiveType;
std::string path;
while ((incDirectiveType = file.ReadUntilIncDirective(path)) != IncDirectiveType::None) {
bool inserted = dependencies.insert(path).second;
if (inserted
&& incDirectiveType == IncDirectiveType::Include
&& CanOpenFile(path))
filesToProcess.push(path);
}
}
for (const std::string &path : dependencies) {
printf("%s\n", path.c_str());
}
}