Commit Graph

296 Commits

Author SHA1 Message Date
Brad Grantham 4a3dc4a9b7 Fix broken 80-column text 2017-01-07 14:35:00 -08:00
Brad Grantham 3863010d07 Move textport textures from RECTANGLE to 2D
Change initialize_texture to return an object containing width and
height, since the GUI uses textport textures of various sizes.

Add scale factors to text, text80, and lores shaders and set them as Uniforms.
2017-01-07 14:00:46 -08:00
Brad Grantham c9113ece86 Change font texture from RECTANGLE to 2D
Make new texture function for making 2D textures instead of RECTANGLE
textures.

Pass in scale factor from texel coordinates to UV coordinates.

Change text and text80 fragment shaders to scale texel coordinates
to UV for sampler for font_texture.

Use sampler2D instead of sampler2DRect for font_texture
2017-01-07 13:32:35 -08:00
Brad Grantham 49f098f6dc Add counts and grapher for instruction progress
instructions_by_first_appearance_clock.csv is emitted from branch
"cpu_progression".  It contains the number of instructions processed
before the first time a particular instruction was encountered.

graph_cycles_before_new_insn.py emits an ASCII graph from that data,
linear or algorithmic depending on variable in the source.
2017-01-05 15:19:40 -08:00
Brad Grantham 2e7f809bc9 Fix compile errors caused by moving to range for 2017-01-04 22:09:31 -08:00
Brad Grantham c981363b4d AO test file 2017-01-03 10:09:18 -08:00
Brad Grantham 30ec998252 Use range-for on containers 2017-01-03 09:41:38 -08:00
Brad Grantham 453c90d4cf Fix buffer underrun in audio code 2017-01-02 12:02:44 -08:00
Brad Grantham cb60985ef0 Move audio implementation into interface.cpp
Move all libao operation into interface.cpp
This should have the result of removing all AV and GUI code from apple2e.cpp
OS code remaining in apple2e.cpp should basically be only file I/O, console I/O, and chrono.
2016-12-26 22:28:45 -08:00
Brad Grantham bf7961855f Reduce OpenGL texture download overhead a touch
Store all text and hgr writes in write() in a map.
Later, in apply_writes(), actually download all writes from the map.
This has the effect of downloading only the most recent write.
After implementation, this has the effect in FAST mode on my Mac of only reducing writes by between 0% and 4% in both QUADRADOODLE and LodeRunner.  So probably not worth it.  But maybe worth an interation on this which would mark rows and try to coalesce adjacent writes in X and Y to single texture updates.
2016-12-26 02:00:09 -08:00
Brad Grantham 8817b799b6 Make Lemmings start up (but wrong Lemmings...)
Implement EOR zpg,X
Implement ROL zpg,X (Thanks, Bart and Dad!)
2016-12-26 01:34:57 -08:00
Brad Grantham 4bd25b0cc1 Fixes formatting 2016-12-14 16:53:57 -08:00
Brad Grantham 702f0749f0 Add usage examples 2016-12-14 16:52:54 -08:00
Brad Grantham 33314406c0 use my CPU 2016-12-09 13:06:50 -08:00
Brad Grantham 920eb71e28 want BCD 2016-12-09 13:06:41 -08:00
Brad Grantham bbf62836b3 use 1000Hz as audio cutoff 2016-12-07 14:42:28 -08:00
Brad Grantham ab5ee6f1db my sound digitizer application disk 2016-12-07 14:41:39 -08:00
Brad Grantham 81a4ab26bd resize to window, fix #3 2016-12-06 20:02:18 -08:00
Brad Grantham 15e0c797bd resize to fit window 2016-12-06 18:58:34 -08:00
Brad Grantham e95048d6e9 remove printf in waveform initialization 2016-12-06 18:58:25 -08:00
Brad Grantham 1d8a138123 Slightly better audio using a sine wave approximation
Choose a 2000Hz sine wave as a trade off between smoothing audio and preserving audio

Fix #14
2016-12-06 18:24:11 -08:00
Brad Grantham f7b76a8631 center floppy icons 2016-12-06 00:16:43 -08:00
Brad Grantham 9db796961f remove keyboard 2016-12-06 00:04:01 -08:00
Brad Grantham 2c9a367b76 Update README.md with GUI and other information 2016-12-05 17:28:09 -08:00
Brad Grantham 456aca2269 Remove termio keyboard, disable 80-col on RESET 2016-12-05 17:27:57 -08:00
Brad Grantham f1bd37a984 HGR colors, label floppy drives
New hirescolor fragment shader
2016-12-05 16:27:59 -08:00
Brad Grantham 66c8945d9f Provide cute floppy icons
New image shader
    Had so much trouble getting hires-like images (MSbit ignored) to work, finally gave up
2016-12-05 10:04:43 -08:00
Brad Grantham 5b4116fdf2 Also reset other 6502 on RESET 2016-12-05 10:04:38 -08:00
Brad Grantham ddf4655a43 Implement 80-column mode - ProDOS boots to 80 cols
Catch ALTCHAR but do nothing about it
Catch VID80 (80VID)
Add aux pages to interface.cpp
Plumb aux pages through apple2e.cpp display_write functions
Implement 80-column text shader using aux page
2016-12-04 22:07:00 -08:00
Brad Grantham 85b741e61c whoops, strcmp == 0 if equal 2016-12-04 13:09:56 -08:00
Brad Grantham ebd5d06e87 ProDos sector ordering for .po files 2016-12-03 10:06:48 -08:00
Brad Grantham 5418de45aa drag files onto screen to paste contents 2016-12-02 14:57:55 -08:00
Brad Grantham 96835e2400 Add drag-and-drop floppies, fix cold-start
On cold-start, force Button0/OpenApple on for a short period
    This is how cold-start (disk boot) is differentiated from plain RESET
