![]() |
|
testbed - Printable Version +- bigpete.net (https://test.bigpete.net) +-- Forum: Administrative (https://test.bigpete.net/forumdisplay.php?fid=4) +--- Forum: Mod Forum (https://test.bigpete.net/forumdisplay.php?fid=17) +--- Thread: testbed (/showthread.php?tid=25) Pages:
1
2
|
testbed - BigPete - 02-15-2026 [MEDIA=archiveorg]win41-upd[/MEDIA] View: https://archive.org/details/win41-upd testbed - BigPete - 02-17-2026 [MEDIA=reddit]comments/r/linux_gaming/t3_1r4b8py[/MEDIA] View: https://www.reddit.com/r/linux_gaming/s/IfB4MNZ1HQ testbed - BigPete - 02-19-2026 [MEDIA=bandcamp]album_id=2315007335[/MEDIA] View: https://gogolbordello.bandcamp.com/album/we-mean-it-man testbed - BigPete - 02-22-2026 BBCode test testbed - BigPete - 02-22-2026 test testbed - BigPete - 02-26-2026 Code: REM - THIS IS THE ORIGINAL SOURCE CODE FROM THE COLECO ADAM PROGRAM LISTING
15 POKE 17059, 4: POKE 17126, 246
16 GOTO 2560
20 HOME
21 IF name$ = "" THEN PRINT "There is no character to save!": FOR z = 1 TO 1000: NEXT z: GOTO 1000
22 INVERSE
23 PRINT " ";
30 PRINT "INSERT DATA DISK. ";
31 PRINT " ";
32 NORMAL
40 GET z$
41 IF z$="" THEN TEXT:GOTO 1000
42 HGR2
50 file$=LEFT$(name$, 6)
60 PRINT CHR$(4); "open "; file$; ".CDP"
70 PRINT CHR$(4); "write "; file$; ".CDP"
80 PRINT name$
85 PRINT ali$
90 PRINT score
95 PRINT xp
100 PRINT ohits
105 PRINT hits
110 PRINT weapon$
115 PRINT armor$
116 PRINT shield$
120 PRINT spell$
121 PRINT moves
125 PRINT cd
126 PRINT lamp$testbed - BigPete - 02-26-2026 Code: using System;
using System.Globalization;
using System.IO;
using PixelVision8.Player;
namespace PixelVision8.Runner
{
public static class Program
{
[STAThread]
public static void Main(string[] args)
{
// Fix a bug related to parsing numbers in Europe, among other things
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
var root = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content");
// TODO there is a bug where this will not go to the boot error
using (var game = new CSharpRunner(root, typeof(CustomGameChip).ToString()))
{
game.Run();
}
}
}
}testbed - BigPete - 02-26-2026 [CODE=csharp]using System; using System.Globalization; using System.IO; using PixelVision8.Player; namespace PixelVision8.Runner { public static class Program { [STAThread] public static void Main(string[] args) { // Fix a bug related to parsing numbers in Europe, among other things CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture; var root = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content"); // TODO there is a bug where this will not go to the boot error using (var game = new CSharpRunner(root, typeof(CustomGameChip).ToString())) { game.Run(); } } } }[/CODE] testbed - BigPete - 02-26-2026 Code: //
// config.cpp
//
// mt32-pi - A baremetal MIDI synthesizer for Raspberry Pi
// Copyright (C) 2020-2023 Dale Whinham <daleyo@gmail.com>
//
// This file is part of mt32-pi.
//
// mt32-pi is free software: you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the Free Software
// Foundation, either version 3 of the License, or (at your option) any later
// version.
//
// mt32-pi is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// mt32-pi. If not, see <http://www.gnu.org/licenses/>.
//
#include <cstdlib>
#include <circle/logger.h>
#include <circle/util.h>
#include <fatfs/ff.h>
#include <ini.h>
#include "config.h"
#include "utility.h"
LOGMODULE("config");
const char* TrueStrings[] = {"true", "on", "1"};
const char* FalseStrings[] = {"false", "off", "0"};
// Templated function that converts a string to an enum
template <class T, const char* pEnumStrings[], size_t N> static bool ParseEnum(const char* pString, T* pOut)
{
for (size_t i = 0; i < N; ++i)
{
if (!strcasecmp(pString, pEnumStrings[i]))
{
*pOut = static_cast<T>(i);
return true;
}
}
return false;
}
// Macro to expand templated enum parser into an overloaded definition of ParseOption()
#define CONFIG_ENUM_PARSER(ENUM_NAME) \
bool CConfig::ParseOption(const char* pString, ENUM_NAME* pOut) \
{ \
return ParseEnum<ENUM_NAME, ENUM_NAME##Strings, Utility::ArraySize(ENUM_NAME##Strings)>(pString, pOut); \
}
// Enum string tables
CONFIG_ENUM_STRINGS(TSystemDefaultSynth, ENUM_SYSTEMDEFAULTSYNTH);
CONFIG_ENUM_STRINGS(TAudioOutputDevice, ENUM_AUDIOOUTPUTDEVICE);
CONFIG_ENUM_STRINGS(TMT32EmuResamplerQuality, ENUM_RESAMPLERQUALITY);
CONFIG_ENUM_STRINGS(TMT32EmuMIDIChannels, ENUM_MIDICHANNELS);
CONFIG_ENUM_STRINGS(TMT32EmuROMSet, ENUM_MT32ROMSET);
CONFIG_ENUM_STRINGS(TLCDType, ENUM_LCDTYPE);
CONFIG_ENUM_STRINGS(TControlScheme, ENUM_CONTROLSCHEME);
CONFIG_ENUM_STRINGS(TEncoderType, ENUM_ENCODERTYPE);
CONFIG_ENUM_STRINGS(TLCDRotation, ENUM_LCDROTATION);
CONFIG_ENUM_STRINGS(TLCDMirror, ENUM_LCDMIRROR);
CONFIG_ENUM_STRINGS(TNetworkMode, ENUM_NETWORKMODE);
CConfig* CConfig::s_pThis = nullptr;
CConfig::CConfig()
{
// Expand assignment of all default values from definition file
#define CFG(_1, _2, MEMBER_NAME, DEFAULT, _3...) MEMBER_NAME = DEFAULT;
#include "config.def"
s_pThis = this;
}
bool CConfig::Initialize(const char* pPath)
{
FIL File;
if (f_open(&File, pPath, FA_READ) != FR_OK)
{
LOGERR("Couldn't open '%s' for reading", pPath);
return false;
}
// +1 byte for null terminator
const UINT nSize = f_size(&File);
char Buffer[nSize + 1];
UINT nRead;
if (f_read(&File, Buffer, nSize, &nRead) != FR_OK)
{
LOGERR("Error reading config file", pPath);
f_close(&File);
return false;
}
// Ensure null-terminated
Buffer[nRead] = '\0';
const int nResult = ini_parse_string(Buffer, INIHandler, this);
if (nResult > 0)
LOGWARN("Config parse error on line %d", nResult);
f_close(&File);
return nResult >= 0;
}
int CConfig::INIHandler(void* pUser, const char* pSection, const char* pName, const char* pValue)
{
CConfig* const pConfig = static_cast<CConfig*>(pUser);
//LOGDBG("'%s', '%s', '%s'", pSection, pName, pValue);
// Automatically generate ParseOption() calls from macro definition file
#define BEGIN_SECTION(SECTION) \
if (!strcmp(#SECTION, pSection)) \
{
#define CFG(INI_NAME, TYPE, MEMBER_NAME, _2, ...) \
if (!strcmp(#INI_NAME, pName)) \
return ParseOption(pValue, &pConfig->MEMBER_NAME __VA_OPT__(, ) __VA_ARGS__);
#define END_SECTION \
return 0; \
}
#include "config.def"
return 0;
}
bool CConfig::ParseOption(const char* pString, bool* pOutBool)
{
for (auto pTrueString : TrueStrings)
{
if (!strcasecmp(pString, pTrueString))
{
*pOutBool = true;
return true;
}
}
for (auto pFalseString : FalseStrings)
{
if (!strcasecmp(pString, pFalseString))
{
*pOutBool = false;
return true;
}
}
return false;
}
bool CConfig::ParseOption(const char* pString, int* pOutInt, bool bHex)
{
*pOutInt = strtol(pString, nullptr, bHex ? 16 : 10);
return true;
}
bool CConfig::ParseOption(const char* pString, float* pOutFloat)
{
*pOutFloat = strtof(pString, nullptr);
return true;
}
bool CConfig::ParseOption(const char* pString, CString* pOut)
{
*pOut = CString(pString);
return true;
}
bool CConfig::ParseOption(const char* pString, CIPAddress* pOut)
{
// Space for 4 period-separated groups of 3 digits plus null terminator
char Buffer[16];
u8 IPAddress[4];
strncpy(Buffer, pString, sizeof(Buffer));
char* pToken = strtok(Buffer, ".");
for (uint8_t i = 0; i < 4; ++i)
{
if (!pToken)
return false;
IPAddress[i] = atoi(pToken);
pToken = strtok(nullptr, ".");
}
pOut->Set(IPAddress);
return true;
}
// Define template function wrappers for parsing enums
CONFIG_ENUM_PARSER(TSystemDefaultSynth);
CONFIG_ENUM_PARSER(TAudioOutputDevice);
CONFIG_ENUM_PARSER(TMT32EmuResamplerQuality);
CONFIG_ENUM_PARSER(TMT32EmuMIDIChannels);
CONFIG_ENUM_PARSER(TMT32EmuROMSet);
CONFIG_ENUM_PARSER(TLCDType);
CONFIG_ENUM_PARSER(TControlScheme);
CONFIG_ENUM_PARSER(TEncoderType);
CONFIG_ENUM_PARSER(TLCDRotation);
CONFIG_ENUM_PARSER(TLCDMirror);
CONFIG_ENUM_PARSER(TNetworkMode);testbed - BigPete - 02-26-2026 Code: import { createTheme } from '@vanilla-extract/css';
import { color } from 'folds';
export const silverTheme = createTheme(color, {
Background: {
Container: '#DEDEDE',
ContainerHover: '#D3D3D3',
ContainerActive: '#C7C7C7',
ContainerLine: '#BBBBBB',
OnContainer: '#000000',
},
Surface: {
Container: '#EAEAEA',
ContainerHover: '#DEDEDE',
ContainerActive: '#D3D3D3',
ContainerLine: '#C7C7C7',
OnContainer: '#000000',
},
SurfaceVariant: {
Container: '#DEDEDE',
ContainerHover: '#D3D3D3',
ContainerActive: '#C7C7C7',
ContainerLine: '#BBBBBB',
OnContainer: '#000000',
},
Primary: {
Main: '#1245A8',
MainHover: '#103E97',
MainActive: '#0F3B8F',
MainLine: '#0E3786',
OnMain: '#FFFFFF',
Container: '#C4D0E9',
ContainerHover: '#B8C7E5',
ContainerActive: '#ACBEE1',
ContainerLine: '#A0B5DC',
OnContainer: '#0D3076',
},
Secondary: {
Main: '#000000',
MainHover: '#171717',
MainActive: '#232323',
MainLine: '#2F2F2F',
OnMain: '#EAEAEA',
Container: '#C7C7C7',
ContainerHover: '#BBBBBB',
ContainerActive: '#AFAFAF',
ContainerLine: '#A4A4A4',
OnContainer: '#0C0C0C',
},
Success: {
Main: '#017343',
MainHover: '#01683C',
MainActive: '#016239',
MainLine: '#015C36',
OnMain: '#FFFFFF',
Container: '#BFDCD0',
ContainerHover: '#B3D5C7',
ContainerActive: '#A6CEBD',
ContainerLine: '#99C7B4',
OnContainer: '#01512F',
},
Warning: {
Main: '#864300',
MainHover: '#793C00',
MainActive: '#723900',
MainLine: '#6B3600',
OnMain: '#FFFFFF',
Container: '#E1D0BF',
ContainerHover: '#DBC7B2',
ContainerActive: '#D5BDA6',
ContainerLine: '#CFB499',
OnContainer: '#5E2F00',
},
Critical: {
Main: '#9D0F0F',
MainHover: '#8D0E0E',
MainActive: '#850D0D',
MainLine: '#7E0C0C',
OnMain: '#FFFFFF',
Container: '#E7C3C3',
ContainerHover: '#E2B7B7',
ContainerActive: '#DDABAB',
ContainerLine: '#D89F9F',
OnContainer: '#6E0B0B',
},
Other: {
FocusRing: 'rgba(0 0 0 / 50%)',
Shadow: 'rgba(0 0 0 / 20%)',
Overlay: 'rgba(0 0 0 / 50%)',
},
});
const darkThemeData = {
Background: {
Container: '#1A1A1A',
ContainerHover: '#262626',
ContainerActive: '#333333',
ContainerLine: '#404040',
OnContainer: '#F2F2F2',
},
Surface: {
Container: '#262626',
ContainerHover: '#333333',
ContainerActive: '#404040',
ContainerLine: '#4D4D4D',
OnContainer: '#F2F2F2',
},
SurfaceVariant: {
Container: '#333333',
ContainerHover: '#404040',
ContainerActive: '#4D4D4D',
ContainerLine: '#595959',
OnContainer: '#F2F2F2',
},
Primary: {
Main: '#BDB6EC',
MainHover: '#B2AAE9',
MainActive: '#ADA3E8',
MainLine: '#A79DE6',
OnMain: '#2C2843',
Container: '#413C65',
ContainerHover: '#494370',
ContainerActive: '#50497B',
ContainerLine: '#575086',
OnContainer: '#E3E1F7',
},
Secondary: {
Main: '#FFFFFF',
MainHover: '#E5E5E5',
MainActive: '#D9D9D9',
MainLine: '#CCCCCC',
OnMain: '#1A1A1A',
Container: '#404040',
ContainerHover: '#4D4D4D',
ContainerActive: '#595959',
ContainerLine: '#666666',
OnContainer: '#F2F2F2',
},
Success: {
Main: '#85E0BA',
MainHover: '#70DBAF',
MainActive: '#66D9A9',
MainLine: '#5CD6A3',
OnMain: '#0F3D2A',
Container: '#175C3F',
ContainerHover: '#1A6646',
ContainerActive: '#1C704D',
ContainerLine: '#1F7A54',
OnContainer: '#CCF2E2',
},
Warning: {
Main: '#E3BA91',
MainHover: '#DFAF7E',
MainActive: '#DDA975',
MainLine: '#DAA36C',
OnMain: '#3F2A15',
Container: '#5E3F20',
ContainerHover: '#694624',
ContainerActive: '#734D27',
ContainerLine: '#7D542B',
OnContainer: '#F3E2D1',
},
Critical: {
Main: '#E69D9D',
MainHover: '#E28D8D',
MainActive: '#E08585',
MainLine: '#DE7D7D',
OnMain: '#401C1C',
Container: '#602929',
ContainerHover: '#6B2E2E',
ContainerActive: '#763333',
ContainerLine: '#803737',
OnContainer: '#F5D6D6',
},
Other: {
FocusRing: 'rgba(255, 255, 255, 0.5)',
Shadow: 'rgba(0, 0, 0, 1)',
Overlay: 'rgba(0, 0, 0, 0.8)',
},
};
export const darkTheme = createTheme(color, darkThemeData);
export const butterTheme = createTheme(color, {
...darkThemeData,
Background: {
Container: '#1A1916',
ContainerHover: '#262621',
ContainerActive: '#33322C',
ContainerLine: '#403F38',
OnContainer: '#FFFBDE',
},
Surface: {
Container: '#262621',
ContainerHover: '#33322C',
ContainerActive: '#403F38',
ContainerLine: '#4D4B43',
OnContainer: '#FFFBDE',
},
SurfaceVariant: {
Container: '#33322C',
ContainerHover: '#403F38',
ContainerActive: '#4D4B43',
ContainerLine: '#59584E',
OnContainer: '#FFFBDE',
},
Secondary: {
Main: '#FFFBDE',
MainHover: '#E5E2C8',
MainActive: '#D9D5BD',
MainLine: '#CCC9B2',
OnMain: '#1A1916',
Container: '#403F38',
ContainerHover: '#4D4B43',
ContainerActive: '#59584E',
ContainerLine: '#666459',
OnContainer: '#F2EED3',
},
}); |