Duke4.net Forums: m210 - Viewing Profile - Duke4.net Forums

Jump to content

Hide message Show message
Welcome to the Duke4.net Forums!

Register an account now to get access to all board features. After you've registered and logged in, you'll be able to create topics, post replies, send and receive private messages, disable the viewing of ads and more!

Reputation: 547 My posts turn threads into gold
Group:
Members
Active Posts:
1,143 (0.31 per day)
Most Active In:
BuildGDX (634 posts)
Joined:
07-May 09
Profile Views:
18,721
Last Active:
User is offline Today, 06:58 AM
Currently:
Offline

My Information

Age:
31 years old
Birthday:
December 10, 1987
Gender:
Male Male
Location:
Moscow
Interests:
Blood, Duke3D, RR, SW...

Contact Information

E-mail:
Private
Website URL:
Website URL  http://m210.duke4.net

Latest Visitors

Topics I've Started

  1. BuildGDX (News & Releases)

    16 March 2019 - 08:43 AM

    Hi! Today I completed my first version of multilauncher - BuildGDX.

    I'm planning to include all of my ports in this one. At this time, BuildGDX included TekwarGDX and WitchavenGDX, so I deleted archives with this ports from my site.
    RedneckGdx and BloodGdx also will be delete from my site in future and will be include to BuildGdx.
    The latest version of BuildGDX you can download here (as usually :))
    BuildGDX


    v1.00 (16 March 2019)
    1. Smacker SMK4 file format support
    2. You can choose soundfont (sf2 or dls) in game settings
    3. Config file format changed (
    4. TekwarGDX v0.950
    4-1. Mouse in menu
    4-2. Cutscenes have sounds now
    4-3. New game loop
    4-4. New OpenAL version 1.18.1 with resampler filter
    4-5. Libgdx framwork updated to 1.9.8
    4-6. Load/Save slots increased to 9999
    4-7. Load/Save game delete feature
    4-8. Overhead map settings: full only, overlay only, full and overlay
    4-9. Damage/Pickup effect tweak
    4-10. Pause key stopping music and sounds now
    4-11. New screenshots filename
    4-12. New gamepad controlles handler by aybe
    4-13. New keyboard setup menu, reset to classic keys and default "wsad" keys
    5. WitchavenGDX v0.950
    5-1. Pause key stopping music and sounds now
    5-2. Damage/Pickup effect tweak
    5-3. Fps text scale in Interface menu
    5-4. Joystick menu position fix
    5-5. Cutscenes have sounds now
    5-6. Victory screen with sounds now
    5-7. Menu has music and sounds
    5-8. Add keys on each potions
    5-9. HUD and crosshair scale
    5-10. Color correction save fix
    5-11. Midi music fix
  2. RedneckGDX

    10 September 2018 - 11:16 AM

    Hi! I released my port of Redneck Rampage.
    At this time RR Rides Again not support, but I will add it later.
    It's also written on Java with Libgdx, but Libgdx v1.9.8. I will update my other ports to this version too in future.

    So, you can try it here
    http://m210.duke4.ne...a/52-redneckgdx
  3. BloodGDX (News & Releases)

    24 June 2017 - 12:13 PM

    I made a new release today!
    You can download it here: BloodGDX

    Changelog:
    
    1. mouse axisY is more smooth now
    2.  projectiles fly higher in the parallaxed skies
    3. checkwarping fix with non-linked upper and lower stacks
    4. voxel preload fix
    5. overheadmap broken sectors drawing fix
    6.  mario cheat without numbers will end the level
    7. loi cutscenes crash fix
    8. saves game from v1.21 support
    9. voxel loading bug fixed
    10. fixed enemies died from lava keep running infinitely in flames
    11. sector bobfloor fix (darkwood crash)
    12. HOM on smaller screensizes fix
    13. electrocution death of monster was sometimes caused by shotgun fixed
    14. fixed crash when trying to load an empty file map
    15. fixed zombie's broken attack in some cases
    16. some voxel floating in the air fix
    17. "fire" effect now working with all palettes
    18. voxels palette change fix
    19. statues(dudes) push fix
    20. items shade correct now
    
    
  4. Bugs & Problems

    19 June 2017 - 09:23 PM

    Welcome to the bugs report thread :)
    If you have a crash or bug, please, post it here with logs attach. Also you can make savegame file for quickly bug discovering :)

    2. I want to know, how it can happen:
    Dassert: nXSprite > 0 && nXSprite < kMaxXSprites
    Full stack trace: 	java.lang.Thread.getStackTrace(Unknown Source)
    	ru.m210projects.Blood.Globals.dassert(Globals.java:338)
    	ru.m210projects.Blood.View.viewDrawScreen(View.java:580)
    	ru.m210projects.Blood.Main.GameLoop(Main.java:1381)
    	ru.m210projects.Blood.Main.render(Main.java:1999)
    	com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
    	com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:
    114)
    
    
    evict.MAP
    
  5. Duke Nukem Room over Room system (from Blood)

    28 December 2016 - 09:50 PM

    Hello everyone :)
    I decompiled ROR system from Blood. And for tests I include this system to eDuke32. You can see my results in this video:



    And bad news - it works in Software render only :(

    http://m210.duke4.net/Files/ror.zip - there is an eDuke32 (r3101) and ror.map for your own tests

    And question to developers: Can it fix for Polymost render?

    And if you want, you can added this system to new version of eDuke32

    
    global.c :
    
    int16_t mirrorcnt;
    int16_t MirrorType[MAXMIRRORS];
    int32_t MirrorX[MAXMIRRORS];
    int32_t MirrorY[MAXMIRRORS];
    int32_t MirrorZ[MAXMIRRORS];
    int16_t MirrorLSect[MAXMIRRORS];
    int16_t MirrorUSect[MAXMIRRORS];
    int16_t gUpperLink[MAXSECTORS], gLowerLink[MAXSECTORS];
    
    game.c
    
    extern int16_t mirrorcnt;
    extern int16_t MirrorType[MAXMIRRORS];
    extern int32_t MirrorX[MAXMIRRORS];
    extern int32_t MirrorY[MAXMIRRORS];
    extern int32_t MirrorZ[MAXMIRRORS];
    extern int16_t MirrorLSect[MAXMIRRORS];
    extern int16_t MirrorUSect[MAXMIRRORS];
    extern int16_t gUpperLink[MAXSECTORS], gLowerLink[MAXSECTORS];
    
    
    void DrawMirrors( long x, long y, long z, short ang, long horiz ) //must add this method in G_DrawRooms before drawrooms
    {
    	int i;
    	int type;
    	long  tx, ty;
    	short tang;
    
    	for( i = MAXMIRRORS - 1; i >= 0; i-- )
    	{
    		if ( gotpic[(i + MIRRORLABEL) >> 3] & (1 << ((i - MAXMIRRORS) & 7)) )
    		{
    			type = MirrorType[i];
    			if( type == 0 ) { //wall mirror
    			
    			} else
    			if ( type == 1 ) //ceiling mirror
    			{
    				int nSector = MirrorLSect[i];
    				drawrooms(x + MirrorX[i], MirrorY[i] + y, z + MirrorZ[i], ang, horiz, nSector + MAXSECTORS );
    				short oldstat = sector[nSector].floorstat;
    				sector[nSector].floorstat |= 1; //kSectorParallax
    				G_DoSpriteAnimations(x,y,ang,65536);
    				drawmasks();
    				sector[nSector].floorstat = oldstat;
    			} else
    			if ( type == 2 ) //floor mirror
    			{
    				int nSector = MirrorLSect[i];
    				drawrooms(x + MirrorX[i], MirrorY[i] + y, z + MirrorZ[i], ang, horiz, nSector + MAXSECTORS );
    				short oldstat = sector[nSector].ceilingstat;
    				sector[nSector].ceilingstat |= 1; //kSectorParallax
    				G_DoSpriteAnimations(x,y,ang,65536);
    				drawmasks();
    				sector[nSector].ceilingstat = oldstat;
    			}
    			
    			gotpic[(i + MIRRORLABEL) >> 3] &= ~(1 << ((i - MAXMIRRORS) & 7));
    			return;
    		}
    	}
    }
    
    premap.c :
    
    #define kMarkerUpperLink 4081
    #define kMarkerLowerLink 4082
    
    extern int16_t mirrorcnt;
    extern int16_t MirrorType[MAXMIRRORS];
    extern int32_t MirrorX[MAXMIRRORS];
    extern int32_t MirrorY[MAXMIRRORS];
    extern int32_t MirrorZ[MAXMIRRORS];
    extern int16_t MirrorLSect[MAXMIRRORS];
    extern int16_t MirrorUSect[MAXMIRRORS];
    extern int16_t gUpperLink[MAXSECTORS], gLowerLink[MAXSECTORS];
    
    void InitPlayerStartZones( void )
    {
    	int nSprite;
    	int nSector;
    	// clear link values
    	for ( nSector = 0; nSector < MAXSECTORS; nSector++ )
    	{
    		gUpperLink[nSector] = -1;
    		gLowerLink[nSector] = -1;
    	}
    
    	for ( nSprite = 0; nSprite < MAXSPRITES; nSprite++ )
    	{
    		if (sprite[nSprite].statnum < MAXSTATUS)
    		{
    			spritetype *pSprite = &sprite[nSprite];
    		
    			
    			
    				switch( pSprite->picnum )
    				{
    					case kMarkerUpperLink:
    						gUpperLink[pSprite->sectnum] = (short)nSprite;
    						initprintf("UpperLink\n");
    						break;
    
    					case kMarkerLowerLink:
    						gLowerLink[pSprite->sectnum] = (short)nSprite;
    						initprintf("LowerLink\n");
    						break;
    				}
    			
    		}
    	}
    
    	// verify links have mates and connect them
    	int nFrom;
    	for ( nFrom = 0; nFrom < MAXSECTORS; nFrom++)
    	{
    		if ( gUpperLink[nFrom] >= 0 )
    		{
    			spritetype *pFromSprite = &sprite[gUpperLink[nFrom]];
    			
    			int nID = pFromSprite->hitag;
    			int nTo;
    			for ( nTo = 0; nTo < MAXSECTORS; nTo++)
    			{
    				if ( gLowerLink[nTo] >= 0 )
    				{
    					spritetype *pToSprite = &sprite[gLowerLink[nTo]];
    					
    
    					if ( pToSprite->hitag == nID )
    					{
    						initprintf("Connecting people\n");
    						pFromSprite->owner = (short)gLowerLink[nTo];
    						pToSprite->owner = (short)gUpperLink[nFrom];
    					}
    				}
    			}
    		}
    	}
    }
    
    
    void InitMirrors( void ) //I added this method at the end of G_EnterLevel()
    {
    	InitPlayerStartZones(); //methods name called as Blood, it's just a part of code, which need for ROR works 
    	
    	int i, j;
    	
    	//Scan wall tags
    	mirrorcnt = 0;
    	tilesizx[MIRROR] = 0;
    	tilesizy[MIRROR] = 0;
    	for( i = 0; i < MAXMIRRORS; i++)
    	{
    		tilesizx[i + MIRRORLABEL] = 0;
    		tilesizy[i + MIRRORLABEL] = 0;
    	}
    
    	for( i = numsectors - 1; i >= 0; i--)
    	{
    		if (mirrorcnt == MAXMIRRORS)
    		{
    			initprintf("Maximum mirror count reached.\n");
    			break;
    		}
    
    		if ( sector[i].floorpicnum == MIRROR )
    		{
    			int nUpper = gUpperLink[i];
    			if(nUpper >= 0) {
    				int nLower = sprite[nUpper].owner;
    
    				initprintf("Initializing floor mirror for sector\n");
    				MirrorType[mirrorcnt] = 2;
    				MirrorX[mirrorcnt] = sprite[nLower].x - sprite[nUpper].x;
    				MirrorY[mirrorcnt] = sprite[nLower].y - sprite[nUpper].y;
    				MirrorZ[mirrorcnt] = sprite[nLower].z - sprite[nUpper].z;
    				MirrorLSect[mirrorcnt] = sprite[nLower].sectnum;
    				MirrorUSect[mirrorcnt] = i;
    				sector[i].floorpicnum = (short) (MIRRORLABEL + mirrorcnt++);
    				initprintf("Initializing ceiling mirror for sector\n");
    				MirrorType[mirrorcnt] = 1;
    				MirrorX[mirrorcnt] = sprite[nUpper].x - sprite[nLower].x;
    				MirrorY[mirrorcnt] = sprite[nUpper].y - sprite[nLower].y;
    				MirrorZ[mirrorcnt] = sprite[nUpper].z - sprite[nLower].z;
    				MirrorLSect[mirrorcnt] = i;
    				MirrorUSect[mirrorcnt] = sprite[nLower].sectnum;
    				sector[sprite[nLower].sectnum].ceilingpicnum = (short) (MIRRORLABEL + mirrorcnt);
    				mirrorcnt++;
    			}
    		}
    	}
    
    	initprintf("%d mirrors initialized\n", mirrorcnt);
    }
    
    



    I hope this code helps us to optimize ROR for Polymost

Comments

Page 1 of 1
  1. Photo 25 May 2014 - 07:26
    Hy M210, it's a very Long time since the last time we talked.
    I found amny Blood models (previewed on the Transfusion Forum) in a Mod called "PsychoPhobia" on ModDB: http://www.moddb.com/mods/psychophobia
    Cheers, Besli
Page 1 of 1

All copyrights and trademarks are property of their respective owners. Instead of reading this text, you could be playing Ion Maiden! ;) © 2018 Voidpoint, LLC

Enter your sign in name and password


Sign in options