Code Monkey home page Code Monkey logo

pokeemerald's People

Contributors

abaresk avatar asparaguseduardo avatar atasro2 avatar camthesaxman avatar cbt6 avatar deokishisu avatar diegoisawesome avatar dizzyeggg avatar garakmon avatar golemgalvanize avatar griffinrichards avatar huderlem avatar itskobold avatar jiangzhengwenjz avatar kermalis avatar kurausukun avatar louroboros avatar luckytyphlosion avatar melthelesbian avatar phlosioneer avatar pikalaxalt avatar revosucks avatar scnorton avatar sewef avatar sierraffinity avatar slawter666 avatar sphericalice avatar tustin2121 avatar ultima-soul avatar yenatch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pokeemerald's Issues

Can't compile

Win7

scaninc.exe - application error
Application can't be properly activated (0xc000007b)

Source file paths in elf file are incorrect.

If -g is enabled where the C files are compiled, the resulting elf will have source file lines added (example added below).
@$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -g -o $(C_BUILDDIR)/$*.s

no$gba will then inline the source within the disassembler. However, it seems that the path to the source files within the elf is incorrect, as only the line number and file are output in no$gba's debugger.
no$gba debugger

Copying source files into the same directory as the elf solves the issue, and source lines are printed. What is likely the case is that the src/ path is not included within the filename. To fix this, it would require fixing the Makefile, but I'm not an expert at Makefiles and I don't know the design decisions behind the current Makefile either.

Need help

Hi, @YamaArashi. Would you mind telling me the assembly code controlling the easy-chat words used in the pre-battle speech, the win speech and the loss speech of the trainers of Battle Frontier? Thanks in advance.

New gcc compatibility

So I've been doing some attempts to get pokeemerald to compile with gcc 7.3.1. Working with new gcc version will obviously make the code not match anymore, but I'd like to get the codebase to a point where it still matches but requires as few tweaks as possible to use a different gcc version.

I've managed to get it to work mostly, but I want to list a few problems I encountered:

  • There are a couple of static variables which follow non static extern declarations in headers. These have to be fixed
  • Generally, a few warnings have to go (missing declerations for functions)
  • lvalues must not be casted, the code doesn't compile otherwise (see the example below)
  • newer gcc will put jump tables into .rodata instead of .text. This causes linking to fail because a lot of files have the .rodata discarded. Perhaps it's just okay to put those .rodata into the linker script as well. If we're lucky .rodata for those files is empty with agbcc and won't cause any memory shifts.
  • Apparently inline assembler cannot reference static functions (even if they are in the same file) with newer gccs
  • newer gcc will recorder variables. This causes issues in a few places where the code depends on that (example below)
  • When compiling with gcc 7, the stack in AgbMain will exceed the 0x40 byte limit, which isn't cleared by RegisterRamReset(RESET_ALL). Because of this the RegisterRamReset call will destory the stack. Change it to RegisterRamReset(0xFD) to fix this.

For lvalues thing:

void *foo(void *x, int y)
{
    (int*)x += y;
    return x;
}

The code above doesn't compile because you're not allowed to cast lvalues (because x is an lvalue here). Instead you have to do something like this:

void *foo(void *x, int y)
{
    *(int **)&x += y;
    return x;
}

Because here you just cast the pointer and then dereference it. It seems for basic code that this produces the same code with agbcc. Haven't checked it yet with "problematic" functions. This problem can be found in src/bg.c:CopyToBgTilemapBufferRect

For the reordering issue:
In graphics.c you can find these lines:

const u16 gTitleScreenBgPalettes[] = INCBIN_U16("graphics/title_screen/pokemon_logo.gbapal");
const u16 gTitleScreenBgPalettes2[] = INCBIN_U16("graphics/title_screen/rayquaza_and_clouds.gbapal");

And in title_screen.c you can find this:

LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0);

The problem here is that the LoadPalette call assumes those two palette arrays are in order. Apparently since gcc 5 there is an attribute called "no_reorder" which you could possibly use here. Another solution would be to somehow put the two palettes into the same array somehow.

I'm pretty sure issues like this exists in some other places. The problem above caused the title screen palette to get garbled:
pokeemerald_01

Other issues I found and haven't figured out their cause:
pokeemerald-0
This might possibly be related to some memory order thing.

Apart from all of that, the game seems to run fine. That's my progress so far. I'll keep you updated.

Building instructions are outdated.

  • Linux instructions don't exit.
  • Windows instructions seem to be out of date.

Seems easy enough to copy the updated build system from pokeruby?

errata regarding nproc on macOS

Like most Linux comforts, the nproc shell comamnd is provided by GNU coreutils, which is available for installation via Homebrew. This should be noted in addition to the sysctl -n hw.ncpu method provided by Darwin itself.

Likely SpriteTemplates

Based on references to either gDummySpriteAnimTable, gDummySpriteAffineAnimTable or SpriteCallbackDummy

