View Single Post
  #12  
Old 30th March 2012, 03:34 PM
spoondiddly's Avatar
spoondiddly spoondiddly is offline
Jinjo
 
Join Date: Jun 2004
Here's confirmation that DK64 isn't running Jetpac under emulation.

Grabbed a copy of ram via GameShark from the North American DK64 retail release. That's NDOE internally. Jetpac was run from the Bonus menu, and the ram dump was taken in-game.
Firstly, there isn't Spectrum code or any semblance of a Speccy ROM. Even string conventions are wrong. In the Speccy:
Code:
JETPAC GAME SELECTIOÎ1   1 PLAYER GAMÅ2   2 PLAYER GAMÅ3   KEYBOARÄ4   KEMPSTON JOYSTICË5   START GAMÅ
Note the 0x80 END marker on each string. This is the comparable block within DK at 8002E9D0:
Code:
1UP.%d!.2UP.HI..%06d....%06d....%06d....JETPAC GAME SELECTION...1@@@1@PLAYER@GAME...2@@@2@PLAYER@GAME...3@@@KEYBOARD....4@@@KEMPSTON@JOYSTICK...5   START GAME..%c1983 A.C.G. ALL RIGHTS RESERVED...RETURN..DELETE@HISCORE..EXIT@@JETPAC....RAREWARE COIN COLLECTED.GAME OVER PLAYER %d
The @ symbols really are @ symbols, by the way. This is used exclusively in ASM for normal string display.

NDOE @ 80024478:
Code:
//80024478:
3C058003	LUI	A1,8003
AFA20010	SW	V0,0010 (SP)
00601025	OR	V0,V1,R0
24A5E9D0	ADDIU	A1,A1,E9D0	;A1=8002E9D0: b"1UP"
02C02025	OR	A0,S6,R0
24060038	ADDIU	A2,R0,0038
24070018	ADDIU	A3,R0,0018
AFA30050	SW	V1,0050 (SP)
0C00ABBF	JAL	80002AEF	;print string A1 at (A2,A3) in DL A0
AFA3004C	SW	V1,004C (SP)
//800244A0:
3C118003	LUI	S1,8003
3C138003	LUI	S3,8003
2631EC4C	ADDIU	S1,S1,EC4C	;S1=8002EC4C: scores, high, 2pl, 1pl or something like that
2673E9D4	ADDIU	S3,S3,E9D4	;S3=8002E9D4: b"%d!"
00008025	OR	S0,R0,R0
27B50060	ADDIU	S5,SP,0060
24140002	ADDIU	S4,R0,0002
8E260008	LW	A2,S1,0008	;A2=1UP score
02A02025	OR	A0,S5,R0
02602825	OR	A1,S3,R0
etc.
Point here being that the scores and menus are all printed via N64 ASM and not under Spectrum emulation. For that matter, at no point will the input read routine from Jetpac be found.
In the Spectrum version you'd have this:
Code:
@6204
3A.F35C	LD A,(0x5CF3)
57	LD D,A
3E.F7	LD A,0xF7
D3.FD	OUT 0xFD,A
DB.FE	IN A,(0xFE)
2F	CPL
CB47	BIT 0,A
28.02	JR Z,+2
CB82	RES 0,D
Simple. Reads input and tests masks for pressed number keys, changing entries accordingly. At no point is this present in a DK64 snapshot.

No emulation. They recompiled it as N64 code, for good reason. No reason for a whole emulator when you only need to run one game.
Reply With Quote