View Page Source

Back to Page
Revision 27 (current)
Edited by adelikat on 9/2/2023 2:58 PM
! Positioning

Every time you press B, 0x80 is subtracted from Y subpixel speed. Otherwise, it either is nullified (on the ground), or just increases by 8 (in midair) each frame. Max Y speed is 3.0.

Every frame you hold direction, X subpixel speed increases by 16. Limit is 2.00.

! Enemies

They spawn with frame step of 46. Spawn slot depends on RNG which is rolled several times per frame while enemies or their eggs, or frag score is on-screen. So by picking eggs at different frames you can manipulate where the next enemy spawns.

However, in the first wave, they always spawn at the same spots: upper, upper and left slots.

Addresses $7C-$80 show which enemy occupies what spawn slot.


! Details

%%TAB RAM

BizHawk .wch file: [UserFiles/Info/637936906484701185]

%%TAB HUD Script

%%SRC_EMBED lua

-- NES Joust HUD
-- feos, 2014
function Joust()
	local rng    = memory.readbyte(0x2E)
	local x      = memory.readbyte(0x54)
	local xSub   = memory.readbyte(0x56) / 32
	local y      = memory.readbyte(0x58)
	local ySub   = memory.readbyte(0x5A) / 32
	local xSpeedOffset = memory.readbytesigned(0x4E)
	local xSpeed = memory.readbytesigned(0xCF69+xSpeedOffset) + memory.readbyte(0xCFAB+xSpeedOffset)/256
	local ySpeed = memory.readbytesigned(0x52) + memory.readbyte(0x50)/256
	local s1     = memory.readbyte(0x7C+0)
	local s2     = memory.readbyte(0x7C+1)
	local s3     = memory.readbyte(0x7C+2)
	local s4     = memory.readbyte(0x7C+3)
	local s5     = memory.readbyte(0x7C+4)
	local s6     = memory.readbyte(0x7C+5)
	gui.text(  1,224,string.format("\nSlots: %d %d %d %d %d %d",s1,s2,s3,s4,s5,s6))
	gui.text(110,224,string.format("\nRNG: %X",rng))
	gui.text(124,202,string.format("X: %.2f\nY: %.2f",xSpeed,ySpeed))
	gui.text(180,202,string.format("X: %3d.%d\nY: %3d.%d",x,xSub,y,ySub))
	RNGcount = 0
end
emu.registerafter(Joust)

%%END_EMBED


%%TAB RNG Roll

%%SRC_EMBED snescom

$D440 LDY #$03
$D442 ASL rng1
$D444 ROL rng2
$D446 ROL
$D447 ROL
$D448 EOR rng1
$D44A ROL
$D44B EOR rng1
$D44D LSR
$D44E LSR
$D44F EOR #$FF
$D451 AND #$01
$D453 ORA rng1
$D455 STA rng1
$D457 DEY
$D458 BPL $D442
$D45A RTS 

%%END_EMBED


%%TAB Set spawn slot

%%SRC_EMBED snescom

$EB2F JSR RNG Roll
$EB32 LDA rng1
$EB34 AND #$03
$EB36 BNE $EB3C
$EB38 LDY $0032
$EB3A BEQ $EB2F
$EB3C STA spawn slot,X

%%END_EMBED

%%TAB_END