Skip to content

Commit df5a531

Browse files
authored
C89 compliance, lowercase naming, iOS fix, and core option enhancements (#94)
* Add stb_image implementation file This commit introduces the implementation of stb_image functions in a new source file, stb_image_impl.c. This file includes the necessary definitions to enable the functionality provided by the stb_image library. Only one C file should define STB_IMAGE_IMPLEMENTATION to avoid multiple definitions. * Update binary libraries for various architectures * feat: Implement in-game file browser for FreeIntv - Added comprehensive technical overview and visual reference documentation for the file browser feature. - Added support for various platforms, ensuring consistent behavior across Windows, Linux, macOS, Android, Switch, and Vita. - Included error handling strategies and performance considerations for efficient operation. - Updated build configurations to include new source files for different architectures (arm64-v8a, armeabi-v7a, riscv64, x86, x86_64). * feat: Add initial libretro info file for FreeIntvTSOverlay * Add object dependency files for FreeIntvTSOverlay source files - Created dependency files for various source files including cart.c, controller.c, cp1610.c, and others. - Updated dependencies for libretro-common components such as compat_posix_string.c, compat_snprintf.c, and file_path.c. - Included necessary headers for each source file to ensure proper compilation. - Enhanced project structure by organizing object files and their dependencies for better build management. * feat: Update documentation and code for FreeIntvTSOverlay touchscreen support * Enhance README with images and contributor details Added images and updated contributors section in README. * docs: Enhance README with details on touchscreen and mouse input for overlays * Implement code changes to enhance functionality and improve performance * Add Ko-fi username for funding Added Ko-fi username for funding support. * chore: Prepare for upcoming feature enhancements and optimizations * chore: Update documentation for clarity and consistency * Refactor code structure for improved readability and maintainability * Checked compile on Android, Windows, and Linux * Refactor code structure for improved readability and maintainability * Implement feature X to enhance user experience and fix bug Y in module Z * chore: Update README for clarity and consistency * Fix: Revert valid_extensions from 'intv' to 'int' to restore ZIP file loading * chore: Update .gitignore to exclude build artifacts and IDE files * chore: Remove build artifacts tracked by git (now in .gitignore) * refactor: Rename asset folder from FreeIntvTS_Overlays to freeIntv_image_assets * Removed utility buttons and added logo banner, prepping for change to a 'core option'. * Changed naming entries to FreeIntv without the TS Overlay to prepare for change to core option from separate core * Incorporate PNG files into the code to alleviate need for external files * corrected overlay loading code, and fixed keypad transparency * updated documentation and screenshots * Enhance user documentation with installation steps and dual-screen display instructions * Update FreeIntv_libretro.info for improved clarity and accuracy in display name, supported extensions, and description * Add dual-screen touchscreen and overlay support to FreeIntv core - Implement side-by-side dual-screen rendering (1074×600 workspace) - Add touchscreen hotspot input detection for 12 keypad buttons - Support ROM-specific PNG overlays (370×600 pixels) - Add cross-platform input handling (Android, Windows, Linux) - Include screen swap functionality - Update documentation with setup and usage instructions - Update core metadata and info file - Remove debug logging infrastructure - Maintain full backward compatibility * Update FreeIntv_libretro.info, README.md, and USER_GUIDE.md for enhanced onscreen interactive keypad overlays and improved versioning * fix: Correct corename typo in FreeIntv_libretro.info * Corrected multi-screen core option menu item. Fixed onscreen keypad in default single screen mode. * Updated wording for the new core option to specify restart and touchscreen/mouse are required. * Add step to mark repo as safe in workflow * Updated readme and user guide * modified code to comply with c89 coding model * Removed printf and fflush commands leftover from debugging code * Corrected case for core name. Added fix for iOS9 build. Fixed C89 correction remnants, * Fix Android build: Revert LOCAL_MODULE to 'retro' for buildbot compatibility Android.mk LOCAL_MODULE was changed to 'freeintv' but buildbot expects 'libretro.so'. Reverting to 'retro' (last successful build at PR #89) to match buildbot expectations. This produces libretro.so as expected by the build system. * Fix iOS compatibility: Disable thread-local storage for armv7 * Fixed build conflicts with MSVC, iOS, and Android * Add build-test.ps1 to .gitignore for local build and test script exclusion * Fix PS2 build: Remove duplicate util_bg_color declaration Removed duplicate 'unsigned int util_bg_color' declaration at line 378 which conflicted with 'unsigned int utility_bg_color' at line 401. This was causing undeclared variable errors in PS2 builds. * Fix PS2 build: Add all missing variable declarations Added missing declarations in render_multi_screen(): - overlay_pixel_val, pixel, base_pixel - inv_alpha, base_r/g/b, bg_r/g/b - ctrl_base_x_offset, overlay_x_offset, ctrl_x - r, g, b, existing_r/g/b - offset, corner_cut, border_colors array - util_border_x1/x2/y1/y2, hotspot_x_adjust, highlight_color - Changed utility_bg_color from int to unsigned int - Fixed util_bg_color references to use utility_bg_color * Fix PS2 build: Remove redeclaration of hotspot_x_adjust Changed 'int hotspot_x_adjust = ...' to 'hotspot_x_adjust = ...' at line 694 since the variable is already declared at the function start (line 406). C89 does not allow redeclaration within the same scope. --------- Co-authored-by: Jason Carr <[email protected]>
1 parent d29846b commit df5a531

File tree

10 files changed

+215
-147
lines changed

10 files changed

+215
-147
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ jni/obj/
3131
*~
3232
.DS_Store
3333

34+
# Local build and test scripts
35+
build-test.ps1
36+
3437
# Temporary and log files
3538
*.tmp
3639
*.temp

FreeIntv_libretro.info

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
display_name = "Mattel - Intellivision (FreeIntv)"
1+
display_name = "Mattel - Intellivision (freeintv)"
22
authors = "David Richardson, Oscar Toledo G., Joe Zbiciak, Jason Carr"
33
supported_extensions = "int|bin|rom"
4-
corename = "FreeIntv"
4+
corename = "freeintv"
55
categories = "Emulator"
66
license = "GPLv2+"
77
permissions = ""

ISSUE_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
This issue tracker is NOT for help or support. Please use the libretro forums (https://forums.libretro.com/) for those kinds of posts.
22

3-
BEFORE you report a bug make sure you have tried the latest buildbot version of FreeIntv or compiled it from source. Your bug might be already fixed.
3+
BEFORE you report a bug make sure you have tried the latest buildbot version of freeintv or compiled it from source. Your bug might be already fixed.
44

55
If you are sure that it's a bug, please answer the following questions:
66
- Which version of RetroArch are you using?

LICENSE

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11

2-
FreeIntv Copyright (c) 2017-2018 David Richardson [Recompile]
2+
freeintv Copyright (c) 2017-2018 David Richardson [Recompile]
33

4-
FreeIntv is free software; you can redistribute it and/or modify
4+
freeintv is free software; you can redistribute it and/or modify
55
it under the terms of the GNU General Public License as published by
66
the Free Software Foundation; either version 2 of the License, or
77
(at your option) any later version.
88

9-
FreeIntv is distributed in the hope that it will be useful,
9+
freeintv is distributed in the hope that it will be useful,
1010
but WITHOUT ANY WARRANTY; without even the implied warranty of
1111
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1212
GNU General Public License for more details.
1313

1414
You should have received a copy of the GNU General Public License along
15-
with FreeIntv; if not, write to the Free Software Foundation, Inc.,
15+
with freeintv; if not, write to the Free Software Foundation, Inc.,
1616
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1717

1818

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ endif
4545

4646

4747
CORE_DIR += .
48-
TARGET_NAME := FreeIntv
48+
TARGET_NAME := freeintv
4949
SOURCE_DIR := src
5050

5151
ifeq (,$(findstring msvc,$(platform)))

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# FreeIntv with Onscreen Interactive Keypad Overlays
2-
FreeIntv is a libretro emulation core for the Mattel Intellivision designed to be compatible with joypads from the SNES era forward even if they originally required a number pad.
1+
# freeintv with Onscreen Interactive Keypad Overlays
2+
freeintv is a libretro emulation core for the Mattel Intellivision designed to be compatible with joypads from the SNES era forward even if they originally required a number pad.
33

44
**Current Version**: Enhanced with onscreen interactive keypad overlays for Android, Windows, and Linux (November 24, 2025)
55

66
## Authors & Contributors
77

8-
FreeIntv was created by David Richardson.
8+
freeintv was created by David Richardson.
99
The PSG and STIC emulation was made closer to hardware and optimized by Oscar Toledo G. (nanochess), who also added save states.
1010

1111
The Intellivoice code has been contributed by Joe Zbiciak (author of jzintv), and adapted by Oscar Toledo G. (nanochess)
@@ -18,14 +18,14 @@ The Intellivoice code has been contributed by Joe Zbiciak (author of jzintv), an
1818

1919
## Installation
2020

21-
**Step 1: Install FreeIntv Core**
21+
**Step 1: Install freeintv Core**
2222
- Place the compiled core file for your platform into RetroArch's `cores/` directory:
23-
- Windows: `FreeIntv_libretro.dll`
24-
- Linux: `FreeIntv_libretro.so`
25-
- macOS: `FreeIntv_libretro.dylib`
23+
- Windows: `freeintv_libretro.dll`
24+
- Linux: `freeintv_libretro.so`
25+
- macOS: `freeintv_libretro.dylib`
2626

2727
**Step 2: Install the Core Info File**
28-
- Copy `FreeIntv_libretro.info` to RetroArch's `info/` directory
28+
- Copy `freeintv_libretro.info` to RetroArch's `info/` directory
2929
- ⚠️ The filename must match the core filename exactly (excluding the file extension)
3030

3131
**Step 3: Add BIOS Files**
@@ -34,11 +34,11 @@ The Intellivoice code has been contributed by Joe Zbiciak (author of jzintv), an
3434
- `grom.bin` (Graphics ROM)
3535

3636
**Step 4: Launch Games**
37-
- Load an Intellivision ROM through RetroArch using the FreeIntv core
37+
- Load an Intellivision ROM through RetroArch using the freeintv core
3838

3939
## Enabling Onscreen Interactive Overlays
4040

41-
The FreeIntv core features onscreen interactive keypad overlays that display custom controller graphics directly on screen, allowing touch or mouse input.
41+
The freeintv core features onscreen interactive keypad overlays that display custom controller graphics directly on screen, allowing touch or mouse input.
4242

4343
### To Enable the Feature:
4444

USER_GUIDE.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# FreeIntv with Onscreen Interactive Keypad Overlays
1+
# freeintv with Onscreen Interactive Keypad Overlays
22

33
## Overview
4-
FreeIntv is a libretro emulation core for the Mattel Intellivision designed to be compatible with joypads from the SNES era forward even if they originally required a number pad. This guide explains how to set up and use the core in RetroArch, including instructions for overlay PNG files.
4+
freeintv is a libretro emulation core for the Mattel Intellivision designed to be compatible with joypads from the SNES era forward even if they originally required a number pad. This guide explains how to set up and use the core in RetroArch, including instructions for overlay PNG files.
55

66
**Current Version**: Enhanced with onscreen interactive keypad overlays for Android, Windows, and Linux (November 24, 2025)
77

88
## Authors & Contributors
99

10-
FreeIntv was created by David Richardson.
10+
freeintv was created by David Richardson.
1111
The PSG and STIC emulation was made closer to hardware and optimized by Oscar Toledo G. (nanochess), who also added save states.
1212

1313
The Intellivoice code has been contributed by Joe Zbiciak (author of jzintv), and adapted by Oscar Toledo G. (nanochess)
@@ -18,22 +18,22 @@ The Intellivoice code has been contributed by Joe Zbiciak (author of jzintv), an
1818

1919
## Requirements
2020
- RetroArch (latest recommended)
21-
- FreeIntv core (`FreeIntv_libretro.so`, `.dll`, or `.dylib`)
21+
- freeintv core (`freeintv_libretro.so`, `.dll`, or `.dylib`)
2222
- Intellivision BIOS files: `exec.bin`, `grom.bin` (place in RetroArch `system` folder)
2323
- Game ROMs (Intellivision format)
2424

2525
---
2626

2727
## Installation
2828

29-
**Step 1: Install FreeIntv Core**
29+
**Step 1: Install freeintv Core**
3030
- Place the compiled core file for your platform into RetroArch's `cores/` directory:
31-
- Windows: `FreeIntv_libretro.dll`
32-
- Linux: `FreeIntv_libretro.so`
33-
- macOS: `FreeIntv_libretro.dylib`
31+
- Windows: `freeintv_libretro.dll`
32+
- Linux: `freeintv_libretro.so`
33+
- macOS: `freeintv_libretro.dylib`
3434

3535
**Step 2: Install the Core Info File**
36-
- Copy `FreeIntv_libretro.info` to RetroArch's `info/` directory
36+
- Copy `freeintv_libretro.info` to RetroArch's `info/` directory
3737
- ⚠️ The filename must match the core filename exactly (excluding the file extension)
3838

3939
**Step 3: Add BIOS Files**
@@ -42,13 +42,13 @@ The Intellivoice code has been contributed by Joe Zbiciak (author of jzintv), an
4242
- `grom.bin` (Graphics ROM)
4343

4444
**Step 4: Launch Games**
45-
- Load an Intellivision ROM through RetroArch using the FreeIntv core
45+
- Load an Intellivision ROM through RetroArch using the freeintv core
4646

4747
---
4848

4949
## Enabling Onscreen Interactive Overlays
5050

51-
The FreeIntv core features onscreen interactive keypad overlays that display custom controller graphics directly on screen, allowing touch or mouse input.
51+
The freeintv core features onscreen interactive keypad overlays that display custom controller graphics directly on screen, allowing touch or mouse input.
5252

5353
### To Enable the Feature:
5454

jni/Android.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ ANDROID_SOURCES_C := \
3232
../src/deps/libretro-common/time/rtime.c
3333

3434
include $(CLEAR_VARS)
35-
LOCAL_MODULE := FreeIntv
35+
LOCAL_MODULE := retro
3636
LOCAL_SRC_FILES := $(ANDROID_SOURCES_C)
3737
LOCAL_C_INCLUDES := $(INCLUDE_DIRS)
3838
LOCAL_CFLAGS := -DANDROID -D__LIBRETRO__ -DHAVE_STRINGS_H -DRIGHTSHIFT_IS_SAR

0 commit comments

Comments
 (0)