James Bond 007: The Duel seems to be the only game about James Bond for Sega Genesis. Back in the childhood, with the help of piracy, each cartridge contained up to 16 games and I played each game when I was bored. I think I would not soon remembered it, if not a trip to the cinema on Skyfall in 2012.
After 2 years, I finally decided to TAS it though not everyone likes it somehow.
This game is a platformer where you should rescue women hostages, find the bomb and escape, shooting bad guys by the way. There are 4 levels and only 1 boss in the end of the game.
I've done the 1st level: User movie #18356009097307342
Input goes further, but it can be finished on the frame 5764-5765 so the time is 01:36.08.
Everything is OK? I didn't find any special tricks because it seems there is no any, but if you found, tell me, please! Anyway, a topic with no answers is better than none.
TASing is like making a film: only the best takes are shown in the final movie.
Check this out: http://www.youtube.com/watch?v=fh7X-zAh_tQ and further
btw I love this game, and I complete it on real genesis during 1997+ years when I had only genesis :)
I know TAS route without the help of it though it and also mission 3 and final mission shows that my route is the same. Also I'm ~3,5 secs ahead for now!
TASing is like making a film: only the best takes are shown in the final movie.
Who knows what you know except you? What if you didn't see this TAS and your resulting TAS would be slower? There would be laugh and rejection, because bad route/optimization/not used bug.
I just want to be sure that you seen existed work! Note, this TAS isn't in TASVideos database! So who knows, maybe you look into tasvideos submissions only.
This work seems to be done using Gens v2.12.
No, every TASer should look for all possible info before starting any game! You probably often hear this answer on the question: "So, google it!" (on russian: "Так загугли!").
It's good that it isn't in TASVideos database, because even me found an improve! Also I found another improve by despawning an enemy on the bridge (1:13-1:16 in the video) and not taking damage from the last one! Now the time is 01:35.17!
TASing is like making a film: only the best takes are shown in the final movie.
Noone is perfect. I just knew that this TAS already exists, but it took time for me to find it out, where I've seen it. So probably you didn't find it, so I post it.
Noone is perfect. I just knew that this TAS already exists, but it took time for me to find it out, where I've seen it. So probably you didn't find it, so I post it.
I found everything I could and that TAS too.
TASing is like making a film: only the best takes are shown in the final movie.
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
You're working hard, Dimon! Already on TAS #5. Looking forward to your next one!
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
You're working hard, Dimon! Already on TAS #5. Looking forward to your next one!
Rambo 3 is done in general! I've improved all parts of maTO's run, but I need to crossbreed some parts in 2 gens movies (.gmv) into one, because there are unbeatable parts and I have "disimproves" there. How to do this easily? Is it possible to do this with TAS Movie Editor?
TASing is like making a film: only the best takes are shown in the final movie.
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
Dimon12321 wrote:
ars4326 wrote:
You're working hard, Dimon! Already on TAS #5. Looking forward to your next one!
Rambo 3 is done in general! I've improved all parts of maTO's run, but I need to crossbreed some parts in 2 gens movies (.gmv) into one, because there are unbeatable parts and I have "disimproves" there. How to do this easily? Is it possible to do this with TAS Movie Editor?
You'd be able to "splice" them together with TAS Movie Editor, but your RNG might turn out different. It's worth a shot, though.
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
You're working hard, Dimon! Already on TAS #5. Looking forward to your next one!
Rambo 3 is done in general! I've improved all parts of maTO's run, but I need to crossbreed some parts in 2 gens movies (.gmv) into one, because there are unbeatable parts and I have "disimproves" there. How to do this easily? Is it possible to do this with TAS Movie Editor?
You'd be able to "splice" them together with TAS Movie Editor, but your RNG might turn out different. It's worth a shot, though.
Let's experiment :-)
TASing is like making a film: only the best takes are shown in the final movie.
Archanfel was asking this, so I'm posting it
ones - is spawn of flame thrower. zeros - cooldown frame.
Download jamesbond.lua
Language: lua
-- James Bond 007 The Duel
-- 2015 by r57shell
function GetCam()
xcam = memory.readwordsigned(0xFFC8F4)
ycam = memory.readwordsigned(0xFFC8F6)
end
function GetBox(Base)
GetCam()
x1 = memory.readwordsigned(Base + 0x0) - xcam
y1 = memory.readwordsigned(Base + 0x2) - ycam
x2 = memory.readwordsigned(Base + 0x4) - xcam
y2 = memory.readwordsigned(Base + 0x6) - ycam
end
function rngonce(rnd)
if (rnd < 0) then
return AND(XOR(rnd, 0x76B553)*2, 0xFFFFFFFF);
else
return AND(rnd*2, 0xFFFFFFFF);
end
end
function rngroll(rnd)
if (rnd >= 0x80000000) then
rnd = rnd - 0x80000000;
rnd = rnd - 0x80000000;
end
for i = 1, 8 do
rnd = rngonce(rnd);
end
return rnd;
end
function Hitbox()
local i = 0
local boxstart = memory.readword(0xFFD04E+2) + 0xFF0000;
while (i < 0x40) do
local base = i*0x80 + 0xFFD066
local box = boxstart + i*8;
if (memory.readword(base) ~= 0 and memory.readword(box) ~= 0x8000) then
GetBox(box);
if (base == 0xFFE066 or base == 0xFFE0E6) then
gui.box(x1, y1, x2, y2, "#00ff0000")
else
gui.box(x1, y1, x2, y2, "#00ffff00")
if (x2 < 0) then gui.text(x1 + 2, y2 - 7, "x:" .. x1 ) end
if (x1 >= 320) then gui.text(x1 + 2, y2 - 7, "x:" .. x1 - 320) end
if (y2 < 0) then gui.text(x2 + 2, y2 - 7, "y:" .. y2 ) end
if (y1 >= 224) then gui.text(x2 + 2, y2 - 7, "y:" .. y1 - 224) end
end
end
i = i + 1
end
end
function Main()
Hitbox()
local rnd = memory.readlong(0xFFC8E4);
local i
for i = 0, 50 do
local v = AND(rnd,0x30000);
if (v == 0) then
gui.text(2+i*5, 210, "1");
else
gui.text(2+i*5, 210, "0");
end
rnd = rngroll(rnd);
v = AND(rnd,0x30000);
if (v == 0) then
gui.text(2+i*5, 200, "1");
else
gui.text(2+i*5, 200, "0");
end
rnd = rngroll(rnd);
end
end
gui.register(Main)
hmm also wanna mention that fact, that it does check hit only if (sprite_index % 3 == word at FFD01A).
Archanfel was asking this, so I'm posting it
ones - is spawn of flame thrower. zeros - cooldown frame.
Thanks, i make a count of rightmost amount of zeros in row to simplify perception of cooldown.
And also add several my own horribly-written things :))
Download jamesbond_v2.lua
Language: lua
-- James Bond 007 The Duel
-- 2015 by r57shell (and a very little bit by Archanfel)
RND_1 = 0
RND_2 = 0
RND_1_MAX = 0
RND_2_MAX = 0
XposLast = 0
YposLast = 0
function GetCam()
xcam = memory.readwordsigned(0xFFC8F4)
ycam = memory.readwordsigned(0xFFC8F6)
end
function GetBox(Base)
GetCam()
x1 = memory.readwordsigned(Base + 0x0) - xcam
y1 = memory.readwordsigned(Base + 0x2) - ycam
x2 = memory.readwordsigned(Base + 0x4) - xcam
y2 = memory.readwordsigned(Base + 0x6) - ycam
end
function rngonce(rnd)
if (rnd < 0) then
return AND(XOR(rnd, 0x76B553)*2, 0xFFFFFFFF);
else
return AND(rnd*2, 0xFFFFFFFF);
end
end
function rngroll(rnd)
if (rnd >= 0x80000000) then
rnd = rnd - 0x80000000;
rnd = rnd - 0x80000000;
end
for i = 1, 8 do
rnd = rngonce(rnd);
end
return rnd;
end
function Hitbox()
local i = 0
local boxstart = memory.readword(0xFFD04E+2) + 0xFF0000;
while (i < 0x40) do
local base = i*0x80 + 0xFFD066
local box = boxstart + i*8;
if (memory.readword(base) ~= 0 and memory.readword(box) ~= 0x8000) then
GetBox(box);
if (base == 0xFFE066 or base == 0xFFE0E6) then
gui.box(x1, y1, x2, y2, "#00ff0000")
else
gui.box(x1, y1, x2, y2, "#00ffff00")
if (x2 < 0) then gui.text(x1 + 2, y2 - 7, "x:" .. x1 ) end
if (x1 >= 320) then gui.text(x1 + 2, y2 - 7, "x:" .. x1 - 320) end
if (y2 < 0) then gui.text(x2 + 2, y2 - 7, "y:" .. y2 ) end
if (y1 >= 224) then gui.text(x2 + 2, y2 - 7, "y:" .. y1 - 224) end
end
end
i = i + 1
end
end
function Main()
Hitbox()
local rnd = memory.readlong(0xFFC8E4);
local i
for i = 0, 50 do
local v = AND(rnd,0x30000);
if (v == 0) then
RND_2 = 0
gui.text(2+i*5, 210, "1");
else
RND_2 = RND_2 + 1
gui.text(2+i*5, 210, "0");
end
rnd = rngroll(rnd);
v = AND(rnd,0x30000);
if (v == 0) then
RND_1 = 0
gui.text(2+i*5, 200, "1");
else
RND_1 = RND_1 + 1
gui.text(2+i*5, 200, "0");
end
rnd = rngroll(rnd);
end
if (RND_1 > RND_1_MAX) then RND_1_MAX = RND_1
else end
if (RND_2 > RND_2_MAX) then RND_2_MAX = RND_2
else end
gui.text(320,190 ,string.format(" MAX"), 0xFF0000FF, clear)
gui.text(260,200 ,string.format("RND_1:%2d %2d",RND_1,RND_1_MAX), 0xFF0000FF, clear)
gui.text(260,210 ,string.format("RND_2:%2d %2d",RND_2,RND_2_MAX), 0xFF0000FF, clear)
Xpos = memory.readword(0xFFE08A)
Ypos = memory.readword(0xFFE08C)
BossHP = memory.readbyte(0xFFE929) + 1
MINIBossHP = memory.readbyte(0xFFEB21) + 1
Ammo = memory.readbyte(0xFFF47F) + 1
YPLATFORM1 = memory.readword(0xFFE40C)
YPLATFORM2 = memory.readword(0xFFE48C)
XPLATFORM1 = memory.readword(0xFFE40A)
XPLATFORM2 = memory.readword(0xFFE49E)
Xspd = Xpos-XposLast
Yspd = Ypos-YposLast
XposLast = Xpos
YposLast = Ypos
if (Xpos == 0 and Ypos == 0) then else
gui.text(10,1,string.format("pos:%4d %4d spd:%4d %4d",Xpos,Ypos,Xspd,Yspd), 0xFFFF00FF, clear)
if (YPLATFORM1>0) then
gui.text(235,1,string.format("PLY1:%4d",YPLATFORM1-44), 0xFFFF00FF, clear) else end
if (YPLATFORM2>0) then
gui.text(280,1,string.format("PLY2:%4d",YPLATFORM2-44), 0xFFFF00FF, clear) else end
if (XPLATFORM1>0) then
gui.text(235,11,string.format("PLX1:%4d",XPLATFORM1), 0xFFFF00FF, clear) else end
if (XPLATFORM2>0) then
gui.text(280,11,string.format("PLX2:%4d",XPLATFORM2), 0xFFFF00FF, clear) else end
if (Ammo > 254) then
gui.text(16,151,string.format("Ammo:Empty"), 0xFF0000FF, clear)
else
gui.text(16,151,string.format("Ammo"), 0xFFFF00FF, clear)
gui.text(35,151,string.format("x%2d",Ammo), 0xFFFF00FF, clear)
end end
if (BossHP > 1 and BossHP < 42) then
gui.text(148,11,string.format("Boss HP:%3d",BossHP), 0xFF0000FF, clear)
else end
if (MINIBossHP > 1 and MINIBossHP < 42) then
gui.text(138,21,string.format("MINIBoss HP:%3d",MINIBossHP), 0xFF0000FF, clear)
else end
savestate.registerload(function()
RND_1_MAX = 0
RND_2_MAX = 0
end)
end
gui.register(Main)
Question: Is it possible somehow to assign zero values for RND_1_MAX and RND_2_MAX at every time when game is loaded from savestate?
Edit: Thanks again.
I show you how deep the rabbit hole goes.
Current projects: NES: Tetris "fastest 999999" (improvement, with r57shell)
Genesis: Adventures of Batman & Robin (with Truncated); Pocahontas; Comix Zone (improvement); Mickey Mania (improvement); RoboCop versus The Terminator (improvement); Gargoyles (with feos)
Thanks. Probability of RNG event which necessary to crack last level is approximately 1/226 so luck will be pretty helpful.
Btw first two missions done, currently i am about 00:38.62 seconds ahead of published run.
I show you how deep the rabbit hole goes.
Current projects: NES: Tetris "fastest 999999" (improvement, with r57shell)
Genesis: Adventures of Batman & Robin (with Truncated); Pocahontas; Comix Zone (improvement); Mickey Mania (improvement); RoboCop versus The Terminator (improvement); Gargoyles (with feos)
Mission 3 also bring good harvest of frames. {More than one minute ahead of published run.}
New tricks:
1)At some occasions Bond is able survive if he falls from high places.
=> Long and boring period of waiting of main elevator is left in past :)
2)Two huge shortcuts with deaths after liberation of Bond's girls.
3)In the game there is no hand to hand combat, however James is well known master contactless battles, and even without using hands he can help guards take a hot bath in boiling lava [for entertainment].
I guess already on next week this short project will be completed.
I show you how deep the rabbit hole goes.
Current projects: NES: Tetris "fastest 999999" (improvement, with r57shell)
Genesis: Adventures of Batman & Robin (with Truncated); Pocahontas; Comix Zone (improvement); Mickey Mania (improvement); RoboCop versus The Terminator (improvement); Gargoyles (with feos)