Tested recording the first level for the 32X version of DOOM:
http://dehacked.2y.net/microstorage.php/info/136249641/32X-DOOM-LEVEL1-TEST.gmv
Initial RAM watch and some Lua was created in the process:
2
33
00000 06019ECD b u 0 Player HP
00001 06019E74 w u 0 x
00002 06019E78 w u 0 y
00003 06019E9C w u 0 z
00004 06019E76 b u 0 x-sub
00005 06019E7A b u 0 y-sub
00006 06019EAD b s 0 xvel
00007 06019EB1 b s 0 yvel
00008 060075E9 b s 0 Self-speed
00009 0600765B b u 0 chaingun
0000A 0600765F b u 0 rocket launcher
0000B 06007663 b u 0 plasma gun
0000C 06007667 b u 0 BFG
0000D 0600766E w u 0 bullets
0000E 06007672 w u 0 shells
0000F 0600767A w u 0 rockets
00010 06007676 w u 0 cells
00011 0600760B b u 0 Armor%
00012 06007607 b u 0 Health%
00013 00FFFF94 b u 0 input interval
00014 06019FFD b u 0 Monster HP
00015 0601A12D b u 0 Monster HP
00016 0601B135 b u 0 Monster HP
00017 0601BD15 b u 0 Monster HP
00018 0601BF75 b u 0 Monster HP
00019 0601C00D b u 0 Monster HP
0001A 0601B12F b u 0 Monster animation
0001B 0600761F b u 0 Map
0001C 06007612 w u 0 Invulnerability timer
0001D 06007617 b u 0 Berserk
0001E 06007623 b u 0 blue key
0001F 06007627 b u 0 yellow key
00020 0600762B b u 0 red key
(WCH file also here:
http://www.freewebs.com/aqfaq/32X-DOOM-RAM-WATCH.wch)
-- Lua script "starter kit" for Sega 32X Doom.
gui.register(function ()
xpos = memory.readword(0x06019e74)
ypos = memory.readword(0x06019e78)
xvel = memory.readbytesigned(0x06019ead)
yvel = memory.readbytesigned(0x06019eb1)
--X-velocity
xvelocity = string.format("%d", xvel)
gui.text(160, 60, xvelocity, "yellow", "black")
--Y-velocity
yvelocity = string.format("%d", yvel)
gui.text(178, 60, yvelocity, "red", "black")
--Total-velocity
totvel = string.format("%d", math.abs(xvel)+math.abs(yvel))
gui.text(196, 60, totvel, "white", "black")
--X-position
xposition = string.format("%d", xpos)
gui.text(160, 80, xposition, "green", "black")
--Y-position
yposition = string.format("%d", ypos)
gui.text(160, 90, yposition, "blue", "black")
end)
--------------------------
-- Autoskip idle frames --
--------------------------
gens.registerafter( function()
local idle = memory.readbyte(0xffff94)
if idle ~= 255 then
gens.emulateframe()
end
end)
(Lua also here:
http://www.freewebs.com/aqfaq/32X-DOOM-LUA.lua)
Is this redundant?
Or is this great?
I don't know, but TASing this game feels nice.
(If you don't hear all the sound effects, enable PWM from the Gens sound options. It seems to go off each time I reset Gens.)