Lots of Errors
I’ve gotten further into the code-generation journey for my Game Boy Z80 compiler, which you can dive into here https://github.com/Bananattack/wiz/commits/master
Plenty of annoying obstacles to deal with, so I’m nowhere near done yet, but I’m making a steady pace.
The good news, is that my compiler’s code is starting to call my bluff when I write dumb, syntactically valid nonsense in the example source I feed to it! The bad news, is that sometimes it will incorrectly report code that is intended to be valid as erroneous, and part of that is because my compiler is currently assuming all expressions are resolvable at compile-time, which is untrue. I can’t tell you exactly how many times I’ve forgotten a ‘break’ after a ‘case’ in switch statements, but I can tell you that it’s been a lot by now.
* wiz: version 0.1 >> Building... examples/test.wiz(32): error: prefix operator '[' cannot be used in constant expression examples/test.wiz(32): error: reference to undeclared symbol 'STAT_MODE_MASK' examples/test.wiz(32): error: expression could not be resolved as a constant examples/test.wiz(75): error: 'b' was declared, but could not be evaluated. examples/test.wiz(75): error: 'c' was declared, but could not be evaluated. examples/test.wiz(75): error: expression could not be resolved as a constant examples/test.wiz(83): error: reference to undeclared symbol 'hardware_type' examples/test.wiz(90): error: reference to undeclared symbol 'step_event_bank' examples/test.wiz(91): error: reference to undeclared symbol 'scan_event_bank' examples/test.wiz(92): error: reference to undeclared symbol 'draw_event_bank' examples/test.wiz(95): error: reference to undeclared symbol 'gb.ram.map' examples/test.wiz(101): error: reference to undeclared symbol 'GB_VRAM_TILES_MAX' examples/test.wiz(103): error: reference to undeclared symbol 'tiles' examples/test.wiz(104): error: reference to undeclared symbol 'gfx' (in 'gfx.load_tiles') examples/test.wiz(111): error: reference to undeclared symbol 'map_width_lo' examples/test.wiz(112): error: reference to undeclared symbol 'map_width_hi' examples/test.wiz(113): error: reference to undeclared symbol 'map_height_lo' examples/test.wiz(114): error: reference to undeclared symbol 'map_height_hi' examples/test.wiz(115): error: reference to undeclared symbol 'map_width_shift' examples/test.wiz(118): error: reference to undeclared symbol 't0' examples/test.wiz(118): error: reference to undeclared symbol 'GB_VRAM_MAP_WIDTH' examples/test.wiz(118): error: expression could not be resolved as a constant examples/test.wiz(119): error: reference to undeclared symbol 't1' examples/test.wiz(119): error: reference to undeclared symbol 'GB_VRAM_MAP_HEIGHT' examples/test.wiz(120): error: reference to undeclared symbol 'metatiles' examples/test.wiz(121): error: reference to undeclared symbol 'gb.ram.map' examples/test.wiz(122): error: reference to undeclared symbol 'world1' (in 'world1.map') examples/test.wiz(123): error: reference to undeclared symbol 'gfx' (in 'gfx.load_map') examples/test.wiz(126): error: reference to undeclared symbol 'textbox_init' examples/test.wiz(129): error: reference to undeclared symbol 'map_begin_tile_buffer' examples/test.wiz(130): error: reference to undeclared symbol 'map_end_tile_buffer' examples/test.wiz(133): error: reference to undeclared symbol 'sprite_buffer' examples/test.wiz(133): error: expression could not be resolved as a constant examples/test.wiz(134): error: reference to undeclared symbol 'gfx_sprite_copy' examples/test.wiz(137): error: reference to undeclared symbol 'scan_scanline' examples/test.wiz(138): error: reference to undeclared symbol 'gb.STAT_SCANLINE_ENABLE' examples/test.wiz(153): error: reference to undeclared symbol 'hardware_type' examples/test.wiz(157): error: reference to undeclared symbol 'gfx_load_pal_greyscale' examples/test.wiz(162): error: reference to undeclared symbol 'GFX_PAL_BG' examples/test.wiz(163): error: reference to undeclared symbol 'background_palette' examples/test.wiz(164): error: reference to undeclared symbol 'gfx_load_pal_color' examples/test.wiz(169): error: reference to undeclared symbol 'GFX_PAL_OAM' examples/test.wiz(170): error: reference to undeclared symbol 'sprite_palette' examples/test.wiz(171): error: reference to undeclared symbol 'gfx_load_pal_color' examples/test.wiz(183): error: reference to undeclared symbol 'map_start' examples/test.wiz(190): error: 'request_redraw' was declared, but could not be evaluated. examples/test.wiz(190): error: expression could not be resolved as a constant examples/test.wiz(208): error: reference to undeclared symbol 'scan_scanline' examples/test.wiz(211): error: reference to undeclared symbol 'timer_hours' examples/test.wiz(214): error: reference to undeclared symbol 'timer_steps' examples/test.wiz(217): error: 'hl' was declared, but could not be evaluated. examples/test.wiz(217): error: expression could not be resolved as a constant examples/test.wiz(233): error: reference to undeclared symbol 'redraw_request' examples/test.wiz(247): error: reference to undeclared symbol 'redraw_request' examples/test.wiz(251): error: reference to undeclared symbol 'map_buf_data' examples/test.wiz(254): error: reference to undeclared symbol 'sprite_buffer' examples/test.wiz(254): error: expression could not be resolved as a constant examples/test.wiz(255): error: reference to undeclared symbol 'gfx' (in 'gfx.sprite_copy') examples/test.wiz(258): error: reference to undeclared symbol 'redraw_request' * wiz: failed with 59 error(s).
A lot of those are undeclared symbols, but they’re occasionally other, useful things. Alright, it’s almost 4, time for sleep soon.
— Overkill