badline 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +167 -0
  3. data/CLAUDE.md +217 -0
  4. data/CODE_OF_CONDUCT.md +92 -0
  5. data/CONTRIBUTING.md +51 -0
  6. data/README.md +224 -31
  7. data/doc/pinned-behaviour.md +1117 -0
  8. data/exe/badline +22 -2
  9. data/exe/badline-sid +34 -0
  10. data/lib/badline/address_bus.rb +88 -23
  11. data/lib/badline/audio/aiff.rb +36 -0
  12. data/lib/badline/audio/bare_player.rb +129 -0
  13. data/lib/badline/audio/cli.rb +133 -0
  14. data/lib/badline/audio/console.rb +75 -0
  15. data/lib/badline/audio/jukebox.rb +82 -0
  16. data/lib/badline/audio/machine_player.rb +57 -0
  17. data/lib/badline/audio/options.rb +137 -0
  18. data/lib/badline/audio/pcm_writer.rb +57 -0
  19. data/lib/badline/audio/playback.rb +108 -0
  20. data/lib/badline/audio/renderer.rb +85 -0
  21. data/lib/badline/audio/sdl_sink.rb +102 -0
  22. data/lib/badline/audio/wav.rb +23 -0
  23. data/lib/badline/audio.rb +14 -0
  24. data/lib/badline/cartridge/action_replay.rb +111 -0
  25. data/lib/badline/cartridge/atomic_power.rb +24 -0
  26. data/lib/badline/cartridge/bank.rb +81 -0
  27. data/lib/badline/cartridge/comal80.rb +48 -0
  28. data/lib/badline/cartridge/dinamic.rb +34 -0
  29. data/lib/badline/cartridge/easy_flash.rb +122 -0
  30. data/lib/badline/cartridge/epyx_fastload.rb +71 -0
  31. data/lib/badline/cartridge/final_cartridge3.rb +77 -0
  32. data/lib/badline/cartridge/flash.rb +265 -0
  33. data/lib/badline/cartridge/freezer.rb +31 -0
  34. data/lib/badline/cartridge/fun_play.rb +38 -0
  35. data/lib/badline/cartridge/g_mod2.rb +62 -0
  36. data/lib/badline/cartridge/game_system.rb +40 -0
  37. data/lib/badline/cartridge/kcs_power.rb +72 -0
  38. data/lib/badline/cartridge/mach5.rb +34 -0
  39. data/lib/badline/cartridge/magic_desk.rb +6 -3
  40. data/lib/badline/cartridge/ocean.rb +11 -12
  41. data/lib/badline/cartridge/pagefox.rb +56 -0
  42. data/lib/badline/cartridge/retro_replay.rb +276 -0
  43. data/lib/badline/cartridge/rex_utility.rb +33 -0
  44. data/lib/badline/cartridge/rgcd.rb +48 -0
  45. data/lib/badline/cartridge/simons_basic.rb +40 -0
  46. data/lib/badline/cartridge/standard.rb +3 -19
  47. data/lib/badline/cartridge/super_games.rb +36 -0
  48. data/lib/badline/cartridge/westermann.rb +34 -0
  49. data/lib/badline/cartridge/zaxxon.rb +50 -0
  50. data/lib/badline/cartridge.rb +131 -15
  51. data/lib/badline/cia/interrupt_register.rb +88 -0
  52. data/lib/badline/cia/serial.rb +219 -0
  53. data/lib/badline/cia/timer.rb +43 -31
  54. data/lib/badline/cia.rb +109 -74
  55. data/lib/badline/color_memory.rb +14 -5
  56. data/lib/badline/computer.rb +68 -8
  57. data/lib/badline/control_ports.rb +54 -9
  58. data/lib/badline/cpu/addressing.rb +131 -0
  59. data/lib/badline/cpu/microcode.rb +171 -0
  60. data/lib/badline/cpu/operations.rb +88 -0
  61. data/lib/badline/cpu/stack_operations.rb +82 -0
  62. data/lib/badline/cpu.rb +108 -167
  63. data/lib/badline/cycleable.rb +3 -0
  64. data/lib/badline/datasette.rb +81 -0
  65. data/lib/badline/debug_register.rb +28 -0
  66. data/lib/badline/gui/application.rb +79 -18
  67. data/lib/badline/gui/gamepads.rb +97 -0
  68. data/lib/badline/gui/joy_map.rb +15 -7
  69. data/lib/badline/gui.rb +1 -0
  70. data/lib/badline/input/mouse1351.rb +41 -0
  71. data/lib/badline/input/paddles.rb +36 -0
  72. data/lib/badline/input.rb +4 -0
  73. data/lib/badline/instruction_set/arithmetic.rb +16 -21
  74. data/lib/badline/instruction_set/bitwise.rb +17 -22
  75. data/lib/badline/instruction_set/branch.rb +20 -19
  76. data/lib/badline/instruction_set/flag.rb +7 -7
  77. data/lib/badline/instruction_set/illegal.rb +14 -22
  78. data/lib/badline/instruction_set/inc_dec.rb +8 -10
  79. data/lib/badline/instruction_set/stack.rb +5 -57
  80. data/lib/badline/instruction_set/transfer.rb +9 -9
  81. data/lib/badline/instruction_set.rb +9 -31
  82. data/lib/badline/interrupts.rb +104 -0
  83. data/lib/badline/joystick.rb +9 -9
  84. data/lib/badline/kernal_trap/channel.rb +33 -0
  85. data/lib/badline/kernal_trap/drive.rb +239 -0
  86. data/lib/badline/kernal_trap/file.rb +4 -24
  87. data/lib/badline/kernal_trap/load.rb +2 -2
  88. data/lib/badline/kernal_trap/routine.rb +34 -0
  89. data/lib/badline/kernal_trap/save.rb +1 -1
  90. data/lib/badline/kernal_trap/serial.rb +139 -0
  91. data/lib/badline/kernal_trap.rb +4 -0
  92. data/lib/badline/keyboard.rb +40 -16
  93. data/lib/badline/media.rb +48 -10
  94. data/lib/badline/roms/eapi/LICENSE.md +15 -0
  95. data/lib/badline/roms/eapi/README +41 -0
  96. data/lib/badline/roms/eapi/eapi-am29f040-14 +0 -0
  97. data/lib/badline/sid/decimator.rb +46 -0
  98. data/lib/badline/sid/envelope.rb +232 -0
  99. data/lib/badline/sid/filter.rb +213 -0
  100. data/lib/badline/sid/voice.rb +61 -0
  101. data/lib/badline/sid/waveform/combined.rb +126 -0
  102. data/lib/badline/sid/waveform/fast_forward.rb +105 -0
  103. data/lib/badline/sid/waveform/noise_writeback.rb +82 -0
  104. data/lib/badline/sid/waveform.rb +289 -0
  105. data/lib/badline/sid.rb +274 -7
  106. data/lib/badline/status.rb +32 -27
  107. data/lib/badline/storage/crt_file.rb +18 -2
  108. data/lib/badline/storage/disk_image.rb +52 -5
  109. data/lib/badline/storage/host_directory.rb +18 -4
  110. data/lib/badline/storage/sid_file.rb +274 -0
  111. data/lib/badline/storage/song_lengths.rb +65 -0
  112. data/lib/badline/storage/t64.rb +67 -0
  113. data/lib/badline/storage/tap.rb +68 -0
  114. data/lib/badline/storage.rb +19 -0
  115. data/lib/badline/time_of_day.rb +105 -52
  116. data/lib/badline/version.rb +1 -1
  117. data/lib/badline/vic/bank.rb +14 -6
  118. data/lib/badline/vic/border_mask.rb +76 -0
  119. data/lib/badline/vic/collisions.rb +104 -0
  120. data/lib/badline/vic/color_patches.rb +33 -0
  121. data/lib/badline/vic/display_state.rb +92 -29
  122. data/lib/badline/vic/graphics_mode.rb +78 -53
  123. data/lib/badline/vic/graphics_shifter.rb +140 -0
  124. data/lib/badline/vic/register_log.rb +63 -0
  125. data/lib/badline/vic/registers.rb +3 -0
  126. data/lib/badline/vic/sequencer.rb +163 -137
  127. data/lib/badline/vic/sequencer_output.rb +116 -0
  128. data/lib/badline/vic/sprite/internal_bus.rb +49 -0
  129. data/lib/badline/vic/sprite/shifter.rb +129 -0
  130. data/lib/badline/vic/sprite.rb +275 -65
  131. data/lib/badline/vic/sprites.rb +220 -58
  132. data/lib/badline/vic.rb +373 -49
  133. data/lib/badline.rb +5 -0
  134. data/vendor/.gitkeep +0 -0
  135. metadata +103 -4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: badline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
