ghidra-tlcs900h
Gymnasium
ghidra-tlcs900h | Gymnasium | |
---|---|---|
1 | 12 | |
9 | 5,859 | |
- | 6.8% | |
7.3 | 9.3 | |
4 months ago | 8 days ago | |
Java | Python | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ghidra-tlcs900h
-
Show HN: Ghidra Plays Mario
I've been exploring new ways of testing Ghidra processor modules. In this repo, I was able to emulate NES ROMs in Ghidra to test its 6502 specification, which resulted in finding and fixing some bugs.
Context: Ghidra is used for reverse engineering binary executables, complementing the usual disassembly view with function decompilation. Each supported architecture has a SLEIGH specification, which provides semantics for parsing and emulating instructions, not unlike the dispatch handlers you would find in interpreters written for console emulators.
Emulator devs have long had extensive test ROMs for popular consoles, but Ghidra only provides CPU emulation, so it can't run them without additional setup. What I did here is bridge the gap: by modifying a console emulator to instead delegate CPU execution to Ghidra, we can now use these same ROMs to validate Ghidra processor modules.
Previously [1], I went with a trace log diffing approach, where any hardware specific behaviour that affected CPU execution was also encoded in trace logs. However, it required writing hardware specific logic, and is still not complete. With the delegation approach, most of this effort is avoided, since it's easier to hook and delegate memory accesses.
I plan on continuing research in this space and generalizing my approaches, since it shows potencial for complementing existing test coverage provided by pcodetest. If a simple architecture like 6502 had a few bugs, who knows how many are in more complex architectures! I wasn't able to find similar attempts (outside of diffing and coverage analysis from trace logs), please let me know if I missed something, and any suggestions for improvements.
[1]: https://github.com/nevesnunes/ghidra-tlcs900h#emulation
Gymnasium
-
NASA JPL Open Source Rover That Runs ROS 2
"Show HN: Ghidra Plays Mario" (2023) https://news.ycombinator.com/item?id=37475761 :
[RL, MuZero reduxxxx ]
> Farama-Foundation/Gymnasium is a fork of OpenAI/gym and it has support for additional Environments like MuJoCo: https://github.com/Farama-Foundation/Gymnasium#environments
> Farama-Foundatiom/MO-Gymnasiun: "Multi-objective Gymnasium environments for reinforcement learning": https://github.com/Farama-Foundation/MO-Gymnasium
-
Show HN: Ghidra Plays Mario
https://github.com/Farama-Foundation/Gymnasium#environments
Farama-Foundatiom/MO-Gymnasiun:
-
Are there any AI projects that plays a game for you and learns?
https://github.com/Farama-Foundation/Gymnasium - A framework Python library to build and train your own AI to play games
-
Unstable SAC training of sparse-reward task
The only change in the environment from the one here is the reward function which is given its return value using the following code snippet (replacing lines 648-672 in the above url):
-
Any resources on experiments simulated environments?
This may be useful: https://github.com/Farama-Foundation/Gymnasium
-
What's the most challenging Gym environment?
Here are all the environments. So for example, if instead of Hopper-v2 you want the acrobat environment from classic control you can write: env = gym.make('Acrobot-v1')
-
Gymnasium 0.28 is now released
This release also includes a large number of documentation updates, minor bug fixes, and other minor improvements; the full release notes are available here if you’d like to learn more: https://github.com/Farama-Foundation/Gymnasium/releases/tag/v0.28.0.
-
TransformerXL + PPO Baseline + MemoryGym
Thanks! It really depends on the task that you want to implement. But in general, sticking to the standard gymnasium API is important. If you want to implement a 2D environment then PyGame is promising. If it's more like a game, check out Unity ML-Agents or Godot RL Agents. Anything simpler can also be just pure python code. You also need to carefully design your observation space, action space and reward function. My advice is to explore design choices of related environments.
- Gymnasium 0.27 - the first new version since Gymnasium was announced - is now released. It has almost no breaking changes.
-
[N] Gymnasium 0.27 - the first new version since Gymnasium was announced - is now released. It has almost no breaking changes.
You can read the release notes here: https://github.com/Farama-Foundation/Gymnasium/releases/tag/v0.27.0. You can upgrade from 0.26 without any changes unless you're doing something very uncommon; this is how releases will generally be going forward.
What are some alternatives?
ghidra - Ghidra is a software reverse engineering (SRE) framework
flake8 - The official GitHub mirror of https://gitlab.com/pycqa/flake8
retro - Retro Games in Gym
Flake8-pyproject - Flake8 plug-in loading the configuration from pyproject.toml
Muzero-unplugged - Pytorch Implementation of MuZero Unplugged for gym environment. This algorithm is capable of supporting a wide range of action and observation spaces, including both discrete and continuous variations.
ruff - An extremely fast Python linter and code formatter, written in Rust.
6502_65C02_functional_tests - Tests for all valid opcodes of the 6502 and 65C02 processor
agents - TF-Agents: A reliable, scalable and easy to use TensorFlow library for Contextual Bandits and Reinforcement Learning.
MO-Gymnasium - Multi-objective Gymnasium environments for reinforcement learning
Visual Studio Code - Visual Studio Code
ghidra-plays-mario - Playing NES ROMs with Ghidra's PCode Emulator
episodic-transformer-memory-ppo - Clean baseline implementation of PPO using an episodic TransformerXL memory