Previous Thread
Next Thread
Print Thread
Page 2 of 2 1 2
Re: Battlezone fun [Re: Golden Child] #117073 03/23/20 11:51 AM
Joined: Jan 2011
Posts: 205
Al Kossow Offline
Senior Member
Offline
Senior Member
Joined: Jan 2011
Posts: 205
There is a bug that gives you a lot of tanks. Maybe it is documented somewhere.
I saw someone do it in an arcade in the 80s, but I could never catch the guy using it (he always did it when no one was watching)

Re: Battlezone fun [Re: Al Kossow] #117074 03/24/20 01:01 AM
Joined: Feb 2014
Posts: 376
G
Golden Child Offline OP
Senior Member
OP Offline
Senior Member
G
Joined: Feb 2014
Posts: 376
I've been reading about the highscore bug on a few forums.

According to biltronix at http://www.biltronix.com/battlezone.html
Quote

Hey, check out that wild high score eh? I know what you're thinking, it's a photoshop trick or something right? No, it's quite real alright. While it may not actually be an impossible score to achieve, I know I'll never even come close. I got the 4,537,000 score while playing but some sort of game program bug produced it. I took a shot at a saucer and while the shot was still in flight, a missile came at me. I kept clicking the fire button hoping it would shoot again before I got nailed. It did shoot again and I got the saucer and the missile so close to being at the same time that the sounds of the hits interfered with each other and suddenly the crazy high score appeared. I have a hi-score save module installed in my machine so it faithfully saved and restored it so I guess it's not going anywhere unless I decide to reset the scores. Nah.


(Scoring Millions of Points in Battlezone in Seconds)
https://forums.arcade-museum.com/showthread.php?t=244380

(Battlezone - 7 million points!)
http://www.classicarcadegaming.com/forums/index.php/topic,3302.0.html

(Scoring Millions in seconds in Upright Arcade BattleZone)
https://www.mameworld.info/ubbthreads/showflat.php?Cat=1&Number=292881


I've been looking at the screenshots of the high scores and it's interesting that none of them have the diagonally shifted high score screen of bzone (with the single tank icon for scores 100k+.)

https://forums.arcade-museum.com/showthread.php?t=244380&page=8


The player's score is at $b8 and $b9 so something must be stomping on them.



https://www.retroinjection.com/post...cade-courtesy-of-the-best-snowstorm-ever
Quote
Battlezone, a first-person perspective shooter, is one of my favorite vector games. How can you not love looking through that viewfinder? Kent's daughter managed to trigger a notoriously-difficult glitch in the game, awarding her this astronomical high score.

Re: Battlezone fun [Re: Golden Child] #117075 03/24/20 01:15 AM
Joined: Feb 2014
Posts: 376
G
Golden Child Offline OP
Senior Member
OP Offline
Senior Member
G
Joined: Feb 2014
Posts: 376
More silly fun, let's draw the start led on the screen (startled in the upper left corner)
[Linked Image from i.imgur.com]


Code
dispatch_list = { }

function frame_dispatcher()
for index,my_func in pairs(dispatch_list) do  my_func() end
end

function cld()
dispatch_list = {}
end

if not alreadyregisteredframedone then
emu.register_frame_done(frame_dispatcher)
alreadyregisteredframedone=true
end

function drawstartled() 
if manager:machine():outputs():get_value("startled")==1 then 
  manager:machine().screens[":screen"]:draw_text(5,5,"startled")  
end 
inp = manager:machine():input() if inp:code_pressed(inp:code_from_token("KEYCODE_S")) then dispatch_list={} end
end

table.insert(dispatch_list,drawstartled)



I tried the same thing with foodfight, it has them named "led0" and "led1".

Code
function drawled(ledname,x,y)
if manager:machine():outputs():get_value(ledname)==1 then 
 manager:machine().screens[":screen"]:draw_text(x,y,ledname)  
end
end

function drawstartled() 
drawled("led0",5,5)
drawled("led1",5,15)
inp = manager:machine():input() if inp:code_pressed(inp:code_from_token("KEYCODE_S")) then dispatch_list={} end
end


Re: Battlezone fun [Re: Golden Child] #117089 03/27/20 05:29 PM
Joined: Feb 2014
Posts: 376
G
Golden Child Offline OP
Senior Member
OP Offline
Senior Member
G
Joined: Feb 2014
Posts: 376
If we know where the locations for our position and direction are in memory, let's see if we can move things around under lua's control.

Moving the player under the control of a lua script:

[Linked Image from i.imgur.com]

Player position is stored at 2d/2e for x position and 31/32 for y position.
Tank position is stored at 2f/30 for x position and 33/34 for y position.
Tank direction is stored at 29/2c 29=lsb and 2c=msb.

The player's direction is stored at 27 = lsb and 2a = msb. When 27/2a are set to 0000 that precisely lines up on the right side of the moon with the target.

Interestingly, only the msb of the direction gets reset on the start of the game, when the game starts it will be very close to the edge of the moon.

[Linked Image from i.imgur.com]

This script will move the tank around, spin it, and move the player around also. It's kind of fun to "trap" the missile with the script and watch it rotate.

Code
mem=manager:machine().devices[":maincpu"].spaces["program"]
mem2=manager:machine():memory().regions[":maincpu"]
function hex(a,digits) digits = digits or 2 return string.format("%0"..digits.."x",a) end

function setlives(l) l=int(l) mem:write_u8(0xcc,l) end
function setscore(s) s=int(s) mem:write_u16(0xb8,s) end

