Giter VIP home page Giter VIP logo

yakc's Issues

Fix Digger

  • sound is broken
  • diamond color scrolling is broken (how does this even work?)

Short freeze when switching from KC85/4 to Z1013.01?

Repro: hang around in the KC85/4 emulation for several minutes, than switch to Z1013, this can freeze the emulator for several seconds. Is there something wrong with the min/max-cycle count computation, so that the z1013 runs a lot of cycles in the first frame to 'catch up'? Something not reset on poweron?

Freeze when debugging Z1013 system ROM

Reminder for more investigation: I just managed to freeze the browser version by debugging the z1013 system rom: set breakpoint at F000, reboot, step from there, at some point hit the break checkbox to continue execution, and at that point the browser froze. Most likely some infinite loop triggered.

CPC: Reason for Chase HQ and Cybernoid found

Ok, here's the reason why this was broken, then worked and then was broken again:

It's the cassette read trap here:

z80_set_trap(&board.z80, 1, this->casread_trap);

Problem is: cannot simply set and clear the trap from inside the CPU callback... this will not be noticed by the CPU since the CPU struct is overwritten... need to implement a more robust solution since the same problem can also happen on other systems (one solution would be a separate 'bool z80_check_trap(int trap_id)' callback which would only be called for verification when the 16-bit address matches.

Implement better memory mapping

Allow several layers of prioritized memory mappings, where lower priority mapping can fill holes in the memory layout.
This is necessary for the 64KB expansion modules, the 64 KB are mapped continuously from a start address and are accessible through the bank windows that are not mapped by higher-priority memory banks.

Implement device daisy-chain

For proper interrupts from the PIO and CTC, some sort of daisy chain management should be implemented which takes care of interrupt priorities etc...

Implement blinking foreground color

  • the timing is controlled by a CTC channel
  • there's a 'blinking' bit in PIO B
  • open questions:
    • is the blinking bit controlled by the CTC interrupt, or is this a global override?

Rewrite the memory map window

The memory map window needs to be fixed for the KC85/4 memory banks, it would also be nice to directly click on a memory bank and see/edit its content in a memory editor window.

"Freeze" in KC85/3 version of Digger

Just got a freeze after changing levels, the main loop would get stuck waiting for the value in 5F9. This is written to by the CTC2 interrupt and seems to be the pause for moving the player, which probably wasn't triggered anymore. 2 recent changes come to mind:

  • each CTC channel now has its on embedded z80int object, making the daisy chain more complex
  • interrupt request changes while interrupts are disabled, the interrupt request will remain pending until the CPU can handle it

Fix keyboard input

There are several issues with keyboard input:

  • the keys =-; don't work for Z9001 in the browser (is this a general 32-bit issue, or just in browser, and are there differences between browsers? -> it looks like the key_mask is deleted too early)
  • the last_ascii and 'AnyKeyPressed' hack in Main.cc, this leads for instance to key-repeat when Shift is keeping pressed, but was necessary to make games work
  • sometimes the key repeat gets stuck without pressing any keyboard keys
  • the yakc class needs a proper key-input method, the current method up in Main.cc is hacky and must be repeated in every other project which uses the emulator

I think a clean rewrite of the keyboard input code would make sense.

Linux Mint 17 32bit compile error

First, > ./fips gen works well.
Then > ./fips make yakcapp give errors:
> ./fips make yakcapp === dependency: 'oryol': dir '/home/takis/tmp/oryol' exists === dependency: 'fips-unittestpp': dir '/home/takis/tmp/fips-unittestpp' exists === dependency: 'fips-remotery': dir '/home/takis/tmp/fips-remotery' exists === dependency: 'fips-glm': dir '/home/takis/tmp/fips-glm' exists === dependency: 'fips-glfw': dir '/home/takis/tmp/fips-glfw' exists === dependency: 'gliml': dir '/home/takis/tmp/gliml' exists === dependency: 'fips-zlib': dir '/home/takis/tmp/fips-zlib' exists === dependency: 'fips-vld': dir '/home/takis/tmp/fips-vld' exists === dependency: 'fips-libcurl': dir '/home/takis/tmp/fips-libcurl' exists === dependency: 'fips-soloud': dir '/home/takis/tmp/fips-soloud' exists === dependency: 'oryol-imgui': dir '/home/takis/tmp/oryol-imgui' exists === dependency: 'fips-imgui': dir '/home/takis/tmp/fips-imgui' exists === building: linux-make-debug make -j3 yakcapp Scanning dependencies of target glfw3 Scanning dependencies of target Core Scanning dependencies of target ALL_GENERATE [ 1%] Building CXX object oryol_Core/CMakeFiles/Core.dir/App.cc.o [ 1%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/context.c.o Traceback (most recent call last): File "/home/takis/tmp/yakc-master/.fips-gen.py", line 56, in <module> processFile(attrs) File "/home/takis/tmp/yakc-master/.fips-gen.py", line 47, in processFile module.generate(input, out_src, out_hdr, args) File "/home/takis/tmp/oryol/fips-generators/Shader.py", line 1870, in generate shaderLibrary.validateShadersGLSL() File "/home/takis/tmp/oryol/fips-generators/Shader.py", line 1567, in validateShadersGLSL glslcompiler.validate(srcLines, 'vs', slVersion) File "/home/takis/tmp/oryol/fips-generators/util/glslcompiler.py", line 102, in validate output = callValidator(cmd) File "/home/takis/tmp/oryol/fips-generators/util/glslcompiler.py", line 38, in callValidator child = subprocess.Popen(cmd, stdout=subprocess.PIPE) File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child raise child_exception OSError: [Errno 8] Exec format error make[3]: *** [oryol-imgui_IMUI/CMakeFiles/ALL_GENERATE] Error 1 make[2]: *** [oryol-imgui_IMUI/CMakeFiles/ALL_GENERATE.dir/all] Error 2 make[2]: *** Waiting for unfinished jobs.... [ 2%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/init.c.o [ 2%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/input.c.o [ 3%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/monitor.c.o [ 3%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/vulkan.c.o [ 3%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Args.cc.o [ 4%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/window.c.o [ 4%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/x11_init.c.o [ 5%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/x11_monitor.c.o [ 6%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Core.cc.o [ 6%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/x11_window.c.o [ 6%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/xkb_unicode.c.o [ 6%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Log.cc.o [ 7%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/linux_joystick.c.o [ 7%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Logger.cc.o [ 7%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/posix_time.c.o [ 8%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/posix_tls.c.o [ 9%] [ 9%] Building CXX object oryol_Core/CMakeFiles/Core.dir/StackTrace.cc.o Building CXX object oryol_Core/CMakeFiles/Core.dir/RunLoop.cc.o [ 9%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/glx_context.c.o [ 10%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Memory/Memory.cc.o [ 11%] Building C object fips-glfw_glfw3/CMakeFiles/glfw3.dir/glfw/src/egl_context.c.o [ 11%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/String.cc.o Linking C static library libglfw3.a [ 11%] Built target glfw3 [ 12%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/StringAtom.cc.o [ 12%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/StringBuilder.cc.o [ 13%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/StringConverter.cc.o [ 13%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/WideString.cc.o [ 13%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/stringAtomBuffer.cc.o [ 14%] Building CXX object oryol_Core/CMakeFiles/Core.dir/String/stringAtomTable.cc.o [ 14%] Building C object oryol_Core/CMakeFiles/Core.dir/String/ConvertUTF.c.o [ 15%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Threading/ThreadLocalData.cc.o [ 15%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Time/Clock.cc.o [ 16%] Building CXX object oryol_Core/CMakeFiles/Core.dir/Trace.cc.o Linking CXX static library libCore.a [ 16%] Built target Core make[1]: *** [src/yakcapp/CMakeFiles/yakcapp.dir/rule] Error 2 make: *** [yakcapp] Error 2 [ERROR] Failed to build config 'linux-make-debug' of project 'yakc-master'

Emulator will get stuck if audio isn't triggered

...e.g. on browsers without WebGL the emulator seems to be frozen (even though the UI works) because the audio cycle count isn't advanced, this will cause the CPU to stop because it thinks it is running to far ahead of audio!

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.