Commit Graph
19 Commits
Author SHA1 Message Date
Matthew Laux 9395b336e9 make wram_base and hram_base required, make dmg_new take RAM arrays, simplify and de-hack stack paths 2026-08-12 19:49:00 -05:00
Matthew Laux 9142963262 migrate to 4k page size - bank switch optimization pt 2 2026-08-07 20:06:24 -05:00
Matthew Laux 7610d3ce96 biased page tables, scaled index on 68020+, interrupt fixes (that may or may not have actually improved compatibility) 2026-07-08 20:12:32 -05:00
Tanner Fokkens 9bb5705759 Add Game Boy Color support
- New CGB state management (cgb.c/cgb.h)
  - VRAM banking (VBK register)
  - WRAM banking (SVBK register, banks 1-7)
  - Speed switching (KEY1 register)
  - HDMA transfers (HDMA1-5 registers)
  - CGB palette registers (BCPS/BCPD, OCPS/OCPD)

- CGB rendering (lcd_cgb.c, lcd_mac_cgb.c)
  - Tile attributes from VRAM bank 1
  - Per-tile palettes, H/V flip, priority
  - 8 background and 8 sprite palettes
  - RGB555 to Mac indexed color conversion

- JIT initialization sets A=$11 for CGB mode detection

- UI: "Run as GBC" menu option, .gbc file filter

Working: Tetris DX, Pokemon Gold
Known issues: Crystal, SMB Deluxe, LADX hang at boot
2026-02-01 00:57:25 -08:00
Matthew Laux 49611878ff split test_exec into files by test categories 2026-01-22 01:42:55 -06:00
Matthew Laux d627b7265b re-add SP range detection, avoid copying lcd pixels twice 2026-01-21 21:20:42 -06:00
Matthew Laux 698fe41688 more efficient context switch into JIT, remove old compiler files, fix vblank flag bug 2026-01-04 17:45:52 -06:00
Matthew Laux 5cecc6cbb1 break out ALU ops and register loads, gets further in tetris now 2025-12-23 18:10:45 -06:00
Matthew Laux 3d0ef51bb2 split out compile_dmg_*, fix alignment bug for dmg_write, add more instructions, hacky lcd update for jit 2025-12-19 17:05:12 -06:00
Matthew Laux 567041d1c3 ton of compiler improvements and new instructions 2025-12-18 20:16:00 -06:00
Matthew Laux 28e5bc5c93 add basic compiler support to system6 version, xor a, split a bunch of stuff into different files 2025-12-17 23:28:17 -06:00
Matthew Laux 18b028292e add native test runner, remove useless test counter 2025-12-17 16:43:28 -06:00
Matthew Laux 7edf9403f8 rearrange registers again 2025-12-14 23:09:16 -06:00
Matthew Laux 57f35f2c34 ld (bc), a and ld a, (bc), about to change the register allocation again 2025-12-14 20:03:09 -06:00
Matthew Laux ef37993ace reallocate registers 2025-12-14 19:13:05 -06:00
Matthew Laux 0b8e8c1c60 add jump + dispatcher thing, rename basic_block, remove useless unit tests 2025-12-13 23:20:50 -06:00
Matthew Laux 25e759b456 add ld 16 bit immediate 2025-12-13 18:16:08 -06:00
Matthew Laux ea143ae774 rest of the ld reg, immediate 2025-12-13 17:33:33 -06:00
Matthew Laux 38c54f1cdf split tests into separate files 2025-12-12 17:59:04 -06:00