Git Product home page Git Product logo

use's Introduction

Hello!

My name is Andrew and welcome to my page.

line

question mark About me

๐ŸŽ“ I've got a bachelor's degree from the Czech Technical University in Prague. Check out my thesis and an associated project.

๐Ÿ“š Currently I'm studying master's (Computer Science) at the same university.

๐Ÿ’ผ I had an internship at Microsoft and IBM, worked as a React web developer, full-stack developer, Office lecturer, a teacher of electronics-related tutorials at the Czech Technical University, and more. Check out my LinkedIn.

โš™๏ธ I love computer hardware development, embedded systems, firmware development, and IoT-related stuff. I'm a big fan of RISC-V computer architecture.

๐Ÿ› ๏ธ Currently I work at Tropic Square as a Digital Design Engineer. In my spare time, I work on a research project focused on the practical usage of Linux-based operating systems on the RISC-V platform. I developed a custom RV32I microarchitecture in Verilog. I also work on some other projects, check out my repositories ๐Ÿ˜„.

phone How to reach me

Connect with me on LinkedIn or send me an e-mail. Contacts are listed on my profile's left sidebar.

How to thank me

Do you like any software I created? You can buy me a coffee, so I can continue to develop more free cool stuff ๐Ÿ˜„.

Buy Me A Coffee

use's People

Contributors

andreondra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

use's Issues

How will the Components be uniquely identified?

  • pointer

  • name

  • type + name?

  • only name, it is up to the system developer to ensure unique name for every component even when there are components of a same type
    Name can't be empty -- add warning to docs. The method should be precisely documented.

Add file dialog to memory

Options:

Bad options:

How should the debugger work

Every component could either:

  • do the rendering itself (bad, it makes the component GUI library-dependent)
  • export an Elements package (separates the GUI and serialization),
  • export serialized data and pass them to the state-saving class (allowing to step back in time and to save the state to the file) and a GUI rendering class (this does not allow to specify formatting in the Component).
    • there could be formatting support added by exporting a GUI config
    • what about the speed of this solution?

Add keybinding support

System will export required keyboard keys with default values and emulator will provide a settings menu to configure keybindings.

How to handle integration tests

  1. run binary manually with requested system and test ROM
    a. unable to use google tests
  2. append test files to the sources
  3. copy test files to the working directory and load them in the sources

Create documentation

Overall, the documentation will consist of:

  • auto-generated docs - this tutorial
  • tutorials for creating systems and components - issue #38
  • bachelor thesis (only in Czech)

Mapper/2C02: Change VRAM behaviour

Normally, the cartridge can choose whether to use 2C02's built-in VRAM or provide its own. When using 2C02's VRAM, the cart can choose the mirroring type by connecting the CIRAM-A10 to A10 for vertical mirroring or A11 or horizontal mirroring.

Emulating the original implementation will require additional Cart<->2C02 communication (getting the mapper type or some connector) or lowering the level of abstraction for PPU bus addresing.

The better idea is to leave all the VRAM handling to cart - either the cart will always provide VRAM (better, even if it ignores real implementation, behavior stays the same) or the 2C02 can provide additional CIRAM interface (probably uneccessary overhead).

Initialization considerations

  • During initialization memory should not be wiped (CPU initializes memory).
  • On cart load CPU should be initialized (PC is loaded from reset vector).

Add overlapping memory mapped peripheral support

The memory mapped peripheral is obviously already supported, however, the address spaces have to be separated, otherwise the Bus will write to all devices responding to the same address.

If the peripheral overlaps a memory, for a write access it does not matter. For the read access, there should be either:

  • priorities, or other arbitration mechanism,
  • possibility to ignore specific addresses in the component (bad),
  • separated memories (bad if there is a lot of small peripherals).

How to simplify port read function

  • Add a new function readWithStatus() which will be used by Bus and similar classes, while the simple uint32_t read(...) can be used by other components.
  • Leave it as it is and in every component add a handler, that can be also responsible for using correct types (busRead(uint16_address) etc.)

Variable bus widths

How to generalize a data bus?

  • use templates
  • use a data type of a biggest possible size
  • return a variant

Single type for all devices (uint32_t) will waste a few bytes for every transaction but it will be faster and more flexible than using templated Bus and then doing checks. The biggest problem will be when using Component interface's getBusInterface - this function could return various interfaces.

Add 6502 unit tests

Use K. Dormann's tests.

Test config:

  • zero_page = $0
  • load_data_direct = 1

Assembler config:

  • listing on
  • as65 binary output

Bus - should inherit from Component

If the bus does not inherit from the Component class, there will need to be a separate handling mechanism for the buses in the node editor.

If it does, we will need to implement a connect()/getConnection() for every Component - but that is what is essentially done in the first scenario.

Add dynamic system (node editor)

There should be possibility to discover "steppable" components. In static systems, doSteps and doFrames can be implemented manually, but in a case of dynamic systems there should be autodiscover features.

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.