@@ -9,6 +9,20 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: fiddle
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.1'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: ruby-sdl2
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -24,41 +38,97 @@ dependencies:
24
38
  - !ruby/object:Gem::Version
25
39
  version: '0.3'
26
40
  description: Badline is a Commodore 64 emulator written in Ruby, implementing cycle-accurate
27
- timing and hardware behavior. Supports PRG/P00 programs, D64/D71/D81 disk images
28
- and CRT cartridges.
41
+ timing and hardware behavior. Supports PRG/P00 programs, D64/D71/D81 disk images,
42
+ T64 archives, TAP tapes, CRT cartridges, SID tunes and host directories mounted
43
+ as a drive.
29
44
  email:
30
45
  - inge@elektronaut.no
31
46
  executables:
32
47
  - badline
48
+ - badline-sid
33
49
  extensions: []
34
50
  extra_rdoc_files: []
35
51
  files:
52
+ - CHANGELOG.md
53
+ - CLAUDE.md
54
+ - CODE_OF_CONDUCT.md
55
+ - CONTRIBUTING.md
36
56
  - MIT-LICENSE
37
57
  - README.md
58
+ - doc/pinned-behaviour.md
38
59
  - exe/badline
60
+ - exe/badline-sid
39
61
  - lib/badline.rb
