NESMAKER FROM SCRATCH VIDEO SERIES (PART 2 a b c) - Setting up a title screen and the Menu Plugin DOWNLOAD

drexegar

Member
Here is the three part series I made this week:

PART 1: Making a title screen and talking about Nesmaker HUD graphics and painting tiles

PART 2: The Making of the Menu Plugin and how I put it together

PART 3: How to use the Menu Plugin - You can watch this video if you don't feel like reading to use the PLUGIN

UNOFFICIAL MENU PLUGIN EX PLUS AUTOTEXT for NESMAKER 4.5.9:

*WARNING* USE AT YOUR OWN RISK.


THIS IS AN UNOFFICIAL PLUGIN FOR NESMAKER, THE 8-BIT HEROES DO NOT ENDORSE THIS PLUGIN

I’M NOT RESPONSIBLE FOR YOUR CHANGES WITH NESMAKER.

BACKUP YOUR PROJECT AND NESMAKER BUILD BEFORE ATTEMPTING ANYTHING, ESPECIALLY IF YOU DON’T KNOW HOW TO HANDLE SIMPLE COPY AND PASTE CODE IN ASM.

BASIC KNOWLEDGE OF NESMAKER IS REQUIRED.


Created by Patircio Pereira - GXSCChater, DREXEGAR

Features:
  • Turn any screen into a Menu through the UserScreenBytes without touching the nesmaker Code! (Just one time installation in your Nesmaker code)
  • Create Menu with Text window - Control Position and Size of your textbox to work with your graphics
  • Use the text entries in nesmaker to design the text of your menu
  • Create up to 5 choices with 5 warps
  • Cursor placement with 8x8 sprite with predraw code
  • Disable textbox and Use your own text graphics
  • Enable AutoText and create your own multiple choice question screens!

