#Atari Jaguar
1 messages · Page 5 of 1
- It’s the Area 51. All docs say that’s Motorola
0x80000 is technically the Cart ROM location, but I loaded the Area 51 ROM as a "BIOS" at 0xE0000 first.
Maximum force is the R3000
Maybe vicious circle too but that would be a BIT more expensive haha
So in theory, the core reads the SSP and PC from 0xE00000, then jumps to the 0x80000 range, and finds the correct code there.
I’m not too worried. If they accept the offer I’ll make a vid on it. Maybe two. Revenue from that, cleaning it and converting it to solid state and being sold from a “known good seller”…I’ll at minimum break even. Probably just friends and family price sell it to someone I like
Yeah. A vid would be interesting, for sure.
oic - the addr bus from the 68K is missing the LSB bit, because it does anyway...
Since the instructions are generally read as 16-bit wide (on the 68000), they ditched the LSB bit of the Address.
And just use the UDS_N and LDS_N strobes to select each byte.
(well, usually during writes)
Did you ever dig into Jag CD, Ash?
So that address on "eab" starting from 0x40E583 on SignalTap, is really our jump address of 0x81CB06.
I had a brief look at it a few years back, when Kitrinx and I last looked at the Jag core.
But since the core wasn't running too well back then, it didn't seem worth looking into the CD stuff further.
The CD drive is based on a Philips mech, IIRC.
It’s got so little hardware inside I wonder if it wouldn’t be “too hard”
But they also have a small custom ASIC, to talk to the cart slot etc.
I already bought a Marantz DVD player a few weeks ago, as part of an effort to make a "new" GD drive for the Dreamcast.
And that's been sat on the bench for weeks now. lol
So I learned a ton more about CD/DVD drives recently, which could come in handy for Jag later.
To be completely honest, though, it was stressful enough getting the PCE CD thing to boot a game for the first time. lol
I was working with dentnz on that during a "heatwave" a few years back.
We worked every night for a long time on it, until we finally got Rondo of Blood to boot.
Haha I’ve got projects sitting around for years
Finishing the rest of the core turned out to be even harder, but Srg320 wrote his own thing in the end.
(at least I think it was Sergey, who wrote the eventually CD part of the PCE core?)
Sorry, I know my thoughts and typing are a bit sporadic. It's 2:25am here now.
And my brain has been on the Jag core most of the night.
Where you based Ash?
"Mordor", South West UK.
That's better. I stole the oReset signal (which stays low as the core is running), to use as the LSB bit of the 68K EAB (address) bus.
Now it shows the correct jump address.
No other activity though. Nothing on-screen, but...
Cojag has I think 6MB of RAM on most versions of the board.
So now I need to look at whether the Jag core is limiting the amount of accessible RAM.
Why did I think you were in the US? Haha
wire [19:0] dram_addr = {ras_latch, dram_a};//abus_out[22:3];//{ras_latch, dram_a};
Booo! ^
I did as well. I am up in Edinburgh, where it is now very cold.
I have Scottish roots.
Well, a mildly ginger beard.
My Granddad's parents were born in Inverness.
Hah, mine goes a bit ginger as well, especially in the summer months
Something worth considering, if adding co Jag support is viable may be worth getting lightguns and virtual lightguns working for the balloons homebrew if it is going to be the same style controlls for co Jag as well (I am assuming it is the same implementation, but I am no expert on this stuff)
I can't figure out how much memory the core can access atm, but probably quite a lot...
These Co Jag games are all lightgun games, right?
GreyRogue modified the SDRAM controller(s), so it uses the DRAM address more directly.
(which makes it work a bit closer to the original.)
So it latches the Row address to Activate, erm, a row.
Then latches the Column address for the actual read/write burst.
Not sure? I think many are?
Yes and no
Released games are all lightgun games
Vicious circle is fighting. Fishing frenzy is who knows? I’ve never played it
So vicious circle would need the input signals off JAMMA
Looks like Area 51 does a basic memtest at start-up.
Or more like, memory detection.
Good info. So if it doesn’t find the proper allocation it may not even attempt to show signs of life
I wonder if it also is sensitive to it being the right amount. As in secondary security checks against memory allocations. Even HDD size can be set as a secondary check in arcade boards
I’ve seen ram amounts / HDD size / CF size being flagged to try and prevent bootlegging.
System16 - The Arcade Museum. Detailed Hardware information on Arcade Hardware and Systems.
Ooh.
map(0xb70000, 0xb70003).rw(FUNC(jaguar_state::misc_control_r), FUNC(jaguar_state::misc_control_w));
This is the full list of CoJag games?
Code is trying to access 0xB70002
Only 2 games (and their combo) were officially released:
Area 51
Maximum Force
Area 51/Maximum Force Duo (combines both games in a single cabinet)
4 unreleased prototypes exist:
Fishin' Frenzy
Freeze
Vicious Circle
3 on 3 Basketball
😵💫
void jaguar_state::misc_control_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{
logerror("%s:misc_control_w(%02X)\n", machine().describe_context(), data);
/* D7 = board reset (low)
D6 = audio must & reset (high)
D5 = volume control data (invert on write)
D4 = volume control clock
D3-D1 = audio bank 2-0
D0 = shared memory select (0=XBUS) */
It would be good if any keen bean who uses Mame is able to do some digging and see if all 4 of those prototypes are out there in the wild and if they are playable, and what type of controls they use. Even Awbacon has only played one of them
3 on 3 and freeze ice never seen
They definitely not in the wild and not supported by Mame?
I’ll ask someone from MAME who knows all
Nice, be good to know if this is even a possibility
But if I have never seen them odds are it’s either just documented evidence of them existing or “in private collections”
Yeah, that is the fear
So is Fishing Frenzy not really playable? What is the deal with that one?
Well it must be out there as someone was working on a jag cart conversion
Yeah it’s easy to find
Got answer back. All but 3 on 3 exist
It tried to write to the MEMCON regs on Tom, before it seems to crash.
But hey, at least it's running some code. lol
So the released games plus Freeze / Vicious Circle / fishin frenzy can be located
Incoming Awbacon video covering the entire Co Jag library? 😉
Haha I am shit with code. I’d be better at making the CoJag boot Jag games
Because that’s 90% hardware
Getting that 3DO M2 demo disc done was about as much as I’ve ever coded and still I couldn’t figure out how to loop back from the last asset loaded in to the beginning so my directions were “just reset and start again” 🤣
Looks like that address is near the top of memory on Cojag.
But it ofc doesn't exist in the Jag core (yet), so the 68K doesn't receive DTACK for that range.
“Memory doesn’t exist sucker” error code lol
// Latching of memory configuration register on startup
// This XMA pins are pulled High or Low by resistors on the Jag board.
assign xma_in[0] = (xma_oe[0]) ? xma_out[0] : 1'b1; // ROMHI
assign xma_in[1] = (xma_oe[1]) ? xma_out[1] : 1'b0; // ROMWID0
assign xma_in[2] = (xma_oe[2]) ? xma_out[2] : 1'b0; // ROMWID1
assign xma_in[3] = (xma_oe[3]) ? xma_out[3] : 1'b0; // ?
assign xma_in[4] = (xma_oe[4]) ? xma_out[4] : 1'b0; // NOCPU (?)
assign xma_in[5] = (xma_oe[5]) ? xma_out[5] : 1'b0; // CPU32
assign xma_in[6] = (xma_oe[6]) ? xma_out[6] : 1'b1; // BIGEND
assign xma_in[7] = (xma_oe[7]) ? xma_out[7] : 1'b0; // EXTCLK
assign xma_in[8] = (xma_oe[8]) ? xma_out[8] : 1'b1; // 68K (?)
assign xma_in[9] = (xma_oe[9]) ? xma_out[9] : 1'b0;
assign xma_in[10] = (xma_oe[10]) ? xma_out[10] : 1'b0;
Looks like Cojag (68K) uses the ROMHI config, which is the same as the Jag.
But CoJag probably maps the ROM to both the 0x800000 and 0xE00000 ranges?
(a few words mapped to 0xE00000, or maybe the whole ROM. Then it almost immediately jumps to an offset in 0x800000 anyway.)
It does do a couple of Writes to the MEMCON regs, at least.
But then goes haywire.
Such a weird place to jump to.
OK, could be 68020 stuffs.
81CB6A: 6400 FFF2 bcc $81cb5e
81CB6E: 33FC 1F00 FFF0 00E0 move.w #$1f00, $fff000e0.l
81CB76: 33FC 0000 FFF0 00E2 move.w #$0, $fff000e2.l
Dunno.
Gonna sleep soon. zzzzzzz
lol I’m playing Jaguar
What a time to be alive
I’m collecting power balls in a giant house
What a time to be alive
@ashen spoke someone just DMd me a photo of your truck
Holy shit what the fuuuuu
🤷🏻♂️ haha someone really did send that photo and say “I dunno if I’m good enough friends with Robby” 🤣
LOL
Not enough fat babies!
Arrrgh how do I get the Cybermorph lady to say “where did you learn to fly”
How the heck can they even see out of the rear view mirror though!?
Yeah that’s crazy
Like whatever makes people happy but sometimes you gotta keep your hobbies a secret LOL
We all know you are up in Wisconsin with your MAGA decals. Make America Grate Again
Cheese pun for the win
My cheese is rubbing off on you! Assimilation is nearly complete. 
Mmm...
Sharp cheddar...
Only Vermont sharp cheddar
No Wisconsin garbage. Velveeta grade state
I thought you just basically be bad at flying and crash into stuff 
OK, anyone who magically had the Jaguar BIOS from running Update All (i.e. was using the WIP DB) you will get the Mister Kun Jag BIOS next time you run it.
Awake again. Another new day.
Fairly sure the Cojag thing was crashing because it is using 020-specific instructions quite early-on.
81CB6A: 6400 FFF2 bcc $81cb5e
81CB6E: 33FC 1F00 FFF0 00E0 move.w #$1f00, $fff000e0.l
81CB76: 33FC 0000 FFF0 00E2 move.w #$0, $fff000e2.l
It seems to get to about 0x81CB6C before it crashes, which is in the middle of a longer instruction.
So the 020 is likely using 32-bit addressing there.
Where the 680000 would use 24-bit.
So fx68k is reading say the first three words from 0x81CB6E or whatever, then interpreting the next word (0x00E0) as an "instruction", which is obviously wrong.
I might try using TG68K in 020 mode, but I'm not sure it's worth the effort.
When it's taking 17+ minutes for each compile, and each tiny code change, it's a real killer.
I must have done about 20 compiles already of the past few days.
And I can't use TG68K in the sim, because it's written in VHDL.
I just added the TG68K stuff to the Jag core. I don't really know why.
for fun 😛
Is this you adding in all the missing Co-jag parts?
I wouldn't say "all" - I don't even know everything that's on the Cojag board yet. lol
But it looks like it pretty much adds extra RAM (6MB), and the VIA chip for handling the IDE port, etc.
I can only really go by the notes in MAME, and spotting things on photos of the Cojag board.
Currently trying to get TG68K running, in place of fx68k.
I have a strong feeling it won't be that easy.
But it would be funny to see if it can boot the Jag BIOS first.
Fallen at the first hurdle...
TG68K doesn't appear to support DMA / bus control.
So probably done in other logic in Minimig etc?
I think it's something like...
//.BR( fx68k_br_n ), // input
//.BG( tg68k_bg_n ), // output
//.BGACK( fx68k_bgack_n ),// input
External thingy asserts BR (Bus Request).
CPU asserts BG (Bus Grant).
External thingy asserts BGACK (Bus Grant Acknowledge), to let the CPU know it now has control of the bus.
So it's not super complex to implement, but a bit painful that TG68K doesn't have the logic already.
The Jag does use that stuff quite a lot, to allow the 68K to talk to the Tom and Jerry chips, or allow Tom to take over, etc.
I think Tom also supports DMA, where it takes control of the main Address and data busses.
For now, I just want to see if I can get the basics running, to see if TG68K runs any code at all.
lol bad new. I woke up and I own a CoJag 🤣
Oh dayum. lol
I'm both happy and sad for you. lol
(one of my fav movies, btw)
Real Genius - it involves Val Kilmer at his comedy peak, and big lasers.
Verilog / VHDL coding pet hates...
.AS( tg68k_as_n ), // output
.UDS( tg68k_uds_n ), // output
.LDS( tg68k_lds_n ), // output
.RW( tg68k_rw_n ), // output
.DTACK( fx68k_dtack_n ),// input
When devs don't label their signals as Active-Low, so you have to guess, or trawl through their code to figure it out.
All of the signal labels on the left are on the TG68K module.
Usually on the 680x0, those are Active-Low signals.
(all active-low signals on the Jag core itself, add "l" to the signal names, to denote active-Low.
Or elsewhere in the core, _n.
Not yet. lol
Haha got it for $250. So that’s a good price for a working unit
Nice one!
Now I see why Cojag doesn't map a ROM at 0xE00000...
map(0xe00030, 0xe0003f).rw(m_ide, FUNC(vt83c461_device::config_r), FUNC(vt83c461_device::config_w));
map(0xe001f0, 0xe001f7).rw(m_ide, FUNC(vt83c461_device::cs0_r), FUNC(vt83c461_device::cs0_w));
map(0xe003f0, 0xe003f7).rw(m_ide, FUNC(vt83c461_device::cs1_r), FUNC(vt83c461_device::cs1_w));
'cos the IDE chip is there.
It probably mirrors some of the ROM bytes to 0xE00000 to 0xE0002F or something, so it can jump to the correct ROM mirror at 0x800000.
(which is kind of fairly common with 68K setups in the past.)
VIA chip next to the IDE port.
I've yet to see a photo of the Dual Board without the riser plugged in.
The 68020 is the small chip on the right-hand side of the riser.
As soon as it arrives I’ll tear it down and photograph it
Thanks.
There is a small 2K EPROM on the riser.
Which is probably just the JAGWAVE.ROM
Since they include that in many of the MAME ROM zips.
Oh.
AT28C16 16K (2K x 8)
That chip is only 2KBytes.
jagwave.rom is definitely 4KB of data. hmm
It's possible that 2K ROM is just a copy of the first 2K of the main ROMs? Dunno.
Oops, that chip IS 16K.
A confusing way to list it.
No, it's 2KB.
16K BITs.
I didn't realize the area51 "t" version was Time Warner.
area51a is the Atari licensed version.
cojag has more ram, uses the second bank pin, the pull ups are different, and it uses 68020 or a mips cpu
That same PROM is on the Maximum Force R3000 board.
Yeah, just messing atm. Learning more about the system, etc.
jerry uses the full bus because it's not limited to the 16 bit cpu
"cart" rom can go up to 64 bit wide
ROM_REGION( 0x800, "user2", 0 ) /* 28C16 style eeprom, currently loaded but not used */
So the PROM is used on some boards?
Not much in it. Doesn't even look like 68000 code.
Quite a few arcade boards use that same IDE chip.
Including Killer Instinct.
Presumably straight forward to also support 4MB and 6MB ram to cover the two different amounts found in these Co Jag boards?
I think the Jag core might already be able to access more than 2MB, yep.
But harder to confirm now, because Grey hooked it up in a different way.
It's a more "direct" way now, so the Tom chip can directly activate an SDRAM Row and Column.
Before, we were kind of latching the Row address on the falling edge of RAS_N.
Then just doing a concat of that, along with the CAS addr, then feeding to the SDRAM controller.
wire [19:0] dram_addr = {ras_latch, dram_a};
(well, I'm presuming it was Grey, or maybe Kitrinx who made the change.)
that was me
dram_a is the address bus direct from Tom now...
.ch1_caddr ({3'b000, dram_a}),
Ahh, hehe.
the way tom works is it has two ram select pins
So you have it using dram_a (ch1_caddr) to directly activate a new Row.
else if(ch1_ac | ch1_act) begin
{SDRAM_BA,SDRAM_A} <= {2'b00,ch1_caddr[12:0]}; // no auto precharge
so it can have two banks of 4 chips
Then the Column...
else if(ch1_rq | ch1_req) begin
{SDRAM_BA,SDRAM_A} <= {2'b00,2'b00,1'b0,ch1_caddr[8:0],1'b0}; // no auto precharge
And my brain can't work out the max RAM it's able to access.
so you have to check the board for which way they added more ram
Yeah.
Not sure which signals they used, but I guess the 6MB would just get mapped in contigous fashion anyway.
Cojag 68k...
void jaguar_state::m68020_map(address_map &map)
{
map(0x000000, 0x7fffff).ram().share("sharedram");
map(0x800000, 0x9fffff).rom().region("maincpu", 0);
map(0xa00000, 0xa1ffff).ram().share("mainram");
"maincpu" is the actual ROMs.
0xE00000 isn't used for cart/rom, as the IDE chip is there.
But it might be mapping the lower handful of ROM bytes to 0xE00000 at start-up, so it can make the jump to the ROM mirror at 0x800000.
that looks lie multiple ram banks?
I think that's a smaller scratch RAM at 0xA00000.
Which could be the RAM chips on the riser board?
some sram?
Yep.
idk mame is garbage for this, need a schematic
32KBytes each.
Four in parallel.
I'd love a schematic, but haven't found it yet. lol
There are some "schematic" pages in some manuals like Area 51, but only about 3 out of 10 pages are shown.
128kb of 64 bit wide sram? that's rough
Fast scrachpad, I guess?
I dont think we have enough free blockram
Probably not, although the BIOS is only 128KB.
TG68K starting to do something.
But I had to remove the data bus from SignalFarp, else it complained.
Because the data bus on TG68K is bidirectional, which isn't ideal.
This doesn't really seem productive right now until we can make the much less demanding Jaguar stable
This is true, but I felt like having a look today.
I don't know how to go about pinpointing the main timing issues with the Jag core.
Aside from staring at TimeQuest, and trying to figure out what to actually change, based on its recommendations.
Actually, that SRAM is probably only 32-bit (total).
8-bit per chip.
So probably directly accessible by the 68020 only.
This is my favorite movie from the 80s
Also has possibly my favourite song of all time.
Partly because of the memories it brings back, of when my brother first rented the VHS tape in the late 80s.
Everybody wants to rule the world?
Val Kilmer should have done more comedy Real Genius and Top Secret are great
He is brilliant Kiss Kiss Bang Bang
he should have won an oscar for tombstone
I watched Kiss Kiss Bang Bang, when I was on a flight to Melbourne in 2006. lol
I was trying to stop myself laughing loudly.
Case in point, about the active-low signals...
I had the Read/Write signal inverted.
Because on TG68K, it's just called "RW".
Which is more often called RWn on the datasheets.
Meaning "Read when High, Write when Low".
But at least it's trying to read some code.
Colours
(...of Robert Mapplethorpe)
Apparently it's running some code, but meh.
Gonna take forever to debug, with it taking 17+ minutes for every compile.
Seems to crash, after it (Tom?) does a Bus Request.
I'll have to try adding some proper logic to handle that later.
I can't remember quite how it works atm. Which chip takes priority, which signals might need to be set to High-Z etc
👾🍒🥷♥️🐆
Pixel Cherry Ninja Loves Hyena
Aliens with red testicles wearing balaclavas love cougars
Nailed it 🤣
thats my punk rock band name
Space Invader Cherry Ninja loves Animals
dunno what jacked ass Jaguar your phone thinks that is
It's a British vegan jaguar, brought up on a diet of beans.
instead of growling when it boots up, it yells "OI"
Always said that about The Doors
The Val documentary on Amazon is great (and heart breaking)
I can't seem to get any games working on the improved core; I just get a black screen after the BIOS. For a while I only had one 128MB ram module and I recently added another 128MB module; is the other stick busted maybe? I think I set the jumpers correctly on the board for the second stick.
Try the saturn dual ram core, if that also fails, your ram may be installed wrong or defective
The saturn dual ram seems to work fine; I'm trying to find the latest PSX dual build to test that.
Is there a prefered ROM format? I'm using *.rom files.
The ones that work here are .j64 format
Yeah I have j64
ok, must have been that.... *.j64 works!!
Anyone know a way to convert *.rom files to j64?
The Doors weren't even IN Tombstone... </s>
That's interesting, so are there certain packs of Jag roms that don't work?
You what?
We took the Jag out for a spin. Pranged it.
I'm not getting any loads on this build with any of my sets. J64 (Champion), JAG (redump), or .rom (not sure where I got it... ArcPunks?).
*for AvP specifically
does the bios load?
oh, for AVP
Yeah, sorry it was on a request list for captures, alphabetically first. So...
yeah, that's the same on my retrocastle build. works fine on my misteraddons build. so, all that to say, expected at this point
I had that exact issue last time, but this time it's both.
the memory timings are very finicky, apparently
oh right, I remember you mentioning that
MA OG digi and new I/O for dual ram.
Interesting if that is the case....here's an explanation of jaguar file formats: https://icculus.org/virtualjaguar/extensions.html
A description of various Jaguar file formats
Will wait for Kitrinx or Greyrogue to weigh in on what types work and what don't, and if more are going to be supported, but there should be one pack that can be recommended everyone uses.
In some cases, there were a few jaguar roms that were originally in .rom format and I just rename it to .j64 and it works with the core.
Raw roms
No point in supporting anything else
all i know are j64 roms
Atari doing dat 64 thang before Nintendo.
Just like my 24 bit NeoGeo and 16 bit TG-16! Though, FPGA has dropped bit math for....common....core....
<I actually kinda like common core...estimating makes humans faster and more accurate in the long run (in general)>
I helped my nephew do his math homework last year. They turned math into word puzzles. I had a real old man moment with that one
Someone needs to develop a mister core for that, we’ll call it the common core.
Hey, I'm not sure myself, but the source is meant to be around somewhere so I suppose someone who knows what they're doing likely could 🙂
The custom image is thanks to the 'introptf.exe' that Kitrinx linked, me finding a bmp_cry tool to convert an image into the jaguar 'cry' format introptf.exe wanted, and some sheer luck with hex editing
I just noticed that the 82KB .img file that introptf.exe produces (the custom intro animation) had a lot of similar bytes to the bios, overwrote from there
the misterkun makes me unreasonbly pleased every time it loads
it's the small things
Truth care, truth brings
I tried adding the "Scratch" RAM to the core last night, to see if I could get some Cojag ROMs running more code.
That RAM is mapped at 0xA00000 to 0xA1FFFF, so 128KB (64K Words).
But nope, there's a more specific problem with how I've hooked up TG68K, or other logic that's missing, and the Cojag code can't see it.
It is mostly deterministic on each boot, though.
But always ends up trying to read/write DRAM around 0x7F0000, then there are no more DTACK pulses, and it flatlines.
This is the only thing written to the Scratch RAM so far...
Which is probably garbage, as I need to generate pulses from the 68K cycles.
On MAME, the code copies the first part of the ROM into scratch RAM.
So obviously there's something very wrong on the core atm, and it won't boot any further.
I was just hoping to get it far enough to see anything on screen, other than flashing colours. lol
Probably not worth the effort for only one or two Cojag games that use the 68020.
I also have no idea how much of the '020 the TG68K core actually supports.
That CPU core is used on Minimig, of course.
It doesn't have the full 32-bit wide bus either, so reads the instructions/data as 16-bit wide, like the 68000 mode does.
TG68K still has this comment in the code...
CPU : in std_logic_vector(1 downto 0):="00"; -- 00->68000 01->68010 11->68020(only some parts - yet)
It could be missing specific instructions, and all sorts. But then I don't know why it would be used in the Minimig core 020 mode atm?
Anywho, just something to mess with. It's a KILLER waiting for recompiles, and I must have done about 30 so far.
This is one of the reasons I need to get the sim running again.
So I can see how far the Cojag code might have ran with fx68K (I can't use TG68K in the sim, because VHDL is evil).
It's also SO much easier writing some stuff in C, and much easier to generate proper logs from any part of the core.
No wonder VHDL stands for “Very Hard Difficult Language”
Yep.
Just... I just find it kind of unnecessarily overcomplex to type. lol
And it uses different operators for the bitwise / maths stuff.
Whereas Verilog is much closer to what C uses.
Even now, I'm trying to think of an example of what VHDL uses, and I can never remember.
I think it uses the "&" symbol for concatenating bits / busses. sigh
memaddr_a(31 downto 16) <= (OTHERS=>memaddr_a(15));
"OTHERS"
WHEN X"e" => exe_condition <= (Flags(3) AND Flags(1) AND NOT Flags(2)) OR (NOT Flags(3) AND NOT Flags(1) AND NOT Flags(2));
For God's sake, man. ^
DATA <= data_write WHEN data_akt_e='1' OR data_akt_s='1' ELSE "ZZZZZZZZZZZZZZZZ";
It's like the grammar is backwards, German style.
"DATA <= (assign) data_write WHEN (this condition) OR (this condition) ELSE (assign this)."
Hate it. lol
No offence to anyone who prefers VHDL, it's just not for me.
Verilog...
DATA <= (data_akt_e==1 | data_akt_s==1) ? data_write : 32'hZZZZZZZZZZZZZZZZ;
(conditional operator, like in C.)
Or it can be done in an always block, and look a bit cleaner.
(braces at the start might not be needed, but I think it's good practice, to denote the conditional part.)
VHDL...
-- VHDL code for ALU
process(SEL,ABUS,BBUS,tmp1,tmp2)
begin
case(SEL) is
when "0000" => ALUOUT <= tmp1; -- ADD
when "0001" => ALUOUT <= tmp2;-- SUB
when "0010" => ALUOUT <= BBUS; -- AND
when others => ALUOUT <= ABUS;
end case;
end process;
Verilog...
// Verilog equivalent to VHDL ALU
assign ALUOUT = (SEL==0) ? tmp1 : ((SEL==1) ? tmp2 : ((SEL==2) ? BBUS : ABUS));
Not really a fair comparison, but I found it online. lol
You can also use the case statement in Verilog, of course.
But it would need to be within an always block, AFAIK.
(ie. not just a direct combinational assign.)
(EDITED, to add spaces between the thingies.)
Verilog does have a slight issue, where if you forget to declare a "wire" for a bus (group of bits/signals), it won't complain.
And you'll end up only assigning the LSB bit, which is obviously bad.
wire [15:0] sc_dout;
But, as Jotego and others said, you can add a keyword near the top of each file, and it will cause Quartus to trigger an error unless ALL bits of the busses have a wire declaration.
`default_nettype none
lol
It found one right away.
But that signal is only 1-bit wide anyway, so wouldn't have mattered.
Still, may be worth adding the default_nettype thing to all files, and see if it finds any glaring problems.
It will probably generate a LOT of "errors" on the Jag core, though, if it's already complaining about 1-bit wide signals not having a wire.
Worth doing and reading through to see if any errors look legit?
Just added to some of the Jag main files, and no errors so far.
A bit of homework.
Using the falling edge of DTACK_N, to decide when to write data to the Scratch RAM.
AS_N is basically "Address Strobe", so gets asserted whenever the 68K puts a valid address on the bus.
So AS_N is active for most of the memory read/write cycle.
UDS_N and LDS_N denote whether the upper and lower byte of the data bus is valid (ie. which byte, if any, should get written to memory / mem-mapped IO).
Forgot all about this.
Apparently I had a few bare PCBs made in December 2021.
Never built one. lol
The idea being, to run the FPGA version of the DSP chip in lock-step with the real chip.
And look for any mismatch.
I couldn't easily do a version for the Tom chip, as it has a lot more pins.
Another day, another Jag compile.
Messing with the Cojag thing (still), but not getting very far.
It does seem to run a fair bit of code, but always crashes.
Or jumps to a place in memory that isn't mapped properly in the core yet.
That 0x714DF7 would place it in the main DRAM on Cojag.
Which is kind of around 7.2 MBytes into RAM.
At least that looks like actual data this time. lol
NqN is a tell-tale sign of some 68K code.
0x4E71 is the NOP at the start of the ROM.
But the next word looks wrong, unless it's copied from elsewhere in ROM.
In the code / in MAME, it does copy a whole chunk of the ROM to the Scratch RAM.
The first writes, to Scratch RAM...
Might call it "WRAM" (Work RAM) from now-on.
81CA86: FFA0 dc.w $ffa0; opcode 1111
81CA88: 042C 23DF FFA0 subi.b #-$21, (-$60,A4)
81CA8E: 0434 33DF FFA0 043E subi.b #-$21, ($43e,A7.l*8)
81CA96: 23DF FFA0 0438 move.l (A7)+, $ffa00438.l
81CA9C: 601C bra $81caba
81CA9E: 40F9 FFA0 043E move SR, $ffa0043e.l
81CAA4: 46FC 2700 move #$2700, SR
81CAA8: 42B9 FFA0 0434 clr.l $ffa00434.l
81CAAE: 23DF FFA0 0438 move.l (A7)+, $ffa00438.l
81CAB4: 23DF FFA0 042C move.l (A7)+, $ffa0042c.l
81CABA: 48F9 7FFF FFA0 0440 movem.l D0-D7/A0-A6, $ffa00440.l
In MAME, that part of the code doesn't even run, so it's either branching elsewhere, or just not reading the correct instructions, or TG68K isn't handling enough of the 020 stuff atm.
Using 53% of the BRAM atm, which isn't too bad, considering there's an extra 128KB for WRAM, and SignalTap is enabled.
Reverting to fx68k. To get the Jag BIOS to boot again.
Then see what Cojag does, and if it runs the same core (or more, or less).
CoJag board shipped today so should be here early next week. I can start tearing it down, photographing it and researching whatever may be of some use
Would be good to document either way, as we could probably do some basic multimeter tests, to figure out which Chip Selects are used, etc.
Although I expect quite a lot of that decoding is done in the PAL/GAL chips.
If those chips are the type with internal registers, it's generally way harder to dump the config.
It may not be doing a whole lot of magic stuff vs the Jag, tbh.
Probably a lot of it is to interface to the VIA IDE chip, etc.
No idea if they used the standard Jag IO pins for the JAMMA controls.
That's as far as Area 51 gets on fx68k, before seeming to crash.
81CB64: subi.l #$10000, D1
81CB6A: bcc $81cb5e
(loops for 262148 instructions)
81CB6E: move.w #$1f00, $fff000e0.l
81CB76: move.w #$0, $fff000e2.l
81CB7E: move.w #$0, $fff02114.l
81CB86: move.w #$0, $fff1a114.l
81CB8E: moveq #-$1, D0
81CB90: dbra D0, $81cb90
81CB90: dbra D0, $81cb90
Believe me, I have no idea what I'm doing either. lol
It's just a distraction from building PCBs atm, tbh.
I've had a board sat on the bench for over six weeks, and just haven't felt like building anything.
Including the new GD Emu / HDMI board for DC. 😦
Probably not going to get too far with Cojag, unless we can get help to confirm what TG68K does and doesn't support, in terms of the 68020 instructions.
(or seeing which 020-specific instructions are used in the Cojag games. Some might not even use them?)
I THINK he is trying to figure out instruction jumps in memory and where diff code executes from and where it jumps from there / what 68020 instructions might be used by CoJag and how to impliment them into the core...seems like memory address jumping with the MOVE command...but I am getting out of my depth too haha
@rotund portal how close was i?
I’m somewhat new to discord, can anyone help me figure out how to unhide the Test Builds channel? I don’t seem to have access and I don’t see it as an available channel.
I think also there is some weirdness in where the data first boots from in POST as far as memory addresses are concerned vs the Jaguar console. Considering the arcade boards have a ROM but then basically hand off to an IDE drive there would need to be a some additional hardware / instructions to start ingesting and executing data off the HDD in and of itself
probably a lot of that logic is in the GAL chips. It is on 3DO M2 when it boots via HDD for the dev kit
(or I am talking out my ass 🤣 )
NVM…got it figured out.
Yes, this is just me, trying to see how far I can get some Cojag code to boot, using the MAME debugger to trace the instruction flow, so I can compare.
The IDE stuff will happen a lot later, if we can get anywhere with the 68K stuff first.
It's currently only managing to run a handful of instructions before crashing, so not super useful right now.
I've been messing with the Jag core for about four days, so looking at DC again.
I asked Claude AI last night, to generate some code to help me calculate the Triangle Visibility thing on 32 pixels at once.
It's... working slightly better than I gave it credit for. lol
I don't know if that's better or worse. lol
But at least it didn't take 17+ minutes for a compile.
Verilator "compiles" the sim model in less than half a second.
I'm trying to make out what game I'm looking at here.
"Rolling Starrrrrrt !"
Featuring one of the greatest arcade themes of all time
Gravações para o lançamento do jogo no XBOX LIVE e PSN.
gamer cred bankrupcy
thats the Hornet from Daytona baby
I didn't know this game came out on the Atari Jaguar.
||/s||
lol
I should probably continue this discussion on the Simulant server.
But, one last pic...
I think it's getting closer.
Or programmer cred bankruptcy.
That's Dear ImGui, baby.
IMGUI IS THE BEST 
I’m not here for the code. I’m here for the Daytona
Funny seeing Retro RGB Bob begging for spinner support in the core. How hard would that be Kitrinx?
So Jotego has JTFriday. SRG has Saturnday....Guarday? Jagueekend? SundayFunday?
Greyday? Potaday?
We need to workshop this
Easy
We don't need stupid release days because we aren't trying to sell you anything
JagOffDay
Junday 🤣
Caturday
I think he means more just the fun people have naming things like SaturnDay
What could PAWSIBLY go wrong
I just posted this in the comments of the video!
The meme that just keeps on giving.
stupid?!
@rotund portal with you pivoting on the memory addresses on where CoJag boots from in memory vs a console now the first thing I want to do with the CoJag after tearing it down is burning retail games to rom at the proper address and trying to boot retail on the CoJag
For no good reason other than it would be funny to see
I poured my creative soul into those names
Buesday. Bubsy Tuesdays
Could you sell me something though? I’d like to buy a functional Neo Geo Pocket Color core. 🙂
Best offer is a Game.com core
Does anyone have a good list of Jaguar homebrew? I know nothing of what’s out there
Aliens Versus Wednesday
CyberMorphMonday
JagOffDay is good, as that can be any random day
Or every day, if you’re strong enough
Hat trick day
JagOff carts, on Cojag? hmm
Trying to think how that would work.
I mean, it might, somehow.
// OS ROM (BIOS). Mapped at 0xE00000 on the Jag.
assign os_rom_ce_n = xromcsl[0];
// CART. Mapped at 0x800000 on the Jag.
assign cart_ce_n = xromcsl[1];
So I guess xromcsl will get asserted first at power-up / reset.
So Tom, pin 58.
Cojag just mounts the boot ROM at 0x800000 instead.
map(0x800000, 0x9fffff).rom().region("maincpu", 0);
Jag...
Ohh, I see now.
I should have read the top part of that same page. lol
The 68000 will of course start reading the vector table stuff from address 0.
So will (likely) assert ROMCSL (BIOS) within that range.
Shortly after, some 68K code will write to the MEMCON reg(s), to chose where to map BIOS and Cart.
(from the point-of-view of the 68K memory space. The Tom chip will handle the remapping, AFAIK?)
So with the rom board for CoJag I feel like it should execute code from console if it finds the right data at the right memory address
And I’d hazard a guess that at least cardinal directions and A/B/C/Start/Option will be automatically transposed from the JAMMA edge to the appropriate hardware on the CoJag
Yep, except Cojag maps the IDE chip to 0xE00000, sort of.
map(0xe00030, 0xe0003f).rw(m_ide, FUNC(vt83c461_device::config_r), FUNC(vt83c461_device::config_w));
My brain can't figure out how it's doing the mapping. ie. whether it just has some logic to swap those areas around, etc.
I doubt they changed IO pins. More likely just got the signal from jamma to the pins
Probably, yep.
Although we don't know whether they used a similar "matrix" scheme to the Jag games, or something else.
Without looking through more MAME code.
I think I see - it starts up with ROMHI set to 0.
Set maps the BIOS (well, whatever is hooked up to ROMCSL0) to address offset 0.
Then the 68K code can chose whether to set ROMHI to 1, to change the mapping.
(on the Jag, that means it will immediately have to jump to a location at 0xE00000 to some BIOS code, or to 0x800000 for Cart code.)
Don't quite get it.
On CoJag, it will start off with the ROM at addr 0.
I'll check on MAME to see what it writes to MEMCON...
area51t, writes this same value to MEMCON1 three times in a row, then three times again.
Then it starts playing the intro vid.
0x587D35DD
So it DOES use ROMHI = 1.
So, after power-up/reset, the ROM is mapped at addr 0, so the 68K can read the vector table, make the jump, etc.
Then some code sets ROMHI = 1, which re-maps the ROM.
The problem is, it can't be at 0xE00000 like it is on the Jag, because Cojag maps the IDE chip there.
So I think the board must switch over to using ROMCSL1 for the ROM at that point?
Yes it may be handing it off. Get the hardware up and then hand off to IDE transfer
3DO M2 isn’t much diff. First bios memory address executes the POST and security / rom checksum checks then it jumps to an area in the bios that is almost 1:1 to the console bios if you compare the two in hex. CoJag may be doing the opposite
You know what, it's probably just a wired OR. lol
Or, more accurately, and AND.
ROMCSL0 AND ROMCSL1.
Oh, it can't be. The IDE would clash with the ROM otherwise.
Either way, the ROM code definitely jumps to running code from the 0x800000 range at some point.
Actually, very early-on.
You can see the 0x587d35cc gets loaded into D0 near the top of the page.
Then gets written to MEMCON1 at 0xF00000 at the highlighted line.
(ignoring the upper 0xFF bits of the address bus. It probably doesn't even hook those up.)
Still don't quite get it.
If it starts up with ROMHI=1 (via a pull-up), then it surely wouldn't be able to read the ROM code from addr 0, but would be trying to read (uninitialized) main RAM instead?
But we know the reset Program Counter is the second Word in the ROM.
So that's the very first place it will jump to after reset, and after reading the first Word (which sets the Supervisor Stack Pointer).
So I guess it must just be set to ROMHI=1 mode at power-up, like the Jag.
A Jag cart ROM would need to be modified to run on Cojag.
'cos a cart contains the header as well.
The Jag BIOS normally reads that header, to know where to start copying the boot code from the cart into RAM.
A bit like how the N64 does it.
I think CoJag must just switch from ROMCSL0 to ROMCSL1, after the first few reads.
So it can immediately jump to code at 0x800000 (which is where the Cart is usually mapped on the Jag).
Not to mention many games will probably be using some BIOS functions, so that's tricky. lol
You'd probably have to add an extra ROM socket for the BIOS, and some decoding logic.
// Jag...
assign os_rom_ce_n = xromcsl[0]; // BIOS. Mapped at 0xE00000.
assign cart_ce_n = xromcsl[1]; // CART. Mapped at 0x800000.
// CoJag...
assign os_rom_ce_n = xromcsl[0]; // VIA IDE chip etc. Mapped at 0xE00000.
assign cart_ce_n = xromcsl[1]; // "BIOS" (main ROM). Mapped at 0x800000.
Making a bit more sense.
CoJag ROM is just using ROMCSL1, so gets mapped where the cart usually is.
how is the jaguar coming along? new logo from the car company can't be just a coincidence 😂
With a bit of extra logic, to allow reading the vectors from addr 0, unless Tom does that anyway.
I prefered this one...
I think the car company forgot one of the Golden Rules of the Internet... "Don't F with cats!".
It is a bit strange, including the fact that it's been a while since I helped with a carpet clean, and spotted this the other day...
#1055574003810578503 message
Oh - I already had the two ROMCSL signals added to SnargleFlap earlier.
I don't know what I was expecting, because obviously ROMCSL0 gets asserted at boot. lol
(rising edge of xresetl at the top.)
Ohh, ffs.
It does actually change to ROMCSL1 later on (CoJag Area51 ROM)...
Which is where it was crashing for me before. Doh!
And that is directly after it writes to 0xF00000 (MEMCON1).
(I'm basically loading the first 128KB of Area51 as if it's a "BIOS", then loading the full 2MB ROM as well, as if it's a "Cart".)
Then it's supposedly doing the loop, so doesn't need to access the bus during that time.
81CB52: move.l D0, $fff00000.l
81CB58: move.l #$3ffff, D1
81CB5E: nop
81CB60: dbra D1, $81cb5e
81CB5E: nop
81CB60: dbra D1, $81cb5e
(loops for 131068 instructions)
May be an endianess thing...
Because the OS ROM (BIOS) on the Jag is read as only 8-bit wide, so presumably it gets the byte order correct.
But the cart is (atm) read as 32-bit wide, so I might need to byteswap the CoJag ROM when being read from the "Cart" addr range.
If that makes any sense. lol
The problem is - 17+ minute compiles, and about four different combinations to try.
Endianess looks fine.
But it seems to try to write to the upper bank of DRAM, which ofc the core isn't really set up for.
Ohhhh.
Cart = 32-bit wide.
68000 isn't. lol
Well, the ROM isn't, I mean.
No I can see why they might have mapped the CoJag ROM at 0x800000, because it can be accessed as 32-bit wide, so it's faster.
It didn't matter so much for the BIOS on the Jag to be that fast at start-up, so it's only 8-bit wide.
I think I see the problem now.
And it is the 68K trying to access the "cart" as 32-bit wide.
Even though the Cart data should get loaded into DDR3 fine, the 68K isn't... this is actually very hard to explain. lol
I think, once it sets ROMHI=1, it expects Tom or Jerry can access the cart ROM as 32-bit wide.
So will increment the address by 4 each time.
But the 68K can't do that, as it only increments the address by 2, for each contiguous fetch.
Or something.
Possibly related to it needing the 68020, but I'm not sure yet.
Basically looks like it's reading the same Words in twice, and some garbage in other places, probably from the upper 16-bits of the bus.
Yep...
Before the ROM code sets ROMHI=0, it's able to access the ROM within the 0x800000 range, and as 16-bit wide.
Tom handles the translation there, because the BIOS is actually stored as 8-bit wide. So Tom does the two byte fetches, shoves them into a pair, then feeds to the 68K.
But after that, Tom is expecting the 68K to read in 32-bit mode, so yep, 68020 problems.
I don't see bit 14 being set by that value. hmm
// 32-bit cart mode...
//
assign cart_q = (!abus_out[2]) ? DDRAM_DOUT[63:32] : DDRAM_DOUT[31:00];
OK, so the 32-bit CPU mode will be set on CoJag via pull-up resistor on an XMA pin...
assign xma_in[5] = (xma_oe[5]) ? xma_out[5] : 1'b0; // CPU32
But I need to tweak the cart reading logic, to allow the 68K to read as 16-bit wide.
// 32-bit cart mode (Jag)...
wire [31:0] cart32 = (!abus_out[2]) ? DDRAM_DOUT[63:32] : DDRAM_DOUT[31:00];
// 16-bit cart mode (CoJag)...
wire [15:0] cart16 = (abus_out[2:1]==2'd0) ? DDRAM_DOUT[63:48] :
(abus_out[2:1]==2'd1) ? DDRAM_DOUT[47:32] :
(abus_out[2:1]==2'd2) ? DDRAM_DOUT[31:16] :
DDRAM_DOUT[15:00];
assign cart_q = (status[12]) ? cart16 : cart32; // Switch between 16-bit (CoJag) and 32-bit (Jag) "cart" reading modes.
It's not really 16-bit access on CoJag, 'cos it has a 32-bit CPU.
fx68k and TG68K don't support 32-bit, so I have to make do. lol
No idea if this will help, but compiling anyway.
you heard it here first, Atari Jaguar isn’t 64-bit
Here’s a patch that supposedly improves Checkered Flag - https://www.reboot-games.com/rebootnews/checkered-flag-steering-patch/
No change so far, but I think it's because I should have replicated the 16 bits to the upper part of the bus.
assign cart_q = (status[12]) ? {cart16,cart16} : cart32;
The squiggly braces allow you to do concatenation of wires / busses.
Without that, the upper 16-bits of the cart_q bus (32-bit) were probably left as High-Z (floating), and defaulting to 0xFFFF or something.
Great - now the core won't boot at all. lol
Typical.
Either the marginal timing causing problems, or the fact I enabled the "CoJag Mode" menu option, and it needs that disabled at start-up.
This seems to happen SO often on retro cores - the moment you think you're getting closer to something working, the whole thing breaks.
The core seems to kill everything atm. No idea why.
Like it's stomping on the wrong mem in DDR3, and breaking Linux.
Even SSH login stops working.
OK, so I changed one teensy tiny thing, and that's probably what broke it.
wire cart_rd_trig = !cart_ce_n && (cart_ce_n_falling || (abus_out != old_abus_out));
I commented out the !cart_ce_n &&
So it was probably triggering a cart ROM read from DDR3 all the time, so the ARM/Linux side had no chance of accessing DDR.
Lesson learned.
Now it's clear why trying to debug this stuff on hardware is SO hard. lol
Waiting for that compile time SUCKS.
No change.
I need to understand more about what's happening first.
Definitely done for tonight. It's 4am here in Mordor again.
g'night. zzzzzzzz
tom does it's own masking of different cart bits
and of course it uses romcsl0
it has to
it's like saying "the 6502 must boot from 0xFFFF"
a rom has to be selected and that's the default select, otherwise there's no boot code
the arcade board of course messes with the memory address input's at boot where it gets the hardware parameters
maybe the B bus as well
(I think it's the button bus?)
i'd honestly be kind of surprised if the cojag didnt have a boot rom of some kind
otherwise tom wouldnt know the correct memory size to read
that ergister has to get set
Calling the chips Tom and Jerry is the best thing I’ve ever seen. It makes reading messages in here without context so much more amusing
Imagine if one was called robby
lol people astonish me sometimes. Are we all having a collective fever dream? Is Jaguar core not real? 🤣
Next YT video is @thorny swift pulling up in a Lambo asking for $3 for a Jaguar core with no compromises
please...TWO Lambos
Dual Lambos
I worry about people sometimes lol
If only the Jag core was a software emu on the ARM, it would save us all this trouble. lol
Back again...
There seems to be an issue with cart reading, which might affect normal Jag games.
(ie. even when CoJag mode is disabled, and cart reading is set to 32-bit wide.)
You can see on DDRAM_DOUT, it grabs the correct data (matching up with what you see in MAME at the top-left window.)
It shoves the data into iEdb correctly for a while, which is the fx68k data input.
The data should be valid when xdtackl pulses Low.
But iEdb receives the wrong data sometimes, as if it's reading the "open bus", or sometimes whatever is on oEdb, which is the OUTPUT bus from fx68k?
// The external data bus (ED) is driven when RW is high and XEXPL is low.
wire [7:0] e_dbus_7_0 =
(os_rom_oe) ? os_rom_q[7:0] : // BIOS.
(cart_oe[0]) ? cart_q[7:0] : // Cart ROM.
(joy_bus_oe) ? joy_bus[7:0] : // Joyports.
(adc_oe) ? adc_data[7:0] : // Joystick DAC.
8'hFF; // External bus is pulled up.
wire [7:0] e_dbus_15_8 =
(cart_oe[0]) ? cart_q[15:8] : // Cart ROM.
(joy_bus_oe) ? joy_bus[15:8] : // Joyports.
8'hFF; // External bus is pulled up.
wire [15:0] e_dbus_15_0 = {e_dbus_15_8, e_dbus_7_0};
wire [15:0] e_dbus_31_16 =
(cart_oe[1]) ? cart_q[31:16] : // Cart ROM.
16'hFFFF; // External bus is pulled up.
assign cart_oe[0] = (~cart_oe_n[0] & ~cart_ce_n);
assign cart_oe[1] = (~cart_oe_n[1] & ~cart_ce_n);
assign cart_ce_n = xromcsl[1];
assign cart_oe_n[0] = xoel[0];
assign cart_oe_n[1] = xoel[1];
cart_ce_n is direct from xromcsl[1] on Tom.
Same for cart_oe_n[1:0].
reg [63:0] open_bus; // Chances are this should be capacitance based
always @(posedge sys_clk) begin
open_bus <= dbus;
end
Are you hacking us?
He can’t be. Jaguar core isn’t real. I have it on good authority
Super confusing, how the busses are wired.
Don't even know where to start with this one. lol
It can't really be due to this...
wire fx68k_dout_en = fx68k_bus_en & ~fx68k_rw;
Because fx68k_rw is held High for most of the SignalFap capture.
But it could definitely be due to this...
wire e_dbus_oe = ~xexpl & rw;
The only way it can read data from the "external bus" (which the cart is on), is via these...
wire [15:0] dbus_15_0_no_j =
(den[0]) ? xd_out[15:0] : // Tom.
(dram_oe[0]) ? dram_q[15:0] : // DRAM.
(e_dbus_oe) ? e_dbus_15_0 : // External Bus.
{dbus_15_8, dbus_7_0}; // 68000, Open bus.
wire [15:0] dbus_31_16 =
(den[1]) ? xd_out[31:16] : // Tom.
(dram_oe[1]) ? dram_q[31:16] : // DRAM.
(e_dbus_oe) ? e_dbus_31_16 : // Cart ROM (External Bus).
open_bus[31:16];
ie. when e_dbus_oe is High.
So rw has to be High, and xexpl Low.
xexpl stays Low for far longer, when it's reading using xromcsl[0]...
But then it does the write to MEMCON1 at 0xF00000, to switch to using xromcsl[1] instead.
Then the xexpl (low) pulses are too short.
Which would shove either the 68K write data, or open bus crap onto the 68K input.
xexpl is generated directly by Tom.
Gonna try forcing e_dbus_oe, when cart_ce_n (romcsl[1]) is Low.
wire e_dbus_oe = (~xexpl | ~cart_ce_n) & rw;
It seems like xexpl is being brought high far too early, before dtackn goes High.
So sometimes the 68K isn't seeing the correct data?
Actually, that won't help either. xexpl and romcsl[1] are the same width in the SignalTap capture.
I don't know if Tom is supposed to be latching the data from the Cart, to allow the 68K to read it?
'cos when it translates between bus widths, Tom has to do the translation.
(like reading two Bytes from the BIOS, to make one 16-bit read for the 68K)
well the seller marked the CoJag as shipped but didnt add tracking so...damn it lol
yeah always drives me nuts
Not sure how to fix this atm. It could be an alignment issue.
Maybe due to not using a 32-bit 68K.
Or it could be something like the CoJag code not setting a slower ROM read rate, and it's messing things up.
(due to a small bug in the core.)
I think IOSPEED does determine how fast it reads the Cart too? (ROMCSL1).
ROMSPEED relates to ROMCSL0 (usually the BIOS), AFAIK.
Get a matchbox lambo in the same color for your next video. That would be a cool joke. 😁
Bits 12:11 are set to b10.
(fairly sure the 12 is the MSB bit, not how it says it in the PDF, but I could be wrong.)
Which would set IOSPEED to 2 (4 clock cycles).
So it's not like it's using the fastest setting.
I need to figure out why it sometimes seems to grab the data from oEdb (even though eRWn is always High/deasserted), and sometimes has 0xFFFF, like the open bus thing.
I mean this might (not saying it is), but might be part of the issue with AvP not loading properly, but I doubt it.
AvP is variable for different people's boards / SDRAM, so probably just very marginal core timings.
EBay? If yes ask for tracking number.!
yeah. Just did
seller has 100% feedback and 2500 reviews so not too worried. I just want the CoJag
well I actually dont want it at all lol...but itll be fun for this
I hope you won't be too disappointed, when I inevitably don't get any CoJag working on the core. lol
lol I just want to poke at the board. I could care less if it doesnt work
make two vids, document the board better for posterity, feed you info then sell the board on
Yeah, we can figure out quite a lot from the board, with some multimeter beep tests.
Like how it uses ROMCSL[1] and ROMCSL[0] etc.
CoJag ROM does set the ROMWIDTH to 32-bit.
Which sort of makes sense, but sort of not.
I think ROMWIDTH is only for ROMCSL[0], which is what the Jag normally uses for the BIOS.
But the BIOS chip on the Jag is only 8-bit wide, IIRC.
CoJag likely just maps it's ROM(s) using both signals. CoJag ROMs are almost certainly 32-bit wide.
(four 8-bit ROMs in parallel.)
Still doesn't quite explain why it's messing up when reading from the "Cart" region, using ROMCSL[1].
lemme go to my video game trap house and shoot a proof vid
Im just asking the question!!
Another day, another Quartus compile.
Added more signals to SnargleFlap.
I really want to fix this. I just want to get the CoJag thing a bit further along, even if it crashes again.
now you're just making up words
What if...
I love how you’re posting dev updates that only you, Kit and GreyRogue understand 😂
I forced it to carry on using ROMCSL[0], like it does before writing to 0xF00000. hmm
lol. Probably true.
I'm hoping one of them will have some input on this, because I'm stuck again atm.
You know what would be amazing - a kind of GUI that shows you a schematic of the main busses.
Then highlights each part, showing where the data is flowing.
But that sounds far too much like hard work. lol
OK, thinking about it, I can't really keep ROMHI low.
that would be useful...little data flow animations
Else it won't be able to access DRAM at addr 0.
Yeah. I saw something similar on YT a few times. Can't remember which channel.
Oh, probably Jon.
What's his name.
Traveller's Tales programmer.
He made some great vids. I wish he'd do some more.
Trying to think what the other channel is called, who do amazing vids on the SNES etc.
Game Mechanics thingy.
#share-media message
That is just bizarre if someone is claiming the MiSTer Jag core isn't real... It has existed for years, and recently just got better... You can go play it if you have the hardware...
I read a thread on in Atari Age the other day and the weird negativity was rather off-putting. That doesn't seem a fun place to hang out
it has its moments pro and con
Strange behaviour of the external databus thing on SignalFap, like only the lower 9 bits are being used?
I did try adding (keep) before the wires / busses.
I'm going to need a video of a TV with only one HDMI cable going into it (please show the HDMI label of the input as well), that cable into the back of a mister, you selecting the input with on screen display showing the input selection, loading the core, playing aliens versus predator, all while holding a paper from today's date.
Unbroken shot please
I know my way around iMovie, so no tricks
I'm not the police
lol
cart_oe_n signals kinda make sense.
But means that Tom is probably trying to do the bus width translation.
Still makes no sense. I don't get what is driven data onto the bus at each point.
hell, is the MiSTer even real? How can we be sure?!
Very tempted to just NOP out the write to 0xF00000, and see what happens.
five years ago I fell and bumped my head...maybe this is all a coma?
Pached the ROMz. Got it running further, but it won't be able to access DRAM like this.
It does a Write to the Interrupt enable reg thingy.
Nothing at all gets written to WRAM.
A few more reg writes, before crashing again.
Just interesting that it jumps to the same address, 0x714EF6.
@rotund portal when are you going to share with us your ElectronStash?
||jaguar core update||
There is no real update, sadly.
Just trying to see how far I can get some Area 51 ROM code to "run".
Other than that, the RBF I posted the other day ran AvP for me, and had DV and JagLink added.
I can't currently test DV, nor test JagLink.
I just added the code for those, from what other people did / posted.
I think we got up to the point of the first 68020-specific instruction.
Hence the crash.
81CB94: move.l #$70007, D0
81CB9A: move.l D0, $fff1a10c.l
81CBA0: move.l D0, $fff0210c.l
81CBA6: moveq #$1, D0
81CBA8: movec D0, CACR; (2+)
81CBAC: clr.w $ffa00402.l
81CBB2: clr.w $fff17802.l
81CBB8: move.w D0, $ffa30000.l
81CBBE: movec VBR, A0; (1+)
81CBC2: tst.l A0; (2+)
81CBC4: bne $81cbec
81CBC6: lea $ffa00000.l, A0
81CBCC: movec A0, VBR; (1+)
81CBD0: lea $800000.l, A1
81CBD6: move.l #$ffa00400, D0
81CBDC: subi.l #-$600000, D0
Which is anything with the 2+, 1+, etc. I think?
So a bit of a dead-end already. Oh well.
I might try with TG68K again later, but that its own problems.
Unless somebody can help add those instructions to fx68k (or TG68K), this will be tough.
"Several" ?!
Might have to shelve this idea for a while, sorry.
Unless there is a core available with full 68020 compatibility, or we group together to add support to fx68k or TG68K.
Or if there's a CoJag game which only makes use of the 68000 instructions, not 020.
Or if we use a real 68020 CPU on a riser board, but I can't see many people wanting to do that.
Would be nice to know specifically what TG68K supports in "020" mode.
lol. Found one of my old posts from TEN years ago (again).
(search for 020 on that page)
1) If the tg68k (as an example) is determined "as 68020 compatible" and does not work in practice as a 68020 with respect to the BFINS instruction. Is it fully compatible or not?
I'm excited to see what Grey and Kit have cooked up for Trevor McSunday
The problem with the Graftgold games and the TG68k in 020 mode is well known - it's not limited to MiSTer. They even work on the TG68 in '000 mode so it's not an issue with cycle-exactness.
switchable 68K CPU-Core. Contribute to TobiFlex/TG68K.C development by creating an account on GitHub.
-- 30.10.2019 TG bugfix BFINS again
Maybe TG68K does support more 020 stuff than I realized.
-- done 020:
-- CAS, CAS2
-- TRAPcc
-- PACK
-- UNPK
-- Bitfields
-- address modes
-- long bra
-- DIVS.L, DIVU.L
-- LINK long
-- MULS.L, MULU.L
-- extb.l
I think Slamy who's working on the CDI core has been making updates to the TG68K: https://github.com/Slamy/TG68K.C/tree/d24a77bf3d571d202a058baad8b813e99719425c
Oooh, nice.
Would be ideal to get Slamy onboard with the Jag / CoJag stuff.
At the same time, I'd rather see the CD-i core get further along.
The CD-i uses the scc68070, which has a weird variant of the 68K family.
But some of the fixes being done for 070 might help 020. Not sure.
Trying yet another compile, with TG68K enabled again.
Hey, he has 7 icons below his profile pic. You only have 6. I'll take his word over yours! This core is fake as fudge! The time I spent testing it and playing games on it was just a fever dream from VT cheese poisoning!
only fake thing is that orange ass cheddar you sell
Oh damn!
The taste is most important, and we got that in the win bucket!
Which core version was it that Aliens vs Predator worked on?
Ive tried quite a few and none of them seem to work
I get the BIOS screen, then I get audio but no HDMI video
lol well half of AtariAge apparently thinks its not real so...I have lost all hope for humanity today 🤣
(someone is mad their perceived hardware and game collection value is gonna go down)
It's very hardware dependent, what may work on one persons setup may not work on anothers. No core build specifically will guarantee you can run AvP right now.
Yeah, AVP is a weird beast. I have the same core on two misters, pulling from the exact same shared rom that is stored on a NAS - one runs AVP no problem, the other does not
Going to take some time before the timings for that one are nailed down
If you haven't tried this one, I think it's the one that has worked the best for folks: #test-builds message
I will definitely give that particular one a try
Sadly no dice, guess its time to go out and get a MiSTER Pi
LOL
Just so that I can have another test unit!!!
it's weird. try this one? #test-builds message
I tried both the one posted on the 12th and the 13th
She is a cruel mistress
LOL, true that
One more to try! #1055574003810578503 message
Actually, I don't think I tested this one #1055574003810578503 message
For me, the _faster core worked, no others
ooo, I will try that one now then
nope, doesn't work on mine
Ok, I think this one (at one point) booted AVP for me. It doesn't anymore but it did! #1055574003810578503 message
Once this core becomes 100% compatible with all games, they can eat crow for all we care. And who gives a shit if their collection is gonna go down in value? It won't, because at least they'll still have the physical copies.
They need help.
Haha welcome to my world of interacting with the “larger retro gaming community”. Really makes me wonder how some people get through the day
It's their kind of mentality that the Atari Jaguar always had fucking shit emulation for many years. Or at least part of it.
||Sorry, for cursing, but these types of gatekeeping people piss me off.||
Haha doing YT I’ve learned that a large percentage of people aren’t happy unless they are angry
There is just this subset of people who take positive news and spin it into negativity. They must be real charming at parties 🤣
That's how it is on this bitch of an Internet. Drama will always ensue. Not even the FPGA retrogaming community is safe.
Thankfully, the best solution would be to ignore them completely like the plague, and move on.
Omgwtfbbq wrote about the internet tough guy like 20 years ago on the something awful forums and it is still accurate today. People, as it turns out, are the worst
God knows if people were always like this, even before the commercialization of the Internet in 90s.
But like I said to Bacon, it's best if we just move on, and continue discussing about the Jaguar core.
If the AtariAge forum people want to eventually join in on the Mister fun, fine. If they don't, also fine.
We're still gonna be here, having fun.
The doors are still open.
As wide open as your Mo…Nevermind 🤣
As an aside, let’s fucking go?
I wish they would open source that. 😦 it would be so helpful
If only there were a wireless version of the Jaguar controller, so you can easily play these games on non-official hardware.
A: As addressed previously, I have legal reasons for not releasing BigPEmu's source code at this time. However, Open Source as an ideology within this culture of capitalist exploitation is also a big problem. We're effectively devaluing our own labor, and in failing to recognize so many of our critical weaknesses, we've created an extremely toxic culture which is fueled in large part by egotism and narcissism. In taking such an aggressive stance against free software authors who choose not to release their source code, you're part of the problem.```
Source: https://richwhitehouse.com/jaguar/index.php?content=faq, https://x.com/DickWhitehouse/status/1540107735777177600?t=UdqRCe7UoEn5ER5hH2I-ZA
Even without this terrible GitHub service, the idea that public licenses (like the GNU GPL) are meaningfully preventing the exploitation of code/software is, sadly, delusional.
Do with this statement what you will.
Eh. I'm all for making money from your work, but but with emulators
That's just shitty
It's like the brother hasn't even heard of Patreon, or Kofi.
I mean, he does have one.
I don’t care if people make a little bit of change if they do it legally (not the yuzu method lol)
But I’m also the person who yells at commenters when they complain about ads in videos and any sponsored content. Stop assuming every ounce of creative energy in the world is for you and for free by default. It’s still free. Watch a fucking ad. Let me make a couple bucks that gets piped right back into the channel to make more entertaining shit for you 🤷🏻♂️
But I’m surly. I’ve worked in the arts for two decades now. The amount of people who think we all work “for experience” is insane. Nobody wants to pay shit. They think all fine arts should be made for a zero dollar cost
(End rant) so how bout that Jaguar? (Slaps knee) lol
Yes. Fucking this. Emulators are a weird “are we not entitled to the sweat of our brow?” soapbox
No you aren't. They are made to pirate games and built on the backs of a zillion people that shared their into
Jaguar is an interesting example. Did hasbro open source it all in a manner that allows for monetizing future works? I dunno. Haven’t looked it up
But just something that stands out vs every other platform an emulator exists for
I dunno. I guess we will see if it gets pulled from the store.
Make no mistake, I’m 100% in favor of owning your labor and making money off it. But when your labor exists because of the knowledge learned by others, you owe it to the whole to share your knowledge as well.
It would be one thing to argue not open sourcing a calculator app. But this is a fucking emulator
A lot these individuals probably still have $100 down on an Amico pre-order.
And a full price SuperSEGA lol
THAT IS SHIPPING ANY DAY NOW
FRAUD IS ILLEGAL IN SPAIN THEY HAVE TO SHIP ME THE CONSOLE - LEGALLY
Easy on the knees! They're delicate!
Haha mine are. Science experiment knees
Next knee based oopsie and they are gonna cut the damn thing out and install Terminator parts
ehhh who cares, this core rocks and is getting better. all that matters
Just played through AVP with the alien. Good stuff. I noticed saves don't work when I tried Wolfenstein 3D. I'm assuming the core just doesn't support them right now?
Of course it rocks. It has Rayman! Everyone loves Rayman!
It's better than the Lynx at least!
yeah saves arent written to SD yet
But I wanna be mad! 🤣
OK, "_faster2" just booted aliens 🙂
Honestly. Greg and Kit dropping this on us by surprise was one of the coolest things this year.
Nice!
I agree, I have always wanted to try out Jaguar!!!!!
It’s such a wonderfully bad system. It’s amazing to me that they charged money for some of these games.
Every system has shovelware, but the Jaguar went all out on that
Careful with that term, or you might immediately be discounted as having an original thought or suggestion 
the internet will argue anything to the death
God bless us, everyone
I don’t think this core is real, in the VGE videos you don’t see the mister running
and even then he could just be running a jaguar hidden behind the tv
Notice he never shows the core menu? Suspicious
I'm telling you. Until I see Bacon standing next to a running mister, with the input clearly labeled, holding a newspaper with todays date on it, I won't believe him
I'll never trust Big MiSTer
I really need a video of him hungover in his underwear reflecting in his TV while this is running jaguar games to convince me
You make a valid point, I concede. Thank you for this productive discussion.
"the console" is going to be doing a lot of heavy lifting in that sentence.
That’s your moms nickname for me
It’s all AI. I just asked ChatGPT to “make a game on a console named after a cat but don’t Bubsy it up too hard”
C H E M T R A I L S