badline 0.2.1 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +49 -0
- data/CLAUDE.md +6 -0
- data/README.md +24 -6
- data/doc/pinned-behaviour.md +18 -6
- data/exe/badline +5 -2
- data/lib/badline/address_bus.rb +6 -4
- data/lib/badline/addressable.rb +1 -1
- data/lib/badline/audio/bare_player.rb +20 -3
- data/lib/badline/audio/machine_player.rb +9 -6
- data/lib/badline/audio/renderer.rb +3 -3
- data/lib/badline/audio/stream.rb +117 -0
- data/lib/badline/audio.rb +1 -0
- data/lib/badline/cartridge/easy_flash.rb +6 -2
- data/lib/badline/cartridge/epyx_fastload.rb +1 -1
- data/lib/badline/cartridge/mach5.rb +1 -1
- data/lib/badline/cartridge/magic_desk.rb +5 -1
- data/lib/badline/cartridge/ocean.rb +5 -2
- data/lib/badline/cartridge/rex_utility.rb +1 -1
- data/lib/badline/cartridge/rgcd.rb +1 -1
- data/lib/badline/cartridge/simons_basic.rb +2 -2
- data/lib/badline/cartridge/westermann.rb +2 -2
- data/lib/badline/cartridge.rb +8 -0
- data/lib/badline/checkpoint.rb +98 -0
- data/lib/badline/cia.rb +4 -2
- data/lib/badline/color_memory.rb +2 -2
- data/lib/badline/computer.rb +11 -6
- data/lib/badline/cpu.rb +2 -2
- data/lib/badline/gui/application.rb +41 -9
- data/lib/badline/kernal_trap/channel.rb +99 -7
- data/lib/badline/kernal_trap/drive/block_commands.rb +79 -0
- data/lib/badline/kernal_trap/drive/channels.rb +53 -0
- data/lib/badline/kernal_trap/drive/memory.rb +109 -0
- data/lib/badline/kernal_trap/drive/parameters.rb +28 -0
- data/lib/badline/kernal_trap/drive.rb +88 -110
- data/lib/badline/kernal_trap/file.rb +0 -5
- data/lib/badline/kernal_trap/load.rb +6 -0
- data/lib/badline/kernal_trap/save.rb +5 -4
- data/lib/badline/media.rb +2 -2
- data/lib/badline/memory.rb +2 -2
- data/lib/badline/rom.rb +14 -5
- data/lib/badline/sid/catch_up.rb +110 -0
- data/lib/badline/sid/decimator.rb +6 -1
- data/lib/badline/sid/filter.rb +5 -5
- data/lib/badline/sid/waveform/fast_forward.rb +10 -10
- data/lib/badline/sid/waveform.rb +7 -7
- data/lib/badline/sid.rb +16 -92
- data/lib/badline/storage/disk_image.rb +22 -0
- data/lib/badline/storage/host_directory.rb +15 -3
- data/lib/badline/storage/sid_file.rb +36 -2
- data/lib/badline/storage.rb +3 -1
- data/lib/badline/time_of_day.rb +7 -0
- data/lib/badline/version.rb +1 -1
- data/lib/badline/vic/graphics_shifter.rb +8 -2
- data/lib/badline/vic/registers.rb +16 -27
- data/lib/badline/vic.rb +5 -2
- data/lib/badline.rb +1 -0
- metadata +8 -1
|
@@ -53,21 +53,21 @@ module Badline
|
|
|
53
53
|
#
|
|
54
54
|
# All color registers are 4bit, bits 4-7 always read 1.
|
|
55
55
|
#
|
|
56
|
-
# $D020: Border color
|
|
57
|
-
# $D021: Background color 0
|
|
58
|
-
# $D022: Background color 1
|
|
59
|
-
# $D023: Background color 2
|
|
60
|
-
# $D024: Background color 3
|
|
61
|
-
# $D025: Sprite multicolor 0
|
|
62
|
-
# $D026: Sprite multicolor 1
|
|
63
|
-
# $D027: Sprite 0 color
|
|
64
|
-
# $D028: Sprite 1 color
|
|
65
|
-
# $D029: Sprite 2 color
|
|
66
|
-
# $D02A: Sprite 3 color
|
|
67
|
-
# $D02B: Sprite 4 color
|
|
68
|
-
# $D02C: Sprite 5 color
|
|
69
|
-
# $D02D: Sprite 6 color
|
|
70
|
-
# $D02E: Sprite 7 color
|
|
56
|
+
# $D020: Border color
|
|
57
|
+
# $D021: Background color 0
|
|
58
|
+
# $D022: Background color 1
|
|
59
|
+
# $D023: Background color 2
|
|
60
|
+
# $D024: Background color 3
|
|
61
|
+
# $D025: Sprite multicolor 0
|
|
62
|
+
# $D026: Sprite multicolor 1
|
|
63
|
+
# $D027: Sprite 0 color
|
|
64
|
+
# $D028: Sprite 1 color
|
|
65
|
+
# $D029: Sprite 2 color
|
|
66
|
+
# $D02A: Sprite 3 color
|
|
67
|
+
# $D02B: Sprite 4 color
|
|
68
|
+
# $D02C: Sprite 5 color
|
|
69
|
+
# $D02D: Sprite 6 color
|
|
70
|
+
# $D02E: Sprite 7 color
|
|
71
71
|
#
|
|
72
72
|
# $D02F-$D03F: Not in use, always reads 0xff
|
|
73
73
|
# $D040-$D3FF: Repeat $D0000 to $D03F every 64 bytes
|
|
@@ -77,10 +77,10 @@ module Badline
|
|
|
77
77
|
# The raw register bytes, for the per-column reads on the hot path.
|
|
78
78
|
attr_reader :bytes
|
|
79
79
|
|
|
80
|
+
# Every register powers on as zero, as in VICE.
|
|
80
81
|
def initialize
|
|
81
82
|
@bytes = Array.new(2**6, 0)
|
|
82
83
|
@irq_line = false
|
|
83
|
-
write_defaults
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
# True while any enabled latch bit is set in $D019/$D01A. Cached and
|
|
@@ -157,17 +157,6 @@ module Badline
|
|
|
157
157
|
def read_clear(reg)
|
|
158
158
|
@bytes[reg].tap { @bytes[reg] = 0 }
|
|
159
159
|
end
|
|
160
|
-
|
|
161
|
-
def write_defaults
|
|
162
|
-
write_each(0x20, [14, 6, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6, 7, 12])
|
|
163
|
-
write_each(0x11, [0x1b, 0]) # $D011: DEN=1, RSEL=1, YSCROLL=3
|
|
164
|
-
write_each(0x16, [0xc8]) # $D016: Text mode, XSCROLL=0
|
|
165
|
-
write_each(0x19, [0, 0]) # IRQ flags
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
def write_each(addr, values)
|
|
169
|
-
values.each_with_index { |v, i| @bytes[addr + i] = v }
|
|
170
|
-
end
|
|
171
160
|
end
|
|
172
161
|
end
|
|
173
162
|
end
|
data/lib/badline/vic.rb
CHANGED
|
@@ -151,7 +151,7 @@ module Badline
|
|
|
151
151
|
end
|
|
152
152
|
|
|
153
153
|
def peek(addr)
|
|
154
|
-
i =
|
|
154
|
+
i = offset_of(addr) % (2**6)
|
|
155
155
|
case i
|
|
156
156
|
when 0x11 then (@registers[0x11] & 0x7f) | ((raster_counter & 0x100) >> 1)
|
|
157
157
|
when 0x12 then raster_counter & 0xff
|
|
@@ -161,8 +161,11 @@ module Badline
|
|
|
161
161
|
end.tap { |value| @sprites.bus_data(@column, value) }
|
|
162
162
|
end
|
|
163
163
|
|
|
164
|
+
# The register file as stored, read without a bus access's side effects.
|
|
165
|
+
def register_file = Array.new(0x40) { |reg| @registers[reg] }
|
|
166
|
+
|
|
164
167
|
def poke(addr, value)
|
|
165
|
-
reg =
|
|
168
|
+
reg = offset_of(addr) % (2**6)
|
|
166
169
|
@sprites.bus_data(@column, value)
|
|
167
170
|
log_register_change(reg, value)
|
|
168
171
|
@registers.write(reg, value)
|
data/lib/badline.rb
CHANGED
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.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Inge Jørgensen
|
|
@@ -73,6 +73,7 @@ files:
|
|
|
73
73
|
- lib/badline/audio/playback.rb
|
|
74
74
|
- lib/badline/audio/renderer.rb
|
|
75
75
|
- lib/badline/audio/sdl_sink.rb
|
|
76
|
+
- lib/badline/audio/stream.rb
|
|
76
77
|
- lib/badline/audio/wav.rb
|
|
77
78
|
- lib/badline/cartridge.rb
|
|
78
79
|
- lib/badline/cartridge/action_replay.rb
|
|
@@ -101,6 +102,7 @@ files:
|
|
|
101
102
|
- lib/badline/cartridge/super_games.rb
|
|
102
103
|
- lib/badline/cartridge/westermann.rb
|
|
103
104
|
- lib/badline/cartridge/zaxxon.rb
|
|
105
|
+
- lib/badline/checkpoint.rb
|
|
104
106
|
- lib/badline/chrout_trap.rb
|
|
105
107
|
- lib/badline/cia.rb
|
|
106
108
|
- lib/badline/cia/interrupt_register.rb
|
|
@@ -145,6 +147,10 @@ files:
|
|
|
145
147
|
- lib/badline/kernal_trap.rb
|
|
146
148
|
- lib/badline/kernal_trap/channel.rb
|
|
147
149
|
- lib/badline/kernal_trap/drive.rb
|
|
150
|
+
- lib/badline/kernal_trap/drive/block_commands.rb
|
|
151
|
+
- lib/badline/kernal_trap/drive/channels.rb
|
|
152
|
+
- lib/badline/kernal_trap/drive/memory.rb
|
|
153
|
+
- lib/badline/kernal_trap/drive/parameters.rb
|
|
148
154
|
- lib/badline/kernal_trap/drive/status.rb
|
|
149
155
|
- lib/badline/kernal_trap/file.rb
|
|
150
156
|
- lib/badline/kernal_trap/load.rb
|
|
@@ -164,6 +170,7 @@ files:
|
|
|
164
170
|
- lib/badline/roms/eapi/eapi-am29f040-14
|
|
165
171
|
- lib/badline/roms/kernal.rom
|
|
166
172
|
- lib/badline/sid.rb
|
|
173
|
+
- lib/badline/sid/catch_up.rb
|
|
167
174
|
- lib/badline/sid/decimator.rb
|
|
168
175
|
- lib/badline/sid/envelope.rb
|
|
169
176
|
- lib/badline/sid/filter.rb
|