Giter Site home page Giter Site logo

spice86's People

Contributors

dependabot[bot] avatar kevinferrare avatar maximilien-noal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

spice86's Issues

Opening certain files causes a NullPointerException

Version tested: 1.29.0

I have attempted to run 3 games: PoP, Dune and Monkey Island. And all of them spit out different errors, but they all fail at the same line.

Prince:

[Executor] s.e.l.ExecutableFileLoader - Program entry point is 0x16D0:0x2C4
[Executor] s.e.i.dos.DosInt21Handler - GET DOS VERSION
[Executor] s.e.i.dos.DosInt21Handler - MODIFY MEMORY BLOCK size=10159, blockSegment=477
[Executor] s.e.i.dos.DosInt21Handler - GET DOS VERSION
[Executor] s.e.i.dos.DosInt21Handler - GET INTERRUPT VECTOR INT 0x0, got 0x0:0x0
[Executor] s.e.i.dos.DosInt21Handler - SET INTERRUPT VECTOR FOR INT 0x0 at address 0x16D0:0x366
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET CURRENT DEFAULT DRIVE
[Executor] s.e.i.dos.DosInt21Handler - GET CURRENT DIRECTORY responseAddress=0x198C:0x73FB
[Executor] s.e.i.dos.DosInt21Handler - OPEN FILE C:\prince.dat with mode 0x0 (rwAccessMode:0x0)
[Executor] s.e.i.dos.DosFileManager - Opening file ./PRINCE.DAT with mode r
[Executor] s.e.i.dos.DosInt21Handler - READ FROM FILE handle 5 length 6 to 0x198C:0x743C
[Executor] s.e.i.dos.DosFileManager - Reading from file C:\prince.dat
[Executor] s.e.i.dos.DosInt21Handler - ALLOCATE MEMORY BLOCK size=39
[Executor] s.e.i.dos.DosInt21Handler - MOVE FILE POINTER USING HANDLE. originOfMove=0, fileHandle=5, offset=25086
[Executor] s.e.i.dos.DosFileManager - Moving in file C:\prince.dat
[Executor] s.e.i.dos.DosInt21Handler - READ FROM FILE handle 5 length 514 to 0x298D:0x5E
[Executor] s.e.i.dos.DosFileManager - Reading from file C:\prince.dat
[Executor] s.e.i.dos.DosInt21Handler - FIND FIRST MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./DIGISND3.DAT
[Executor] s.e.i.dos.DosInt21Handler - GET DTA (DISK TRANSFER ADDRESS) DS:DX 0x1DD:0x80
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./SNDDRVRS/PRESET33.DEF
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./VDUNGEON.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./MIDISND1.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./DIGISND1.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./IBM_SND2.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./DIGISND2.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./MIDISND2.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - Found matching file ./IBM_SND1.DAT
[Executor] s.e.i.dos.DosInt21Handler - FIND NEXT MATCHING FILE attributes=0x8, fileSpec=C:????????.???
[Executor] s.e.i.dos.DosFileManager - No more files matching ????????.??? in path ./
[Executor] s.e.i.dos.DosInt21Handler - DOS operation failed with an error. Int will return to null. State is cycles=1682 CS:IP=0xF000:0x28/0xF000:0x28 AX=0x4F43 BX=0x80 CX=0x8 DX=0x0 SI=0x745F DI=0xC BP=0x7444 SP=0x73EC SS=0x198C DS=0x198B ES=0x1DD FS=0x0 GS=0x0 flags=0x7046 (     Z P )
[Executor] s.e.i.dos.DosInt21Handler - OPEN FILE setup.dat with mode 0x0 (rwAccessMode:0x0)
[Executor] spice86.ui.Spice86Application - An error occurred during execution
java.lang.NullPointerException: null
        at java.base/java.io.File.<init>(File.java:278)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:450)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:456)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:456)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toHostCaseSensitiveFileName(DosFileManager.java:420)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.openFile(DosFileManager.java:102)
        at spice86.emulator.interrupthandlers.dos.DosInt21Handler.openFile(DosInt21Handler.java:290)
        at spice86.emulator.interrupthandlers.dos.DosInt21Handler.lambda$fillDispatchTable$3(DosInt21Handler.java:71)
        at spice86.emulator.callback.IndexBasedDispatcher.run(IndexBasedDispatcher.java:21)
        at spice86.emulator.interrupthandlers.dos.DosInt21Handler.run(DosInt21Handler.java:96)
        at spice86.emulator.callback.IndexBasedDispatcher.run(IndexBasedDispatcher.java:21)
        at spice86.emulator.cpu.Cpu.callback(Cpu.java:1793)
        at spice86.emulator.cpu.Cpu.grp4(Cpu.java:1503)
        at spice86.emulator.cpu.Cpu.execOpcode(Cpu.java:1135)
        at spice86.emulator.cpu.Cpu.executeNextInstruction(Cpu.java:200)
        at spice86.emulator.machine.Machine.runLoop(Machine.java:300)
        at spice86.emulator.machine.Machine.run(Machine.java:290)
        at spice86.emulator.ProgramExecutor.run(ProgramExecutor.java:51)
        at spice86.ui.Spice86Application.lambda$startMachine$3(Spice86Application.java:55)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)