function setmypos(x,y) mem:write_u16(0x2d,int(x)) mem:write_u16(0x31,int(y)) end
function setmydir(d) d=int(d) mem:write_u8(0x27,d&0xff) mem:write_u8(0x2a,(d&0xff00)>>8)  end

function settankposx(x) mem:write_u16(0x2f,int(x)) end
function settankposy(y) mem:write_u16(0x33,int(y)) end
function settankpos(x,y) settankposx(x) settankposy(y) end
function settankdir(d) d=int(d) mem:write_u8(0x29,d&0xff) mem:write_u8(0x2c,(d&0xff00)>>8)  end 

function delay(delaytime)  delaytime = delaytime or 4 emu.wait(delaytime * 1/60) end

function int(i) return math.floor(i) end

function movetank2()
-- move enemy tank in a triangle
movetable = { 10,0,  50,0,  50,10, 10,0, 50,-20, 10,0,}
for pos=1,#movetable-2,2 do
   x1=movetable[pos+0] y1=movetable[pos+1] 
   x2=movetable[pos+2] y2=movetable[pos+3]
   dist=math.sqrt((x2-x1)^2 + (y2-y1)^2)
   vel=20/60
   t=dist/vel
   frames=t
   --print(pos,x1,y1,x2,y2)
   for f=1,frames do
       x=(x2-x1)/frames * f + x1
       y=(y2-y1)/frames * f + y1
       settankpos(x*256,y*256)
       setmypos(0,0)
       setmydir(0)
       print(f,frames,x,y) 
       delay(1)
  end
end
-- spin the enemy tank or missile around 3 times
for i=1,3 do
for d=0,255 do
  setmypos(0,0)
  setmydir(0)
  settankdir(d*256)
  settankpos(0x600,0)
  setlives(4)
  setscore(d)
  delay(2)
end
end
-- move me and fix the enemy tank right in front of me
movetable = { 10,0,  50,0,  50,10, 10,0, 50,-20, 10,0,}
for pos=1,#movetable-2,2 do
   x1=movetable[pos+0] y1=movetable[pos+1] 
   x2=movetable[pos+2] y2=movetable[pos+3]
   dist=math.sqrt((x2-x1)^2 + (y2-y1)^2)
   vel=20/60
   t=dist/vel
   frames=t
   --print(pos,x1,y1,x2,y2)
   for f=1,frames do
       x=(x2-x1)/frames * f + x1
       y=(y2-y1)/frames * f + y1
       setmypos(x*256,y*256)
       settankpos(x*256+0x401,y*256)
       setmydir(0)
       setlives(4)
       setscore(f)
       print(f,frames,x,y) 
       delay(1)
    end
end
end

co1=coroutine.create(movetank2) coroutine.resume(co1)

Re: Battlezone fun [Re: Golden Child] #117121 04/04/20 04:59 PM
Joined: Feb 2014
Posts: 376
G
Golden Child Offline OP
Senior Member
OP Offline
Senior Member
G
Joined: Feb 2014
Posts: 376
Not exactly battlezone specifically related, but I recently came across Steven Hugg's 8bitworkshop site and it has on-line compilers and emulators for atari vector-like hardware. That site is amazing for the instantaneous assembly and compilation. Super cool.

[Linked Image from i.imgur.com]

https://8bitworkshop.com/v3.5.0/?platform=vector-z80color&file=threed.c

Re: Battlezone fun [Re: Golden Child] #117122 04/05/20 06:39 AM
Joined: Apr 2006
Posts: 676
D
Dullaron Offline
Senior Member
Offline
Senior Member
D
Joined: Apr 2006
Posts: 676
There scan lines in there? I see something there. Good effect.


Windows 10 Pro 64-bit / Intel Core i5-4460 3.20 GHz / 8.00 GB RAM / AMD Radeon R9 200 Series
Re: Battlezone fun [Re: Golden Child] #117123 04/05/20 12:04 PM
Joined: Mar 2001
Posts: 16,475
R
R. Belmont Offline
Very Senior Member
Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 16,475
I hope not, because vector monitors don't have scan lines.

Re: Battlezone fun [Re: Golden Child] #117125 04/05/20 10:01 PM
Joined: Feb 2014
Posts: 376
G
Golden Child Offline OP
Senior Member
OP Offline
Senior Member
G
Joined: Feb 2014
Posts: 376
Being fascinated by vector graphics I was looking for stuff on the Star Wars trench sequence and found a few articles and videos.


https://www.chicagotribune.com/ente...rs-evl-lab-ent-0524-20170523-column.html
https://www.evl.uic.edu/entry.php?id=2297

Making of the Computer Graphics for Star Wars (Episode IV)
[video:youtube]https://www.youtube.com/watch?v=yMeSw00n3Ac[/video]

Aura Technologies Revives Real Death Star "Main Computer"
[video:youtube]https://www.youtube.com/watch?v=VedPXjAQT8Q[/video]


Here's a video about the restoration of the Vector General 3DR and the star wars animation: (54 minutes of pure awesomeness)

Restoring the Machine that Destroyed the Death Star | VCFMW 2019
[video:youtube]https://www.youtube.com/watch?v=_mtLUws1bOk[/video]

You could hook up to 4 monitors and 4 sets of dials. Wow.

Page 2 of 2 1 2

Who's Online Now
3 registered members (Heihachi_73, box, Duke), 171 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
ShoutChat Box
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics8,766
Posts115,200
Members4,889
Most Online890
Jan 17th, 2020
Powered by UBB.threads™ PHP Forum Software 7.7.3