当我运行我自己编写的代码时,FCEUX停止响应

时间:2018-10-08 00:26:40

标签: lua

--llama a IUP

require("iuplua")

--Variables

on= 1

puntos1=memory.readbyte(0x0007DE) --Read the points value
puntos2=memory.readbyte(0x0007DF)
puntos3=memory.readbyte(0x0007E0)
puntos4=memory.readbyte(0x0007E1)
puntos5=memory.readbyte(0x0007E2)

p1=puntos1*100000 --Convert the raw values to it's game value
p2=puntos2*10000
p3=puntos3*1000
p4=puntos4*100
p5=puntos5*10

maxpuntaje=p1+p2+p3+p4+p5 --Calculate the final result

mundo=memory.readbyte(0x00075F) --Read the "world" value
nivel=memory.readbyte(0x000760) --Read the "level" value

estado=memory.readbyte(0x000770) --Read the mario "state" (00 not in game, 01 playing, 03 game over)

--Escribir las variables anteriores al morir


memory.writebyte(0x00075A,00) --Change the "lives" value to 1

while(on==1) do
estado=memory.readbyte(0x000770)
print(estado)
print(type(estado))
if(estado==03)then
    print("Puntuacion maxima (sesion actual) = ",maxpuntaje)
    print("Mundo y nivel Actual: ",mundo+1,"-",nivel+1)
end

结束

(代码已编辑)

This is the state of 0x000770 when playing

This is the state of 0x000770 when the Game Over scene jumps in

有什么问题吗?当我运行此脚本时,fceux只是停止响应,在堆栈溢出和编程时是全新的,因此,每一个帮助都将受到欢迎

2 个答案:

答案 0 :(得分:0)

调试起来很简单,但是需要更多信息

  1. 确保(estado == 03)得出true,并打印以下变量并添加到您的问题中
    mundo=memory.readbyte(0x00075F)
    nivel=memory.readbyte(0x000760)
    estado=memory.readbyte(0x000770)
    print(mundo, nivel, estado)
  2. 检查这些内存读取变量的类型i-g print(type(mundo))
  3. 确保if条件检查正确的类型
  4. 您意识到记忆一遍又一遍是真的
  

尝试一下:

while(on==1) do
    estado=memory.readbyte(0x000770)
    print(estado)
    print(type(estado))
    if(estado==03)then
        print("Puntuacion maxima (sesion actual) = ",maxpuntaje)
        print("Mundo y nivel Actual: ",mundo+1,"-",nivel+1)
    end
end

答案 1 :(得分:0)

很抱歉浪费您的时间,但是我发现了错误,实际上很简单,在周期结束时缺少FCEU.frameadvance。 我不知道为什么它会导致模拟器崩溃,但是将其放置到位后它停止崩溃了。感谢wsha的帮助。