Skip to content

AbdullahMohammad96/CassetteBeasts-Accessibility-Mod

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cassette Beasts Accessibility Mod

DEVELOPMENT PAUSED

Development of this mod is currently on hold. The developer is busy with other commitments, and the weekly Claude AI usage limit has been completely exhausted working on this mod.

I'll be upgrading my Claude plan soon, so there won't be long stretches between development sessions going forward.

This mod is NOT in a playable state. It exists purely for early testing and gathering feedback. Many core features are broken or missing. Please do not purchase Cassette Beasts expecting to play it accessibly with this mod - it is nowhere near ready for that.

If you're interested in contributing or testing, feel free to explore the code, but understand that active development is paused for now.


IMPORTANT: EXTREMELY EARLY TESTING (v0.7.0)

This mod is in EXTREMELY EARLY TESTING and should NOT be considered a playable accessibility solution.

Before You Buy Cassette Beasts:

  • DO NOT purchase this game expecting it to be accessible right now
  • A large portion of the game is completely inaccessible with this mod
  • There are many bugs and features that don't work
  • Only buy this game if you want to actively help develop this accessibility mod
  • This repository exists for feedback, contributions, and collaborative development

The mod may be slightly more friendly to low vision users now, but many menus and features are still missing accessibility support.

If you're a blind/visually impaired player looking for a fully accessible gaming experience, this is not ready yet. Check back later or consider contributing to help make it happen.


What is This Project?

This is an attempt to add text-to-speech (TTS) accessibility support to Cassette Beasts, an indie monster-collecting RPG built in Godot Engine 3.5.1.

Why This Approach?

We use direct PCK modification (same approach as the Buckshot Roulette Accessibility Mod) because the Steam Workshop system is designed for content mods, not engine-level accessibility features.


Hotkeys

