Aleck64 on Retail Consoles PoC

Discussion in 'Nintendo Game Development' started by Zoinkity, Dec 26, 2014.

  1. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    Now that all the released titles are complete, here's direct links to all of them.

    Eleven Beat
    http://www.mediafire.com/download/dvds8q5dvduymte/11beat.zip

    Hanabi de Doon! Don-chan Puzzle
    http://www.mediafire.com/download/uax64uc3m12x5nm/doncdoon.zip

    Hi Pai Paradise
    http://www.mediafire.com/download/4np68pf9lo69vgd/HiPai.zip

    Kurukuru Fever
    http://www.mediafire.com/download/zq9bqbxib62mtb6/Kurukuru_Fever.zip

    Magical Tetris Challenge
    http://www.mediafire.com/download/9t162n8zsb99ayq/Magical_Tetris_Challenge.zip

    Mayjinsen 3
    http://www.mediafire.com/download/9kt5qb894fjo49q/majinsen3.zip

    Star Soldier: Vanishing Earth
    http://www.mediafire.com/download/oqeha22aooco5s6/starsldr.zip

    Super Real Mahjong VS
    http://www.mediafire.com/download/pgferlf0yyj6zc8/Super_Real_Mahjong_VS.zip

    Tower & Shaft
    http://www.mediafire.com/download/ij6clnhozbjx0sq/Tower.zip

    Vivid Dolls
    http://www.mediafire.com/download/s7c8kimf58mrstt/Vivid.zip

    The readmes outline controls and the DIP switch settings for each and where they're located in the bootstrap.

    [original post]
    The Aleck64 was an arcade N64, sort of like the VS System. This is a proof-of-concept patch to enable Vivid Dolls to run on a retail console N64.
    Be sure to read the readme, as it explains how the unique CIC works. I did not alter the bootstrap; it can then be run using a bootloader and the values given in the readme and writeup. You can obviously alter the bootstrap to use another, more common one.
    invalid url, use one above

    Vivid Dolls isn't exactly my cup of tea. It's one of those truck-stop nudie titles. You reveal parts of a picture by drawing boxes while aliens try to blast you. One of them is a somewhat phallic-looking Moldorm that shoots white, sticky blobs at you. Real winner here.
    It's only redeeming point it's a single-chip ROM and took all of half-an-hour to patch it runnable. Most other titles use multiple chips, with more than one bootable image.

    Aleck titles use a unique CIC. The algorithm is the same as Diddy. The seed byte is 0xAC.
    Depending on the boot address is how much data gets read in. If the address is 80100400 (actually 80000400) it reads in 0x3FE000 from 0x1000. Any other address reads the typical 0x100000.
    LaC's bootloader can force the seed value, allowing you to boot the game off a flashcart.

    -Zoinkity
     
    Last edited: Jan 10, 2016
    Chagosan likes this.
  2. APE

    APE Site Supporter 2015

    Joined:
    Dec 5, 2005
    Messages:
    6,417
    Likes Received:
    141
    I love those shitty Qix clones.
     
  3. marshallh

    marshallh N64 Coder

    Joined:
    Mar 16, 2006
    Messages:
    663
    Likes Received:
    30
    It seems to run with a 6102 header just fine even though only the first 1meg is DMAd instead of 4 megs. I couldn't get the patched rom to boot otherwise (even with bootemu seed).
     
  4. LeHaM

    LeHaM Site Soldier

    Joined:
    May 5, 2013
    Messages:
    2,636
    Likes Received:
    295
    Wow I never knew there was N64 based arcade HW!?
    Any good titles, anyone ever got retail n64 games to run on it?
     
  5. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    According to the MAME project the CIC is NUS-CIC-5101.

    http://www.mediafire.com/download/ij6clnhozbjx0sq/Tower.zip

    Tower & Shaft only uses the jammastick. (Pretty sure that's what it is) It reads in all connected controllers but ignores their input.
    So, here's a patched version that dual-maps controller input. Be sure to set 4K eeprom and you'll (possibly) need an 8MB pak unless you want to remap some addresses. Controls are:

    • movement +pad
    • button 1 B button
    • button 2 A button
    • P1 start start
    • test mode L button
    • service mode R button
    • coin 1 slot c-down
    • coin 2 slot c-up


    Don't hold the coin buttons down for more than half a second or the thing will probably return a coin error. Honestly, just turn on free play from the service menu. Eeprom saves the setting.
    Also, they only used digital movement. I'm not mapping analog just to make it digital. That's a lot of work for absolutely no benefit.

    It's using the Aleck bootstrap with a single opcode alteration so it passes the correct seed value through. Also, the DIP settings are written to 0xC00, an unused portion of the bootstrap, so you can edit them easily without having to recalc the checksum.
    Surprisingly this one works properly emulated if you ignore the writes to ROM and give it a name.

    Regs in Tower & Shaft. Italicized ones are read but unused.
    0800000 DIP switches. &7 for coin options
    E0800002 jammastick
    • 0001 P1 up
    • 0002 P1 down
    • 0004 P1 left
    • 0008 P1 right
    • 0010 P1 button 1
    • 0020 P1 button 2
    E0800004
    • 0001 start P1
    • 0002 start P2
    • 0020 test
    • 0010 service
    • 0004 coin 1
    • 0008 coin 2

    ZSIJ is a bootloader used by the Aruze Corporation for all their titles. It isn't necessary for our purposes.


    !An Important Note About Eleven Beat!
    The "good" dump listed in MAME is not a good dump!
    80002264() is a file decompressor. It decrements the length of each write from the output size until it equals zero. The loop point is at 80002468.
    Problem is several files have bad data in them, and since equality is tested any bad run will cause the algo to run forever. The first example of this is right at the start of the attract demo.

    A simple fix to force booting would be to change 80002468 (0x3068) to:
    1D00FF9C BGTZ T0,800022DC
    The resultant file is still buggered to snot, but copying will stop at an overrun. Most files are little more than images, and outside of bad images looking corrupted there's no harm. However, other files (display lists, for example) will still cause a crash. First example of that is at the end of the attract demo.
    The only plus side here is you have time to add a coin, which would bump you to the title screen. There's a bad graphic here, but non-fatal.

    The same files throwing errors in-game throw errors in static decompression. I'd suggest a redump of the title.
     
    Chagosan likes this.
  6. Denymetanol

    Denymetanol Member

    Joined:
    Apr 26, 2011
    Messages:
    9
    Likes Received:
    0
    Impressive advance Zoinkity . Could these Aleck64 roms run in everdrive flashcart? or only in 64drive units???

    I can´t run it using ips patches provided in zip, maybe bad dump, or flashcart limits. Would be cool one step by step tutorial ;-)
     
  7. justice99

    justice99 Spirited Member

    Joined:
    Nov 18, 2011
    Messages:
    123
    Likes Received:
    24
    How can I get an unbyteswapped copy of this rom?

    I have tired to patch the MAME rom but it doesnt work, the file is wrong.
     
  8. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    ^ You can unbyteswap. It's 16bit byteswapping. Some hex editors (hexedit 4.0, free) can do it, there's tools made to do it, and you can use simple scripts like this in python:
    from array import array
    with open(filename, 'rb') as f:
    a = array("H", f.read())
    a.byteswap()
    with open(filename, 'wb') as f:
    f.write(a.tobytes())


    Triple whammy today. Here's conversion patches for Kuru Kuru Fever, Hanabi de Doon! Don-chan Puzzle, and the Aleck version of Star Soldier: Vanishing Earth.


    Kuru Kuru Fever, the sort of disturbingly-cute puzzle game only Japan can deliver.
    http://www.mediafire.com/download/zq9bqbxib62mtb6/Kurukuru_Fever.zip


    Hanabi de Doon! Don-chan Puzzle, same engine as KuruFev. A roulette matching game where you have to clear out bombs.
    http://www.mediafire.com/download/uax64uc3m12x5nm/doncdoon.zip


    Star Soldier: Vanishing Earth, which is probably fairly close to the N64 version. Typical SHMUPS with secret branches.
    http://www.mediafire.com/download/oqeha22aooco5s6/starsldr.zip


    All require 8MB expansion paks. KuruFev and DoncDoon also requires a 4K eeprom if you want to save settings and scores.
    Read the readmes for info on controls and DIP switch settings.


    Controls on those mahjong games are going to be difficult to say the least.


    Annoyingly, hacked the controls into Mickey in about 5 minutes. It's vastly easier than the others, since they mapped the joystick over the controller registers. Also implemented the S2D save. For whatever reason there's either some kind of anti-piracy or DL priority issue that prevents pieces from being drawn in the play area. Working on it ;*)
     
  9. justice99

    justice99 Spirited Member

    Joined:
    Nov 18, 2011
    Messages:
    123
    Likes Received:
    24
    Thank you very much for these patches.

    Someone could patch all these games and share roms?

    Thanks in advance.
     
  10. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    [edit]
    False alarm? Let me know if anyone experiences a coin error on boot.

    http://www.mediafire.com/download/s7c8kimf58mrstt/Vivid.zip

    Amended the Vivid patch so now it's more standardized and uses button controls for the hardware switches.
    The big improvement in Vivid is it now accepts both stick and +pad for movement.

    The special controls are:
    L test
    Z service
    c-up coin slot 2
    c-down coin slot 1
    They don't reset state so try to press them quickish. You can get a coin error though holding down the button.

    Added a DIP switch setting to force the jammastick. Otherwise, changed their mask+equality test into a mask to seemlessly switch between +pad and stick based on input. DIP settings are at 0xC00 in ROM and changes do not require recalculating the checksum.

    Another piece of trivia: the way the +pad is disabled indicates the type of directional input used. It can be disabled two ways:
    0C00 up+down
    0300 left+right
    That said, most titles simply check if all directions are set high (0F00). When they are the stick or joypad is used instead.
    Here, they distinguish between the 3D stick (0300) and jammastick (0C00).

    For those interested it will (normally) fail the SDRAM test. SDRAM is a 4MB save file at C0000000. It has no relation to rdram or eeprom at all. It isn't used in this title, but you should probably know this.
    It's been implemented here as a part of cart ROM--0x400000 through 0x800000--for no reason other than I thought it was funny. If your cart ROM space is R/W capable (i.e.: via 64drive or v64jr.) the test will pass. There is no advantage to this other than bragging rights (lame ones at that). why anyone woudl need that kind of data is questionable, unless it was alternate ROM space or for dumping rdram.
    The TLB mapping 01000000 in Aleck titles is always going to point at it, even though it usually isn't present ;*)

    I may have to make some changes to the other patches in turn.
     
    Last edited: Jan 6, 2015
  11. fathertime

    fathertime Rapidly Rising Member

    Joined:
    Jul 14, 2011
    Messages:
    82
    Likes Received:
    0
    going to try this out this morning. super job Zoinkity
     
  12. SubDrag

    SubDrag Rapidly Rising Member

    Joined:
    Mar 13, 2011
    Messages:
    92
    Likes Received:
    15

    Running these Aleck64 ROMs is quite great ;) Also, this runs on my Everdrive 64 1.0 OS 1.28, it might be a bug in later versions, too much CRC checking or auto-correction.
     
    Last edited: Jan 11, 2015
  13. cheaterdragon1

    cheaterdragon1 Rising Member

    Joined:
    Jun 30, 2012
    Messages:
    51
    Likes Received:
    4
    I tried patching Tower and Shaft several times and wasn't sure what I was doing wrong. Then I tried it in the old ED64 OS 1.28 and the game worked perfectly. Booting it in the latest OS 2.08 just gives the error "Corrupted ROM - BAD CRC". I don't suppose anything can be done about this? Most Everdrive users use the latest version.
     
  14. justice99

    justice99 Spirited Member

    Joined:
    Nov 18, 2011
    Messages:
    123
    Likes Received:
    24
    Can you share patched games guys?
    Thanks.
     
  15. rso

    rso °

    Joined:
    Mar 26, 2010
    Messages:
    2,207
    Likes Received:
    472
    Just go to any MAME rom site and grab the games from there. There's detailed instructions on what to do then inside every patch zip file - it's not hard at all.

    Re: your earlier requests - get ucon64 to byteswap, and also to apply ips patches.
     
  16. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    Don't have an Everdrive, but from that error it's trying to recalc the checksum which, well, it can't.

    http://www.mediafire.com/download/dvds8q5dvduymte/11beat.zip
    Here's Eleven Beat. Same as usual: 8MB, NTSC. It's really a 4MB game but having someplace for that hardware is nice.
    MAME just recognised a new "good" ROM dump, so verify yours against theirs. Patches are for unbyteswapped files, so unswap them if they are.

    I've received a couple questions about the hacked bootstraps and why a bootloader is necessary. Aleck titles use a different CIC chip--the 5101--and naturally have a unique bootloader. Now when normally booting the CIC, PIF, and bootstrap all work in parallel. The CIC generates a seed byte used for checksum algorithms. The PIF uses this seed to generate a sort of checksum for the bootstrap, and if bad locks the CIC chip. Otherwise, it passes the seed to the bootstrap that then does the cartridge checksum with it.
    A bootloader avoids steps one and two entirely. It loads itself normally, then restarts the boot sequence part way when loading the second ROM. It simply passes settings of your desire to a partial version of the PIF code and the bootstrap.
    Aleck titles aren't currently supported by the normal bootloaders, so a single opcode was added to the bootstrap to set the seed byte to the originally expected value. If run through the whole boot sequence it would fail the bootstrap check, but the alternative would be to completely swap bootstraps entirely. That isn't hard, but since bootloaders also happen to avoid checksums that makes the bootstrap a convenient place to stuff the initial hardware state. If the bootstrap is already getting hacked, might as well go all the way.

    So, the irony here is that completely accurate emulation of the console would fail on these, despite them working on hardware. Voodoo codework at its finest ;*)

    Haven't worked out the issue with Magical Tetris just yet. Just like MAME the play field is occluded. I don't think there's a difference in the RCPs, but haven't spotted any obvious software protection either. Time for some serious display list comparisons with the console version.
    Mayjinsen is...confusing? It's currently chasing its tail waiting for a function pointer it never receives. Internal structure is equally annoying. Problem is, it's the last title that doesn't involve special combinations to emulate a field of ~20 buttons before hardware switches. Otherwise, both mahjong games boot without issues on a retail N64.
     
  17. cheaterdragon1

    cheaterdragon1 Rising Member

    Joined:
    Jun 30, 2012
    Messages:
    51
    Likes Received:
    4
    Welcome back everyone. In the last while Krikzz added OS 2.09 which now makes these Everdrive 64 compatible.

    Just want to confirm with you Zoinkity, there isn't a good dump of the Eleven Beat ROM out there? Your instructions say to find nus-zhaj-0 but all I've been able to find is nus-zhaj. I've applied your patch to the latter and it seems to work just fine so far.
     
  18. Zoinkity

    Zoinkity Site Supporter 2015

    Joined:
    Feb 18, 2012
    Messages:
    504
    Likes Received:
    109
    There is a new good dump, very recently. (as a result of this actually)
    For the bps to apply it would have to be identical, and if it were the bad dump it would enter an infinite loop trying to decompress a broken file right at the beginning of the attract demo.

    So huzzah! You have the right one.

    There are still three ROMs with bad internal checksums:
    1) Magical Tetris
    2) Mayjinsen
    3) the funky bootloader thing ZISJ

    Magical Tetris still runs but certain images and audio have minor corruption. For example, on the right of the large "1" is a stray pixel. It follows a regular period and certain rules, so I think this patch should adapt the ROM currently recognised by MAME as the "good" one into what will match a good dump. Can't say for certain since there isnt' a good dump yet though ;*)
    [edit]
    A good dump was finally taken and surprisingly matches the patch above. o.0

    Should be able to fix the problem with the play field in Magical Tetris. It's drawing it to a spare buffer that normally hardware overlays to the screen. Writing the data works fine, but need to add in some code to manually draw these to the framebuffer or something. Busy with a different project at the moment though.
     
    Last edited: Feb 8, 2015
  19. Greg2600

    Greg2600 Resolute Member

    Joined:
    Jun 23, 2010
    Messages:
    937
    Likes Received:
    112
    Big thanks for getting these roms patched, have enjoyed playing the 6 available so far on an Everdrive64!
     
  20. cheaterdragon1

    cheaterdragon1 Rising Member

    Joined:
    Jun 30, 2012
    Messages:
    51
    Likes Received:
    4
    Thanks again Zoinkity for releasing these patches. I highly doubt I would've even known about these games otherwise. I've played all 6 titles for about or hour or so each now and with the exception of Vivid Dolls they're all pretty fun. Gotta say I like the puzzle games Kuru Kuru Fever and Donchan Puzzle the best.

    I just did a page the 6 games: http://micro-64.com/database/aleck64.shtml I'll update the page if you get those other games working.
     
    Chagosan likes this.

Share This Page