farmerbb / RED-Project

ROM Extraction Documentation Project
179 stars 8 forks source link

Intellivision Lives PS2 #161

Open kjetil-f opened 1 week ago

kjetil-f commented 1 week ago

I found this scrip on how to extract ROMs from the PS2 version of Intellivision Lives.

This is probably quite trivial, but does anyone know how to actually utilize this script?

hadess commented 1 week ago

On Linux, it's pretty straight forward.

Compile the binary:

$ gcc -Wall -o intellivisionlives_extractor src/intellivisionlives_extractor.c

Mount the disc rip ISO so the files on it can be accessed: image

Run the compiled binary on the gameroms.rez file:

$ ./intellivisionlives_extractor /run/media/INTELLIVISION/resource/gameroms.rez
hadess commented 1 week ago

It extracts the following ROMs that are detected as matching the no-intro ROMs:

Found "ABPA Backgammon ~ Backgammon (World)" in "./Backgammon.itv"
Found "Astrosmash (USA, Europe)" in "./Astrosmash.itv"
Found "Auto Racing (World)" in "./Auto Racing.itv"
Found "B-17 Bomber (USA, Europe)" in "./B-17 Bomber.itv"
Found "BattleTanks (USA)" in "./BattleTanks.itv"
Found "Biplanes (USA)" in "./BiPlanes.itv"
Found "Body Slam! - Super Pro Wrestling (USA)" in "./Body Slam Wrestling.itv"
Found "Bomb Squad (USA)" in "./Bomb Squad.itv"
Found "Boxing (World)" in "./Boxing.itv"
Found "Brickout! (USA) (Proto)" in "./Brickout.itv"
Found "Buzz Bombers (USA, Europe) (Alt 1)" in "./Buzz Bombers.itv"
Found "Checkers ~ Draughts (USA, Europe)" in "./Checkers.itv"
Found "Chip Shot - Super Pro Golf (USA)" in "./Chip Shot Golf.itv"
Found "Deep Pockets - Super Pro Pool & Billiards (USA) (Proto)" in "./Deep Pocket Billiards.itv"
Found "Demonstration Cartridge - Blue (USA)" in "./Demo Cartridge.itv"
Found "Frog Bog (World)" in "./Frog Bog.itv"
Found "Horse Racing (World)" in "./Horse Racing.itv"
Found "Hover Force (USA)" in "./Hover Force.itv"
Found "Hypnotic Lights (USA) (Proto)" in "./Hypnotic Lights.itv"
Found "King of the Mountain (USA) (Proto)" in "./King of the Mountain.itv"
Found "Land Battle (USA) (Proto)" in "./Land Battle.itv"
Found "Las Vegas Poker & Blackjack (World)" in "./Poker.itv"
Found "Las Vegas Roulette (World)" in "./Roulette.itv"
Found "Magic Carousel (USA) (Proto) (Alt 1)" in "./Magic_Carousel.itv"
Found "Major League Baseball ~ Big League Baseball ~ Baseball (World)" in "./Baseball.itv"
Found "Motocross (USA)" in "./Motocross.itv"
Found "Mountain Madness - Super Pro Skiing (USA)" in "./Super Pro Skiing.itv"
Found "NASL Soccer ~ Soccer (World)" in "./Soccer.itv"
Found "NBA Basketball ~ Basketball (USA, Europe)" in "./Basketball.itv"
Found "NFL Football ~ Football (World)" in "./Football.itv"
Found "NHL Hockey ~ Hockey (World)" in "./Hockey.itv"
Found "Night Stalker (World)" in "./Night Stalker.itv"
Found "Number Jumble (USA) (Proto) (Alt 1)" in "./Number Jumble.itv"
Found "Party Line - Blow Out (USA) (Proto)" in "./Blow Out.itv"
Found "Party Line - Hard Hat (USA) (Proto)" in "./Hard Hat.itv"
Found "Party Line - Space Cadet (USA) (Proto) (Alt 1)" in "./Space Cadet.itv"
Found "PBA Bowling ~ Bowling (World)" in "./Bowling.itv"
Found "PGA Golf ~ Golf (World)" in "./Golf.itv"
Found "Pinball (USA)" in "./Pinball.itv"
Found "Racing Cars (USA)" in "./RacingCars.itv"
Found "Reversi (USA, Europe)" in "./Reversi.itv"
Found "Royal Dealer (USA, Europe)" in "./Royal Dealer.itv"
Found "Sea Battle (World)" in "./Sea Battle.itv"
Found "Shark! Shark! (USA, Europe)" in "./Shark! Shark!.itv"
Found "Sharp Shot (USA, Europe)" in "./Sharp Shot.itv"
Found "Slam Dunk - Super Pro Basketball (USA)" in "./Slam Dunk Basketball.itv"
Found "Slap Shot - Super Pro Hockey (USA)" in "./Slap Shot Hockey.itv"
Found "SNAFU (World)" in "./Snafu.itv"
Found "Space Armada (World)" in "./Space Armada.itv"
Found "Space Battle (World)" in "./Space Battle.itv"
Found "Space Hawk (USA, Europe)" in "./Space Hawk.itv"
Found "Space Spartans (USA, Europe)" in "./Space Spartans.itv"
Found "Spiker - Super Pro Volleyball (USA)" in "./Spiker Volleyball.itv"
Found "Stadium Mud Buggies (USA)" in "./Stadium Mud Buggies.itv"
Found "Star Strike (World)" in "./Star Strike.itv"
Found "Sub Hunt (USA, Europe)" in "./Sub Hunt.itv"
Found "Super Pro Decathlon (USA)" in "./Decathlon.itv"
Found "Super Pro Football (USA)" in "./Super Pro Football.itv"
Found "Takeover (USA) (Proto)" in "./Takeover.itv"
Found "Tennis (World)" in "./Tennis.itv"
Found "Thin Ice (USA)" in "./DunVoo.itv"
Found "Thunder Castle (USA)" in "./Thunder Castle.itv"
Found "Tower of Doom (USA)" in "./Tower of Doom.itv"
Found "USCF Chess ~ Chess (USA, Europe)" in "./Chess.itv"
Found "US Ski Team Skiing ~ Skiing (World)" in "./Skiing.itv"
Found "Utopia (USA, Europe)" in "./Utopia.itv"
Found "Vectron (USA, Europe) (Alt 1)" in "./Vectron.itv"
Found "World Championship Baseball (USA)" in "./World Championship Baseball.itv"

