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

SadConsole improvements and updated documentation #110

Merged
merged 39 commits into from
Sep 1, 2024
Merged
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
b6048c4
Improve SadConsole C64 font mapping.
highbyte Aug 14, 2024
b4307d3
In SadConsole, use actual C64 ROM font characters for more accurate t…
highbyte Aug 15, 2024
7a39e77
Fix console size
highbyte Aug 19, 2024
31b49c8
Text fixes
highbyte Aug 19, 2024
0635d88
Add app icon to all host apps.
highbyte Aug 28, 2024
cdcf0e8
Add favicon head declaration in WASM UI to make sure favicon is loade…
highbyte Aug 28, 2024
70e093e
Add logo to SilkNetNative and SadConsole UIs.
highbyte Aug 29, 2024
4eeecfb
Minor fix. Add missing logo file.
highbyte Aug 30, 2024
9bdb306
Major update of documentation.
highbyte Aug 30, 2024
bc0a6cf
Update README.md formatting
highbyte Aug 30, 2024
0bd2ba2
Fix formatting
highbyte Aug 30, 2024
683bdb7
Fix badges
highbyte Aug 30, 2024
0849f76
Fix formatting and text.
highbyte Aug 30, 2024
f6314c9
Fix formatting
highbyte Aug 30, 2024
206f409
Fix formatting
highbyte Aug 30, 2024
3ded20e
Fix formatting and text
highbyte Aug 30, 2024
7187840
Fix texts
highbyte Aug 30, 2024
5062051
Fixes texts
highbyte Aug 30, 2024
59e70ae
Add C64 ROM checksum validation.
highbyte Aug 31, 2024
b4b7e4e
Merge branch 'feature/misc-fixes' of https://github.com/highbyte/dotn…
highbyte Aug 31, 2024
b9f25c9
Support multiple C64 ROM versions.
highbyte Aug 31, 2024
cf23584
Add GenericComputerBuilder empty constructor.
highbyte Sep 1, 2024
f6fd649
Improve CPU library doc.
highbyte Sep 1, 2024
eff2eac
Update CPU_LIBRARY.md
highbyte Sep 1, 2024
f4bc539
Update CPU_LIBRARY.md
highbyte Sep 1, 2024
3c0ca49
Update README.md
highbyte Sep 1, 2024
e4f13e4
Add screenshot
highbyte Sep 1, 2024
bf22386
Update README.md
highbyte Sep 1, 2024
faa5611
Update README.md
highbyte Sep 1, 2024
53a779b
Fix consistency issue.
highbyte Sep 1, 2024
ec92ee4
Merge branch 'feature/misc-fixes' of https://github.com/highbyte/dotn…
highbyte Sep 1, 2024
136bd44
Fix SadConsole monitor status rendering bug
highbyte Sep 1, 2024
9b531c5
Optimize SilkNet ImGui config windows to not evaluate config validity…
highbyte Sep 1, 2024
05535dc
Build all assembler examples
highbyte Sep 1, 2024
e7b2ccd
Improve some CPU and BinaryLoader API methods for ease of use.
highbyte Sep 1, 2024
d226073
Update screenshot
highbyte Sep 1, 2024
5cf439a
Update README.md
highbyte Sep 1, 2024
402f90d
Update README.md
highbyte Sep 1, 2024
3125085
Update README.md
highbyte Sep 1, 2024
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
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
@@ -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.
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
@@ -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
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)
@@ -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/
Loading
Loading