Jump to content
IGNORED

Bug Reports


CyranoJ

Recommended Posts

  • 2 weeks later...
  • 4 weeks later...
  • 2 weeks later...

1 bug and some requests/suggestions, reported here due to IRC network being unavailable.


firework project built with current RB+ works fine in VJ but black screens after a period on hardware, usually within a matter of seconds.

Vote to change the following command names and functionality:
U235PAD(x) to GETPAD(x) - I know it's linko's from the SE, but it'd read better without that prefix :)
U235MOD(x) to MODPLAY(x) - x to be mod number or 0 for U235SE_PLAYMOD

U235MOD(x) to SNDPLAY(x,y,z)- change name and functionality: x-sound, y-offset into data, z-frequency in Hz.


Requesting support for the U235 features:

U235SE_music_vol as MODVOL(x) - set mod music volume (x in range 0-63)

U235SE_sfx_vol as SNDVOL(x) - set global sfx volume (x in range 0-63)

Sample command 1 - stop voice as SNDKILL(x) where x is channel number

Sample command 3 - set volume as SNDDELTA(x,y) where x is 0-63 for volume, y is signed number to alter sample volume
U235SE_playbackmode (for switching to and from stereo and double mono sfx) as SNDSTEREO(x)

MODJUMP(x) - jump module to position (to support main track and mini tracks in same mod)

SNDFREQ(x,y) - use command 7 to change replay frequency of sample x to frequency y
SNDVOLRESET(x) - resets volume of current sample on channel x

SNDFREQRESET(x) - resets frequency of current sample on channel x



Is there any value to having a command URND to grab the auto-generated 16bit U235RND?

Edited by sh3-rg
Link to comment
Share on other sites

1 bug and some requests/suggestions, reported here due to IRC network being unavailable.

 

 

firework project built with current RB+ works fine in VJ but black screens after a period on hardware, usually within a matter of seconds.

No idea about this - will have to check.

 

 

Vote to change the following command names and functionality:

U235PAD(x) to GETPAD(x) - I know it's linko's from the SE, but it'd read better without that prefix :)

U235MOD(x) to MODPLAY(x) - x to be mod number or 0 for U235SE_PLAYMOD

U235MOD(x) to SNDPLAY(x,y,z)- change name and functionality: x-sound, y-offset into data, z-frequency in Hz.

 

Requesting support for the U235 features:

Firstly, I think it's better if people posted feature requests on the updates thread as it can get a bit confusing :)

 

That said...

 

U235PAD(x) to GETPAD(x) - done, will commit in a bit

U235MOD(x) to MODPLAY(x) - done, will commit in a bit

U235MOD(x) to SNDPLAY(x,y,z) - err typo? For the moment this was just renamed, will have to see about the extra functionality

U235SE_music_vol as MODVOL(x) - done, will commit in a bit

U235SE_sfx_vol as SNDVOL(x) - done, will commit in a bit

Sample command 1 - stop voice as SNDKILL(x) - see below

Sample command 3 - set volume as SNDDELTA(x,y) - see below

U235SE_playbackmode- see below

MODJUMP(x) - see below

SNDFREQ(x,y)- see below

SNDVOLRESET(x)- see below

SNDFREQRESET(x)- see below

 

I can't implement the "see below" features because even after reading the docs I have absolutely no idea how to access the U-235 :). Hope Linkovitch doesn't take it too personal but mate, your docs are really confusing! If you (or anyone else) could provide some example code I'd be more than happy to implement these.

 

Is there any value to having a command URND to grab the auto-generated 16bit U235RND?

 

Firstly, is that signed or unsigned (Linko? ;)). Secondly, this will give us a random integer number from 0 to 63355 - if people want a fractional one it's easy to convert it like "(URND * maximum number you'd like + $8000)/65536" ($8000 = rounding constant, can be removed of course). But I'm not sure if that does wonders for code readability! Of course it can be integrated into the command and hidden away from the user, but then you also hide the multiplication and I don't know if I want to do that - i.e. we're obviously going to do that for speed reasons. Of course using the built in random function will be slower as it works with floats etc. Which brings us to the conclusion of I've no idea what people want so I'll prolly not do it right now :).

  • Like 2
Link to comment
Share on other sites

I can't implement the "see below" features because even after reading the docs I have absolutely no idea how to access the U-235 :). Hope Linkovitch doesn't take it too personal but mate, your docs are really confusing! If you (or anyone else) could provide some example code I'd be more than happy to implement these.

 

