FCEUX перестает отвечать, когда я запускаю этот код, сделанный мной - PullRequest
0 голосов
/ 08 октября 2018
--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

end

(код отредактирован)

Это состояние 0x000770 при игре

Это состояние0x000770, когда сцена Game Over прыгает в

что-то не так?fceux просто перестает отвечать, когда я запускаю этот скрипт, я новичок в переполнении стеков и в программировании, поэтому любая помощь будет приветствоваться

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

мне очень жаль тратить ваше время, но я обнаружил ошибку, на самом деле она была довольно простой, в конце цикла отсутствовал FCEU.frameadvance.Я не знаю, почему это привело к сбою эмулятора, но после его установки он перестал падать.спасибо wsha за помощь.

0 голосов
/ 08 октября 2018

Отладить это довольно просто, но требуется больше информации

  1. Убедитесь, что (estado == 03) возвращает true, а также выведите следующие переменные и добавьте в свой вопрос
    mundo=memory.readbyte(0x00075F)
    nivel=memory.readbyte(0x000760)
    estado=memory.readbyte(0x000770)
    print(mundo, nivel, estado)
  2. Проверьте типы этой памяти, прочитайте переменные и напечатайте (тип (mundo))
  3. Убедитесьчто условие if проверяет правильность типов
  4. Вы понимаете, что memonry читается один раз, а while всегда верно

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...