Those are games split off from "Learning Fun II" or "Word Fun":

Crosswords.itv
MemoryFun.itv
WordHunt.itv
WordRockets.itv

The following ROMs were not recognised but seem to work:

Armor Battle.itv
FactorFun.itv
Math Fun.itv

I don't know what that file that gets extracted is for:

Magic_Carousel.cfg

I also found one of the ROMs for emulators in another file: https://gitlab.com/hkzlab/intellivisionlives_extractor/-/merge_requests/1

mjBrickman commented 1 week ago

The bios files exec.bin and grom.bin are located in the SLUS_208.30 file and are slightly different from their original versions as I believe they change all references of Mattel. Exec.bin is in a different endianness than usual and needs to be fixed. I figured this out many years ago before I got into programming and only know this much now from my notes.

mjBrickman commented 1 week ago

To find exec.bin search "04 00 12 01" in a hex editor in SLUS_208.30. This is where it starts. The length is 8192. The format of the file when fixed is "00 04 01 12 ..." with every two places being swapped.

mjBrickman commented 1 week ago

grom.bin starts at offset 461140 in the SLUS_208.30 file and ends at offset 463487. This one works the way it is.

DrAzathoth commented 1 week ago

To find exec.bin search "[04 00 12 01](tel:04 00 12 01)" in a hex editor in SLUS_208.30. This is where it starts. The length is 8192. The format of the file when fixed is "[00 04 01 12](tel:00 04 01 12) ..." with every two places being swapped.

Could that be in little endian format?

hadess commented 1 week ago

Could that be in little endian format?

16-bit byteswapped. I implemented it in https://gitlab.com/hkzlab/intellivisionlives_extractor/-/merge_requests/1

If somebody knows how to download an ISO (not a cue/bin) of the US version, let me know, I'd like to verify that my code works on that version, and implement automatic detection for the ROM extraction.

mjBrickman commented 1 week ago

I got grom.bin extracted from the US version by changing GROM_OFFSET to 0x70A80 in the code.

mjBrickman commented 1 week ago

I got exec.bin extracted from the US version by changing EXEC_OFFSET to 0x06EA80 in the code.

hadess commented 6 days ago

Thank you for those offsets.

I've updated the MR to support extracting the system ROMS and the games from the US version, without the need for a flag or option.

I only ran into differences with "Armor Battle" and "DunVoo". The changes in "Armor Battle" are small enough, but the ones in DunVoo are pretty big (the size is double that of the euro version).

I think that's as far as I will go with those changes. I just hope that they will eventually be merged.

kjetil-f commented 2 days ago

I really appreciate that my question sparked this discussion, and ended up with the updating of the entire script. It's been a while since I've played around in Linux, so I haven't had the chance to test this out in person just yet. But will do when time allows.