Skip to content

Commit

Permalink
SadConsole improvements and updated documentation (#110)
Browse files Browse the repository at this point in the history
* In SadConsole, use actual C64 ROM font characters for more accurate text mode visuals. Also SadConsole font configuration per system.

* Add app icon to all host apps.

* Add logo to SilkNetNative and SadConsole UIs.

* Major update of documentation.

* Add C64 ROM  checksum validation.

* Support multiple C64 ROM versions.

* Minor fixes
  • Loading branch information
highbyte authored Sep 1, 2024
1 parent 93258b5 commit 2bd708b
Show file tree
Hide file tree
Showing 146 changed files with 1,572 additions and 862 deletions.
226 changes: 121 additions & 105 deletions README.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions doc/APPS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Overview
Emulator applications with user interfaces for running different [systems](SYSTEMS.md), using different [rendering input handling, and audio](RENDER_INPUT_AUDIO.md) techniques.

- [Blazor Web Assembly (WASM) with SkiaSharp renderer](APPS_SKIA_WASM.md)
- [Native cross-platform window via Silk.NET using with SkiaSharp renderer](APPS_SILKNET_NATIVE.md)
- [Native cross-platform window via SadConsole, using SadConsole renderer](APPS_SADCONSOLE.md)
- [Blazor Web Assembly (WASM)](APPS_WASM.md)
- [Native cross-platform window via Silk.NET](APPS_SILKNET_NATIVE.md)
- [Native cross-platform window via SadConsole](APPS_SADCONSOLE.md)
- [Native cross-platform console monitor app](APPS_CONSOLE_MONITOR.md)
2 changes: 1 addition & 1 deletion doc/APPS_CONSOLE_MONITOR.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<h1 align="center">Highbyte.DotNet6502.App.ConsoleMonitor</h1>

# Overview
<img src="Screenshots/NativeConsoleMonitor.png" width="50%" height="50%" title="Machine code monitor native console host window">
<img align="top" src="Screenshots/ConsoleMonitor.png" width="25%" height="25%" title="Machine code monitor native console host window" />

# Features
Stand-alone console monitor app, no other UI.
Expand Down
15 changes: 10 additions & 5 deletions doc/APPS_SADCONSOLE.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
<h1 align="center">Highbyte.DotNet6502.App.SadConsole</h1>

# Overview
<img src="Screenshots/SadConsole_Generic.png" width="50%" height="50%" title="SadConsole rendering in native SadConsole host window">
<img align="top" src="Screenshots/SadConsole_C64_Basic.png" width="25%" height="25%" title="SadConsole native app, C64 Basic" /> <img align="top" src="Screenshots/SadConsole_C64_Monitor.png" width="38%" height="38%" title="SadConsole native app, C64 Monitor" />

# Features
Native cross-platform app written in .NET with a Window, renderer, and input handler via SadConsole (from ```Highbyte.DotNet6502.Impl.SadConsole```).

Currently the system to emulate is configured in the appsettings.json file.
Native cross-platform app based on the [`SadConsole`](https://github.com/Thraka/SadConsole) terminal/ascii/console/game engine.

# System: C64
A directory containing the C64 ROM files (Kernal, Basic, Chargen) is supplied by the user, and set in the appsettings.json file.
- A directory containing the C64 ROM files (Kernal, Basic, Chargen) is supplied by the user. Defaults are set in the appsettings.json file, and possible to change in the UI.
- Only video mode that works in C64 character mode (not multicolor) with built-in characters set from ROM is supported.
- Generation of sound via NAudio with custom OpenAL (Silk.NET) provider (for cross platform compatibility).

# System: Generic computer
TODO

# Monitor
Press button or toggle with F12.
TODO

# Stats
Press button or toggle with F11.
TODO
21 changes: 13 additions & 8 deletions doc/APPS_SILKNET_NATIVE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
<h1 align="center">Highbyte.DotNet6502.App.SilkNetNative</h1>

# Overview
<img src="Screenshots/SilkNetNative_C64.png" width="50%" height="50%" title="SkiaSharp rendering in native Silk.NET host window">

<img src="Screenshots/SilkNetNative_Monitor.png" width="100%" height="100%" title="SkiaSharp rendering in native Silk.NET host window">
<img align="top" src="Screenshots/SilkNetNative_C64_Basic.png" width="25%" height="25%" title="SilkNet native app, C64 Basic" /> <img align="top" src="Screenshots/SilkNetNative_C64_raster_scroll.png" width="25%" height="25%" title="SilkNet native app,, C64 raster and scroll" /> <img align="top" src="Screenshots/SilkNetNative_Monitor.png" width="25%" height="25%" title="SilkNet native app, C64 monitor" />

# Features
Native cross-platform app written in .NET with a Window from Silk.NET, using a SkiaSharp (from ```Highbyte.DotNet6502.Impl.Skia```) or a OpenGL (from ```Highbyte.DotNet6502.Impl.SilkNet```) renderer, with a Silk.NET input handler (from ```Highbyte.DotNet6502.Impl.SilkNet```).
Native cross-platform app written in .NET using a [Silk.NET](https://github.com/dotnet/Silk.NET) window.

Uses Silk.NET [ImGui extensions](https://www.nuget.org/packages/Silk.NET.OpenGL.Extensions.ImGui/) to render UI for interactive menu, monitor, and stats window.

# System: C64
A directory containing the C64 ROM files (Kernal, Basic, Chargen) is supplied by the user, and set in the appsettings.json file.
- A directory containing the C64 ROM files (Kernal, Basic, Chargen) is supplied by the user. Defaults are set in the appsettings.json file, and possible to change in the UI.

- Renderers using either `SkiaSharp` or `SilkNet` (OpenGl)
- Character mode (normal and multi-color) with all renderers
- Bitmap mode (normal and bitmap mode) with the SkiaSharp2* and SilkNetOpenGL renderers.
- Sprites (normal and multi-color) with all renderers.
- Rendering of raster lines for border and background colors with all renderers.

Rendering of raster lines for border and background colors.
- Input using `SilkNet`

Generation of sound via NAudio with custom OpenAL (Silk.NET) provider (for cross platform compatibility).
- Audio via `NAudio`
- [NAudio](https://github.com/naudio/NAudio) + custom OpenAL (Silk.NET) provider for cross platform compatibility.

# System: Generic computer
TODO
Expand All @@ -29,7 +34,7 @@ Start and stop of selected system.

Configuration options of selected system.

## Monitor
## Monitor
A togglebale machine code monitor window by pressing F12.

## Stats
Expand Down
31 changes: 18 additions & 13 deletions doc/APPS_WASM.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
<h1 align="center">Highbyte.DotNet6502.App.WASM</h1>

# Overview
<img align="top" src="Screenshots/WASM_C64.png" width="50%" height="50%" title="SkiaSharp rendering in a Blazor WASM browser host"><img align="top" src="Screenshots/WASM_Generic.png" width="50%" height="50%" title="SkiaSharp rendering in a Blazor WASM browser host">

<img src="Screenshots/WASM_Monitor.png" width="100%" height="100%" title="SkiaSharp rendering in a Blazor WASM browser host">
<img align="top" src="Screenshots/WASM_C64_Basic.png" width="25%" height="25%" title="Blazor WebAssembly app, C64 Basic" /><img align="top" src="Screenshots/WASM_C64_LastNinja.png" width="25%" height="25%" title="BBlazor WebAssembly app, C64 Last Ninja" /> <img align="top" src="Screenshots/WASM_C64_Monitor.png" width="38%" height="38%" title="Blazor WebAssembly app, C64 monitor" />

A deployed version can be found here [https://highbyte.se/dotnet-6502/app](https://highbyte.se/dotnet-6502/app)

# Features
A web app written in Blazor WASM (Web Assembly), using [```SkiaSharp.Views.Blazor```](https://www.nuget.org/packages/SkiaSharp.Views.Blazor) library to provide a Canvas for drawing on with main [```SkiaSharp```](https://www.nuget.org/packages/SkiaSharp) library.
A web app written in Blazor WASM (Web Assembly), using [`SkiaSharp.Views.Blazor`](https://www.nuget.org/packages/SkiaSharp.Views.Blazor) library to provide a Canvas for drawing on with main [`SkiaSharp`](https://www.nuget.org/packages/SkiaSharp) library.

# System: C64
Via C64 config UI you have to upload binaries for the ROMs that a C64 uses (Kernal, Basic, Chargen).
- Via C64 config UI you have to upload binaries for the ROMs that a C64 uses (Kernal, Basic, Chargen).

- Renderers: `SkiaSharp`, `SkiaSharp2`, `SkiaSharp2b`
- Character mode (normal and multi-color) with all renderers
- Bitmap mode (normal and bitmap mode) only with the `SkiaSharp2*` renderers.
- Sprites (normal and multi-color) with all renderers.
- Rendering of raster lines for border and background colors with all renderers.

Rendering of raster lines for border and background colors.
- Input using `AspNet`

Generation of sound via WebAudio API.
- Audio via `AspNet`
- Using .NET interop to WebAudio API

# System: Generic computer
The example 6502 machine code that is loaded and run by default for the _Generic_ computer is this a assembled version of [this 6502 assembly code](../samples/Assembler/Generic/hostinteraction_scroll_text_and_cycle_colors.asm)
Expand All @@ -40,23 +45,23 @@ For system requirements, see details [here](DEVELOP.md#Requirements)

## Visual Studio 2022 (Windows)

Open solution ```dotnet-6502.sln```.
Set project ```Highbyte.DotNet6502.App.WASM``` as startup, and start with F5.
Open solution `dotnet-6502.sln`.
Set project `Highbyte.DotNet6502.App.WASM` as startup, and start with F5.

## From command line (Windows, Linux, Mac)
### Run Debug build
```
```shell
cd ./src/apps/Highbyte.DotNet6502.App.WASM
dotnet run
```
Open browser at http://localhost:5000.

### Run optimized Publish build
Requires
- DotNet workload "wasm-tools" , install with ```dotnet workload install wasm-tools```
- DotNet global tool "serve", install with ```dotnet tool install --global dotnet-serve```
- DotNet workload "wasm-tools" , install with `dotnet workload install wasm-tools`
- DotNet global tool "serve", install with `dotnet tool install --global dotnet-serve`

```
```powershell
cd ./src/apps/Highbyte.DotNet6502.App.WASM
if(Test-Path $publishDir) { del ./bin/Publish/ -r -force }
dotnet publish -c Release -o ./bin/Publish/
Expand Down
Loading

0 comments on commit 2bd708b

Please sign in to comment.