- Features 9918A video and 9919 sound chip emulation.
- Lower memory usage, less lookup tables, keep important data in cache
- Instruction opcode decoding using CLZ instead of a lookup table
- Memory is designated as 16-bit words as seen from the CPU; no need for builtin_bswap16
- Memory accesses use a function pointer per 256 bytes
- Instruction loop is in a single function; keeping PC, WP, (maybe ST) in host CPU registers
- Instruction decoding functions inlined; better branch prediction
- GCC or compatible compiler
- SDL2 library and headers
- ROM and GROM files:
994arom.bin,994agrom.bin.- Put these in the same directory as the emulator executable for dynamic loading.
- (If you want to have a ROM source listing, it should be named
994arom.lst.)
- (If you want to have a ROM source listing, it should be named
- Use
make cbulwipfor a build with the ROMs compiled in.
- Put these in the same directory as the emulator executable for dynamic loading.
- Enter the project folder and run
make. - To build a macOS application bundle:
- Place
994arom.binand994agrom.binin the bulwip source folder. - Use
make appto build the.icnsand executable and bundle them with the ROM files. - Use
make cappto build the app with the ROMs compiled into the binary.
- Place
| Key(s) | Description |
|---|---|
| ESC | Load Cartridges/Settings/Quit menu |
| F11 | Toggle full-screen |
| F12 or Ctrl-Home | Toggle debugger interface |
| Ctrl-F12 | Reset and reload current cartridge/listings |
| Shift-Insert | Paste from clipboard |
| Arrow keys and Tab | Mapped to Joystick 1 |
- Files ending in
G.BINare assumed to be GROM, otherwise ROM. - ROM files must be non-inverted (first bank is 0) format.
- Listing file is loaded automatically and must be named the same as the ROM with a
.LSTextension. - Cartridge files may be loaded by drag-and-drop onto the window.
| Key(s) | Description |
|---|---|
| F1 | Run/Stop |
| F2 | Single instruction step |
| Ctrl-F2 | Single frame step |
| Up/Down/PgUp/PgDn | move highlighted line in listing |
| Home/End | Go to start/end of listing |
| Ctrl-F | Find text string |
| Ctrl-G | Repeat last find |
| Shift-Ctrl-G | Repeat last find, reverse direction |
| B | Toggle breakpoint at current line (red=stop, green=go) |
| Del | Remove breakpoint at current line |
| F5 | List breakpoints - Enter: Go to selected breakpoint - Space: Toggle selected breakpoint - Del: Remove selected breakpoint |
| R | Register select, then Enter to jump to address |
| Z | Reverse instruction step |
| Shift-Z | Reverse instruction step until PC goes lower (good for rewinding out of a loop) |
| 1/2/3/S | Show character pattern tables, or sprite pattern table |
- Ctrl->B : Go to referenced label
- SAMS banking 1MB
- F18A support (some bits work)
- FinalGROM99 cartridge emulation (paged 4Krom+4Kram, gram, load, dump)
- Memory view:
- A: set address
- M: CPU memory
- V: VDP memory
- G: GROM
- S: SAMS