84 Commits

Author SHA1 Message Date
87f468e83a example/testscene: add converted textures 2025-01-31 17:24:59 -06:00
4d5205a8a0 add testground 2025-01-31 10:03:59 -06:00
216501d2b0 add testscene 2025-01-31 06:22:38 -06:00
b156e2d24e wiffle_screen_space_store_queue2: add alpha blending 2025-01-28 08:59:30 -06:00
b4ae852b00 example: add wiffle_screen_space_store_queue2 2025-01-28 01:37:24 -06:00
24d35e8812 example: add wiffle_screen_space_store_queue 2025-01-27 21:54:05 -06:00
1c24f9e297 wiffle_screen_space: use sobel_fipr 2025-01-26 07:03:37 -06:00
0265a1c4ed sobel_fipr 2025-01-26 06:39:38 -06:00
bf2c9a3d8c example: add fipr 2025-01-25 22:52:07 -06:00
05e0a36ca7 wiffle_screen_space: use DMA for transfers to/from texture memory 2025-01-25 20:51:30 -06:00
65d768bdaf screen space sobel 2025-01-25 03:48:57 -06:00
c7c0ce277a add sprite_gouraud/texture_memory_alloc3 2025-01-24 22:47:28 -06:00
8b4b79a705 example: add triangle_gouraud 2025-01-22 22:54:57 -06:00
0c70ce02ec example: add gdrom_jvm_boot 2025-01-01 07:16:02 -06:00
f7c8ba294e new examples 2024-12-30 17:06:00 -06:00
d74804f2b3 serial_transfer: disable maple debugging 2024-12-16 11:20:13 -06:00
366432e4af common.lds: fix vbr alignment 2024-12-05 20:50:02 -06:00
e36735f6c2 improve for out-of-tree usage 2024-12-03 10:43:08 -06:00
9933d945bf add debug_protocol.hpp 2024-11-16 14:18:16 -06:00
17c1418574 example: fixed all examples 2024-10-27 11:01:54 -05:00
d55fa64714 example: restore more examples 2024-10-27 07:23:08 -05:00
fc536bd93a example: restore several examples
The dump_* examples were removed because the serial_transfer example now handles
that use-case more generically.
2024-10-27 01:17:59 -05:00
ff7a03a75c serial_transfer: rewrite 2024-10-26 04:54:06 -05:00
b133879f7e serial_transfer: fully asynchronous maple display write 2024-10-22 04:19:37 -05:00
9043842796 example: add aica_gdrom_dft 2024-09-23 22:57:30 -05:00
9f90e5e3f6 example: add sheik_vq 2024-09-13 13:33:31 -05:00
32b8f85a4f example: add cube_vq_rectangular 2024-09-13 05:35:43 -05:00
03403c95aa example: add sheik 2024-09-13 03:55:02 -05:00
8cead9614f add pipelined rendering examples
This adds a new texture memory allocation header,
texture_memory_alloc2.hpp, with two of each memory area.

This also adds two new examples, "cube_textured" and "cube_vq" that
demonstrate using the new texture_memory_alloc2 to perform CORE
rendering, geometry transformation, and tile acceleration
concurrently.
2024-09-09 04:20:40 -05:00
90fe17ac5c example: add tetrahedron 2024-05-31 21:41:00 -05:00
dd5969dc1f example/: add vq and sierpinski 2024-05-25 20:42:59 -05:00
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
5c192ffd2e text_editor: initial gap buffer implementation 2024-05-19 14:20:27 -05:00
bcaa9789cf texture_memory_alloc: rework texture memory allocation
The previous texture_memory_alloc.hpp was written based on an
incorrect understanding of the "32-bit" and "64-bit" texture memory
address mapping.

The primary motivation is to rearrange the texture memory address map
so that "textures" (64-bit access) do not overlap with 32-bit
accesses, such as REGION_BASE or PARAM_BASE.
2024-05-12 17:06:00 +08:00
c8e84be5d2 common.lds: define vbr alignment
This also creates an example of a VBR+0x100 function in interrupt.cpp
2024-04-15 18:22:28 +08:00
d912278afd serial_transfer: self-relocate to the end of system memory
The serial_transfer loader, as long as the target program voluntarily
terminates itself at some point, is able to load multiple programs
consecutively without requiring a physical power cycle to reload the
transfer program from CD.

The current example.mk juggles between two different "memory layouts",
one for "burn to a physical CD" and another for "load via serial
cable". Because the serial_transfer program now relocates itself to
the end of system memory, this means the 0x8c010000 area is now usable
by programs that are loaded by serial_transfer.
2024-03-13 20:56:37 +08: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
c0e10fe8f1 vga: delete
This is replaced with the (slightly cleaner) holly/video_output.
2024-03-08 20:46:55 +08:00
0ff0aa5346 example/aica_gdrom: play audio read from gdrom
This still has issues, notably:

Despite the first 16kbytes of audio being loaded prior to starting the
AICA ARM7 CPU, the GDROM drive returns "busy" for the following
~48kbytes. This in turn causes the AICA to play audio from
uninitialized memory.

There is also a separate issue where the timing of changing the start
address of the audio channel causes a faint popping sound throughout
the audio playback.

I should do more timing experiments with the GDROM drive, and improve
this example to play the audio with fewer artifacts.
2024-03-04 16:40:25 +08:00
0aea1d0db2 example/aica_gdrom: initial
aica_gdrom currently copies from system ram to AICA ram, 128 bytes at
a time, synchronized with the AICA sample timer.
2024-03-01 19:38:47 +08:00
57721c485f example/arm: rename to channel 2024-02-29 17:32:54 +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
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
e4c2a047fa example: add gdrom_test
This successfully reads the first 17 sectors of the first data track
of a CD.
2024-02-25 13:27:39 +08:00
38b4dda6ab software_ta: gouraud shading experiment 2024-02-24 09:31:21 +08:00
59708cc3cf examples: add software_ta 2024-02-23 23:47:43 +08:00
4e71e002bf examples: add dump_object_list 2024-02-23 18:14:24 +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