Conversation
New multi-game core for the metafox-class members of downtown.cpp:
metafox (game_id 0) and arbalester (game_id 1), selected by MRA header
byte 0. cfg/files.yaml imports the shared cal50/kiwi building blocks;
only the divergent glue is local (jtarbalest_{game,main,sub,sound}.v).
Topology vs calibr50: X1-010 on the main 68000 bus (0x100000); the 65C02
is an I/O / protection coprocessor with shared RAM (main 0xb00000 <-> sub
0x5000); inputs flow sub -> shared RAM -> main. metafox uses the X1-017
offset*0x1f protection (gated to game_id 0); arbalest uses the 0x80000
debug-read stub instead. The sub I/O space's 0x1004 status port reads 0.
Shared sprite-engine change (kiwi + cal50): parametrize jtkiwi_obj,
jtkiwi_gfx and jtcal50_video with OBJAW (12/13) + SETAC (0/1). The
metafox-class X1-001 needs a 16 KB sprite RAM with the setac bank
(2 buffers, bank = ((ctrl2^(~ctrl2<<1))&0x40) -> word 0x1000). The
defaults reproduce calibr50/kiwi behaviour exactly; cal50 + kiwi lint
unchanged.
Shared X1-010 PCM fix (modules/jtx1010): the end register is widened to
9 bits so end=0 maps to the full 0x100-page range (metafox/arbalest never
write end, relying on that hardware behaviour). For end!=0 the compare is
bit-identical to before, so calibr50 is unaffected.
State (sim): both sets boot and render their attract screens; the X1-012
tilemap and X1-001 sprites render; the 65C02 I/O sub runs its loop and
registers coins/inputs; X1-010 audio plays. See cores/arbalest/doc/STATUS.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
asturur
marked this pull request as ready for review
July 7, 2026 08:03
Collaborator
Author
|
I turned ON ready for review because i need to grab the compiled caliber50 and jtkiwi |
Collaborator
Author
|
i have been told the audio looping on music with samples seems off. |
asturur
marked this pull request as draft
August 4, 2026 13:15
Collaborator
Author
|
@jotego your changes to cal50 and some let go on my side make this PR way thinner it was before. good news. I ll see what else i can do to avoid extra params. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Arbalest and metafox are 2 very similar games based on a different configuration of the seta hardware, the caliber 50 arcade board.
This core to work required some updates on shared modules that need to be tested once compiled, and the game themselves need to be checked for exact offsets.
I ll update the PR description and turn it non draft as soon as i also tested the affected games ( kiwi/cal50)
gameplay video from original pcb ( audio/video compare):
https://www.youtube.com/watch?v=CRsELrussJU from second 40
videos from the core
metafox_5000.mp4
arbalest_5000.mp4
( the videos ran slow because i encoded them wrongly )
close #1442