Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions cores/arbalest/cfg/files.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
arbalest:
- get: [ "*.v" ]
cal50:
- get:
- jtcal50_video.v
- jtcal50_colmix.v
- jtx1012.v
kiwi:
- get:
- jtkiwi_gfx.v
- jtkiwi_obj.v
- jtkiwi_draw.v
- jtkiwi_tilemap.v
jtframe:
- get:
- jtframe_ff.v
- jtframe_8bit_reg.v
- jtframe_edge.v
- from: ram
get:
- jtframe_ram.v
- jtframe_dual_ram16.v
- jtframe_obj_buffer.v
- jtframe_prom.v
- from: video
get:
- jtframe_vtimer.v
- jtframe_scroll.yaml
- from: cpu
get:
- jtframe_m68k.yaml
jt680x:
- get:
- jt65c02.yaml # I/O / protection sub-CPU (not sound, unlike cal50)
jtx1010: # X1-010 PCM — driven by the main 68000 here
33 changes: 33 additions & 0 deletions cores/arbalest/cfg/macros.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
CORENAME=JTARBALEST
JTFRAME_RATE=57.45

JTFRAME_JOY_RLDU
JTFRAME_BUTTONS=2

# Video
JTFRAME_COLORW=5
JTFRAME_PXLCLK=8
JTFRAME_WIDTH=384
JTFRAME_HEIGHT=224
JTFRAME_VERTICAL

# MRA
# Header byte 0 selects the game (0=metafox, 1=arbalest) for the shared bitstream
JTFRAME_HEADER=16
JTFRAME_BA1_START=0xA0000
PCM_START=0xE0000
JTFRAME_BA2_START=0x1E0000
JTFRAME_BA3_START=0x3E0000

# Saves video RAM for debug compilations
debug JTFRAME_IOCTL_RD+=12288
debug JTFRAME_IOCTL_RD+=8
# X1-001 configuration registers
debug JTFRAME_IOCTL_RD+=4
debug JTFRAME_IOCTL_RD+=1024
debug JTFRAME_IOCTL_RD+=1024
debug JTFRAME_IOCTL_RD+=8192

[mist|sidi]
# not enough BRAM for M68K RAM
JTFRAME_SKIP
46 changes: 46 additions & 0 deletions cores/arbalest/cfg/mame2mra.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
[global]
author=["jotego"]

[parse]
sourcefile=[ "downtown.cpp" ]
# This core ships the metafox-class members of downtown.cpp (sub = I/O CPU,
# X1-010 on the main 68000 bus). calibr50 is the cal50 core; the others differ.
skip.Machines=[
"tndrcade","tndrcadej",
"twineagl","twineagl1",
"downtown","downtown2","downtownj","downtownp",
"usclssic",
"calibr50",
]

[header]
info="""Seta downtown.cpp (metafox-class) family header, decoded in jtarbalest_game.v.
byte 0 = game_id (0=metafox, 1=arbalest). Bytes 1..15 reserved."""
data=[
{ setnames=["metafox"], data="00" },
{ setnames=["arbalest"], data="01" },
]

[buttons]
names = [
{ names="Shot,Bomb" },
]

[dipsw]
delete= [
{ names=["Copyright / License", "Licensed To", "Licensor Option", "Coinage Type"] },
]

[ROM]
regions = [
{ name="maincpu", width=16, reverse=true, no_offset=true },

{ name="sub", start="JTFRAME_BA1_START", no_offset=true },
{ name="x1snd", start="PCM_START" },

{ name="tiles", width=16, start="JTFRAME_BA2_START", no_offset=true },
{ name="sprites", width=32, start="JTFRAME_BA3_START", no_offset=true },
{ name="proms", skip=true }
]

order=["maincpu","sub","x1snd","tiles","sprites"]
116 changes: 116 additions & 0 deletions cores/arbalest/cfg/mem.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
params:
- { name: PCM_OFFSET, value: "(`PCM_START-`JTFRAME_BA1_START)>>1" }
clocks:
clk48:
- freq: 8 MHz
gate: [ snd ]
outputs:
- cen8
- freq: 16 MHz
outputs:
- cen_pcm
audio:
mute: true
channels:
# Same dual 4k/8k anti-alias filtering as cal50 (X1-010 left/right mono mix)
- { name: pcm_4k, data_width: 16, rsum: 47k, fir: fir_192k_4k.csv }
- { name: pcm_8k, data_width: 16, rsum: 47k, fir: fir_192k_8k.csv }
sdram:
banks:
- buses:
- name: main
addr_width: 20
data_width: 16
- buses:
- name: snd # 65C02 I/O sub-CPU program ROM (region "sub")
addr_width: 18
data_width: 8
- name: pcm # X1-010 samples (region "x1snd")
addr_width: 20
data_width: 8
offset: PCM_OFFSET
- buses:
- name: tile
addr_width: 21
data_width: 32
gfx_sort: hvvvx
- buses:
- name: scr
addr_width: 21
data_width: 32
- name: obj
addr_width: 21
data_width: 32
bram:
- name: ram # M68K work RAM (0xf00000-)
addr_width: 16
data_width: 16
din: cpu_dout
rw: true
# Shared RAM between the main 68000 (0xb00000, byte) and the I/O 65C02 (0x5000)
- name: shram
addr_width: 11
data_width: 8
din: cpu_dout[7:0]
addr: main_addr[11:1]
rw: true
dual_port:
name: subsh
din: subsh_din
dout: subsh_dout
rw: true
we: subsh_we
# X1-012 Video RAM
- name: tlv
addr_width: 14
data_width: 16
din: cpu_dout
addr: main_addr[13:1]
rw: true
ioctl:
save: true
order: 0
unless: [ JTFRAME_RELEASE ]
dual_port:
name: tlrd
dout: tlrd_data
# Palette RAM
- name: pal
addr_width: 10
data_width: 16
din: cpu_dout
addr: main_addr[9:1]
rw: true
ioctl:
save: true
order: 1
unless: [ JTFRAME_RELEASE ]
dual_port:
name: palrd
dout: pal_data
# X1-001 internal RAM
- name: yram
addr_width: 10
data_width: 8
din: cpu_dout[7:0]
addr: main_addr[10:1]
rw: true
ioctl:
save: true
order: 2
unless: [ JTFRAME_RELEASE ]
dual_port:
name: col
dout: col_data
# X1-001 external video RAM. metafox is 16 KB (0xe00000-0xe03fff): two 8 KB sprite buffers
- name: dma
addr_width: 14
data_width: 16
rw: true
ioctl:
save: true
order: 3
unless: [ JTFRAME_RELEASE ]
dual_port:
name: code
dout: code_dout
15 changes: 15 additions & 0 deletions cores/arbalest/cfg/mmr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
- name: x1012
no_core_name: true
size: 8
dw: 16
regs:
- name: hpos
dw: 16
at: "1,0"
- name: vpos
dw: 16
at: "3,2"
# vctrl[2]: bit3 (0x08)=tilemap bank (vram 0 / 0x1000), bit4 (0x10)=color/gfx mode (MAME x1_012.cpp)
- name: bank
dw: 1
at: "4[3]"
7 changes: 7 additions & 0 deletions cores/arbalest/cfg/msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
\BArbalester - Metafox\W FPGA core

by \GAndr\Wea Bog\Razzi\W
on the \RJTCORES\W framework
by JOTEGO + community

Reviewed by Jose Tejada
Loading
Loading