SpriteTemplate_831A9D0:: @ 831A9D0
SpriteTemplate_831A9E8:: @ 831A9E8
SpriteTemplate_831AC88:: @ 831AC88
SpriteTemplate_831C3C0:: @ 831C3C0
SpriteTemplate_831C688:: @ 831C688
SpriteTemplate_831C6B0:: @ 831C6B0
SpriteTemplate_8329F28:: @ 8329F28
SpriteTemplate_832A3A8:: @ 832A3A8
SpriteTemplate_832BFFC:: @ 832BFFC
SpriteTemplate_832C04C:: @ 832C04C
SpriteTemplate_832C140:: @ 832C140
SpriteTemplate_832C158:: @ 832C158
SpriteTemplate_832C170:: @ 832C170
SpriteTemplate_832C188:: @ 832C188
SpriteTemplate_832C1A0:: @ 832C1A0
SpriteTemplate_832C1C0:: @ 832C1C0
SpriteTemplate_832C1D8:: @ 832C1D8
SpriteTemplate_832C1F0:: @ 832C1F0
SpriteTemplate_832C208:: @ 832C208
SpriteTemplate_832C364:: @ 832C364
SpriteTemplate_832C37C:: @ 832C37C
SpriteTemplate_832C394:: @ 832C394
SpriteTemplate_832C3AC:: @ 832C3AC
SpriteTemplate_832DC94:: @ 832DC94
SpriteTemplate_832DCAC:: @ 832DCAC
SpriteTemplate_8338DC8:: @ 8338DC8
SpriteTemplate_8338DFC:: @ 8338DFC
SpriteTemplate_8338E74:: @ 8338E74
SpriteTemplate_8338E8C:: @ 8338E8C
SpriteTemplate_8339AD8:: @ 8339AD8
SpriteTemplate_8339B40:: @ 8339B40
SpriteTemplate_8339BE0:: @ 8339BE0
SpriteTemplate_8339C2C:: @ 8339C2C
SpriteTemplate_8339C60:: @ 8339C60
SpriteTemplate_84975D4:: @ 84975D4
SpriteTemplate_8509964:: @ 8509964
SpriteTemplate_8509988:: @ 8509988
SpriteTemplate_85099AC:: @ 85099AC
SpriteTemplate_85099D0:: @ 85099D0
SpriteTemplate_85099F4:: @ 85099F4
SpriteTemplate_8509A18:: @ 8509A18
SpriteTemplate_8509A3C:: @ 8509A3C
SpriteTemplate_8509A60:: @ 8509A60
SpriteTemplate_8509A84:: @ 8509A84
SpriteTemplate_8509AA8:: @ 8509AA8
SpriteTemplate_8509ACC:: @ 8509ACC
SpriteTemplate_8509AF0:: @ 8509AF0
SpriteTemplate_8509B14:: @ 8509B14
SpriteTemplate_8509B38:: @ 8509B38
SpriteTemplate_8509B5C:: @ 8509B5C
SpriteTemplate_8509B80:: @ 8509B80
SpriteTemplate_8509BA4:: @ 8509BA4
SpriteTemplate_8509BC8:: @ 8509BC8
SpriteTemplate_8509BEC:: @ 8509BEC
SpriteTemplate_8509C10:: @ 8509C10
SpriteTemplate_8509C34:: @ 8509C34
SpriteTemplate_8509C58:: @ 8509C58
SpriteTemplate_8509C7C:: @ 8509C7C
SpriteTemplate_8509CA0:: @ 8509CA0
SpriteTemplate_8509CC4:: @ 8509CC4
SpriteTemplate_8509CE8:: @ 8509CE8
SpriteTemplate_8509D0C:: @ 8509D0C
SpriteTemplate_8509D30:: @ 8509D30
SpriteTemplate_8509D54:: @ 8509D54
SpriteTemplate_8509D78:: @ 8509D78
SpriteTemplate_8509D9C:: @ 8509D9C
SpriteTemplate_8509DC0:: @ 8509DC0
SpriteTemplate_8509DE4:: @ 8509DE4
SpriteTemplate_8509E08:: @ 8509E08
SpriteTemplate_8509E2C:: @ 8509E2C
SpriteTemplate_8509E50:: @ 8509E50
SpriteTemplate_8509E74:: @ 8509E74
SpriteTemplate_8509E98:: @ 8509E98
SpriteTemplate_8509EBC:: @ 8509EBC
SpriteTemplate_8509EE0:: @ 8509EE0
SpriteTemplate_8509F04:: @ 8509F04
SpriteTemplate_8509F28:: @ 8509F28
SpriteTemplate_8509F4C:: @ 8509F4C
SpriteTemplate_8509F70:: @ 8509F70
SpriteTemplate_8509F94:: @ 8509F94
SpriteTemplate_8509FB8:: @ 8509FB8
SpriteTemplate_8509FDC:: @ 8509FDC
SpriteTemplate_850A000:: @ 850A000
SpriteTemplate_850A024:: @ 850A024
SpriteTemplate_850A048:: @ 850A048
SpriteTemplate_850A06C:: @ 850A06C
SpriteTemplate_850A090:: @ 850A090
SpriteTemplate_850A0B4:: @ 850A0B4
SpriteTemplate_850A0D8:: @ 850A0D8
SpriteTemplate_850A0FC:: @ 850A0FC
SpriteTemplate_850A120:: @ 850A120
SpriteTemplate_850A144:: @ 850A144
SpriteTemplate_850A168:: @ 850A168
SpriteTemplate_850A18C:: @ 850A18C
SpriteTemplate_850A1B0:: @ 850A1B0
SpriteTemplate_850A1D4:: @ 850A1D4
SpriteTemplate_850A1F8:: @ 850A1F8
SpriteTemplate_850A21C:: @ 850A21C
SpriteTemplate_850A240:: @ 850A240
SpriteTemplate_850A264:: @ 850A264
SpriteTemplate_850A288:: @ 850A288
SpriteTemplate_850A2AC:: @ 850A2AC
SpriteTemplate_850A2D0:: @ 850A2D0
SpriteTemplate_850A2F4:: @ 850A2F4
SpriteTemplate_850A318:: @ 850A318
SpriteTemplate_850A33C:: @ 850A33C
SpriteTemplate_850A360:: @ 850A360
SpriteTemplate_850A384:: @ 850A384
SpriteTemplate_850A3A8:: @ 850A3A8
SpriteTemplate_850A3CC:: @ 850A3CC
SpriteTemplate_850A3F0:: @ 850A3F0
SpriteTemplate_850A414:: @ 850A414
SpriteTemplate_850A438:: @ 850A438
SpriteTemplate_850A45C:: @ 850A45C
SpriteTemplate_850A480:: @ 850A480
SpriteTemplate_850A4A4:: @ 850A4A4
SpriteTemplate_850A4C8:: @ 850A4C8
SpriteTemplate_850A4EC:: @ 850A4EC
SpriteTemplate_850A510:: @ 850A510
SpriteTemplate_850A534:: @ 850A534
SpriteTemplate_850A558:: @ 850A558
SpriteTemplate_850A57C:: @ 850A57C
SpriteTemplate_850A5A0:: @ 850A5A0
SpriteTemplate_850A5C4:: @ 850A5C4
SpriteTemplate_850A5E8:: @ 850A5E8
SpriteTemplate_850A60C:: @ 850A60C
SpriteTemplate_850A630:: @ 850A630
SpriteTemplate_850A654:: @ 850A654
SpriteTemplate_850A678:: @ 850A678
SpriteTemplate_850A69C:: @ 850A69C
SpriteTemplate_850A6C0:: @ 850A6C0
SpriteTemplate_850A6E4:: @ 850A6E4
SpriteTemplate_850A708:: @ 850A708
SpriteTemplate_850A72C:: @ 850A72C
SpriteTemplate_850A750:: @ 850A750
SpriteTemplate_850A774:: @ 850A774
SpriteTemplate_850A798:: @ 850A798
SpriteTemplate_850A7BC:: @ 850A7BC
SpriteTemplate_850A7E0:: @ 850A7E0
SpriteTemplate_850A804:: @ 850A804
SpriteTemplate_850A828:: @ 850A828
SpriteTemplate_850A84C:: @ 850A84C
SpriteTemplate_850A870:: @ 850A870
SpriteTemplate_850A894:: @ 850A894
SpriteTemplate_850A8B8:: @ 850A8B8
SpriteTemplate_850A8DC:: @ 850A8DC
SpriteTemplate_850A900:: @ 850A900
SpriteTemplate_850A924:: @ 850A924
SpriteTemplate_850A948:: @ 850A948
SpriteTemplate_850A96C:: @ 850A96C
SpriteTemplate_850A990:: @ 850A990
SpriteTemplate_850A9B4:: @ 850A9B4
SpriteTemplate_850A9D8:: @ 850A9D8
SpriteTemplate_850A9FC:: @ 850A9FC
SpriteTemplate_850AA20:: @ 850AA20
SpriteTemplate_850AA44:: @ 850AA44
SpriteTemplate_850AA68:: @ 850AA68
SpriteTemplate_850AA8C:: @ 850AA8C
SpriteTemplate_850AAB0:: @ 850AAB0
SpriteTemplate_850AAD4:: @ 850AAD4
SpriteTemplate_850AAF8:: @ 850AAF8
SpriteTemplate_850AB1C:: @ 850AB1C
SpriteTemplate_850AB40:: @ 850AB40
SpriteTemplate_850AB64:: @ 850AB64
SpriteTemplate_850AB88:: @ 850AB88
SpriteTemplate_850ABAC:: @ 850ABAC
SpriteTemplate_850ABD0:: @ 850ABD0
SpriteTemplate_850ABF4:: @ 850ABF4
SpriteTemplate_850AC18:: @ 850AC18
SpriteTemplate_850AC3C:: @ 850AC3C
SpriteTemplate_850AC60:: @ 850AC60
SpriteTemplate_850AC84:: @ 850AC84
SpriteTemplate_850ACA8:: @ 850ACA8
SpriteTemplate_850ACCC:: @ 850ACCC
SpriteTemplate_850ACF0:: @ 850ACF0
SpriteTemplate_850AD14:: @ 850AD14
SpriteTemplate_850AD38:: @ 850AD38
SpriteTemplate_850AD5C:: @ 850AD5C
SpriteTemplate_850AD80:: @ 850AD80
SpriteTemplate_850ADA4:: @ 850ADA4
SpriteTemplate_850ADC8:: @ 850ADC8
SpriteTemplate_850ADEC:: @ 850ADEC
SpriteTemplate_850AE10:: @ 850AE10
SpriteTemplate_850AE34:: @ 850AE34
SpriteTemplate_850AE58:: @ 850AE58
SpriteTemplate_850AE7C:: @ 850AE7C
SpriteTemplate_850AEA0:: @ 850AEA0
SpriteTemplate_850AEC4:: @ 850AEC4
SpriteTemplate_850AEE8:: @ 850AEE8
SpriteTemplate_850AF0C:: @ 850AF0C
SpriteTemplate_850AF30:: @ 850AF30
SpriteTemplate_850AF54:: @ 850AF54
SpriteTemplate_850AF78:: @ 850AF78
SpriteTemplate_850AF9C:: @ 850AF9C
SpriteTemplate_850AFC0:: @ 850AFC0
SpriteTemplate_850AFE4:: @ 850AFE4
SpriteTemplate_850B008:: @ 850B008
SpriteTemplate_850B02C:: @ 850B02C
SpriteTemplate_850B050:: @ 850B050
SpriteTemplate_850B074:: @ 850B074
SpriteTemplate_850B098:: @ 850B098
SpriteTemplate_850B0BC:: @ 850B0BC
SpriteTemplate_850B0E0:: @ 850B0E0
SpriteTemplate_850B104:: @ 850B104
SpriteTemplate_850B128:: @ 850B128
SpriteTemplate_850B14C:: @ 850B14C
SpriteTemplate_850B170:: @ 850B170
SpriteTemplate_850B194:: @ 850B194
SpriteTemplate_850B1B8:: @ 850B1B8
SpriteTemplate_850B1DC:: @ 850B1DC
SpriteTemplate_850B200:: @ 850B200
SpriteTemplate_850B224:: @ 850B224
SpriteTemplate_850B248:: @ 850B248
SpriteTemplate_850B26C:: @ 850B26C
SpriteTemplate_850B290:: @ 850B290
SpriteTemplate_850B2B4:: @ 850B2B4
SpriteTemplate_850B2D8:: @ 850B2D8
SpriteTemplate_850B2FC:: @ 850B2FC
SpriteTemplate_850B320:: @ 850B320
SpriteTemplate_850B344:: @ 850B344
SpriteTemplate_850B368:: @ 850B368
SpriteTemplate_850B38C:: @ 850B38C
SpriteTemplate_850B3B0:: @ 850B3B0
SpriteTemplate_850B3D4:: @ 850B3D4
SpriteTemplate_850B3F8:: @ 850B3F8
SpriteTemplate_850B41C:: @ 850B41C
SpriteTemplate_850B440:: @ 850B440
SpriteTemplate_850B464:: @ 850B464
SpriteTemplate_850B488:: @ 850B488
SpriteTemplate_850B4AC:: @ 850B4AC
SpriteTemplate_850B4D0:: @ 850B4D0
SpriteTemplate_850B4F4:: @ 850B4F4
SpriteTemplate_850B518:: @ 850B518
SpriteTemplate_850B5CC:: @ 850B5CC
SpriteTemplate_850B5F0:: @ 850B5F0
SpriteTemplate_850B614:: @ 850B614
SpriteTemplate_850B638:: @ 850B638
SpriteTemplate_850B65C:: @ 850B65C
SpriteTemplate_850B680:: @ 850B680
SpriteTemplate_850B6EC:: @ 850B6EC
SpriteTemplate_850B710:: @ 850B710
SpriteTemplate_850B734:: @ 850B734
SpriteTemplate_850B758:: @ 850B758
SpriteTemplate_850B77C:: @ 850B77C
SpriteTemplate_850B7A0:: @ 850B7A0
SpriteTemplate_850B7C4:: @ 850B7C4
SpriteTemplate_850B7E8:: @ 850B7E8
SpriteTemplate_850B80C:: @ 850B80C
SpriteTemplate_850B830:: @ 850B830
SpriteTemplate_850B854:: @ 850B854
SpriteTemplate_850B878:: @ 850B878
SpriteTemplate_850B89C:: @ 850B89C
SpriteTemplate_850B8C0:: @ 850B8C0
SpriteTemplate_850B8E4:: @ 850B8E4
SpriteTemplate_850B908:: @ 850B908
SpriteTemplate_850B92C:: @ 850B92C
SpriteTemplate_850B950:: @ 850B950
SpriteTemplate_850B974:: @ 850B974
SpriteTemplate_850B998:: @ 850B998
SpriteTemplate_850B9BC:: @ 850B9BC
SpriteTemplate_850B9E0:: @ 850B9E0
SpriteTemplate_850BA04:: @ 850BA04
SpriteTemplate_850BA28:: @ 850BA28
SpriteTemplate_850BA4C:: @ 850BA4C
SpriteTemplate_850BA70:: @ 850BA70
SpriteTemplate_850BA94:: @ 850BA94
SpriteTemplate_850BAB8:: @ 850BAB8
SpriteTemplate_850BADC:: @ 850BADC
SpriteTemplate_850BB00:: @ 850BB00
SpriteTemplate_850BB24:: @ 850BB24
SpriteTemplate_850BB48:: @ 850BB48
SpriteTemplate_850BB6C:: @ 850BB6C
SpriteTemplate_850BB90:: @ 850BB90
SpriteTemplate_850BBB4:: @ 850BBB4
SpriteTemplate_850C9FC:: @ 850C9FC
SpriteTemplate_850CA14:: @ 850CA14
SpriteTemplate_850CA2C:: @ 850CA2C
SpriteTemplate_850CA44:: @ 850CA44
SpriteTemplate_850CAA0:: @ 850CAA0
SpriteTemplate_850CB08:: @ 850CB08
SpriteTemplate_850CB64:: @ 850CB64
SpriteTemplate_850CBC4:: @ 850CBC4
SpriteTemplate_850CC5C:: @ 850CC5C
SpriteTemplate_850CCA0:: @ 850CCA0
SpriteTemplate_850CCF0:: @ 850CCF0
SpriteTemplate_850CD4C:: @ 850CD4C
SpriteTemplate_850CDA8:: @ 850CDA8
SpriteTemplate_850CE44:: @ 850CE44
SpriteTemplate_850CE94:: @ 850CE94
SpriteTemplate_850CEF4:: @ 850CEF4
SpriteTemplate_850CF38:: @ 850CF38
SpriteTemplate_850CF94:: @ 850CF94
SpriteTemplate_850CFFC:: @ 850CFFC
SpriteTemplate_850D088:: @ 850D088
SpriteTemplate_850D0E0:: @ 850D0E0
SpriteTemplate_850D130:: @ 850D130
SpriteTemplate_850D174:: @ 850D174
SpriteTemplate_850D1CC:: @ 850D1CC
SpriteTemplate_850D28C:: @ 850D28C
SpriteTemplate_850D32C:: @ 850D32C
SpriteTemplate_850D3AC:: @ 850D3AC
SpriteTemplate_850D42C:: @ 850D42C
SpriteTemplate_850D47C:: @ 850D47C
SpriteTemplate_850D4A8:: @ 850D4A8
SpriteTemplate_850D4E0:: @ 850D4E0
SpriteTemplate_850D50C:: @ 850D50C
SpriteTemplate_850D568:: @ 850D568
SpriteTemplate_850D5CC:: @ 850D5CC
SpriteTemplate_850D64C:: @ 850D64C
SpriteTemplate_850D688:: @ 850D688
SpriteTemplate_850D6BC:: @ 850D6BC
SpriteTemplate_8525F90:: @ 8525F90
SpriteTemplate_8525FA8:: @ 8525FA8
SpriteTemplate_853EDFC:: @ 853EDFC
SpriteTemplate_853EE14:: @ 853EE14
SpriteTemplate_853EE38:: @ 853EE38
SpriteTemplate_853EE50:: @ 853EE50
SpriteTemplate_853EE84:: @ 853EE84
SpriteTemplate_853EE9C:: @ 853EE9C
SpriteTemplate_853EED8:: @ 853EED8
SpriteTemplate_853EF48:: @ 853EF48
SpriteTemplate_853EF60:: @ 853EF60
SpriteTemplate_8540018:: @ 8540018
SpriteTemplate_8540030:: @ 8540030
SpriteTemplate_85400D8:: @ 85400D8
SpriteTemplate_8540124:: @ 8540124
SpriteTemplate_854FB78:: @ 854FB78
SpriteTemplate_854FC2C:: @ 854FC2C
SpriteTemplate_854FC8C:: @ 854FC8C
SpriteTemplate_854FD58:: @ 854FD58
SpriteTemplate_854FD8C:: @ 854FD8C
SpriteTemplate_854FDC4:: @ 854FDC4
SpriteTemplate_854FE44:: @ 854FE44
SpriteTemplate_85507B4:: @ 85507B4
SpriteTemplate_85507CC:: @ 85507CC
SpriteTemplate_855C244:: @ 855C244
SpriteTemplate_855C304:: @ 855C304
SpriteTemplate_855C31C:: @ 855C31C
SpriteTemplate_855C334:: @ 855C334
SpriteTemplate_855C34C:: @ 855C34C
SpriteTemplate_855C5EC:: @ 855C5EC
SpriteTemplate_855D194:: @ 855D194
SpriteTemplate_855D1AC:: @ 855D1AC
SpriteTemplate_855D1C4:: @ 855D1C4
SpriteTemplate_855D1DC:: @ 855D1DC
SpriteTemplate_855D1F4:: @ 855D1F4
SpriteTemplate_855D20C:: @ 855D20C
SpriteTemplate_855D224:: @ 855D224
SpriteTemplate_855D23C:: @ 855D23C
SpriteTemplate_855D254:: @ 855D254
SpriteTemplate_85715B4:: @ 85715B4
SpriteTemplate_85715CC:: @ 85715CC
SpriteTemplate_85715E4:: @ 85715E4
SpriteTemplate_85715FC:: @ 85715FC
SpriteTemplate_8572754:: @ 8572754
SpriteTemplate_85728BC:: @ 85728BC
SpriteTemplate_85728D4:: @ 85728D4
SpriteTemplate_857B0A8:: @ 857B0A8
SpriteTemplate_857B0E0:: @ 857B0E0
SpriteTemplate_857BA50:: @ 857BA50
SpriteTemplate_857BA68:: @ 857BA68
SpriteTemplate_857BC70:: @ 857BC70
SpriteTemplate_857C66C:: @ 857C66C
SpriteTemplate_857FB4C:: @ 857FB4C
SpriteTemplate_857FBEC:: @ 857FBEC
SpriteTemplate_857FC7C:: @ 857FC7C
SpriteTemplate_857FE10:: @ 857FE10
SpriteTemplate_857FE28:: @ 857FE28
SpriteTemplate_857FE40:: @ 857FE40
SpriteTemplate_857FE58:: @ 857FE58
SpriteTemplate_857FE70:: @ 857FE70
SpriteTemplate_857FE88:: @ 857FE88
SpriteTemplate_8587AD0:: @ 8587AD0
SpriteTemplate_8587B18:: @ 8587B18
SpriteTemplate_8587B30:: @ 8587B30
SpriteTemplate_8587B48:: @ 8587B48
SpriteTemplate_8587B60:: @ 8587B60
SpriteTemplate_8587B98:: @ 8587B98
SpriteTemplate_8587BC8:: @ 8587BC8
SpriteTemplate_8587BE8:: @ 8587BE8
SpriteTemplate_8587C18:: @ 8587C18
SpriteTemplate_858998C:: @ 858998C
SpriteTemplate_85899A4:: @ 85899A4
SpriteTemplate_85899BC:: @ 85899BC
SpriteTemplate_85899D4:: @ 85899D4
SpriteTemplate_858C0C0:: @ 858C0C0
SpriteTemplate_858C0D8:: @ 858C0D8
SpriteTemplate_858C0F0:: @ 858C0F0
SpriteTemplate_858C108:: @ 858C108
SpriteTemplate_858C120:: @ 858C120
SpriteTemplate_858C138:: @ 858C138
SpriteTemplate_858C150:: @ 858C150
SpriteTemplate_858C168:: @ 858C168
SpriteTemplate_858C180:: @ 858C180
SpriteTemplate_858C28C:: @ 858C28C
SpriteTemplate_858D7F8:: @ 858D7F8
SpriteTemplate_858D860:: @ 858D860
SpriteTemplate_858D8C8:: @ 858D8C8
SpriteTemplate_858E600:: @ 858E600
SpriteTemplate_858E618:: @ 858E618
SpriteTemplate_858E630:: @ 858E630
SpriteTemplate_858E68C:: @ 858E68C
SpriteTemplate_8592118:: @ 8592118
SpriteTemplate_8592130:: @ 8592130
SpriteTemplate_8592148:: @ 8592148
SpriteTemplate_85921F8:: @ 85921F8
SpriteTemplate_8592210:: @ 8592210
SpriteTemplate_8592244:: @ 8592244
SpriteTemplate_8592288:: @ 8592288
SpriteTemplate_85922BC:: @ 85922BC
SpriteTemplate_85922EC:: @ 85922EC
SpriteTemplate_859231C:: @ 859231C
SpriteTemplate_8592334:: @ 8592334
SpriteTemplate_8592390:: @ 8592390
SpriteTemplate_85923A8:: @ 85923A8
SpriteTemplate_85923D8:: @ 85923D8
SpriteTemplate_8592404:: @ 8592404
SpriteTemplate_859254C:: @ 859254C
SpriteTemplate_8592564:: @ 8592564
SpriteTemplate_859258C:: @ 859258C
SpriteTemplate_8592658:: @ 8592658
SpriteTemplate_8592778:: @ 8592778
SpriteTemplate_85927AC:: @ 85927AC
SpriteTemplate_8592830:: @ 8592830
SpriteTemplate_8592848:: @ 8592848
SpriteTemplate_8592860:: @ 8592860
SpriteTemplate_8592888:: @ 8592888
SpriteTemplate_85928D0:: @ 85928D0
SpriteTemplate_85928E8:: @ 85928E8
SpriteTemplate_859291C:: @ 859291C
SpriteTemplate_8592934:: @ 8592934
SpriteTemplate_85929EC:: @ 85929EC
SpriteTemplate_8592A1C:: @ 8592A1C
SpriteTemplate_8592A34:: @ 8592A34
SpriteTemplate_8592AC4:: @ 8592AC4
SpriteTemplate_8592ADC:: @ 8592ADC
SpriteTemplate_8592B3C:: @ 8592B3C
SpriteTemplate_8592B7C:: @ 8592B7C
SpriteTemplate_8592B94:: @ 8592B94
SpriteTemplate_8592BFC:: @ 8592BFC
SpriteTemplate_8592CA0:: @ 8592CA0
SpriteTemplate_8592CB8:: @ 8592CB8
SpriteTemplate_8592CD8:: @ 8592CD8
SpriteTemplate_8592CF0:: @ 8592CF0
SpriteTemplate_8592D2C:: @ 8592D2C
SpriteTemplate_8592D44:: @ 8592D44
SpriteTemplate_8592D5C:: @ 8592D5C
SpriteTemplate_8592D8C:: @ 8592D8C
SpriteTemplate_8592DE4:: @ 8592DE4
SpriteTemplate_8592DFC:: @ 8592DFC
SpriteTemplate_8592E30:: @ 8592E30
SpriteTemplate_8592EBC:: @ 8592EBC
SpriteTemplate_8592EEC:: @ 8592EEC
SpriteTemplate_8592F2C:: @ 8592F2C
SpriteTemplate_8592F44:: @ 8592F44
SpriteTemplate_8592F74:: @ 8592F74
SpriteTemplate_8593068:: @ 8593068
SpriteTemplate_8593114:: @ 8593114
SpriteTemplate_85931BC:: @ 85931BC
SpriteTemplate_85931D4:: @ 85931D4
SpriteTemplate_859324C:: @ 859324C
SpriteTemplate_8593264:: @ 8593264
SpriteTemplate_8593288:: @ 8593288
SpriteTemplate_85932A0:: @ 85932A0
SpriteTemplate_85932B8:: @ 85932B8
SpriteTemplate_8593344:: @ 8593344
SpriteTemplate_8593380:: @ 8593380
SpriteTemplate_8593398:: @ 8593398
SpriteTemplate_85933B0:: @ 85933B0
SpriteTemplate_8593428:: @ 8593428
SpriteTemplate_8593440:: @ 8593440
SpriteTemplate_8593458:: @ 8593458
SpriteTemplate_8593470:: @ 8593470
SpriteTemplate_8593488:: @ 8593488
SpriteTemplate_85934A0:: @ 85934A0
SpriteTemplate_85934D8:: @ 85934D8
SpriteTemplate_859351C:: @ 859351C
SpriteTemplate_8593550:: @ 8593550
SpriteTemplate_8593590:: @ 8593590
SpriteTemplate_85935D0:: @ 85935D0
SpriteTemplate_8593658:: @ 8593658
SpriteTemplate_859368C:: @ 859368C
SpriteTemplate_85936D4:: @ 85936D4
SpriteTemplate_85936EC:: @ 85936EC
SpriteTemplate_859371C:: @ 859371C
SpriteTemplate_85937B0:: @ 85937B0
SpriteTemplate_859381C:: @ 859381C
SpriteTemplate_8593850:: @ 8593850
SpriteTemplate_8593868:: @ 8593868
SpriteTemplate_8593880:: @ 8593880
SpriteTemplate_8593898:: @ 8593898
SpriteTemplate_85938DC:: @ 85938DC
SpriteTemplate_8593938:: @ 8593938
SpriteTemplate_8593958:: @ 8593958
SpriteTemplate_8593970:: @ 8593970
SpriteTemplate_85939A0:: @ 85939A0
SpriteTemplate_85939B8:: @ 85939B8
SpriteTemplate_85939D0:: @ 85939D0
SpriteTemplate_8593A04:: @ 8593A04
SpriteTemplate_8593A1C:: @ 8593A1C
SpriteTemplate_8593A50:: @ 8593A50
SpriteTemplate_8593A84:: @ 8593A84
SpriteTemplate_8593AA8:: @ 8593AA8
SpriteTemplate_8593AC0:: @ 8593AC0
SpriteTemplate_8593AF0:: @ 8593AF0
SpriteTemplate_8593B38:: @ 8593B38
SpriteTemplate_8593B80:: @ 8593B80
SpriteTemplate_8593BB8:: @ 8593BB8
SpriteTemplate_8593C64:: @ 8593C64
SpriteTemplate_8595020:: @ 8595020
SpriteTemplate_85950E4:: @ 85950E4
SpriteTemplate_85950FC:: @ 85950FC
SpriteTemplate_8595114:: @ 8595114
SpriteTemplate_859512C:: @ 859512C
SpriteTemplate_8595158:: @ 8595158
SpriteTemplate_8595170:: @ 8595170
SpriteTemplate_8595208:: @ 8595208
SpriteTemplate_8595238:: @ 8595238
SpriteTemplate_8595250:: @ 8595250
SpriteTemplate_8595268:: @ 8595268
SpriteTemplate_85952F8:: @ 85952F8
SpriteTemplate_8595368:: @ 8595368
SpriteTemplate_8595380:: @ 8595380
SpriteTemplate_8595410:: @ 8595410
SpriteTemplate_8595428:: @ 8595428
SpriteTemplate_8595440:: @ 8595440
SpriteTemplate_859546C:: @ 859546C
SpriteTemplate_85954A0:: @ 85954A0
SpriteTemplate_85954D4:: @ 85954D4
SpriteTemplate_85954EC:: @ 85954EC
SpriteTemplate_8595504:: @ 8595504
SpriteTemplate_859551C:: @ 859551C
SpriteTemplate_859556C:: @ 859556C
SpriteTemplate_8595584:: @ 8595584
SpriteTemplate_859559C:: @ 859559C
SpriteTemplate_85955B4:: @ 85955B4
SpriteTemplate_85955E8:: @ 85955E8
SpriteTemplate_859563C:: @ 859563C
SpriteTemplate_859566C:: @ 859566C
SpriteTemplate_85956C0:: @ 85956C0
SpriteTemplate_85956FC:: @ 85956FC
SpriteTemplate_8595734:: @ 8595734
SpriteTemplate_859574C:: @ 859574C
SpriteTemplate_8595764:: @ 8595764
SpriteTemplate_8595790:: @ 8595790
SpriteTemplate_85957F8:: @ 85957F8
SpriteTemplate_8595810:: @ 8595810
SpriteTemplate_8595828:: @ 8595828
SpriteTemplate_8595840:: @ 8595840
SpriteTemplate_85958A8:: @ 85958A8
SpriteTemplate_859595C:: @ 859595C
SpriteTemplate_859598C:: @ 859598C
SpriteTemplate_85959A4:: @ 85959A4
SpriteTemplate_8595A18:: @ 8595A18
SpriteTemplate_8595A30:: @ 8595A30
SpriteTemplate_8595A58:: @ 8595A58
SpriteTemplate_8595AE8:: @ 8595AE8
SpriteTemplate_8595B2C:: @ 8595B2C
SpriteTemplate_8595B98:: @ 8595B98
SpriteTemplate_8595BB0:: @ 8595BB0
SpriteTemplate_8595BC8:: @ 8595BC8
SpriteTemplate_8595C04:: @ 8595C04
SpriteTemplate_8595C2C:: @ 8595C2C
SpriteTemplate_8595C44:: @ 8595C44
SpriteTemplate_8595C70:: @ 8595C70
SpriteTemplate_8595C9C:: @ 8595C9C
SpriteTemplate_8595D2C:: @ 8595D2C
SpriteTemplate_8595D44:: @ 8595D44
SpriteTemplate_8595DFC:: @ 8595DFC
SpriteTemplate_8595E14:: @ 8595E14
SpriteTemplate_8595E68:: @ 8595E68
SpriteTemplate_8595E80:: @ 8595E80
SpriteTemplate_8595E98:: @ 8595E98
SpriteTemplate_8595EB0:: @ 8595EB0
SpriteTemplate_8595EC8:: @ 8595EC8
SpriteTemplate_8595EE0:: @ 8595EE0
SpriteTemplate_8595F60:: @ 8595F60
SpriteTemplate_8595F78:: @ 8595F78
SpriteTemplate_8595F90:: @ 8595F90
SpriteTemplate_8595FA8:: @ 8595FA8
SpriteTemplate_8595FEC:: @ 8595FEC
SpriteTemplate_8596004:: @ 8596004
SpriteTemplate_859601C:: @ 859601C
SpriteTemplate_8596034:: @ 8596034
SpriteTemplate_8596088:: @ 8596088
SpriteTemplate_85960D0:: @ 85960D0
SpriteTemplate_8596134:: @ 8596134
SpriteTemplate_8596270:: @ 8596270
SpriteTemplate_85962A4:: @ 85962A4
SpriteTemplate_85962D4:: @ 85962D4
SpriteTemplate_8596340:: @ 8596340
SpriteTemplate_8596358:: @ 8596358
SpriteTemplate_8596388:: @ 8596388
SpriteTemplate_85963A0:: @ 85963A0
SpriteTemplate_85963D4:: @ 85963D4
SpriteTemplate_8596420:: @ 8596420
SpriteTemplate_859644C:: @ 859644C
SpriteTemplate_8596490:: @ 8596490
SpriteTemplate_85964CC:: @ 85964CC
SpriteTemplate_85964E4:: @ 85964E4
SpriteTemplate_85964FC:: @ 85964FC
SpriteTemplate_8596514:: @ 8596514
SpriteTemplate_8596548:: @ 8596548
SpriteTemplate_8596560:: @ 8596560
SpriteTemplate_8596578:: @ 8596578
SpriteTemplate_8596590:: @ 8596590
SpriteTemplate_85965A8:: @ 85965A8
SpriteTemplate_85965C0:: @ 85965C0
SpriteTemplate_85965F4:: @ 85965F4
SpriteTemplate_8596624:: @ 8596624
SpriteTemplate_859663C:: @ 859663C
SpriteTemplate_85966DC:: @ 85966DC
SpriteTemplate_8596744:: @ 8596744
SpriteTemplate_8596794:: @ 8596794
SpriteTemplate_85967AC:: @ 85967AC
SpriteTemplate_8596864:: @ 8596864
SpriteTemplate_8596898:: @ 8596898
SpriteTemplate_8596920:: @ 8596920
SpriteTemplate_8596974:: @ 8596974
SpriteTemplate_85969C8:: @ 85969C8
SpriteTemplate_85969E0:: @ 85969E0
SpriteTemplate_85969F8:: @ 85969F8
SpriteTemplate_8596A2C:: @ 8596A2C
SpriteTemplate_8596A44:: @ 8596A44
SpriteTemplate_8596A5C:: @ 8596A5C
SpriteTemplate_8596A74:: @ 8596A74
SpriteTemplate_8596AC8:: @ 8596AC8
SpriteTemplate_8596B04:: @ 8596B04
SpriteTemplate_8596B1C:: @ 8596B1C
SpriteTemplate_8596B34:: @ 8596B34
SpriteTemplate_8596B88:: @ 8596B88
SpriteTemplate_8596BA0:: @ 8596BA0
SpriteTemplate_8596C10:: @ 8596C10
SpriteTemplate_8596C28:: @ 8596C28
SpriteTemplate_8596C40:: @ 8596C40
SpriteTemplate_8596C58:: @ 8596C58
SpriteTemplate_8596D14:: @ 8596D14
SpriteTemplate_8596D2C:: @ 8596D2C
SpriteTemplate_8596D58:: @ 8596D58
SpriteTemplate_8596D8C:: @ 8596D8C
SpriteTemplate_8596DB8:: @ 8596DB8
SpriteTemplate_8596DD0:: @ 8596DD0
SpriteTemplate_8596DE8:: @ 8596DE8
SpriteTemplate_8596E00:: @ 8596E00
SpriteTemplate_8596E30:: @ 8596E30
SpriteTemplate_8596E48:: @ 8596E48
SpriteTemplate_8596E7C:: @ 8596E7C
SpriteTemplate_8596F28:: @ 8596F28
SpriteTemplate_8596F98:: @ 8596F98
SpriteTemplate_8596FB0:: @ 8596FB0
SpriteTemplate_8596FC8:: @ 8596FC8
SpriteTemplate_8597080:: @ 8597080
SpriteTemplate_8597098:: @ 8597098
SpriteTemplate_85970E8:: @ 85970E8
SpriteTemplate_8597138:: @ 8597138
SpriteTemplate_8597178:: @ 8597178
SpriteTemplate_8597190:: @ 8597190
SpriteTemplate_85971A8:: @ 85971A8
SpriteTemplate_85971CC:: @ 85971CC
SpriteTemplate_85971E4:: @ 85971E4
SpriteTemplate_85971FC:: @ 85971FC
SpriteTemplate_8597214:: @ 8597214
SpriteTemplate_859725C:: @ 859725C
SpriteTemplate_8597274:: @ 8597274
SpriteTemplate_859728C:: @ 859728C
SpriteTemplate_85972C0:: @ 85972C0
SpriteTemplate_85972D8:: @ 85972D8
SpriteTemplate_8597358:: @ 8597358
SpriteTemplate_8597370:: @ 8597370
SpriteTemplate_8597388:: @ 8597388
SpriteTemplate_85973A0:: @ 85973A0
SpriteTemplate_85973B8:: @ 85973B8
SpriteTemplate_85973D0:: @ 85973D0
SpriteTemplate_85973E8:: @ 85973E8
SpriteTemplate_8597400:: @ 8597400
SpriteTemplate_8597D18:: @ 8597D18
SpriteTemplate_8597D68:: @ 8597D68
SpriteTemplate_8597DD0:: @ 8597DD0
SpriteTemplate_8597DF0:: @ 8597DF0
SpriteTemplate_8597E30:: @ 8597E30
SpriteTemplate_8597E48:: @ 8597E48
SpriteTemplate_859F524:: @ 859F524
SpriteTemplate_85A1C08:: @ 85A1C08
SpriteTemplate_85A1F7C:: @ 85A1F7C
SpriteTemplate_85A728C:: @ 85A728C
SpriteTemplate_85A72A4:: @ 85A72A4
SpriteTemplate_85A7404:: @ 85A7404
SpriteTemplate_85A7CE0:: @ 85A7CE0
SpriteTemplate_85A7CF8:: @ 85A7CF8
SpriteTemplate_85A7D10:: @ 85A7D10
SpriteTemplate_85A7D28:: @ 85A7D28
SpriteTemplate_85A7D40:: @ 85A7D40
SpriteTemplate_85A7D58:: @ 85A7D58
SpriteTemplate_85A7D70:: @ 85A7D70
SpriteTemplate_85A7D88:: @ 85A7D88
SpriteTemplate_85A7DA0:: @ 85A7DA0
SpriteTemplate_85A7DB8:: @ 85A7DB8
SpriteTemplate_85A7DD0:: @ 85A7DD0
SpriteTemplate_85A7DE8:: @ 85A7DE8
SpriteTemplate_85A7E00:: @ 85A7E00
SpriteTemplate_85A7E18:: @ 85A7E18
SpriteTemplate_85A7E48:: @ 85A7E48
SpriteTemplate_85A7E60:: @ 85A7E60
SpriteTemplate_85A7E78:: @ 85A7E78
SpriteTemplate_85A7E90:: @ 85A7E90
SpriteTemplate_85A7EA8:: @ 85A7EA8
SpriteTemplate_85A7EC0:: @ 85A7EC0
SpriteTemplate_85A7ED8:: @ 85A7ED8
SpriteTemplate_85A7EF0:: @ 85A7EF0
SpriteTemplate_85A7F08:: @ 85A7F08
SpriteTemplate_85A7F20:: @ 85A7F20
SpriteTemplate_85A7F38:: @ 85A7F38
SpriteTemplate_85A7F50:: @ 85A7F50
SpriteTemplate_85A7F68:: @ 85A7F68
SpriteTemplate_85A7F80:: @ 85A7F80
SpriteTemplate_85B1F10:: @ 85B1F10
SpriteTemplate_85B1F28:: @ 85B1F28
SpriteTemplate_85B2250:: @ 85B2250
SpriteTemplate_85B2268:: @ 85B2268
SpriteTemplate_85B22A0:: @ 85B22A0
SpriteTemplate_85B22B8:: @ 85B22B8
SpriteTemplate_85B2704:: @ 85B2704
SpriteTemplate_85B4034:: @ 85B4034
SpriteTemplate_85B40FC:: @ 85B40FC
SpriteTemplate_85B7508:: @ 85B7508
SpriteTemplate_85B7520:: @ 85B7520
SpriteTemplate_85B7538:: @ 85B7538
SpriteTemplate_85B7550:: @ 85B7550
SpriteTemplate_85B7568:: @ 85B7568
SpriteTemplate_85B7580:: @ 85B7580
SpriteTemplate_85B7598:: @ 85B7598
SpriteTemplate_85B75B0:: @ 85B75B0
SpriteTemplate_85B75C8:: @ 85B75C8
SpriteTemplate_85B75E0:: @ 85B75E0
SpriteTemplate_85B75F8:: @ 85B75F8
SpriteTemplate_85B7610:: @ 85B7610
SpriteTemplate_85B7628:: @ 85B7628
SpriteTemplate_85B7640:: @ 85B7640
SpriteTemplate_85B7658:: @ 85B7658
SpriteTemplate_85B7670:: @ 85B7670
SpriteTemplate_85B7688:: @ 85B7688
SpriteTemplate_85B76A0:: @ 85B76A0
SpriteTemplate_85B76B8:: @ 85B76B8
SpriteTemplate_85B76D0:: @ 85B76D0
SpriteTemplate_85B76E8:: @ 85B76E8
SpriteTemplate_85B7700:: @ 85B7700
SpriteTemplate_85B7718:: @ 85B7718
SpriteTemplate_85B77E4:: @ 85B77E4
SpriteTemplate_85B77FC:: @ 85B77FC
SpriteTemplate_85B7814:: @ 85B7814
SpriteTemplate_85B782C:: @ 85B782C
SpriteTemplate_85B7844:: @ 85B7844
SpriteTemplate_85B7928:: @ 85B7928
SpriteTemplate_85B7950:: @ 85B7950
SpriteTemplate_85B79F8:: @ 85B79F8
SpriteTemplate_85B7A10:: @ 85B7A10
SpriteTemplate_85B7ABC:: @ 85B7ABC
SpriteTemplate_85B7AD4:: @ 85B7AD4
SpriteTemplate_85B8C68:: @ 85B8C68
SpriteTemplate_85C8EA4:: @ 85C8EA4
SpriteTemplate_85C8EBC:: @ 85C8EBC
SpriteTemplate_85CDB9C:: @ 85CDB9C
SpriteTemplate_85CDBB4:: @ 85CDBB4
SpriteTemplate_85CDBCC:: @ 85CDBCC
SpriteTemplate_85CE020:: @ 85CE020
SpriteTemplate_85CE038:: @ 85CE038
SpriteTemplate_85CE050:: @ 85CE050
SpriteTemplate_85CE07C:: @ 85CE07C
SpriteTemplate_85CE094:: @ 85CE094
SpriteTemplate_85CE0AC:: @ 85CE0AC
SpriteTemplate_85CE104:: @ 85CE104
SpriteTemplate_85CE11C:: @ 85CE11C
SpriteTemplate_85CE150:: @ 85CE150
SpriteTemplate_85CE22C:: @ 85CE22C
SpriteTemplate_85CE244:: @ 85CE244
SpriteTemplate_85CE25C:: @ 85CE25C
SpriteTemplate_85CE288:: @ 85CE288
SpriteTemplate_85CE338:: @ 85CE338
SpriteTemplate_85CE370:: @ 85CE370
SpriteTemplate_85CE388:: @ 85CE388
SpriteTemplate_85CE3A0:: @ 85CE3A0
SpriteTemplate_85CE418:: @ 85CE418
SpriteTemplate_85CE48C:: @ 85CE48C
SpriteTemplate_85CE4D0:: @ 85CE4D0
SpriteTemplate_85CE544:: @ 85CE544
SpriteTemplate_85CE590:: @ 85CE590
SpriteTemplate_85CE5A8:: @ 85CE5A8
SpriteTemplate_85CE5C0:: @ 85CE5C0
SpriteTemplate_85CE5D8:: @ 85CE5D8
SpriteTemplate_85CE68C:: @ 85CE68C
SpriteTemplate_85CE734:: @ 85CE734
SpriteTemplate_85CE76C:: @ 85CE76C
SpriteTemplate_85CE7D4:: @ 85CE7D4
SpriteTemplate_85CE7EC:: @ 85CE7EC
SpriteTemplate_85CE804:: @ 85CE804
SpriteTemplate_85CE84C:: @ 85CE84C
SpriteTemplate_85CE864:: @ 85CE864
SpriteTemplate_85CE894:: @ 85CE894
SpriteTemplate_85CE8AC:: @ 85CE8AC
SpriteTemplate_85CE8C4:: @ 85CE8C4
SpriteTemplate_85CE8DC:: @ 85CE8DC
SpriteTemplate_85CE8F4:: @ 85CE8F4
SpriteTemplate_85CE90C:: @ 85CE90C
SpriteTemplate_85CE924:: @ 85CE924
SpriteTemplate_85CE9B0:: @ 85CE9B0
SpriteTemplate_85CEC10:: @ 85CEC10
SpriteTemplate_85DFD5C:: @ 85DFD5C
SpriteTemplate_85DFDA0:: @ 85DFDA0
SpriteTemplate_85E4AB8:: @ 85E4AB8
SpriteTemplate_85E4B40:: @ 85E4B40
SpriteTemplate_85E4BA4:: @ 85E4BA4
SpriteTemplate_85E4BDC:: @ 85E4BDC
SpriteTemplate_85E4C4C:: @ 85E4C4C
SpriteTemplate_85E4D14:: @ 85E4D14
SpriteTemplate_85E4D64:: @ 85E4D64
SpriteTemplate_85E4F74:: @ 85E4F74
SpriteTemplate_85E4FC4:: @ 85E4FC4
SpriteTemplate_85E5030:: @ 85E5030
SpriteTemplate_85E51F0:: @ 85E51F0
SpriteTemplate_85E5208:: @ 85E5208
SpriteTemplate_85E5220:: @ 85E5220
SpriteTemplate_85E5238:: @ 85E5238
SpriteTemplate_85E5250:: @ 85E5250
SpriteTemplate_85E5268:: @ 85E5268
SpriteTemplate_85E5280:: @ 85E5280
SpriteTemplate_85E5298:: @ 85E5298
SpriteTemplate_85E52B0:: @ 85E52B0
SpriteTemplate_85E52C8:: @ 85E52C8
SpriteTemplate_85E52E0:: @ 85E52E0
SpriteTemplate_85E52F8:: @ 85E52F8
SpriteTemplate_85E5338:: @ 85E5338
SpriteTemplate_85E535C:: @ 85E535C
SpriteTemplate_85E54D0:: @ 85E54D0
SpriteTemplate_85E7068:: @ 85E7068
SpriteTemplate_85F504C:: @ 85F504C
SpriteTemplate_85F51EC:: @ 85F51EC
SpriteTemplate_85F5204:: @ 85F5204
SpriteTemplate_85F523C:: @ 85F523C
SpriteTemplate_85F5254:: @ 85F5254
SpriteTemplate_85F528C:: @ 85F528C
SpriteTemplate_85F52A4:: @ 85F52A4
SpriteTemplate_85F5440:: @ 85F5440
SpriteTemplate_860CFA8:: @ 860CFA8
SpriteTemplate_860CFD8:: @ 860CFD8
SpriteTemplate_860D008:: @ 860D008
SpriteTemplate_860D050:: @ 860D050
SpriteTemplate_860D068:: @ 860D068
SpriteTemplate_86105D8:: @ 86105D8
SpriteTemplate_86105F0:: @ 86105F0
SpriteTemplate_8610608:: @ 8610608
SpriteTemplate_8610620:: @ 8610620
SpriteTemplate_8610638:: @ 8610638
SpriteTemplate_8610834:: @ 8610834
SpriteTemplate_861084C:: @ 861084C
SpriteTemplate_8610864:: @ 8610864
SpriteTemplate_861087C:: @ 861087C
SpriteTemplate_8610894:: @ 8610894
SpriteTemplate_8611F5C:: @ 8611F5C
SpriteTemplate_8614244:: @ 8614244
SpriteTemplate_8614290:: @ 8614290
SpriteTemplate_8614FF4:: @ 8614FF4
SpriteTemplate_8615EC0:: @ 8615EC0
SpriteTemplate_8615F08:: @ 8615F08
SpriteTemplate_8615F78:: @ 8615F78
SpriteTemplate_8616008:: @ 8616008
SpriteTemplate_8617E00:: @ 8617E00
SpriteTemplate_8617E34:: @ 8617E34
SpriteTemplate_8617E60:: @ 8617E60
SpriteTemplate_861CFC4:: @ 861CFC4
SpriteTemplate_861D084:: @ 861D084
SpriteTemplate_861D108:: @ 861D108
SpriteTemplate_861F3D4:: @ 861F3D4
SpriteTemplate_861FB04:: @ 861FB04
SpriteTemplate_861FB2C:: @ 861FB2C
SpriteTemplate_861FB44:: @ 861FB44
SpriteTemplate_861FC1C:: @ 861FC1C
SpriteTemplate_861FC3C:: @ 861FC3C
SpriteTemplate_862034C:: @ 862034C
SpriteTemplate_862036C:: @ 862036C
SpriteTemplate_8622830:: @ 8622830
SpriteTemplate_8622850:: @ 8622850
SpriteTemplate_86231D0:: @ 86231D0
SpriteTemplate_8624D04:: @ 8624D04
SpriteTemplate_8625A50:: @ 8625A50
SpriteTemplate_8625AA8:: @ 8625AA8
SpriteTemplate_8625B14:: @ 8625B14
SpriteTemplate_862A72C:: @ 862A72C
SpriteTemplate_862A750:: @ 862A750
SpriteTemplate_862A774:: @ 862A774
SpriteTemplate_862A81C:: @ 862A81C
SpriteTemplate_862A84C:: @ 862A84C
SpriteTemplate_862A864:: @ 862A864
SpriteTemplate_862A8D4:: @ 862A8D4
SpriteTemplate_862A900:: @ 862A900
SpriteTemplate_862A92C:: @ 862A92C
SpriteTemplate_862A9E4:: @ 862A9E4
SpriteTemplate_862AA1C:: @ 862AA1C
SpriteTemplate_862AA3C:: @ 862AA3C
SpriteTemplate_862AB14:: @ 862AB14
SpriteTemplate_862AB2C:: @ 862AB2C
SpriteTemplate_862AC78:: @ 862AC78
SpriteTemplate_862AC90:: @ 862AC90
SpriteTemplate_862ACA8:: @ 862ACA8
SpriteTemplate_862ACC0:: @ 862ACC0
SpriteTemplate_862ACD8:: @ 862ACD8
SpriteTemplate_862ACF0:: @ 862ACF0
SpriteTemplate_862B758:: @ 862B758