40
62
  - lib/badline/address_bus.rb
41
63
  - lib/badline/addressable.rb
64
+ - lib/badline/audio.rb
65
+ - lib/badline/audio/aiff.rb
66
+ - lib/badline/audio/bare_player.rb
67
+ - lib/badline/audio/cli.rb
68
+ - lib/badline/audio/console.rb
69
+ - lib/badline/audio/jukebox.rb
70
+ - lib/badline/audio/machine_player.rb
71
+ - lib/badline/audio/options.rb
72
+ - lib/badline/audio/pcm_writer.rb
73
+ - lib/badline/audio/playback.rb
74
+ - lib/badline/audio/renderer.rb
75
+ - lib/badline/audio/sdl_sink.rb
76
+ - lib/badline/audio/wav.rb
42
77
  - lib/badline/cartridge.rb
78
+ - lib/badline/cartridge/action_replay.rb
79
+ - lib/badline/cartridge/atomic_power.rb
80
+ - lib/badline/cartridge/bank.rb
81
+ - lib/badline/cartridge/comal80.rb
82
+ - lib/badline/cartridge/dinamic.rb
83
+ - lib/badline/cartridge/easy_flash.rb
84
+ - lib/badline/cartridge/epyx_fastload.rb
85
+ - lib/badline/cartridge/final_cartridge3.rb
86
+ - lib/badline/cartridge/flash.rb
87
+ - lib/badline/cartridge/freezer.rb
88
+ - lib/badline/cartridge/fun_play.rb
89
+ - lib/badline/cartridge/g_mod2.rb
90
+ - lib/badline/cartridge/game_system.rb
91
+ - lib/badline/cartridge/kcs_power.rb
92
+ - lib/badline/cartridge/mach5.rb
43
93
  - lib/badline/cartridge/magic_desk.rb
44
94
  - lib/badline/cartridge/ocean.rb
95
+ - lib/badline/cartridge/pagefox.rb
96
+ - lib/badline/cartridge/retro_replay.rb
97
+ - lib/badline/cartridge/rex_utility.rb
98
+ - lib/badline/cartridge/rgcd.rb
99
+ - lib/badline/cartridge/simons_basic.rb
45
100
  - lib/badline/cartridge/standard.rb
101
+ - lib/badline/cartridge/super_games.rb
102
+ - lib/badline/cartridge/westermann.rb
103
+ - lib/badline/cartridge/zaxxon.rb
46
104
  - lib/badline/chrout_trap.rb
47
105
  - lib/badline/cia.rb
106
+ - lib/badline/cia/interrupt_register.rb
107
+ - lib/badline/cia/serial.rb
48
108
  - lib/badline/cia/timer.rb
49
109
  - lib/badline/color_memory.rb
50
110
  - lib/badline/computer.rb
51
111
  - lib/badline/control_ports.rb
52
112
  - lib/badline/cpu.rb
113
+ - lib/badline/cpu/addressing.rb
114
+ - lib/badline/cpu/microcode.rb
115
+ - lib/badline/cpu/operations.rb
116
+ - lib/badline/cpu/stack_operations.rb
53
117
  - lib/badline/cycleable.rb
118
+ - lib/badline/datasette.rb
119
+ - lib/badline/debug_register.rb
54
120
  - lib/badline/gui.rb
55
121
  - lib/badline/gui/application.rb
122
+ - lib/badline/gui/gamepads.rb
56
123
  - lib/badline/gui/joy_map.rb
57
124
  - lib/badline/gui/key_map.rb
