• Welcome to Videopac / Odyssey2 forum.

News:

NEW GAME: Jack and the Beanstalk ! Check this topic!

Main Menu

The Odyssey2 Revival Project

Started by Luposian, November 21, 2024, 08:40:18 AM

Previous topic - Next topic

Luposian

I recently realized that of all the main systems of the early era of gaming recreated, or at least attempted... the Magnavox Odyssey2 has fallen into almost complete obscurity over the decades.  I'd like to rectify that.

I'm interested, not in emulating this system, which has already been done (O2EM).  I want to clone it, in hardware.  Basically breathing new life into the original systems, with a replacement mainboard using currently available parts.  The bonus side potentially being better games and graphics.  The Odyssey2 never got to achieve it's true potential, to be all that it could have been.

However, I'm looking for people to assist in this endeavor, if interested.  I've created a Facebook group for this cause:

https://www.facebook.com/groups/9062321853786702

Hopefully, one of those interested individuals.... is YOU!

ANDYRYALS

Good Luck, it's probably just as cheap to buy a cheap system rather than new hardware.
I have 12"

Luposian

I am trying to disassemble/reassemble the Odyssey2 BIOS (O2ROM.BIN).  I used dis48 (part of O2EM) and there seems to be only two options when using it... the filename or the filename with -bios appended to it.  Both produce the exact same code, except the "line numbers" on the left are different.  I'm assuming I need to use it with the -bios option, correct?

Then comes reassembly... I'm using asw.  Well, more accurately, I'm running a batch file that runs asw and then p2bin.  Works great for programs, but for the BIOS, nothing I'm doing seems to work.  O2EM keeps telling me "/bios not BIOS!".  Whatever I'm assembling is not resulting in a recognizable BIOS file.

What am I doing wrong?  Can anyone tell me how to do this successfully?

TedFoolery

I haven't used either of these tools in sometime, so not sure of specifics. The disassembly already exists here, though: https://atarihq.com/danb/files/o2romsrc.txt

I would get a hex editor and compare your compiled code with a working version and see where the differences are.
As for compiling, I think asw is the complier that inserts some instructions (like sel mb0, sel mb1) for you, whether you want it to or not. These get inserted when either jumping or returning across the 1k barrier I believe, so not sure if that applies here.
The compiled code may function properly, but it might be a few bytes bigger than expected and causing an error.
Also, for the bios, make sure you are compiling to the $000 - $399 address range.

Luposian

Quote from: TedFoolery on January 16, 2025, 05:18:18 PMI haven't used either of these tools in sometime, so not sure of specifics. The disassembly already exists here, though: https://atarihq.com/danb/files/o2romsrc.txt

I would get a hex editor and compare your compiled code with a working version and see where the differences are.
As for compiling, I think asw is the complier that inserts some instructions (like sel mb0, sel mb1) for you, whether you want it to or not. These get inserted when either jumping or returning across the 1k barrier I believe, so not sure if that applies here.
The compiled code may function properly, but it might be a few bytes bigger than expected and causing an error.
Also, for the bios, make sure you are compiling to the $000 - $399 address range.

The batch file looks like this (using the code listing at danb's website):

asw.exe o2romsrc.a48
p2bin.exe  o2romsrc.p  o2romsrc.bin -r 1024-3071
pause


I'm pretty sure that range is going to cause a problem, because when I tried it, the .bin file came out to over 1K.  I've also tried it with the range being identical (-r 1024-1024) and the .bin file still won't run in O2EM.

I know something isn't being done right... just trying to figure out what it is and hoping someone can tell/show me.

At this point, I'd almost be willing to pay someone to help me get this figured out, if that would be any type of encouragement.  :)

manopac

may I ask WHY you want to compile your own BIOS? :D
sex, lies, and videopac

bataais

I use asm48 on osx, no problem with dis- and assembling the o2rom.bin..

https://github.com/daveho/asm48

it's a little different than asw, but I like it waaay more.

on mac, I disassembled with: ./8039dasm o2rom.bin 0 1024 > o2rom.a48
then added in the file:

.org 0
and at the end:
.end

assembling: ./asm48 -o o2rom_2.bin o2rom.a48

compared with hex editor, contents are the same

Luposian

Quote from: bataais on January 18, 2025, 03:26:31 PMI use asm48 on osx, no problem with dis- and assembling the o2rom.bin..

https://github.com/daveho/asm48

it's a little different than asw, but I like it waaay more.

on mac, I disassembled with: ./8039dasm o2rom.bin 0 1024 > o2rom.a48
then added in the file:

.org 0
and at the end:
.end

assembling: ./asm48 -o o2rom_2.bin o2rom.a48

compared with hex editor, contents are the same

Will the Mac version work with M1 (or greater) Macs?  I don't have an Intel Mac and there is no 32-bit Intel Mac emulation in Rosetta 2.

That being said, where do you add ".org 0"?  At the very top (above line 0000)?  I assume you add ".end at the very end of the file.

Maybe, if you showed a cut/paste of the first few and last few lines of the disassembled source code (with the changes), that would help explain it.  :)

Luposian

Quote from: manopac on January 18, 2025, 01:16:19 PMmay I ask WHY you want to compile your own BIOS? :D
Because, the original BIOS won't work with what I'm attempting.  Literally not at all (except for the processor, which will be compatible).  But, I need a framework to modify, to the hardware I plan to use.  And, I believe, the significant differences in code/hardware will avoid any legal issues, should Philips get wind of this project.

bataais

there is also a win version in that asm48 release package.. or compile it yourself for M1, source is included.

  .org 0x000

jmp  $0400
nop
jmp  $0402
nop
nop
jmp  $0404
sel  rb0
...

  .end
I took the disassembly generated with the included 8039dasm.

(You will have to edit your g7000.h file for your games code,
asm48 directives and hex / bin numbers are different compared to asw.)
Try and Error is your friend.

good luck with your project

Luposian

I've discovered that the disassembler works fine on my M1 Mac Mini.  I also downloaded O2EM for the Mac and it runs fine, too... except when I tried giving it the o2rom.bin file, when it asked for a ROM, I got a screen with four 0's in the upper left corner.  When I ran a regular game .bin file, it ran fine!  But... how can it operate without a BIOS?!?  I couldn't find anything hidden in the package, so I have no idea how it's doing this.

Luposian

I tried the BIOS with the changes suggested and the build worked fine in the Windows version of O2EM.  Then I tried the build WITHOUT the changes suggested and it ALSO worked fine!  The Mac version of the disassembler/assembler are simply better than the Windows version, but the two changes aren't apparently necessary.

Now I need to figure out how to change O2EM so that it doesn't give you an error message when you give it a game .bin file that isn't in the ROM folder, but the BIOS tells you the error message instead.  Essentially, when you give O2EM a filename that isn't in the ROM folder, it's the same as no cartridge being inserted in the Odyssey2 console, correct?

manopac

no, if you give O2EM a filename thats not in the ROM folder, it will tell you that the file is not found ;-) but if you change O2EM to be able to run without a ROM being given, it will do that ... minus the "garbage" that will be in read from the cartridge port, which could or could not be the same of what O2EM has in memory then ...
sex, lies, and videopac