If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Mr. Nutz: Hoppin' Mad (Amiga)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Mr. Nutz: Hoppin' Mad

Developer: NEON Software
Publisher: Ocean
Platform: Amiga
Released in EU: 1994


SourceIcon.png This game has uncompiled source code.


Mr Nutz: Hoppin' Mad was an Amiga spinoff of the 1993 SNES platformer Mr Nutz. 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