Add padding widget that pads another widget on all sides
Add drag-and-drop functionality to widgets and manage through GLFW
Honor current time through all widget methods
Fix character encoding in text_widget (especially for ' ')
Add floppy_icon widget that manages drag-and-drop and drive motor (activity) light
    Later move to vector graphic or bitmap
Add floppy eject and insert notification from APPLE2Einterface
Add activity notification through APPLE2Einterface
Optimize with -O2
2016-12-02 10:42:22 -08:00
Brad Grantham 04fc305a36 Merge branch 'master' of https://github.com/bradgrantham/apple2e 2016-12-01 12:04:16 -08:00
Brad Grantham c5dc2ec782 Honor -fast in UI; lay groundwork for floppy UI 2016-12-01 12:03:40 -08:00
Brad Grantham 8540ed380f Add note about UNIX specifics, joystick 2016-12-01 11:17:28 -08:00
Brad Grantham 620cc1aa04 More instructions: DOS Master boots (crashes to Monitor)
ORA abs, Y
ROR abs, X
2016-11-30 10:42:36 -08:00
Brad Grantham 824459f575 support an initialization file that provides joystick mapping 2016-11-30 10:27:51 -08:00
Brad Grantham 067b3f4886 Gamepad (Samsung EI-GP20 tested) 2016-11-30 09:58:58 -08:00
Brad Grantham 9cf71aa21f More instructions: Choplifter works
Implement 0x80 (NOP imm, aka "DOP")
TXS doesn't set flags
Remove 65C02 0x80 (BRA imm)
Add ORA (ind, X)
2016-11-30 09:26:19 -08:00
Brad Grantham ed8dfa33ea Rudimentary paddle support, fix audio stuttering
Mouse/Trackpad drag across the screen emulates paddles
Click on the screen emulates button 0
Ignore reads from C020 (tape out)
Add BRA instruction for 65C02 (maybe not necessary)
Disable audio in FAST mode
Throttle a little better when audio is enabled - stopped stutter
2016-11-29 22:17:17 -08:00
Brad Grantham 0687587428 Make all screen elements widgets
Widget for Apple 2 screen (graphics and textport)
Make box be vertical or horizontal
Add spacer widget
Fix calls to draw, click, drag, release to reflect whole screen being a widget
Fix #16
2016-11-29 13:16:20 -08:00
Brad Grantham cfe9d962d8 BCD mode; SED; AND zpg, X 2016-11-29 00:25:04 -08:00
Brad Grantham 91e8aaf726 Widgets draw in area, and implement centering widget, fixing #7 and fixing #6 2016-11-28 18:43:53 -08:00
Brad Grantham 577a806799 Key repeat, fixes #21 2016-11-28 17:17:57 -08:00
Brad Grantham ca376dab5a CAPS lock, More instructions and compatibility
GLFW doesn't pass through Mac CAPS lock key for some reason.
CAPS button in GUI works, though.
Implement more instructions, mostly for ChopLifter
    DEC abs, X
    INC abs, X
    AND (ind), Y
    AND abs, X
    ROR abs
Now ChopLifter needs unimplemented SED!  Probably uses decimal mode while printing score.
Set "then" at end of CPU loop to try to throttle better.  Not sure it helps.
2016-11-28 14:22:22 -08:00
Brad Grantham f107f4b23d More instructions and compatibility
Fix ADC abs (was accidentally adding Y to address)
Also handle bank switch registers on write
Initialize CPU6502 registers to 0 to match fake6502
    Avoid spurious differences
Implement more instructions
    ADC (ind), Y
    ADC abs, X
    ORA zpg, X
2016-11-28 13:27:52 -08:00
Brad Grantham 43bb5d2663 cycle table formatting and more data 2016-11-28 09:55:01 -08:00
Brad Grantham 0b1b083f6c don't enqueue new audio buffer if no audio 2016-11-28 09:54:36 -08:00
Brad Grantham 604bf07b4f Partially implement floppy disks
Floppy disks partially work:
    apple2e -noaudio -fast -diskII disk2romfile {floppy1name,"none"} {floppy2name,"none"} apple2e.rom

Import nybblizer from Shamus but only DOS
Support floppy hardware
    track motor stepper
    enable
    read
Add -noaudio (otherwise execution is throttled by waits once audio buffer is filled)
Only read ROM at D000 and E000 if C08X_read_RAM isn't turned on
RAMRD, RAMWRT, and ALTZP are implemented, note them as such in constructor
Correctly decode C08X soft switches
Implement a bunch more instructions
    INC abs
    LDY abs, X
    SBC abs, Y
    ADC abs
    ASL abs
    LSR abs, X
    ORA abs
    ORA abs, X
    AND abs, Y
    STA (ind, X)
    LDX abs
    CPX abs
    EOR (ind, X)
    EOR abs
    EOR abs, X
    STX abs
Throttle to actual number of clocks per instruction
Temporarily enable "Fake6502" instead of my CPU because there's an obvious difference
Better blink speed in interface.cpp
2016-11-27 17:10:03 -08:00