Commit Graph
100 Commits
Author SHA1 Message Date
Riyyi 00ceacaf52 Emulator: Fix pixel FIFO x-coordinate offset 2022-10-17 15:51:16 +02:00
Riyyi adb290a7c7 Emulator: Move LCDC inside PPU class 2022-10-17 13:33:26 +02:00
Riyyi 67539b6d43 Emulator: Change PPU::State values 2022-10-17 13:33:26 +02:00
Riyyi 7ed5c74faf Emulator: Switch to pixel FIFO 2022-10-17 13:33:26 +02:00
Riyyi f2a68e6294 Emulator: Add initial pixel FIFO to PPU 2022-10-17 13:33:26 +02:00
Riyyi 5e6972e4da Emulator: Fix PPU clocks and LCD offsets 2022-10-16 21:40:58 +02:00
Riyyi c0c592c438 Emulator: Make palette colors more accurate 2022-10-16 13:06:11 +02:00
Riyyi 900dbde54b Emulator: Set camera zoom-level and screen flip in scene JSON 2022-10-16 12:47:21 +02:00
Riyyi 16db21fcab Emulator: Fix predicate jump call opcodes 2022-10-16 12:46:10 +02:00
Riyyi d33de14694 Emulator: Fix swap opcodes 2022-10-16 12:46:10 +02:00
Riyyi 80c68035c5 Emulator: Fix non-prefix rotate opcodes 2022-10-16 12:46:10 +02:00
Riyyi 8f016b1095 Emulator: Add function to fetch pixel color from palette 2022-10-16 12:46:10 +02:00
Riyyi 869438e0e0 Emulator: Add state machine to PPU 2022-10-16 12:46:10 +02:00
Riyyi 6943cfd684 Emulator: Add naive background tile rendering to PPU 2022-10-16 12:46:10 +02:00
Riyyi fcfd27468d Emulator: Change main to become an Inferno application 2022-10-16 12:46:10 +02:00
Riyyi ce46f5033a Emulator+Test: Store ProcessingUnits as std::shared_ptr 2022-10-16 12:46:10 +02:00
Riyyi 5919f70537 CMake+Meta: Add inferno dependency, which includes ruc indirectly 2022-10-16 12:46:10 +02:00
Riyyi 136250355e Meta: Add assets for settings and scene 2022-10-16 11:32:52 +02:00
Riyyi 66c10e3c3e Doc: Update git submodule instructions in readme 2022-09-27 12:42:28 +02:00
Riyyi 7153b0e9b6 Emulator: Optimize interrupt request checking 2022-09-02 23:15:06 +02:00
Riyyi cd2673909c Emulator: Implement DI/EI opcodes, finish RETI opcode 2022-09-02 22:44:24 +02:00
Riyyi 5b4dbdc9a4 Emulator: Add interrupt handling 2022-09-02 22:44:24 +02:00
Riyyi 5b08c18127 Emulator: Fix DAA carry flag, opcode: 0x27 2022-09-02 16:35:43 +02:00
Riyyi 857865dfb9 Emulator: You can only have copyright on stuff you have worked on 2022-09-02 16:08:31 +02:00
Riyyi a29f01389b Emulator: Fix RET zero flag condition, opcode: 0xc0, 0xc8 2022-09-01 21:49:29 +02:00
Riyyi a806f173ce Emulator: Add getters for CPU registers 2022-09-01 18:13:32 +02:00
Riyyi 3b132a6820 Test: Add way to run opcodes in test cases, add test for ADC, POP, PUSH 2022-09-01 18:05:33 +02:00
Riyyi b63f0d3b52 Test: Update CPU test for new carry logic 2022-09-01 17:34:48 +02:00
Riyyi b48f308bfc Emulator: Simplify isCarry(Subtraction) function 2022-09-01 17:23:07 +02:00
Riyyi 059441c30a Emulator: Fix ADC/CP/DEC/SBC/SUB opcode: 0x8e, 0xbe, 0x35, 0x93, 0x96
Most of these were broken on the carry and half-carry calculation.
2022-09-01 16:59:27 +02:00
Riyyi a4743fa77b Emulator: Fix LD A,(HL-) opcode: 0x3a 2022-09-01 14:26:58 +02:00
Riyyi 70778840c7 Emulator: Fix SLA/SRA/SRL opcodes: 0x26, 0x2e, 0x3e 2022-09-01 14:26:58 +02:00
Riyyi c396e7fcf6 Emulator: Fix LD L,(HL) opcode 0x6e 2022-09-01 14:26:58 +02:00
Riyyi 92c0236f2a Emulator: Rename ldffi8 => ldff8 and move two opcodes to it 2022-09-01 14:26:58 +02:00
Riyyi f56984b555 Emulator: Fix LD A,(0xff00 + C) and its reverse, opcodes: 0xe2, 0xf2 2022-09-01 14:26:58 +02:00
Riyyi 1dd9a2c16e Doc: Add definition for lsb/msb, (least|most) significant byte 2022-09-01 14:26:58 +02:00
Riyyi 1c0809b611 Emulator: Fix LD a16,SP opcode: 0x08 2022-09-01 14:26:58 +02:00
Riyyi c8ad40c128 Emulator: Fix LD A,a16 opcode: 0xfa 2022-09-01 14:26:58 +02:00
Riyyi cc46a45a73 Emulator: Print blargg's test ROM output 2022-09-01 14:26:58 +02:00
Riyyi ed045a72b2 Emulator: Prepare for running blargg's test ROMs 2022-09-01 14:20:57 +02:00
Riyyi 38b740856e Emulator: Fix 2 opcodes ending up in the wrong location 2022-09-01 00:51:35 +02:00
Riyyi e1eed33410 Emulator: Fake screen scrolling to pass the bootrom 2022-09-01 00:51:35 +02:00
Riyyi 2b7d4dee3d Emulator: Add LCDC register to PPU 2022-08-31 21:43:56 +02:00
Riyyi 5831a23b02 Meta: Update ruc library 2022-08-31 21:33:09 +02:00
Riyyi c7903c0a50 Emulator: Fix address pushed onto stack in CALL opcode 2022-08-31 20:30:23 +02:00
Riyyi 5d054c90f8 Emulator: Update comment wording 2022-08-31 20:21:44 +02:00
Riyyi 5a690a12d2 Meta: Add script to check for missing opcodes 2022-08-31 10:16:11 +02:00
Riyyi 461fc28c94 Emulator: Add support for negative numbers to DAA opcode 2022-08-31 01:22:36 +02:00
Riyyi 6c2e5d32d4 Emulator: Implement DAA opcode 2022-08-30 18:10:47 +02:00
Riyyi 525391144a Emulator: Fix increment HL opcode 2022-08-30 16:41:20 +02:00
Riyyi cfded56dcd Emulator: Fix offset bug in readMemory() function 2022-08-30 16:24:51 +02:00
Riyyi 024e6aecc3 Emulator: Add comments to cycle waiting amount 2022-08-30 15:20:54 +02:00
Riyyi baa679904c Emulator: Implement RET opcodes, minus one 2022-08-29 01:54:31 +02:00
Riyyi 0c4d7b2112 Emulator: Implement JP opcodes 2022-08-29 01:31:02 +02:00
Riyyi 3346b5329a Emulator: Implement XOR/OR opcodes 2022-08-29 01:12:59 +02:00
Riyyi 275739bd5b Emulator: Implement SUB/SBC opcodes 2022-08-29 00:26:40 +02:00
Riyyi d47dddfe69 Emulator: Implement ADC opcode 2022-08-28 22:47:30 +02:00
Riyyi bf8bd66389 Emulator: Implement 8-bit ADD opcodes 2022-08-28 22:47:12 +02:00
Riyyi 3bac216698 Emulator: Add some missing LD opcodes 2022-08-28 22:16:01 +02:00
Riyyi 7dc569b1a1 Emulator: Add SCF/CCF opcodes 2022-08-28 22:16:01 +02:00
Riyyi 5015b9e59d Emulator: Implement 16-bit INC opcode 2022-08-28 18:12:19 +02:00
Riyyi a7169addd8 Emulator: Rename inc() => inc8() 2022-08-28 17:49:49 +02:00
Riyyi 4dffe1a60a Emulator: Implement push/pop opcodes 2022-08-28 17:44:59 +02:00
Riyyi 69760e349e Emulator: Fix compiler warnings in cpu-prefix.cpp 2022-08-28 17:44:59 +02:00
Riyyi 200cf12a8f Emulator: Fix switch case numbers for prefix opcodes 2022-08-28 16:43:01 +02:00
Riyyi c4ccbecaf7 Emulator: Add warning for illegal opcodes 2022-08-28 16:25:39 +02:00
Riyyi ec0f8bf02e Emulator: Implement SLA/SRA/SRL opcodes 2022-08-27 13:43:15 +02:00
Riyyi ac03d70d83 fixup! Emulator: Implement SWAP opcodes 2022-08-27 13:38:04 +02:00
Riyyi 99c768d400 Emulator: Rename reg => register_ 2022-08-27 13:36:07 +02:00
Riyyi fb6ba43ff1 Emulator: Implement RL/RR opcodes 2022-08-27 13:36:07 +02:00
Riyyi 275cab4da4 Emulator: Implement RLC/RRC opcodes 2022-08-27 13:08:21 +02:00
Riyyi d53f4759e3 Emulator: Implement SWAP opcodes 2022-08-27 12:43:01 +02:00
Riyyi 67698528e1 Emulator: Implement SET opcodes 2022-08-27 02:17:37 +02:00
Riyyi e35aa06471 Emulator: Implement RES opcodes 2022-08-27 02:15:18 +02:00
Riyyi 6ada7261e7 Emulator: Add .cpp file for prefix $cb opcodes, implement BIT opcodes 2022-08-27 02:15:18 +02:00
Riyyi ff2f94fc05 Doc: Added mnemonics for two opcode constants 2022-08-27 00:03:34 +02:00
Riyyi 81fe126068 Emulator: Add cartridge ROM bank loading 2022-08-26 07:22:44 +02:00
Riyyi 27abccf863 Emulator: Implement nop/rst opcodes 2022-08-26 07:14:32 +02:00
Riyyi e7e1b58d01 Emulator: Add error message when reading/writing unmapped memory space 2022-08-26 06:11:57 +02:00
Riyyi d33837f118 Emulator: Implement call opcodes 2022-08-26 05:39:09 +02:00
Riyyi 219520965c Emulator: Implement Accumulator rotate opcodes 2022-08-25 19:53:40 +02:00
Riyyi 462fa09a00 Emulator: Implement AND opcodes 2022-08-25 15:11:03 +02:00
Riyyi be3ee22086 Emulator: Add error message when reading unloaded cartridge header 2022-08-25 14:56:33 +02:00
Riyyi c9e2bf9e94 Emulator: Implement 16-bit add opcodes 2022-08-25 14:56:33 +02:00
Riyyi c81db1d3b5 Emulator: Rename decr16 => dec16 as there is only one variant 2022-08-25 14:55:58 +02:00
Riyyi 69dc545bf0 Emulator: Implement 8-bit decrement opcodes 2022-08-25 14:55:58 +02:00
Riyyi 802995b7d9 Emulator: Implement JR opcodes 2022-08-25 14:55:58 +02:00
Riyyi eb0f4b6a5f Doc: Add explanation of flag conditions 2022-08-25 11:42:46 +02:00
Riyyi 67f8bcfca9 Emulator: Implement INC and CP arithmetic opcodes 2022-08-25 02:02:57 +02:00
Riyyi 8e4dacca8a Emulator: Add cli argument to specify bootrom path 2022-08-25 00:16:32 +02:00
Riyyi dd2920b2a4 Emulator: Load cartridge header 2022-08-25 00:10:57 +02:00
Riyyi 2aa50d3532 Emulator: Put startup into a Loader class 2022-08-24 23:47:36 +02:00
Riyyi 589faceb9b Doc: Clarify opcode mnemonic for 16-bit address registers
When you see a 16-bit register wrapped by parentheses, its referencing
the value at the address the register is pointing to rather than the
address itself.
2022-08-24 22:54:40 +02:00
Riyyi e9b47d7d68 Emulator: Implement 16-bit DEC opcode 2022-08-24 22:53:35 +02:00
Riyyi 009938b126 Meta: Update ruc library 2022-08-24 22:10:19 +02:00
Riyyi 50e1672524 Emulator: Fix opcode logic in the ldi16 function 2022-08-24 21:21:12 +02:00
Riyyi 1b713f8ab0 Emulator: Make ldi8 function more compact 2022-08-24 21:14:59 +02:00
Riyyi 3fcc6823e8 Emulator: Add last LD opcode 2022-08-24 21:14:59 +02:00
Riyyi efe798084f Emulator: Add last 8-bit LD opcode variants 2022-08-24 21:14:59 +02:00
Riyyi c630a7aab6 Emulator: Add more LD opcodes 2022-08-24 20:52:47 +02:00