-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
---------------------------------- TwinBee (Bubble System) [Raki, Dumping Union]
- Loading branch information
Showing
2 changed files
with
20 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, uh, what? gradius.bin? Even if we don't have the correct ROM markings, can we at least try to name the relevant ROMs after the game they're part of?
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm just an entry level dev, so sometimes I make copy/paste errors :)
Anyway, if more devs were interested in adding dumps then I would have less to do and would probably do less of this heinous commits.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, I'll report your findings to the DU.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I understand it, the data was trojaned out of it by running code on the 68k(?) to read each page in sequence and scribble it out to some FRAMs which could then be dumped. That being the case, the data would naturally lack any kind of low-level auxiliary information since it's effectively data that's already been pre-processed by the bubble memory MCU.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The bubble mcu doesn't completely decode the data, I'm not certain it decodes the data at all. a bunch of the decoding is done by the bootloader program uploaded to the 68k. This dump seems like its a capture from after the 68k has already done the decoding pass of the data, so that decoding would have to be undone first. Given this strips off all the CRC data, getting a second dump from a different bubble cart would be ideal, as we have no proof that this dump wasn't modified, either when it was extracted from the bubble cart to the bubbless fpga cart, or by the bubbless itself somehow.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, you could have brought these concerns up on the DU list in the first place, but...
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Weird how it always seems to be everyone else who has the problem.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry. I don't know what's going on here but I'd like to give you some information.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know how the controller controls bubble memory and how raw data is transferred, but I will not say here since I think they are not important in this emulation. In short, every bits of actual raw bubble data is "inverted". The controller re-inverts raw bubble data, "cuts" several bits of head and tail of each bubble page data and masks bad minor loops. It transfers modified data by DMA, and CPU can manually reset(write 0 on 0x40004) pointer of internal bubble buffer.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In that case, Gradius is the 'wrong' one? How was it dumped? Possibly the metadata (page numbers, checksum?) is added during loading the raw data.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a place the datasheet could be found? I'd be interested in it (even if it it is in Japanese). Thanks!
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't say it's wrong. Because bubble memory can have a different organization depending on a user or a vendor, so dumpers can organize it in different way. It's not a device like an EPROM.
I remember that there's no checksum on Gradius dump. All pages have been 6 bit right shifted. "Overflowed" 6 bits makes an additional byte. Just like DDDD/DD??.(D is a overflowed bit, ? bit is not used) And I can definitely say that page numbers are the metadata. There' no page number on a real cartridge.
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.advantest.com/documents/11348/146752/pdf_mn_JTR45102_OPERATING_MANUAL.pdf
Look at appendix, page A-11. Can read Japanese but I am neither a native Japanese nor a English speaker. Here's my crude translation.
"There are 584 minor loops for a data storage, and one minor loop can store 2053 bits"
bdb6889
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In addition, if you want to be strict, the bubble system bootloader is not a correct dump. There's header data(or starting bit) that only the controller can recognize. The bubble controller continues to rotate the external magnetic field of the bubble memory until this data pattern is detected, which initializes the controller's internal bubble memory page register when the pattern is detected. However, this data is not required in this level of emulation.
(This is an usual power-up sequence for a major track-minor loop architecture bubble memory.)