mapjson should error out on empty string fields.

Currently, mapjson allows empty string fields, which is not a meaningful definition. If a field expects a string and is specified with an empty string, then the output *.inc file will simply have no data in the .Xbyte directive. GNU Assembler allows no expression to be specified within an .Xbyte directive (which will simply not insert any bytes), so the output *.inc file will be assembled without any error. As a result, all fields after the missing expression will be placed in incorrect struct offsets, and will most likely lead to in-game crashes.

There's more room for potential error checking (e.g. you can add commas in a string -> Xbyte field and it will result in multiple Xbytes being output), but inputting in empty strings is the most likely error to run into.

String length defines

#define BERRY_NAME_COUNT 7 - 6 chars and EOS
#define PLAYER_NAME_LENGTH 8 - 7 chars and EOS
#define POKEMON_NAME_LENGTH 10 - 10 chars and EOS
#define OT_NAME_LENGTH 7 - 7 chars and EOS

As you can see PLAYER_NAME_LENGTH and BERRY_NAME_COUNT are different in that they add EOS to the length. We should agree whether string length defines consider EOS.

Some build artifacts are not in build/

The following build artifacts are placed in the same directory as the original.

  • sound/direct_sound_samples/*.bin
  • sound/songs/midi/*.s
  • *.1bpp
  • *.4bpp
  • *.8bpp
  • *.gbapal
  • *.lz
  • *.latfont
  • *.hwjpnfont
  • *.fwjpnfont
  • *.rl (not caught by make clean, see #1225)

They should be placed in build/ in the Makefile.

(wiki) Sound Mixer tutorial

The tutorial for improving the sound mixer still has the m4a files referenced to as "m4a_2". The files that need to be modified appear to have been shortened to "m4a"

Contributing.md

We should have a contributing.md file with code style guidelines.

map filestructure

- data/
 - maps/
  - _attributes.s
  - _connections.s
  - _events.s
  - _groups.s
  - _headers.s
  - _scripts.s
  - PetalburgCity/
   - attributes.s
   - border.bin
   - connections.s
   - events.s
   - header.s
   - map.bin
   - scripts.s
 - tilesets/
  - _assets.s
  - _headers.s
  - city/
   - animations.bin
   - blocks.bin
   - image.4bpp.lz
   - palettes.bin

Hard-to-reproduce tilemap glitch

When compiling Emerald with GCC-8.3.0 or GCC-9.1.0, a weird graphical glitch sometimes occurs after a BG redraw. This glitch is difficult to reproduce but has been observed on both emulator and console.

Example:
Screenshot of messed-up bg tilemap when emerging from Meteor Falls (Route 115 side)

Battle factory softlocks the game when building with modern

As the title says, when building the current master with make modern, the game softlocks when entering Pokemon selection in the battle factory. The music keeps playing, and menu sounds are still being played whenever A or B is pressed, but the game doesn’t respond to inputs beyond that.
The selection menu is also visibly broken, see https://i.kageru.moe/k36PRH.png
When building without modern, everything works as intended.

To quickly get a fresh save to factory to reproduce the issue, you can modify littleroot as follows:

--- a/data/maps/LittlerootTown/scripts.inc
+++ b/data/maps/LittlerootTown/scripts.inc
@@ -407,6 +407,8 @@ LittlerootTown_EventScript_GoSaveBirchTrigger:: @ 81E811F

 LittlerootTown_EventScript_TownSign:: @ 81E8151
 	msgbox LittlerootTown_Text_TownSign, MSGBOX_SIGN
+        warpteleport MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY, 255, 9, 10
+        waitstate
 	end

 LittlerootTown_EventScript_BirchsLabSign:: @ 81E815A

Talking to the town sign in littleroot will then warp you to the factory.

For questions, I’m kageru#7213 on pret discord.

Edit: Tested on mgba 0.8.3 and built with gcc 10.2.0 from devkitARM.

Modern ROM crashes with GCC 10.2

I and one other user have confirmed that if you build with modern and your compiler is gcc 10.2, the game crashes (or loops) after the copyright screen. The behavior appears to be undefined (cleaning and re-compiling results in slightly different effects/crashes). I attempted to see what was making it crash using gdb, but unfortunately gdb breakpoints do not play nice and cause spurious errors, so the output from that cannot be trusted (it constantly crashes on overworld.c line 2855 with breakpoints). Requesting reproduction and investigation.

Code Build failed

include <png.h> does not fount
what i can do i setted up properlty the DevKitPro in ubuntu

PS: after do sudo apt-getinstall-libpng-dev it was fixed but now i am obtaining this error

image

Compiling-problems

I've tried compiling/assembling pokeemerald by using devkitpro/GCC but it looks like the .charmap, .charmapconst and .charmapstr Pseudo-Ops used for RSE's custom character-mapping are not compatible with the stock-assembler/compiler!
Could you provide installing instructions or a link to the compiler-binary that you use in the readme file? Would be much appreciated!

deleting pokemon

in fire red theres 25 unused pokemon i wanna remove. how do i go about this. cuz its messing up my trainer rando alot.

Things to consider changing

  1. Move #define HEAP_SIZE 0x1C000 from global.h to malloc.h, ✅
  2. Rename malloc.h to alloc.h.✅
  3. Create a define for number of moves a pokemon can have at once. So far, we've just been using a raw number 4.
  4. There is BATTLE_STATS_NO and NUM_STATS, these should be standardized, I think. ✅
  5. Move struct Bitmap defnition from global.h to blit.h. ✅
  6. Rename struct Window's field from priority to bg. ✅
  7. Change all const Window Templates to show struct fields instead of raw bytes(applies to other structs too). ✅
  8. Use EOS in string_util.c, text.c and other early decompiled files. ✅
  9. Fix gpu regs arguments from raw values to defines. in early decompiled files.
  10. Gamefreak likes to use 0xFF, 0xFFFF and -1 for values that are invalid/wrong/out of bounds. I've been thinking of creating a series of macros such as INVALID_U16, INVALID_S16, INVALID_U8, etc. as I think they're betten than just a raw 0xFF. ❌ Scrapped, it is a bad idea, makes the code less readable.
  11. Use MAX_SPRITES macro instead of raw 64 ✅

I made this issue, because I sometimes think of things to improve but forget them afterwards. I may come up with other ideas, so I'll just add another id. Please tell me what you think about these changes.

preproc does not report errors for missing files.

If preproc finds an include for an asm file that does not exist, it will silently proceed without building the asm file. If the object file for the asm file does not exist, then the build will report a missing rule error (No rule to make target 'build/emerald/data/foo.o', needed by 'pokeemerald.elf'. Stop.). If the object file for the asm file does exist (from a previous build), the build will continue on and use the previous object, which could lead to even more confusion. For what it's worth, a similar issue was found in pokecrystal and the fix is linked here.

Build process ignores the $CC and $CXX environment variables

I'm pretty sure this is an issue that spans all of pret's makefiles and build scripts, but here's where I found it, so here's where I'm opening it.

The values of the $CC and $CXX environment variables is completely ignored; the names of gcc and g++ are hardcoded. In systems like mine, with several versions of those tools, this causes the wrong tool to be invoked, leading to build failures.

support pretmap

self explanatory. Bring over the changes pokeruby made to emerald.

Add color range option to gbagfx for palette exporting

graphics/pokenav/region_map.png is a 256-color image, but its palette is currently not auto-exported by the build. This is because the game is clever, and only loads colors 112-143 into BG pal slots 7 and 8. If gbagfx could be configured to export only a certain color range when converting .png -> gbapal`, this could be an automatic process.

Sorry about this but i'm kind of an idiot, how does one save

again sorry for cluttering stuff up, but i'm literally going to blow my brains out in .2 seconds
i'm using WSL and Ubuntu, and while it says that i should use Esc to bring some sort of command prompt up, all it does is cause my computer to make a very annoying sound, and i figure, why not, i'll ask on here, since you will definitely know

Milestone: Phase out devkitARM

devkitARM has been the bane of many of our existences, and it's time we move away from it. To do this, we will need to supply our own C preprocessor (consistent with the C99 standard plus the current functionality of preproc) and ARMv4t assembler. @easyaspi314 has been working on developing this independent toolchain, and I think it's worth tracking progress on this in a dedicated thread.

Error at makefile in payload folder: extra characters after command at ld_script.sed

I've followed the steps described in the installation guide for pokeemerald, but it returns the following error when creating the ld_script.ld file in berry_fix/payload/build:
sed: file ../../ld_script.sed line 3: extra characters after command
Makefile:187: recipe for target 'build/ld_script.ld' failed

The error seems to occur in the makefile in the payload folder.

I am using Windows 10 with WSL version 1 (Ubuntu dist 18.04 LTS), and I made use of the build-essential package (based on the installation guide for pokeruby) to install gcc and g++, which are currently both on version 7.5.0.

BG_CTRL_ATTR enum is mislabeled

In include/bg.h

enum
{
    BG_CTRL_ATTR_VISIBLE = 1,
    BG_CTRL_ATTR_CHARBASEINDEX = 2,
    BG_CTRL_ATTR_MAPBASEINDEX = 3,
    BG_CTRL_ATTR_SCREENSIZE = 4,
    BG_CTRL_ATTR_PALETTEMODE = 5,
    BG_CTRL_ATTR_PRIORITY = 6,
    BG_CTRL_ATTR_MOSAIC = 7,
    BG_CTRL_ATTR_WRAPAROUND = 8,
};

These are mislabeled, which can be seen by examining SetBgAttribute() in src/bg.c. They might simply be off-by-one.

How should I solve this problem?

This problem occurs during compilation:
devkitARM\bin\arm-none-eabi-ld.exe: cannot find sound/songs/se: No such file or directory
make: *** [pokeemerald.elf] error 1

what should i do?

Resolve Oam matrixNum vs. flip

In OamData, the GBA re-purposes two bits in the matrixNum field (rot/scale selection).

u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode

This makes some code very confusing to read because you have to "just know" this fact. In this example, the sprite's hFlip is getting set to true, but it looks like it's manipulating the rot-scale matrix number.

if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT)
        sprite->oam.matrixNum = 8;

We should either create a macro or see if a union can be used in the OamData struct.

Use .wav files with SMPL chunk instead of .aif

I discussed this with ShantyTown on the Discord:

Basically moving the sound data from .aif to .wav format might make it easier to deal with them. Wavosaur and Polyphone soundfont editor can read and write the SMPL chunk. These might not be the ideal tools to edit sound data, but at least they can edit them at all.

For conversion I wrote a tool called wav2agb [1], it kinda works similar to aif2pcm, but would probably need a rewrite (the code is not terribly compelx). It also won't produce reproducable builds (which would be kinda essential for the decomps).

https://github.com/ipatix/wav2agb

Status of this project

Would like to know what percentage of progress has this project until completion, just that. :)

baserom.gba

What is the baserom.gba file and how do I generate it?

Disambiguate macro names for Speed and Sp. Def stats

Currently, MON_DATA_SPD is an ambiguous macro name as outside of the context of MON_DATA_SPDEF it is unclear if it refers to the Speed stat or the Special Defense stat.

Either settle on a consistent length and use SPE for Speed:

  • MON_DATA_SPA
  • MON_DATA_SPD
  • MON_DATA_SPE

Or spell out SPEED in full:

  • MON_DATA_SPATK
  • MON_DATA_SPDEF
  • MON_DATA_SPEED
    Note that SPEED is five characters, which is the same as SPATK and SPDEF which is currently in use.

The former is arguably easier, but the latter is completely unambiguous while being slightly more verbose.

add a .clang-format and `make lint`?

It would be good to automate code formatting of all the C files, and this could be added into the build with the .PHONY target lint, which can also be implied in make tidy if desired.

also, what is the style policy in effect right now? any not-so-obvious rules?

finally, can we start having code logic adhere to the 80-char boundary, like Linux (so not including strings etc)? I use that margin all the time in my editor as it’s on a vertical display.

gbafix: Don't pad ELF files

If option -p is specified and the target file is an ELF, it will pad the ELF file. This shouldn't happen, as objcopy will pad it anyways.

A potential fix would be to ignore -p when the input is an ELF file, and possibly output a warning if this is the case.

Revisit fldeff_groundshake.c

fldeff_groundshake.c is either mislabeled, or should be split up into multiple files. There is logic for Mirage Tower in this file, but does not seem to have anything to do with a ground-shaking field effect. Furthermore, the Mirage Tower logic calls functions roulette_util.c, so that needs to be looked at and possibly split, too.

Seperate out GFlib.

I previously noted this, but I believe I figured out the behavior of file link order. It is related to file creation timestamp (not file update). However, in order for this to make sense, a specific section of files near the beginning need to be their own linked library (ie GfLib), which are also self-ordered by file creation timestamp.

image

rtc.c is not part of Gflib. If it were, union room in emerald would be, which references tasks.

For ruby,

src/sprite.o(.text);
src/text.o(.text);
src/string_util.o(.text);

are Gflib.

Fire Red asserts also point to malloc being gflib, hence this theory. Once you consider this area as a compiled linked library, file creation timestamps make sense. I think we should move them to src/gflib/ at the very least, ideally we need to compile gflib.a before linking to the ROM.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.