Dune:

[Executor] s.e.l.ExecutableFileLoader - Program entry point is 0x1ED:0x0
[Executor] s.e.i.dos.DosInt21Handler - GET CURRENT DEFAULT DRIVE
[Executor] s.e.i.dos.DosInt21Handler - GET/SET CTRL-C FLAG
[Executor] s.e.i.dos.DosInt21Handler - GET/SET CTRL-C FLAG
[Executor] s.e.i.dos.DosInt21Handler - OPEN FILE dunevga.hsq with mode 0x0 (rwAccessMode:0x0)
[Executor] spice86.ui.Spice86Application - An error occurred during execution
java.lang.NullPointerException: null
       at java.base/java.io.File.<init>(File.java:278)
       at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:450)
       at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:456)
       at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:456)
       at spice86.emulator.interrupthandlers.dos.DosFileManager.toHostCaseSensitiveFileName(DosFileManager.java:420)
       at spice86.emulator.interrupthandlers.dos.DosFileManager.openFile(DosFileManager.java:102)
       at spice86.emulator.interrupthandlers.dos.DosInt21Handler.openFile(DosInt21Handler.java:290)
       at spice86.emulator.interrupthandlers.dos.DosInt21Handler.lambda$fillDispatchTable$3(DosInt21Handler.java:71)
       at spice86.emulator.callback.IndexBasedDispatcher.run(IndexBasedDispatcher.java:21)
       at spice86.emulator.interrupthandlers.dos.DosInt21Handler.run(DosInt21Handler.java:96)
       at spice86.emulator.callback.IndexBasedDispatcher.run(IndexBasedDispatcher.java:21)
       at spice86.emulator.cpu.Cpu.callback(Cpu.java:1793)
       at spice86.emulator.cpu.Cpu.grp4(Cpu.java:1503)
       at spice86.emulator.cpu.Cpu.execOpcode(Cpu.java:1135)
       at spice86.emulator.cpu.Cpu.executeNextInstruction(Cpu.java:200)
       at spice86.emulator.machine.Machine.runLoop(Machine.java:300)
       at spice86.emulator.machine.Machine.run(Machine.java:290)
       at spice86.emulator.ProgramExecutor.run(ProgramExecutor.java:51)
       at spice86.ui.Spice86Application.lambda$startMachine$3(Spice86Application.java:55)
       at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
       at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
       at java.base/java.lang.Thread.run(Thread.java:833)

Monkey:

