Commit Graph

281 Commits

Author SHA1 Message Date
Adrian Conlon
a13ad5042a Correct constructions of register16_t: the structure is "#ifdef"ed for different endian arrangements.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2019-01-06 11:27:43 +00:00
Adrian Conlon
f38d326ca7 Improve the flexibility of the BUS mapping/read/write architecture.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-12-29 19:17:36 +00:00
Adrian Conlon
dc477cd050 Use explicit enumeration types (improves type safety) where appropriate.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-12-01 15:24:29 +00:00
Adrian Conlon
a940a29283 Unify build settings across all the EightBit libraries.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-28 21:24:51 +00:00
Adrian Conlon
e156b1ff1a Correct some more compilation warnings (across the whole EightBit project).
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-25 19:02:11 +00:00
Adrian Conlon
68b352d1df Wire the GameBoy board like a piece of powered hardware.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-12 00:38:03 +00:00
Adrian Conlon
fdbb28828f Apply the concept of powered components to the "board"
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-11 16:48:44 +00:00
Adrian Conlon
e688411cb9 Refactor memory related code a little to make the hierarchy of classes a little easier to understand.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-04 16:38:57 +00:00
Adrian Conlon
95968cb000 Whoops: missed boost update for LR35902
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-04 13:26:12 +00:00
Adrian Conlon
8ef5d97366 Update boost from 1.65 -> 1.68
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-04 12:58:01 +00:00
Adrian Conlon
9132f2028f Add an "UnusedMemory" class to better allow "gaps" in the memory map.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-03 23:11:48 +00:00
Adrian Conlon
984626a331 Introduce the concept of a MemoryInterface to the EightBit library.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-03 22:15:17 +00:00
Adrian Conlon
68a785ceec Add an address masking to the memory mapping structure.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-11-01 23:43:29 +00:00
Adrian Conlon
015071fcfb Tidy up GameBoy processor (LR35902) with respect to C++14/17
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-10-27 19:23:02 +01:00
Adrian Conlon
8dbb3eafec Switch to C++17 standard in all EightBit projects.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-10-27 14:28:14 +01:00
Adrian Conlon
1b2ddd8843 Don't expose the bus via the CPU any more: if a component needs the bus, it should be prepared to hold a reference to it.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-10-20 20:52:41 +01:00
Adrian Conlon
8d3551e681 Refactor bit set/get routines from processor class to lower level chip class.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-09-29 14:08:44 +01:00
Adrian Conlon
fe3794e011 Simplify register16_t usage a little.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-09-16 12:00:29 +01:00
Adrian Conlon
7d840f1a42 Modifying the manner in which memory is mapped, allows a fairly clean mechanism for loading Intel "hex" files.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-09-15 14:35:59 +01:00
Adrian Conlon
97272d650d Simplify processor bus access a little by further allowing register16_t address access.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-29 13:52:25 +01:00
Adrian Conlon
a8cc289149 Whoops: The "Bus" class *really* isn't allowed to know the "endianness" of the attached processor!
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-27 11:27:33 +01:00
Adrian Conlon
1212e8d4f0 Tidy some processor virtual specifications.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-25 13:35:53 +01:00
Adrian Conlon
17c46264e9 Match the GameBoy code to the updated handling of reset (etc.) interrupts.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-25 01:57:22 +01:00
Adrian Conlon
6d4223c368 Start moving towards reset being just another style of interrupt.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-25 01:34:30 +01:00
Adrian Conlon
b0aacce406 Tidy header file usage a little.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-18 23:56:16 +01:00
Adrian Conlon
ed76038bfa More memptr adjustments
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-17 13:59:59 +01:00
Adrian Conlon
70c70af969 Sort out some exception and member initialisation rules.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-08-11 21:19:19 +01:00
Adrian Conlon
cac871cf2b Remove duplicated code (from const definitions) the performance benefit isn't worth the amount of duplicated code.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-06-24 20:58:20 +01:00
Adrian Conlon
feb5e7ad60 Simplifications carried over from the Z80 implementation.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-06-23 16:43:05 +01:00
Adrian Conlon
67487b5b6e Simplify the usage of the register16_t union.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-06-16 00:55:32 +01:00
Adrian Conlon
fbf098ae00 Simplify memory event handlers and ROM recognition a little (bit of speed difference)
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-06-10 22:00:52 +01:00
Adrian Conlon
3e854c7c49 Const some more bus/processor usage, and ensure the data bus is a member, not a reference to memory.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-06-10 00:40:56 +01:00
Adrian Conlon
116f9961c4 Add a higher/lower nibble mask
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-05-25 22:36:10 +01:00
Adrian Conlon
ae177b9b92 Remove unnecessary member variable initialisation.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-05-04 04:12:25 +01:00
Adrian Conlon
740cf01085 Slightly better use of vector/array for pixel display.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-05-04 03:38:39 +01:00
Adrian Conlon
0b2c1fa084 Gameboy, some random tidy ups.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-05-02 02:47:47 +01:00
Adrian Conlon
4b4f6b1a49 Some *small* consistency changes. Perhaps some performance gains.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-04-11 23:53:26 +01:00
Adrian Conlon
45dc274167 Get rid of wrappers for bus access: i.e. make it clearer where the bus is being read/written.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-03-10 01:53:57 +00:00
Adrian Conlon
adf506a41e Optimisation: Prefer return by value to return by reference. ~10% speed-up!
Just watch a video by Chandler Carruth from 2015, where he talked about C++ optimisers...

Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-02-25 19:48:01 +00:00
Adrian Conlon
d34b161255 Simplify some build options.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-02-19 23:18:21 +00:00
Adrian Conlon
29edc46966 Simplify some MEMPTR usage in Intel processors.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2018-01-10 23:08:14 +00:00
Adrian Conlon
697bfb636d A more succinct definition of the LR35902 interrupt mechanism.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-12-12 22:29:37 +00:00
Adrian Conlon
a1c753d63e Couple of small tidy ups on the LR35902 implementation.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-12-10 21:57:32 +00:00
Adrian Conlon
1edabd79f3 More pinout oriented method of executing instructions (especially interrupts)
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-12-10 21:41:48 +00:00
Adrian Conlon
23f7a88480 Further 8080/Z80 interrupt rewrite
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-12-03 00:57:47 +00:00
Adrian Conlon
befcda2c0e Linux build compatibility.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-27 21:33:23 +00:00
Adrian Conlon
c513f0cab1 GSL was too problematic when used with GCC. Removed.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-20 19:17:49 +00:00
Adrian Conlon
67c27d4a3e GSL + CPP core guidelines changes.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-18 14:29:30 +00:00
Adrian Conlon
dea1847280 Unify more VS2017 build configurations
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-12 10:38:05 +00:00
Adrian Conlon
0b6ef3d4dd VS2017 and CPP core guidelines updates
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-11 15:13:26 +00:00
Adrian Conlon
c18aeb9e63 More updates from the CPP core guidelines
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-11 11:12:09 +00:00
Adrian Conlon
46d7777dbe Bring LR35902 to VS2017
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-10 23:13:19 +00:00
Adrian Conlon
d4f1614ffa Updated for VS2017
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-10 23:01:10 +00:00
Adrian Conlon
437cc4ce89 LTO in gcc
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-04 23:52:15 +00:00
Adrian Conlon
d408bfe022 Updated build to C++ 14
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-04 12:44:38 +00:00
Adrian Conlon
c292fb552e A whole bunch of consistency changes. No functional changes.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-11-03 22:05:01 +00:00
Adrian Conlon
ff13e9afc9 Get the LR35902 test suite up and running again.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-28 13:08:07 +01:00
Adrian Conlon
e17e98a6fd Correct constructor initialisation ordering in GameBoyBus
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-24 22:10:02 +01:00
Adrian Conlon
a22e59546b Tidy the gameboy core a little. Mainly by moving the execution loops into the bus class.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-24 00:04:13 +01:00
Adrian Conlon
774b181008 Whoops: correct accidental fall through in GameBoyBus handler.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-23 21:39:31 +01:00
Adrian Conlon
a065199098 Tidy up some leftover work from the scanline rendering update.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-22 21:25:06 +01:00
Adrian Conlon
6ae1d9c492 Update linux Makefile
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-19 22:46:49 +01:00
Adrian Conlon
94604b355d Tidy up include file usage.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-19 22:43:09 +01:00
Adrian Conlon
b6396a8d2d Update linux build
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-19 21:13:05 +01:00
Adrian Conlon
156cb66904 Split the bus into IoRegisters and "the rest"
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-05 11:24:36 +01:00
Adrian Conlon
e8715b941b Explicit use of OAM and VRAM
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-04 18:00:53 +01:00
Adrian Conlon
9796f9d600 First stab at associating the "Display" class more closely with the Bus.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-04 15:37:11 +01:00
Adrian Conlon
2b5324cb43 More scanline changes. Try to render only what we need to see.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-04 01:28:33 +01:00
Adrian Conlon
d5a724fdb4 Whoops: missed variable name change.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-04 00:34:11 +01:00
Adrian Conlon
e2ea6d1445 Some scan line render corrections.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-04 00:30:59 +01:00
Adrian Conlon
c92b0642a1 First stab at scan line rendering.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-03 23:54:39 +01:00
Adrian Conlon
27acba97ff Correct linux warning (signed/unsigned)
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-03 15:42:39 +01:00
Adrian Conlon
1993cbe656 Whoops: missing Makefile source entry.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-03 15:29:48 +01:00
Adrian Conlon
c21d66eba4 Correct both a linux warning, and some timing anomalies.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-02 20:54:38 +01:00
Adrian Conlon
18d74b6f13 More linux changes
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-02 20:29:16 +01:00
Adrian Conlon
d2c3efac83 More linux fixes.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-02 17:30:46 +01:00
Adrian Conlon
44ff68d6f3 First part of gb linux port.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-02 16:47:05 +01:00
Adrian Conlon
c06c0d2cf9 Small tidy ups + optimisations.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-02 15:28:41 +01:00
Adrian Conlon
8b1da2097b More scan line rendering changes.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-02 10:12:25 +01:00
Adrian Conlon
10913bf1b8 Remove some unused signals.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-01 22:22:25 +01:00
Adrian Conlon
63f7216341 More preparation for scan line rendering.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-10-01 11:32:41 +01:00
Adrian Conlon
88117398ef Add interrupt signal generation.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-09-30 16:47:43 +01:00
Adrian Conlon
13fed631d4 Correct some cycle counting assertion failures.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-09-30 16:46:53 +01:00
Adrian Conlon
e5e6d02845 Correct keypad interrupt generation.
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-09-30 16:24:25 +01:00
Adrian Conlon
66b870bb78 First stage refactoring CPU instruction execution (to hopefully allow display interrupt interleave)
Signed-off-by: Adrian Conlon <Adrian.conlon@gmail.com>
2017-09-30 15:28:25 +01:00
Adrian Conlon
da438ffb85 Try to get better cycle count/adjustments. 2017-09-30 00:03:42 +01:00
Adrian.Conlon
794d0fa361 First stab at GB -> linux
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-26 22:59:21 +01:00
Adrian.Conlon
04b6835cf4 Whoops: dangling assert from old audio code.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-23 23:40:26 +01:00
Adrian.Conlon
dbe5f7f8e5 Prepare the LR35902 to allow use of the Blargg gb sound library.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-23 22:56:11 +01:00
Adrian.Conlon
053d649124 Whoops: correct or/and muddle in the volume envelope.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-23 11:19:01 +01:00
Adrian.Conlon
210286514e Calculate voice step length adjustments.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-23 00:26:06 +01:00
Adrian.Conlon
5084d85e49 Wire envelope amplitude shaping.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-23 00:07:30 +01:00
Adrian.Conlon
09f7fe5dfe Couple of small "documentation" changes.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-22 22:09:57 +01:00
Adrian.Conlon
78b6e7b339 Remove dump logging, it was never overly useful anyway.
Signed-off-by: Adrian.Conlon <adrian.conlon@gmail.com>
2017-09-22 19:17:34 +01:00
Adrian.Conlon
1a1d5ea807 Start the process of audio frame generation.
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
2017-09-22 09:30:27 +01:00
Adrian.Conlon
a4cdc2bcb5 Correct int/bool cast warning
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
2017-09-22 09:29:05 +01:00
Adrian.Conlon
531d5d6d6b Refactor the Audio header into declaration/definition files.
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
2017-09-21 23:43:33 +01:00
Adrian.Conlon
877618f973 Wire audio frame counter (tbc)
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
2017-09-21 21:26:52 +01:00
Adrian.Conlon
cd63636895 Move some constants from static methods to enumerations.
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
2017-09-21 20:08:37 +01:00
Adrian.Conlon
7830c29f6a Update audio custom wave pattern data.
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
2017-09-21 10:36:52 +01:00