rubyboy 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +7 -15
- data/exe/rubyboy +7 -0
- data/lib/rubyboy/bus.rb +1 -8
- data/lib/rubyboy/cpu.rb +1016 -1501
- data/lib/rubyboy/interrupt.rb +12 -4
- data/lib/rubyboy/joypad.rb +2 -2
- data/lib/rubyboy/operand/direct16.rb +13 -0
- data/lib/rubyboy/operand/direct8.rb +13 -0
- data/lib/rubyboy/operand/hl_dec.rb +11 -0
- data/lib/rubyboy/operand/hl_inc.rb +11 -0
- data/lib/rubyboy/operand/immediate16.rb +13 -0
- data/lib/rubyboy/operand/immediate8.rb +13 -0
- data/lib/rubyboy/operand/indirect.rb +13 -0
- data/lib/rubyboy/operand/register16.rb +13 -0
- data/lib/rubyboy/operand/register8.rb +13 -0
- data/lib/rubyboy/operand.rb +12 -0
- data/lib/rubyboy/ppu.rb +53 -24
- data/lib/rubyboy/register.rb +0 -2
- data/lib/rubyboy/registers.rb +80 -0
- data/lib/rubyboy/rom.rb +1 -30
- data/lib/rubyboy/timer.rb +3 -4
- data/lib/rubyboy/version.rb +1 -1
- data/lib/rubyboy.rb +8 -9
- metadata +16 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08c5c68c0375707dcc850da2776897f0fd9d5d185b917f50215dcea7bbfcd70c'
|
4
|
+
data.tar.gz: 23e385a235a8179006ac286b31e737c205854eb8564204d220fc7a867c637ac4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cf0e5a59a76982a5bbff640d555a0f240ff980b4706a943cb8566cc3d4974b33dfdb2502499d457c66a2165bd5ace339bf68e69cb762f7ee9b4b9a5ba54186d
|
7
|
+
data.tar.gz: 9f96dc6441947295ec6fbc28e55dd9066de2a82de3ec1dc0c6ea82cac5aa956024bc0f3e8f3cc2038aef3b7def0dc363404d8dbec8224bbb3d70cd6ca8f3e3d2
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,34 +1,26 @@
|
|
1
1
|
# Rubyboy
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rubyboy`. To experiment with that code, run `bin/console` for an interactive prompt.
|
3
|
+
A Game Boy emulator written in Ruby
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
9
|
-
|
7
|
+
This project requires Ruby 3.2.0 or higher.
|
10
8
|
|
11
9
|
Install the gem and add to the application's Gemfile by executing:
|
12
10
|
|
13
|
-
$ bundle add
|
11
|
+
$ bundle add rubyboy
|
14
12
|
|
15
13
|
If bundler is not being used to manage dependencies, install the gem by executing:
|
16
14
|
|
17
|
-
$ gem install
|
15
|
+
$ gem install rubyboy
|
18
16
|
|
19
17
|
## Usage
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
## Development
|
24
|
-
|
25
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
26
|
-
|
27
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
19
|
+
$ rubyboy <rom_path>
|
28
20
|
|
29
21
|
## Contributing
|
30
22
|
|
31
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
23
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/sacckey/rubyboy. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/sacckey/rubyboy/blob/main/CODE_OF_CONDUCT.md).
|
32
24
|
|
33
25
|
## License
|
34
26
|
|
@@ -36,4 +28,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
36
28
|
|
37
29
|
## Code of Conduct
|
38
30
|
|
39
|
-
Everyone interacting in the Rubyboy project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
31
|
+
Everyone interacting in the Rubyboy project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/sacckey/rubyboy/blob/main/CODE_OF_CONDUCT.md).
|
data/exe/rubyboy
ADDED
data/lib/rubyboy/bus.rb
CHANGED
@@ -1,25 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'cartridge/factory'
|
4
|
-
require_relative 'interrupt'
|
5
|
-
require_relative 'timer'
|
6
4
|
|
7
5
|
module Rubyboy
|
8
6
|
class Bus
|
9
|
-
attr_accessor :ppu, :rom, :interrupt
|
10
|
-
|
11
7
|
def initialize(ppu, rom, timer, interrupt, joypad)
|
12
8
|
@ppu = ppu
|
13
9
|
@rom = rom
|
14
10
|
@ram = Ram.new
|
15
|
-
@mbc = Cartridge::Factory.create(rom, @ram)
|
11
|
+
@mbc = Cartridge::Factory.create(@rom, @ram)
|
16
12
|
@joypad = joypad
|
17
|
-
|
18
13
|
@interrupt = interrupt
|
19
14
|
@timer = timer
|
20
15
|
|
21
|
-
@oam = Array.new(0xa0, 0)
|
22
|
-
|
23
16
|
@tmp = {}
|
24
17
|
end
|
25
18
|
|