25 Commits

Author SHA1 Message Date
David Hunter
5d9d315749 epochtv1: Make overscan mask user-configurable 2025-09-06 19:17:32 -07:00
David Hunter
847dbfff6e epochtv1: More accurate VRAM address bus computation 2025-09-02 23:34:32 -07:00
David Hunter
258442b68c epochtv1: CPU ownership of VRAM bus is tied to RDB/WRB
- Fix WAITB timing to be 1 cycle on writes
- Fix effect of RDB posedge on WAITB
- Cycle timing now verified to match HW for block instruction VRAM copies
2025-08-30 21:32:29 -07:00
David Hunter
13db5a90e4 epochtv1: Re-observe WAITB and implement address-based state machine 2025-08-28 21:49:38 -07:00
David Hunter
91715ed880 epochtv1: Fix OAM copy timing and CPU access during
Improved HW testing reveals much simpler behavior than formerly documented.
2025-08-24 22:59:59 -07:00
David Hunter
e4bb5e5960 epochtv1: Add control register shadow copy 2025-08-17 20:50:50 -07:00
David Hunter
9bb4bdee77 epochtv1: Fix shadow terminology 2025-08-17 20:50:50 -07:00
David Hunter
8be787aec3 epochtv1: Registers are write-only 2025-08-17 20:50:50 -07:00
David Hunter
1f848e9070 epochtv1: More accurate BGM / OAM / VRAM access
- Don't copy BGM to a shadow copy
- CPU access to BGM and rendering can occur concurrently
- VRAM bus cycle rate is 1/2 pixel clock rate
- CPU access to VRAM zeroes concurrent sprite data read
- WAITB asserts on CSB, de-asserts on VRAM cycle
2025-08-17 20:50:45 -07:00
David Hunter
7f147e954d epochtv1: render sprites two rows at a time
- change the VRAM memory bus interface to match HW
- render background live, mix with OLB scanout
2025-04-11 22:40:34 -07:00
David Hunter
3c2282bd95 epochtv1: Tweak docs 2025-04-06 13:19:52 -07:00
David Hunter
0e2651042e epochtv1: Document background rendering details 2025-03-23 22:31:36 -07:00
David Hunter
aeac73c482 epochtv1: More sprite rendering 2025-03-23 22:31:35 -07:00
David Hunter
a17d728916 Fix row numbers 2025-02-17 22:23:23 -08:00
David Hunter
cfa1d96faa epochtv1: Sprite rendering 2025-02-17 20:07:28 -08:00
David Hunter
b3953734e6 epochtv1: Align background and sprites to render window
Window alignment now matches real HW.
2025-01-20 21:54:10 -08:00
David Hunter
0fc325cb88 epochtv1: Document screen size, char/sprite render coordinates 2025-01-20 14:13:59 -08:00
David Hunter
01a25d0385 Document uPD1771C pinout 2024-12-29 18:57:59 -08:00
David Hunter
c7086e691c upd7800: Implement \WAIT input
Probing the SCV reveals that the TV-1 asserts \WAIT when accessed,
extending T2 by one T-cycle. This includes uPD1771C accesses (for
which the TV-1 decodes address).
2024-12-27 22:27:47 -08:00
David Hunter
53962b75bc Document Epoch TV-1 pinout 2024-12-27 21:54:09 -08:00
David Hunter
d87a7e2f1e epochtv1: Match video timing to actual HW
I probed actual HW to learn its video timing. Findings documented in doc/epochtv1.txt.

A visible window is now defined, smaller than the full render window,
preserving the current screen size / aspect ratio.
2024-12-16 22:18:08 -08:00
David Hunter
0656691b8b epochtv1: Implement ioreg0 bit 2: hides sprites 64-127
Two games -- Kung Fu Road and Super Golf -- set this bit to hide half
of the sprites.
2024-09-07 19:49:00 -07:00
David Hunter
4b2b4bf510 scv: Implement cartridge ID and automatic mapper selection 2024-09-02 23:42:59 -07:00
David Hunter
f9846ca5f8 scv: Support 32K ROM + 8K RAM cart 2024-08-31 22:58:44 -07:00
David Hunter
3a2b0f3232 doc: Add developer notes 2024-08-29 22:33:17 -07:00