- Labels use PascalCase.
DrawNPCs
,GetOffsetFromCamera
. - Labels in RAM (VRAM, SRAM, WRAM, HRAM; you shouldn't be using Echo RAM or OAM) use the same convention but are prefixed with the initial of the RAM they're in, in lowercase.
wCameraOffsetBuffer
,hVBlankFlag
,vTilesetTiles
,sSaveFileChecksum
. Rationale: to know in which memory type the label is; this is important because VRAM and SRAM have special access precautions and HRAM can (should (must)) be accessed using theldh
instruction. - Local labels use camelCase, regardless of memory type. (
.waitVRAM
,wPlayer.xCoord
) - Macro names use snake_case.
wait_vram
,rst wait_vblank
,end_struct
. - Constants use CAPS_SNAKE.
NB_NPCS
,OVERWORLD_STAT_LOAD_MAP
. - Constants posing as labels use the appropriate label convention.
Split everything, nobody likes big files. But keep the splitting reasonable and coherent.
Put everything you can in ROMX. But if it then has to do something like calling functions in other banks, then it should've been in ROM0.
Compress data. See PB16 below for good tile data compression.
Never let the hardware draw a corrupted frame even if it's just one frame. If it's noticeable by squinting hard enough, it has to go.
- gb-boilerplate and gb-starter-kit, two templates to base GB projects on.
- My variable-width font engine
- RGBDS structs
My Raster FX lib(not yet published)- PinoBatch's PB compression and decompression tools. Very good with gfx data, mostly.
- BGB
- RGBDS
My Makefile(not yet published, either)
- gbdev
- PinoBatch
- gekkio
- Liji
- beware
- Martin "nocash" Korth
- avivace
- All the people who contributed to RGBDS. There's a lot of them.