44 Commits

Author SHA1 Message Date
40b7c9d800 example: add maple_mouse
This also updates maple_analog.
2024-05-24 18:18:29 -05:00
ea51bca518 example/maple_storage: initial example 2024-05-23 11:47:19 -05:00
be8f06e486 example: add maple_storage example 2024-05-21 19:09:48 -05:00
9801557535 maple: slightly refactor maple command initialization
This adopts a "writer" concept, vaguely inspired by the ta parameter
writer. This might turn out to be not a great idea if the
response/offsets for heterogenous commands are too inconvenient to
keep track of.

This breaks every example that uses maple--only
example/maple_controller is updated to use the new interface.
2024-05-21 15:05:25 -05:00
b5ac43c109 text_editor: refactor render/transform 2024-05-20 11:26:19 -05:00
ad5b98b5ea maple: add maple_bus_ft6_key_scan_codes 2024-05-19 21:55:36 -05:00
dd55208f39 maple: add maple_bus_ft6 2024-05-19 15:08:22 -05:00
0510598233 generic_sparse_struct: constexpr constructors
ta_polygon_converter_transfer: const buf
2024-05-19 08:23:13 -05:00
f8dc9f1250 example: add video_output example
The intent of this example is to change video output modes in response
to swapping the cable type.
2024-03-09 17:15:36 +08:00
db323c85c5 dve: initial description of DVE bits
This also implements primitive cable-detection and video output.
2024-03-08 18:27:12 +08:00
eafd4e6f23 holly: add video output data 2024-03-08 16:17:59 +08:00
73a685face aica: use SCIPD to detect TIMA overflow
Real hardware does not support TIMA reads--SCIPD is the correct way to
achieve this.
2024-03-01 15:26:47 +08:00
3338b611c1 aica: initial working example
This plays 10 seconds of PCM audio via the AICA ARM CPU.
2024-02-29 16:51:25 +08:00
5b696f7c0d aica: initial register definitions 2024-02-28 21:37:26 +08:00
10d17d3c98 example: add gdrom_iso9660
This combines my iso9660 parsing code, with all of the prior gdrom packet
interface / command code.

The example, on real Dreamcast hardware, displays the first 2048 bytes [1] of every
file in the root directory on the serial console.

[1] or the size of the file, whichever is smaller
2024-02-27 00:28:39 +08:00
c45cb293f0 gdrom/command_packet_format: improve initializer; add _data() method 2024-02-26 20:32:33 +08:00
41b707e75d gdrom: add gdrom_bits 2024-02-26 18:04:23 +08:00
c95182081a gdrom: add gdrom_command_packet_format.hpp
This re-uses most of the code from the ta_parameter_format
generator--this was factored out to "generic_sparse_struct.py".
2024-02-26 15:31:40 +08:00
d622ee04a7 regs/gen: factor out read_input to a new module, csv_input 2024-02-26 14:19:05 +08:00
c851070604 gdrom: add gdrom register definitions 2024-02-24 17:04:39 +08:00
59708cc3cf examples: add software_ta 2024-02-23 23:47:43 +08:00
511d99563d maple_bus_commands: zero-sized structs should be zero sized
From the GCC manual.

> GCC permits a C structure to have no members:

struct empty {
};

> The structure has size zero. In C++, empty structures are part of the
> language. G++ treats empty structures as if they had a single member of type
> char.

I was not aware of the different behavior in C++.

This fixes every maple example--most were broken for multiple reasons, including
this one.

This also enables SH4 caching. This includes linking code/data into the P1
area (previously this was not the case).

The maple examples (which indeed involve much use of DMA) require much work to
successfully work with the operand and copyback caches. The vibration example
currently is the most complete, though I should consider more on how I want to
structure maple response operand cache invalidation more generally.
2024-02-02 22:05:10 +08:00
dcb9f36120 sh7091_bits.ods: partial
Notably missing is:

- BSC (PDTRA / PCTRA)

This also updates a handful of files to use the new sh7091_bits.hpp.
2024-01-01 23:43:06 +08:00
549254615e example: modifier_volume_with_two_volumes 2023-12-30 21:50:54 +08:00
de76c0bed2 ta_parameter_format: generate TA parameter formats from csv
This replaces all handwritten TA parameter format structures with
automatically generated structures.

All valid TA parameter formats are now declared.
2023-12-30 18:55:09 +08:00
7f9469c9a7 regs/gen/ta_parameter_format: incomplete 2023-12-30 17:38:15 +08:00
4bb04a0362 example: add maple_analog
Also adds the incomplete modifier_volume example.

This also adds vec2 for UV coordinates, and obj_to_cpp has been
modified to parse vertex texture coordinates from obj files.
2023-12-30 10:53:39 +08:00
2f7f0a6bdf example: add maple vibrator example 2023-12-17 12:57:06 +08:00
dec0f7c7a4 maple: add ft8 data transfer 2023-12-17 11:06:38 +08:00
7daff7e3ca example: add macaw_twiddle 2023-12-16 23:28:28 +08:00
39aa6b75a6 example: new maple "get_condition" demo
This is very barebones, and uses the serial interface to communicate
the status of the "a" controller button being pressed.

I'd like to make this a more interactive/graphical demo.
2023-12-15 22:08:23 +08:00
2689ad4011 example: add maple_controller
This broke maple_wink. I have not yet found why this happened.
2023-12-15 17:13:53 +08:00
25e299feba new "example" directory
This is a reshuffling of filenames, extensions, paths, make rules,
just because I felt like it.
2023-12-12 21:50:39 +08:00
25fef821b0 maple: read controller input on real hardware
There were two notable bugs:

- the maple transfer/data sizes were not being set correctly

- align_32byte always realigned the address of `_scene`, and not the
  `mem` parameter as expected. This had the effect of the maple-DMA
  send and receive buffers being the same buffer. On real hardware,
  this causes unpredicable behavior.
2023-12-10 00:44:33 +08:00
481a0cb0dc move maple definitions to a new maple/ directory
maple.cpp now uses the new maple_bus_commands.h
2023-12-09 16:38:57 +08:00
c8ed8cdf9e maple: add maple_bus_commands.h 2023-12-09 16:14:21 +08:00
f1a32d0719 maple: send a 'device request' command
On an emulator, the receive buffer is filled with the correct/expected
data for 'device status'.

I found this experiment useful:

- it revealed a bug in my register struct generator code (the
  maple_if-related registers were not at the correct offsets)

- it validates my understanding about endianness-swapping between the
  maple bus and the SH4
2023-12-09 01:31:34 +08:00
67f809c98d vga: use core_bits.h 2023-12-02 20:51:48 +08:00
ff2dcc7d71 draw 1 triangle 2023-11-30 10:02:49 +08:00
329ada55f1 add code loading and test program
This was used to troubleshoot video output and framebuffer
configuration registers.
2023-10-16 19:24:51 +00:00
99701f0b57 main: initial vga mode setting
This feels very hacky, and I'd like to make this better.
2023-10-13 05:36:38 -07:00
2bcf1aedef cache: clear all instruction/operand caches 2023-10-12 09:43:54 -07:00
a4ac9fa4c8 systembus.h: initial
This does not yet declare any externs, as I'm not certain how those should work.
2023-10-11 15:39:55 -07:00
5c4c107eaf add sh7091 and holly registers 2023-10-11 09:01:56 -07:00