Heh :) It makes sense to me :D But then I have a worrying affinity with how my brain works, so it's understandable it doesn't make sense to everyone :D

 

Not quite sure what bit you are struggling with, but the basic way to communicate with the SE is to produce a list of commands for it, ending with a terminator, then you point the command list pointer at the head of your list and it process them next time a command run happens in the SE core.

 

So you might have say:

 

SE_command_list:
 
dc.l $00000a12 ; Command 2 : Play sample 10 (a) on voice 1 $0000 = Data Y $0a = Data X 1 = voice 2 = command
dc.l $3e800027 ; Command 7 : Adjust playback rate on voice 2 to 16000Hz ($3e80).  $3e80 = Data Y $00 = Data X 2 = voice 2 7 = command
dc.l 0  ; Command list terminator

You would then put the addess of SE_command_list into the address U235SE_playlist_ptr

lea	U235SE_sfxplaylist_ptr,a1
move.l	#SE_command_list,d0
move.l	d0,(a1)

Does that make more sense? The commands for the SE and the structure (Data Y, Data X, voice, command) are in the manual on page 15

 

Firstly, is that signed or unsigned (Linko? ;)). Secondly, this will give us a random integer number from 0 to 63355 - if people want a fractional one it's easy to convert it like "(URND * maximum number you'd like + $8000)/65536" ($8000 = rounding constant, can be removed of course). But I'm not sure if that does wonders for code readability! Of course it can be integrated into the command and hidden away from the user, but then you also hide the multiplication and I don't know if I want to do that - i.e. we're obviously going to do that for speed reasons. Of course using the built in random function will be slower as it works with floats etc. Which brings us to the conclusion of I've no idea what people want so I'll prolly not do it right now :).

It's a 15bit binary randomness generator.. up to you if you want it signed or not :D

 

HTH

 

Link to comment
Share on other sites

Ok, I think I got the idea - now waiting for someone to really need the commands so I'll implement them ;)

 

<cough> I need them!

 

I'd like to be able to play a sample at any other rate than 16000kHz, I think that's all I can do for now (either that or I don't know what I'm doing, as usual!)

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Not sure if this is the place to post.

 

Just got the latest build and tried all the examples.

 

I couldn't get either of the doger, nyandodge or nyandodgeROM to run using build doger etc.

 

Can't seem to be able to copy the errors out of the command shell either :), but can post screenshots if you can't replicate.

 

Thanks for all the great work.

Edited by saboteur
  • Like 1
Link to comment
Share on other sites

Not sure if this is the place to post.

 

Just got the latest build and tried all the examples.

 

I couldn't get either of the doger, nyandodge or nyandodgeROM to run using build doger etc.

 

Can't seem to be able to copy the errors out of the command shell either :), but can post screenshots if you can't replicate.

 

Thanks for all the great work.

 

Please do, those all being the latest projects seems to hint at it being a little problem with a quick fix. There was something like this a day or two ago when one of us made a fresh grab on another machine. Thanks for the feedback.

Link to comment
Share on other sites

I took a fresh install of rB+ from github and tried the three projects giving errors.

 

nyandodgerom - this one looks to have been taken from the wrong source - it's an internal version GGN is working on with an additional sound engine - those missing .S files aren't public yet, so that should be a quick fix once he's home from a work trip and back in the swing of things or you could dig for an older version.

 

nyandodge - the assets.txt file is an old one for some reason, it should look like this:

abs,BMP_PLAYER,gfx_clut,ASSETS\GFX\_nyancat.bmp
abs,BMP_ENEMY,gfx_clut,ASSETS\GFX\_ufo.bmp
abs,Module1,modfile,ASSETS\sfx\mod\Module1.mod
abs,explode_sam,modfile,ASSETS\SFX\SND\EXPLODE.RAW
doger - the assets.txt file is completely missing in the ZIP, I've managed to reconstruct a compatible one from my current build, just save this text as assets.txt and it'll build:

ABS,SPRITE_BG,gfx_clut,ASSETS\GFX\background.bmp
ABS,SPRITE_POULPES,gfx_clut,ASSETS\GFX\poulpes.bmp
ABS,SPRITE_NYAN,gfx_clut,ASSETS\GFX\nyan.bmp
ABS,SPRITE_TITLE,gfx_clut,ASSETS\GFX\doger.bmp
ABS,SPRITE_DOGE,gfx_clut,ASSETS\GFX\doge.bmp
ABS,SPRITE_DEAD,gfx_clut,ASSETS\GFX\dogedead.bmp
ABS,MOD_BOING,module0,ASSETS\Music\dobranocki.mod
ABS,SFX_WOOF,sfx_woof_bark,assets\sfx\snd\woofbark.raw
ABS,SFX_LAUGH,sfx_ha_ha_ha,assets\sfx\snd\laugh.raw
Edited by sh3-rg
Link to comment
Share on other sites