[Executor] s.e.l.ExecutableFileLoader - Program entry point is 0x12B1:0xE
[Executor] s.e.i.dos.DosInt21Handler - GET DOS VERSION
[Executor] s.e.i.dos.DosInt21Handler - MODIFY MEMORY BLOCK size=10659, blockSegment=477
[Executor] s.e.i.dos.DosInt21Handler - GET DOS VERSION
[Executor] s.e.i.dos.DosInt21Handler - GET INTERRUPT VECTOR INT 0x0, got 0x0:0x0
[Executor] s.e.i.dos.DosInt21Handler - SET INTERRUPT VECTOR FOR INT 0x0 at address 0x114C:0x57CF
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET DEVICE INFORMATION
[Executor] s.e.i.dos.DosInt21Handler - GET CURRENT DEFAULT DRIVE
[Executor] s.e.i.dos.DosInt21Handler - SET INTERRUPT VECTOR FOR INT 0x24 at address 0x114C:0x7A21
[Executor] s.e.i.dos.DosInt21Handler - OPEN FILE 000.lfl with mode 0x0 (rwAccessMode:0x0)
[Executor] spice86.ui.Spice86Application - An error occurred during execution
java.lang.NullPointerException: null
        at java.base/java.io.File.<init>(File.java:278)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:450)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:456)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toCaseSensitiveFileName(DosFileManager.java:456)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.toHostCaseSensitiveFileName(DosFileManager.java:420)
        at spice86.emulator.interrupthandlers.dos.DosFileManager.openFile(DosFileManager.java:102)
        at spice86.emulator.interrupthandlers.dos.DosInt21Handler.openFile(DosInt21Handler.java:290)
        at spice86.emulator.interrupthandlers.dos.DosInt21Handler.lambda$fillDispatchTable$3(DosInt21Handler.java:71)
        at spice86.emulator.callback.IndexBasedDispatcher.run(IndexBasedDispatcher.java:21)
        at spice86.emulator.interrupthandlers.dos.DosInt21Handler.run(DosInt21Handler.java:96)
        at spice86.emulator.callback.IndexBasedDispatcher.run(IndexBasedDispatcher.java:21)
        at spice86.emulator.cpu.Cpu.callback(Cpu.java:1793)
        at spice86.emulator.cpu.Cpu.grp4(Cpu.java:1503)
        at spice86.emulator.cpu.Cpu.execOpcode(Cpu.java:1135)
        at spice86.emulator.cpu.Cpu.executeNextInstruction(Cpu.java:200)
        at spice86.emulator.machine.Machine.runLoop(Machine.java:300)
        at spice86.emulator.machine.Machine.run(Machine.java:290)
        at spice86.emulator.ProgramExecutor.run(ProgramExecutor.java:51)
        at spice86.ui.Spice86Application.lambda$startMachine$3(Spice86Application.java:55)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)

I have tried using both Oracle Java and OpenJDK, both version 17.
I will admit, I am not the most knowledgeable on Java, and this could be an issue caused by me.
My process was:

  1. Download the package from packages
  2. Run the jar as described in README.md

OS:
Linux 5.10.79-1-MANJARO

Support for savestates

Savestates would be very helpful to easily and reliably reproduce and investigate / debug a program.
Memory, CPU state, and devices states would need to have save / restore capabilities for this to work.

Pause button for GDB

In client mode, GDB does not send anything to the server when the user presses ctrl+C to suspend execution.
A workaround could be to assign a key like "Pause Break" on the keyboard to break the execution when a GDB client is connected.

Int was called but vector was not initialized for vectorNumber

I'm trying to run Colonization in spice86. When I start it, it outputs the following and then exits:

[Executor] spice86.emulator.ProgramExecutor - Loading file VICEROY.EXE with loader class spice86.emulator.loadablefile.dos.exe.ExeLoader
[Executor] s.e.l.ExecutableFileLoader - Program entry point is 0x12FA:0x71D
[Executor] s.e.i.dos.DosInt21Handler - GET DOS VERSION
[Executor] s.e.i.dos.DosInt21Handler - GET INTERRUPT VECTOR INT 0x67, got 0x0:0x0
[Executor] s.e.i.dos.DosInt21Handler - GET DOS VERSION
[Executor] spice86.ui.Spice86Application - An error occurred during execution
spice86.emulator.errors.UnhandledOperationException: An error occurred while machine was in this state: cycles=204 CS:IP=0x12FA:0x4D16/0x1000:0x7CB6 AX=0x4300 BX=0xFF00 CX=0x0 DX=0x0 SI=0x4FCF DI=0x0 BP=0x0 SP=0x407E SS=0x27D2 DS=0x12FA ES=0x1DD FS=0x0 GS=0x0 flags=0x7202 (  I      ).
Error is: Int was called but vector was not initialized for vectorNumber=0x2F
        at spice86.emulator.cpu.Cpu.interrupt(Cpu.java:1747)
        at spice86.emulator.cpu.Cpu.execOpcode(Cpu.java:927)
        at spice86.emulator.cpu.Cpu.executeNextInstruction(Cpu.java:199)
        at spice86.emulator.machine.Machine.runLoop(Machine.java:307)
        at spice86.emulator.machine.Machine.run(Machine.java:291)

Is this something that can be fixed, or is this executable just not supported? Thanks for an awesome tool!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.