Mr Nutz: Hoppin' Mad was an Amiga spinoff of the 1993 SNES platformer Mr Nutz, that was originally called Timet: the Flying Squirrel until Ocean offered to publish it, where they wanted their own squirrel to be involved instead. The Amiga version also had an unreleased Genesis port.
Uncompiled Source Code#
Genesis Port Code#
The following fragment of unused source code appears on Disk 2. It appears to be code from the unreleased Genesis port, which would confirm that this port was already in development when the Amiga version was released. This particular code appears to be represented in the 2009 source code leak in the file Zoom.asm, which shows a different and likely later version, dated 29 December 1993. The filenames beginning Work: here show that the game was developed on an Amiga with a hard disk drive; in fact, the 2009 leak includes a configuration file for the HiSoft Devpac assembler for Amiga, configured for at least an 640x512 interlaced monitor. By 1993, even most commercial Amiga games were no longer developed on an Amiga, and it was common for Amiga and Genesis games to use a cross-compiler system for MS-DOS like SNASM.
Custom-Memory
; $FFF000 - $FFFD00 TFMX
; $FFFD00 - $FFFE00 Message-Struktur
; $FFFE00 - $FFFFFF Stack
;
; ===========================================================================
Include Source/Labels.asm
Include Source/Labels.Nutz.asm
Include Source/Definition.asm
Include Work:Projects/Megadrive/Karte/Source/Hardware.asm
Include Work:Projects/Megadrive/Karte/Source/Global.asm
; ===========================================================================
;Standart Startup-Code
Reset_Entry trap #0
move #$2700,sr
move.b $a10001,d0
andi.b #$0f,d0
beq.s .Skip
move.l #'SEGA',$a14000
.Skip lea Stack,a7
bsr Init_Interupts
move #$2300,sr
jsr Black_Screen
;Logo zoomen
bsr Init
lea IRQ_Vertikal,a0
move.l a0,SEGA_WRAM+8
lea IRQ_Horizontal,a0
move.l a0,SEGA_WRAM+2
bsr Main
lea IRQ_Vertikal_II,a0
move.l a0,SEGA_WRAM+8
lea Int_Nop,a0
move.l a0,SEGA_WRAM+2
;Original-Logo uoloaden
moveq #TILES_OBJEKT_LL,d0
jsr Setze_VRAM_Adresse
lea Logo_Original,a0
move #OBJEKT_BREITE*OBJEKT_HÖHE*8-1,d1
.Loop move.l (a0)+,(a6)
dbf d1,.Loop
;Playfield B löschen
move #$E000>>5,d0
jsr Setze_VRAM_Adresse
moveq #0,d0
move #$2000/WORD-1,d1
.Loop_Clear_B move d0,(a6)
dbf d1,.Loop_Clear_B
;Tiles für Logo auf Playfield B erzeugen
move #Reg_AutoIncData!(64*WORD),4(a6)
lea $E000+6*WORD,a0
moveq #TILES_OBJEKT_LL,d1
moveq #OBJEKT_BREITE-1,d3
.Loop_Spalte move.l a0,d0
lsl.l #2,d0
lsr #2,d0
or #%0100000000000000,d0
swap d0
move.l d0,4(a6)
moveq #OBJEKT_HÖHE-1,d2
.Loop_Zeile move d1,(a6)
addq #1,d1
dbf d2,.Loop_Zeile
addq #WORD,a0
dbf d3,.Loop_Spalte
move #Reg_AutoIncData!(1*WORD),4(a6)
;Playfield A löschen
moveq #0,d0
move #$C000>>5,d0
jsr Setze_VRAM_Adresse
moveq #0,d0
move #$2000/WORD-1,d1
.Loop_Clear_A move d0,(a6)
dbf d1,.Loop_Clear_A
;VSRAM setzen
move.l #SRAMWH<<16!SRAMWL,4(a6)
move #-224,d0
move d0,(a6)
moveq #-48,d0
move d0,(a6)
;Work-RAM dekodieren
lea Data.Nutz,a0
lea SEGA_WRAM+12,a1
bsr Decode
;Nutz&Faust uploaden
moveq #0,d0
move #TILES2_NUTZ,d0
jsr Setze_VRAM_Adresse
lea Nutz.T,a0
move #484*8-1,d0
.Loop_Upload_Nutz move.l (a0)+,(a6)
dbf d0,.Loop_Upload_Nutz
moveq #0,d0
move #TILES2_FAUST,d0
jsr Setze_VRAM_Adresse
lea Faust.T,a0
move #400*8-1,d0
.Loop_Upload_Faust move.l (a0)+,(a6)
dbf d0,.Loop_Upload_Faust
;Playfield A (Nutz) erzeugen
move #$C000>>5,d0
jsr Setze_VRAM_Adresse
lea Nutz.M,a0
moveq #36-1,d3
.Loop_Nutz3 moveq #TILES_EMPTY,d2
moveq #32-1,d0
.Loop_Nutz1 move (a0)+,d1
add #TILES2_NUTZ,d1
move d1,(a6)
dbf d0,.Loop_Nutz1
moveq #32-1,d0
.Loop_Nutz2
Amiga Build Script#
A leftover script fragment appears several times on Disk 2. This script appears to compile Disk 1 of the Amiga version to the third floppy disk drive. Many commercial Amiga games used non-standard floppy disk formats as an anti-piracy measure.
Ask "Make Disk #1?"
If Warn
;Work:Files/Global/Ocean
Copy Work:Files/Global/Ocean.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 2 0
;Work:Files/Global/Neon
Copy Work:Files/Global/Neon.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 3 0
;Work:Files/Music/Music.Titel
Copy Work:Files/Music/Music.Titel.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 4 1
;Work:Files/Global/Intro
Copy Work:Files/Global/Intro.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 13 1
;Work:Files/Global/Highscore
Copy Work:Files/Global/Highscore.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 19 0
;Work:Files/Global/Faust
Copy Work:Files/Global/Faust.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 19 1
;Work:Files/Outro/Outro
Copy Work:Files/Outro/Outro.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 20 1
;Work:Files/Global/Message
Copy Work:Files/Global/Message.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 25 1
;Work:Files/Global/Nutz.Font
Copy Work:Files/Global/Nutz.Font.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 29 1
;Work:Files/Music/Music.Water
Copy Work:Files/Music/Music.Water.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 32 0
;Work:Files/Karte/Karte.Memory
Copy Work:Files/Karte/Karte.Memory.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 37 0
;Work:Files/Karte/Karte.Main
Copy Work:Files/Karte/Karte.Main.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 42 0
;Work:Files/Karte/Karte.Englisch
Copy Work:Files/Karte/Karte.Englisch.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 45 0
;Work:Files/Karte/Karte.French
Copy Work:Files/Karte/Karte.French.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 47 0
;Work:Files/Music/Music.Natur
Copy Work:Files/Music/Music.Natur.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 49 0
;Work:Files/Karte/Karte.Natur
Copy Work:Files/Karte/Karte.Natur.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 54 0
;Work:Files/Natur/Natur.Main
Copy Work:Files/Natur/Natur.Main.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 56 0
;Work:Files/Natur/Natur.Parallax
Copy Work:Files/Natur/Natur.Parallax.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 63 1
;Work:Files/Natur/Natur.Level.1
Copy Work:Files/Natur/Natur.Level.1.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 64 1
;Work:Files/Natur/Natur.Level.2
Copy Work:Files/Natur/Natur.Level.2.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 65 1
;Work:Files/Natur/Natur.Level.3
Copy Work:Files/Natur/Natur.Level.3.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 67 0
;Work:Files/Natur/Natur.Level.4
Copy Work:Files/Natur/Natur.Level.4.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 68 0
;Work:Files/Natur/Natur.Level.5
Copy Work:Files/Natur/Natur.Level.5.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 69 0
;Work:Files/Natur/Natur.Level.6
Copy Work:Files/Natur/Natur.Level.6.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 70 1
;Work:Files/Natur/Natur.Level.7
Copy Work:Files/Natur/Natur.Level.7.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 71 0
;Work:Files/Natur/Natur.Level.8
Copy Work:Files/Natur/Natur.Level.8.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 71 1
;Work:Files/Natur/Natur.Level.9
Copy Work:Files/Natur/Natur.Level.9.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 72 0
;Work:Files/Natur/Natur.Startup.1
Copy Work:Files/Natur/Natur.Startup.1.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 72 1
;Work:Files/Natur/Natur.Startup.2
Copy Work:Files/Natur/Natur.Startup.2.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 73 0
;Work:Files/Natur/Natur.Startup.3
Copy Work:Files/Natur/Natur.Startup.3.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 73 1
;Work:Files/Natur/Natur.Startup.4
Copy Work:Files/Natur/Natur.Startup.4.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 74 0
;Work:Files/Natur/Natur.Startup.5
Copy Work:Files/Natur/Natur.Startup.5.pck RAM:Temp
Write DF2: RAM:Temp $4489 $2AA9 74 1
;Work:Files/Natur/Natur.Startup.6
Copy Work:Files/Natur/Natur.Startup.6.pck RAM:Temp
Write D
|
The Mr. Nutz series | |
|---|---|
|
Genesis |
|
|
SNES |
|
|
Game Boy |
|
|
Game Boy Color |
|
|
Game Boy Advance |
|
|
Amiga |
|