58
125
  - lib/badline/gui/palette.rb
59
126
  - lib/badline/gui/pane.rb
60
127
  - lib/badline/gui/screen_pane.rb
61
128
  - lib/badline/gui/window.rb
129
+ - lib/badline/input.rb
130
+ - lib/badline/input/mouse1351.rb
131
+ - lib/badline/input/paddles.rb
62
132
  - lib/badline/instruction.rb
63
133
  - lib/badline/instruction_set.rb
64
134
  - lib/badline/instruction_set/arithmetic.rb
@@ -70,11 +140,16 @@ files:
70
140
  - lib/badline/instruction_set/stack.rb
71
141
  - lib/badline/instruction_set/transfer.rb
72
142
  - lib/badline/integer_helper.rb
143
+ - lib/badline/interrupts.rb
73
144
  - lib/badline/joystick.rb
74
145
  - lib/badline/kernal_trap.rb
146
+ - lib/badline/kernal_trap/channel.rb
147
+ - lib/badline/kernal_trap/drive.rb
75
148
  - lib/badline/kernal_trap/file.rb
76
149
  - lib/badline/kernal_trap/load.rb
150
+ - lib/badline/kernal_trap/routine.rb
77
151
  - lib/badline/kernal_trap/save.rb
152
+ - lib/badline/kernal_trap/serial.rb
78
153
  - lib/badline/keyboard.rb
79
154
  - lib/badline/keyboard_buffer.rb
80
155
  - lib/badline/media.rb
@@ -83,8 +158,19 @@ files:
83
158
  - lib/badline/roms/README
84
159
  - lib/badline/roms/basic.rom
85
160
  - lib/badline/roms/character.rom
161
+ - lib/badline/roms/eapi/LICENSE.md
162
+ - lib/badline/roms/eapi/README
163
+ - lib/badline/roms/eapi/eapi-am29f040-14
86
164
  - lib/badline/roms/kernal.rom
87
165
  - lib/badline/sid.rb
166
+ - lib/badline/sid/decimator.rb
167
+ - lib/badline/sid/envelope.rb
168
+ - lib/badline/sid/filter.rb
169
+ - lib/badline/sid/voice.rb
170
+ - lib/badline/sid/waveform.rb
171
+ - lib/badline/sid/waveform/combined.rb
172
+ - lib/badline/sid/waveform/fast_forward.rb
173
+ - lib/badline/sid/waveform/noise_writeback.rb
88
174
  - lib/badline/status.rb
89
175
  - lib/badline/storage.rb
90
176
  - lib/badline/storage/crt_file.rb
@@ -94,17 +180,30 @@ files:
94
180
  - lib/badline/storage/disk_image.rb
95
181
  - lib/badline/storage/host_directory.rb
96
182
  - lib/badline/storage/p00.rb
183
+ - lib/badline/storage/sid_file.rb
184
+ - lib/badline/storage/song_lengths.rb
185
+ - lib/badline/storage/t64.rb
186
+ - lib/badline/storage/tap.rb
97
187
  - lib/badline/time_of_day.rb
98
188
  - lib/badline/traps.rb
99
189
  - lib/badline/version.rb
100
190
  - lib/badline/vic.rb
101
191
  - lib/badline/vic/bank.rb
192
+ - lib/badline/vic/border_mask.rb
193
+ - lib/badline/vic/collisions.rb
194
+ - lib/badline/vic/color_patches.rb
102
195
  - lib/badline/vic/display_state.rb
103
196
  - lib/badline/vic/graphics_mode.rb
197
+ - lib/badline/vic/graphics_shifter.rb
198
+ - lib/badline/vic/register_log.rb
104
199
  - lib/badline/vic/registers.rb
105
200
  - lib/badline/vic/sequencer.rb
201
+ - lib/badline/vic/sequencer_output.rb
106
202
  - lib/badline/vic/sprite.rb
203
+ - lib/badline/vic/sprite/internal_bus.rb
204
+ - lib/badline/vic/sprite/shifter.rb
107
205
  - lib/badline/vic/sprites.rb
206
+ - vendor/.gitkeep
108
207
  homepage: https://github.com/elektronaut/badline
109
208
  licenses:
110
209
  - MIT
@@ -125,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
224
  - !ruby/object:Gem::Version
126
225
  version: '0'
127
226
  requirements: []
128
- rubygems_version: 4.0.3
227
+ rubygems_version: 4.0.20
129
228
  specification_version: 4
130
229
  summary: A cycle-accurate Commodore 64 emulator
131
230
  test_files: []