1

The biggest part of this all I interested is a realisation of short pause before appearance of new character's reply text, when game must not to react to buttons pressing - i. e. I need a functional analogue of RenPy's $ renpy.pause () function. I tried to use the code like the textTimer from my RPG engine, but for some reason it doesn't work and interferes to execute a sprites clearing code in the basic function even.

Maybe, you'll help me to fix a background colour glitches with a character's pictures and stringe pallete bug of unique title screen tile at the same time.

You can see the first results of my work here.
The source is here. Warning: this project uses the DATlib 0.3!!!
avatar

2

Proper color for transparency on sprites and fix is Fuchsia (RGB 255,0,255)

3

That's magenta smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4

In main.c move waitVBlank(); in line 572 up under SCClose(); 554. Also I think that the function Control_Sub(); should not be executed between SCClose and waitVBlank. There are other places in your code this happens.

The color code you need is ff0ff I believe.

Hope this helps. I'll look through the code again later.
avatar

5

Zerosquare (./3) :
That's magenta smile

Nope, Fuchsia embarrassed

6

grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

7

hine62 (./4):In main.c move waitVBlank(); in line 572 up under SCClose(); 554. Also I think that the function Control_Sub(); should not be executed between SCClose and waitVBlank. There are other places in your code this happens.

I am sorry, but these changes had no effect. You can test the source version below as a proof.

The color code you need is ff0ff I believe.

I know it, and therefore I tried to place these pictures on the ff00ff coloured background through Photoshop.

tromb Fichier joint : main.c
avatar

8

Moving SCClose(); was only a common practice suggestion for the NeoGeo. Program code should go between waitVBlank() and SCClose(). Like this:
while(1) { waitVBlank(); /*Do stuff*/ SCClose(); }
It can be this way also...
while(1) { SCClose(); waitVBlank(); /*Do Stuff*/ }
I did get your program to run, but for some reason I couldn't compile any changes? Weird.... anyway here is my suggestion.

Put this in the variables section of introduction()
int pauseTimer = 0; //keep track of time int isPaused = 1; //keep track of pause state

Then use a timer to pause the program in an action state. I believe that the neogeo updates 60 times per second. So you could pause for 60 ticks or 1 second. To pause and action just set isPaused in the action before the one you want paused.