Found what I think are issues with collision detection using RHIT, but need CJ to take a look to know for sure:

 

Example 1:

 

Bullet has 200 HP damage

 

Enemy has 200 HP life

 

Enemy takes 2 shots to kill and be automatically removed.

 

--

 

Example 2:

 

Bullet has 200 HP damage

 

Enemy has 199 HP life

 

Enemy takes 1 shot to kill

 

--

 

So sprite death seems to be checking for <=-1 HP remaining, not 0. That's easy to work around, though.

 

--

 

Other issue with RHIT:

 

In first example, RHIT is only returning <>-1 after the 2nd hit (i.e. on death of sprite) but not after first hit, it remains -1.

 

In second example, RHIT is set after the first hit, as the enemy is dead.

 

Example:

 

Bullet has 1 HP damage

 

Enemy has 200 HP life

 

RHIT returns -1 200 times and then <>-1 on the next hit.

 

So it's effectively only flagging death of targets, not actual hits.

 

*** OR I'M DOING IT WRONG *** :lolblue:

Link to comment
Share on other sites

The global flag is only set it an object is removed.

 

Health has to go negative, correct.

 

So you can't tell if *something* is hit without manually checking everything?

 

The Raptor manual read a bit differently, hence the report:

 

"This flag will indicate if anything collided during the check. It will not tell us what collided, only that something did"

 

But it's not a collision, it's a death.

Link to comment
Share on other sites

  • 5 months later...

not a bug as such, but:

the npes_saved.txt file has four occurrences of CD $(CURRENT_DIRECTORY)\..

 

it should read CD $(CURRENT_DIRECTORY)\..\.. because the build.bat is not in the projects folder, you need to go up one more level to find it

  • Like 3
Link to comment
Share on other sites

not a bug as such, but:

the npes_saved.txt file has four occurrences of CD $(CURRENT_DIRECTORY)\..

 

it should read CD $(CURRENT_DIRECTORY)\..\.. because the build.bat is not in the projects folder, you need to go up one more level to find it

Hmm, it makes sense when you haven't installed rb+ via the installer - build.bat won't be on your path then.

 

Thanks for the report and fix - it's already committed to the repository head :D.

Edited by ggn
  • Like 2
Link to comment
Share on other sites

Not sure if bug or by design but;

 

when 'R_spr_scaled' is set to 'spr_scale' in the object list and 'R_sprite_scale_y' is set to 32 then the sprite defaults to height-1 px.

int x = RGETOBJ(block2,R_sprite_height)

In the above, x will equal the height-1 when scale is set to 32.

 

The width reports correctly, so no probs there.

 

Tested with a 64 and 128 px high sprite.

 

Will supply test project / code if that helps. Plus, hope this makes sense :/

Link to comment
Share on other sites

I think this is a Jaguar bug (I've always understood it that way at least and documented it as such on the rb+ site).

 

Y-scaling gives some weird results, missing top line and very thin bottom line (?) I've been padding stuff vertically to avoid the iffiness.

  • Like 1
Link to comment
Share on other sites

Not sure if bug or by design but;

 

when 'R_spr_scaled' is set to 'spr_scale' in the object list and 'R_sprite_scale_y' is set to 32 then the sprite defaults to height-1 px.



int x = RGETOBJ(block2,R_sprite_height)

In the above, x will equal the height-1 when scale is set to 32.

 

The width reports correctly, so no probs there.

 

Tested with a 64 and 128 px high sprite.

 

Will supply test project / code if that helps. Plus, hope this makes sense :/

 

Well, at least I'm sure that RSETOBJ/RGETOBJ don't mess with the data they're reading/writing.I'll pass this on to CJ or someone who knows the hardware (I sure don't!)

  • Like 1
Link to comment
Share on other sites

Also, another thing I noticed earlier,

 

When creating a new project with "build scaler new" , the rinitapp.s (or whatever its called) had the default controller/sound module set to the new zerosquare one as opposed to the original one.

 

That had me head scratching for a while, wondering why the getpad(1) etc weren't working. Now that I know that, I'll look out for it.

 

However, a beginner will get confused and not know to change that. Plus the tutorials are all written for the original method too.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...