Key Function
H Player health (monster name + HP percentage)
Shift+H Enemy health (monster name + HP percentage)
T Time of day (Day #, hour, minute, day/night)
G Gold/money amount
J Player AP in battle (monster name + current/max AP)
F Fusion meter percentage (or "Fusion ready!")
R Relationship level with current partner
B Bestiary details (when in bestiary menu - reads species, types, bio, stats)
F4 Toggle accessibility on/off
F5 Repeat last spoken text

Current Status

What Works (Tested)

  • Menu opening announcements
  • Dialogue text with speaker names
  • Dialogue options (queued after speech finishes)
  • Battle menu buttons (Fight, Forms, Items, Flee, Fuse)
  • Move selection in battle (name, AP cost, type, category, power, accuracy, hits, description)
  • Naming screen announcements
  • Item button focus (inventory)
  • Loot screen item list
  • Experience/level up announcements
  • Notification popups
  • H - Player health hotkey
  • Shift+H - Enemy health hotkey
  • T - Time of day hotkey
  • G - Gold/money hotkey
  • J - Player AP hotkey (in battle)

New in v0.7.0 (Needs Testing)

  • F hotkey - Fusion meter percentage
  • R hotkey - Relationship level with partner
  • Recording chance - Announces final record percentage when attempting to capture
  • Fusion meter - Auto-announces "Fusion ready!" when meter fills
  • Damage numbers - Announces damage dealt in battle
  • Critical hits - Announces "Critical hit!" with damage
  • Healing - Announces "Healed X" amounts
  • AP changes - Announces "gained/lost X AP" during battle
  • Status effects - Announces buff/debuff application
  • Battle text toasts - Recording failed, missed attacks, etc.
  • Bootleg indicator - Tapes announce if they're bootlegs
  • Relationship info - Party members announce relationship level + "ready to level up"

Added But UNTESTED (Should Work)

  • Bestiary menu list navigation - announces species code, name, and status (seen/recorded)
  • B hotkey - reads full bestiary entry details (types, bio text, encounter/record/defeat stats)
  • Tape/Forms menu navigation - announces tape name, species, types, HP%, broken status, grade
  • Beast info screen (PartyTapeUI)
  • Remaster menu - announces what tape can remaster into

What's Still Broken or Incomplete

  • Target selection after choosing move
  • Item selection in battle inventory
  • Color names in character creation
  • Settings menu
  • Map/overworld navigation
  • Combat flow (turn order)
  • Quest system updates
  • And many other menus/screens...

Installation

Due to copyright considerations, we distribute only our code additions, not modified game files.

See patches/INSTALLATION_GUIDE.md for complete step-by-step instructions.

Quick Overview

Prerequisites

Setup Steps

  1. Backup your original game files

    Copy CassetteBeasts.pck to CassetteBeasts.pck.backup
    
  2. Decompile the game (if you need fresh source):

    gdre_tools.exe --recover="CassetteBeasts.pck" --output-dir="C:\CassetteBeasts-Decompiled"
  3. Copy modified source files from this repo's source/ folder to your decompiled game, maintaining folder structure

  4. Copy the godot-tts addon to addons/godot-tts/

  5. Add Accessibility autoload to project.godot:

    [autoload]
    Accessibility="*res://global/Accessibility.gd"
  6. Copy DLLs to game folder (alongside CassetteBeasts.exe):

    • godot_tts.dll
    • nvdaControllerClient64.dll
    • SAAPI64.dll
  7. Repack the PCK:

    GodotPCKExplorer.Console.exe -p "C:\CassetteBeasts-Decompiled" "C:\...\Cassette Beasts\CassetteBeasts.pck" "1.3.5.1"

Technical Background

The TTS Problem

  • Buckshot Roulette: Godot 4.1.1 - has native DisplayServer.tts_speak()
  • Cassette Beasts: Godot 3.5.1 - NO native TTS support

The Solution: godot-tts GDNative Addon

We use the godot-tts GDNative addon which provides:

  • Direct screen reader integration via Tolk (NVDA Controller Client, SAPI)
  • No process spawning - native DLL calls
  • Proper interrupt support - stop() immediately silences speech

Supported Screen Readers:

  • NVDA (via nvdaControllerClient64.dll)
  • JAWS
  • System Access
  • SAPI fallback (via SAAPI64.dll)

File Structure

CassetteBeasts-AccessibilityMod/
├── README.md                    # This file
├── source/                      # Modified GDScript files
│   ├── global/
│   │   ├── Accessibility.gd     # Main TTS singleton
│   │   └── notifications/
│   │       └── GenericPopUp.gd  # Notification TTS
│   ├── menus/
│   │   ├── BaseMenu.gd          # Menu opening announcements
│   │   ├── bestiary/            # Bestiary TTS
│   │   │   ├── BestiaryListButton.gd
│   │   │   └── BestiaryListButtonFusion.gd
│   │   ├── evolution/
│   │   │   └── EvolutionMenu.gd # Remaster TTS
│   │   ├── give_tape/
│   │   ├── text_input/
│   │   ├── inventory/
│   │   ├── party/
│   │   │   ├── TapeButton.gd    # Tape/forms menu TTS + bootleg
│   │   │   └── PartyMemberButton.gd  # Relationship TTS
│   │   ├── party_tape/
│   │   ├── loot/
│   │   └── gain_exp/
│   ├── nodes/
│   │   └── message_dialog/
│   │       ├── MessageDialog.gd # Dialogue TTS
│   │       └── MenuDialog.gd    # Dialogue options TTS
│   └── battle/
│       └── ui/
│           ├── MoveButton.gd
│           ├── TargetButton.gd
│           ├── FightOrderSubmenu.gd
│           ├── BattleToast_Default.gd      # Damage/heal/AP TTS
│           ├── BattleToast_RecordingChance.gd  # Recording % TTS
│           └── cassette_player/
│               ├── CassettePlayer3D.gd
│               └── FusionMeter.gd  # "Fusion ready!" TTS
├── addons/
│   └── godot-tts/               # TTS GDNative addon
│       ├── TTS.gd
│       ├── godot_tts.dll
│       ├── nvdaControllerClient64.dll
│       └── SAAPI64.dll
└── docs/
    ├── ACCESSIBILITY_MOD_STATUS.md
    └── CLAUDE_SESSION_CONTEXT.md

Contributing

How You Can Help

  1. Testing: Play the game and report what doesn't work
  2. Code: Fix bugs or add TTS to uncovered areas
  3. Documentation: Improve this README or write guides

Reporting Issues

When reporting bugs, please include:

  • What you were trying to do
  • What was announced (or not announced)
  • The menu/screen you were on
  • Any console output (run with --verbose flag)

Code Style

When adding TTS to a new area:

  1. Check if Accessibility singleton exists: if Accessibility:
  2. Use appropriate announce function or speak() directly
  3. Use call_deferred() if the UI isn't ready yet
  4. Don't interrupt important speech - use speak(text, false) for non-interrupting

Version History

Version Date Changes
0.7.0 2026-02-15 Added: Recording chance TTS, Fusion meter TTS + hotkey (F), Relationship hotkey (R), Damage/heal/AP announcements, Bootleg indicator, Battle text toasts
0.6.0 2026-02-14 Major expansion: Battle UI, status effects, notifications, many menu improvements
0.5.0 2026-02-14 Added FightOrderSubmenu TTS, runtime color detection
0.4.0 2026-02-14 Added speech queue system, dialogue options, cassette obtained, naming screen
0.3.0 2026-02-14 Replaced PowerShell with godot-tts native addon
0.2.0 2026-02-14 Fixed TTS overlap, color names, dialogue timing, battle menu TTS
0.1.0 2026-02-13 Initial implementation - basic TTS framework

Credits


License

This accessibility mod is provided for accessibility purposes. The modified scripts are derivatives of Bytten Studio's original code.

The godot-tts addon is licensed under MIT - see addons/godot-tts/LICENSE.


Contact


Remember: This is NOT ready for general use. Only engage with this project if you want to help develop it.

About

Accessibility mod for Cassette Beasts adding TTS support for visually impaired players. EARLY DEVELOPMENT - NOT A RELEASE.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • GDScript 100.0%