Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 0 4 0 dev #164

Merged
merged 18 commits into from
Mar 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,3 @@ rustflags = [
"-C", "link-arg=--max-memory=4294967296",
"--cfg", "getrandom_backend=\"wasm_js\""
]

[unstable]
build-std = ["panic_abort", "std"]
30 changes: 27 additions & 3 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ name: Linux
on:
push:
branches:
- version_0_2_0
- master
paths-ignore:
- '**/*.md'
pull_request:

env:
Expand All @@ -15,6 +17,13 @@ jobs:
runs-on: ubuntu-22.04

steps:
- name: Install nightly Rust
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
sh rustup-init.sh -y --default-host x86_64-unknown-linux-gnu --default-toolchain nightly --profile complete
. "$HOME/.cargo/env"
$HOME/.cargo/bin/cargo version

- name: Checkout repository
uses: actions/checkout@v4
with:
Expand All @@ -23,11 +32,26 @@ jobs:
- name: Install dependencies
run: >-
sudo apt update && sudo apt install
pkg-config
libasound2-dev
libudev-dev
libc-dev
libx11-dev
libclang-dev

- name: Cache cargo registry, index, and build artifacts
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: rust-cache-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
rust-cache-${{ runner.os }}-

- name: Cargo build
run: cargo build --profile release-lto --features ega
run: cargo build --profile release-lto --features use_winit,use_wgpu,sound,opl

- name: Copy files into install dir
run: cp LICENSE README.md CHANGELOG.md CREDITS.md target/release-lto/martypc install
Expand All @@ -47,5 +71,5 @@ jobs:
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: 'martypc-linux-gha${{ github.run_number }}'
name: martypc-linux-gha
path: artifacts/martypc.tar
22 changes: 19 additions & 3 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ name: macOS
on:
push:
branches:
- version_0_2_0
- master
paths-ignore:
- '**/*.md'
pull_request:

env:
Expand All @@ -15,13 +17,20 @@ jobs:
runs-on: macos-14

steps:
- name: Install nightly Rust
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
sh rustup-init.sh -y --default-host aarch64-apple-darwin --default-toolchain nightly --profile complete
. "$HOME/.cargo/env"
$HOME/.cargo/bin/cargo version

- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Cargo build
run: cargo build --profile release-lto --features ega
run: cargo +nightly build --profile release-lto --features use_winit,use_wgpu,sound,opl

- name: Copy files into install dir
run: cp LICENSE README.md CHANGELOG.md CREDITS.md target/release-lto/martypc install
Expand Down Expand Up @@ -49,13 +58,20 @@ jobs:
runs-on: macos-13

steps:
- name: Install nightly Rust
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
sh rustup-init.sh -y --default-host x86_64-apple-darwin --default-toolchain nightly --profile complete
. "$HOME/.cargo/env"
$HOME/.cargo/bin/cargo version

- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Cargo build
run: cargo build --profile release-lto --features ega
run: cargo +nightly build --profile release-lto --features use_winit,use_wgpu,sound,opl

- name: Copy files into install dir
run: cp LICENSE README.md CHANGELOG.md CREDITS.md target/release-lto/martypc install
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ name: Windows
on:
push:
branches:
- version_0_4_0
- master
paths-ignore:
- '**/*.md'
pull_request:

env:
Expand Down Expand Up @@ -46,7 +48,7 @@ jobs:

- name: Cargo build
run: |
$USERPROFILE/.cargo/bin/cargo build --profile release-lto --features use_winit,use_wgpu,devtools,sound,opl
$USERPROFILE/.cargo/bin/cargo build --profile release-lto --features use_winit,use_wgpu,sound,opl

- name: Copy files into install dir
run: cp LICENSE README.md CHANGELOG.md CREDITS.md target/release-lto/martypc install
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ icon.png

# Files to include for distribution
!/install/media/roms/readme.md
!/install/media/roms/XUB
!/install/media/roms/GLaBIOS
!/install/media/roms/*.toml
!/install/martypc.toml
Expand Down
41 changes: 36 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,59 @@

## [0.4.0](https://github.com/dbalsom/martypc/releases/tag/0.4.0) (2025-03-XX)

## New eframe Frontend
## New `eframe` Frontend

Some dependency API changes prompted me to switch window frameworks. The active Desktop frontend for MartyPC is now
based on a customized fork of [eframe](https://github.com/emilk/egui/tree/master/crates/eframe).

This provides a few nice things:
- Alternate backend support. We can now compile MartyPC for either:
- [wgpu](https://github.com/gfx-rs/wgpu) (the old default)
- [glow](https://github.com/grovesNL/glow) - OpenGL bindings for Rust

It is my hope that the`glow` backend may be more performant on older machines. We'll see, I suppose. Unfortunately,
the glow backend will not support MartyPC's scaler or shaders until I rewrite them for OpenGL.


- WASM support. The full MartyPC GUI and debugger can now be hosted in a browser, and you can try that out right now
at [martypc.net](https://martypc.net)
at [martypc.net](https://martypc.net)!
- App state serialization. This means parts of MartyPC's internal state can be persisted between sessions - things
like which windows you had open and their positions, for example. This feature will be expanded upon.

## Native File Dialogs
- The RFD crate provides access to native file dialogs for your particular OS. Besides file open and file save pickers,
we can also use MessageBox(es).
- Initialization errors are now described in hopefully helpful detail via an error MessageBox. You should no longer
have to rely on the command line output to tell why MartyPC didn't start.

## XTIDE Hard Disk Controller
- 0.4.0 adds a new type of Hard Disk Controller - we can now emulate an XTIDE Rev 2. Since this BIOS is open-source,
a machine configuration that includes hard drive support is now the default: `ibm5160_xtide`.
- If you want the 'authentic retro' experience, the IBM/Xebec controller is still available as `ibm5160_hdd` as usual.
- The VHD creator has been updated to support the wide selection of common hard drive geometries that the XTIDE can
support. You'll need to be running a machine with the XTIDE configured to see them.
- It is now possible to take a VHD file from 86Box (assuming you created it as a 'fixed' VHD) and use it in MartyPC
(and vice-versa!).

## New Debugger Features
- You can now edit memory, at last! Double clicking on byte in the hex view will enter edit mode. Hit enter to accept
the current value and go to the next byte. Click outside of the edit box to cancel.
- You can now edit the CPU registers and flags when the machine is paused from the CPU State debug window.
- You can also flush the CPU's instructon queue by clicking the 'flush' button.
- To take a manual jump, first, flush the queue, then edit PC to the value of IP you'd like to jump to.

### Frontend Bug Fixes / Improvements
- You can now toggle the display between the window background and a GUI widget window. Shaders are also available
in windowed mode!
in windowed mode (With the wgpu backend)!
- When in windowed mode, you can apply a bezel overlay. This works best with a shader preset that applies curvature,
and the 'accurate' aperture selected.
and the 'accurate' aperture selected. This isn't really a shader effect, just a GUI trick. But it's kinda cool.
- Fixed an issue where MartyPC would receive keyboard events even though it didn't have keyboard focus (weird)

### Core Bug Fixes / Improvements
- Improved accuracy of the Programmable Interrupt Timer (PIT)
- Fixed a bug the CPU's DRAM refresh DMA scheduler. Many tests in Acid88 now pass.
- Reworked wait state calculations
- The timer hack for Area 5150 is no longer required and has been removed. MartyPC is now accurate enough to run
- The timer hack for Area 5150 is no longer required and has been removed. MartyPC is now finally accurate enough to run
Area 5150 without any hacks or modificatons.

## 0.3.0 (Unreleased)
Expand Down
Loading