diff --git a/BizHawk.MultiClient/output/Lua/Castlevania_Rondo_of_Blood.lua b/BizHawk.MultiClient/output/Lua/Castlevania_Rondo_of_Blood.lua deleted file mode 100644 index 81b13e91df..0000000000 --- a/BizHawk.MultiClient/output/Lua/Castlevania_Rondo_of_Blood.lua +++ /dev/null @@ -1,324 +0,0 @@ ---Castlevania: Rondo of Blood - -fill = 0x64FFC8C8 -line = 0xFFFFC8C8 - -function drawObjInfo() - - for i = 0,88 do - - objX = mainmemory.read_u8(0xBC8+i) - objY = mainmemory.read_u8(0xCD0+i) - objVisibleX = mainmemory.read_u8(0xB70+i)*255 - objVisibleY = mainmemory.read_u8(0xC78+i)*255 - objDamage = mainmemory.read_u8(0x1300+i) --how much damage it will do if it collides with you - objHealth = mainmemory.read_u8(0x12A8+i-2) --something is wrong, -2 makes it right in some cases but makes others wrong - objStatus = mainmemory.read_u8(0x1250+i) --collision status - adjustedX = objX - objVisibleX - adjustedY = objY - objVisibleY - --clipping - if(adjustedX > 0 and adjustedY > 0) then - gui.text( - adjustedX * xmult, - adjustedY * ymult, - objX - .. " " .. objY --- .. " " .. "#" .. i --- .. " D" .. objDamage --- .. " HP" .. objHealth --- .. " S" .. objStatus - ) - end - end -end - -function drawHitBoxes() - - for i = 0,88 do - - objX = mainmemory.read_u8(0xBC8+i) - objY = mainmemory.read_u8(0xCD0+i) - objVisibleX = mainmemory.read_u8(0xB70+i)*255 - objVisibleY = mainmemory.read_u8(0xC78+i)*255 - adjustedX = objX - objVisibleX - adjustedY = objY - objVisibleY - objOffsetX = mainmemory.read_u8(0x1930+i) - objDirection = mainmemory.read_u8(0xAC0+i) - objUnknownY = mainmemory.read_u8(0x19E0+i) - hitSizeX = mainmemory.read_u8(0x1988+i) - hitSizeY = mainmemory.read_u8(0x1A38+i) - - if(objDirection == 1) then --9484 - objOffsetX = bit.bxor(0xFF,objOffsetX) --9488 - objOffsetX = objOffsetX+1 --948A - end - - off00 = 0 --942B - if (bit.band(0x80, objOffsetX) == 128) then --942F - of00=bit.band(0xFF,(off00-1)) --9431 - end - - hitBoxCornerX = bit.band(0xFF,(objX + objOffsetX)) --9434 - hitBoxCornerY = bit.band(0xFF,(objY + objUnknownY)) --944F - - objStatus = mainmemory.read_u8(0x1250+i)-- generally: 0 inert, 1 benign, 2 damageable/possibly damaging - - if(objStatus == 0) then - fill = 0x600000FF - line = 0xC0000000 - elseif(objStatus == 1) then - fill = 0x3C00FF00 - line = 0x8000FF00 - elseif(objStatus == 2) then - fill = 0x50FF0000 - line = 0x80FF0000 - end - - --clipping - if(adjustedX > 0 and adjustedY > 0) then - gui.drawBox( - hitBoxCornerX-hitSizeX, - hitBoxCornerY+hitSizeY, - hitBoxCornerX+hitSizeX, - hitBoxCornerY-hitSizeY, - line, - fill - ) - end - end -end - -function dispProperties(num) - - fill = 0x80FFC8C8 - - ObjDamageInfo = { - 0x13b0,--5 means is being damaged - 0x1a90,--invulnerability countdown - 0xf90,--if 0, animate. seems to be used as a counter to temporarily freeze objs when damaged - 0xb18,--flashing if equal to 0x10, white if equal to 0x86 - 0x1ae8, - 0x1f18, - 0x11f8, - 0x12a8--health - } - - for i = 1,8 do - gui.text((10+(i*20)) * xmult ,100 * ymult, mainmemory.read_u8(ObjDamageInfo[i]+num)) - end - - hitBoxInfo = { - 0x1988, - 0x1A38, - 0x1930, - 0xAC0 - } - - for i = 1,4 do - gui.text((10+(i*20)) * xmult,120 * ymult, mainmemory.read_u8(hitBoxInfo[i]+num)) - end - - ObjPositionInfo = { - 0xB70, --offscreen or not - 0xBC8, --x position - 0xC20, - 0xC78, - 0xCD0, --y position - 0xD28, - } - - for i = 1,6 do - gui.text((10+(i*20)) * xmult,140 * ymult, mainmemory.read_u8(ObjPositionInfo[i]+num)) - end - - collisionInfo = { - 0x710, --compensated x - 0x720, --compensated y - 0x730 --compensated "visible" - } - - for i = 1,3 do - gui.text((10+(i*20)) * xmult,160 * ymult, mainmemory.read_u8(collisionInfo[i]+num)) - end -end - -while true do - --Multiplier for text rendering - xmult = client.screenwidth() / 256 - ymult = client.screenheight() / 225 - line = 0xFFFFC8C8 - --display info about a given object - --dispProperties(0) - - drawHitBoxes() - drawObjInfo() - emu.frameadvance() - --invincibility cheat --- memory.writebyte(0x13B0, 0) - -end - ---[[ Notes - ---Object Damage - -A1ED LDY $33B0,X ;"can damage" -A1F0 LDA $A26D,Y -A1F3 STA $3A90,X ;invulnerability countdown -A1F6 LDA $A27D,X -A1F9 STA $2F90,X ;whether to animate the obj or not -A1FC LDA $2B18,X ;flashing or not -A1FF STA $3AE8,X -A202 LDA #$86 ;make the palette white -A204 STA $2B18,X -A207 LDA $3F18,X -A20A ORA #$03 -A20C STA $31F8,X -A20F LDA $32A8,X -A212 SEC -A213 SBC $00 ;subtract the amount of damage to do -A215 STA $32A8,X ;x is the object slot to modify - ---Where the player's health is decremented - -A1F2 LDA $33B0 ;check if the player is vulnerable -A1F5 BEQ $A234 -A1F7 LDA $33B0 -A1FA bit.band #$07 -A1FC CMP #$05 -A1FE BNE $A20B -A200 LDA $36D3 -A203 BNE $A20B -A205 STZ $33B0 -A20B LDA $98 ;player health -A20D SEC -A20E SBC $32A8 ;subtract amount of damage received -A211 STA $98 - ---Where the damage received (32A8) is set - -9546 STA $33B0,X -9549 LDA $33B0 -954C BNE $955A -954E LDA $3358,X -9551 STA $33B0 -9554 LDA $3300,X ;the amount of damage an object will deal to you -9557 STA $32A8 - ---Where the hitbox offset is calculated - -9413 LDX #$00 -9415 LDA $3250,X ;load the hitbox type -9418 BEQ $9460 ;we quit if type 0 -941A LDA $3930,X ;x offset -941D STA $01 ;store it in 01 -941F LDA $2AC0,X ;direction facing, left is 1, right is 0 -9422 BEQ $942B ;we are facing... -9424 LDA $01 ;left, load offset -9426 EOR #$FF -9428 INC -9429 STA $01 ;store the altered offset -942B STZ $00 -942D LDA $01 ;get the either altered or unaltered offset -942F BPL $9433 -9431 DEC $00 -9433 CLC -9434 ADC $2BC8,X ;add x position to either altered or unaltered offset -9437 STA $2710,X ;store that as the hitbox corner -943A LDA $2B70,X ;is the object visible -943D ADC $00 ;correct it depending on the altered x offset -943F STA $2730,X -9442 STZ $00 -9444 LDA $39E0,X -9447 BPL $944B -9449 DEC $00 -944B LDA $2CD0,X ;y position -944E CLC -944F ADC $39E0,X -9452 STA $2720,X ;store hitbox y corner -9455 LDA $2C78,X ;indicator that the object is y visible -9458 ADC $00 -945A ORA $2730,X -945D STA $2730,X -9460 INX -9461 CPX #$10 ;we can only do 16 objects -9463 BCC $9415 ;start again if we have objects left -9465 RTS -9466 STZ $33B0,X ;zero the "can damage" byte -9469 LDA $3250,X ;objStatus / collision status -946C BNE $9471 ;if the status is 0 we continue -946E JMP $9507 ;otherwise we quit - ---X and Y represent our two objects - -9471 LDA $3988,X ;x hitbox size -9474 ORA $3A38,X ;y hitbox size -9477 BNE $947C -9479 JMP $9507 -947C LDA $3930,X ;x offset -947F STA $01 -9481 LDA $2AC0,X ;objDirection -9484 BEQ $948D ;branch if we are facing right -9486 LDA $01 ;left -9488 EOR #$FF -948A INC -948B STA $01 -948D STZ $00 ;right, zero our temp byte -948F LDA $01 ;load the possibly manipulated offset -9491 BPL $9495 -9493 DEC $00 -9495 CLC -9496 ADC $2BC8,X ;add object x position to the possibly manipulated offset -9499 STA $26FF -949C LDA $2B70,X ;objVisibleX -949F ADC $00 -94A1 BNE $9507 ;quit if the result is non-zero -94A3 STZ $00 -94A5 LDA $39E0,X ;y related -94A8 BPL $94AC -94AA DEC $00 -94AC CLC -94AD ADC $2CD0,X ;obj y position -94B0 STA $2700 -94B3 LDA $2C78,X ;objVisibleY -94B6 ADC $00 -94B8 BNE $9507 -94BA LDA $3250,X ;objStatus / collision status -94BD BPL $94C2 -94BF CLY -94C0 BRA $94C4 -94C2 LDY #$0F ;16 objects max - -94C4 LDA $3250,Y ;objStatus / collision status -94C7 BEQ $9504 ;if objStatus is zero, go to the next object -94C9 LDA $2730,Y ;compensated "visible" -94CC BNE $9504 -94CE LDA $3988,X ;x hitbox size of 1st object -94D1 CLC -94D2 ADC $3988,Y ;x hitbox size of 2nd object -94D5 STA $2701 -94D8 LDA $3A38,X ;y hitbox size of 1st object -94DB CLC -94DC ADC $3A38,Y ;y hitbox size of 2nd object -94DF STA $2702 -94E2 LDA $26FF -94E5 SEC -94E6 SBC $2710,Y ;subtract compensated x position for the current object -94E9 BCS $94EE -94EB EOR #$FF -94ED INC -94EE CMP $2701 -94F1 BCS $9504 -94F3 LDA $2700 -94F6 SEC -94F7 SBC $2720,Y ;subtract compensated y position for the current object -94FA BCS $94FF -94FC EOR #$FF -94FE INC -94FF CMP $2702 -9502 BCC $9508 -9504 DEY -9505 BPL $94C4 -9507 RTS - -]] \ No newline at end of file diff --git a/BizHawk.MultiClient/output/Lua/NinjaGaiden_Hitbox.lua b/BizHawk.MultiClient/output/Lua/NES/NinjaGaiden_Hitbox.lua similarity index 100% rename from BizHawk.MultiClient/output/Lua/NinjaGaiden_Hitbox.lua rename to BizHawk.MultiClient/output/Lua/NES/NinjaGaiden_Hitbox.lua diff --git a/BizHawk.MultiClient/output/Lua/PunchOutStats.lua b/BizHawk.MultiClient/output/Lua/NES/PunchOutStats.lua similarity index 100% rename from BizHawk.MultiClient/output/Lua/PunchOutStats.lua rename to BizHawk.MultiClient/output/Lua/NES/PunchOutStats.lua diff --git a/BizHawk.MultiClient/output/Lua/RBIBaseball.lua b/BizHawk.MultiClient/output/Lua/NES/RBIBaseball.lua similarity index 100% rename from BizHawk.MultiClient/output/Lua/RBIBaseball.lua rename to BizHawk.MultiClient/output/Lua/NES/RBIBaseball.lua diff --git a/BizHawk.MultiClient/output/Lua/SMB2U.lua b/BizHawk.MultiClient/output/Lua/NES/SMB2U.lua similarity index 100% rename from BizHawk.MultiClient/output/Lua/SMB2U.lua rename to BizHawk.MultiClient/output/Lua/NES/SMB2U.lua diff --git a/BizHawk.MultiClient/output/Lua/NES/Snake Rattle N' Roll.lua b/BizHawk.MultiClient/output/Lua/NES/Snake Rattle N' Roll.lua new file mode 100644 index 0000000000..3fcf34fb9e --- /dev/null +++ b/BizHawk.MultiClient/output/Lua/NES/Snake Rattle N' Roll.lua @@ -0,0 +1,37 @@ +-- Snake Rattle N' Roll 'Simple HUD Script' +-- Retrieved from http://tasvideos.org/GameResources/NES/SnakeRattleNRoll.html + +dim1speed = 0 +dim2speed = 0 +xspeed = 0 +xsubspeed = 0 +yspeed = 0 +ysubspeed = 0 +xm = 0 +ym = 0 + +function stuff() + xspeed = mainmemory.read_u8(0x417) + xsubspeed = mainmemory.read_u8(0x419) + if (xspeed == 255) then xspeed = -1 end + + yspeed = mainmemory.read_u8(0x41b) + ysubspeed = mainmemory.read_u8(0x41d) + if (yspeed == 255) then yspeed = -1 end + + gui.text(1 * xm,19 * ym,"L:"..mainmemory.read_u8(0x67) % 16) -- left axis + gui.text(1 * xm,29 * ym,"R:"..mainmemory.read_u8(0x69) % 16) -- right axis + gui.text(1 * xm,39 * ym,"H:"..mainmemory.read_u8(0x6b) % 16) -- height axis + gui.text(30 * xm,19 * ym, "LVel:"..(xspeed * 256) + xsubspeed + (yspeed * 256) + ysubspeed) + gui.text(30 * xm,29 * ym,"RVel:"..(xspeed * 256) + xsubspeed - (yspeed * 256) - ysubspeed) +end + +local function scaler() + xm = client.screenwidth() / 256 + ym = client.screenheight() / 224 +end +while true do + scaler() + stuff() + emu.frameadvance() +end \ No newline at end of file