What must be Sacrificed:
  • ScreenTriggers are used for RAM starting from the bottom 31, 30, 29 etc. this uses ScreenTrigger 23 - 31 (last 72 screentriggers out of the 255)
  • If you don't know how to use and recycle screentriggers and really need a lot of them, then update the code with your own RAM variables!
  • You need 1 gamestate (default is 8th one as MENU for the code, you'll have to update the code if your want to change it)
  • You also need 1 userscreenFlag01 (default is the 7th one as AUTOTEXT)
  • You also need to add 2 constants: CURSOR_SPRITE and MENU_LINE_SPACING


STEP 1:
You must enable UserScreenBytes


You can watch this video:
View: https://www.youtube.com/watch?v=BRJMkVj-ol4


Which also follows this tutorial here by Chronicle of Legends

STEP 2:
  • Go to properties and Project labels
  • Change your "GameState-7" (8th Gamestate) as "MENU"
  • Change your Screen Flags "User Flags 14" (the User screen flags 2nd 7th bit) to "AUTOTEXT"
  • Go to User Constants and add:
    • CURSOR_SPRITE (choose your sprite from 0 - 255)
    • MENU_LINE_SPACING (multiples of eight, 8 for single line, 16 for double line etc.)

STEP 3:
You have a choice of replace nesmakers code of make a custom folder to not ruin your nesmaker default

Go to your Nesmaker Folder and into GameEngineData\Routines and Create a new folder called "NESMAKER+" (you want to keep it this way for future plugins!)

You Put in your files anyway you want of follow the same structure of the installation folder that follows nesmaker structure

SCREEN LOAD SCRIPT
  • Go to your Script settings and find your Game section and look for your extraScreenLoad_x Script, x being your module name at the end
  • Open your ADDTO_extraScreenLoad asm file in the installation Game folder and copy from line 7(AUTOTEXT) to the end of line 112 (MENU end) and copy that into your own extraScreenLoad_x asm file (recommend it at the bottom of the file after all other code is finished)


PREDRAW CURSOR SCRIPT
  • Go to your Script settings and find your Game section and look for your doSpritePreDraw Script which may also have a module name at the end
    • Open your ADDTO_doSpritePreDraw asm file in the installation Game folder and copy from line 4 (MENU) to the end of line 23 (MENU end)
    • and copy that into your own extraScreenLoad_x asm file (recommend it at the bottom of the file after all other code is finished)

ADD INPUT SCRIPTS

You can Drop these Input Scripts anywhere you want (Recommended add it to your NESMAKER+ folder)
Install these into your inputs for your MENU gamestate



HOW TO USE MENU:

When the gamestate for a screen is set to the MENU gamestate the options are as follows from your UserScreenBytes:

UserScreenByte00 XY Menu Position (by 16x16 metatile) (and cursor)
UserScreenByte01 XY Menu Text Box Size
UserScreenByte02 Text Entry (1-255, 0 to disable menu) (0-255 for AUTOTEXT)
UserScreenByte03 Number of Menu Items (1 - 5 warps)
UserScreenByte04 Warp 2 (Warp 1 is the nesmaker default Warp)
UserScreenByte05 Warp 3
UserScreenByte06 Warp 4
UserScreenByte07 Warp 5

NOTE: For Menu you need to use even number only for Menu Position or Size for no palette glitches
If using AUTO TEXT, it is ok to use any number odd or even to adjust your cursor placement.


BONUS AUTOTEXT:
When UserFlag 2 AUTOTEXT is checked. It will force a text box from the UserScreenByte02 (0-255). This is the default HUD text box position and size setup in Nesmaker.

You can still use the rest of the UserScreenBytes to control the cursor position and be able to create a paragraph and a menu under it!


Ok Have Fun! Remember if you don't want to read this you can follow Part 3 where I shows you how to install it and run it.

Download is also below with the files.

I could not ADD the code onto the post because it goes over the 10,000 text limit.
 

Attachments

  • MENU_PLUGIN_EX_ rev1.zip
    26.2 KB · Views: 38

timefor

New member
Using the Adventure mod like in your video demo, but getting out of range errors.

As soon as I add the ADDTO_extraScreenLoad.asm code into ExtraScreenLoadData_AdventureBase.asm and ADDTO_doSpritePreDraw.asm into doSpritePreDraw_AdventureBase.asm, I get these out of range errors. Both those files were unmodified original.

Code:
pass 1..
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(23):ReturnBank(5): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(23):ReturnBank(6): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(24): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(25): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(26): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(27): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(28): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(29): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(30): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(31): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(32): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(50): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(51): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(52): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(53): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(21): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(22): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(23): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(24): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(26): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(27): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(28): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(29): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(80): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\StopMoving_AdventureBase.asm(2): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\StopMoving_AdventureBase.asm(3): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\StopMoving_AdventureBase.asm(4): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(83): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(86): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(89): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(92): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(95): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(98): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(101): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(104): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(107): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(110): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(113): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(116): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(119): PC out of range.
demo.txt written.
 
Using the Adventure mod like in your video demo, but getting out of range errors.

As soon as I add the ADDTO_extraScreenLoad.asm code into ExtraScreenLoadData_AdventureBase.asm and ADDTO_doSpritePreDraw.asm into doSpritePreDraw_AdventureBase.asm, I get these out of range errors. Both those files were unmodified original.

Code:
pass 1..
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(23):ReturnBank(5): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(23):ReturnBank(6): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(24): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(25): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(26): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(27): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(28): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(29): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(30): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(31): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(32): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(50): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(51): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(52): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(20):MoveTowardsPoint(53): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(21): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(22): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(23): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(24): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(26): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(27): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(28): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\MoveTowardsPlayer_AdventureBase.asm(29): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(80): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\StopMoving_AdventureBase.asm(2): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\StopMoving_AdventureBase.asm(3): PC out of range.
Routines\BASE_4_5\Game\MOD_AdventureBase\AI_Scripts\StopMoving_AdventureBase.asm(4): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(83): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(86): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(89): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(92): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(95): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(98): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(101): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(104): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(107): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(110): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(113): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(116): PC out of range.
Routines\BASE_4_5\Game\LoadAllSubroutines.asm(119): PC out of range.
demo.txt written.
Both

drexegar and Chronicle of Legends use the Platform Modules so that could ( not saying it does) be the problem have you tried it in a test Platform game?​

 
Top Bottom