#Sega Saturn
1 messages ยท Page 85 of 1
Can't remember the channel name atm, but the laser guy did a teardown of the 3DS screen.
its a nice console to softmod, with the DS BC and all
I didn't realize the parallax part was also layer of LCD lines, which is how they made it adjustable.
I always thought they just sacrificed half of the horizontal res, when not in 3D mode.
But it's smarter than that.
i like how the new 3ds used eye tracking to like, make the sweet spot follow your head
I noticed something curious
did it just work correctly and then suddenly stop?
If you switch between them quickly, it will work "normally". But if you don't switch within 1-2 seconds, the switching will not work.
Another non-surprise... with Dual Lightguns, the core no longer fits.
oh god
It might have fit before, but somebody just added Cropping and Scaling. ๐
I can't reproduce it
I'll see if there's a possible overlap of status bits. That would cause weird behaviour like that.
probably still doable, but gosh itโs gonna be tight ๐ค
time to ifdef that alsa code out
does the saturn core still have scandoubler in it?
Can't see any obvious issue with the menu / status bits.
en216p <= ((HDMI_WIDTH == 1920) && (HDMI_HEIGHT == 1080) && !forced_scandoubler && !scale);
.CROP_SIZE((en216p & vcrop_en) ? 10'd216 : 10'd0),
scandoubler can be removed if it is, there's precedent for that (n64, psx)
But vcrop_en gets AND'ed with en216p. If that means anything?
AFAIK, only on Reflex Adapt and on my DIY adapter
scandoubler is not active
I think the 2160p mode can only be enabled via MiSTer.ini ?
It's just... that code above, looks to assert en216p when the HDMI res is 1080p?
Yeah, the status stuff looks OK to me.
there is no conflict
is it worth wiping core config and retrying
maybe its one of those fuzzy old-config issues
Ooh, yeah. Forgot about that. Will try now.
`ifndef MISTER_DISABLE_ALSA
.ch0_addr(alsa_address),
.ch0_burst(1),
.ch0_data(alsa_readdata),
.ch0_req(alsa_req),
.ch0_ready(alsa_ready),
`endif
my second mister, I can do this indefinitely, it always comes back to the correct option
ALSA be gone!
`define MISTER_DISABLE_ALSA 1
so whatโs that?
mmm, so mt32 pi stuff
no
nah that runs off snac, this is for like when you run munt on the arms
the top300 image used it to play mp3 soundtracks for doom
heh nice
i dont think it'll be missed on saturn, good call zakk
AFAIK, there is only one 32-bit wide "port", which allows the ARM and FPGA side to communicate.
Which is what MiSTer uses for most of it.
But you can also write stuff to an area of DDR3 on the Linux side, and read it on the FPGA side, and vice-versa.
The ALSA module uses that, by reading a chunk of audio samples from DDR3, that the ARM Linux side has written there.
So the ALSA thing can mix that with the core's own audio, and out to HDMI and Analog / I2S DAC.
(there is also AXI, which is like ARM's version of PCI, which is capable of transferring with VERY high bandwidth, but I don't know of any cores that use that. Sorg found it a bit too unstable when switching between cores.)
It's a bit disappointing that they didn't add a few extra 32-bit internal IO ports, tbh.
It really wouldn't have taken them much at all.
So almost all of the comms between ARM and FPGA goes over the same 32-bit bus, including Disk/Cart/Tape/ROM loading, OSD, and CD drive handling.
// HPS will not communicate to core if magic is different
wire [31:0] core_magic = {24'h5CA623, core_type};
cyclonev_hps_interface_mpu_general_purpose h2f_gp
(
.gp_in({~gp_out[31] ? core_magic : gp_in}),
.gp_out(gp_out)
);
Pretty much just that. lol
The main MiSTer app on the ARM side knows if a core is loaded (FPGA configured), if it can read the magic number.
That lets you load a new RBF (or via MRA), or load a SOF via USB Blaster, and the main MiSTer app will just keep polling, until the FPGA is ready again.
ASCAL uses DDR3 for the framebuffers, for the HDMI upscaling etc.
It's possible for the MiSTer app to take a screenshot, by reading the same chunk of DDR3.
And yes, it's even possible to stomp all over the Linux memory area, if you do something silly in a core. lol
The HPS_IO block is used to handle a lot of the ARM<->FPGA comms.
It's a bit of a throwback to the SPI block used on the MiST / Minimig core.
With basic command bytes, which allows the ARM app to read/write stuff.
So it can shove things like the Keyb, Joystick, Mouse values into the core.
Or write to the OSD block(s), which use around 4KB each (VGA/RGB, and HDMI OSD blocks), as a simple bitmap.
So the ARM app really does only handle the higher-level IO stuff.
After that point, the core is pretty much on its own.
I had a coffee earlier.
omg, it compiled.
I still wanted to add a composite blend, but I guess it doesn't make sense now ๐
ok compostie blend will fit ๐
I don't get it...
STILL have gfx layers missing. Grrrrrrrrrrr
Trying not to ragequit.
I've done about 30 compiles this week, and it's getting a bit old.
How long does it take you to compile the core ?
oh, ofc is compiled - I commented out the second Lightgun instance earlier. sigh
35 minutes, 16 seconds.
On my slightly older (stock) 3700X, with 16GB.
I would very much like it to take 1 minute ๐
still somehow faster than ao486
RAM is only 3200 MHz. I think I bought faster stuff, but it wasn't reliable, or something.
I've worked on cores that only take around 15 minutes, and that's bearable.
Anything above 20 mins, and it's just awful. lol
I used to compile stuff on the ol' Q6600. Some cores would take over an HOUR.
jeez i just realized if we get a bigger fpga someday build times are going to get even longer
I have this old Dual Xeon workstation (HP Z800) on the bench atm. Waiting for a PSU.
Just messing with it really, but I'm holding onto the idea that it might be faster for Quartus.
Even though I know it won't be. lol
Each Xeon core is less than HALF the speed of this 3700X, apparently.
a big part of the build is single core limited iirc
Yep, Quartus really sucks for taking advantage of more cores.
But I heard that it compiles faster, with the later gen Intel CPUs?
for me it's about 28min
The only way to really do this more quickly, short of buying the World's fastest workstation, is to partition the design.
And use a smaller FPGA for the part of the logic you're working on.
And the bulk of it on a larger FPGA.
With enough IO between them, to transfer what you need.
Or... just run far more stuff via simulation.
Even if the sim can't run "realtime", it translates Verilog into a C model VERY fast.
For the DC PVR tests, Verilator runs in about ONE second.
or just wait for faster CPUs to get cheaper which seems to be working kind of ok so far, its steady anyway
I think it's mainly just that Quartus sucks. lol
isn't there some like $50k a year version of quartus that can do part-recompiles
I can understand that parts of the compile (synthesis) process are probably hard to parallelize, but it still sucks.
When Intel bought altera (even though Intel have made the chips for them for decades), I stupidly thought they would do a ton more work to improve Quartus.
Then again, I haven't tried the very latest version, which is like 22 or 23 now.
There is the Partition and Smart recomp thing, yeah. I don't know how much faster it could be.
One of the main reasons I built a 5900X as well, is to help with compiles and simulation.
I need to swap the two PCs around soon, so I'm at least using the better one.
(since I swapped the rooms around, I ended up using the older 3700X, and kinda stuck with it)
I talk too much.
I see what happened now...
When some of the menu / status bits were overlapping earlier.
The main MiSTer app defaults those to OFF, if the CONF_STR has changed since the last time it ran the core.
(ie. If the mapping of some of the status bits changed, vs which line they appear on the menu.)
oh i always wondered how that works
"P2O[46],LGun P1 XY Ctrl,Joy 1,Mouse;",
"P2O[47],LGun P1 Buttons,Joy 1,Mouse;",
"P2O[49:48],LGun P1 Crosshair,Disabled,Small,Medium,Big,None;",
The main MiSTer app on the ARM, has to read in the entire CONF_STR from the core, when it first loads.
wire gun_p1_xy_mode = status[46];
wire gun_p1_btn_mode = status[47];
wire [1:0] gun_p1_cross_size = status[49:48];
The bits set in the CONF_STR (menu items) just tells the app which bits of the "status" bus to twiddle, based on the choices for each menu option.
So, most of the time, main MiSTer doesn't need to know (or care) what those bits actually do.
It only cares when it's an option to Load a File, and specific things like that.
It's quite clever, because it keeps the majority of the cores more generic.
yeah and its doing like, something sensible for new unknown settings
(for many years, you had to choose the Letter that relates to the status bit number, which really really really really sucked.)
// Status Bit Map:
// Upper Lower
// 0 1 2 3 4 5 6
// 01234567890123456789012345678901 23456789012345678901234567890123
// 0123456789ABCDEFGHIJKLMNOPQRSTUV 0123456789ABCDEFGHIJKLMNOPQRSTUV
// XXXX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX X XXXXXXXXXX
Worst of all - the entry in CONF_STR used either a lowercase or uppercase "o". lol
Now you can just use "P2O[46]" etc.
"Page 2... Output on status bit [46]".
Page 2, just means "Plonk these menu entries on a separate page of the OSD".
The MiSTer app does detect overlapping bits, too.
I should probably check the output more often.
And the way you do that is...
Log in via SSH, do a "killall MiSTer", then run it again. lol
Ok, that's weird.
It's never done this before.
Seems to get stuck, and doesn't display all of the info.
I think that's my queue to quit for the night. lol
debug=1 in mister.ini
Ohhh. WHY, Sorg? Whyyyyy. lol
oh yeah debug=1 is newish
because it is normally attached to a serial console and it it too slow and it stalls main
THAT's better.
I don't see any real reason to hide that stuff. lol
Most people won't ever see it.
But devs often need it.
it caused issues for users including slow video resolution transitions
and dropped controller inputs
Fair enough.
Even printfs slow down C code quite a bit, especially over serial.
It's just... it's nice to have an extra thing to worry about. ๐
yeah and some of the output was like, just insanely verbose
like reprint the entire ini
I just saw that - that's pretty rough.
It only really needs to parse the INI, and show any errors.
so yeah, off by default now ๐
OK
INFO: Video resolution: 352 x 240, fHorz = 15.7KHz, fVert = 59.8Hz, fPix = 7.16MHz, fVid = 57.27MHz
INFO: pr = 8, de_h = 384, de_v = 16
INFO: Frame time (100MHz counter): VGA = 1671508, HDMI = 1666118
INFO: AR = 128:105, fb_en = 0, fb_width = 0, fb_height = 0
Virtua Cop. ^
Even stuff like that is useful.
'tis also shown in the OSD, though.
Bring up the menu, then hit Left.
oh yeah i could've just checked that earlier
my arms are tired from shooting so much today, you've been developing even longer than i've been shooting heh. don't forget to take a break. you already made my sunday
Menu options will be grouped together later.
So the LGun options, with their respective Pad / port setting.
And the Lightgun stuff will also get grey-out, unless Virt LGun is set.
And now the Crosshairs logic becomes more complex.
.R((lg_p1_target && lg_p1_ena && (~&status[44:43])) ? {8{lg_p1_target[0]}} : R),
.G((lg_p1_target && lg_p1_ena && (~&status[44:43])) ? {8{lg_p1_target[1]}} : G),
.B((lg_p1_target && lg_p1_ena && (~&status[44:43])) ? {8{lg_p1_target[2]}} : B),
No point replicating the logic there.
wire lg_p1_targ_draw = lg_p1_target && lg_p1_ena && (status[49:48]==2'd0);
wire lg_p2_targ_draw = lg_p2_target && lg_p2_ena && (status[60:59]==2'd0);
.R(lg_p1_targ_draw ? {8{lg_p1_target[0]}} : lg_p2_targ_draw ? {8{lg_p2_target[0]}} : R),
.G(lg_p1_targ_draw ? {8{lg_p1_target[1]}} : lg_p2_targ_draw ? {8{lg_p2_target[0]}} : G),
.B(lg_p1_targ_draw ? {8{lg_p1_target[2]}} : lg_p2_targ_draw ? {8{lg_p2_target[0]}} : B),
Tada!
Works as a priority encoder.
So the colour (p1 target) will always be drawn on top of the p2 target.

P1 crosshair set to Red.
P2 as Green.
Could add the colour choice to the OSD, but it's a waste of status bits
[127:0] status
status bus does have 128 bits, but I'm not sure if you can directly access them.
you can
Ahh, thanks.
I wish I'd remembered that earlier. lol
Don't see many cores using more than 64 bits.
#ultra64
hey nice it built with 2p support?
It did, but I forgot to change some status bits, so the Crosshair doesn't work.
It's really hard to make a "neat" PR.
And I don't yet know if Dual Lightguns will work properly.
i dont mind the crosshair not working if you want me to test
It seemed to register each player before, with a different colour "splodge" in Virtua Cop.
But I'm not 100% sure it will actually work with separate XY control for each.
Might be some other bits broken in that RBF.
I said "2X" instead of "Dual" in the filename, to not confuse with the Dual SDRAM thing.
That RBF is the Single SDRAM core, so should work on all setups.
brb then
You might find one Virt Lightgun only works when enabled on Pad 2, with Digital pad on 1.
Or vice-versa. lol
Awesome, thanks. ๐
The crosshair isnโt working so I canโt tell about the horizontal offset thing
Having too much fun in virtua cop anyway lol
Was that a pair of GunCon 3's?
Pair of retroshooter3s
OK
Wickerwaka added support yesterday so this is basically like Xmas lol
Yeah joystick mode
Mr Martin
OREGs...
Digital Pad on both ports...
F1 02 FF FF F1 02 FF FF
Virt LightGun on Pad 1, Digital on Pad 2...
A0 F1 02 FF FF F0 FF FF
Digital on Pad 1, Virt LightGun on Pad 2...
F1 02 FF FF A0 F0 FF FF
Virt LightGun on both...
A0 A0 F0 FF A0 F0 FF FF
Not quite sure how to interpret that.
But since the LG ID = 0xA0, I think the lower nibble denotes how many Bytes follow it.
No extra bytes after 0xA0, as it's a "simple ID".
That's why the F1 02 gets shuffled along, with the LG on Pad 1, and Digital on Pad 2.
Probably.
@inner token Does that sound correct?
Looks like the actual detection in the SMPC is OK.
But there is a weird issue, when you have Virt LG on Pad 1.
In Virtua Cop, on the Gun Adjust menu, both cursors either side (for P1 and P2 guns) flash.
And looks like one is flashing at half (or less) of the rate of the other.
Like it's checking the LG stuff during Vblank, but only half as often for the other LGun.
Even though there is only one LG actually enabled.
Could just be the way the game is, as it maybe forces the Digital pad on Pad 2 as a second "light gun" ?
Maybe that is a bit wrong.
Digital on Pad 1, LG on Pad 2, and it puts the 0xA0 in the FOURTH byte along.
Which is how I thought it worked originally.
ie. Each "half" of the OREGs assigned to each player.
Gonna chill for a bit. This is super tiring.
Dual wielding light guns is actually really hard lol
I never knew if you start virtua cop 2 with the lightgun in port 2 you play as the lady cop
I was mostly using it on port 2 as well, and never even noticed. lol
Freddo, right now ^
Crosshairs still broken.
"D6P2O[49:48],LGun P1 Crosshair,Small,Medium,Big,None;",
You don't generally see menu options where 3 == none.
Nearly impossible to calib without the Crosshairs.
Recompiling... for the 400th time
F1 02 FF FF F1 02 FF FF
Virt LightGun on Pad 1, Digital on Pad 2...
A0 , F1 02 FF FF
Digital on Pad 1, Virt LightGun on Pad 2...
F1 02 FF FF , A0
Virt LightGun on both...
A0 , A0```
those are the only bytes that matter, the rest don't matter and can be leftovers from something you had connected before. like mission pad uses alot of bytes, if you had it selected before you switched to LG some of the mission pad bytes would still be there
OK, thanks. That clears it up a lot.
So, if you had both LGs enabled, you'd expect to see the 0xA0 then 0xA0 right after, yep?
oic, yeah.
F1 02 FF FF
ID, then "Two bytes follow"?
Or, the lower nibble of the first byte, denotes it's an extended packet, erm, something.
f1 = port status, 0 2 nibble is datasize. and the data FF FF changes with button presses
OK, that looks good then.
Other issues with the LG, might be to do with the actual SMPC implementation.
Or the way it's clearing the "Light" flag, for each player.
But it's mostly working now.
I guess if it were really broken, Freddo wouldn't have been able to use the tracking, with both guns at once.
Might have a snooze for a while.
Thanks everyone, for your help. ๐
Hi everyone ! I am not new to Mister but am new to the Discord channel. I am super excited with the possibility of playing Sega ST-V games. I have downloaded the nightly build already that supports it but it looks like I need additional MRA files in order to actually play these games ? Can anybody give me some direction on the correct way to setup these ? Trully appreciate it.
#1046941029296779344 message
Welcome!
Heyo! Welcome. Thereโs info somewhere. Where did we leave it?
@ebon oracle https://github.com/zakk4223/STV-MRA
There you go. Directions are in the github page
Super appreciate it mate !! I will follow the directions and test it !
Check the compatibility tracker too. Only like four games worth playing currently work. Before you test a dozen games that donโt work haha
unless you enjoy loading things and watching them boot into black screens
I'm not here to shame
Blessed black emptiness like my soul
One time I booted and got a green screen.
I could barely contain myself.
You almost died..hard
I shame. That's my kink.
I hope I die hard
So that means you can't kinkshame my shamekink.
honestly we lost a little bit of our humanity when they shuttered vine
Kinkception.
Well played...
heck yeah
"P2,Input;",
"P2-;",
"P2O[27],Pad 1 SNAC,OFF,ON;",
"P2-;",
"D5P2O[17:15],Pad 1,Digital,Virt LGun,Wheel,Mission Stick,3D Pad,Dual Mission,Mouse;",
"P2-;",
"D6P2O[46],LGun P1 XY Ctrl,Joy 1,Mouse;",
"D6P2O[47],LGun P1 Buttons,Joy 1,Mouse;",
"D6P2O[49:48],LGun P1 Crosshair,Small,Medium,Big,None;",
"P2-;",
"P2-;",
"P2O[20:18],Pad 2,Digital,Virt LGun,Wheel,Mission Stick,3D Pad,Dual Mission,Mouse;",
"P2-;",
"D7P2O[57],LGun P2 XY Ctrl,Joy 2,Mouse;",
"D7P2O[58],LGun P2 Buttons,Joy 2,Mouse;",
"D7P2O[60:59],LGun P2 Crosshair,Small,Medium,Big,None;",
Scrolling past the Wheel setting, still quits out of menus, or sometimes back to the CD player app.
Not sure why that happens. It's either triggering some button combo, or something in the SMPC doesn't like it.
ie. It was doing that before I added any of the Lightgun stuff.
The Lightgun menu options are grey-out, unless you select "Virt Lgun" for the Pad 1 or Pad 2 option.
P1 crosshair is Red.
P2 crosshair is Green.
That's currently hard-coded.
Enabling SNAC greys out the Pad 1 settings, which I think could be worth adding to other cores that are able to use SNAC.
There is no "Off" option for Pad 1 nor Pad 2 now. The Virt LGun has replaced that.
with this update you can now play Policenauts on the big screen and with a gun in pad 2.
while snac, which is currently stuck to pad 1 canโt.
Some combinations of LGun and standard controller might not work. Needs some testing.
oic, yeah, some games expect the LG on port 2.
SNAC could easily be mapped to either port, btw.
Another tweak. lol
So the menu option would just be SNAC: Disabled, Pad 1, Pad 2.
Ohh, I know - could just add SNAC to the controller "Type"... no, that won't work.
Can't allow SNAC to be applied to both joyports at once.
Two ports, One SNAC.
It would be like a Pam Anderson boating video.
I have a Saturn Controller I want to test out. Anyone know a game that uses the L and R buttons?
think its fine to leave these hardcoded, no other cores let you chose the color and i've not seen any complaints
amazing work btw! PR time?
I'm a little bit worried it looks like I've changed too much at once.
But most of it is for the Lightgun stuff.
I also changed the CONF_STR, to use the newer-style bit selects.
I'm fairly certain they are correct, but I need to triple-check.
Then I guess just do the PR, and see if I get "Sorg'ed" or not.
srg does the merges for saturn he seems a bit kinder ๐
PR done.
Not sure if I wrote too much, or too little in the PR. lol
I really hope there isn't some Saturn audio which is passed via ALSA.
I don't think there is?
Anyway, let's see what happens.
I was gonna say "This took over 30 Quartus compiles to get working, please be gentle..."
Forgot the commits were done via my JAMMIX account. Oh well.
no, nothing should be using alsa
it requires you to run an audio playing app on the linux side
Yeah. Just in the back of my mind, I thought maybe somebody added some weird esoteric extra sound chip emulation. lol
no, that'll be ST-V, lol
I just simplified the Crosshair logic a tiny bit, as it didn't look great before.
I think he might not like the fact that the core is using 99% now.
Might try to get the spoofer working, for Radiant.
But I expect it checks the Protection IC far more often, between each stage, or multiple times each stage.
No way I'm good enough to play the game, to test that theory.
//SCU
bit [24:0] CA;
assign STVIO_CS_N = ~(CA >= 25'h0400000 && CA <= 25'h040007F && ~CCS0_N && CART_MODE == 3'h5);
assign STVPROT_CS_N = ~(CA >= 25'h4fffff0 && CA <= 25'h4ffffff && ~CCS0_N);
Need to figure out which memory range the Protection IC is in.
'cos the CA bus (C Bus address) from the SCU only has 25 bits.
And the Prot IC is clearly mapped with addr bit [26] High.
0x04000000 0x04FFFFFF CS1 Cartridge 1
Oh, OK, it's mapped to the very end of the Cart space.
Technically, that's the Saturn CS1 range above, but it's the same for ST-V.
map(0x02000000, 0x04ffffff).rom().mirror(0x20000000).region("abus", 0); // cartridge
Yep, I reckon it's just the second half of that.
assign STVIO_CS_N = ~(CA >= 25'h0400000 && CA <= 25'h040007F && ~CCS0_N && CART_MODE == 3'h5);
assign STVPROT_CS_N = ~(CA >= 25'h0fffff0 && CA <= 25'h0ffffff && ~CCS1_N);
Sorry, Lightguns are old news, gotta keep on movin'
Compiling with the Radiant spoofer thingy added.
It's gonna need some debugging.
But just seeing if I can get it to react to the Start button would be great.
what are you outputting to spoof it?
From the MAME debugger last night...
Radiant Silvergun...
Writing 00 to 4FFFFF1
Writing 0800 to 4fffff8
Writing 0010 to 4fffffA
Writing 7777 to 4fffffC
Writing 01 to 4FFFFF1
All subsequent reads from 4FFFFFC...
00000000 (x4)
10101010 (x4)
20202020 (x4)
30303030 (x4)
40404040 (x4)
50505050 (x4)
60606060 (x4)
70707070 (x4)
80808080 (x4)
90909090 (x4)
A0A0A0A0 (x4)
B0B0B0B0 (x4)
C0C0C0C0 (x4)
D0D0D0D0 (x4)
E0E0E0E0 (x4)
F0F0F0F0 (x4)
Repeats reading this chunk, many times...
00010203
04050607
08090A0B
0C0D0E0F
And then Writes 00 to 4fffff1
It doesn't even read/write anything else after that, and that's enough to get into the game in MAME.
But I'm sure it will read between stages, or multiple times per stage.
I'm not even checking the Writes at first.
Just blindly incrementing the values, every time offset 0xC is read.
I don't think it does reads other than start protection
I'm hoping so.
It sounds like it was a case of "We already have Cart PCBs with the protection IC on, we'll use it for a quick check for this game".
Type thing.
I just realized, I don't have SignalFlap enabled on this core.
Going to suck, getting it to compile again. I'll have to disable the CD drive stuff.
there's some other sega game that uses the decathlete protection chip that used it only to ask to to encrypt a static string which it then compares with a constant
and that's it
went through all the trouble of putting that thing on the game, and that's how they used it
Might not be too bad, to get a few extra games running, in that case.
oh, no this was a model2 game or something
I should probably take a day off tomorrow (today), as my brain is totally fried.
all the ones that use it on ST-V are like, decrypting graphics roms or something
Yeah.
I had a look at some of that stuff many years ago, with a view to doing a NAOMI cart emu.
Of course I never finished it. I mean, what else do people expect? lol
Will have to tackle that soon, when I eventually get around to building the new DC mobo.
At least GD Emu wasn't too bad to get running, so I can "port" that over.
๐ค
It might have something to do with my ini-settings
is it okay if i share the saturn lightgun build on some lightgun discords where i hang out?
@thorn pagoda Of course. ๐
Just tried the Radiant Silvergun thing... nope.
Need to disable the CD stuff, so I can use SignalFarp to debug.
Astra Superstars
// ST-V hookup for 315-5881 encryption/compression chip
Known ST-V Games using this kind of protection
Astra Superstars (text layer gfx transfer)
Elandoree (gfx transfer of textures)
Final Fight Revenge (boot vectors etc.)
Radiant Silvergun (game start protection)
Steep Slope Sliders (gfx transfer of character portraits)
Tecmo World Cup '98 (Tecmo logo, player movement)
Another good reason to NEVER used single-letter signal names in your HDL.
It makes it very very hard to search for those signals.
@mortal mist can I ask you what parameters are in ini-settings? I suspect that this might be the issue
my friend was disappointed that we couldn't do 10 player Bomberman on the Mister so he brought his own Saturn.
I think I captured the first Writes to the protection IC.
Zoomed out, you can see the multiple reads.
I expected one of the cart Chip Select lines to be asserted at the same time, but they don't seem to?
MAME thing...
Best to send your ini, maybe something is causing the problem. You don't need to set anything specifically, it just works. I use 1920x1080 res , vsync 1 , no vrr
I was being dumb, of course.
CCSx_N are the Chip Selects for the CBUS (CPU bus).
I need to be looking at ACSx_N, for the Cart bus.
From the SCU...
if (!ABUS_CCS1N_INNER) ACS0_N <= 0;
else if (!ABUS_CA_INNER[24]) ACS1_N <= 0;
else ACS2_N <= 0;
Another day, another compile.
assign CCS0_N = MSHCS0_N;
assign CCS1_N = MSHCS1_N;
assign CCS2_N = MSHCS2_N;
assign CCS3_N = MSHCS3_N;
OK, so those really are direct from the Master SH2.
(Slave SH2 control signals pass through the Master SH2, so you just treat them like one chonky CPU)
wire ABUS_SEL = (~CCS1_N | (CA[24:20] < 5'h1A & ~CCS2_N)); //02000000-059FFFFF
wire BBUS_SEL = ( (CA[24:20] >= 5'h1A & CA[24:16] < 9'h1FE & ~CCS2_N)); //05A00000-05FDFFFF
Okay. When I get home, I'll send you the .ini file
Wait, it doesnโt work in 10p mode on the Saturn core? ๐ฑ
We only get 1 controller port with SNAC. You need 2x 6 player adapters for OG hardware. Mister has a hard limit of 6 players not to mention that the core does not support multitap emulation.
Oh shite. So then, with usb controllers, you could have up to 6 human and 4 com players then?
yeah. or 6 players, a snac, and a multitap
So with a snac+ 1x multitap + usb controllers, 10p is still possible then
No?
I'm not sure if you can mix snac with USB
but the core would have to support multitap
which it does not
Yeah Iโm not sure either
Oh, you said it doesnโt support emulation of multitap, I thought that meant via USB, not snac
yeah. That's what I mean. The same way work is being done with the light gun right now, someone would have to do that with the multitap
So 6 human and 4 com is the current max
yeah. And to get the 6 human you would need snac and a physical multitap
The 6Player, called the Multi Terminal 6 (ใใซใใฟใผใใใซ๏ผ) in Japan and 6-Player Adaptor in PAL regions, is an accessory for the Sega Saturn that adds five controller ports to the system, thus allowing more users to play simultaneously in compatible games.
Just need a Saturn snac then
Just to confirm tho, canโt the Saturn core only do 2 players at the moment?
Via usb that is correct
this part is a little tricky because a lot of the compatible boards use a 40 pin and you lose a ram chip. I'm probably going to wind up cobbling one together because no one sells the right parts to just use the Arduino GPIOs
Shite. Iโd be looking for a buy it solutions
Who merged with who in the what now?
The lightgun module was taken from the latest Mega Drive core, with some tweaks for Saturn.
The module doesn't currently use the FIELD, INTERLACE, VRES, nor DCE_R signals, but they are ther...
The dual ram build failed https://github.com/MiSTer-unstable-nightlies/Saturn_MiSTer/actions/runs/13109172709/job/36569171803
63.68 Error (23031): Evaluation of Tcl script /opt/intelFPGA_lite/quartus/common/tcl/internal/qsh_flow.tcl unsuccessful
63.68 Error: Quartus Prime Shell was unsuccessful. 11 errors, 19 warnings
Failed after 2m
But the singe ram one is still running (9m into the build)
soon
#unstable-nightlies message Single ram build worked ๐ซ 
besides the single Dazamon missing tile on the title screen, i donโt think thereโs a single known & unresolved bug
just a couple of feature requests of value left. and only one of which is, imo, essential for the library to play right; analog triggers
I tried to compiled 2SDRAM on my side but it fails
a simple mistake?
I'll check it out soon
I think lightgun.sv isn't added to the _DS project? It's compiling for me once added.
yeah
simple fix ๐
i will add it to the files
Something I was wondering - Now we can no longer set that there is no pad in port 2 , the instructions to work around the bug (in the game itself) that prevents Shinobi X starting when 2 pads connected aren't right? I did notice that if Pad2 is set to "Dual Mission" or "Virt Gun" it does boot but obv. we can't choose "Off" as an option any more.
I think this will affect "In The Hunt" too
yes
could you share the compiled core pls?
There should be a fix soon from srg320
It's been building: https://github.com/MiSTer-unstable-nightlies/Saturn_MiSTer/actions
Should hit https://discord.com/channels/647909397477195803/807613978154762252 in about a quarter of an hour
yes it will soon appear in unstable nightiles
can anyone help me figure out saving on the saturn core?
its supposed to make a save file but i dont see it ever loading
im not sure if its supposed to output a file per game or what- or if i need to have the cartridge set to -BACKUP of if it uses the internal memory by default
@burnt matrix-san time to close your lightgun issue iโm happy to report!
huh, looks like heโs been gone a week
If you have your disc images in one folder per game, and Autosave is turned on in the core, it should create an independent internal memory for each game.
okay. do chd games need to put in a folder?
yes
if itโs multidisk, make folder and put all disks in there
so what yโall playing today?
silvergun/guardian heores
a fellow treasure enjoyer
Sega Rally if I get around to it
itโs all light guns today for me
yeah sometimes i forget how fun those games are
gonna see that they all work with the new lightgun solutions
Captured straight from my Sega Saturn its "Game Over Yeah". This is from the game Sega Rally Championship.
obviously Sinden is off doing itโs own thing but guncon 2/3 wiimote and everything else is now supposed to work
and that now means MiSTer finally has a 2player co-op lightgun game
sadly Time Crisis was only ever single player
nope
okok
thatโs if you want the extra storage
itโs useful for some games with huge save files
but for everything else itโs excessive
and youโll have to wait a while for your saves to, well, save
gotcha
okay so im trying to save and its still not working
i dont get what could be wrong
would you be able to post a pic of your settings?
sure
what game have you got booted?
guardin heores
ok so youโre in a game at least. some folks get confused and wonder why the bios wonโt save
mb here you go
turn autosave on, then press right once, then press down a few times and press save settings
so when i use auto save- does it always consider the loading of the save before hand?
that is to say- it doesnt save over what i had previously ?
mister will update the save if it detects the state of the save has changed
when on autosave enabled
if you donโt want it to that, manually save the game with the option โsave backup ramโ each time
When the menu's opened
yes, i forgot to mention
am trying to lay out the instructions in a way that prevents misunderstanding and still i forget that
Guncon 3 working nicely here after calibrating in OSD then the game's options
Thanks ElectronAsh, very much appreciated ๐
yes, ElectronAsh has made my month already
Yeah, thanks @untold cloud great work! ๐
okay so autosave will write over previous saves to be clear? so just manually save ? sorry im just not clear if auto save will default to just overwriting things
on start up
itโs not going to wipe your save on game boot
okay
it simply means committing the save from the fpga core to your sdcard
yeah i swear i have some possible unique issue with it. never have this problem on other cores
ready for use next time you boot the game
sinden should work now if you can apply the border with an external scaler
i cant wait to try sinden sometime
i thought his stuff required forked cores or mister main?
Maybe caused by not having separate directories for each game?
Hopefully stop feeling awful and finish Willy Wombat
so whats happening is that i make a save for guardina heroes.
it needs a custom main and stuff too but the forked cores only add the border so if you've got another way to do that you can play saturn today
and then it just dissapears when i exit the core
and boot back in
is there any particular cfg i can delete or something from before?
Turn auto save on and never forget to open OSD before quitting
"Make a save" - how?
i have multiple unstables of saturn as well so i hope its not getting jumbled up somehow
the horror
using save autosave or save backup ram. ive tried both
so basically when you start a game. there is a load prompt that has your previous game
it dissapears after i leave the core
and there is no unique save in the game folder (if there should be)
so you might need to backup your saves, clear them out, remove unnecessary old cores and see if everything starts working, then you can look at restoring your saves
get your games right too, every game in a separate folder
wether itโs bin/cue or chd
sounds good yeah ill just do an update all and - is there anything else i should delete save related ? ill keep the games folder and delete the rbfs
but if there is any other CFG or something to get rid of
remember, update all isnโt gonna get you very upto date
also does it make any particular save file?
manually add the latest unstable nightly
the saturn folder can be deleted, the core will make another when it needs to
okay
so which saturn folder?
i dont wanna delete the games folder. but is there another saturn folder?
saturn saves only
where do i find that?
thereโs nothing else to worry about
oh i see
pls only do this after copying them
iโd hate for you to loose something precious to you
okay let me make folders for my chd games real quick before i do anything else
I'll be surprised if that doesn't fix everything
worth noting that by moving games into a folder the old save wonโt connect to the game anymore.
the core doesnโt see it as itโs under a different name
appreciate it so much
okay i think we good.
god damn what a ride lol
this has been driving me crazy for ages
because it would work, and then not work
now youโve got it right tho itโll be right going forward!
hell yeah thanks
We're working on fixing Time Gal & Ninja Hayate before my leaving beginning next week.
oh yeah you should do the folders thing for all cd-based cores on mister or weird stuff can happen
oh word i was playing those earlier today lol
There's a new Astal issue
yeah freddo i have for the others
Final boss
just never considered it for chd saturn
and an old astal regression popped back up
srg320's already commented on it
btw this is my list of tested saturn lightgun games so far:
Virtua Cop
Virtua Cop2
House of the Dead
Die Hard Trilogy
they all worked. die hard is 1p only and the gun must be in port 2
yup, iirc that issue went away with a puyopuyo fix
does anyone know what that level select code is? should probably add it to the bug report
Speaking of Puyo Puyo 2, I should attempt to do a no death run of the game's Expert Mode at some point.
Which is actually pretty daunting, because that means defeating 36 opponents in a row.
you might find the menu messed up
if itโs the same issue thatโs come back with astal
getting ready to go out so canโt test atm
Oh, something went wrong with Puyo Puyo 2? I can check real quick.
it went wrong with astal, but my brain remembers the issue being linked
Puyo Puyo 2 still works.
https://en.wikipedia.org/wiki/List_of_light-gun_games#Saturn
Working great with gun as P1:
-area 51 (calibration in player select menu)
-chaos control (aims a bit off after calibrating but seems its just the game)
-crypt killer
-death crimson
-maximum force
-mechanical violator hakaider
Scud - The Disposable Assassin has a 480i title screen, that seems to cause an issue
the OSD crosshair doesn't track with the gun like normal, goes wonky
when i get home ill test on original hardware
Guessing the gun detects the scanlines, and the interlacing constantly switching those scanlines trips it up.
if the crosshairs goes wild, does it affect the actual gun shot
Guncon 3 (IR tracker), and its the mister OSD crosshair that starts not matching the gun as soon as it switches to 480i title screen
tracks normally in the intro video
crosshair gets smaller in 480i mode vs 240p like in PSX core, but here it makes the crosshair no longer move proportionately to the gun and cant aim on the right of the screen
same issue if i set p1 'xy ctrl' and 'buttons' to mouse and use a mouse instead of guncon
nice find i think electronash was wondering if any lightgun games use 480i
guncon3 reports as a joystick right?
Ive never seen one
i (wrongly) guessed no ๐
honestly would that work? the lightgun works on the raster drawing so I dont know if 480i would work? But Ive never thought about it til writing this
at least talking about Saturn
probably just averages it over two fields?
Good question
loads of ps2 lightgun games are 480i so it must be possible
but that's GunCon2 so it might be working slightly diff with the sync off the back end
honestly zero clue....fun question haha
yep, an actual mouse behaves the same though
is it off on both axis? vertically and horizontally?
it could just be the intro screen, it was acting odd and not letting me enter the game so I may need to aim at the icons on the right
if i hold crosshair in top right of screen, it jumps to the top centre when it hits 480i
vertical movement is still proportional, but horizontal is off
its like the horizontal range of motion is compressed to the left half of the screen
can no longer go to the right of screen
we had similar because of 352 but this will be even more exagerated i'm guessing
yeah that's what I figured
cheers for describing that should help ash
np, the support is damn awesome, all other games worked great ๐
i think one other game's menu may have been odd but i got in game quickly and moved on....
@naive whale Maybe a top 10 lightgun games playable on MiSTer would be a good video (regardless of which core)
don't tell #1046940919607345272 but virtua cop with 2 guns is more fun than time crisis ๐
Could be. Lightgun stuff has been doing terribly for me lately though
and yeah we finally have 3! co-op shooters which are my fave kind
I heard the algorithm loves top 10s though!
Top 69s
it's amazing the lengths i'll goto to play lightgun games heh
My only Option to test is a Wii mote .. so I guess ima be waggling all day lol
Do latest unstable builds also go in the arcade cores folder for STV or does the unstable need to say STV in the description if STV has an update?
every new core now supports STV
Okay. I'll put latest in both arcade cores folder and my console folder. Thanks.
I just read about Zet-sensei's situation. Thank you for all your hard work! I hope you can solve your issues soon and get better!
Saw that the issue about lightgun support was closed - it is best practice to not close issues until the fix/feature is in Main. Only people testing are using unstable nightlies builds and it is entirely possible that features in unstable nightlies builds wind up being reverted and don't make it live.
The most obvious problem I have with the new feature is that you can't disable the second controller anymore. Which is a problem with Shinobi Legions in particular.
hopefully, itโs a simple as adding an extra option for no controller
main? itโs just a core update no change to main required
unless iโm misunderstanding you
'Scud - The Disposable Assassin' needs player 2 set as light gun also (you play with gun as p1)
if its set as 'digital' the game's menu keeps looping back and wouldnt let me start a game
the game is 240p but the in-game calibration screen is 480i....
if I calibrate in-game to a little to the left of centre, it's actually pretty spot on
so you can work around the issue ๐
It was merged to the main branch this morning
It isn't in an official release build that is distributed to the wider public, it is in an unstable nightlies build. Hopefully it does make it to a proper release, but right now it is essentially in a testing phase.
oh i hadnโt realized
so far thatโs how all bug reports (and the call to close them) has been done, thru the lense of the latest unstable
otherwise we wouldnโt be reporting regressions that havenโt yet emerged on the current stable no?
In an open source project it's typical to use an issue tracker to track what needs to be done by developers. So things get closed when they are merged to the main branch. There aren't enough people working on it in their spare time to have it cluttered with things that are complete and triage them all when a new release is made, unless it's a huge project with lots of backing
we have been doing this for more than two years with saturn , we did this with psx, I am not going to change it. If a feature is withdrawn it can always be reopened on github.
last time with saturn we waited from june to january with a new stable core.
One message removed from a suspended account.
One message removed from a suspended account.
I agree with @mortal mist & @rich violet (thanks for stepping in about the verifications on the tracker, by the way)
I've been doing project reviews and support tasks for at least 15 years, the workflow is okay and should stay that way.
And worked the same way on other software emulators, nobody working actively on the core ever complained or is complaining about it right now.
One message removed from a suspended account.
Plus it gives SRG the funniest patch note option: -Bug fixes and feature updates
One message removed from a suspended account.
ok , try load bios manually, maybe the file extension is still wrong and you don't see it
like boot.rom(.bin)
One message removed from a suspended account.
you don't need any special video settings for core
I assume you keep the games in the saturn folder on the sd card and put the bios there too
The second thing is how do you copy the files ?
manually or, for example, filezilla?
One message removed from a suspended account.
ok but bios
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
One message removed from a suspended account.
make sure the transfer type is set to binary
honestly from usability standpoint WinSCP is better
doesn't feel as limiting as FZ
mapping the mister as an external drive on windows is so convenient
and on iphone i use this app
copy the latest everything wirelessly from phone to mister in seconds of it being turned on
One message removed from a suspended account.
One message removed from a suspended account.
Is there a guide to set this up, looks great.
One message removed from a suspended account.
first up rename โ_samba dot shโ by removing the underscore
then on windows go to the file explorer homepage and click the option to map an external drive
then you map its IP address, add the username & password
only thing you might want to do is set a fixed IP address on your router
Thank you, very much appreciated!
Shinobi Legions doesn't work anymore on the latest Unstable Core. There's no option to turn off Pad 2 with the new lightgun implementation . This game only works with only one pad conected, also on real hardware.
I admit, I didn't try the Dual SDRAM project yet.
So yeah, just need to add rtl/lightgun.sv, under Project -> Add/Remove Files in Project.
No other settings in Quartus were changed for Single SDRAM, so I think that's all that's needed to compile for Dual as well.
It's fixed ๐
Yeah. I just saw.
tbh, I'm not used to how Dual SDRAM has a separate Project file.
It's not how that kind of thing used to be done.
There used to just be a define (in sys_top, or in the settings) to enable/disable stuff.
Or a separate Revision, in the drop-down menu at the top of Quartus.
But from now-on, I'll try to remember to check the Dual SDRAM project before doing a PR.
@untold cloud I have a request, could you add the possibility to disable controllers in the menu?
We need this because some games don't work if a second controller is detected
Please try with vscale_mode = 0
If you have set integer scale only , then this function should not work at all (I forgot to make this function gray out when integer scaling is set)
I actually forgot to ask about that the other day. lol
@untold cloud Specifically Shinobi X and In The Hunt
I saw your reply on that too, @rich violet I'm just catching up.
hey electron congrats on the merge
They're bugs in the original game where they don't start if there's a second controller
Would be fairly simple to fix, to just re-add the "Off" option.
Thanks. ๐
Yeah, Ash, really killer work duder
we also found one lightgun game that uses 480i on its title screen
I think it was Srg320 who did the merge. I was expecting it to be Sorg, for some reason.
I tried ๐
nah srg320 manages the saturn core
Yep, need to test an Interlaced LightGun game.
Yeah, the interlaced lightgun game was Scud: #1046941029296779344 message
Scud - The Disposable Assassin
parameter PAD_DIGITAL = 0;
parameter PAD_VIRT_LGUN = 1;
parameter PAD_WHEEL = 2;
parameter PAD_MISSION = 3;
parameter PAD_3D = 4;
parameter PAD_DUALMISSION = 5;
parameter PAD_MOUSE = 6;
it sounded like it was just struggling with the 640 width and needed scaling you know
Ok, I'll try
The game itself is 240p but the calibration screen is 480i
Just to make life interesting ๐
some bored developer with too much time on their hands there ๐
Yep, I expected a couple of games might used Interlace.
If I'd spent longer to test every single game, I would never have done the PR. lol
Hence "initial support". ๐
I think Sorg used to pretty much expect "perfect" code before a PR, but it's already hard enough getting the bulk of games working.
That must have been at least 40 compiles, to get LG working.
Would be good to find a fix for why selecting the Wheel will often jump back to the CD player screen.
I think the "Off" option should just be added as the 7th controller type.
has anyone tested if hotplugging a wheel into a real saturn on a game that doesn't support wheel makes it panic?
weirder things have happened
btw you can use L/R shoulder buttons on your pad to scroll the controller thing in either direction
so you dont hit wheel and crash
When there is no code/logic to support a specific controller type in HPS2PAD, it just goes to the default case.
Which then just shoves the PDRxO bits into PDRxI, by default.
So that should work.
It's just for Virt LGun, I kind of stole the original "Off" state.
So I just added that to the menu, with "Off" as the last controller type, and compiling now.
Also still working on getting Radiant Silvergun to react to Start.
nice one
It's been harder than I thought, just to figure out which signals to use, to trigger a Read or Write on.
I thought I would just be able to use the normal Cart control signals, but something a bit weird is going on with those.
So I had to use some signals direct from the Master SH2.
It's starting to allow the state machine stuff to work now, so I just need to keep doing tweaks.
I'm really hoping Radiant only does that ONE check at start-up, but that would be a pretty dumb protection.
HPS2PAD, for Port 2...
PDR2I = (PDR2O & DDR2) | ~DDR2;
case (JOY2_TYPE)
PAD_DIGITAL: begin
if (DDR2[6:5] == 2'b10) begin
case (PDR2O[6])
1'b0: PDR2I[3:0] = JOY2[15:12];
1'b1: PDR2I[3:0] = {JOY2[3],3'b100};
endcase
end else if (DDR2[6:5] == 2'b11) begin
case (PDR2O[6:5])
2'b00: PDR2I[3:0] = JOY2[ 7: 4];
2'b01: PDR2I[3:0] = JOY2[15:12];
2'b10: PDR2I[3:0] = JOY2[11: 8];
2'b11: PDR2I[3:0] = {JOY2[3],3'b100};
endcase
end
end
PAD_VIRT_LGUN: begin
// PDRxI [6]=LGUN_LAT_N. [5]=Start_n. [4]=Trigger_n. [3:0]=ID Nibble (sort of, see above).
PDR2I[6:0] = {!LGUN_P2_SENSOR, !LGUN_P2_START, !LGUN_P2_TRIG ,4'b1100};
end
PAD_WHEEL,
PAD_MOUSE,
PAD_MISSION,
PAD_3D: begin
PDR2I[4:0] = {TL2,OUT2};
end
//TODO
default: ;
endcase
Sorry, that was more code than I realized. lol
But anywho... at the very top, it assigns PDR2O (Port Data Register 2 - Output) to PDR2I (Input).
Based on how the bits of the DDR2 (Direction) reg are set.
Which is a very common way that IO pins are done on stuff, even things like Arduino, to this day.
In Verilog, though, if you assign to the same thing twice, within the same clock cycle (or in this case, it's all combo logic / continuous assigns), the one further down the page will override the first.
The PAD_VIRT_LGUN thing took over from the old "Off" case.
For "Off", there wasn't any need to have a case at all, so it would just go to the default: ; case.
Which in turn would allow the assign to PDR2I, at the top of the page.
In summary: Just re-add the "Off" to the CONF_STR, and it should work. lol
"D5P2O[17:15],Pad 1,Digital,Virt LGun,Wheel,Mission Stick,3D Pad,Dual Mission,Mouse,Off;",
"P2O[20:18],Pad 2,Digital,Virt LGun,Wheel,Mission Stick,3D Pad,Dual Mission,Mouse,Off;",
(the D5, at the start of the first menu entry, is just so it can be greyed-out via the menumask bits on HPS_IO, whenever the SNAC option is enabled.)
is snac always p1 on saturn core?
I very nearly added the option to apply the SNAC input to either Player.
we've actually just found 2 games that insist the lightgun be plugged in port 2
But I didn't want to confuse myself, with the whole PR thing. It was way harder than I remembered, to try to keep the code clean, and get everything working.
Yeah, that would be OK to add later.
yeah keep your PR's to one thing at a time totally
So the SNAC option would just say Off, Pad 1, Pad 2.
This is how SNAC works, btw...
wire snac = status[27];
reg [6:0] USERJOYSTICK;
wire [6:0] USERJOYSTICKOUT;
always @(posedge clk_sys) begin
if (snac) begin
USERJOYSTICK <= {USER_IN[4], USER_IN[6], USER_IN[2], USER_IN[3], USER_IN[5], USER_IN[0], USER_IN[1]};//TH, C(TR), B(TL), R, L, D, U
USER_OUT <= {USERJOYSTICKOUT[5], USERJOYSTICKOUT[2], USERJOYSTICKOUT[6], USERJOYSTICKOUT[3], USERJOYSTICKOUT[4], USERJOYSTICKOUT[0], USERJOYSTICKOUT[1]};
end else begin
USER_OUT <= '1;
end
end
status[27] is toggled by the actual SNAC menu option.
USER_IN bits are taken directly from the USERIO/SNAC port inputs.
USER_OUT can drive the "output" pins Low.
IIRC, they are actually "inout" pins, so they are open-drain outputs.
Which means they either get driven Low (to Ground), or they are allowed to get pulled-up, but the 10K pull-up resistors on the IO board.
Then, on the Saturn module instance...
.SMPC_PDR1I(snac ? USERJOYSTICK : SMPC_PDR1I),
Yes, that's it. That's all it does. lol
"P2O[31:30],SNAC,Off,Port 1,Port 2;",
wire [1:0] snac = status[31:30];
.SMPC_PDR1I(snac==2'd1 ? USERJOYSTICK : SMPC_PDR1I),
.SMPC_PDR2I(snac==2'd2 ? USERJOYSTICK : SMPC_PDR2I),
Can't test for a while. I'm still compiling for trying to get Radiant (ST-V) to work, so I have the Saturn CD stuff disabled.
Also - I don't have any SNAC stuff to hand. lol
You can't disable the Input ports anymore. Wasn't there a problem with games like "In the Hunt" or "Shinobi X" when there was a device plugged in port 2?
Fixing that now.
It's a known issue. ElectronAsh has been discussing the fix
Just need to re-add the "Off" option to the CONF_STR, for the Pad 1 / Pad 2 controller type.
But as the last option, so it == 7.
In theory, that's all that's needed.
"D4P2O[17:15],Pad 1,Digital,Virt LGun,Wheel,Mission Stick,3D Pad,Dual Mission,Mouse,Off;",
"D5P2O[20:18],Pad 2,Digital,Virt LGun,Wheel,Mission Stick,3D Pad,Dual Mission,Mouse,Off;",
May not be needed for pad 1 ๐ค
After this next compile, I'll re-enable the CD stuff, so I can post the new RBF here, with the SNAC (Port 1 or Port 2) and controller "Off" fix.
Might as well keep it on Pad 1 as well, just in case.
I remember that one game, where you had to plug the joypad into the Player 2 port, to fight a boss. lol
PS1, I think?
Yeah metal gear solid, mantis ๐
Ahh.
I... never really played much of the Playstation stuff, of any generation.
Just never had any Sony consoles, until about ten years ago.
I have a few PS1's, and a PS2 Slim.
Never once played on a PS3, PS4, PS5.
Nor Xbox Series S / Series X.
I mean, I don't really play games much at all now, but I have this vision of one day getting back into it. lol
I did like the look of games like Stray. A slightly different concept, and about atmosphere etc.
Yeah
I used to enjoy just driving around in GTA V, or Need For Speed, on the old-people Xbox.
Last game I completed (which was the first in a long time) was Portal 2.
Which was probably around 2009.
I never played Portal 1 at that point, still haven't.
2011 more likely
Ahh yep, it was later, then.
Stray was fantastic.
I was hooked on Portal 2. I couldn't stop playing - completed it in about 7 hours, with no breaks. lol
I got stuck for a while, on one of the first times the floor kind of folds upwards, and boxes you in. lol
Oww, Radiant still not working. lol
Oops.
00000000 (x4)
10101010 (x4)
20202020 (x4)
30303030 (x4)
It's meant to be 10101010 etc. not 01010101.
prot_reg <= {count,4'd0,count,4'd0,count,4'd0,count}
Weird.
count is 4 bits wide.
So that concat should surely have worked.
oic.
Dumb.
The fix...
prot_reg <= {count,4'd0,count,4'd0,count,4'd0,count,4'd0}
Also don't know if I should be incrementing to the next value, every time CS_N pulses low.
As it seems to read in pairs or pulses.
Compiling... AGAIN, but with Saturn CD enabled.
So we can test the SNAC port 1 / port 2 thing, and controller Off thing.
Is the Radiant Silvergun thing for the protection IC?
Yeah. In the MAME debugger, I saw it seems to just read a simple pattern of Words, just before the title screen appears.
Once in the game (in MAME), it didn't seem to read again for a while.
But I didn't try playing the game further. I suck at shooter games anyway.
This is all it did in MAME...
Radiant Silvergun...
Writing 00 to 4FFFFF1
Writing 0800 to 4fffff8
Writing 0010 to 4fffffA
Writing 7777 to 4fffffC
Writing 01 to 4FFFFF1
All subsequent reads from 4FFFFFC...
00000000 (x4)
10101010 (x4)
20202020 (x4)
30303030 (x4)
40404040 (x4)
50505050 (x4)
60606060 (x4)
70707070 (x4)
80808080 (x4)
90909090 (x4)
A0A0A0A0 (x4)
B0B0B0B0 (x4)
C0C0C0C0 (x4)
D0D0D0D0 (x4)
E0E0E0E0 (x4)
F0F0F0F0 (x4)
Repeats reading this chunk, many times...
00010203
04050607
08090A0B
0C0D0E0F
And then Writes 00 to 4fffff1
The Protection IC is mapped to the end of the Cart space on ST-V, as it's physically in the Cart.
But only a handful of memory locations are used.
So it doesn't look like it uses anything fancy, like Interrupts.
So can probably ignore the writes completely. And just let it read back the correct pattern of Words.
Prot IC read and write stuff in MAME...
uint32_t stv_state::common_prot_r(offs_t offset)
The actual code for the chip, which is NOT simple...
But some other games might be doing simpler checks, like Radiant does.
And not using the ROM (or key) decryption stuff at all.
map(0x0000, 0x0001).r(FUNC(sega_315_5881_crypt_device::ready_r));
map(0x0010, 0x0011).w(FUNC(sega_315_5881_crypt_device::addrlo_w));
map(0x0012, 0x0013).w(FUNC(sega_315_5881_crypt_device::addrhi_w));
map(0x0018, 0x0019).w(FUNC(sega_315_5881_crypt_device::subkey_be_w));
map(0x001c, 0x001d).r(FUNC(sega_315_5881_crypt_device::decrypt_be_r));
The addr bits of the chip are likely shifted up, when they connect to the Cart addr bus.
I was there! Whoooo! ๐
Hence MAME is accessing offset 1, 8, A, C, etc.
Thanks. ๐
Looks like the MAME stv code re-maps the regs as well, just to complicate things.
First stuff Radiant writes to the prot chip...
Writing 00 to 4FFFFF1
Writing 0800 to 4fffff8
Writing 0010 to 4fffffA
Writing 7777 to 4fffffC
Writing 01 to 4FFFFF1
So probably the "ready" reg has to be cleared to Zero, before changing other regs.
addrlo / addrhi stuff, likely for setting the start address, to tell the chip where to start decrypting a chunk of Cart ROM.
(even though Radiant might not use that. Some leftover code maybe?)
And the 0x7777 likely the subkey.
Then it sets the ready reg to 1 again, to enable the "decryption".
I'm just guessing here. lol
It worked! Thank you!
One message removed from a suspended account.
One message removed from a suspended account.
there is no scandoubler for the core
One message removed from a suspended account.
One message removed from a suspended account.
yeah you should be able to apply a scanline filter
One message removed from a suspended account.
open the osd, go to the right page, add a vertical filter
not sure what will look good on a crt but there's tons to chose from
One message removed from a suspended account.
filters are 0 lag
One message removed from a suspended account.
the scaler adds minimal lag, but you must use it on a 31khz CRT
One message removed from a suspended account.
it depends on the filter
well make sure you have vsync_adjust=2 otherwise it is triple buffered
load presets at the top of the video processing section
you probably want a really basic one because your crt is going to do a lot of the work the complex filters do for free
One message removed from a suspended account.
there are three basic scanlines variants in the presets
the presets all have a mask and stuff
you can start with them but you should probably disable any mask or gamma they activate
One message removed from a suspended account.
Scanlines - Medium
just adds an interpolation filter for even pixels and a scanline filter
One message removed from a suspended account.
One message removed from a suspended account.
turn off the forced_scandoubler
One message removed from a suspended account.
and on the vga-scaler
that video mode might give you some issues too
you might need a minimum 480 vertical for interlaces stuff
the scaler cant downscale
actually you'll need that for scanlines to appear too
you can use simpler video_mode lines these days, something like
video_mode=2048,480,60
a forced 240p modeline will not look good with 480i content
One message removed from a suspended account.
many games use both 240p and 480i. If you really want scanlines via the 240p modeline, then it'll cut out half of the 480i content. You can also use bob deinterlace if your scaling to a normal resolution with filter scanlines
One message removed from a suspended account.
One message removed from a suspended account.
new Princess Crown translation is such much better than the first version
Should I wait on a ST-V stream, or do you think I should take a look at it? I have everything setup, roms grabbed, MRAs, etc, as well as the compatibility sheet.
it'll be a short stream!
just like I like them ๐คฃ
ST-V works now?
Holy Jupiter there's a lot of ST-V games
One message removed from a suspended account.
FYI: Batman Forever, Battle Arena Toshinden Remix, and Battle Arena Toshinden URA appear to have been incorrectly recorded
the core date is in the tester field
take it you saw all the lightgun news nolbin ๐
thank You, fixed
Yes! I got the first 2p build (before crosshairs were fixed all the way), and played the big three games with a GC2. Sadly, the Saturn appears to be like the PSX in having a very quick flash-and-read, so I needed to max out my TV's brightness for it to work
curse that flashing issue lol
it feels like it should be solvable somehow
maybe the scaler could be convinced to hold a white flash for a few extra frames or something
one day we'll puzzle it out
I actually tried exactly that with PSX one time: when the trigger is pulled, white out the screen for a couple of frames, then send the trigger pull to the rest of the core. It was not a comfortable experience
set
vga_scaler=1
if 640x480 is too blurry you can try a higher resolution preset
did it help?
It did, but the long flash wasn't pleasant
I agree with you that it feels like there should be some way to solve it - like maybe somehow, the GC2's lag is longer than it should be
we ever try 1000z polling them?
I tried that once, and it still gave reports at 60 Hz
maybe you could tune the white flash, make it grey, reduce it to the bare minimum duration
or make it like a checkerboard?
or maybe instead of like, a pure color, crank the shit out of the game image brightness for a frame or two
One message removed from a suspended account.
or maybe flash one black frame then one white? just guessing but that might make the phospher point easier to spot by making it very high contrast
One message removed from a suspended account.
@sweet vale hmm, disable the custom video mode:
;video_mode=2048,40,442,200,240,3,10,8,120909
oh wait you have a custom Saturn entry at the bottom - one sec
That was about what I was thinking, too: you could pretty straightforwardly brighten the image without making it pure white, and that was usually enough to get it to work. But between the flash still needing to be kind of long, and the extra logic required just to support it, and GC1 apparently working fine via Reflex Adapt (since the lag there is lower), I figured it wasn't worth it
One message removed from a suspended account.
try reducing the vsync adjust to vsync_adjust=1 since that can lower compatibility
One message removed from a suspended account.
looking at your .ini N64 and PSX will need a similar setting to Saturn since they are 480i consoles and cannot use the scan_doubler