if(action==0) { if(isPaused == 1) { pauseTimer++; if(pauseTimer >= 240) //4 seconds { isPaused = 0; //reset pauseTimer = 0; //reset } }else { fixPrint(1,3,0,1,"Мне продолжает сниться этот сон."); fixPrint(1,4,0,1,"Каждую ночь одно и то же."); fixPrint(1,5,0,1,"Ну, сон и сон! По-настоящему странные"); fixPrint(1,6,0,1,"вещи происходят, когда я просыпаюсь."); } }
One last thing. Move the Day1() function above introduction(). The compiler will like this better smile
avatar

9

Thank you very much! Now everything works greatly!
avatar

10

Glad I could help!
avatar

11

I'd like you help me with a selection of background files colour reduction way - I decided to process these files with IrfanView (reducting to 256 colours) before giving them to DATimage. But for some reason, althoght DATimage successfully reduces a colours number per tile, it increases a colour number in the whole file.

Here is a sample for comparsion.

tromb Fichier joint : lqTX
tromb Fichier joint : oizS
avatar

12

Hi VasiiiyFamilya,

EX:

Image is 320x224 (Neo Geo Screen Size) = 71680 pixels
16x16 tile = 256 pixels
Tiles per 320x224 image = 280 tiles

DATimage with this flag -mtc15 will convert an image to the neo geo format (15 colours per tile)

The total number of palettes that can be used on Neo Geo is 256 (0-255) (There is another palette bank I haven't used it yet....probably can only access one bank at a time)
If all 280 tiles have a unique palette you are over the total number of palettes just to load that image.

It's not that there are more colours added its that each tile can have a unique palette.
Even if the colours repeat throughout the image I believe the compiler is looking at each individual tile as its own mini image with its own palette based on the order it sees the colours.
There is probably some cool compression going on under the hood that HPMAN hooked up but that is the breaks as I know them.

My advice is you must compress your image more until you get a reasonable number of palettes at compile time.

13

Mega Shocked (./12):My advice is you must compress your image more until you get a reasonable number of palettes at compile time.

How should I do it?
avatar

14

I have pretty lame method but I use PNGquant and run my image through it several times.....there can be alot of trial and error involved depending on how obsessed you get.

https://pngquant.org/

DATimage can also reduce colours "Change -mic256 to -mic128 , mic64 etc....

DATimage pathWhereFilesAre\*.png -mtc15 -mic256

15

Mega Shocked (./14):
I have pretty lame method but I use PNGquant and run my image through it several times.....there can be alot of trial and error involved depending on how obsessed you get.

https://pngquant.org/

DATimage can also reduce colours "Change -mic256 to -mic128 , mic64 etc....

DATimage pathWhereFilesAre\*.png -mtc15 -mic256

I just tried this way of color reduction for a most of time, and tried to reduce the mtc maximally for economy of palettes allotted for characters portraits. But more often the result of direct reduction through DATimage (-mtcX or -mtcX & -micX) looks much less visually neat than a result of reduction to 8bpp through IrfanView and PNGquant, despite of larger nunber of colours.

Here is a -mtc15 -mic256 version of previous picture.

tromb Fichier joint : E4ZJ
avatar

16

in my opinion DATIMAGE does a very good job but I think you get the best results when you don't use pre-edited images.
maybe you can upload the original image so that we can do tests together for a better result?

17

blastar (./16):
in my opinion DATIMAGE does a very good job but I think you get the best results when you don't use pre-edited images.
maybe you can upload the original image so that we can do tests together for a better result?

Here is it:

tromb Fichier joint : Xl7N
avatar

18

After I heard about currently running development of WAR●SAW dungeon crawler, I decided to create its Jeju Massacre of 1949-themed clone to Neo-Geo.
However, since WAR●SAW is just preparing to be published and it's unknown what its gameplay will be look like for now, I decided to begin the clone development not from gameplay by itself but from demo attracts (I'm sure that to learn how to make a demo attracts will be useful for absolutely all other my Neo-Geo projects).
For demo attracts realization I used the pieces from VN engine, but for some reason the demo attract doesn't start in 10 sec. after game launch, and also titlescreen BGM doesn't play before you insert coin.
avatar

19

After so much time, I finally figured out what was the reason of problems with the previous version of my WAR●SAW clone. At first, I stupidly forgot to write the demo_timer variable decreasing code because of my hurry and inattention. smile

Now, please tell me more in detail about the "dev mode" and how to add the credits ($0x10FE00 register) in this mode to help me complete the demo attract.
avatar

20

Thoses will return correct credit counters, homeCredits are local variables.

ushort creditsP1() { if(BIOS_MVS_FLAG) return(BIOS_DEVMODE?BIOS_CREDIT_P1:CAB_CREDITS_P1); else return(P1HomeCredits); } ushort creditsP2() { if(BIOS_MVS_FLAG) { if(BIOS_COUNTRY_CODE==COUNTRY_USA) return(BIOS_DEVMODE?BIOS_CREDIT_P2:CAB_CREDITS_P2); else return(BIOS_DEVMODE?BIOS_CREDIT_P1:CAB_CREDITS_P1); } else return(P2HomeCredits); }

21

HPMAN (./20):
Thoses will return correct credit counters, homeCredits are local variables.

ushort creditsP1() { if(BIOS_MVS_FLAG) return(BIOS_DEVMODE?BIOS_CREDIT_P1:CAB_CREDITS_P1); else return(P1HomeCredits); } ushort creditsP2() { if(BIOS_MVS_FLAG) { if(BIOS_COUNTRY_CODE==COUNTRY_USA) return(BIOS_DEVMODE?BIOS_CREDIT_P2:CAB_CREDITS_P2); else return(BIOS_DEVMODE?BIOS_CREDIT_P1:CAB_CREDITS_P1); } else return(P2HomeCredits); }

My main piece of question is how to increase these credits in dev mode. NeoGeo doens't react on standart coin insertion in this mode.
avatar

22

It should, never had issues

23

HPMAN (./22):
It should, never had issues

Oooops! Looks like, it's me made a some mistake (most likely, with NeoGeo BIOS choice in MAME) during testing at previous time. If to choose the US 4 slot v2 bios, for example, the NG reacts to coin insertion properly.
Also I wrote the conditions of menu_logo background appearance by more clever way, and background changing to menu_logo confirms that there is no problems with a coins.

And now, what should I do to prevent the credits indicators disappearing after jumping to title/game mode?
avatar

24

I've just read your code but you can try to remove the "clearFixLayer()" inside your // TITLE MODE MVS ////////////////////////////////////////////////////////////////////////////////////////

or push the // display credit counter(s) //////////////////////////////////// after your MVS loop

25

Now I took out the credits indication to separate function. But for some reason, after I "inserting" a "coin", the number of credits at the right side from "DevCRED P1/2" labels doesn't change, staying be equal to 0.
avatar

26

Maybe, somebody of you have heard that few years ago homebrew game developer nicknamed Tomahomae ported the erotic visual novel "Casanova Jr.: Girl On Girl" from J2ME to Sega Genesis/MegaDrive. Now then, a short time ago he asked me to port this game to Neo-Geo for this time. The adaptation of VN core wasn't difficult thing and didn't took a lot of time, but the most of problems begun after I started to port the code of minigame at the end of "Girl On Girl".

At first, I'd like to know, why the redhead girl's breast animation during "massage" doesn't work - it's unclear at all, did breast (and also both girls eyes, redhead's lips and brunette's hand) sprites appeared at the screen even.
The ROMs and source is attached below.

tromb Fichier joint : girlxgirl.rar
avatar

27

A interesting
could you propose an better graphics/color and Typeface for the Neo Geo (CD) ?
avatar
La Neo Geo CD à son site (en tout cas elle essaye...): http://neogeocdworld.info/
Le forum de la Neo Geo sur Yaronet: forums/264

Un petit site sur l'Atari Falcon avec plein de trucs bon pour votre poussin: http://falcon.ti-fr.com/

28

The quality of all graphic I have is a best I can get by color reduction till 15 colour per tile. The font used by Tomahomae in SMD version is even worse because it's not distinguishable well at the background and requires special text window for reading.
avatar

29

I compiled your code and I have no sprites displayed at all. Only the Background.

Add this at the end of the if(action==6)
aSpriteAnimate(&sp1); aSpriteAnimate(&sp2); aSpriteAnimate(&sp3); aSpriteAnimate(&sp4); aSpriteAnimate(&sp5);

30

Tonma (./29):
I compiled your code and I have no sprites displayed at all. Only the Background.

Add this at the end of the if(action==6)
aSpriteAnimate(&sp1); aSpriteAnimate(&sp2); aSpriteAnimate(&sp3); aSpriteAnimate(&sp4); aSpriteAnimate(&sp5);

Thank you! But these sprites must be animated if miniGame variable is equal to 1 only. However the piece of code below -

if(miniGame==1) { aSpriteAnimate(&sp1); aSpriteAnimate(&sp2); aSpriteAnimate(&sp3); aSpriteAnimate(&sp4); if(controlON==1) { if((curs_x>104)&&(curs_y>96)) { if((curs_x<208)&&(curs_y>136)) { aSpriteAnimate(&sp5); if(frame==55) score++; } } } if((min==0)&&(sec==0)&&(frame==0)) { miniGame=2; clearSprites(25,46); if(score>=21) choice=0; if(score<=15) choice=1; if((score>15)&&(score<21)) choice=2; action++; } }
- doesn't work. What mistake I did at this time?

Here is updated sources wholly.

tromb Fichier joint : girlxgirl.rar
avatar